How I got into programming
Not that it is particularly remarkable or unique, but hey, this is my homepage, so what follows is a sort of chronology of my forays into computer programming. The dates may not be entirely historically accurate since I am basing it off of my memory and not any kind of definitive record. And it’s pretty long and filled with technical mumbo-jumbo. Feel free not to read it, I won’t take any offense.
1993/1994: I began my journey of programming somewhere around the age of nine or ten on a Macintosh Performa 450, which was the Mac designated as our family’s “kids computer” that we got for Christmas of 1993. These were the glory days of System 7. I started out on HyperCard (version 2.1, if I recall correctly).
Mostly I just hacked around and created ultimately useless (but fun for me) stacks. For instance, after seeing Jurassic Park, I made a stack that was sort of like Dennis Nedry’s workstation. I also read the book, which contained a lot of background details on Nedry’s shenanigans and even included source code (though I later came to realize it was really just some form of pseudo-code, not real code). The stack would let me type in commands similar to those that Nedry used in the book to shut down the park’s control systems (like “keycheck off,” “safety off,” etc). I don’t remember a lot of details about my stack but it definitely involved some HyperTalk scripting.
N.B.: I am quite aware that drawing inspiration from Dennis Nedry just might mean I missed the moral of the story.
I continued using HyperCard all the way through System 7.x, 8.x, and 9.x. Only with the advent of Mac OS X did I, sadly, have to finally leave it behind.
1995: At some point we got a copy of HyperStudio 2.0. This was a fine tool indeed, rivaling HyperCard in many respects. I enjoyed using it and created many useless stacks with it as well, though I never got into scripting it. Its built-in scripting language was HyperLogo. At the time for me that just wasn’t as approachable as HyperTalk, though my remarkably talented older brother Michael was able to harness it to do all sorts of cool things. He had also always been way ahead of me with HyperCard, too, which was nice since it let me peek at and copy his techniques for my own projects.
N.B.: Of course, somewhere along the way I also got into using ResEdit, a great developer tool and source of countless hours spent perusing the resource forks of system software, games, and applications.
Thinking in C
1996/1997: We got a book called Think Think C by Dan Parks Sydow. This was a wonderful book about C that included a diskette (remember those?) with a “Macintosh Simulator C” program. This allowed you to read the book and actually try things out as you went along. It was quite exciting. I really can’t say enough good things about this book and the doors it opened.
Eventually we ended up with a copy of Metrowerks CodeWarrior Lite. This was a trial version that had restrictions which didn’t allow you to create new projects or add new files to them, but Michael — who by then had become something of a MacsBug expert — figured out how to patch the CodeWarrior binary to get around the adding new files to projects restriction. So we pretty much got to use CodeWarrior for free to hack around on stuff.
1998/1999: Learning C++ was a logical next step. There were some great frameworks floating around that I spent a lot of time digging through, particularly MacZoop by Graham Cox. I learned a lot about the language from that source base. Sometime in 1999 or early 2000 I bought an academic copy of CodeWarrior Pro 5. That, of course, allowed me to spend many more hours poring over the PowerPlant framework.
Because of the Apple/NeXT merger (at the end of 1996) I also started reading NeXT documentation about Objective-C and the AppKit/Foundation frameworks. They had some really well-written documentation. Even though I couldn’t yet do anything with Objective-C, I still found it all quite fascinating.
Welcome to Cocoa
I didn’t completely drop C++ though as I had joined a game development team (all unpaid volunteers) sometime early in 2000. It was going to be a massively multiplayer online space game. They already had a solid C++ codebase, a great game design document, and some really nice artwork. Although I did ultimately contribute some code related to the game menu screen UI, in retrospect I spent way too much time worrying about minutiae such as writing a bug and task tracker (I think in PHP) and then later pushing for a rewrite in Objective-C. The project failed in the end for many reasons, but I chalk my own contribution to its demise up to massive inexperience. I did learn quite a bit from it though.
2001: I learned just enough Objective-C and Cocoa to start helping out other newcomers to the language and frameworks by writing tutorials at Cocoa Dev Central. I also published the first version of my Mac OS X screen saver Random Shapes, which was based on a System 7 program Michael had written.
In their October 29th edition, the Japanese magazine MacPeople included Random Shapes in an article and accompanying CD-ROM. One of the editors was kind enough to send me a complementary copy of said magazine after it was published. That was quite nice for such a simple screen saver project.
That year I also developed and released DisplayKit, an offshoot of the space game project I joined in 2000. DisplayKit was an Objective-C wrapper framework around CoreGraphics for display capturing, resolution switching, and gamma fading.
2004: I developed the music trivia game Rock Star under contract. It was written in Objective-C and let you play a “name that tune” game using your own iTunes music. This was my first piece of commercial software. I wrote versions 1.0 and 1.1 (a minor update) and created most of the in-game graphics (excluding the icon).
Sadly, the company that published it no longer exists and the game is not available anymore.