An experienced programmer who has used multiple languages to write solid code that can be tested and performs well. I enjoy working with non-technical people to design and develop solutions that solve business problems.

As the maintainer of two PHP extensions, I have a deep understanding of PHP internals and how to handle bug reports without causing compatibility problems for existing users.

I like to share my experience and help other people become better programmers by giving talks, which have included speaking at PHPNW, PHPSC and the Dutch PHP conferences, and helping people online.

07473 305 865

Technology experience

PHP Over ten years development experience including five years commercial experience. I am the sole current maintainer of the Imagick extension and help maintain the Gmagick extension. I occasionally write RFCs to try and make PHP better. 'Constructor behaviour of internal classes' was accepted for PHP 7, 'Closure from callable' targets PHP 7.1, and 'Consistent Callables' targets PHP 8.
MySQL MySQL table and query design for medium sized website with moderate load, to allow responsive user experience.
Docker + containers I use Docker containers to allow projects to have single step setup for local development, while still closely matching the production environment.
Javascript + jQuery + React + HTML + CSS I use it to make web pages have a good user experience. Apparently that's called Responsive Web Design these days.
Java Five years Java experience covering both J2SE, J2ME and J2EE for creating applications on mobile phones and Java applets, and Spring based web application.
C/C++ Five years of commercial development and five years of Open Source development. Good understanding of C/C++ compiler technology


Tech lead Senior programmer on a number of projects. Responsible for technical design, scheduling of tasks, project management and communicating with other departments.
Optimisation Experience of writing x386 assembler for low level, high performance graphics solutions, experience of debugging disassembly for MIPS, ARM and Pentium processors.
Source Control Used and administered Microsoft Visual Source, Subversion and Git for source code version control.
Tools used Amongst the tools I've used are Wireshark, Bugzilla, PR-tracker database, Footprints, IntelliJ Idea, Visual Studio, Visual Source Safe user/administrator, Subversion, Git, PHPStorm, Metrowerks CodeWarrior, InstallShield, Microsoft Visual Sourcesafe, Subversion, CVS, Git, strace, valgrind, gdb, Docker, Travis, Jenkins.
Continuous testing Integrated continuous build and automated test systems with various CI systems (Ant, Bash, Chef, Puppet, Travis, Jenkins) for rapid detection of development issues.

Career to date

Open source development

PHP Imagick + Gmagick extensions

Since the start of 2014 I have been the sole maintainer of the PHP Imagick extension. This involved fixing a backlog of issues, adding new functions introduced in ImageMagick, and updating the extension for PHP 7. I also assisted the ImageMagick team in detecting and fixing a number of memory corruption issues. Recently added to the Gmagick maintainer list due to the number of contributions made.

Developed a website to show working examples of all the functions in the extension.


Auryn is a recursive dependency injector, that can be used to bootstrap and wire together S.O.L.I.D. PHP applications. I helped design how this D.I.C. should work, as well as provide bug-fixes and write test cases. I spoke at the PHP South Coast conference 2015 about how dependency injection makes code better.

OpenSourceFees March 2019 - Present

Created a custom platform to attempt to make Open Source development more sustainable. More details to be announced soon.

Hello Future March 2017 - February 2019

Dijon Platform -

Created a custom platform to be used for charities for fund-raising.

Aitekz finance

Led a small team of developers in migrating a legacy application to Google Cloud Engine and replace the old UI with a React JS based UI.

Immediate Media March 2016 - March 2017

Dialogue Communications Pty. Ltd. January 2008 - August 2012

Worked on three projects in Dialogue's Australian office.


Web-based SMS that allows people to create an account online to use Dialogue's platform; be able to purchase SMS credits; use virtual mobile numbers to send and receive SMS.

Bulk Supplier Tool (approx 4 months)

A web based tool written using Java J2EE, Spring, Hibernate and JSP to allow our commercial team to:

Premium Content platform (approx 12 months)

Developed content management system with intergrated keyword based scripting to allow end-users to purchase content via SMS and web pages, to be billed by premium SMS.

Switchfire Ltd September 2006 - January 2008

Developed J2ME applications for entertainment and communication markets. Investigated provisioning and GPRS configuration issues – designed help pages for customers to provide information about configuration. Also managed and improved testing procedures at Switchfire. Developed and supported W.A.P. consumer focused services.

Cellectivity June 2005 - March 2006

Full-time position developing mobile e-commerce applications, focused on bridging the gap between web and mobile experiences. These applications were mobile betting and dating services, and developed using J2ME. Developed a packet analyzer, modification and logging tool, to enable debugging of phone communication issues and allow repeatable tests. Helped develop an XML based form system for automating the layout, communication and processing of mobile applications.

AirPlay UK Ltd, Technical Director April 2003 - December 2004

As part of a team with ex-colleagues, setup a company to develop games for mobile phones using J2ME. As Technical Director responsible for all technical aspects of development and company website, as well as developing the games. Wrote several tools in J2SE with Swing to allow cross-platform editing of game data. Developed company website for information and to provide a way for customers to buy our games, including design and style of the website.

Intelligent Games June 2001 - November 2002

Codemasters February 1998 - May 2001

Joined as a junior programmer on Brian Lara Cricket. Designed and implemented code modules for data compression, event based commentary system, installation routines. Also responsible for source code version management. After one project, promoted to be the lead programmer in a team of 6 programmers, also responsible for task scheduling, interfacing with the design and marketing departments and reporting to the senior management.

As a prototype programmer worked with game industry design guru Jon Hare to research both new games designs and programming techniques for flexible and data oriented project development.

Sun Microsystems, Web Programmer July 1997 - November 1997

Worked as part of Sun's World Wide Application Support team, creating an intranet site to give support for Suns internal software systems. Used Perl to create a web based application to allow non-technical staff create and edit web documents.


B.Sc. in Chemistry and Molecular Physics, Second class. Nottingham University 1994–1997

Main topics covered include Quantum Physics, Physical Chemistry, Optics, Nuclear Magnetic Resonance and both chemistry and physics laboratory work. For my third year chemistry project I wrote a computer program to simulate 'the spectra of solid state nuclear magnetic resonance experiments using magic angle spinning'.

Four A-levels Bristol Grammar School 1992–1994

Physics - A, Maths - A, Chemistry - B, Further Maths - B.

Ten G.C.S.E.s Bristol Grammar School 1987–1992

Ten G.C.S.E.s of maths, chemistry, biology, physics, French, German, Geography, History, English language and English literature.

Bristol Grammar School 1991, 92, 93

Gold, Silver and Gold certificates in the National Mathematics Contest.