Archive for October, 2007

The October 2007 Caffeinated Codey Winners Are…

It’s time for the next installment of the monthly Caffeinated Codey awards, where the link love flows for my favorite posts from the month.

  1. For Best Software As RoadKill Analalogy…Ben Scheirman on Don’t Make Squirrel Burgers. The next time your boss tries to haggle you over the estimate, just pull out Ben’s squirrel burger story. If that doesn’t work, you may want to just feed your boss a squirrel burger when he’s not looking, thereby earning you a several day deadline extension as he recovers from getting his stomach pumped.
  2. For Best Hate Mail Magnet Post…Rob Conery for his post Imploding Rails, Jesus DHH, and the Uncle Ben Principle. Note to self: Calling DHH, the creator of the uber-trendy Rails framework for Ruby, a “foul-mouthed, prissy Dane” is apparently not the best way to win friends and influence people. Nevertheless, an excellent software debate on dynamic languages, the scalability of Ruby, and the role of DHH in the future of the language emerge through this provocative post and the hundred plus heated comments that it inspired.
  3. For Most Productive Meeting Day Dream…Mark Miller for his post on Test Bot Kicking Ass. Everybody daydreams during meetings about being attacked by rocket launcher toting killer robots and then slicing their heads off with a crack shot from their steel blade shooting gun, but it takes a true genius like Mark Miller to turn it into the inspiration for an innovative testing solution. You have to admit, the idea of a software bot continually downloading the latest version of open source projects and running thousands of unit tests against them is pretty slick.
  4. For Best Inspirational Speech…Fake Steve Jobs for his post My Message of hope for the Borg. Since reading this post, I’ve tried to fit the phrase “I’d rather make love to a bag of broken glass” into as many conversations as possible. The post provides excerpts of a speech that he gave on the Microsoft campus, where he tells it like is to the Microtards like only the Jobmeister can.
  5. For Best Advice on How to Comment Code…Phil Haack for his post The Greatest Compliment A Developer Can Receive. Phil offers a perceptive rant about every developer’s propensity to be overly critical of other people’s code. I have to admit that I have never heard someone say that they just inherited a code base that was well written. Ok, perhaps the extra space between the if and parenthesis doesn’t make the code totally worthless…
  6. For Best New Start-Up… Rory Blythe for his post A New Religion – A Neopoleon Religion. Pass around the collection plate, because there is a new religion in town. Rory has gone on a divine hiring spree and with the help of some questionable recruiters has already amassed an impressive head count in his quest to create a “religion with more gods than any other religion in the history of religions”. I’m personally putting in a request for a mighty espresso bean god that has a twitching stat of 99 and that smites Folgers drinkers with a terrible caffeinated vengeance.
  7. For Most Long-Winded Title for a Post Advocating Minimalist Writing…Raymond Chen for his post The most important choice in writing is not what you say, it’s what you dont’ say. All kidding aside, it is solid advice with a helpful before and after writing sample. It reminds me of the saying, “I didn’t have time to write a short article, so I wrote this long one instead”.
  8. For Most Valiant Mort Defender…Oren Eine (a.k.a. Ayende) for his post ALT.NET and the Enterprise. For a lazy 9-5′er, poor Mort has been busting his tail this last month being a favorite topic of conversation in the blogosphere. This post sparked one of the more lively debates on the true capabilities and value of average Joe developers in the software food chain. Whether you’re a Fascist Mort Hater or a Commie Mort Sympathizer, you’ll find food for thought here.
  9. For Most Egregious Geek Blasphemy…Jeff Atwood for his post Why Does Software Spoil?. Jeff challenges the typical geek compulsion to automatically upgrade at the drop of a hat and makes an interesting argument that new versions of software are often worse than their predecessors because of decreased usability and performance due to feature bloat. It will make you think twice before agreeing to that next upgrade.

Finally, in the category of posts that I read in October but were technically written in September.

  1. For Most Diplomatic PowerPoint Slide…Mark Miller for his post My Last VSLive Session Ever? I can’t imagine why has been black-listed from conferences before. I also can’t figure out how people who fail the first prerequisite are able to sit down in the first place…



Special Announcement about Awards- Once again, congratulations to all the CC recipients for winning this most prestigious award. Unfortunately, the squirrels drank all the prize beer that I had set aside for awards this month. Perhaps Rory can retrain one of the out-of-work Norse gods to replenish my home brew stash so I can give each of these talented bloggers their proper recognition.

Until then, happy blogging.

* No squirrels were harmed in the making of this blog post.

** In case you missed them, here are the prior CC winners for September, August, and July.

Popularity: 8% [?]

Scott Guthrie Gets an Image Makeover

I met a lot of amazing people at the ALT.NET conference, but the one that impressed me the most was Scott Guthrie. Besides being one of the nicest and most unassuming alpha-geeks I’ve ever met, he had an uncanny understanding of the strengths and weaknesses of not only Microsoft technologies, but a vast array of other technologies, languages, and open source frameworks.

In some ways, the ALT.NET Conference was the ultimate testament to the effectiveness of his soft-spoken style. Despite presenting to a crowd that tends to be vocally critical of Microsoft, he had clearly won the respect and undivided attention of almost every attendant by the end of his presentation on the new MVC framework. Even Scott Belware, who frequently publishes rabid anti-microsoft rants like this one, made a comment indicating that he wished Scott Guthrie was the top dog at Microsoft.

Although being a soft-spoken gentleman has its public relations benefits when interacting with the developer community, I fear that his current image isn’t quite as hip as some of his competitors, such as DHH, the creator of Rails, or Steve Jobs, the flamboyant founder of Apple.

In order to make this developer icon of Microsoft more competitive in the public relations realm, I’ve taken it upon myself to do some pro-bono image consulting and attempt to jazz up his image a little more.

Introducing the new developer face of Microsoft…Scott Guthrie…starring in his new action hero role…Unnecessary Force.

NOTE: If you have trouble seeing this video, try visiting my old blog here to see jibjab video.

A special thanks to Scott Hanselman, Steve Ballmer, Steve Jobs, Scott Bellware, and David Heinemeier Hansson for their riveting co-starring roles.

Popularity: 7% [?]

What Do Underpants Gnomes and Rob Conery Have in Common?

No, the fact that Rob Conery may or may not be partial to stealing underwear is not the commonality I had in mind . So what is their connection? First a little background for those of you not familiar with either of these characters.

For the culturally illiterate among you, the underpants gnomes are characters from a classic South Park episode that satirizes Starbucks, large corporations, and people who assume mom and pop shops are inherently better than giant corporate chains like Starbucks.

The gnomes are little men who sneak into the room of a hyper-caffeinated character named Tweek and steal his underpants at night. Of course, nobody believes Tweek when he first tells them about the thieving underpants gnomes. But, eventually the gnomes are caught in the act, at which time it is revealed that they are really businessmen who know all about corporations and have a three step master plan to make profit.

There is one slight catch. When questioned about step 2 of their plan, which consists of only a question mark, none of the underpants gnomes actually knew what step 2 was. It seemed like a little bit of an oversight to the characters of South Park, who did not immediately grok the connection between stealing underpants and making profit, but that didn’t seem to bother the underpants gnomes.

That brings us to Rob Conery, who is best known for being the creator of SubSonic, a popular open source framework that does Railsesque database scaffolding and code generation. He’s also an excellent blogger and the most recent addition to my top 10 blog roll because of posts like these.

He recently announced that he is going to work for Microsoft and that he would possibly be paid to work full time on SubSonic, which is surprising because Microsoft isn’t exactly known for its patronage of the open source community.

Following Phil Haack and Scott Hanselman, Rob makes the third popular blogger in as many months that Microsoft has wooed to join the Micro-Collective. Does anyone sense a trend?

For those of you who haven’t had your morning coffee yet and still don’t grok the obvious connection between Rob Conery and the underpants gnomes, I’ll spell it out for you.

Thanks to them, I now have a solid three step business plan of my own, which includes the following steps:

  1. Drink lots of grande, triple-shot, non-fat lattes
  2. ?
  3. Make a huge profit by becoming a popular blogger and subsequently getting hired for Microsoft.

Following the lead of the underpants gnomes, I’m not going to fret too much about step 2 of my plan. The important thing is to figure out how I am going to spend my big fat Microsoft signing bonus that will soon be coming my way…at least what’s left of it after I buy the Glambo Signature Series “My Little Pony” M4A1 carbine with forward handgrip and AN-PVS4 night vision sight.

Popularity: 5% [?]

Need X-mas Idea for your Little Commando Princess?

May I suggest the Glambo Signature Series “My Little Pony” M4A1 carbine with forward handgrip and AN-PVS4 night vision sight?

You might want to also consider the Good Luck Bear Molle-compatible modular armored vest for those urban warfare play dates.

For more pure surreal goodness you can visit GlamGuns.com. Start saving your pennies!

Popularity: 4% [?]

Binary Humor

01001000 01101111 01110111 00100000 01100100 01101111 00100000 01111001 01101111 01110101 00100000 01101011 01100101 01100101 01110000 00100000 01100001 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01101101 01100101 01110010 00100000 01101001 01101110 00100000 01110100 01101000 01100101 00100000 01110011 01101000 01101111 01110111 01100101 01110010 00100000 01100001 01101100 01101100 00100000 01100100 01100001 01111001 00111111 00100000 01000111 01101001 01110110 01100101 00100000 01101000 01101001 01101101 00100000 01100001 00100000 01100010 01101111 01110100 01110100 01101100 01100101 00100000 01101111 01100110 00100000 01110011 01101000 01100001 01101101 01110000 01101111 01101111 00100000 01110111 01101000 01101001 01100011 01101000 00100000 01110011 01100001 01111001 01110011 00100000 00100010 01101100 01100001 01110100 01101000 01100101 01110010 00101100 00100000 01110010 01101001 01101110 01110011 01100101 00101100 00100000 01110010 01100101 01110000 01100101 01100001 01110100 00101110 00100010

An oldey but a goodey. I personally would have thrown an FingersSwollenLikeRaisinsException after just an hour, but who am I to judge?

Thanks to Rob Conery’s shenanigans for inspiring this thigh slapping good time.

In case your binary is a little rusty, here is a snippet of Boo code that will do the translation for you (posted by Ayende on alt.net newsgroup). You can simply paste it into a Boo project using the SharpDevelop IDE or quickly translate it yourself to C#.

code = "1110000 1100101 1100001" #paste binary data here
words = code.Split(char(' '))
for word in words:

System.Console. Write(cast( char, System.Convert. ToInt16(word, 2)))

Of course, you can also google for binary converter web pages, but what fun would that be?

Popularity: 4% [?]

The Resharper Challenge: What if You Could Only Have 7 Features?

I was working with someone who doesn’t have ReSharper today and I noticed for the first time that I have developed some feature addictions because I actually winced when I watched him fully type out a property and then manually do an “extract method” refactoring.

This surprised me since I have only really been consistently using ReSharper for the last month and am still far from my goal of becoming a ReSharper Jedi. Nevertheless, the dozen or so keystrokes that I have mastered and consistently use are making a noticeable difference in removing some of the coding noise that usually distracts me and slows me down while coding.

In keeping with the lucky seven theme from my last post, I decided to share seven favorite features. In other words, if there were suddenly a terrible ReSharper feature shortage and the Programming Gestapo started forcing everyone to ration their features, this is what I would choose.

(NOTE: All shortcut keys are according to the VS Bindings)

  1. Auto-inserting using statements (alt + return at prompt) – This is by far my favorite feature. How does it know what I wanted so quickly?
  2. Generating properties, constructors, & overrides (Alt + Ins) – For properties, it lets you choose from a list of private variables without properties. For constructors, it lets you choose from a list of possible properties to use as parameters.

  3. Identifying Dead Code (text colored gray): No more excuses for letting unused code clutter your code base.
  4. Extract Method (Ctl + Alt + M) – It figures out which parameters you’ll need to pass in and replaces the highlighted text with a call to the new method.
  5. Rename (F2) – This is a LOT smarter and quicker than the Visual Studio Find & Replace.
  6. Find Usages (Shift + Alt + F12) – This also beats the pants off of Find & Replace for doing impact analysis.

  7. Go ToType (Ctl + N) - I like how it pops up at my cursor, filters the list while I type, and shows the location of the files.




I fully expect this list to change as I get more proficient with the tool and as I start working on a 2.0 .NET project instead of a 1.1 project so that I can use the latest version of ReSharper.

Which seven features would you choose? If you had to recommend one killer feature that I am missing out on, which one would it be?

Popularity: 6% [?]

What are your Seven Essential Practices?

Ayende started a thread in the ALT.NET newsgroup asking participants what practices they deemed absolutely necessary on a project. In other words, if you were to start in a shop that had none of the current “best practices” in place, which ones would you spend your political capital on trying to get into place first.

If I only had enough time, money, and political capital to accomplish seven things, I would choose the following:

  1. Test Driven Development:  This is the one practice that I can’t really live without. I can be patient if others decide not to use it (although I will quietly try to win them over), but I would be in a real moral quandary if I wasn’t allowed to practice this myself for some reason. It enables me to capture requirements concretely, improve my design by “dog-fooding” my own API, and refactor without fear because I have at least some assurance that I haven’t broken anything.
  2. Source Control: I don’t really consider VSS a legitimate option, but as long as I don’t have to do much branching I can live with it in the short term (as I am doing now). At least VSS allows you to easily identify changes in a file and gives you a fair shot at rolling back individual files. No source control is simply not an option.
  3. Continuous Integration: The more people you have, the more necessary this becomes. The longer the feedback loop, the more pain you incur by fixing integration problems. At minimum, you need to have a controller (i.e. CruiseControl.NET) monitoring your source control system and automatically building your projects and running your unit tests (at least the fast running ones) upon check-in. Longer running tests can be scheduled hourly or nightly. Visibility (i.e. stoplight) is key if you want your team to get the most out of this practice.
  4. One Step Deployment: There is nothing more frustrating than having to take responsibility for deployment related errors that occurred in your application because a manual step was accidentally omitted. You may know that it was the deployment process that sucks, but everyone else will assume it is your code.
  5. Bug/Feature Tracking: The place I work at now uses JIRA, which is probably the best tool I’ve used so far in this category. If you can’t effectively track your work, then you have no chance of getting it done right on a consistent basis.
  6. Developer Productivity Tools (Resharper/CodeRush): I bought my own personal license for Resharper so I wouldn’t have be forced to go without. The more keyboard shortcuts I have at my disposal, the faster I code and the better chance I have to get and stay in the zone where I am focused just on solving the problem at hand rather than getting distracted by syntax and unnecessary keystrokes.
  7. Iterative SDLC: I simply refuse to work on another death-march, multi-year waterfall project. Although I think mature agile shops are by far the best working environments, I can be happy in more traditional shops as long as they follow some basic principals in spirit. Releases must be frequent and there has to be some interactive way to capture user requirements. Work should be continually re-prioritized based both on business value and according to a realistic budget based on average team velocity. Most developer overtime I witness seems to be avoidable and a direct result of the break-down in one of these fundamental practices. 

If you only had seven to choose from, is there anything that you would bump off this list in favor of a practice you find more essential?


Popularity: 10% [?]

In Praise of MbUnit

I’ve played with MbUnit before and was immediately impressed, but I haven’t tried using it on a project until today. I was surprised by how quickly and easily I was able to convert all of my NUnit tests. All I had to do was switch the references from NUnit.Framework to MbUnit.Framework and then do a quick find and replace for my using statements. After that everything magically worked. Kudos to the MbUnit team for not pulling an ‘MSTest’ move and renaming all the attributes and keywords.

Best of all, I was able to add several new tests quickly by simply adding parameters to my test methods and then using the MbUnit Row attribute to dynamically pass in multiple values. This simple feature not only helped eliminate quite a bit of duplicate test code, but it also encouraged me to exercise my code with more test data which immediately led me to find some new bugs.

I especially like how the MbUnit test runner lists each parameter as a separate test so you can easily see which one of the data elements caused the problem. It’s also nice to have multiple views of the test at the same time (Author/Category/Namespace).



If you haven’t already tried using MbUnit, I highly recommend it. There is almost no effort involved in learning to use it, especially if you’ve ever used NUnit.

Popularity: 7% [?]

A New Name For Caffeinated Coder Jr.

Thanks to Dewayne Christensen, I have finally picked a name for Caffeinated Coder Jr. (or Little Miss Caffeinated Coder), who is due to arrive at the end of March. If it is a boy, we were thinking of naming him Alexander, but now I’m going to give my wife the hard sell on naming him “Alexander;); Drop Table Students;–”.

I got the idea from this comic he sent me from xkcd.com.

Popularity: 4% [?]

Geeking Out The Old School Way

I’ve been spending a little too much time reading blogs over the last several months and am starting to crave some more in-depth study, so I decided that I am going to be “old-school” and try to spend more time reading books instead.

What I’m Reading Now

Here are the three books that I have been bouncing back and forth between lately. As you can tell, I am a little ADD as far as books are concerned and rarely read one at a time (probably why I like blogs so much). On the positive side, I stay motivated because I only read about topics that I am curious about or feel are most relevant at the time. On the other hand, I am also a little embarrassed by how many half-read tech books I have on my shelf.

Tonight I read a few sections from Effective C#. Here’s a random geek fact I learned. Changing a public variable to a property or changing a constant to a read-only variable will break binary compatibility. That means that your dll’s won’t work with clients anymore without a recompile even though the client source code is identical. This is due to the IL that is generated behind the scenes. The book gives much more practical advice than that, but for some reason that stuck in my brain because it was interesting.


What I Plan to Read Next

I’ve only really used Generics for strongly typed collections and am getting tired of not fully comprehending some of Ayende’s code samples, so I plan on devouring this Wrox book on Generics soon.
As far as the book on web services is concerned, you’re probably wondering why I don’t just jump to WCF, but there is quite a bit of 1.1 web service infrastructure at my new job and I am feeling the need for a refresher.

I also thought I should brush up on the coding standards with my Brad Abrams book since standards are pretty strictly enforced through formal code reviews here as well. Perhaps I can even find evidence that would help me convince my boss that if (isMyBoolVarTrue) is just as clear as if (isMyBoolVarTrue == true):-)

Favorite Books

These are the three books that have been most influential on my professional career and that I would most recommend to other developers.

I don’t think any of them have .NET sample code in them, but all three do an excellent job of explaining core developer concepts that transcend languages.

Fowler’s book on Refactoring is probably the book I’ve read the most. I am glad it is hard-cover, because it would have fallen apart long ago if it was paperback like the rest of my tech books.

Books I’m Not Smart Enough To Finish Yet

These are three books I would love to read, but will probably never get through them unless I suddenly find myself on a deserted island for 6 months with an endless supply of espresso and only these three books.

I’ve read several chapters of each book at some point, but the majority of the content went over my head because the samples were all done in low level C.

The PC Ph.D. book has chapters on Assembly, device driver programming, and low level hardware interfacing, which is just not my strong suit since I majored in history rather than electrical engineering in college.

The Rootkits book is actually the one I most covet. I got it on a whim a couple years ago because security is one of those topics that I love, but can never seem to find enough time to gain any real expertise in it because it never matches up conveniently with my day job.

Nostalgic Books

Finally, for a trip down memory lane, here are the first three technical books that I ever read. I haven’t looked at them in quite a while, but for some reason I can’t manage to get rid of them.

The C++ book was actually my first introduction to programming. I read it from start to finish one summer way back when I was still an elementary school teacher. I locked myself in a room from sun-up to sun-down for 3 months going over every sample in that book as well as the samples in a few other C++ books I picked up. It was geek love at first sight…:-)

I actually ended up getting my first job as a VB6/ASP programmer, so I never got a chance to use any of that C++ goodness. However, I am glad that I started out with that mindset because I think it really helped my transition to .NET a lot easier than it otherwise would have been if I had never been exposed to an object oriented language before.

Does anyone else still read books? I certainly don’t use them as technical references anymore, but I think I still prefer this medium whenever I feel the need to dig deeper into a technology. But, perhaps I’m just old school like that…

Popularity: 6% [?]

Next Page »