Programming Languages

Bringing Fearless Concurrency to the Masses

We're building new languages for safely programming with shared mutable objects. In our work, threads can freely exchange mutable objects and manipulate state concurrently---with no possibility of a destructive data race.

Hydro: Software that Runs at Every Scale

The Hydro Project at UC Berkeley is developing cloud-native programming models that allow anyone to develop scalable and reslilient distributed applications that take full advantage of the elasticity of cloud infrastructure. Our research spans across databases, distributed systems, and programming languages to deliver a modern, end-to-end stack for cloud programming.

My Dissertation is Now Available!

My dissertation is now available [here](/files/thesis.pdf)

Mixing Consistency with MixT: Technical Report Available!

Presenting MixT, our language for sanely mixing distinct consistency levels within a single transaction. Now in Tech Report form!

Gallifrey: a New Language for Distributed Programming

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.

Programming Replicated, Distributed Systems

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: Programming the Datacenter

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.