I studied Computer Science at the University of Southampton, graduating with a 1st in 2000 and going on to get a PhD in 2004. I then worked there as a research engineer until 2013, building proof-of-concept systems in collaboration with industry. I took a career break in 2013, learning OCaml and taking evening classes in Philosophy.

After a brief but enjoyable few months freelancing, I became a researcher at Cambridge University, building Mirage unikernels. We later formed a start-up (Unikernel Systems Ltd) to continue this work, which was soon acquired by Docker.

Here is a somewhat-random selection from the projects I’ve worked on. All the software described here is Open Source.

CueKeeper

In 2015, I created CueKeeper, a GTD-based action tracker written in OCaml and compiled to Javascript using js_of_ocaml. It uses Irmin to store its data structures in a Git-like repository backed by IndexedDB in your browser, providing history, undo and the ability to keep tabs in sync automatically, without a server

Mirage on ARM

Tracing and profiling

In 2014, to help understand how Mirage worked and find performance problems, I instrumented the Lwt promise/threading library to generate trace files and wrote an interactive visualiser for the results:

0install.net

I created the 0install project in 2003 to provide a secure, distributed, cross-platform package manager. It is now available from the repositories of all major Linux distributions and has been ported to Windows, OS X and the BSDs.

The SERSCIS Access Modeller

In 2011 I wrote the SERSCIS Access Modeller (SAM). SAM takes a model of a system (e.g. a set of objects within a computer program or a set of machines on a network) and attempts to verify certain security properties about the system, by exploring all the ways access can propagate through the system. This can be used to prove that a design is actually secure (within the model’s assumptions).

The freedesktop.org Shared MIME Database

In 2002 I created the shared-mime-info system to unify the then-separate MIME databases used by the GNOME, KDE, XFCE and ROX desktops. It has been adopted by all of them and is now also used by LXDE and EDE. This package is installed by default on all mainstream desktop Linux systems. I am no longer involved with it, however.

The ROX desktop

In 1999 I created the ROX desktop, an alternative desktop environment based on user-interface concepts from RISC OS. Though now largely defunct, some people still use parts of it (including me!):

Delight

In 2008 I created an experimental language called Delight. It was based on D, but had a clever new (as I thought) security model. However, I then discovered that I was reinventing E (poorly), so I abandoned Delight and became an E developer instead, improving its performance, fixing some race conditions in its concurrency support and contributing an SQL-injection-attack-free database API to the standard library.

Open Source software developer, with interests in distributed systems and security. [ more ]