Full stack Developer and Acquia certified Drupal 8 Grand Master with experience in DevOps/systems administration. Over 10 years of experience working full-time with Drupal, PHP and related technologies.
A passionate open source contributor and community leader who regularly attends, organises and speaks at user groups and conferences, and with a proven record of training and mentoring in both a work and community environment.
I have experience with...
- PHP and MySQL, mainly using Drupal, but also using Symfony and Laravel, and previously Silex.
- Drupal 6, 7, 8 and 9, developing custom modules and themes, migrating data from legacy Drupal versions or different platforms (e.g CSV files, Laravel, GatherContent), integrating with third-party systems
- Sculpin, a PHP based static site generator that I've used for building static websites and also for rapid prototyping.
- Writing unit, integration and functional tests with PHPUnit, behavioural tests with Behat, and utilising test driven development when possible.
- Maintaining my own open source projects on Drupal.org and GitHub, including Drupal modules and themes, PHP libraries and SDKs, Ansible roles and Tailwind CSS plugins.
- Front-end development. I prefer to use Tailwind CSS, but also have used other frameworks such as Bootstrap and Bulma.
- Configuring and using front-end build tools, usually Webpack Encore though I've also recently used Laravel Mix, and previously Gulp and Grunt.
- Web accessibility standards and making websites compliant with WCAG guidelines.
- Linux server administration including custom server provisioning using LAMP and LEMP stacks, and ongoing maintenance. Utilising configuration management tools such as Ansible and Puppet.
- Configuring application deployments using tools such as bash scripts, Ansible and Fabric. Continuous integration and deployment using GitHub Actions, CircleCI or Jenkins.
- Working with platform as a service hosting providers such as Acquia, Platform.sh and Pantheon, as well as cloud infrastructure providers such as DigitalOcean, Linode and Amazon AWS.
- Being an advocate for community participation and contribution, automated testing and test driven development.
Relevant Work Experience
Inviqa - April 2019 to present
Working as a Senior Software Engineer, maintaining and supporting existing Drupal 7 and 8 projects in an Agile environment.
- Working on various internal and external Drupal based projects for clients including Arsenal Football Club, Aman Resorts, virgin.com and London Business Forum.
- Re-development of the inviqa.com and inviqa.de websites onto Drupal 8.
- Using quality tools such as PHPCS, Behat and PHPUnit, and various services including Codeship and Jenkins for continuous integration.
- Organising and contributing to internal "Communities of Practice" sessions and code clubs.
- Advocating for regular pair programming sessions to share knowledge amongst team members, and for best practices for automated testing, code quality and continuous integration and delivery.
I'm currently the acting Technical Team Lead for our team, working alongside our Delivery Manager to manage a team of up to Developers working on various projects, and regularly providing updates and feedback to the Client Services Delivery team.
I’m also part of the out-of-hours critical application support team, supporting applications on a number of technologies and hosts for some of our largest clients.
Freelance (part-time) - 2007 to present
Working on freelance projects in my spare time, initially to gain experience and build my reputation, and continuing to do so to keep my skills up-to-date and to experiment with new technologies and methods.
Mostly Drupal focussed, but also using other technologies including Symfony, Silex, Sculpin, Angular JS and Vue.js.
Tasks have included:
- Development of new applications.
- Ad-hoc and ongoing development, maintenance and support of existing applications.
- Migrating sites to newer versions of Drupal (6 to 7, and 7 to 8).
- Updating themes and styling to match new branding.
- Rebuilding legacy applications onto new technologies.
- Linux server provisioning and maintenance.
- Introducing version control systems and deployment processes to existing projects.
- Performing code reviews and audits for other Developers.
Microserve - March 2017 to April 2019
Working as a Senior Drupal Developer on various Drupal 7 and 8 projects, including:
- Adding new features and maintaining and supporting existing sites.
- Creating custom modules for Drupal 7 and 8 with automated tests, including integrations with third-party services.
- Wrote migrations to import data from various sources into Drupal 8.
- Leading the development of an events booking and management website, built with Drupal 8 and Drupal Commerce.
- Server administration and data migration.
- Mentoring other team members.
- Creating the company’s first PHP package - a library for interacting with the Geoplugin API.
- Leading and contributing to internal contribution and hack days, presented lunch and learn sessions and internal workshops about automated testing, and been an advocate for pair and mob programming.
Appnovation - May 2016 to March 2017
Senior Drupal Developer working for various UK, US and Canadian clients, on tasks including:
- Drupal 7 and 8 site building, custom module development and theming.
- Reviewing resumes and coding test submissions, and interviewing candidates for Drupal and PHP development roles.
- Completed the Janrain Certified Provider certification course.
- Being part of various pre-sales teams providing technical input on proposals, including for the company’s first UK Drupal 8 project and first FTSE 100 client.
CTI Digital - November 2015 to May 2016
Working as a Lead Drupal Developer, on various Drupal 7 projects for clients including Greater London Authority, British Land and British Council, as well as various retainer contracts.
Microserve - July 2015 to November 2015
Working as a Senior Drupal Developer on a Drupal 7, focussing on custom module development.
- Adding a REST API using contributed modules.
- Migrating data from Drupal 6.
- Working on a separate non-Drupal PHP project, which I was able to modernise by adding Composer to manage dependencies and Guzzle to perform HTTP requests to Drupal to trigger actions via REST.
- Community and contribution advocate, writing blog posts for the company website and attending and speaking at meetups and conferences.
I left this role via voluntary redundancy, as I still had a previous job offer that was available.
Drupal Association - May 2014 to July 2015
Working as a Drupal.org Developer, on the main Drupal.org website and its sub-sites.
- Fixing outstanding bugs on Drupal.org from the Drupal 6 upgrade.
- Adding new features such as human-readable profile URLs, migrating legacy data from Drupal 6 into Drupal 7 fields, and improving the new user registration and role progression processes - committing changes to public Git repositories on Drupal.org itself.
- Working on DrupalCon websites - making theme amends and fixing bugs on the websites for Austin and Latin America, and resolving payment gateway issues on events.drupal.org prior to DrupalCon Barcelona registrations.
- Making improvements to the Election module used on assoc.drupal.org for community at-large elections.
- Performed a functional and security review of jobs.drupal.org prior to it's public release.
- Participated in testing and bug fixing of the responsive version of Bluecheese (the Drupal.org theme) which was launched in December 2014.
- Assisted in the upgrade of localize.drupal.org to Drupal 7 alongside Drupal core maintainers and community members
- Submitting patches to the COD (conference organising distribution) that is used to build the DrupalCon websites.
- Promoting the Drupal Association in the UK, and presented sessions at DrupalCamps and user groups about the Drupal Association 2015 roadmap.
Precedent - April 2013 to May 2014
- Completing an in-progress Drupal 7 project, adding missing functionality and bug fixes.
- Adding LDAP integration for authentication and single sign-on with Active Directory.
- Various module and theme development tasks.
- Implemented the Git Flow workflow that I later championed for all future development projects.
- Providing on-site training for clients.
- Creating a development environment using Vagrant and Puppet to ensure consistency across team members.
- Releasing a number of modules to Drupal.org, including 'Content Type Groups Theme', 'Taxonomy Disable Path', and the Eventsforce module for importing events from the Eventsforce events management system.
- Mentoring other developers.
Nomensa - February 2012 to April 2013
I worked as an Application Developer and System Administrastor, initially joining as a contractor before moving into a permanent role, working for clients including:
- Custom module development, including an integration with CiviCRM.
- Front-end development and Drupal theming, ensuring that it was WCAG 2.0 compliant.
- Working with and mentoring the front-end development team in Drupal theming.
- Working alongside the in-house System Administrator - provisioning servers with a Nginx, PHP-FPM and MySQL stack, and deploying applications - as well as assisting with technical support and hardware issues within the office.
- Creating some CiviCRM related modules and the Nomensa Accessible Media Player module and released them to Drupal.org. I also released some other accessibility related modules.
Proctor & Stevenson - April 2011 to February 2012
Development of new websites, mostly using Drupal and PHP, and providing ongoing support and maintenance of websites for existing clients such as:
- Rathbones Investment Management
- Rathbone Greenbank Investments
- South for Searches (South West Water)
I developed the agency’s first Drupal 7 client project, and delivered a full build of a Drupal 6 project which included Ubercart for eCommerce (still in use in August 2019).
I also provided in-person and remote user training for Drupal websites, and completed Linux server provisioning and configuration tasks for client websites.
Horse & Country TV - July 2010 to April 2011
Working as a Drupal/PHP Developer, maintaining and supporting the company’s Drupal 6 website as part of a two-person team.
- Re-architecting and re-developing the Events section (including integrating Ubercart for paid events).
- Making various front-end theme improvements.
- Development of custom modules including a 'Now & Next' module to display the current and next programmes being shown on the channel.
- Dealing with any issues that arose, including a SQL injection exploit of our OpenX ad server.
- Provided general IT support and assistance.
Previous Work Experience
- Software & Solutions Developer, Fujitsu Services Ltd (February 2010 to July 2010)
- Technical Support Specialist, Fujitsu Services Ltd (July 2007 to February 2010)
- Laptop Repair Technician (Temporary), Panasonic Computer Products Europe (August 2006 to July 2007)
- Laptop Repair Technician, Student Essentials Ltd (September 2004 to August 2006)
- Adult Mental Health First Aider - Training in Mind / St. John's Ambulance (2019)
- Acquia certified Drupal 8 Grand Master
- Acquia certified Developer - Drupal 8 (June 2017)
- Acquia certified Back End Specialist - Drupal 8 (July 2017)
- Acquia certified Front End Specialist - Drupal 8 (November 2017)
- Acquia certified Cloud Pro (October 2018)
- Dell Certified Repair Engineer - Desktops, Laptops & Printers (2009)
- Contributing to various open source projects and communities including Drupal (core and contrib), Symfony, WordPress, Sculpin, Ansible and Tailwind CSS.
- Attending and speaking at meetups and conferences, including DrupalCon Amsterdam and various other Drupal and PHP conferences.
- Preparing and giving workshops, such as 'Automated Testing and Test Driven Development in Drupal 8' at DrupalCamp London 2020.
- Being a guest on podcasts such as 'That Podcast', 'Talking Drupal' and 'How to Code Well'.
- Organising user groups such as PHP South Wales, and previously SWDUG (South Wales Drupal user group), the Drupal Bristol user group and DrupalCamp Bristol conference.
- Writing blog posts.
Hobbies and interests
- Learning and speaking the Welsh language.
- Training and competing in Brazilian Jiu-Jitsu. I was awarded by blue belt in May 2019.
- Computer hardware and the Linux operating system.
- Occassionally live coding on YouTube.