Douglas Crockford on Programming History

The Hanselminutes Podcast is an enjoyable weekly half hour interview series touching on a varity of programming topics. I don’t listen to all of them, but there are enough golden nuggets in the stream to merit staying subscribed to the feed on iTunes.

Last month’s interview with Douglas Crockford is one such gem. Crockford discusses the need for today’s programmers to understand a little more about computer history for very concrete reasons, why constraints ought to be built into more languages for the greater good, and why a bug journal might be a good idea.

This is also a good opportunity to again recommend Crockford’s Yahoo presentation on Javascript which features an amazing history of computer programming. You won’t learn much about Javascript, but there’s a lot of programming history there to enjoy.

Quake 3 Arena

I came across a box of CDs from games I was playing around 1999 – 2004 this week. It’s been a treasure trove of memories.

For kicks, I tried putting the Quake III disc into my Mac to see if they included both PC and Mac versions of the game. This is common today, but it was a crazy notion back in the day.

As it turns out, it was neither. This was the Linux edition. The README file is hilarious. The hoops you have to jump through to make sure your video card was compiled into the game is painful. The game included support for both 3dfx Voodoo cards and Matrox G200/G400. Everything ran off the command line.

Figuring that my iMac is a Linux box, technically, I tried running it. As expected, it didn’t go well:

[AugieDB] ~ $ cd /Volumes/Quake\ III
[AugieDB] /Volumes/Quake III $ sh
This installation doesn't support unknown on x86_64

Please contact Loki Technical Support at
[AugieDB] /Volumes/Quake III $

That’s right; nothing was 64 bit yet back then. Heck, Mac was still on the Power PC.

Loki Games, who made a run of releasing Linux ports of popular games of the day, gave up the ghost in 2001, though their website is still available.

Sadly, the Unreal Tournament 2003 and 2004 discs I have here are Windows only. Specifically, they cover Windows 98/Me/2000/XPi/Linux.

Now I’m half-tempted to run a virtualized Windows box on my iMac to play one of these again.

Ruby: Inheritance is Super

Let me save you all an hour with this one:

When using inheritance in Ruby, the parentheses in your call to super are important.

Specifically: If you’re calling out to super without any parameters, you must use them.

This is a lesson I have learned now the hard way, after troubleshooting seemingly every other potential problem in my code. I was convinced at one point that one class couldn’t see the other because it was in a separate file. I messed with “require_relative” for a while, plus different code layout choices.

In the end, the problem came about becuase I was inheriting from another class, but not passing additional values over as a parameter. Because of that, I had to use the parentheses. Once I realized that, problem solved.

So, yes, I feel like a bit of a fool on this, but I also just learned a lot about:

  • require_relative
  • the super command
  • method inheritance

Sometimes, learning is a slow slog. For more on learning, check out the latest edition of the Ruby Rogues podcast.