Member of Technical Staff at Bromium

September 2012 - Present
Bromium uses micro-virtualisation to make endpoints trustworthy. I designed and implemented the following features:

  • Site-to-VM placement logic

  • Certificates, smart cards

  • Authentication (SSPI)

  • Intranet detection

  • DOM storage

  • Download

  • Third-party integration

I also wrote unit tests, fixed bugs and solved customer issues. Most of this work has been in C and C++ on Windows.

Senior Software Engineer at Citrix

June 2009 - September 2012
I moved to a new project within Citrix, XenClient (a client hypervisor):

  • Implemented device and user authentication.

  • Added support for Active Directory users to XenClient Synchronizer (the server with which the client hypervisor communicates).

  • Investigated how best to integrate XenClient with other Citrix products.

  • General troubleshooting and bug fixing.

Most of this work was in C on Linux.

Research Engineer at Citrix

February 1999 - June 2009
Initially, I worked on new Web-based products and then moved onto core product:

  • Implemented single sign-on to Citrix XenApp. This involved writing Windows logon components (GINA, credential provider, authentication package) and an ICA virtual channel.

  • Extended this to allow federated authentication to XenApp (using Microsoft ADFS).

  • Implemented a portable, simple WS-Federation security token service.

  • Prototyped cloud-based desktops, running on Amazon EC2 and brokered with Citrix software.

  • Enhanced Citrix Password Manager so it can run from a removable device.

  • Prototyped Web service versions of XenApp server components.

  • Carried out applied research into using server-based computing with dynamic HTML and mobile applications.

  • Worked on patent applications, 6 of which were issued.

This work was initially in Javascript and C#, then C and C++ on Windows.

Research Engineer at Persimmon IT

October 1997 - February 1999
Persimmon IT designed websites. I was part of a team developing software to transform XML into HTML using Standard ML (we began before the first XSL working draft was published).

Intern at Matra Marconi Space Systems

June 1992 - September 1993
This was a year out whilst an undergraduate. Responsibilities ranged from PC maintenance to helping sort out the entry card database and writing image processing code.

Open Source

I’ve written a number of open source projects in the following general areas:

  • Message routing and queueing

  • Authentication, authorisation and cryptography

  • Data transfer

  • Linux distribution from scratch

Most of this work is in Javascript and Python. I’ve also contributed to a wide range of other projects including Node.js core, unikernels and a number of Node.js and Python modules.

Please see my Github profile.


PhD in Computer Science

University of Cambridge, 1994 - 1997
3 publications

BSc First Class Hons in Computer Science

University of Southampton, 1990 - 1994
4 prizes

A Levels in Maths (A), Physics (A) and English (C)

Tideway Comprehensive, 1988 - 1990