About me
I’m a computer scientist working at the intersection of programming languages, distributed systems, and software verification, together with my students and colleagues in the LSD Lab and collaborators around the world. I started this blog in 2013, during my fifth year of grad school.
Some history in reverse chronological order: Before I joined UC Santa Cruz as an assistant professor, I spent a few years as a research scientist at Intel Labs, where I worked on the River Trail and ParallelAccelerator projects and learned about neural network verification. In 2015, I completed my Ph.D. on LVars at Indiana University, where I was a member of the Programming Languages Group. In 2014, I co-founded !!Con, a conference about the joy, excitement, and surprise of computing. Starting in 2013, I was part of the residency program at the Recurse Center. During the summers of 2011 and 2012, I had a lot of fun helping bring the Rust programming language to its first several releases as an intern at Mozilla Research. Before starting grad school in 2008, I worked in industry for a few years, and before that, I got my BA in Computer Science and Music from Grinnell College in 2004.
Starting points
There are 168 posts on this blog. Here are some favorites:
- An example run of a matrix-based causal unicast protocol, August 2022
- CAREER: Building Reliable Distributed Systems with Refinement Types, January 2022
- How not to email prospective grad school advisors, November 2020
- Course retrospective: SMT Solving and Solver-Aided Systems, September 2020
- My students made zines, and so can you(rs)!, June 2019
- An example run of the Chandy-Lamport snapshot algorithm, April 2019
- Course retrospective: Languages and Abstractions for Distributed Programming, December 2018
- Understanding the regression line with standard units, August 2018
- You don’t need a 4.0 to go to grad school, July 2018
- Back to school, May 2018
- Four kinds of talk proposals that get rejected from !!Con, March 2018
- The optimization that wasn’t, September 2017
- My first fifteen compilers, July 2017
- Proving that safety-critical neural networks do what they’re supposed to, part 1 and part 2, May 2017
- Scaling !!Con, March 2017
- An economics analogy for why adversarial examples work, November 2016
- ‘Experiencing computing viscerally’: my PG Podcast interview about !!Con, August 2016
- Getting into a Ph.D. program without previous research experience, July 2016
- The first ten minutes of my JuliaCon talk, June 2016
- Why review papers?, January 2016
- Refactoring as a way to understand code, December 2015
- What’s the difference between LVars and CRDTs?, May 2015
- Say “experts” instead of “smart people”, April 2015
- Browser extensions are kernel modules for browsers, February 2015
- To OpenCL from JavaScript via js-ctypes, or, how we rewrote the River Trail Firefox extension, February 2015
- What I do all day, as told to a first-year CS student, December 2014
- Yet another blog post about how parallelism is not concurrency, November 2014
- Your next conference should have real-time captioning, May 2014
- Rejections, April 2014
- The LVar that wasn’t, December 2013
- What’s the deal with LVars and CRDTs?, October 2013
- Default methods and negative diffstats, August 2013
- FizzBuzz revisited, March 2013
I wrote about my experiences as a researcher and student on LiveJournal for quite a while before finally starting a Grown-Up Blog™. To illustrate what my background is like and what laid the groundwork for this blog, here are a few posts from those ancient times:
- Why I study computer science, December 2012
- A sixty-second talk about my research, November 2012
- BREAKING: What the second half of grad school will be like, February 2012
- What the first half of grad school was like, September 2011
- “What the hell is water?”, July 2009
Thanks for reading!