I’ve used a wide range of software across my client projects and jobs, as well as delivering training and writing articles. Endorsements and skills assessments for some of the software can be found on my LinkedIn profile, and examples of code on my GitHub profile.

Programming languages

PHP: My primary language for developing web sites, which I’ve been using for over 15 years (since PHP 4).

JavaScript: For any client side interaction I use JavaScript, either directly or with a library such as jQuery.

Go: My language of choice for developing software that needs to run on different platforms, including Windows on desktop machines.


MySQL: The database engine for nearly every web application I’ve worked with. For new sites I recommend MariaDB as it has a faster development cycle, and most existing sites can be migrated with minimal changes.

SQLite: For very small projects and desktop applications, SQLite is a lightweight alternative to MySQL.

Web servers

Apache: The majority of sites I work on use Apache with mod_php as the web server.

nginx: For new servers I recommend nginx with PHP-FPM, unless there is a particular feature that is only available in Apache.

Libraries and frameworks

PhpOffice: For creating Word documents and Excel spreadsheets programmatically. I’ve used this heavily for producing automated reports for a range of audiences, from internal accounts departments to large reinsurers.

jQuery: Although I’m gradually moving towards using vanilla JavaScript now that modern browsers support most of what I need, I still use jQuery and its library of plugins for some areas such as client-side validation.

Laravel: A PHP framework which makes building web applications easier and quicker. I’ve performed security reviews on existing Laravel sites and built new sites from scratch, including the accounts system which I use to manage my business.

dompdf: Producing PDF files from HTML output, including insurance documents and invoices. All the invoices issued by my business are generated using dompdf.

D3.js: Visualisation of data in a variety of formats, e.g. bar charts.

Development tools

Git: The only version control system for modern projects. I’ve also delivered training on Git and I’ve migrated projects from CVS and Subversion.

Vagrant: A tool for creating local staging environments that mirror production, enabling development without risking live data.

Ansible: Configuration management for some of my servers and all of my local test environments. I’ve also delivered training on Ansible.

Linux: All the servers I work with run Linux, usually Debian or Ubuntu. I’ve also been running Linux as my primary desktop environment for over a decade, though I also have Windows and macOS machines for testing.

Data formats

XML: Used by client APIs I have built and supplier APIs which I have integrated with.

CSV: I have built import and export options using CSV files, as well as generating and using CSV files as sources for data visualisation with D3.js.

JSON: Used by client APIs I have built and supplier APIs which I have integrated with.

Excel: Using PhpOffice, I have built systems to import and export data using Excel spreadsheets.

Payment processors

Stripe: Integrated using their PHP library.

PayPal: Integrated using their JavaScript library.