Résumé
(As of November 2023. This isn't an academic CV; email me if you need one.)
Education
- PhD in Computer Science
University of Birmingham, Birmingham, UK
Carnegie Mellon University, Pittsburgh
2012–2022
Advised by Neel Krishnaswami
Thesis: Deconstructing Datalog - BS in Computer Science
Carnegie Mellon University, Pittsburgh, PA
2008–2012
QPA: 3.46 out of 4
Areas of expertise
Systems programming: I've worked on database engines, ahead-of-time and JIT compilers, operating system kernels, and garbage collectors.
Programming languages are my research area and hobby. If you're designing or implementing a programming language, I can help.
I know many languages and I learn new ones quickly. I've worked professionally in Python, C, C++, and Julia; I regularly use Haskell, Racket, OCaml, Javascript, and Datalog; and I'm familiar with Rust, Java, x86(-64) assembly, Common Lisp, Scheme, Clojure, Prolog, Agda, and more.
Experience
- RelationalAI,
2022–present
Database Systems EngineerI currently work on efficient on-demand incremental view maintenance for the Rel programming language.
- University of Birmingham, UK,
2016–2022
PhD studentDesigned and implemented Datafun, a functional query language inspired by Datalog. The key ideas are (1) set comprehensions are more general than relational algebra, and (2) enforcing monotonicity with types lets us write declarative recursive queries.
- Recurse Center,
Summer 2014
BatchlingAt Recurse Center I created Moxy, a syntactically extensible language. The key idea is that monoids structure extensibility. I presented at IFL 2014 about Moxy and the theory behind it. This blog post provides some background.
- Carnegie Mellon University,
2011–2014
PhD student and undergraduate researcherWorked with Frank Pfenning and Limin Jia to extend blame semantics to concurrent systems. Blame semantics allow determining what part of a program is at fault for a runtime contract violation.
Worked with Umut Acar on a novel garbage collection algorithm designed to exploit the spatial locality inherent in fork-join parallelism.
Undergraduate senior thesis on a type theory and formal semantics for libraries and linking, with a proof-of-concept implementation. Advised by Karl Crary.
- RethinkDB,
Summer 2011 and 2012
Software Engineering InternIntegrated javascript evaluation into query executor.
Helped design and implement a novel query language incorporating ideas from functional programming such as streams and map/reduce.
Improved buffer cache performance by allowing garbage collection to be concurrent with write operations.
Wrote and debugged high-performance, high-concurrency C++ code.
- Carnegie Mellon University,
Spring & Fall 2011, Spring 2012
Teaching Assistant for 15-150 “Functional Programming”TA during the course’s first-ever semester.
Implemented course infrastructure, including autograder and parallel sequence library.
Co-authored homeworks and labs with professor and other TAs.
- Google,
Summer 2010
Software Engineer in Test InternDeveloped a tool to visualize changes in Google Web Toolkit compilation results due to changes in source code.
Relevant course work
15-410: Operating System Design & Implementation (A)
Designed & implemented various system-level projects, most notably a threading library and a multitasking, preemptible kernel.
15-411: Compiler Design & Implementation (B)
Worked with a partner to design & implement a compiler, written in Haskell, for a safe C-like language, targeting both x86-64 assembly and LLVM.
15-814: Types and Programming Languages (A)
Formal study of programming language design from a type-theoretic standpoint. Covers λ-calculi, concurrency, free and scoped references, module systems and higher kinds, etc.
15-417: Higher-order Typed Compilation (B)
Wrote a multi-stage type-directed compiler and runtime for a high-level strongly-typed functional source language (subset of SML), targeting C.