Today's sponsor

Design by Firinel Thurman.
Photo by Alex Turner.
Validate?

Me (as a programmer)

I should probably post a bit about myself.

I was born in England in the 1970s. My father was involved with computer administration at work, and often brought home used punch cards which I happily scribbled on in crayon. When I was about seven, the BBC started what it called the "Computer Literacy Project", which involved commissioning a new model of home microcomputer: the BBC Micro. My father brought one home, and soon I was hooked on BBC BASIC.

In those days, the games that software companies sold weren't very good, and you could write games of comparable quality in a week or so working by yourself. So that's pretty much what I did. I started out by writing all my BASIC programs down in a book, which is probably still in my parents' house somewhere. The first program I remember writing went something like

10 PRINT "YOU ARE IN A SPACESHIP"
20 PRINT "A BLACK HOLE IS DOWN AND EARTH IS TO THE LEFT"
30 PRINT "WHICH WAY"
40 INPUT A$
50 IF A$="DOWN" PRINT "BOOOOOOOOOM!!!": END
60 IF A$="LEFT" PRINT "HOORAY!": END
After a bit I stopped doing this and saved games to tape. I decided that what I really wanted to write was text adventures, and developed what would have been an engine or library had BBC BASIC supported libraries, but (since I had little idea how programmers did things and I was only using tape) was actually just a method of arranging procedures and arrays which was the same in every program. The system was called TAGS, for Thomas's Adventure Game System; the games themselves weren't particularly complex, and usually involved exploring the map I'd built, looking at the pretty teletext pictures and room descriptions, and finding particular magic objects to drop in the correct room in order to win.

I spent a week using TAGS to write an adventure game about Alice Liddell; it had the feature-- new to my programs-- that NPCs could kill one another as well as you; rather than actually remove them from the map, I prepended "the ghost of " to their names. After spending several hours playtesting, I entered a room to be greeted by "the ghost of the ghost of the ghost of the Duchess". Later, I was invited by the headmaster of my primary school (who took a keen interest in microcomputers) to bring the program in and show him; that happened to be the day when the tape got corrupted. (Later games using TAGS were more sophisticated and did include puzzles.)

In my early years at secondary school, my family decided to embrace the 16-bit revolution and buy a PC: it was an 8086 with EGA, in case that means anything to you. I played with GW-BASIC a bit, but wasn't very impressed. Later, my father spent £70-odd on a copy of Turbo Pascal 5·5; I think it was possibly the best £70 ever spent around me. It introduced me to structured programming, OO, compilation, assembler, a whole lot of stuff. It's probably responsible for my being a programmer now. While I was still at school I wrote a number of things using this language, most notably two Sierra-style adventure games, Avaricius and Avalot, that I cowrote with my brother; they're mostly forgotten now.

I went to the newly-designated University of Hertfordshire and read computer science; they taught us Miranda and Ada in the first year. They expected us to have a reasonable grasp on C at the start of the second year without teaching it (though they did provide three or four emergency crash course lectures if you had managed not to pick it up already); I think this is a sensible idea. Nobody should have reached the second year of a CS degree without exposure to C. After two years everyone was required to leave and spend a year in industry; I worked for an LEA (school board) in east London, where I built databases in (what would later be called) Visual Basic for Applications.

I came back, did the final year, got good grades, went to do postgrad work at Cambridge, and left without a degree; I won't go into the details here because I'm telling you my programming history, though I've told the story elsewhere already. I also started helping out on a summer camp for teenagers, teaching programming. We started by teaching BASIC, but when it became clear that computers weren't being shipped with BASIC any more, we switched to Python, and that's how I got into writing Python.

After college, I got a job working for a database company maintaining and extending their server in C++; then they redesigned themselves and got rid of most of their programmers, so I went and worked for a pharmaceutical company doing mostly Java and Perl work. Then I moved to the US (again, for reasons which aren't relevant here, though it's a good and happy story and one I've told elsewhere and will probably tell again). When I was granted a green card, I got a job at an email company working on Python and Perl, and then after I moved on from there I found a wonderful job at a nonprofit doing mostly Perl things.

Meanwhile, I'd become interested in contributing to Free software; I'd written a lot of my own stuff (including spending the time waiting for a green card in writing Gnusto, which from a user point of view is a program to let you play adventure games in a browser, and from a programming point of view is a z-code to Javascript just-in-time compiler; it probably doesn't work any more because of changes in Firefox). My job at the nonprofit involved a two-hour commute on public transit, and I saved up and bought a laptop so that I could use the time more usefully. I learned about the Gnome Love project, which helps people who want to get started contributing to GNOME (one of the Free desktop environments). But my first try failed because someone submitted a patch before I did.

My next try was against Metacity, the GNOME window manager (I'll explain what a window manager is another time, for those of you who don't know but want to), and it was accepted, so I fixed something else, and then I asked the maintainers what else I could fix. Given this list, and the four hours of commuting each day, I went through the whole list and fixed them one by one, which was a fabulous learning experience. Metacity is written in C.

I've recently been doing some Java contracting work, and I'm about to start a new C++ position, so I have several strings to my bow. This may explain why this blog is a little eclectic at times.

  1. Thomas Thurman
  2. 2007
  3. Me (as a programmer)