I study programming languages. My research has focused on strengthening the guarantees on offer at the “easy and automatic” end of the spectrum. I primarily work in two areas: contracts, a flexible form of runtime verification for higher-order programming languages; and software-defined networking, a recent development that allows for straightforward centralized control of computer networks. I'm just starting work on formalizing the POSIX shell.
I've also been building tools that apply topic models to the PL literature.