Hi! I’m a postdoc at University of California, Berkeley RISE, working under Joe Hellerstein. In 2020 I graduated with a PhD in programming languages and systems from Cornell University, advised by Andrew Myers. My work focuses on programming languages and abstractions for wide-area or large-scale distributed systems; really anything where the round-trip latency for communication is way too high. I’m working on programming the cloud with Joe Hellerstein, programming replicated, distributed systems with Andrew Myers, and have also worked extensively with Ken Birman and the Derecho group.
PhD in Programming Languages and Systems, 2020
Advised by: Andrew C. Myers
MS in Computer Science, 2017
ScB in Computer Science and Music, 2013
Gallifrey is a new programming language for distributed wide-area applications. Gallifrey programs share state via replication, granting fast access to data without introducing mandatory synchronization points, all while maintaining sequential consistency by default. Gallifrey aims to be easy-to-use, requiring a minimal annotation overhead atop an otherwise Java-like language.
Distributed Languages frequently either fail to capture replication, or insist in high-latency lockstep state machine replication. Storage systems which avoid both pitfalls often do so by weakening consistency. We try to rein in weak consistency and capture replication and concurrency, all while constructively avoiding races and allowing safe, loosely-synchronized replication.
Derecho is a new framework for building replicated, fault-tolerant distributed systems within a datacenter. It provides a best-in-class consistent multicast abstraction, and is easy to use via user-defined replicated objects and RPC.
The public clouds are the most powerful general-purpose computers ever assembled, allowing individuals to rent their power at unlimited scale, on demand. This makes “the cloud” the biggest game-changer in computing access since the adoption of the PDP-11 minicomputer in the early 1970s. However, unlike the advent of UNIX and C for PDP-11, an organic programming model has yet to emerge for the cloud. History suggests that the real innovation on new platforms comes when the right programming model is introduced.
The challenge of helping developers program the cloud spans areas: Programming Languages, Distributed Systems, Databases, and Operating Systems, to name a few. In this seminar we will read research papers together, and bootstrap new efforts in this area.
UNIX and UNIX-like systems are increasingly being used on personal computers, mobile phones, web servers, and many other systems. They represent a wonderful family of programming environments useful both to computer scientists and to people in many other fields, such as computational biology and computational linguistics, in which data is naturally represented by strings. This course takes students from shell basics and piping, to regular-expression processing tools, to shell scripting and Python. Other topics to be covered include handling concurrent and remote resources, manipulating streams and files, and managing software installations.
Compilers are a subject fundamental to Computer Science, helping bridge the gap between a program’s abstract semantics and the target machine’s capabilities. In this course, we follow Andrew Appel’s curriculum to design and build a compiler from scratch, in a radically collaborative and open-ended environment.