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.”
I 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.
I’ve been really struggling with the motivation to get CR_Documentor updated for Sandcastle support. The problem is threefold:
- .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.
- 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.
- 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:
- 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.)
- 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.
In our fervent Guitar Hero II playing, Jenn’s whammy bar has gotten slightly loose. (Yeah, that sounds dirty.)
Anyway, I thought that one way to fix it would be to get one or two tiny o-rings, put them around the whammy bar, and push them down as far as they’d go to create friction between the whammy bar and the guitar. Hey, it’s worth a shot. (I’ve also contacted RedOctane to see if they have some suggestions.)
So I headed over to the local Home Depot and noticed they had like 20 different sizes of o-ring. I made a guess at the size I needed and picked up a pack of 10 rings (you can’t just buy one, and a pack only costs like $2).
I guessed wrong. They were too small.
I went back later that day and got the next size up. Too big.
So I went online this morning and started looking at o-rings. First, I had no idea that there is a whole size scale for o-rings called “AS568A.” There are standard number codes that represent the possible sizes you can get.
Then, when you want to buy o-rings online, you can’t really just search for “o-rings” - you need to search for “industrial supply.” Turns out most industrial supply places won’t sell to consumers, and many that do offer you the awesome shipping options of “same day” or “next day,” which, for a $2 pack of o-rings, costs about $20. Oh, and buying o-rings at an industrial supply company still only costs around $2 - $3/pack, but there are 100 in a pack, not just 10.
I ended up getting two sizes of ring from McMaster-Carr, one of which, I’m sure, should fit. And shipping was fairly reasonable at $4.50 for the two packs of rings. Hopefully this will fix the whammy bar issue, but I can tell you right now I’ve learned far too much about o-rings.
A lot of work went into the migration, though - a lot more than I really feel should have. But at least I’m moved over.
What I ended up having to do:
- Get a SQL 2005 database (pMachine was stored in MySQL).
- Write a BlogML export utility for pMachine (which I will be contributing to the BlogML project).
- Write a utility that creates a map of old IDs for my blog posts to new Subtext friendly URLs.
- Write a converter that takes the ID map and generates a redirection utility in PHP to replace the old blog pages (so they’ll get you to the new blog).
- Write a utility that goes through the BlogML export and updates all URLs to the new Subtext URLs so the blog proper doesn’t actually rely on the redirection mechanism for cross-post links and images.
- Write a utility that goes through the BlogML export and updates all the comment text because there’s a weird issue with Subtext BlogML import that converts all newlines to line break tags… and then encodes any line break tags you already have so they end up being visible. Not pretty.
- Manually break the BlogML export into three pieces - the request times out if you try to upload a 5MB BlogML file.
- Install and configure Subtext.
- Import all of the BlogML pieces.
- Swap out all of the old pMachine pages with my redirection utility.
- Update my old RSS feed so folks know they need to get the RSS through Feedburner.
- Little fine-tuning things. The BlogML import doesn’t populate the author name or email in the Subtext database so I’m going to have to do some work there. The Subtext configuration proper is easy, but you have to set things up (like your Feedburner name and stuff).
So I’m pretty much converted, which is super cool, as far as I’m concerned. Things I want to do now that I’ve got myself moved over:
- Category cleanup. I’ve got a pretty crappy category breakdown and it’s time to clean that up.
- Custom skin. I picked a decent stock theme for now, but I want the site to be me.
- Blogroll and links. I didn’t really export the original set of links or anything, figuring I’ll add links as I see their usefulness. I already know of a couple of blogs that I read I should add.
- “About” section. The old “about me” section had seen better days and depended on the old pMachine code to generate its template. I need to come up with a new section.
- Script integration. I want to get my little Xbox Gamercard popup thing working again, and the Amazon link script where they pop up a nice review and image of things you’re interested in - that’s neat. I also want to add some other stuff, like a scrolling Twitter history deal and maybe a few other fun items.
Oh, and if anyone knows how to write a PHP page that will not only
send the “Location” header but also let me change the status code,
that’d be awesome. I’m trying to do that in PHP
4-point-something-or-other so I don’t have the ability to do much. I’ve
tried the http_redirect method and that doesn’t work. Right now I’m
header("Location: $newlocation") which is supposed to
automatically throw out a 302 redirect status, but I’ll be damned if I
see anything other than a 200 come through when I watch in Fiddler. The
browser sees the “Location” header and displays the content from the
right page in Subtext, but the URL in the browser doesn’t change.
Regardless, I’m back in the saddle with a new blog package and finally feel like I’m living in the now. Time to join up on the Subtext project and start contributing!