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.