I am a Senior Principal Engineer at Amazon and an Adjunct Professor in the Department of Computer Science at the University of British Columbia.
Note: This page is really out of date. I've updated the top to reflect my move to Amazon, but the rest of the content here hasn't been updated since about 2016. I can still be reached at the ubc email address below, and am not actively recruiting graduate students at this time.
Before joining Amazon, I was an Associate Professor at UBC. I was a co-founder and CTO at Coho Data, a Vancouver-based enterprise storage company. Before that I was the Technical Director for Storage and Emerging Technologies in the Virtualization Management Division of Citrix Systems, which I joined through the acquisition of XenSource.
I completed my PhD in the Networks and Operating Systems Group of the Computer Laboratory at the University of Cambridge, under the careful supervision of Steven Hand. My doctoral research investigated the virtualization and extensibility of I/O devices. I was one of the original developers of the Xen Virtual Machine Monitor.
Prior to my doctoral degree, I worked at both AT&T Research (with Sandy Fraser) and Nortel Networks for periods of about a year each. In the summer of 2003, I was the first ever intern at Intel Research Cambridge, where I investigated systems applications of Intel's Hyperthreading technology.
I am interested in pretty much everything to do with computer systems software. In recent years, this has included things like virtualization, device driver stability, distributed storage, migrating running computers, security (specifically DDoS prevention, and intrusion prevention), and high-availability. My work at UBC is currently supported through generous grants from Intel Research, NSERC, Network Appliance and the Communications Security Establishment.
Some of the current projects that my students and I are working on are:
Recording and analyzing whole-system execution. We have built a system called Tralfamadore that records everything a computer does as it executes, and then maps this behaviour back on to program source. We are exploring how the system can be used to make program analysis more accessible to mere mortals, and how software developers might benefit from "closing the loop" between writing code and running it in production.
High Availability and Disaster Tolerance. Our work on Remus demonstrated that unmodified software could be made to survive harware failures by continuously replicating its state to a second physical host. We are currently improving Remus to provide better support for database servers, and to allow wide-area replication between servers at UBC and Thompson River University in Kamloops (about 350km).
Secure Hypervisors. With researchers at Citrix Systems and the National Security Agency, we are developing techniques to build a more secure, open-source hypervisor. Starting with the current Xen virtual machine monitor, we have been exploring architectural approaches to reduce or eliminate shared dependencies between VMs in multi-tennancy environments. We're also exploring how to reduce opportunities to attack virtualized environments in some pretty neat ways.
Storage for virtualized environments. We're trying to make storage more useful, easier to manage, and less expensive. In particular, we're trying to do this for virtual machine environments, where the current state of storage is really quite bad. Projects that we have done in this area include block-level virtualization with Parallax, safe storage upgrades with DoveTail, and scalable persistent caching for virtual desktops. We are now looking at how cloud-based object storage interfaces can be used to scale storage and allow better collaboration between the people who use it.
Application to graduate school at UBC is incredibly competitive. Things that I personally look for in reviewing applicants include relevant experience with either open source development or industrial software, the ability to cite relevant research in the field that you are interested in, and a clear ability to communicate your ideas. These are all really valuable things to try to get across in your application to the department. Very high marks also help.
UBC is a great place to do grad school. We have a top-notch systems group with a lot of creative and collaborative work building real, useful software. Moreover, Vancouver is a wonderful place to live: There's easy access to beaches, mountains, excellent food, etc.
I'm happy to answer questions about the program. I get a large amount of email, so it sometimes takes a while for me to reply -- thanks in advance for your patience. Alternatively, feel free to contact my current graduate students with questions about the environment here: they're probably a much more reliable source than I am.
In addition to getting used to the excitement of fatherhood, I occasionaly do random things like rock climbing, triathlons, and old sports car restoration.
I try to encourage the students I work with to learn from my mistakes. There are probably several lessons to be had from the situation pictured here.
One is that laws regarding the conservation of matter do not seem to apply to the stomachs of infants.
Another is that one should be extremely leery of any woman who ever says, "Just hold on for one sec while I get the camera!"