Simon Emms

Software Engineer, DevOps, Solutions Designer

Skills
Languages and Frameworks
NodeJS
TypeScript
PHP
Python
Go
Express
Restify
Vue
Angular
React
DevOps
Docker
Kubernetes
Ansible
Terraform
Git/SVN
CI/CD
Semantic Release
GitOps
Cloud Providers
AWS
Azure
DigitalOcean
Google Cloud Platform
Data Stores
MySQL
PostgreSQL
MongoDB
ElasticSearch
Cassandra
RabbitMQ
Principles
Design Patterns
SOLID
12 Factor App
MicroServices
Agile (Scrum/Kanban)
Other
IoT
OpenFAAS
Mentoring
Leadership
Education
2001 - 2004
International Politics and Strategic Studies|University of Wales, Aberystwyth
Interests
Gardening
Beekeeping
Birdwatching
Profile
An engineer with a wealth of experience in technical leadership, the software development life cycle and implementing a DevOps culture in an existing team. With over a decade of experience building highly scalable software, I can quickly grasp even the most-poorly documented software and communicate solutions to appropriate stakeholders. I am experienced in mentoring junior team members, building up their confidence and skills and providing technical direction to the whole team.
Projects
BrowserSpy|browserspy.io
NodeJSTypeScriptVueMongoDBSocketIODockerKubernetesGitLabAutomationMicroServicesSolutions Design
A testing tool that records all website events for replaying at a later date with a simple, two-line installation that works cross-platform.
  • Designed a scalable microservice architecture that is able to work with third-party APIs for authentication and issue tracking. The API is flexible enough to implement additional third-party services at a later date by creation of an appropriate strategy. The service records large amounts of binary data so made use of cloud data buckets for optimal read/write capability.
  • Established a DevOps workflow using Kubernetes with feature-branch deployments. Configured a full CI/CD suite, made a series of reusable CI functions to ensure terse configuration files. Maintained a separation between processes that needed to be real-time and ones that could be batch-processed later to reduce costs.
  • Developed a recorder that is installed and configured in the user’s browser that intercepts the relevant global DOM objects and pushes the events to a message queue for later processing into a playable timeline. Established metrics with automated tests to ensure that these adhere to appropriate performance criteria.
  • Built a playback service that processed the events into the correct order with all relevant bucket data pre-loaded. Implemented an iterator pattern to load the data in segments to give a smooth playback experience.
Work Experience
Apr 2020 - Present
Lead DevOps Consultant (contract)|Foundry4
AzureGoogle Cloud PlatformServerlessOpenFaaSTerraformKubernetesHelmGitOpsAutomationCI/CDSemantic ReleaseNodeJSPHPRPythonArchitecture
Provided DevOps leadership and consultancy services to help Foundry4 clients level-up their DevOps capability
  • Worked with significant clients, including Ofgem, the British Red Cross and HM Planning Inspectorate, on a wide range of projects. The key arbiter of success was the ability to keep ahead of current trends in DevOps and being able to explain these to technical and business stakeholders.
  • Worked across a range of technologies and patterns, dependent upon the client’s skill set and experience. The role was split between architecture and planning, hands-on technical and stakeholder management.
  • Provided technical leadership, both amongst the Foundry4 team and client team, running structured and ad-hoc training sessions. These were focused on the new patterns and workflows being implemented as part of the programme the consultancy was engaged in delivering but often covered additional topics as necessary.
  • Kubernetes and GitOps was a regular feature of the work delivered but included many different features of the cloud providers used. There was a strong focus on automation, self-service, reliability and monitoring.
Nov 2016 - Aug 2019
Platform Engineer (contract)|Energy Systems Catapult
NodeJSAngularPythonRMongoDBPostgreSQLGraphDBDockerKubernetesSparkKafkaIoTHardwareAWSAutomationMicroServices
Inherited an undocumented codebase from a third-party, including an unsupported proprietary graph database and worked to achieve a stable platform to provide domestic heating for trials involving 30 and 100 homes.
  • Working within tight constraints I developed key components for the system that would ensure a standard of reliability to safeguard all users, particularly those vulnerable to downtime.
  • Developed strong working relationships with key members of different teams to fully understand real-world issues with the applications and established proposals to address them.
  • Worked with the data science team to provide an additional software resource especially with R, Spark and Cassandra, technologies I was previously unfamiliar with.
  • Took responsibilities as interim scrum master when the need arose and managed interactions with third-party development partners.
  • Encouraged use of best practice, especially amongst junior developers mentored.
Jan 2016 - Apr 2016
Lead Engineer (contract)|Cromwell Tools
NodeJSES6TypeScriptMongoDBAWSDockerRabbitMQAutomationWorkshopsLeadershipSolutions Design
Led the NodeJS development team on a replacement API for the main website, which had to maintain backwards compatibility with the existing website.
  • Established weekly workshops to educate the team on best practice in NodeJS and MongoDB.
  • Managed the sprints and the whole agile process. The teams were spread across three different locations and, initially, the communication was poor. Improved this by tightening the agile disciplines.
  • Encouraged the adoption of microservices for admin processes. Proposed an architectural design for this solution and implemented it.
Oct 2015 - Jan 2016
Senior Software Engineer (contract)|CDG Group
NodeJSJavaScriptES6AngularJSD3AutomationSocketIO
Brought in to provide Angular and D3 expertise. As a pure Java house, they had limited knowledge of front-end JavaScript. Improved their usage to provide a more consistent and an easier development experience.
  • Rewrote the front-end for their main Lean Client product. Although marketed as a single application, in reality it was a suite of software. Configured this to build to a Docker image
  • Created a Yeoman generator for fast construction of new AngularJS modules. This was partly to enforce consistency, but to help the Java engineers gain familiarity in JavaScript.
  • Developed a comprehensive form generator to enable the API to generate a schema that would display the user input in a consistent way.
  • Provided training to the Java engineers on how to use JavaScript, Angular and their associated ecosystems and how to develop and deploy with the module framework I developed.
Sep 2014 - May 2015
Senior Software Engineer (contract)|Wealth Wizards
NodeJSPHPAngularJSD3AutomationMongoDB
Developed both front and back-end components as part of a team that created an automated pension advice system.
  • Collaborated to design and implement a Data Definition Language for the PHP back-end to publish a comprehensive question schema. This schema would be ingested by the Angular front-end to dynamically generate the form, which could be defined on a per-broker basis.
  • Built a series of reusable Angular components to be used across the platform.
  • Developed a PDF report generator for the broker’s advice to be displayed with D3 infographics. Worked closely with the firm’s pension advisers to ensure accurate and FCA compliant reports.
Oct 2012 - Aug 2014
Senior Software Engineer|GeoPost (now DPD UK)
NodeJSMongoDBMySQLRocket UniVerseAutomationWorkshops
Worked on the main DPD/Interlink RESTful API. Written in pure NodeJS, this business-critical service was responsible for handling requests for web users, depot operations and receiving batch data from senders.
  • Implemented continuous integration principles to the development workflow. Due to the company being a round-the-clock operation, worked with the SysOps team to reduce the time required for software upgrades.
  • Principal engineer on the industry-leading Follow My Parcel service, which included being part of the team that designed the architecture. The primary problem was that the current system was not designed for real-time tracking as the central database was monolithic and unscalable. The design and implementation needed to encompass methods of achieving live updates without huge expense or causing service outage. This was the flagship project that year and a major USP for the company, whilst handling a large increase in daily requests - ~700,000 and ~900,000 on Xbox One and PS4 launch days respectively.
  • Wrote a pure JavaScript driver for the Rocket UniVerse NoSQL database. As UniVerse is a proprietary piece of software with little public documentation available, this required reverse engineering the Java driver and translating into NodeJS. As a fundamental piece of the live tracking architecture, this reliably handles millions of requests per day.
  • Ran training sessions to upskill non-JS developers to be proficient in the NodeJS platform.
Mar 2012 - Sep 2012
Web Developer (contract)|Torpedo Group
PHPMODXMySQLMobile Development
  • Built various websites using the MODX content management system.
  • Created a business analytics system for major clients to track engagers of their sites and social media accounts.
  • Made extensive use of responsive web design and Twitter Bootstrap to create mobile-first pages.
Mar 2011 - Feb 2012
Lead Developer|BugFinders
PHPMySQLSolutions Design
  • Built the alpha-release of the BugFinders project, featuring complexities such as a streaming video server, internationalization and responsive mobile site.
  • Also responsible for managing the development team, liaising with external suppliers and helping develop the business proposition.
  • The main development was in PHP/MySQL, however there was a great deal of time spent learning new technologies (such as OAuth, Java and Python) and learning testing methodologies.
Dec 2010 - Mar 2011
PHP Developer (contract)|Big Eye Deers
PHPMySQLApache SolrLeadershipSolutions Design
  • Lead development of the new British Pathé website, featuring over 90,000 videos and a large database schema.
  • As well has being involved with the planning and building of the project, I learnt how to use Apache Solr which, at the time, was largely undocumented and entirely unused in a PHP environment.
Jul 2010 - Oct 2010
Platform Programmer (contract)|Red Procurement
PHPMySQLMS-SQLDoctrineSolutions Design
  • Designed and built Streamline, a purpose-built tool to aid procurement managers track their workflow and costs and for directors to see company-wide trends.
  • Due to the sensitive nature of the data generated, one requirement was for this project was for it to be deployable on both Windows and Linux servers, connecting to MySQL or MS-SQL databases. Using Doctrine ORM to abstract the data stores and heavy use of unit testing to ensure consistency achieved this.
Jan 2010 - Jun 2010
Platform Developer|Maverick Television
PHPMySQLZend
  • Developed a bespoke CMS for a multi-million pound NHS project using the Zend framework.
  • The platform made heavy use of video integration and web services from various NHS and third-party sources.
Nov 2009 - Jan 2010
PHP Developer (contract)|Richmond Group
PHPMySQL
  • Fire-fighting role doing emergency updates on the business-critical Loanfinder.co.uk website.
  • For longer-term stability, implemented various structural improvements to the development team. These included a full version control, a standardised development environment, test-driven development and formal programming standards.
Mar 2009 - Sep 2009
PHP Developer (contract)|NamesCo
PHPMySQLLeadership
  • Headed development of a complex ecommerce system with a team of five developers.
  • The software was built on an extensible in-house object orientated framework to which I made various critical updates.
Sep 2007 - Jun 2008
PHP Developer|Real Ale Shop
PHPMySQL
Developed an ecommerce system for drop-shipping start-up.
Apr 2006 - Aug 2008
PHP Developer|Northwick Events
PHPMySQL
Developed an admin system for an events management company, to automate much of the company's admin processes.
Skills
Languages and Frameworks
NodeJS
TypeScript
PHP
Python
Go
Express
Restify
Vue
Angular
React
DevOps
Docker
Kubernetes
Ansible
Terraform
Git/SVN
CI/CD
Semantic Release
GitOps
Cloud Providers
AWS
Azure
DigitalOcean
Google Cloud Platform
Data Stores
MySQL
PostgreSQL
MongoDB
ElasticSearch
Cassandra
RabbitMQ
Principles
Design Patterns
SOLID
12 Factor App
MicroServices
Agile (Scrum/Kanban)
Other
IoT
OpenFAAS
Mentoring
Leadership
Education
2001 - 2004
International Politics and Strategic Studies|University of Wales, Aberystwyth
Interests
Gardening
Beekeeping
Birdwatching
Projects
BrowserSpy|browserspy.io
NodeJSTypeScriptVueMongoDBSocketIODockerKubernetesGitLabAutomationMicroServicesSolutions Design
A testing tool that records all website events for replaying at a later date with a simple, two-line installation that works cross-platform.
  • Designed a scalable microservice architecture that is able to work with third-party APIs for authentication and issue tracking. The API is flexible enough to implement additional third-party services at a later date by creation of an appropriate strategy. The service records large amounts of binary data so made use of cloud data buckets for optimal read/write capability.
  • Established a DevOps workflow using Kubernetes with feature-branch deployments. Configured a full CI/CD suite, made a series of reusable CI functions to ensure terse configuration files. Maintained a separation between processes that needed to be real-time and ones that could be batch-processed later to reduce costs.
  • Developed a recorder that is installed and configured in the user’s browser that intercepts the relevant global DOM objects and pushes the events to a message queue for later processing into a playable timeline. Established metrics with automated tests to ensure that these adhere to appropriate performance criteria.
  • Built a playback service that processed the events into the correct order with all relevant bucket data pre-loaded. Implemented an iterator pattern to load the data in segments to give a smooth playback experience.
Work Experience
Apr 2020 - Present
Lead DevOps Consultant (contract)|Foundry4
AzureGoogle Cloud PlatformServerlessOpenFaaSTerraformKubernetesHelmGitOpsAutomationCI/CDSemantic ReleaseNodeJSPHPRPythonArchitecture
Provided DevOps leadership and consultancy services to help Foundry4 clients level-up their DevOps capability
  • Worked with significant clients, including Ofgem, the British Red Cross and HM Planning Inspectorate, on a wide range of projects. The key arbiter of success was the ability to keep ahead of current trends in DevOps and being able to explain these to technical and business stakeholders.
  • Worked across a range of technologies and patterns, dependent upon the client’s skill set and experience. The role was split between architecture and planning, hands-on technical and stakeholder management.
  • Provided technical leadership, both amongst the Foundry4 team and client team, running structured and ad-hoc training sessions. These were focused on the new patterns and workflows being implemented as part of the programme the consultancy was engaged in delivering but often covered additional topics as necessary.
  • Kubernetes and GitOps was a regular feature of the work delivered but included many different features of the cloud providers used. There was a strong focus on automation, self-service, reliability and monitoring.
Nov 2016 - Aug 2019
Platform Engineer (contract)|Energy Systems Catapult
NodeJSAngularPythonRMongoDBPostgreSQLGraphDBDockerKubernetesSparkKafkaIoTHardwareAWSAutomationMicroServices
Inherited an undocumented codebase from a third-party, including an unsupported proprietary graph database and worked to achieve a stable platform to provide domestic heating for trials involving 30 and 100 homes.
  • Working within tight constraints I developed key components for the system that would ensure a standard of reliability to safeguard all users, particularly those vulnerable to downtime.
  • Developed strong working relationships with key members of different teams to fully understand real-world issues with the applications and established proposals to address them.
  • Worked with the data science team to provide an additional software resource especially with R, Spark and Cassandra, technologies I was previously unfamiliar with.
  • Took responsibilities as interim scrum master when the need arose and managed interactions with third-party development partners.
  • Encouraged use of best practice, especially amongst junior developers mentored.
Jan 2016 - Apr 2016
Lead Engineer (contract)|Cromwell Tools
NodeJSES6TypeScriptMongoDBAWSDockerRabbitMQAutomationWorkshopsLeadershipSolutions Design
Led the NodeJS development team on a replacement API for the main website, which had to maintain backwards compatibility with the existing website.
  • Established weekly workshops to educate the team on best practice in NodeJS and MongoDB.
  • Managed the sprints and the whole agile process. The teams were spread across three different locations and, initially, the communication was poor. Improved this by tightening the agile disciplines.
  • Encouraged the adoption of microservices for admin processes. Proposed an architectural design for this solution and implemented it.
Oct 2015 - Jan 2016
Senior Software Engineer (contract)|CDG Group
NodeJSJavaScriptES6AngularJSD3AutomationSocketIO
Brought in to provide Angular and D3 expertise. As a pure Java house, they had limited knowledge of front-end JavaScript. Improved their usage to provide a more consistent and an easier development experience.
  • Rewrote the front-end for their main Lean Client product. Although marketed as a single application, in reality it was a suite of software. Configured this to build to a Docker image
  • Created a Yeoman generator for fast construction of new AngularJS modules. This was partly to enforce consistency, but to help the Java engineers gain familiarity in JavaScript.
  • Developed a comprehensive form generator to enable the API to generate a schema that would display the user input in a consistent way.
  • Provided training to the Java engineers on how to use JavaScript, Angular and their associated ecosystems and how to develop and deploy with the module framework I developed.
Sep 2014 - May 2015
Senior Software Engineer (contract)|Wealth Wizards
NodeJSPHPAngularJSD3AutomationMongoDB
Developed both front and back-end components as part of a team that created an automated pension advice system.
  • Collaborated to design and implement a Data Definition Language for the PHP back-end to publish a comprehensive question schema. This schema would be ingested by the Angular front-end to dynamically generate the form, which could be defined on a per-broker basis.
  • Built a series of reusable Angular components to be used across the platform.
  • Developed a PDF report generator for the broker’s advice to be displayed with D3 infographics. Worked closely with the firm’s pension advisers to ensure accurate and FCA compliant reports.
Oct 2012 - Aug 2014
Senior Software Engineer|GeoPost (now DPD UK)
NodeJSMongoDBMySQLRocket UniVerseAutomationWorkshops
Worked on the main DPD/Interlink RESTful API. Written in pure NodeJS, this business-critical service was responsible for handling requests for web users, depot operations and receiving batch data from senders.
  • Implemented continuous integration principles to the development workflow. Due to the company being a round-the-clock operation, worked with the SysOps team to reduce the time required for software upgrades.
  • Principal engineer on the industry-leading Follow My Parcel service, which included being part of the team that designed the architecture. The primary problem was that the current system was not designed for real-time tracking as the central database was monolithic and unscalable. The design and implementation needed to encompass methods of achieving live updates without huge expense or causing service outage. This was the flagship project that year and a major USP for the company, whilst handling a large increase in daily requests - ~700,000 and ~900,000 on Xbox One and PS4 launch days respectively.
  • Wrote a pure JavaScript driver for the Rocket UniVerse NoSQL database. As UniVerse is a proprietary piece of software with little public documentation available, this required reverse engineering the Java driver and translating into NodeJS. As a fundamental piece of the live tracking architecture, this reliably handles millions of requests per day.
  • Ran training sessions to upskill non-JS developers to be proficient in the NodeJS platform.
Mar 2012 - Sep 2012
Web Developer (contract)|Torpedo Group
PHPMODXMySQLMobile Development
  • Built various websites using the MODX content management system.
  • Created a business analytics system for major clients to track engagers of their sites and social media accounts.
  • Made extensive use of responsive web design and Twitter Bootstrap to create mobile-first pages.
Mar 2011 - Feb 2012
Lead Developer|BugFinders
PHPMySQLSolutions Design
  • Built the alpha-release of the BugFinders project, featuring complexities such as a streaming video server, internationalization and responsive mobile site.
  • Also responsible for managing the development team, liaising with external suppliers and helping develop the business proposition.
  • The main development was in PHP/MySQL, however there was a great deal of time spent learning new technologies (such as OAuth, Java and Python) and learning testing methodologies.
Dec 2010 - Mar 2011
PHP Developer (contract)|Big Eye Deers
PHPMySQLApache SolrLeadershipSolutions Design
  • Lead development of the new British Pathé website, featuring over 90,000 videos and a large database schema.
  • As well has being involved with the planning and building of the project, I learnt how to use Apache Solr which, at the time, was largely undocumented and entirely unused in a PHP environment.
Jul 2010 - Oct 2010
Platform Programmer (contract)|Red Procurement
PHPMySQLMS-SQLDoctrineSolutions Design
  • Designed and built Streamline, a purpose-built tool to aid procurement managers track their workflow and costs and for directors to see company-wide trends.
  • Due to the sensitive nature of the data generated, one requirement was for this project was for it to be deployable on both Windows and Linux servers, connecting to MySQL or MS-SQL databases. Using Doctrine ORM to abstract the data stores and heavy use of unit testing to ensure consistency achieved this.
Jan 2010 - Jun 2010
Platform Developer|Maverick Television
PHPMySQLZend
  • Developed a bespoke CMS for a multi-million pound NHS project using the Zend framework.
  • The platform made heavy use of video integration and web services from various NHS and third-party sources.
Nov 2009 - Jan 2010
PHP Developer (contract)|Richmond Group
PHPMySQL
  • Fire-fighting role doing emergency updates on the business-critical Loanfinder.co.uk website.
  • For longer-term stability, implemented various structural improvements to the development team. These included a full version control, a standardised development environment, test-driven development and formal programming standards.
Mar 2009 - Sep 2009
PHP Developer (contract)|NamesCo
PHPMySQLLeadership
  • Headed development of a complex ecommerce system with a team of five developers.
  • The software was built on an extensible in-house object orientated framework to which I made various critical updates.
Sep 2007 - Jun 2008
PHP Developer|Real Ale Shop
PHPMySQL
Developed an ecommerce system for drop-shipping start-up.
Apr 2006 - Aug 2008
PHP Developer|Northwick Events
PHPMySQL
Developed an admin system for an events management company, to automate much of the company's admin processes.