Seasoned software engineering professional with an entrepreneurial spirit.
Spent 20+ years building software across many industries and business sizes, gaining experience with everything from platform and language changes to complete software development paradigm shifts.
Analytical, recognising new opportunities, spotting problems and recommending/building software solutions to help streamline business processes to meet business requirements.
This led to founding Alchemist Labs, building new software products and sharing experience to help other companies improve their competitive edge in this new cloud first, mobile first world.
- Cloud Providers
Amazon Web Services, Google Cloud Platform, Microsoft Azure
- Backend Languages
React, NextJS, Gatsby, GraphQL, ASP.NET MVC
DynamoDB, Elasticsearch, MSSQL/MySQL, PostgreSQL
- Container Orchestration
Kubernetes, ECS, Docker
React Testing Library, NUnit, Jest
- Dev/Git Ops
Terraform, CircleCI, GitLab, GoCD, ArgoCD, Jenkins
** This list is limited to more recently used technologies and is by no means exhaustive. **
- Software Development
Creative and technical expertise in software development, leading projects from conception to completion through the full development life cycle, with adherence to SOLID development principles.
- Project Planning
Thorough working knowledge of software development life cycle methodologies (Agile Kanban/Scrum/Lean). Regularly ran Kanban and Agile Scrum sprints. Delivering all sprint ceremonies.
- Team Working
Positively work with others, using pair/mob programming approaches. Experience of managing expectations and deliverables across teams in multiple departments.
- Remote Working
Seasoned remote worker. Have worked as Principal Software Engineer as part of a remote team and also completed many personal/side contract jobs 100% remote.
- Customer Focus
Ability to work positively with internal and external clients and partners. Interacting with the business, clients, suppliers and developers to ensure the needs of all parties are met.
- People Management
A supportive, mentor to other team members, developing skills, training and providing code reviews.
Designed and built a new multi account AWS infrastructure using the latest version of Terraform. The code is fully modularised and builds out multiple complete VPCs. IAM Users & Roles are centrally managed through a separate security account and all credentials are secured by encryption at the point of creation via Keybase.
Defined coding standards and coding style for Alchemist Labs own .NET Core 3.1 microservices. Built various Nuget packages to allow all projects to be built in a consistent style. All services are containerised and running in Elastic Container Service (ECS). All projects are automatically built and tested, with the code deployed and Terraform applied by CircleCI.
Completed multiple website projects. All built using the latest versions of React with the latest features such as Hooks and Context API. Websites have used various frameworks including NextJS and Gatsby.
- Digital Transformation
Consulted on Digital Transformation for a large Manchester based e-commerce enterprise. Successfully migrated their mission critical Hybris system and supporting Oracle RAC databases, from IBM SoftLayer to AWS. Introduced new CI/CD pipelines (Jenkins) to ensure the Java micro services could be tested and deployed automatically. All AWS infrastructure was created and managed using Terraform.
- AWS Infrastructure
Built an entirely new AWS Infrastructure using Terraform. This included 4x different AWS accounts. Infrastructure, Dev, QA & Prod. Was responsible for all aspects of the infrastructure and securing all resources, including configurations for both site to site and point to site VPN.
- Sales Import
The first major project was to completely overhaul the internal sales import process. As principal engineer I analysed the existing system, and built a new system on top of the AWS Infrastructure we put in place. The new system (WebAPI hosted in ECS) validated, staged and processed data using AWS Lambda functions in minutes and published sales data to SQS which then pushed data into Elasticsearch. The original system would take hours to process the same data, and was massively prone to errors and impacted performance of all other Ditto systems.
- Sales Area
React based web application which displayed customer dashboards with interactive graphs. Data for the graphs was obtained via various API's which talked to a number of different data sources including GraphQL, Elasticsearch and MySQL. The system was massively performant and easily handled accounts of all sizes with data sets of all sizes, replacing an old system which failed to even load for the larger accounts.
- Network Logging and Service Alerting
Built a logging api and supporting package used in all our applications/services to push all log data to Elasticsearch. Then used Cloudwatch Alarms to monitor various metrics which would raise alarms, publish to SNS and then trigger a series of Lambda functions to push alerts out to various people/places based on severity, including Slack channels/SMS/email.
- Ditto Vault
My 10% time project which allows users to store/retrieve passwords/documents. The system stored documents in DynamoDb so was queryable in the ReactJS based web front end, and all user documents were stored in S3. Both DynamoDb and S3 documents/objects were encrypted by KMS.
- AWS Migration
Migrated ~30 mission critical legacy services running on a single server. To be independent services, hosted on various parts of Amazon Web Services. This included risky refactoring/rewriting parts of the services, replacing unsupported technologies such as MSMQ with SNS/SQS. The services now utilise many different parts of the AWS offerings, such as Lambda, Elastic Beanstalk, Code Deploy, DynamoDB, Route53, CloudWatch, S3, EC2 to name a few. All services/infrastructure is expressed as Terraform meaning, repeatable deployments with opportunity for human error greatly reduced.
- Communication Service
Led the design of a communication service, that enabled the business to have 2 way SMS communication between customers and sales partners for the first time. I used the opportunity to explore AWS Lambda, which was a huge success for the business. Lambda greatly reduced the complexity of the solution. It was faster to build, easier to maintain and financially very efficient. Senior I.T. management have said it’s the most scalable, resilient service we have, and is almost completely free to operate. This was the first Lambda function at Zuto and I presented a brown bag to the rest of the company to explain the implementation and reasoning for using the technology.
- Secure Document Upload
I built an entirely new document upload component for our website, that enabled customers to safely upload sensitive documents such as passports, photo id's, finance agreements and other documents in line with new GDPR requirements. I opted to build this using React/Redux which others on our team were not experienced with, but was used elsewhere on the website by other teams. First I built a proof of concept and presented to the team. I then paired with other team members, teaching them React/Redux. Before long, the team was working independently and extending the component until it supported all the various document types.
Re-architected and correctly implemented the in-house CQRS system which I inherited.
- Routing Slip Saga
Analysed confusing legacy code which had become a myriad of commands calling commands and replaced with a fully distributed Saga utilising the Routing Slip Pattern. Supporting both RabbitMQ and Azure Service Bus message brokers based on environment using dependency injection.
- OpenID Connect / OAuth2 Authentication / Authorisation / SSO
Implemented a centralised OpenID Connect/OAuth2 authentication/authorisation system using IdentityServer. This replaced the existing bespoke login system used in all web applications. Enabling single sign-on for users using Azure AD/Google/Facebook/Twitter etc.
- Distributed Scheduler
Lead development from inception to delivery of a system, capable of running tasks/applications across multiple servers. Workers were configurable to use parallelisation where necessary. The system provided up to date performance data so that the business could perform valuable data analysis.
- Data Collection
Redesigned a legacy data collection system written in Python with an up to date C# equivalent. This drastically improved the speed and reliability when gathering conversion and performance data from 3rd party APIs, and inserting it into client databases. The performance and conversion data was then matched across sources to allow for easier querying and path to conversion analysis. The data was fed into a dashboard to ensure accuracy before presentation to clients.
- Automated Trafficking
Designed and wrote a tool to automate the process of trafficking display campaigns into Atlas and DCM ad serving platforms. The tool greatly reduced the time needed to launch business critical advertising campaigns.
- Alchemist Labs
- Founder & Managing Director
- Ditto Music
- Principal Software Engineer
- Senior Software Engineer
- Senior Software Developer (Team Leader)
- MediaCom North
- Senior Systems Developer
- 3-Si Limited
- Software Developer
- Shire Dental/Consulsoft
- Software Developer
- Huntleigh Renray
- Software Developer
- Tissue Science Laboratories
- Software Developer