Nathan's Famous Beef
FranksI subscribe to Consumer Reports and yesterday they sent out a review of hot dogs so folks would know the best kind of dog based on flavor, cost, and… uh… “health content” in preparation for summer BBQs.

Hebrew National was rated the best, with Nathan’s Famous coming in a close second.  Now, I’ve had both, and while I like both, there’s just something about a good Nathan’s Famous dog that I can’t get over.  It’s sort of like how Krispy Kreme donuts are just… better.

Anyway, that put me in a pregnancy-style craving for hot dogs.  Nathan’s Famous hot dogs, to be specific.

After work, Jenn and I went on a mission.  A mission for Nathan’s Famous.  Unfortunately, there are no Nathan’s Famous restaurants in Oregon, so we had to search out the version you buy at the store (which is also excellent, but doesn’t offer quite the atmosphere of the actual shop).

Costco - no luck.  I could have sworn I saw them there at one point, but not today.  Fred Meyer… aha!  There they are, sort of unobtrusive in the refrigerator case.  Come to me, sweet dogs.

Fired up the grill at home, threw the dogs on, and watched the flame fizzle out after about three minutes of cooking because we were out of gas.  Not to be stopped, the franks made their way quickly into the oven to be broiled to perfection.  (I can’t stand boiled hot dogs.  Seriously.  No go.)

I ate two, but I swear I could have eaten the whole package.  I’ll definitely be partaking this weekend (after refilling the grill tank).

When was the last time you went on a mission for food?

downloads, net comments edit

I’ve been converting a .NET 1.1 project over to .NET 2.0 and there are a lot of strongly-typed collections in the project that were generated by CodeSmith.  Most of these collections were based on the ArrayList template that came bundled with CodeSmith and all of them used the “GetByKey” facility the generator offered.

I’m trying to reduce the codebase and take advantage of generics where possible to get rid of things like this.  To that end, I’ve been converting most of these over to System.Collections.ObjectModel.KeyedCollection<T> (which also jives nicely with FxCop - the generated collections came bundled with several items that set FxCop off).

Ironically, that means I end up generating a very small amount of code (and corresponding XML documentation) for each of these collections - a class derived from KeyedCollection with the appropriate constructor overloads and the override for the GetKeyForItem method.  So I made a - wait for it - CodeSmith template to do exactly that.

If you’re a CodeSmith user and you find yourself creating a lot of simple KeyedCollection implementations, grab the template and go to it.

The “comments” email address I had was pretty much just a spam magnet, so I’ve killed it.  If you need to get in touch with me, use the contact form on the blog, or send me an email directly (if you have my email address already).  Sorry for the inconvenience this may cause folks who, for some reason, had my actual email address down as “comments.”

gaming, playstation comments edit

Grand Theft Auto IV - Special
EditionI gave in and hit the local GameStop during lunch today and pre-ordered my copy of Grand Theft Auto IV - Special Edition.

This version comes with (from the GameStop site)…

  • Grand Theft Auto IV the game with special packaging (a lock box).
  • The Sounds of Grand Theft Auto IV: A selection of our favorite music from the soundtrack of GTA IV. This album will only be available within the Special Edition package and will feature original tracks from some of today’s hottest artists.
  • The Grand Theft Auto IV and Rockstar Games Art Book: This will be the 1st ever GTA art book to be published by Rockstar Games and will feature exclusive art unreleased anywhere else.
  • A Limited edition Grand Theft Auto IV/Rockstar Games bag which has been designed especially for this Special Edition
  • An exclusive Rockstar Games keychain to hold your lock box keys.

Yeah, I’m crazy, and yeah, it did cost me $90… $30 more than the game alone.  But I’m a GTA junkie, and they make this crap targeting me personally.  I can’t say no.  I’m just as bad as the Halo junkies who will be paying megabucks for the version of Halo 3 with the mini replica helmet.

The thing is scheduled to ship on October 16.  If they could guarantee it would be in my hands on that day, I’d schedule my PTO right now.

net, vs comments edit

I’ve been really struggling with the motivation to get CR_Documentor updated for Sandcastle support.  The problem is threefold:

  1. .NET 1.1 XSLT performance is pretty slow (slow enough that it’s noticeable when the preview refreshes) so the code actually manually recurses through an XML document object and generates HTML on the fly.  Every time either rendering engine changes the way they do things (or fixes a defect), I have to manually implement that transformation in code using XmlNode and XmlDocument objects.  I can’t just take the changes to the XSLT that the products include.
  2. Since I’m working at pre-compilation time, generating the method signature in a nice formatted way is a huge pain, and it’s different for each rendering engine.  Doing this involves manually running around the parsed code tree in DXCore and converting the parsed nodes into nicely formatted, human readable HTML.
  3. CR_Documentor was originally a one-trick pony, so the rendering mechanism isn’t really… “pluggable.”  I started refactoring to get there, but because the generation of the HTML is so specific to each renderer and there’s so much to it… frankly, I’ve gotten overwhelmed.

As I’ve said before, I can’t open source the thing and get help because there are legal ramifications around it involving Lutz working at Microsoft now and the code originally being his.  I’d love to get some help on it, but it’s not really a possibility.

Anyway, I started down the path of getting Sandcastle support in there and it’s become pretty beastly.  What I’d like to do is actually make use of XSLT so I can vastly simplify the rendering for each preview type.  It would also allow me to more easily directly take the XSLT from the various products (NDoc, Sandcastle) and use them with very minor, if any, modifications.  Making it easier to take advantage of that would also make it easier for me to add new preview styles (Sandcastle, for example, has multiple templates available).

.NET 2.0 has vastly better XSLT performance than .NET 1.1 - enough that I think it’d be feasible to transform using XSLT rather than manual document manipulation.  However, if I convert to .NET 2.0, I have a few problems:

  1. I’ll only be able to support Visual Studio 2005 and later.  (I’m pretty sure DXCore won’t let me run .NET 2.0 plugins from inside VS 2003, though admittedly I haven’t tried it.)
  2. I will probably have to remove features like the ability to highlight “unsupported tags” or set a “supported tag set” for troubleshooting your documentation.  I’ll still be able to notify you of errors (like if your doc doesn’t parse out right) but the supported tag set thing was only really workable because I had programmatic control over the rendering at that level.

Does anyone care?  Any big voices to continue supporting VS 2003?  If not, I’m going to scrap the garbage I’ve been trying to do to get this done and start working on getting it to transform using XSLT.