Researcher at RelationalAI
May 2017 - Aug 2018
Jamie is a first principles thinker with a deep understanding of systems and algorithms. He is fearless in the way he approaches problems. Jamie’s research on staged compilation saved our team many person years of effort, and his training and support was crucial to our adoption of Julia. I hope to have the opportunity to work with him again soon.
– Molham Aref, CEO, RelationalAI
RelationalAI is building a relational database, a probabilistic programming language and various integrated machine learning systems. I took on the task of figuring out how to make this project feasible, given the small size of the team and the limited funding time-frame.
I built several prototypes in Julia, demonstrating better performance than existing work with much less implementation effort. To allay concerns about adopting Julia, I:
Wrote a library for zero-copy deserialization without overhead, used for implementing database indexes.
Built a static analysis tool for detecting performance problems in generated Julia code.
Implemented a pattern matching extension to Julia, used for rewrite passes in the compiler.
Surveyed the Julia garbage collector and task system, to allay concerns about parallelism.
As a result RelationalAI adopted Julia for all ongoing development, after which I:
Assisted with Julia training, on-boarding and debugging.
Wrote the current execution engine; a combination of a rewriting system and a simple interpreter.
Developed executable semantics for debugging the language design.
Demonstrated the use of partial evaluation to obtain compiler-like performance from an annotated interpreter, to further reduce development effort (https://youtu.be/BBUrQId0HhQ).
Aug 2016 - Apr 2017
Initially planned as a sabbatical, but later supported by funding from LogicBlox.
Built a declarative language for building GUIs directly on top of a relational database, without any application code, that performs on par with React.
Built a live-coding interpreter and editor plugin for a relational language, capable of executing code as it is typed whilst still being resilient to typos, bugs and infinite loops.
CTO at Eve
Nov 2013 - Jan 2016
Jamie brought a degree of rigor and theoretical knowledge that took the company to places we never could have gone otherwise. From exploring the implications of language semantics to building high performance database engines, he didn’t just help us get things done, he helped us get them done right. As a result, we were able to explore in weeks what could’ve easily taken years
– Chris Granger, CEO, Eve
Together with the CEO built a language and IDE which secured a $2.3m seed round from Andreessen Horowitz.
Created a live relational language based on temporal-logic extensions of datalog.
Built relational databases, query planners and bootstrapped compilers for a series of prototypes (demonstrated in https://youtu.be/VZQoAKJPbh8).
Wrote the company research blog, which saw ~100k views/year.
Spoke at the MIT Media Lab.
Invited as a resident at the Recurse Center.
Helped release Light Table as an open-source project.
Sat on the program committee for the Future of Programming Workshop.
May 2009 – Nov 2013
Jamie took over the latexsearch engine, our most technically challenging project to date, and turned it from a foundering prototype into a successful service with over 200k users. His engine required only one small server and ran uninterrupted for over 5 years with no errors.
– Brian Bishop, VP Platform Development, Springer
Highlighted commercial projects:
Built a LaTeX aware search engine to power latexsearch.com. Covers the entire Springer library of more than 8m LaTeX equations. Searches by tree-edit distance on compressed syntax trees, using suffix arrays as a first-pass filter.
Built a prototype replacement for the core trading engine at the Smarkets betting exchange: 10x less code, 40x better throughput, 10x better 99% latency.
Provided item-item article recommendations for Springer users based on ~600m past downloads. Uses locality-sensitive hashing and external sorting to run on a single low-powered server.
Sabbatical at the Recurse Centre
Sep 2012 - Dec 2012
Extended the core.logic CLP solver with fair conjunction and a parallel solver.
Created a clojure DSL for pattern matching and parsing using PEGs.
Built a multi-user clojure REPL for collaborative live-coding.
MSc Computer Science at Oxford University
Oct 2008 – Sep 2010
Studied randomized 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 at University of Cambridge
Oct 2005 – July 2008
- Specialized in real analysis, discrete maths, probability and stochastic systems.