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 systems, especially distributed systems and p2p networks.

Employment

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 latexsearch.com. 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.

Education

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

Sep 2005 - July 2008

Transferred from computer science.

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