I'm a software engineer at Samsara,
where we are developing an end-to-end networked sensing service that enables
businesses to easily understand their physical systems and to respond to
To do this, we are developing the sensor hardware, embedded software, and
distributed storage and analysis systems behind the service and managing
these for our customers.
When not building sensor networks, I enjoy running, rock climbing, and backpacking; spouts of reading; photography; and working on cocoa farms.
Previously, I helped build the Spanner distributed database at Google, where I helped the Spanner team develop Spanner from prototype to core infrastructure service and was the primary engineer behind the Spanner backup and restore service.
I completed my Ph.D. in
group at UCLA.
My focus was on storage system consistency, performance, and usability.
In addition to my focus, my research interests span systems, programming
languages, and theory.
I was also a member of
and the ACM
and TAed CS 111
(undergrad operating systems) for 2005–2006.
My undergrad days were at UVa, where I frolicked and schemed with friends in Theta Tau, ACM, Math Club, Brown, Honor, and the computer science and math departments. I've helped lasso computer science problems and systems while at Samsara, Google (Wikipedia and Wired on Spanner), UCLA, UVa, MIT, Microsoft Research, VMware, Appian, Microsoft, Dynetics, and the US Army AMRDEC. I'm originally from Huntsville, Alabama.
Previous projects and software
- BPFS. A file system that provides dramatically stronger durability and consistency guarantees using byte-addressable, persistent memory – in particular, phase change memory – and careful design.
- Featherstitch. A storage system built around explicit disk write dependency tracking. (Also, a fun reason to play with large graphs in operating system kernels.)
- Libprefetch. New file system prefetching techniques and interface that increase many nonsequential disk read throughputs by 5–20x.
- scord. Reduces the disk space used by a subversion working copy with large and/or many files.
- mswatch. Keeps two mailboxes synchronized more efficiently and with shorter delays than periodically synchronizing the two mailboxes over IMAP.
- JPred. Practical (modular and typesafe) predicate dispatch in Java.
- Windows CE UPnP Audio/Video Framework. C++ framework for creating devices that implement the Universal Plug and Play Audio/Video Device Control Protocol (UPnP AV DCP).
- Newton site. (As in, 1997.)
Spanner: Google's Globally-Distributed Database
(OSDI 2012, Best paper)
- James C. Corbett, Jeffrey Dean, Mike Epstein, Andrew Fikes, Christopher Frost, JJ Furman, Sanjay Ghemawat, Andrey Gubarev, Christopher Heiser, Peter Hochschild, Wilson Hsieh, Sebastian Kanthak, Eugene Kogan, Hongyi Li, Alexander Lloyd, Sergey Melnik, David Mwaura, David Nagle, Sean Quinlan, Rajesh Rao, Lindsay Rolig, Yasushi Saito, Michal Szymaniak, Christopher Taylor, Ruth Wang, and Dale Woodford
- Improving File System Consistency and Durability with Patches and BPFS (Ph.D. dissertation, 2010)
- Better I/O Through Byte-Addressable, Persistent Memory (SOSP 2009)
- Reducing Seek Overhead with Application-Directed Prefetching (USENIX 2009)
- Expressive and Modular Predicate Dispatch for Java (TOPLAS, February 2009)
- Generalized File System Dependencies (SOSP 2007, Audience choice awardee)
- Modularly Typesafe Interface Dispatch in JPred (FOOL/WOOD 2006)