This blog as moved to: http://nerditorium.danielauger.com/

The State of Spolsky or: How I Learned to Ignore the Legacy Programmer Boss.



If you don’t know who Joel Spolsky is, you can probably pass on this blog entry. I have a ton of respect for Joel. I’ve learned a lot from his posts over the years, and I still consider him to be a guru in the business of software. I’m sure I'll continue to learn from him yet.

In recent weeks, Joel has made some controversial posts regarding what many people think are the hallmarks of modern programming (design patterns, TDD, IoC, etc…). In this blog post, Joel espouses the ethic of the “Duct Tape Programmer”. In this stackoverflow.com answer he has this to say about IoC:

IoC containers take a simple, elegant, and useful concept, and make it something you have to study for two days with a 200-page manual.

I personally am perplexed at how the IoC community took a beautiful, elegant article by Martin Fowler and turned it into a bunch of complex frameworks typically with 200-300 page manuals.

I try not to be judgemental (HAHA!), but I think that people who use IoC containers are (A) very smart and (B) lacking in empathy for people who aren't as smart as they are. Everything makes perfect sense to them, so they have trouble understanding that many ordinary programmers will find the concepts confusing. It's the curse of knowledge. The people who understand IoC containers have trouble believing that there are people who don't understand it.

The most valuable benefit of using an IoC container is that you can have a configuration switch in one place which lets you change between, say, test mode and production mode. For example, suppose you have two versions of your database access classes... one version which logged aggressively and did a lot of validation, which you used during development, and another version without logging or validation that was screamingly fast for production. It is nice to be able to switch between them in one place. On the other hand, this is a fairly trivial problem easily handled in a simpler way without the complexity of IoC containers.

I believe that if you use IoC containers, your code becomes, frankly, a lot harder to read. The number of places you have to look at to figure out what the code is trying to do goes up by at least one. And somewhere in heaven an angel cries out.

I see two things happening here:

  1. Joel continues his (very worthwhile IMHO) crusade against the “Architecture Astronaut” who is so far into the clouds that they aren’t writing code anymore but think they should tell people how to code, and the “shiny new toy” developers who have a solution looking for a problem. I’ve had very painful experiences with both of these archetypes.
  2. Joel inadvertently enters “Legacy Programmer Boss” territory as he discounts mainstream changes in programming that have happened since he stopped coding as his primary job.
The Legacy Programmer Boss is the manager who had a successful programming career in the past but sees many modern concepts as language baubles, academics, and anti-patterns because they are out of the loop. The fact that they once had a high degree of expertise gives them confidence in making mis-judgements.

There was a point in time where “design patterns” where purely academic. However now-a-days many design patterns have become as ubiquitous as the FOR loop (that was the idea behind defining these patterns). IoC is not difficult to understand by any developer who can understand the factory pattern. Frankly, the average developer can go to 0 – 60 with IoC by watching a 22 minute video from David Hayden. If a developer cannot understand the factory pattern, then they are doomed to be a duct tape programmer. I’ve worked with many duct tape programmers, and over time their code requires more duct tape.

Joel is justified in his efforts to decry the Architecture Astronaut, but his Duct Tape Programmer is just as bad. After years of experience in the field, I think Uncle Bob’s Clean Coder / Software Craftsman is the happy medium.

If you write software for a living, you should keep up with the current practices and use them as you see fit. If you see your opinion in the minority, you are either a genius, an early adoptor, or wrong.

This blog will be a’changin’

Until now, this blog has been primarily focused on retro-gaming / retro-computing. I plan on expanding it in the very near future to include .NET development, slice of life, and some music / media related content.

Things in the works:

  • Rework the theme to be wide enough for code. (DONE 10/3)
  • Reorganize tags (DONE 10/3)
  • Add RSS feeds based on tags so people can ignore the topics they don’t care about. (DONE 10/3)
  • Possibly move to a hosted Wordpress install on my Webhost4life site. I really haven’t made up my mind about this yet.

Vectrex

I finally got my hands on a Vectrex via ebay complete with 12 games, manuals, and overlays. My neighbor had one of these when I was a kid, and I've seriously been lusting after it ever since. I spent many hours playing Scramble and Star Trek on one of these in my youth.

The Vectrex has to be one of the most unique early 80s game systems. It's a vector graphics based console that came with its own CRT monitor. It had one built-in game (Minestorm) and a cartridge slot for purchased games. The screen displayed black and white vector graphics but used transparent overlays that were placed on the screen to add color and other graphical elements. In my opinion, it remains the best way to recreate vector graphics arcade games at home. Emulation is great, but nothing can beat seeing these graphics on a CRT.

Here is the system I acquired:


Vectrex


My camera's autofocus had a hell of a time dealing with the CRT's refresh rate. It tended to snap some trippy pictures. Here is the cleanest picture I could snap of Minestorm in action:


Vectrex


Here is one of the trippier interpretations my camera made of Minestorm:

Vectrex


If you are a fan of vector graphics, but are unfamiliar with the vectrex, you owe yourself a peek at the following video from Classic Game Room:




Here is a great retrospective video of several classic Vectrex games. This video is done via an emulator and I'll think you'll see that quite a bit of sparkle is missing. It's still cool nonetheless.





Finally, just to prove that the Vectrex was the shizzle back in the day:


Autoduel

For those who aren't familiar with this game, Autoduel is a classic computer strategy/RPG conversion of the Car Wars table top game. I've been hunting for an affordable good condition copy of Autoduel for quite some time now. One with a decent BIN price showed up on ebay late last week. I couldn't resist. I used to have this as a kid and I wanted to get a physical copy back into my collection. The awesome box art and cool map that comes with the game make this worth having.

Coincidentally, this week's episode of Matt Chat is on none other than Autoduel!



The Mouse's Reprieve

When I arrived home from work this evening, I was greeted by an odd clickety clack sound. A quick glance around the kitchen revealed this:


Apparently a mouse had got itself caught in a trap I had set out, but only by its arm. The mouse then ran around the side of the refrigerator (pooping several times apparently) and squeezed inside the refrigerator's vent cover. I initially tried to pull the mouse out of the slot it crawled into, but it emitted a pitiful squeak. I ended up taking the cover off and letting it go outside. It took off ok, so I'm sure I'll be seeing it in my kitchen again soon. Next time it may not be so lucky.

Hello C64 From Ebay. Will You Be My PAL?

I finally managed to get my hands on a PAL C64. It came with a light gun, tension adjustable joystick, Datasette, and several games on tape. I have a NTSC/PAL S-Video to VGA converter box, but unfortunately the results were pretty horrible. I'm going to have to get myself a PAL capable monitor ASAP.

C64,Retro computing

Breadbox64 - The Commodore 64 Twitter Client

As unbelievable as it may sound, there is now a Twitter client for the C64. It is called Breadbox64 and it was written by Johan Van den Brande. It is built on top of the Contiki network stack and requires a RR-Net compatible Ethernet card.

I have sent my first tweet from my C64 and it was good.

If you don't believe me, see for yourself. Here is a video from the author of the software: