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.

blog, subtext, net, aspnet comments edit

SubtextI just finished converting over to Subtext, and, all things considered, it went reasonably well.

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 using 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!

blog, subtext comments edit

I’ve been working pretty hard on getting things ready to migrate this pMachine piece of crap blog over to Subtext:

  • I wrote a BlogML exporter for pMachine so I can get my entries out.
  • I’ve got an ID conversion mapping utility that runs through the BlogML and maps the old pMachine ID to the new Subtext friendly URL.
  • I’ve got a URL rewriting utility that takes the ID map and runs through the BlogML, finding any old links and updating them with the new URL in Subtext so cross-post links work.
  • I wrote a utility to get around a sort of crazy bug in Subtext comment import where newlines automatically get converted to line-break tags and line-break tags that already exist in the comment get encoded so they actually display.
  • I’ve got a converter that takes the ID mapping and converts it to a PHP array so I can use that array as part of a redirection mechanism that will take people hitting the old permalinks in pMachine format to the new Subtext location.
  • I’ve figured out how I’m going to handle the relocation of the images in posts and such so things should still work (pMachine has an interesting sort of macro substitution it uses for upload locations so it’s not as straightforward as you might think).

All I really have left to do is a final test install/import of the data. Assuming that goes well, I should be able to do a pretty quick swap and import. I’m really looking forward to it. I already have some interesting ideas of things I’d like to do.

GeekSpeak comments edit

I’m working with a print program - Microsoft Publisher - on a little project at home and without going into a bunch of crap you don’t care about, let it suffice to say I’m trying to get it to print full-bleed on my HP Deskjet 5940. It’s just not happening.

The printer is fully capable of printing full-bleed on 8.5 x 11 paper. I’ve seen it work. But right now, I’m frustrated because no matter what I do, no matter what I try, there’s always this half-inch border along the bottom of the page I’m trying to print.

I know what you’re going to say - that you need that half inch because the printer has to have something to hang onto at the end as it prints the last bit on the page and pushes it out. I thought so, too, and since the stuff I’m printing is mostly at the bottom, I used the printer driver option to automatically rotate the thing I’m trying to print 180 degrees. Put the bottom at the top and there’s no border, right? Or at least the border’s reduced to that little quarter-inch bit that’s always at the top?

Nope. Still getting the half inch, as though it was still printing the bottom of the page at the bottom.

After fussing with this for a half hour or so, using up probably 20 sheets of paper and more ink than it would have taken to print the whole project eight times over, I finally realized what it was:

Microsoft Publisher is trying to help.

Rather than letting the printer take care of the fact it can’t print that last half inch, Publisher is actually determining the capabilities of my printer and sending the print job to the printer minus that half inch, anticipating the border the printer will require.

And there’s the problem with software trying to be too smart. I’m not a big Publisher wiz by any means, but in no dialog I’ve seen has there been an option for “Stop trying to help me by optimizing the printer output and nuking the half inch I really wish was there.” It’s designed for folks who need the default options, making intelligent guesses at what needs to happen.

This is why I shy away from software that exposes only exposes the big “DO IT” button. Sometimes the big “DO IT” button is exactly what I need. Maybe even 70% of the time. The rest of the time, I need the options. If there’s something you’re going to automatically assume for me - especially with respect to printing when you’re a printing program - I need to be able to override it. Ah, the trouble with intelligent software.

GeekSpeak comments edit

I’ve started a new project where we’re doing our best to get every developer familiar with all the parts of the system by moving people around a bit, XP style. The idea is that we want to break down the knowledge silos so there’s not just one person who knows how each system works. I think that’s a great idea. If someone wins the lottery (or gets hit by a bus), we don’t want the whole project to crumble.

That said, there’s a particular undertone to some of the moving that worries me: the notion that somehow we can get rid of subject matter experts and everyone will know everything about the system.

I don’t think that’s a realistic goal. I think it’s a great idea to get folks familiar with how the various parts of the system work, but the system itself is far too big and there are too many changes going on over the course of time for anyone to keep intimate familiarity with the entire system in their head. At some point, you’re going to have someone who has more knowledge about how one area of the system works than anyone else, and you’re back to the knowledge silo of a subject matter expert.

The topic of skill set comes up here, too. Some people are better than others at certain tasks, be it due to education, experience, or both. Good idea: peer mentoring involving these folks. Bad idea: thinking you can make everyone on the team as proficient as experienced individual just by switching people around. Not everyone is a DBA. Not everyone is an architect. It’s not realistic to expect you can swap people into those roles and hope the system comes out as coherent and high quality as if you just trusted the tasks to the folks with the relevant skill set.

From a time/savings standpoint, it also occurs to me that putting someone who is good at a task on that task will cost less and get the task done faster than if you decided to put a less familiar person on the task. And if you keep moving people around, you may never actually gain momentum - it’s hard to work fast when you’re trying to learn at the same time. Great experience for the developers, great knowledge distribution, not so great velocity.

There’s a reason the phrase “jack of all trades, master of none” came about. It’s great that folks want to be generalists, and spreading the wealth of knowledge is an admirable goal. But there will always be subject matter experts, and that’s not a bad thing. Rather than try to get rid of them, I might recommend taking advantage of their expertise and doing a little peer mentoring to spread knowledge without trying to abolish the notion entirely. You’ll educate your developers and be able to gain project momentum by targeting the specialized skill set to pertinent tasks, and that’s a Good Thing.