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 personal GitHub and business GitHub profiles.

This is not an exhaustive list – if a particular tool or library is missing I may have worked with it or can pick it up quickly.

Programming languages

PHP: My primary language for developing web sites, which I’ve been using for over 20 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.

Databases

MySQL: The database engine for the majority of web applications 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. It can also perform a useful intermediary step when extracting and transforming data from one source to another.

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 automatically importing and exporting Excel spreadsheets. I’ve used this heavily for producing automated reports for a range of audiences, from internal accounts departments to global 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 functionality, and on existing projects.

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.

Slim: A PHP framework which is lighter and easier to customise than Laravel (less ‘batteries included’, more ‘here is a basic framework for you to build on’).

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, Chart.js: Visualisation of data in a variety of formats, e.g. bar charts.

Twig, Smarty, Blade: Templating libraries for producing HTML output.

Doctrine: Database abstraction and Object Relational Mapper.

Symfony Components: Parts of the Symfony framework that can be used in other projects, such as managing HTTP requests and responses, creating console scripts and sending emails.

Laminas: Re-usable components for common tasks such as validation.

League of Extraordinary Packages: Reading and writing CSV files.

Development tools

Git: The most widely-used 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.

Docker: For local development and production deployments.

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 15 years, 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, as well as passing internal data for use in charts etc.

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.

Opayo: Custom integration (no library provided).

WorldPay: Custom integration (no library provided).