I work as a software engineer at Waymo. Before that, I completed a PhD program in computer science at MIT, where I was advised by Mike Carbin.

There, I built programming languages that allow sound computation with continuous values, such as real numbers as well as more complicated objects like probability distributions and shapes. The language provides sound approximate results that can be made arbitrarily precise, in contrast to floating-point arithmetic, where numerical error makes it difficult to reason about whether the returned answer is anywhere near the true answer. Functional programming, topology, and categorical semantics are key to the language’s programming model. I am also working on sound computable semantics of automatic differentiation (AD).

I’m also interested in probabilistic programming, and more generally, statistical inference and statistical machine learning. With collaborators, I am building a reactive probabilistic programming language for streaming inference problems, that makes it relatively easy to build Rao-Blackwellized particle filters.