Main skills: C, C++, Assembler (ARM including ARMv8, x86, POWER), compilers and binary translation.
Other skills: Perl, Java, Python, Linux, Windows, AVR
13 years experience of wide ranging software development, specializing in code generation and performance tuning.
Februrary 2013 - Present: Senior Software Engineer, Codethink Ltd
- GFortran legacy enhancements: I created and maintain a public branch of GCC with additional legacy Fortran support. Some of these patches have been offered upstream to GCC.
- In-car infotainment: I was part of a team brought in late to a project to diagnose faults and improve performance. We were able to familiarise ourselves rapidly with the system and provide recommendations; my own example saving 10% of the system's memory.
- X86 Android emulator: Architect and lead engineer for a desktop-based Android test environment, using virtualized X86 Android with native OpenGL rendering. I led a team of 3-4 people to deliver this product in 2014 which recevied positive reviews.
Recent conferences attended:
- Debian Reproducible Builds Summit, Athens, December 2015
- Chaos Communication Camp, August 2015
- EMFCamp, August 2014
- FOSDEM, January 2014
June 2012 - February 2013: Career break
- Took and passed the Standford University online Compilers course.
May 2010 - June 2012: Senior Compiler Engineer, ARM
- Feasibility study into the use of LLVM as a backend code generator for RVCT.
- Tuning and benchmarking of memcpy for ARM11 architecture.
- Bringup of the ARMv8 backends for GCC and GDB.
- Performance tuning of bzero for big.LITTLE architecture.
2004-2010: Senior Software Engineer, Transitive Ltd
(Acquired by IBM in June 2009)
- Developer of dynamic binary translators and related virualization technology for a variety of platform combinations
- Extensive performance tuning of X86->POWER translator including making use of the new little-endian features in the POWER6 architecture.
- X86->ARM translator performance work on Firefox including automated performance measurement.
- Lead developer for a new parametized X86 decoder, capable of generating a decoder for high performance or low memory environments. Shipped as part of a product in September 2009.
- Began work on a microcheckpointing high-availability product for IBM's P-Series line.
2003-2004: Developer and system administrator, Centre for Pharmacy Postgraduate Education
2001-2003: System administrator, University Of Manchester
1996-97, summers 1998 and 1999: Software Technician, Pi Research
BSc (Hons), MEng Computer Science 2:1
University of Manchester, 1997-2001
Specialising in hardware and networking where possible. My projects here included network packet reassembly and distributed multi-user social environments.
Maker spaces: Founding member of Cambridge Makespace (www.makespace.org). Makespace is a community workshop in Cambridge, for people to meet, learn and build almost anything. Member of London Hackspace, a similar organisation in London.
Embedded Linux and microcontrollers: I've picked up experience configuring Ubuntu, OpenBricks and Linaro distributions for my IGEPv2 OMAP3530 platform and significant experience developing for PIC, AVR and MBED.
Mechanical Computing: Designed and built a fully mechanical universal Turing machine, exhibited at Maker Faire, Newcastle in March 2011.
Full UK driving licence
References available on request