About Me

I am a software engineer at Curriculum Associates. I am particularly interested in compilers and programming languages. In my free time, I enjoy composing/playing music and reading Nietzsche!




An OCaml library to aid users in writing binary files.This library is particularly useful for bytecode compilers when the user needs to convert decimals to binary sequences of certain lengths and endianness.


An OCaml library that provides a simple interface for reading user input. This project is particularly useful for REPLs. The user may specifiy brackets that must be closed before accepting input.

Racket Compiler

A compiler for a statically typed language that produces x86 assembly. Features include: hygienic macros, garbage collection, register allocation, functions, closures, parametric polymorphism, generalized algebraic data types, vectors, arrays, control flow, etc...

JIT Compiler

A byte-code compiler for a small lazy language and its corresponding virtual machine. The VM is based on a CEK machine and has a stop and copy garbage collector included. The compiler is written in OCaml and the VM is written in C++.

Type Inference

An implementation of Algorithm W, which performs type inference on an ML language. This algorithm generalizes functions without explicit parameterization. Implemented in OCaml.

Scheme Interpreter

An implementation of a Scheme interpreter, as described in Write Yourself a Scheme. Implemented in Haskell.