I study how to design programming languages to improve developers’ productivity. In doing so, I developed PLIERS (Coblenz et al., 2020) (Programming Language Iterative Evaluation and Refinement System), which is a method of integrating user-centered design into the process of designing programming languages. I use this approach to create concrete programming languages and then evaluate how the new languages affect people’s ability to write software. For example, I created Obsidian, a new smart contract language that uses a strong type system to rule out critical classes of bugs at compile time. I work with Michael Hicks and Adam Porter.
I spent ten years at Apple, where I was a software engineer on the iWork team, focusing on Numbers. I worked on versions for macOS, iOS, and iCloud. If you’re still using some other spreadsheet app, give Numbers a try!
- OOPSLACan Advanced Type Systems Be Usable? An Empirical Study of Ownership, Assets, and Typestate in ObsidianIn PACMPL Issue OOPSLA 2020 (Distinguished Artifact Award)
- TOPLASObsidian: Typestate and Assets for Safer Blockchain ProgrammingACM Transactions on Programming Languages 2020
- ICSEGlacier: Transitive Class Immutability for JavaIn International Conference on Software Engineering 2017 (16% acceptance rate)