I'm a PhD student advised by Stephanie Weirich in the Programming Languages Group at the University of Pennsylvania. Among other things, I'm interested in using modular constraint solvers to make programming with powerful type systems friendly, fast, and fruitful.

More generally, I want to build type systems and programming languages that don't merely make sure we meant what we said, but also help us in the first place to say what we mean.




In spring of 2017, I am a teaching assistant at the University of Pennsylvania for CIS 552: Advanced Programming, an interactive course on programming with advanced functional languages (most notably Haskell), taught by Stephanie Weirich.

In autumn of 2016, I was a teaching assistant at the University of Pennsylvania for CIS 500: Software Foundations, the course constructed from the eponymous book, taught by Benjamin Pierce.

In winter of 2015, I was invited by Brent Yorgey to guest-lecture about existential types and purely functional data structures in CSCI 490, his functional programming course at Hendrix College.

In spring of 2015, I designed and taught a full-credit introductory course on the Haskell programming language at Brandeis University to a group of interested students and faculty.

As an undergraduate at Brandeis, I was a teaching assistant and guest lecturer from 2012–2015 for CS 21b, a course based upon the book Structure and Interpretation of Computer Programs, and taught by my undergraduate advisor, Harry Mairson.


Since 2016, I co-organize the University of Pennsylvania's annual Haskell exchange, Hac φ—a gathering of academics, professionals, and hobbyists to share, collaborate, and hack together.

I organized a reading group on the fundamentals of SMT solvers and their applications to programming languages during the spring of 2016.