Iʼm a computer scientist and systems programmer, living in
My email address is firstname.lastname@example.org.
I have a blog.
I design and build operating systems components. I have produced fast
and reliable filesystem code and hypervisor features. I like to work
on difficult technical problems, ideally in a small team of
engineers. I enjoy a collaborative environment where I can
work with, and learn from, smart and enthusiastic people.
Iʼm proficient in C on unix, but I also enjoy assembler (x86 and
ARM), and am happy writing kernel code. For higher-level work I prefer
python, but have used perl, bash and ocaml in the past, and am always
willing to learn something new. Iʼm familiar with the usual unix
source control tools (git, mercurial) build systems (make, autotools),
and debugging tools (gdb, valgrind). I use static analysis tools and
I have experience working with open-source communities, collaborating
with other engineers and reviewing code. I enjoy mentoring junior
engineers, and I supervise undergraduates for courses in operating
systems and C.
Outside of working hours, I spend most of my time with my wife and
primary school age son. We enjoy music, trips to nature reserves, and
2019–: Senior Research SDE,
I am part of Project Silica,
a multidisciplinary team developing a new storage medium for archive
data, using femtosecond lasers and quartz glass. I work on all kinds
of software, from machine learning to embedded systems, to support the
physicists and hardware engineers and help to turn a lab prototype
into a working storage system.
2017–2019: Principal Engineer,
Amazon Web Services
At Amazon, I worked on the
S3 object store.
I was one of the first members of the Cambridge S3 team and helped
it to grow to 16 people in its first year. I worked mostly on on
feature planning and prototyping, but also on operations and debugging
2011–2017: Software Architect,
At Coho Data, I worked on the object storage layer of a storage
array. I designed and implemented compression, checksumming, garbage
collection and concurrency control features. I worked on journalling
and crash recovery, and on performance analysis. I was also involved
in the architecture and design of other parts of the product.
2006–2015: Principal Software Engineer,
XenSource / Citrix Systems
I spent nine years on the core development team of the
both writing new code and reviewing designs and code for others. I
wrote (with Michael Fetterman and others) Xenʼs shadow pagetable
code, which gave Xen a performance advantage over other hypervisors
for some time. I then worked on many other parts of the system:
emulator support for 'real mode' code, saving and restoring virtual
CPU state, BIOS/firmware bugs, etc. I was involved in starting the new
port to ARMv8 processors. Although I am no longer a paid Xen
developer, Iʼm still a maintainer for some parts of the code, and
a member of the Xen projectʼs security response team.
- 2001–2006: PhD Student,
University of Cambridge
My PhD thesis was on the DNS,
suggesting a break between the administrative delegation of control
and the distribution of the service itself. I measured how often
records change in the public DNS and prototyped an improved
2001: Secure Hosting Systems Administrator,
I was part of a team running a high-security machine room. We hosted
infrastructure for clients like mobile phone vendors, government
departments and financial institutions.
2000: Technical Hostmaster,
University College Dublin
I ran the computer systems for the
.ie top-level domain, including
databases, websites and DNS
- 2001–2006: PhD, Computer Science, University of Cambridge
- 1995-1998: BA, Computer Science, University of Cambridge
In my final year I won the Olivetti and Oracle class prize.
Strata: High-Performance Scalable Storage on Virtualized Non-volatile Memory.
Brendan Cully, Jake Wires, Dutch Meyer, Kevin Jamieson, Keir Fraser, Tim Deegan, Daniel Stodden, Geoffrey Lefebvre, Daniel Ferstay and Andrew Warfield.
Proc. 12th FAST,
Breaking Up is Hard to Do: Security and Functionality in a Commodity Hypervisor.
Patrick Colp, Mihir Nanavati, Jun Zhu, William Aiello, George Coker, Tim Deegan, Pete Loscocco and Andrew Warfield.
Proc. 23rd ACM SOSP,
Turning down the LAMP: Software Specialisation for the Cloud.
Anil Madhavapeddy, Richard Mortier, Ripduman Sohan, Thomas Gazagnaire, Steven Hand, Tim Deegan, Derek McAuley and Jon Crowcroft.
Proc. 2nd HotCloud,
Improving Performance by Embedding HPC Applications in Lightweight Xen Domains.
Samuel Thibault and Tim Deegan.
Proc. 2nd HPCVIRT,
Lazy Susan: dumb waiting as proof of work.
Jon Crowcroft, Tim Deegan, Christian Kreibich, Richard Mortier and Nicholas Weaver.
Technical Report UCAM-CL-TR-703,
University of Cambridge,
Melange: creating a “functional” Internet.
Anil Madhavapeddy, Alex Ho, Tim Deegan, Ripduman Sohan and David Scott.
Proc. 2nd EuroSys,
The Main Name System.
The Main Name System: An exercise in centralized computing.
Tim Deegan, Jon Crowcroft and Andrew Warfield.
ACM SIGCOMM CCR
35(5) pp. 5-13,
Facilitating the Development of Soft Devices.
Andrew Warfield, Keir Fraser, Steven Hand, and Tim Deegan.
Proc. USENIX ʼ05,
Optimising data layout for delay-line memory.
Jon Crowcroft and Tim Deegan.
41(6), pp. 358-359,
IP Route Lookups as String Matching.
Austin Donnelly and Tim Deegan.
Proc. 25th IEEE LCN,
pp. 598-585, November 2000.