Since this page is the first hit when you google for Allan Odgaard, I figured I'd fill in a lot of details about me as a person (mostly from the computer perspective).

I was born the 17th of March 1976 in Copenhagen Denmark, where I still live. The years in the headers below are rough estimates, they might be off by one or maybe even two years.

Early Days of Computing (1988)

I got into computing at the age of 12 after a friend of mine showed how he could make his sisters Lambda print text to the screen. I found it so fascinating that I hurried home and tried it on my sisters C64. I quickly bought my own C64 and hacked away.

I mostly did (very) simple games, software to assist me in working with the computer (drawing fonts and sprites, handling disk operations (which was non-trivial to do manually at the time), and such), and software to solve some of my school work (although the computer assistance required for the work I had to do in public school was limited).

A year or so after this, another friend introduced me to demos, and my focus quickly shifted to making these. For those unfamiliar with the concept, a demo is a presentation (demonstration) of your skills programming (coding), making graphics, music, and putting it all together in an impressive display (more info). Of course my demos used ripped music, very basic effects (like a simple scroll text, something animated, raster bars, star fields, and such), and the amount of graphics was limited to rather plain logos.

Writing Demos (1991)

At the age of 14 I had enough money to buy an Amiga 500. I kept programming on the C64 for the first year (since at that time I was pretty skilled in machine code, and knew nothing about how to program the Amiga), so the Amiga was just a gaming device. But after roughly a year I met someone who introduced me to the Amiga Hardware Reference Manual (might not have been the actual title) with all the nice details about the hardware registers (which you really needed to exploit, if you wanted to make impressive demos) and that kick-started my “career” on the Amiga demo scene. Though none of my demos was ever above average (if even around average), but I enjoyed it nonetheless, and I had a lot of fun meeting like-minded people.

Writing System Applications (1995)

When I started in high-school, the time for hacking on my computer was limited, and I started to use my Amiga more as a working machine, than programming it. Probably for this reason, system software (which is basically everything that's not a demo) started to interest me more, and I eventually took a swing at creating this myself.

My first real application was a calendar and reminder program (called Daywatch), which was also the last thing I wrote in assembler. It was written (iirc) shortly after I finished high-school. I wrote lots of software for the Amiga since then.

Switching to Windows (2000)

While I was studying computer science I got a job for Met@box working on their set top box. This required I used Windows, due to the development kit. I still used my Amiga for most other stuff (though I was a little disillusioned about the future of computing, and thus wasn't very motivated to work on my own stuff on that machine, plus I had lost most of my sources in a harddisk accident).

I discovered how cool it was to be able to play MP3s on the PC, and since none of the MP3 players were to my liking, I started my own.

Switching to OS X (2001)

My flirt with Windows lasted roughly a year. I really did not like the platform (despite its ability to play MP3 and DivX). So as payment for some consultant work, I got a 733 MHz Quicksilver. At the time, I still kept using my Amiga, but slowly I was migrating to OS X. Initially I had a long list of all the things I (really) disliked about OS X, but it was mainly interface details. I liked the architecture (which is really the most important, since what's on-top can be fixed/hacked/replaced), I loved Cocoa, and I knew that this was a “commercial” platform, so if I ever were to make money off computing, and actually like it, OS X was my best bet.

Finishing my degree (2002)

In december 2002 I got my masters degree in computer science. You can read my master thesis here (PDF).

I have a minor in information psychology. In Denmark (when I started) one was required to have a minor in something besides computer science. I first tried mathematics, and almost completed the first year, but I wasn't really cut out for that. And as I've always found graphical user interfaces “interesting”, information psychology was a better fit (despite my skepticism about the HCI field). A large part of the education consisted of cognitive psychology, which I really dig.

Starting on my Own (2003)

From the one year I'd been using my Mac, it was clear to me what software it needed. I was using Xcode for Objective-C, and pico for most else. I didn't have many concrete ideas about what I wanted to put in my text editor, but I was not happy with the current situation.

It didn't take many months to come up with some semi-useful text editor. It even had many of the basic features. But after having written it, I didn't really feel that my code was extensible, that is, it was modular, extremely modular in fact, but in my attempt to decouple everything into self-contained modules for which no other part had knowledge, I found that each time I got a new idea, it just didn't fit into my framework, cause that was designed with the knowledge of the past, not the future.

I started from scratch many times, and I started to investigate different programming paradigms (like aspect oriented programming and generic programming) in the search for the holy grail. Suddenly my focus had completely shifted from writing a text editor, to figuring out what was wrong with current programming languages and techniques, and finding a way to fix it.

I also spent a lot of time playing with embedding OpenGL views into the text editing area for cool effects when blocks got folded, having the text visually reflow with proper acceleration/de-acceleration when dragging column selections around a.s.o., as my thinking was, that the main selling point of TextMate should be all the polish I'd add to the text editor, as that was really the only real (easy to spot) difference between text editors. This is quite ironic, since TextMate was released with lots of rough spots and absolutely no polish.

The Job Offer (2004)

In May 2004 I wasn't nearer my goal of writing a new text editor. I had spent the last year only finding problems with whatever scheme I could come up with. Though I had gotten a lot smarter with respect to programming, and I had obtained a very detailed knowledge of the Cocoa framework (and many other aspects of OS X). So it wasn't time wasted.

I got a job offer from Novell, they wanted someone for the XForms Project. The working conditions did sound great, but I wasn't sure I believed in the project. I did however see the strategic value of the project, and the job description did mention representing them in W3C. Not that I'm a web-guy in any way, but at the time I would have liked to be able to affect web standards in (what I of course would see as) a positive way.

I consulted with David Hansson and his only “objection” was, that I couldn't drop TextMate. At the time he was (presumably) using a combination of Xcode and TextEdit for Rails.

The plan was that I wouldn't start (at Novell) before July, and I'd spend June working full-time to get a releasable version of TextMate out, most likely as open source. David would play the role of arbiter, steering me away from things “not worth it” and saying “good enough” to the minimal implementation, curing me of my pessimism and perfectionism (which worked out great).

The Release of TextMate (2004)

Novell never called back regarding the job, so I just continued with TextMate, and the release happened in October 2004.

Since then I've been living “The Life” by working on TextMate full-time (and dealing with user support on a daily basis).

Hopefully I'll be able to do this for many years to come, cause there's certainly a lot things that still needs to be done with TextMate! :)