- CMSes and Frameworks: Drupal (6-9), Symfony (2-5), Silex, Sculpin, Tailwind CSS, Vue.js
- Tools: Git, PHPUnit, PHPStan, Behat, Jest, Docker, Ansible, Puppet, Apache, Nginx, MySQL, Jenkins, GitHub Actions
- Platforms: Acquia, Platform.sh, Pantheon, Netlify, Amazon AWS, DigitalOcean, Linode
- Co-developed the Drupal 8 version of the Inviqa UK and Germany websites, including a number of custom modules.
- Improved the editorial experience using Drupal's Layout Builder with a number of re-usable static and dynamic blocks.
- Wrote custom migrations to migrate existing data from the legacy site.
- Led the ongoing development following completion of the first phase.
- Technologies used: Drupal 8, Vue.js, Behat, PHPUnit, PHPCS.
- Links: https://www.inviqa.com, https://www.inviqa.de
OutdoorLads website (Microserve)
- Architected and co-developed a Drupal 8 and Drupal Commerce based events and membership website and management system.
- Introduced automated testing and test-driven development, resulting in over 100 tests being added.
- Contributed to the custom migration of data from the legacy system, including users, event (product), and attendance (order) information.
- Contributed various modules and patches to Drupal.org.
- Technologies used: Drupal 8, Drupal Commerce 2, PHPUnit, Tailwind CSS.
- Link: https://www.outdoorlads.com
Drupal.org websites and infrastructure (Drupal Association)
- Improved Drupal.org by adding new features and fixing bugs, improving the user experience for new Drupal.org users and Drupal contributors and maintainers.
- Improved Austin and Latin America DrupalCon themes.
- Resolved payment gateway issues on events.drupal.org prior to DrupalCon Barcelona registrations, allowing attendees to successfully purchase tickets.
- Performed a functional and security review of jobs.drupal.org prior to its public release.
- Tested and contributed to 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 with high-profile community members.
- Improved the Election module used on assoc.drupal.org for community-at-large elections, making it simpler for community members to vote.
- Links: https://www.drupal.org, https://events.drupal.org, https://jobs.drupal.org
Intranet for Admiral Insurance (Precedent)
- Completed a Drupal development project, working closely and often on-site with Admiral's staff Developers.
- After completion, multiple instances of the site were rolled out to different companies and departments within the Admiral group.
- Improved security and user experience by configuring a single sign-on between Drupal and the corporate network using LDAP and NTLM.
- Provided technical documentation and training to the Admiral team for future development and maintenance of the application.
- Technologies used: Drupal 7, Git, Linux, Apache, MySQL.
Insurance group websites (freelance)
- Developed and maintained a collection of business-to-consumer and business-to-business websites, selling insurance policies for electronic gadgets.
- Increased revenue by increasing the number of sites from one to seven, and maintaining costs by re-using the same codebase and hosting.
- Improved quality and efficiency by introducing automated testing and code quality tools, and automating deployments using GitHub Actions.
- Grew the client relationship, providing excellent communication via regular progress updates, and helping the client prioritise and manage tasks in an Agile way.
- Technologies used: Drupal 7, Drupal Commerce, AngularJS, PHPCS, PHPStan, Jest, GitHub, Acquia.
Senior Software Engineer at Inviqa (Remote) - April 2019 to present
- Worked on and led a development team responsible for a number of Drupal 7 and 8 projects.
- Led the back-end development for the migration of inviqa.com and inviqa.de to Drupal 8, and oversaw the ongoing development and maintenance of the sites after completion of the first phase.
- Advocate for pair programming to improve code quality and knowledge sharing.
- Part of the out-of-hours critical application support team, supporting applications including Drupal, Magento and Sylius.
- Promoted to an acting Technical Team Lead role prior to the completion of my initial probation.
- Certified Mental Health First Aider and part of the Wellbeing team.
- Link: https://www.inviqa.com
Freelance Software Developer and Systems Administrator - 2007 to present
- Worked on projects to gain experience and to experiment with new technologies.
- Developed and re-developed applications using Drupal, Symfony and Silex.
- Migrated sites to newer versions of Drupal (6 to 7, and 7 to 8).
- Updated themes and styling to match new designs and mockups provided by Designers.
- Provisioned and maintained Linux servers for clients.
- Introduced version control systems, automation and deployment processes to existing projects.
- Performed code reviews and audits for other Developers.
Senior Drupal Developer at Microserve (Bristol, UK) - March 2017 to April 2019
- Developed and maintained various Drupal 7 and 8 projects including custom modules and automated tests, such as integrating Drupal with third-party services.
- Improved the accessibility of various projects by working on front-end and theming related tasks.
- Wrote custom migrations to import data from various sources into Drupal 8.
- Contributed Drupal modules and PHP packages to Drupal.org and Packagist.
- Mentored other Developers and promoted knowledge sharing via pair programming, lunch and learns, and internal workshops.
- Worked closely with the Management, QA and DevOps teams to define and improve internal processes for software testing and deployments.
- Link: https://microserve.io
Senior Drupal Developer at Appnovation (Cardiff, UK) - May 2016 to March 2017
- Co-developed various Drupal 7 and 8 projects for UK, US and Canadian clients.
- Developed custom modules and themes, and contributed some modules to Drupal.org, such the Toggle Optional Fields module.
- Provided technical knowledge for pre-sales opportunities, including the company’s first UK Drupal 8 project and first FTSE 100 client.
- Interviewed candidates for Developer roles in the UK and US, and providing feedback to the relevant people.
- Link: https://www.appnovation.com
Lead Drupal Developer at CTI Digital (Remote) - November 2015 to May 2016
- Contributed to and helped support various existing Drupal 7 projects.
- Improved my Drupal 8 knowledge via self-guided learning, focussing on custom module development and data migration.
- Developed a prototype of a command-line application to generate and audit codebases, to reduce the onboarding time for Developers and ensure consistency across projects.
- Link: https://www.ctidigital.com
Senior Drupal Developer at Microserve (Bristol, UK) - July 2015 to November 2015
- Full-stack Drupal 7 development, focussing on custom module development, REST server integration via restws module, and data migration from Drupal 6.
- Updated and modernised a non-Drupal PHP platform to ensure its compatibility with their new Drupal 7 website. This involved adding Composer to manage dependencies and Guzzle to perform HTTP requests to Drupal to trigger actions via REST.
- Community and contribution advocate, wrote blog posts for the company website and attended and presented at meetups and conferences.
- Link: https://microserve.io
Drupal.org Developer at the Drupal Association (Remote) - May 2014 to July 2015
- Worked on the Drupal.org website, its sub-sites and infrastructure, developing new tools and features whilst fixing bugs and issues.
- Monitored and maintained the Drupal.org testbot infrastructure during high traffic periods, ensuring that automated tests are able to run for patches submitted to Drupal.org.
- Fixed any issues that made Drupal.org a Drupal 8 release blocker, ensuring that there were no further delays in releasing Drupal 8.
- Resolved issues and submitting patches to the COD (conference organising distribution) that was used to build the DrupalCon websites.
- Link: https://www.drupal.org/association
Senior Drupal Developer at Precedent (Cardiff, UK) - April 2013 to May 2014
- Led a development team consisting of colleagues in other offices as well as an off-site client contractor.
- Completed an in-progress Drupal 7 project, adding missing functionality and fixing bugs.
- Implemented and later championed the Git Flow workflow, to create a standard development and release process across our projects.
- Created and shared a Vagrant and Puppet based development environment to ensure consistency for Developers.
- Released a small 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.
Application Developer & System Administrator at Nomensa (Bristol, UK) - February 2012 to April 2013
- As a contractor, developed custom Drupal 7 modules including an integration with CiviCRM.
- After being offered and accepting a permanent role, I also completed the front-end theme development work which had a focus on accessibility, ensuring that it was WCAG 2.0 compliant.
- Worked alongside and mentored front-end Developers in Drupal theming on projects. Several of them would later become full-time Drupal Developers and Themers.
- Provisioned servers with a Nginx, PHP-FPM and MySQL stack, and deployed applications alongside the in-house Systems Administrator.
- Released CiviCRM and accessibility-related modules to Drupal.org, including the Nomensa Accessible Media Player, and Accessibility Checklist modules.
- Link: https://www.nomensa.com
PHP Developer at Proctor & Stevenson (Bristol, UK) - April 2011 to February 2012
- Developed and co-developed new websites, mostly using Drupal and PHP, and providing ongoing support and maintenance of websites for existing clients.
- Developed the agency’s first Drupal 7 client project.
- Architected and developed a full Drupal 6 and Ubertcart project for a water company client, which processed all property services transactions for residential and commercial properties. This was still used in production until September 2020.
- Provided in-person and remote user training for Drupal websites.
- Performed Linux server provisioning and configuration tasks for client websites.
- Link: https://www.proctors.co.uk
Web Developer (PHP, Drupal) at Horse & Country TV (Cwmbran, UK) - July 2010 to April 2011
- Maintained and supported the company’s Drupal 6 website as part of a two-person team.
- Re-architected and re-developed the Events section, adding Ubercart for paid events which added a new revenue stream for the company.
- Made various theme changes to improve the visitor experience.
- Developed custom modules including the 'Now & Next' module which displayed the current and subsequent programmes being shown on the channel.
- Resolved any unexpected issues that arose, including a SQL injection exploit of our OpenX ad server.
- Link: https://horseandcountry.tv
Certifications and Qualifications
|2021||Completed the Platform.sh partner certifications|
|2019||Adult Mental Health First Aider - Training in Mind / St. John's Ambulance|
|2018||Acquia certified Cloud Pro|
|2017||Acquia certified Front End Specialist - Drupal 8|
|2017||Acquia certified Back End Specialist - Drupal 8|
|2017||Acquia certified Developer - Drupal 8|
|2007-2009||HNC Computing (End User Support)|