I am a computer scientist. My research combines cognitive psychology and programming language theory to understand how people program, and to design better tools for programmers.
I am currently a postdoc at Brown University advised by Shriram Krishnamurthi, working on making Rust easier to learn. I completed my Ph.D. at Stanford University advised by Pat Hanrahan and Maneesh Agrawala. I will be on the academic job market in the 2023-24 cycle.
In my research I build theories and systems about programming. A theory tries to understand a concept in a simplified setting where its properties can be identified via logical or statistical analysis. A system applies theory to a real-world setting where unexpected constraints and engineering concerns influence the theory's application.
I developed an algorithm for using ownership types to statically / modularly analyze information flow, and proved its soundness as noninterference [1].
I showed that working memory limits a person's ability to remember the value of variables while program tracing [3].
I articulated a design space for documentation generators based on a cognitive task analysis of how developers search through APIs [6].
I demonstrated that machine learning models can classify a program's high-level structure to a high degree of accuracy [4].
I built Flowistry, an information flow analyzer for Rust, to help programmers identify code unrelated to their current task [1].
I redesigned CS 242, a graduate-level course on programming languages, to help students better understand how PL theory works in the real world [11].
I extended Rustdoc to automatically find examples for documented functions, to help programmers find examples when learning a new API.
I love workshops! I enjoy discussing my half-baked or weirdly-niche ideas with other researchers. PLATEAU and SNAPL were a big part of the reason I got into PL/HCI research.
AI Systems @ SOSP 2019.
Here are some interesting ideas that I haven't had time to keep exploring.
Vec
or HashMap
. See Gradual Programming,
Rust: The New LLVMand willcrichton/lia for further inspiration.