Recent Publications

Programming efficient distributed, concurrent systems requires new abstractions that go beyond traditional sequential programming. But …

Cloud computing services often replicate data and may require ways to coordinate distributed actions. Here we present Derecho, a …

Programming concurrent, distributed systems is hard—especially when these systems mutate shared, persistent state replicated at …

Awards

Awards and fellowships

NDSEG Fellowship (2015)

NSF GRFP Honorable Mention (2015)

Projects

*

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 reign in weak consistency and capture replication and concurrency, all while constructively avoiding races and allowing safe, loosely-synchronized replication.

Avoiding communication while building a high-throughput, RDMA-based distributed framework for replicated systems

Technical Reports

The coming generation of Internet-of-Things (IoT) applications will process massive amounts of incoming data while supporting data …

Recent & Upcoming Talks

Presenting MixT, a domain-specific programming language for mixed-consistency transactions

Recent Posts

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

Teaching

Courses I’ve taught or developed

CS 2043: Unix Tools and Systems

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.