February 2011 Blog Posts
Semi-ditto Post : Recommended Book: Apprenticeship Patterns

Davy Brion has a post up about a book, which is nice, but also posts about his opinions about “Software Craftsmanship.”  Though I don’t imagine he would agree with my own take on it, I really like some of what he says:

“I’m not a fan of the Software Craftsmanship movement. Well, i do love the goals and the principles behind it but i kinda dislike the terminology they've chosen to try to spread those goals and principles. It has this elitist connotation to it which just rubs a lot of people the wrong way. Instead of trying to pull people in to the concept of continuous improvement, this whole "i'm an apprentice! i'm a journeyman! i'm a master!" thing just makes us look kinda stupid”

He has some more positive things to say:

“In fact, i wouldn't be surprised if this movement would've gotten more traction and less blog-o-drama if they'd simply called themselves the Continuous Improvement movement.”

Where I still disagree involves the fact that I think the term “Continuous Improvement” hides the fact that what people call ‘Continuous Improvement’ is really just “change from what we’ve done before.”  It could be improvement, but it might not be.  “Look at me, I’m doing TDD now” or “Look at me, I’ve abandoned .NET to do Ruby” are changes that various people talk about.  Neither of which might actually be an improvement, just a change.

But, it’s a good read.  Check it out.

posted @ Monday, February 28, 2011 10:03 PM | Feedback (2)
Final Creative 32 GB Most Popular List

I recently bought a Zune HD 64 GB player.  I had hoped the Creative Zen 64 GB player, physically identical to my 32 GB unit, would have been the one, but alas….

I never would have considered the Zune, except for two reasons:

  1. Because of my Windows 7 Samsung Focus, I got to play with Zune Marketplace and sign up for the monthly pass thing.
  2. Someone at a recent Chicago Alt.NET meeting had a Zune HD, gave it a good reference and let me look at it.  The physical design of it was much nicer than I expected (there’s a lesson in there somewhere, my perception was since it was designed by Microsoft, it had to have kinda sucked).

Anyway, for future reference, and for the hell of it, here is the final 20 entries (in order) in the auto-populated Most Popular list under the Music –> DJ area.  Oddly, though there are Venn-diagram like overlaps, this doesn’t really reflect my 20 most favorite songs.  Included are links to YouTube versions, if (currently) available:

  1. The New Pornographers - Adventures in Solitude
  2. Porcupine Tree - I Drive the Hearse
  3. Roger Waters - 4:41 AM (Sexual Revolution)
  4. Aimee Mann - 31 Today
  5. Melissa McClelland - Brake
  6. Lindsey Buckingham - Down on Rodeo
  7. Porcupine Tree - Time Flies
  8. Porcupine Tree - Anesthetize
  9. The Fray - Look After You
  10. Porcupine Tree - Arriving Somewhere But Not Here
  11. Talk Talk - After the Flood
  12. Roger Waters - Amused to Death
  13. Porcupine Tree - The Sound of Muzak
  14. Porcupine Tree - Normal
  15. Blackfield - Once
  16. Rush - Far Cry
  17. Pink Floyd - Sorrow
  18. Roxy Music - True to Life
  19. Pink Floyd - Time
  20. Talk Talk - The Rainbow
posted @ Monday, February 28, 2011 9:41 PM | Feedback (0)
Ditto Post: Unit Tests Are Overrated

Over at, Krzysztof Kozmic has a great post about testing, and how (paraphrasing) integration tests are more valuable than unit tests.

“At the end, let me share a secret with you – Windsor, has very few unit tests. Most tests there are (and we have close to 1000 of them) exercise entire container with no part stubbed out in simulations of real life scenarios. And that works exceptionally well for us, and lets us cover broad range of functionality from the perspective of someone who is actually using the container in their real application.”

I agree with this, and it is something that really hit home on my most recent large project (more on that in a bit). 

Check it out.

posted @ Monday, February 28, 2011 6:42 PM | Feedback (2)
Travel Tip: Don’t flee from the Texas State Police

In my defense, it wasn’t my fault.  Well, not exactly.

I took a well-deserved (well, I think it was, anyway) vacation that I might get around to posting about.  As a huge hockey fan, I visited Dallas, Phoenix, Denver, and Nashville to catch an NHL game in each city (highlight was obviously watching the Pens win in overtime against the Avalanche.  On the one hand, it was the Avalanche, who aren’t exactly doing well.  On the other hand, the Pens are dressing half of their AHL franchise because of all their injuries, so I’ll take it).  I actually drove the entire trip (I like long road trips, what can I say, and I have a new car that I like).

Anyway, I’m not exactly a poster child for defensive driving, so I tend to get pulled over once every couple of years for some instance of stupid driving.  Speeding, rolling stop at a stop sign, stuff like that.  Sometimes, I get a ticket, other times, I get a warning.  In Illinois, when you get a warning, it is typically literally takes the form of the state trooper (if it is the state police that pulls me over) saying something like “Hey, idiot, don’t do it again.”  So, that’s what I’m used to.

As a general rule (and kids, don’t follow this rule, I’m just saying what I’ve experienced), if you speed 5 MPH or so above the posted limit on a state or interstate highway, troopers don’t generally pull you over.  For whatever reason, using our friend cruise control, I was driving through West Texas at exactly 10 MPH above the limit (which is posted at 70 during the day, and 65 at night, on whatever highway it was).  There were three or four of us doing this, but for whatever reason, I was the one the Texas State Police pulled over.

<digression>If you are paying attention, you can almost always see them coming, but only too late.  Maybe I should get a radar detector.  Whatever. </digression>

There were two officers who approached the vehicle and I gave them all the requisite stuff, license, proof of insurance, registration.  They spent a few seconds looking at it and then they told me “We are going to give you a warning” and handed back the requisite stuff, license, proof of insurance, registration.  Since I was (at the time) driving from Dallas to Albuquerque, I was mentally calculating how much longer it would take to make the trip, and said thank you, and went on my way.

The only problem was that they hadn’t actually handed back my license, just the other stuff.  In Texas, they actually give you a slip of paper that identifies exactly what they are warning you about, so they kind of expect you to wait in your vehicle till they give you that slip of paper along with your returned license.

So, from the point of view of the troopers, I just took off.  Needless to say, within 30 seconds, they were pulling me over again, and this time, they weren’t necessarily as pleasant as they asked me to exit my vehicle and go sit in theirs.  One trooper sat in the driver’s seat, the other sat in the back seat, and while they perused whatever they could see on the internal computer, they started asking questions like what drugs I was transporting that would cause me to flee a pullover stop.  They also started asking trick questions like “Why were you arrested in 2007”?  Since I wasn’t arrested in 2007, I had no idea how to answer that one.  They also couldn’t quite figure out why the hell I would drive from Chicago to Dallas and then on to Phoenix via Albuquerque instead of flying.

This will shock some of you, but I tend to be somewhat of a smartass.  Surprise, I know.  Anyway, in this situation, Mr. SmartAss wisely disappeared, and just about every answer I gave them took the form of “Yes, sir” or “No, sir.”

Luckily for me, this all worked out, and I got the little slip of paper with the warning and my license back.  I need to make sure to drive the speed limit the next time I’m in Texas.

In summary, don’t flee from the Texas State Police.

posted @ Wednesday, February 23, 2011 9:10 PM | Feedback (0)
Thank a veteran

I don’t normally post something like this, but it came up recently.

Recently, I had the joy/opportunity to serve on jury duty.  That in itself is interesting.

Anyway, I got to have a conversation during that time with someone who spent multiple tours of duty in the Middle East.

It matters not what your political views are.  These people deserve our respect and thanks for serving and doing what most of us couldn’t possibly do.  If you meet them, take a second to thank them.

They deserve it.

posted @ Monday, February 07, 2011 8:46 PM | Feedback (0)
Beware of hidden assumptions in software development projects

I’m going to pick on one thing (and a surprising thing at that), but the one thing isn’t really the point.

I’m working on a project in which the backing database store is being moved from SQL Server to Oracle.  The reasons for why this move is being made is interesting in itself, but I’m not going to talk about it here.

To give a little background, I am a certified SQL Server DBA.  At a Master level, even.  I’m not sure why (well, I know why, I took the exam), as when I consider myself against really great SQL Server DBAs that I know personally, I’m not at their level.  But, okay.

During the great days of 2000, I went through a huge undertaking to prove that SQL Server could scale, as our venture capitalists were Oracle people.  The details of that are also interesting, but I’m not going to get into that here.  Needless to say, we proved it for what we needed at the time.

Fast forward to the current project, and let me ask a simple question: has anyone ever questioned or doubted whether transitioning from SQL Server to Oracle would hurt either performance (in terms of throughput) or scalability?

I’ll go ahead and answer that question: no.  Considered in the abstract, the idea that you could possibly have scalability or performance problems when moving from SQL Server to Oracle was not only not on the radar for anyone involved in the project, but seems beyond the pale.  *Of course* Oracle can meet or beat SQL Server.

And yet, we found a reproducible case of SQL Server out-performing Oracle by a factor of over 50 to 1.  There was much angst, and the usual random suggestions (grasping at straws) that somehow our .NET code calling SQL Server was magically faster than the same code calling Oracle.  Then we reproduced the lower performance using Java hitting Oracle.

In the long run, it looks like the issues will be addressed by our engaging with Oracle DBAs, and I honestly and truly don’t give a shit about having a debate about Oracle vs. SQL Server vs. .NET vs. Java vs. blah blah blah blah.  And I really don’t care about NoSQL here.

But the fact remains that we simply assumed (rationally, I would say, given what we knew and what seems to be common knowledge) an outcome, and then had to scramble when the outcome didn’t match what we assumed.

Track these assumptions and validate them.

posted @ Monday, February 07, 2011 8:28 PM | Feedback (2)
Excel Interop: System.Runtime.InteropServices.COMException : Microsoft Excel cannot access the file

Yes, before you say anything, Excel Interop isn’t something you should be doing, unless you have to.

Anyway, typical problem is this:  you create some C# code that uses Excel Interop to do the ugly things that you are doing, and all works fine.  Then, you try to schedule it through Windows Scheduler or SQL Server Agent or run the code from a web site in IIS, and each time you try to run it, it throws this error.

From Bob Templeton in the MSDN forums’ post here, you need to do this:

-  Create  the directory "C:\Windows\SysWOW64\config\systemprofile\Desktop " (for 64 bit Windows) or "C:\Windows\System32\config\systemprofile\Desktop " (for 32 bit Windows)

- set the permissions required on that directory (so, if using IIS, you would want to grant full permissions to the AppPool in question, with SQL Server Agent, to whatever login it is running under, etc.).

Even though I am running Windows 7 64, I had to create the directory under “System32” to get passed this error.

But really, that’s all you have to do.  Create a folder.

If you do these things and still get this error, Google for another solution.

posted @ Sunday, February 06, 2011 11:49 PM | Feedback (4)
The item 'T4MVC1.cs' cannot be deleted

I ran into this problem about a month or two ago, and don’t remember how I fixed it.

Every time I build my solution which uses T4MVC, I get this error unless I manually delete the file.  Also, note that it is “T4MVC1” and not “T4MVC.”  This happened the last time as well, where somehow the solution thinks it needs to name the file differently.

I will post the solution whenever I figure out what it is so that it is documented for myself the next time it happens.

posted @ Sunday, February 06, 2011 3:13 PM | Feedback (10)
Words of Wisdom – Nigella Lawson

Judging a dish on Iron Chef America:

“It’s witty, without bringing attention to itself.”

That’s exactly how I feel when ordering off the dollar menu at Taco Bell.

posted @ Saturday, February 05, 2011 7:16 PM | Feedback (0)
Newables and Injectables

As per usual, when you read a lot of blog posts and get a lot of other stuff in your RSS feeds, you end up hitting on some things that you didn’t expect.  Most of the time, it isn’t necessarily all that valuable, but sometimes it is.

From Misko Hevery and then expanded upon by Loose Couplings (couldn’t find an actual name) is a distinction between newables and injectables that can help you write better tests (the latter casts it in terms of TDD, which as you know I think sucks, but the distinction seems promising regardless of that) by giving you guidelines of how to create classes that make dependency injection more effective.

I’m sure that I could quibble with this or that, but it’s good stuff to read.

Check it out.

posted @ Friday, February 04, 2011 9:16 PM | Feedback (0)
Fun Link: Studio Multitracks

Via John Gruber, Studio Multitracks is a site that deconstructs classic (and some not so classic) songs into their individual tracks.

The hook that got both Gruber and myself to visit is the deconstruction of The Rolling Stones’ Gimme Shelter.  If you don’t like the song, you probably won’t be as impressed, but then again, if you don’t like the song, there’s something wrong with you.

Check it out.

posted @ Friday, February 04, 2011 6:39 PM | Feedback (0)
Wintery Wonderland, Chicago-style


Officially, something like 19” fell.  Hard to get quite the scale, but it’s a lot.  Most sidewalks and streets are still impassable.

posted @ Wednesday, February 02, 2011 6:04 PM | Feedback (0)