Research interests

I'm advised by Dave Andersen. In general, I'm interested in systems, and especially the line between software and hardware: operating systems, architecture, firmware, embedded systems, and—to some extent—programming languages.

Personal interests

Outside of school, I love bicycling, board games, hiking, bad puns, cooking, rock climbing, trying to speak French, and probably other things that aren't coming to mind at the moment. That's not to say that I'm particularly good at any of those things, though...

Academic publications


Past teaching

In spring 2016, I TA'd 15-213 Introduction to Computer Systems. Here are the teaching materials I used in my recitation section:

Date Notes Supplemental Resources
Mon 1/25 Integers, Floating Point, and Data Lab shift.s info gcc
C99 standard
Intel Software Developer's Manual
IEEE floating point standard
Mon 2/1 Assembly, Debugging, and Bomb Lab gdb_commands.txt
info gdb
info gas
AMD64 Application Binary Interface
Mon 2/8 Registers, Stacks, and Attack Lab stacksmashers.tar
Mon 2/15 Secure Coding, Common Memory Bugs, and Cache Lab Valgrind Quick Start Guide
git help
Try Git
GitLab for this course
Mon 2/22 Cache, Locality, Blocking, and Cache Lab c_bootcamp.git
Mon 2/29 Optional Midterm Study Session Online practice exam
Old written exams
Mon 3/14 Processes, Signals, I/O, and Shell Lab man 7 signal
man stty
Single UNIX Specification
Mon 3/21 Virtual Memory, Allocators, and malloc() Lab
Mon 3/28 Moar malloc()! malloc_notes.txt
Mon 4/4 Network Programming, Sockets/Proxy Lab Teaser tcp.tar man 7 socket
man 7 ip
man 2 bind
man 2 listen
man 2 accept
man 2 connect
Live coding from other recitation sections
Mon 4/11 Multiple Connections, Concurrency, and Proxy Lab http.tar man pthread_create
man pthread_mutex_init
man getaddrinfo
HTTP/1.1 standard
Mon 4/18 Locking Structures and Proxy Lab locks.tar man pthread_rwlock_init
Mon 4/25 Final Exam Review final_notes.txt

In general, please address questions and concerns related to the course to the staff list at Of course, if your message relates specifically to my recitation section or an interaction we had, or if you're looking to schedule an appointment, by all means send it directly to me.

Past projects

Here are the most notable CS-related things I did prior to starting grad school:

Work on coreboot and the Chrome OS firmware

After college, I returned to Google to intern on the Chrome OS Firmware team, where I worked on integrating support for flash maps—roughly the flash chip equivalent to a partition table—into the coreboot project. Most of my work was in the build and bundling tools, and a large portion of my time was spent writing a compiler for our human-readable format for describing flash layouts. cros code upstream code

Work on the Case Bitcoin wallet

At the end of college, I worked at CryptoLabs (now Case Wallet) as a firmware engineer. I did a lot of work on getting the toolchain and debugger working, wrote the first iteration of the build system, and contributed to the overall design of the firmware and the implementation of several of its components. As far as I know, they haven't started open sourcing yet, but their site states that a release is on the way!

Work on the Android Camera app

After my third year of college, I interned on Google's Android Camera Framework team, where I began the process of migrating the AOSP Camera and Google Camera apps to Lollipop's new camera API. My glue code is present in both apps, which come preinstalled on some phones. code

Work on Chrome Remote Desktop

After my second year of college, I interned on Google's Chrome Remote Desktop team, where my task was to port the VNC-like client to Android. As part of the Chromium project, the code is open source, and I posted instructions for compiling your own copy of the Android app. After additional work and polishing by the rest of the team, it was released as a product, and can be downloaded directly from the Play store. app code backend code

Original reports

If you're looking for nauseating detail, stalk my bio page.

Contact info

Office: GHC–9009