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.
PHP: My primary language for developing web sites, which I’ve been using for over 20 years (since PHP 4).
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.
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.
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.
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 and creating console scripts.
Laminas: Re-usable components for common tasks such as validation.
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.
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.
Stripe: Integrated using their PHP library.
Opayo: Custom integration (no library provided).
WorldPay: Custom integration (no library provided).