I study programming languages. I am interested in foundations, both theoretical and practical. My research has focused on strengthening the guarantees on offer at the “easy and automatic” end of the spectrum.
My primary focus is on improving the the POSIX shell and building tools to support its use.
I work in a variety of other 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.