Employment
- Software Engineer at HP Inc.
-
May 2020 - Present
I’m working on secure remote access.
-
Device enrolment
-
Digital signatures
-
Windows kernel driver
-
- Member of Technical Staff at Bromium
-
September 2012 - May 2020
Bromium used 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
-
Browser extension
I also wrote unit tests, fixed bugs and solved customer issues. Most of this work has been in C and C++ on Windows, along with some Python, JavaScript, TypeScript and Linux.
-
- 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, along with some Python.
-
- 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 on Amazon EC2, 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
-
Low-power radio
-
Scheme interpreters
-
Linux distribution from scratch
-
Audio and video streaming
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.
Education
- 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