I'm a software engineer/researcher on the PROSE Team at Microsoft, where I build features based on program synthesis into products that you might know and use.

Projects

A chronological list of some of the larger (and publicly-visible) projects I've worked on so far:
  • Blue Pencil: Synthesizing Edit Suggestions

    Tired of manually doing the same code changes over and over again? Blue Pencil is a Visual Studio extension that watches as you type, then recommends and applies similar changes if you do them in the future. You'll find it in Visual Studio 2019, where it's called IntelliCode Suggestions.

  • Parsimony: Synthesizing Parsers by Example

    Writing parsers is tricky and full of subtle gotchas. Parsimony is a visual development environment for writing parsers that guides you in the right direction. You give examples of text that should parse, and Parsimony suggests the correct rules to do the job. At every incremental step, you're provided with rich interactive visualizations to actually grok what's going on. Parsify (also linked) is the spiritual predecessor of Parsimony.

  • VTV: Verilog Translation Validator

    Errors in hardware can be expensive to fix, so engineers need assurances that the tools they use to build hardware are trustworthy. VTV is a validator that checks whether a hardware compiler actually did its job correctly in lowering a C specification to a hardware-level Verilog implementation.

  • Test Amplification for GPU Kernel Verification

    GPU kernels are massively parallel and subject to all the pain and headache of implementing parallel programs: data races corrupt results, and nondeterminism is tricky to debug. This paper shows how to verify race-freedom and determinism in CUDA kernels by decomposing the problem into two phases: dynamic instrumentation to check one test execution + static information flow to generalize this to all executions.

Publications

A list of the academic publications I've written, which covers the projects above and a bit more:

Background

During graduate school, I studied ways to help software developers build complex software correctly. My dissertation work culminated in Parsimony, a development environment for language design whose central design principle is to guide users toward robust parser implementations through interactive visual feedback to user-provided examples.

I am an alumnus of the Programming Systems Group at UC San Diego, where I spent several intense and exhilarating years before graduating with a PhD in Computer Science in 2017.

I previously worked at Intel as a circuit design engineer implementing components for L3 caches on two different Itanium microprocessors.

My bachelor's degree is in Electrical and Computer Engineering from Cornell University.