About
I’m a software engineer at Joyent in San Francisco. This blog is where I write about my work, side projects outside of work, and the business and process of making software. While most of the content describes my work (first at Sun and now Joyent) and why I believe in it, my goal is to share technical ideas, not advertise for my company.
I like writing rock-solid code, especially at the system’s bedrock. So I love C, Javascript, and Unix. And having the right tools for the job.
Joyent
I joined Joyent in November, 2010 as the lead of the new Introspection team, which builds tools for observing systems in the cloud. Our Cloud Analytics tool seeks to collect and present real-time and historical performance data for distributed systems and applications for analysis by application developers and cloud operators. As part of this project, I developed the overall distributed system architecture for CA and many of the core facilities including inter-service communication using AMQP, logging, post-mortem debugging, overall system control, data aggregation, and data collection (instrumentation). Of course, we’re standing on the giants of Solaris, DTrace, and Node.js.
Fishworks (Sun/Oracle)
I joined the Fishworks engineering team in July, 2007 (fresh out of college) to work on what became the Sun Storage 7000 Unified Storage appliance, now called the Sun ZFS Storage Appliance. The project sought to deliver a low-cost but highly reliable, high-performance enterprise network storage (NAS) appliance based on Solaris, as well as an appliance kit for quickly developing other types of appliances that need common features like a web interface, streamlined configuration, fault management, alerts, remote support, and advanced monitoring tools. The product has since incorporated many additional features like direct attached storage and certifications for important enterprise applications like VMware. My work on the team spanned a variety of areas including:
- remote replication: zfs-based replication of user data and configuration to other systems for disaster recovery and data distribution
- design of Flash devices (and their firmware), specifically how they interact with the rest of the system, with particular focus on performance and fault management
- phone home features
- RAS (reliability, availability, serviceability) features, including support bundles (but not upgrade — I just blogged about that)
- alerting and general fault management
- HTTP/WebDAV protocol integration
- integration with the Solaris NDMP server for participation in remotely-managed backups
- automated testing infrastructure
- general enhancements and bug fixes in the Javascript-based web interface, our native system management daemon, system libraries, and the OS kernel
I can hardly even begin to describe how much I learned from my experience at Fishworks, both technically and personally.
Internships
In 2005 I interned at Google with the AdWords Frontend Team, working on the email system and automated testing. In 2006 I interned at Sun with the Solaris kernel team, where I worked on event ports and signals, contributing the original event port implementation for libevent.
Brown
I graduated from Brown University with a degree in computer science in May, 2007. While at Brown I worked on several projects:
- Mocha: an “unofficial” search engine and browser for Brown’s online course catalog, still used by over 5000 students each semester. (We still maintain Mocha today.)
- Hogs: a networked multi-player hovercraft shoot-’em-up game. A CS32 project with Adam Cath, Dan Leventhal, and Bill Pijewski. Hogs was later used as the basis for a project in CS166, a class on security.
- CS17/CS18: I was first an undergraduate TA and then head TA for this two-semester intro sequence that introduces first-year CS students to programming, software engineering, algorithms, and analysis using a mix of Scheme, Ocaml, and Java.
- CS167/9: I was an undergraduate TA for the operating systems class and additional lab component, in which students write their own complete operating system called Weenix.
- Lab consultant
- Meta-TA: helped run the department’s TA program
- Weenix-on-Xen: independent study porting the CS169 Weenix operating system from running on a simulator to running as a Xen guest OS
Other interests
Last updated March, 2011.

