I'm learningAngular & TypeScript
I'm makingscalable fundraising support for The Big Give,
an app for festivals & some dubious electro music
Sep 2018 — Jan 2019
A modern Android & iOS app for making secure, unique-per-site passwords. Adopts the deterministic PasswordMaker protocol used by several browser extensions and older apps, while supporting new mobile devices. Built with the latest Ionic and Angular.
Ionic Angular TypeScript
The Big Give provides a platform for matched fundraising, bringing charities together with generous pledgers and donors whose contributions can be doubled.
While helping inform work on a new platform, I've also been retrofitting DevOps best practices to a large legacy codebase dating back over 10 years. This included a shift to 12-factor apps, moving from a "snowflake" server that couldn't easily scale to AWS ECS containers, and managing infrastructure as code with Terraform. I also introduced proper load tests and arranged an independent security audit, to ensure campaigns could run smoothly and keep stakeholders' data safe.
Building practical improvements on this codebase with limited time, we made it suitable for an emergency appeal in response to the Indonesia earthquake and tsunami and for the 2018 Christmas Challenge, which raised a record £13.3m.
Success at School is a platform that connects students to employers and provides career & study advice.
Initially 2014 — 2016 and resuming over the past few months, I've been the primary developer improving and adding to the site's existing Symfony codebase. In 2018 I've focused on security and modernising the system's infrastructure & deployment processes.
Lead developer improving existing codebase
Oct 2015 — Apr 2018
My role at Comic Relief focused on Payment processing, Identity APIs and Giving Pages. I worked on the ongoing transition of these to microservices, and intelligent front-end journeys built with reusable React components.
I supported a move to Cloud Foundry and 12-factor apps that are run with Docker during development, used Terraform to manage supporting AWS services, and helped configure new Concourse CI pipelines for several projects.
In 2017 we launched year-round Giving Pages, allowing fundraisers to collect sponsorship at any time on a convenient platform, without losing any portion of donations to third-party fees. The system's designed to support quicker addition of specific campaigns like Sport Relief 2018 too. The Identity and Payment APIs supported the Sport Relief steps app and are tested at scale to handle the massive load spikes of the annual campaign.
The Payment service I worked on leveraged Omnipay to support multiple payment service providers, while offering a common interface that could be shared across Comic Relief sites that need to take money. I also contributed to a new open source Omnipay adapter for Worldpay's Hosted Corporate Gateway, allowing Comic Relief to process donations reliably at higher volumes.
Part of cross-functional agile team
Cloud Foundry AWS Terraform PHP Slim Behat MySQL React HTML CSS RabbitMQ Solr
Launched Jul 2015
When.fm is a mobile app for planning what to see at a music festival. It uses hybrid technologies to leverage native device plugins across iOS & Android.
Tests run on PHPUnit, Protractor & Karma. The back-end has a Jenkins CI server for tests and quality assurance.
A shiny new front-end built with the latest Ionic and Angular is coming summer 2018!
AngularJS PHP Symfony MySQL HTML CSS Cordova / Phonegap Ionic
Sep 2011 — Present
Since working full-time with Park Cameras 2011–12, I have since helped on a freelance basis with projects covering pricing, shipping and customer satisfaction, amongst others.
I have worked on existing codebases spanning a wide range of technologies, and integration with numerous third-party APIs.
Mostly solo projects
Launched Dec 2014
Hour of Writes is a weekly creative writing competition. Throughout its development I've worked with several parties to implement a carefully refined design and add features to our initial prototype.
I wrote the live site's server-side code and most front-end scripts & CSS.
All initial server-side and most front-end development
Aug 2013 — Nov 2013
I prototyped new features and refactored existing code, as well as writing components for a new bespoke framework to form a basis for future sites.
I delivered features successfully, and optimised database use to speed up some key queries by orders of magnitude.
Working with & refactoring existing codebase
PHP MySQL HTML CSS3
Aug 2012 — Jun 2013
I was often the main developer on hand supporting & developing a network of recruitment sites for the arts, the largest with 300,000 active users.
I improved database use to cut the biggest site's server response time by over 50%, and led a major database conversion to fix a long-standing text encoding problem.
I consulted with staff to build a more intuitive interface for employers to manage audition slots, and a redesigned newsletter which displays well in all common email clients.
Adapting existing codebase
PHP MySQL HTML CSS3 jQuery inc. mobile optimisation / responsive design
2010 — 2011
Switched after 2 years of Philosophy; whirlwind coverage of a broad range of technologies including Java, Prolog, C, Unix tools, databases, MIPS and theory around security, algorithms, graphics and mathematical methods, amongst others.
SQL Java Prolog C Unix tools
Sep 2009 — Feb 2010
I developed a new flexible platform which allowed for online ticket payments, and a custom barcode system that made entry faster and avoided the old solution's dependence on antiquated hardware.
PHP MySQL HTML CSS + PayPal integration
2005 — 2006
Various freelance projects
Took on several development projects, mostly using PHP, including a system to run an aquarium competition and customising CubeCart.
PHP MySQL HTML CSS + PHPNuke CMS mod & CubeCart commerce system