Things I've worked with and consider worth noting:
- (OO) PHP (5 and 7) Development, MySQL. Git (GitHub, Gitlab & Bitbucket).
- Symfony, Doctrine, Slim.
- Open source PHP package development and release through Composer & Packagist.
- Advocate and practicioner of BDD & TDD. Mutation testing for ensuring tests are of a high quality.
- Static analysis & code style tools (phpstan, phpcs, psalm)
- Agile working and conversation-led design by example in code.
- Docker containerisation.
- Continuous integration, continuous delivery pipelines and automated deployments using Jenkins and TeamCity.
- Quality and analysis tooling with PHP_CodeSniffer, PHPStan & Psalm.
- Comfortable with a *nix command line and BASH scripting.
- Leading a development team and mentoring new apprentices and testers as well as mentoring people in the community in my spare time.
- Agile workflow with sprint planning, daily scrums, planning poker and retrospectives.
- Experience with various Linux distros as well as OS X, and Windows (with WSL) environments for development.
I've given over 50 talks for user groups and conferences, from small event rooms in the back of pubs with a few people, to thousands on an international stage for conference speaker lineups that included people such as Bruce Dickinson (of Iron Maiden, yes really) and Sir Tim Berners-Lee. I've spoken on international stages and love sharing knowledge.
For talks I've given, or events I've been a part of, check the 'Talks' page.
Events & Community:
I was previously an organiser (for 4 years) for the PHP East Midlands user group. In 2014 we ran 'PHPEM14' our first 'Unconference' where everyone from new speakers to more established speakers and conference-goers could come, take part, give talks and request things to talk about. This was off the back of PHP North West 14 (PHPNW14) side-track unconference when we realised there was a desire for a smaller, more off-the-cuff event in the UK where anyone could participate.
I organised and ran the Unconferences again with great success in 2015, 2016, 2017 and 2018.
SANS Institute January 2021 - Present
Senior Software Engineer
The team and product that we developed at Helical Levity were aquired by the SANS Institute and we continue our work here.
Improving the platform, integrating with their platforms and pushing forward a new era of online content delivery.
The platform's been used in training scenarios and CTFs for [redacted], [redacted] and even [redacted].
Helical Levity/Magnetic Rock January 2019 - December 2020
Building a new capture the flag (CTF) platform to facilitate competitions and training in the field of cyber security.
Automated testing and full coverage with PHPUnit and Infection for mutation testing. Behat for BDD and Acceptance tests.
Quality and standards enforcement with PHPStan and PHP_CodeSniffer.
Viva IT: August 2015 - December 2018
Senior Software Developer and Community Evangelist
Led a small development team in the creation of a new multi-tenanted distributed-service driven platform supporting the UK's credit unions. Our flagship client was the UK's fastest growing, most profitable Credit Union. We facilitated their growth and high customer satisfaction (98% would recommend) through our platform that transformed a slow, paper-based industry into one that had 24/7 access to account balances, withdrawals, loan processing (with automatic scorecarding & 3rd party credit search integrations) and allowed credit unions to go from taking days (or even weeks) to process loans to just hours.
A gradual transition approach was taken with a seamless integration into their existing system to ensure minimal disruption to their workflows and we made sure that we could deploy multiple times a day to ensure that the pace of our development wasn't a bottleneck.
The areas we worked within often came with some unique constraints that required some creative solutions to integrate separate platforms that typically wouldn't talk to each other.
Technical: Working with Symfony, Doctrine, and multi-tenant environments for distributed-service based applications. Ansible and Vagrant for provisioning, automated CI & builds with TeamCity. Automated and continuous testing using Behat, phpspec and PHPUnit.
Leading and mentoring the development team to continue making high-quality, well tested and robust business-critical software with code reviews, whiteboarding problems and pair programming. Daily scrums, planning poker and sprint retrospectives in leading an agile workflow.
Behaviour driven development and design by examples through conversations and collaboration.
Facilitating and giving talks, knowledge sharing, community events and ongoing learning sessions for apprentices.
Burnthebook: June 2010 - August 2015
UI development in HTML5 & CSS3 with jQuery for enhanced functionality. OO & MVC PHP development, MySQL Database management. Template construction with Smarty, XTemplate and ExpressionEngine's own templating system. Working with version control (Subversion).
Building sites using ExpressionEngine, CodeIgniter (including DataMapper ORM & Nestedsets libraries), and the in-house eCommerce system. From setup, scoping and initial kick-off right through to client delivery, support, maintenance and extension.
In the last couple of years of work at Burnthebook, I heavily focused on the in-house built eCommerce software package. The work included:
- New module architecture, ability to have modular code run in new areas of the site
- Core documentation
- Creating a full base set of templates to allow faster future work
- Load testing and performance testing
- Maintenance, support and bug fixing
Email campaigns, setup of layouts & testing campaigns.
- Scoping of projects & time estimates for technical work,
- Job planning & monthly scheduling,
- Creating project specifications & feature lists,
- Server setup, configuration,
- Load testing, benchmarking & optimisation,
- Reviewing designs, layouts & visuals to identify areas for further discussion into how the design will fit into the functionality of the layout on the Web.
Netready Ltd: September 2008 - April 2010
Junior Software Engineer
Integration of the separate in-house CMS and eCommerce systems into a single package to better suit the needs of clients requiring both Content Management and eCommerce functionality.
Email campaigns, setup of layouts, testing & sending campaigns through the in-house systems.
Overseeing site development, from initial discussion, right through to site delivery, client hand-over, feature-extensions and support.
De Montfort University
BSc (Hons), Internet Computing, 2006 - 2010