Software Engineering. Open to new clients

Highly experienced leading or contributing to all aspects of the SDLC whilst working with all levels of stakeholders from CTO to end-users. A track record of crafting simple working software that lasts.

Node Typescript Go Serverless Backend API

Clients

BuzzMobile

Javascript Engineer
Feb '18 ongoing

Currently working on a startup as the sole developer/CTO. 

Using Nuxt (Vue, Vuex, Webpack) to present a PWA for affiliate mobile phone deals.

Import of unstructured CSV deal data into MongoDb. 

Node API exposes a GraphQL endpoint for the deal data.

Code is on github, hosted on heroku (for now) and developed using Visual Studio Code on a mac.

Airbus (via Unomee)

DevOps Engineer
Nov '17 - Feb '18

Worked with AirBus helping them modernise their entire software delivery approach. 

Have helped setup Github Enterprise, Jira, VersionOne, Jenkins & Octopus to create a .Net CD pipeline on AWS.

Used Docker to take an app and enable it to be tested in a CI pipeline

EnergyScanner (via Unomee)

Architect Developer
Nov '15 - Oct '17

Part of a 4-person team who handled all aspects of software development for a start-up including DevOps and support. 

Responsible for the architecture and development of the API written in ES6 with Babel running on Node using Express. Built via a fairly typical Gulp configuration but also using Flow. Lots of useful integration tests utilising Nock, Mocha, Supertest and Chai. 

Extracted stateless micro-services and moved them over to AWS Lambda using the Serverless framework whilst leaving stateful services running on Heroku with their Mongo add-in.

Front End was in Angular 1 but I was only involved in a React/Redux spike for 6 months.

CI and CD via CircleCI, Heroku and AWS and the pipeline enabled a large number of production deployments with few regressions.

comparethemarket

Senior Web Developer
June '15 - Nov '15

Part of the Motor team working on both Greenfield and Brownfield changes using technologies such as MVC, knockout.js, SQL Server, VB.net, Go, Jira, Slack and Splunk. 

Paired TDD with releases into production every few days or so. 

Mentored permanent staff to try and get them into the best practices CTM foster resulting in high code coverage. 

Helped resolve serious compliance issues and removed a significant amount of dead code.

Transport For London

Tech Lead
Dec '14 - June '15

Joined a new team charged with improving the website through small features, bug fixes and increases in quality. 

Was given the role of Lead Developer ahead of longer serving permanent employees due to my high quality focus, ability to communicate with challenging people and demonstrable experience across the full stack. 

Performed DevOps duties for the team to ensure quality is not sacrificed in an aggressive weekly release cycle. 

It is rewarding to see our work in the hands of millions of users on regular basis and giving them improvements such as fixing security issues, IE9 usability, making the site available over HTTPS and performance improvements via image compression.

Dominos Pizza

Senior Web Developer
Sept '14 - Dec '14

An Angular SPA MVC 5 web application with backend infrastructure, including Web API 2, architected in an onion style. 

Feature Toggling and branch by abstraction were used to help transition to the early stages of a continuous delivery pipeline. 

The site underwent initiatives such as a more responsive approach and the introduction of a formal CMS.

Scribestar (Via Unomee)

Client Side Tech Lead
Feb '13 - Aug '14

Worked in a team of senior developers in re-platforming to a HTML 5 based editor using best practice OSS such as Bootstrap 3, JQuery, Jasmine and Phantom.

Was given the responsibility to design, architect and lead the Silverlight based editor despite never having worked with the technology. 

Helped with the recruitment process to build a team of three and we established a well-defined structured architecture using Prism, MEF, CodedUI and AgUnit, delivering an initial version to showcase to potential investors. 

The server stack was Node.Js and MVC 5 with Knockout and Jasmine, storage consisting of Neo4j, RavenDB and SQL coordinated by C# and RabbitMQ. 

We used SCRUM, TDD, BDD and pair programming to manage software in tandem with CI with Git, Team City and Octopus to allow the QA team to pull builds.

Employers

Employers most recent first

Lloyds Of London (via Riskcare)

Technical Lead
Apr '11 - Feb '13

Quic is a dynamic and functional domain specific language targeting vectorised algorithms processing very large data sets distributed across a compute grid – in this case Microsoft High Performance Cluster. The project was managed using elements of SCRUM such as stand ups that I introduced and fortnightly sprints with Test Driven Development, Continuous Integration using Bamboo and Version control using SubVersion. The requirement was to translate quant derived specifications in excel into Quic Script modules which could be assembled at run time by a configuration mechanism.

Introduced PowerShell to augment the development process by creating scripts, which could be used to generate code templates and validate configurations. The success of these expanded to encompass all aspects of the development, deployment and execution processes.

Created a C# 4.0 console application that used Task Parallel Library, memory mapped files and Map Reduce to solve processing of very large text files (GBs).

Based on a prototype I developed in PowerShell, I demonstrated and got approval from the client for a visualisation project. The client reaped benefits of visualising the model as it led to the ability to refactor the model, understand the complexity, data flow and allowed lay people to understand it and became the de-facto representation.

I was personally asked to return by the client, this time as a Developer/Architect to join a team of two to assist them with the Service Oriented Architecture and design of a set of RESTful services to abstract the scheduling and management of long duration model runs.

The implementation technologies were WCF C# 4.0, SQL Server 2008 via Entity Framework all backed by TFS. I managed the transition to TFS and setup the
entire development process, tooling, best practices (such as Continuous Integration) and standards before helping to deliver the framework. I designed and developed the most complex service, which was to abstract the compute infrastructure and scheduling aspects. It was robust and successful enough that it is being rolled out to other departments. We started using an  Agile TDD approach but later retrofitted a Behaviour Driven approach using SpecFlow as we felt the lack of requirements was too risky. 

I later also worked on enhancing some GUIs built using WPF and a lighter MVVM framework. I championed automated testing to the point where we could, as part of a TFS MSBuild process, test all tiers of the services, which were auto-deployed via WIX packages, and issue a model run onto the compute infrastructure. 

Travelex

Multiple Roles
Sept '08 - Apr '11

I was promoted to Technical Lead after six weeks after demonstrating drive in our task to take over from the experienced contractors whilst not slowing the delivery. 

The project design was mostly complete but priorities were constantly changing, as the business did not understand the customer base. As such, there was constant pressure to branch the code into multiple code bases but I resisted those pressures and stuck to a single code base with optional features. The technology was ASP.Net web forms, SQL Server 2005, VB.Net and C#. Net 2.0, TFS 2005 all following a waterfall approach. We had dependencies on Web Services created by the Canadian team, which turned out to be full of anti-patterns and not production ready. It was a key part of the business process as it interfaced with the card processor itself. I proposed replacing it with legacy VB.Net DLLs but this only got approval if time scales were not to be impacted. 

Planned and lead an overnight deployment as we had a few live customers. It was a success and without it, the product would not have been able to scale to supporting over 50 customers and had the lowest incident rate of any application in the organisation. 

Due to the proud success of taking and leading a project without proper requirements into production and beyond, my talents were recognised and success rewarded by promotion to Application Architect and Microsoft Practice Lead. 

Together with another Architect, I conceived, promoted, documented and implemented a Microsoft practice based around TFS and the SCRUM template. The architecture was a best of breed utilising SOLID, MVC, TDD and Open Source Software such as RhinoMocks and StructureMap. Along with the leading enhancements to the B2B site, I was given the lead role for a Real Time exchange rate optimisation application with a MVC front end for another division. I used MSMQ to broker between the Reuters rate feed and the user defined watch windows. The project was the most challenging project I have worked on because the team was mostly part time and very junior and no additional training time was allocated. The same person fulfilled the project manager and business analyst roles despite no prior experience. Despite these immense challenges, we delivered the system into production and saved the division a significant sum. The architecture and delivery pipeline has since been used to build other applications. 

This role required recruitment, man management, planning, appraisals and 360 reviews.

Business Control Solutions

Senior Web Developer
Feb '08 - Sept '08

Helped increase throughput of a Web MVC application by 20% by carrying out Load Testing

Development and Load Testing of a high throughput web based intranet balance sheet reconciliation application. Written in the MVC style using Castle Monorail and a rich client side Web 2.0 based UI

NFS Hospitality

Senior Web Developer
Sept '05 - Feb '08

Headhunted by a previous Project Manager to form the core of a new team entrusted with a radical overhaul of existing off-shore development

Installed, configured and evaluated CI platforms for the company and selected Cruise Control which helped to radically alter the development eco-system 

Design and development of a Greenfield ASP.Net web forms intranet application using CSLA which we extended to include NHibernate to form a database neutral product framework with entities code generated using custom CodeSmith templates

Design and development of a Greenfield ASP.Net SOAP Web Service

Design and development of a Greenfield Outlook COM add-in to integrated with the above Web Service to allow bookings with in outlook

Design and development of a Greenfield COM callable wrapper to enable customization of till receipts from an EPOS system. Written using plug-in and chain of responsibility patterns

CGI

Graduate to Senior Developer
Sept '00 - Aug '05

Joined the graduate program

Rapid salary growth ensued as my natural software engineering instincts were rewarded in reviews such that I started as a support engineer and left whilst in the development team

Overtook and became the senior member in a small team 
Optimised a manual and document centric process by introducing templates and scripting deployments

Support and enhancement of a Brownfield Pensions illustration system for Prudential written in an in-house 4GL employing Oracle and Crystal Reports. The complex calculations were serviced by a VB6 MTS server wrapping a C++ quotation engine in partnership with a Java bulk quotation server
Development of a win forms Composite Application Block award winning interface for Forrester Life