net comments edit

Typemock Isolator 5.0 has been released and there are a lot of cool things that come with it. The two big ones:

  • Arrange/Act/Assert syntax: A more fluent syntax style for setting up your mocks. You can still use the old API, but the new one offers a nice alternative to the classic record/playback metaphor.
  • Open Source licensing: I blogged about this before, but it’s finally in effect. You can get the goodness of Isolator for use in your open source project. I’ll totally be hooking this up in CR_Documentor.

This is huge. I’m totally excited. Check it out.

subtext, blog, net, sql comments edit

While I was attempting my upgrade, I figured I’d also look and see where my database space was going since I’ve had to have a size increase a couple of times now and I’m not generating tens-of-megabytes worth of content. The culprits: the subtext_URLs and subtext_Referrals tables. Which is to say, my list of referral sites and the links to the associated blog entries. The URLs table was in the 40MB range, which is pretty out of hand.

I did a quick search to see if this was common and found this entry on Phil Haack’s site from a couple of years back, talking about how to clear the cruft out of these tables. Ran those SQL commands and I’m back into the 5MB size for the URLs table.

Anyway, this serves as a little reminder to give your database a little love and attention. Hopefully we’ll offer more in the way of an admin interface for these sorts of things in Subtext 3.

subtext, blog comments edit

Well, I gave it the old college try, but I ended up pretty well trashing my site in the course of my attempt to upgrade to Subtext 2.0, so I had to get restored from backup. Yow!

There seemed to be something odd to begin with when the upgrade process wouldn’t run - it sort of locked me out of the site. I got around that only to see it say I needed to “install,” not “upgrade.” Ummm… well, OK. So I did that. The database got upgraded, but then I hit the final wall: I’m in a medium trust environment and the build won’t run in medium trust.

Looks like I’m not the only one having a problem.

I guess I’ll have to see if I can help rectify some of this.

gaming, xbox comments edit

Drum Rocker drum set from
IonI love playing Rock Band, and when I get the chance to play, I usually play drums.

I’ve seen this kit from Ion in some of the game magazines and on web sites, but I finally found the official site for it: the Drum Rocker kit from Ion.

It’s an actual drum kit from a real drum manufacturer that has a controller box you can swap for either control by Xbox 360 or an Alesis DM5 module, making it useful in an actual drum kit capacity. Not just for gaming anymore!

Admittedly, I play on medium difficulty. I’m no expert by any means. But the noise the standard drums generate plus the sometimes questionable accuracy plus the fact that I’ve always wanted a drum kit… sort of sounds like it adds up to this.

I damn near clicked that pre-order button just now. Just the $300 price tag stopped me. It may not stop me for long.

GeekSpeak comments edit

Something I’ve noticed as I work with developers of varying skill levels is that one of the key differentiating factors between the junior folks and the senior folks is the ability to think in the abstract - that is, patterns and concepts, not concrete implementations.

How many times have you been one of the people in this conversation?

Senior Developer: OK, so the task at hand is to create a Doorman that works in a hotel or apartment building. We know he’s going to hail taxi cabs, handle the door for people, make small talk, and do a few other things. Today we’re just looking at the door handling part.

Junior Developer: What kind of door is it?

SD: It really doesn’t matter, and we won’t really know until the Doorman gets placed somewhere, so we need to be flexible. What we probably should do is have an interface like “IOpenDoor” with an “OpenDoor” method. Then we can provide any number of implementations to that to handle different door types. (This is the strategy pattern.) The question on the table is, “Does the doorman need to do anything else with the door besides open it?”

JD: What if the door is heavy?

SD: It doesn’t matter - that’s an implementation detail. What we’re looking at here is the pattern. Like, we know the Doorman needs to open the door, but does he need to close it, too? Should it be “IDoorController” with “Open” and “Close” methods? Or do we consider all doors to be self-closing?

JD: If the door is glass and the Doorman kicks it closed, he might break the door.

SD: Um… OK… right… but really we need to look at the pattern here. Is it the right way to go? Are we missing something around the Doorman’s interaction with the door that we should know about?

Another Senior Developer: The door might be open due to some other action, but the Doorman might be requested to hold the door, so we might need a “HoldOpen” method on that interface.

SD: Good point. That’s a door state we didn’t consider.

JD: What if the door has a knob instead of a handle?

SD: Step into my office.

Now, I’m not saying that all junior developers are unable to think in the abstract, and I’m definitely not saying that all senior developers (or at least people with a “senior” title) can. What I’m saying is that the ability to think in the abstract is key to being able to step beyond simple coding and into the world of development.