Software developer and consultant. I find simple solutions to hard problems.

I focus on systems engineering and infrastructure. I have a strong background in mathematics and computer science.

I’m interested in the use of staged compilation, domain-specific languages and data-centric programming to reduce incidental complexity in software, especially distributed systems and p2p networks.


Director of Scattered Thoughts Ltd

Oct 2011 – today

Provided item-item article recommendations for Springer users based on ~600m past downloads.

Built a durable, low-latency, replicated event sourcing framework for the Smarkets exchange.

Performed extensive testing and benchmarking for the Smarkets exchange.

Built a download analytics tool for Springer.

May 2009 – Sep 2010 (part-time)

Built texsearch: a LaTeX aware search engine featuring approximate matching on LaTeX syntax trees for use in Springer’s Currently in production indexing a corpus of ~3.5m LaTeX equations.

Built retex: a LaTeX captcha modelled after recaptcha.

Added XMPP and Wordpress connectors to Locker.

Intern at Jane Street Capital

Jun 2012 – Aug 2012

Developed classification algorithms for a large financial dataset.

Developed a denotational semantics and accompanying tests for Nile.

Built trading bots for competitions on a mock exchange.

Extended travelling

Sep 2010 – Sep 2011

Built erl-telehash, a p2p overlay providing NAT traversal, addressing and pubsub.

Intern at Smarkets

Jul 2010 – Sep 2010

Built and documented the Smarkets public API.

Replaced the core transaction engine.

Researched algorithms for automated market-making.

Google Summer of Code

May 2008 – Aug 2008

GMap: Efficient maps using generalised tries.


Hacker School

Oct 2012 – Dec 2012

Built strucjure: a clojure DSL for pattern matching and parsing using PEGs.

Began droplet: a clojure DSL for specifying distributed systems, based on the bloom language.

Built concerto: a multi-user clojure REPL aimed at collaborative live-coding.

Extended core.logic with fair conjunction and a parallel solver.

MSc Computer Science, Oxford University

Oct 2008 – Sep 2010

Studied randomised algorithms, probabilistic model checking, logics of multi-agent information flow, machine learning and intelligent systems.

Dissertation: Design and analysis of a gossip overlay.

BA Mathematics, University of Cambridge

Oct 2005 – July 2008

Transferred from computer science.

Specialised in real analysis, discrete maths, probability and stochastic systems.