As an undergraduate I studied Computing and Artificial Intelligence in the School of Cognitive and Computing Sciences, University of Sussex. I did a research masters in Philosophy at University of Bristol, specialising in philosophy of science and philosophy of mind. My PhD in programming languages was supervised by Paul Levy at University of Birmingham. The last two years of my PhD were spent at Max Planck Institute for Software Systems, working with Umut Acar. I also did a postdoc there with Deepak Garg.

Before becoming a researcher I worked as a programmer. For eight years I was involved with a company called Ergnosis, which I co-founded with Russ Freeman. We developed a micro-refactoring tool called domain/j. It was a nice idea but we got bogged down in building new runtime infrastructure. Now I think of that infrastructure-building as “PL design”.

I learnt to program on the Commodore PET, ZX-81, VIC-20, Commodore 64, Apricot, ZX Spectrum and BBC Micro. I have an old blog with some articles about programming languages and tools.