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