I'm a software developer with more than ten years of professional experience. I can adapt easily to a wide variety of technologies, but professionally I have mostly been working as a full-stack web developer with Django, Python, Ruby, Rails, and Javascript.

I enjoy working on personal projects outside of work, many of which are on my GitHub profile. I specialise in programming language design, databases, and functional languages.

I'm currently working for OVO Energy.


Evaluating technologies by their ability to handle change.

When should you use tests and when should you use types? What information and guarantees do we get for our efforts?

The advantages and disadvantages of a keeping data around, including a simple blog application example in PostgreSQL.

All articles...


Pool tracker

Pool Ball Tracker

A fun side project at GoCardless to track pool balls with a GoPro camera. More information in the write-up.

Uses C, C++ and OpenCV.

GoCardless: Pool Ball Tracker

Data Story

Data Story

A runner up in a World Bank competition entry that visualises climate change data provided by the World Bank API. A SpineJS, javascript-heavy web application with a Flask back end.

Worked on in collaboration with Decio Battaglia and Xiaoying Riley of 3rd Wave Media.

YouTube: Data Story

Github Projects

Open Source Projects

  • funscene — WebGL animations.
  • StrictScript — A language experimenting with row-polymorphism.
  • kpm-list — An Emacs buffer list.
  • Django-bulk — Bulk insert/update for Django.
  • Dochi — Concatenative language interpreter.
  • Roots — Python web framework.
  • DRel — Relational algebra for Django.
  • pyhandy — Some handy Python stuff.
  • Convolution — Sound file convolution.

Who I've Worked For

Mobile Vikings

A mobile virtual network operator based in Hasselt, Belgium. I helped them out with some Django.


I was the tenth hire at this YCombinator-backed, London-based payments startup. I mostly worked as a back-end Rails developer, but did a little DevOps with Chef too.


Maplecroft is a small global risk analytics company. I worked as a full stack developer using Django and Javascript. A lot of work with maps.

Switch Call Ltd.

My first job was working for this (now defunct) telecom startup for two years. I produced some websites, SMS and telephone tools in PHP and ASP classic. I made a full recovery.