Projects
Generative UI
Research on generating code for user interfaces.
Xcode Predictive Code Completion
Predictive code completion engine in Xcode that runs locally on Apple silicon.
Blue Pencil: Synthesizing Edit Suggestions
Tired of manually doing the same code edits 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. It's 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 has correctly lowered 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
Background
I received my PhD in Computer Science from UC San Diego, where I was a member of the Programming Systems Group.
My graduate work focused on developer tools and techniques for building complex software correctly. This work culminated in Parsimony, a development environment for language design that guides users toward robust parser implementations through interactive visual feedback to user-provided examples.
I previously worked at Intel as a microprocessor design engineer, where I implemented components for L3 caches on two different Itanium microprocessors.
I received my bachelor degree in Electrical and Computer Engineering from Cornell University.
