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.
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 setup.sh
This installation doesn't support unknown on x86_64
Please contact Loki Technical Support at firstname.lastname@example.org
[AugieDB] /Volumes/Quake III $
That’s right; nothing was 64 bit yet back then. Heck, Mac was still on the Power PC.
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: