Résumé
(As of August 2016.)
Education
- PhD in Computer Science
University of Birmingham, Birmingham, UK
Carnegie Mellon University, Pittsburgh
2012–present
Advisor: Neelakantan Krishnaswami - 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, JIT (and ahead-of-time) 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'm fluent in C, C++, Python, Haskell, Racket (or Scheme), and SML; capable with Javascript, Clojure, Rust, x86(-64) assembly, OCaml, Common Lisp, Prolog, Java, Agda, and Twelf.
Experience
- University of Birmingham, UK,
2016–present
PhD studentCurrently working on Datafun, a functional query language inspired by Datalog. The key ideas are: 1. set comprehensions are more general than relational algebra; 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.