I've been involved with a number of programming projects in my spare time. I've released some projects under an open source license, I've contributed to existing open source projects, and I have tons of projects which I haven't released in any form at all (although they often come in quite handy).

This page catalogues my projects and contributions to open source.

Project List

  • Bochs - an open-source x86 PC emulator
  • OCamlPAM - a wrapper library for PAM in OCaml
  • SubSpace - a massively multiplayer online action game


Everyone has faced the problem of remembering tons of passwords. It's not enough for the browser to remember passwords; I use many non-http services that need password authentication. One solution is to just reuse a password or set of passwords (to satisfy those ridiculous and completely arbitrary password complexity rules). If you think your password has been compromised, though, you'll have to go to every single service that used that password and change it.

The problem is that each service has a different idea of my identity - they don't know I'm the same person. Ideally, we'd have a standard single sign-on system for all services and just a single identity with trust profiles for each service (so that a service I'm not 100% sure about can't access information that I'm not comfortable sharing). OpenID, is a start but it's only now gaining popularity and the majors (Microsoft, Google, Yahoo) haven't deployed it yet.

I looked around for single sign-on systems and PAM looked like the right sort of thing. With PAM, I can authenticate against a single (shared or distributed) database and even change the method if necessary to bring OpenID or any other standard into the mix. It has some other really nice features too so I decided to use PAM any time I needed user authentication in any of my projects.

Since I'd been writing OCaml code and there weren't any bindings in OCaml for PAM, I went and built it myself. With this library now available, I hope there's one less reason not to use PAM.

Go to the project page


SubSpace is a massively multiplayer online game published by Virgin Interactive Entertainment. I've been involved with SubSpace in various ways over the years and have made significant contributions to its developer community. My goal was to create a fully-compatible clone of SubSpace for Linux and MacOS X. Most of my initial efforts were focused on reverse-engineering the game since virtually no information about its inner workings were public when I started developing my client.

This project page contains the source code to tools I had developed to assist me in my reversing efforts and documents that give insights into SubSpace's inner workings.

Go to the project page