Wednesday, January 26, 2005

Build Lights Code

A few people asked me to post the code for the service I wrote that runs the Build Lights system I built. I did: it's here. Enjoy.

Monday, January 24, 2005

FlexWiki Up for a Jolt Award

The 15th Annual Jolt Awards finalists have been announced, and FlexWiki is on the list in the “Web Development Tools” Since this is how I spend a pretty good chunk of my spare time, I don't think anyone will blame me if I feel a little proud. Of course, I can take barely any credit for the web part of the product - my work has mostly been around the build system, project administration, and various and assorted tools.  

Build Lights

Inspired by Bubble, Bubble, Build's in Trouble over at Pragmatic Automation, I set up something at my client that is extremely cool. And by “cool” here, I mean “almost painfully nerdy”.

Basically, I've hooked up a series of colored lights to our CruiseControl.NET build. Via X10 automation, I turn on red, green, and/or yellow lights based on the status of the build. It looks like this:

Since I put them up on top of my cube, the lights are visible across most of the part of the floor where my team sits. I already find myself looking up to check the status whenever I arrive in the morning.

The reason that two lights are on in this picture has to do with the semantics I attached to the signals. The red and green lights indicate whether the last build was successful or not. The yellow light indicates that a build is in progress. I could have shut off the red or green light while a build was running, but I thought this way added a little more information while still being very easy to understand at a glance.

It was actually pretty impressive how easy this setup was to get going. After ordering an automation kit ($99 from, downloading the free SDK, and stopping off at Target for some cheap lamps and some bulbs (about $25), some simple perusal of the samples showed that it's basically one line of very easy-to-understand code to turn each light on or off. Monitoring the build was only slightly harder: I just used cctraylib.dll from the CruiseControl distribution to poll the build state. That was maybe 20 more lines of code. Rolling it all up into a service (so it will continue to work when I'm not logged on) took me about 90 minutes total.

The kit came with a bunch of other stuff that I'm not using, like remote controls and a motion sensor, so I probably could have gotten off a little cheaper. But when I finish my gig here, I'll take the whole thing home and find a use for it around the house. Hopefully something equally nerdy. :)

Friday, January 14, 2005

MSDN2 Article Available

Tim points out that the first MSDN article in a series about how we designed and built MSDN2 is out. Have a read if you're into that sort of thing.

A Nerd's Halloween

I get a fair amount of email about Managed DirectX. I always try to help the people that email me, although it can take me a while (sorry!). Well, back in the Autumn of 2003, someone emailed me asking how to send different different sounds to different speakers with Direct Sound. It took me a while, but I eventually figured out how to do it and sent him some code. At the same time, I asked him what he wanted it for. It turns out, he used it to build this. Impressive to behold, and I'm glad to have helped a little bit. :)

Wednesday, January 12, 2005

My New Prompt

Courtesy of the clever Shawn Van Ness, my new command-line prompt is now


Which, when I set it via either the prompt command or the PROMPT environment variable, gives me a command line that looks like this:


The plusses indicate that I'm two levels deep in pushd, and I like that the working directory appears on the line before, obliterating the problem of long paths making commands linewrap. Nice!

Wednesday, January 5, 2005

Tom Miller's New Book

Tom Miller's new book, Beginning 3D Game Programming is out. Given that Tom literally wrote Managed DirectX, and then went on to write an excellent book about it, I'm guessing this one will be good, too. It's definitely on my wish list if anyone wants to send me a late XMas gift. :)

Monday, January 3, 2005


With a new baby, my wife in school full-time, and some major rennovations going on in the basement, it's going to be hard to find free time to hack unless my current client gives me the boot and I can't find anything else. (Knock wood that doesn't happen.) Nevertheless, I have in mind what I want to do software-wise in 2005.

First, foremost, and solely, I would like to get FlexWikiPad to at least 1.0 status. I've been working on it for over a year in my spare time, but my vision for where I want to get it has changed little. Right now that means working on a decent text editor control that I can use for it. That'll probably take me a few months just to finish that, but I'm guessing when I'm done it'll be even more widely used than FlexWikiPad itself. Stay tuned. After that, I can finish up the last few major features I want to get into the thing, and then go on a bug-smashing tear.

And that's actually it. I have enough other non-coding projects in my personal life that I think I need to hang up the spare-time software gig for a bit when I get FlexWikiPad to a satisfactory doneness state.

Saturday, January 1, 2005

The Year In Review

2004 has come and gone. It was a huge year for me, both personally and professionally; I hope yours was as good as mine.

The end of the year (or in this case, the beginning of the next) is traditionally a time to look back at what happened through the lens of hindsight. Who am I to resist jumping on the bandwagon? Herewith, a tour of the highlights of my year as seen via CraigBlog.

In January, I started up at MSDN again. Focusing on writing production software was a huge theme for me in 2004: while I've done it before a little, my career has long been focused more on research and troubleshooting than on the ruthlessly practical world of getting software out the door. It was enormously educational, and really fun. And I'm still not done learning how to do it better.

In February, I wrote the last Direct3D tutorial of the year. At the time, I didn't think it was going to be the last one, but things just kept getting busier and busier, and I haven't yet found the time to get back to the series. I do still plan to write more, but I don't know when I'm going to get there.

In March, I bid GotDotNet adieu permanently. As a workspace environment, I find it lacking in several regards. My discontent in part led to the migration of FlexWiki to SourceForge, a journey which took a large part of the rest of 2004 to complete.

In April, I got the FwContrib project set up on SourceForge. FwContrib contains the project to which I have devoted over a year of my spare time now: FlexWikiPad. Oh, and April was also the month where I found a three-foot snake in the basement.

In May, I shipped version 1.0 of FwSync. Finishing something and getting it “out there” was quite a milestone for me. Hopefully 2005 will see the same goal met for FlexWikiPad. May was also the month where my wife was accepted into the Executive MBA program at Wharton, something which negatively impacts my free time now, and (hopefully) positively impacts my income later. :)

In June, I found a nasty bug in System.Decimal while working on MSDN2. I submitted it via the Product Feedback Center, and it got fixed for Whidbey. Cool.

In July, Peter Provost and I released the dasblog2dottext importer tool (he wrote it, I did the build script). I also launched the Pluralsight Wiki, a fairly obvious thing for a wikihead like me to do.

In August, I released another version of FlexWikiPad, and then almost immediately had to patch it...I was definitely starting to feel like I was doing “real“ software. :) I also discovered Beatallica, a band that still amuses me months later.

September was a momentous month for me. Not only did the alpha version of MSDN2 ship, but FlexWiki went open source (only the third Microsoft project to do so). I also saw FoamHenge and finally ditched EIF for log4net - a move I still don't regret.

For all the other great stuff that happened to me this year, October is clearly the absolute highlight. And no, I'm not talking about the fact that I released RichTextEditor. The big event was that on October 28th, my daughter Ellen was born.

November was (understandably, I think), a slow blogging month. But I did manage to ship an update to RichTextEditor. Of course, right after that I realized that I was going to have to start over with my own text editor control. Sigh.

I took a good chunk of December off, only managing to ship one update and one patch to RichTextEditor. What can I say? It was a slow month. :)

I was planning to talk about what I want to get done in 2005 too, but I think I'll wait and make that my next post.