(As of August 2016.)
- PhD in Computer Science
University of Birmingham, Birmingham, UK
Carnegie Mellon University, Pittsburgh
Advisor: Neelakantan Krishnaswami
- BS in Computer Science
Carnegie Mellon University, Pittsburgh, PA
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.
- University of Birmingham, UK,
Currently 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,
At 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,
PhD student and undergraduate researcher
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.
Summer 2011 and 2012
Software Engineering Intern
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.
Software Engineer in Test Intern
Developed 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.