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 and helping people online.

07473 305 865

Technology I use and like

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.
Javascript + jQuery + HTML + CSS I use it 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.
Templating Created Jig templating library, to allow dependency injection of objects directly from templates. Previously implemented Smarty templating to allow designers to create reusable web pages elements, and a framework to load the required pages, Javascript and CSS in a reliable design.
Automation with Ant/Bash/Chef/Puppet

Integrated continuous build and automated test systems with for rapid detection of development issues. Have used Cruise Control with Ant, and of Travis-CI for open source projects.

Developed Ant scripts for building, automated testing and deploying of applications. Designed and implemented plugin Ant tasks for custom processes e.g. Manipulating assets, packaging and deploying applications.

Written and used Bash scripts and associated tools in PHP to allow deployment of a web application including all database changes from a single command. Used Chef to create, configure and deploy to Amazon EC2 instances. These days though, I prefer to RPM everything and make deployment be as simple as possible.

Other technology I have used

C/C++ Five years of commercial development. Good understanding of C/C++ compiler technology
J2EE + Spring + Hibernate Developed internal web based application for managing product pricing.
WAP/XHTML Developed wapsites that used content adaption to optimise user experience based on handset capabilities.


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.
Continuous testing Integrated continuous build and automated test systems with Cruise Control with Ant for rapid detection of development issues.

Career to date

Open source development - previous to current

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 confernce 2015 about how dependency injection makes code better.


Developed the Jig templating library. This is a lightweight templating system that uses dependency injection to allow 'views' to be a first class layer inside PHP applications. The documentation is available at


Developed the Tier 'application runner' framework. Tier is a new approach to structuring PHP applications to avoid monolithic frameworks, and allow multiple dispatch inside an application, which allows 'tiers' of code to be developed in a way that make it easy to write high-performance, easy-to-test code.

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 puchase 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 Suns World Wide Application Support team, creating a 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.