I am a Software Engineer currently working at EVRYTHNG. I have over 5 years experience developing high-quality applications that are robust and scalable. I've also led a number of engineering teams in delivering and designing the architecture for these solutions.
- Good understanding of Java
- Expertise in databases such as MongoDB, DynamoDB and Postgres
- Fluency with cloud providers particularly the AWS ecosystem and their services such as ECS, Lambda and Kinesis
- Producing high-quality code and following software design patterns
- Test-Driven Development
- Leading teams of engineers
- Designing architectures for different solutions and taking into account scalability and maintainability
- Building web front-ends
- Intermediate knowledge of Clojure
- In 2016 I gave a talk at the FullStack Conference in London about Controlling the Internet of Things with the Web
- Promoted after one year at EVRYTHNG to Senior Software Engineer
- A data analysis project looking at whether being contacted by a political party during an election campaign meant that they voted for that party's candidate in the 2012 US Presidential election
- Senior Software Engineer at EVRYTHNG
August 2015 – Present
In this role I've been developing and leading many of the Java and Node components EVRYTHNG uses as part of its cloud platform for the Internet of Things (IoT). This has included collaboratively designing the architecture of the company's analytics solution. We were required to build a product that could provide real-time analytics on data that was being received by our platform at a rate of over 100,000 times per second. To accomplish this we used AWS Kinesis and Apache Spark running on AWS EMR to aggregate the throughput and store the results in DynamoDB. There is an API for customers to query these aggregations served by a Node.js back-end.
Another project I delivered was "THNGHUB" a lightweight Node.js application that provides a gateway to the EVRYTHNG cloud. The purpose behind THNGHUB was to enable devices that do not understand Web protocols to be enable to connect to the platform. These devices can send messages to the hub (installed on a separate IoT device) using their native protocol and this data will then be sent and stored in the cloud. When I took over the project I helped to dramatically improve the performance of THNGHUB so that it could handle the data from hundreds of connected devices. I also led the work on refactoring the codebase to make it simpler and easier to understand as well as introducing a comprehensive test suite.
During my time at EVRYTHNG I've also helped to enhance various parts of their API and platform such as writing a Two Factor Authentication service in Java and implementing a request rate limiting component in Node.js. In addition, I led on improvements to the Node.js team such as agreeing on common standards that everyone in the team should follow, increasing our test coverage across our projects and facilitating more knowledge-sharing.
Technologies used: Node.js, Java, Jetty, Apache Spark, Docker, MongoDB, DynamoDB, AWS ECS, AWS Lambda, AWS Kinesis
December 2013 – August 2015
I was responsible for building and managing a number of Node.js applications that supported Axisto Media's core business of delivering video webcasting tools. This included managing databases and server deployments and dealing with potential security vulnerabilities. I also developed the front-end of these applications.
After arriving at Axisto I modernised much of the workflow and tooling of the company's applications. I implemented Test-Driven Development on the back-end using tools such as Mocha. On the front-end I introduced Browserify for loading modules, Karma and Mocha for UI testing and Grunt for handling common tasks such as compiling assets for development and production environments.
Technologies used: Node.js, MongoDB, Postgres, AWS EC2, Docker, Backbone.js, CSS3
- Interface Developer at DigitasLBi UK
May 2012 – December 2013
In this role I primarily worked on a project for Honda Europe helping to build the front-end of a large, responsive website that went live in over 20 European countries. For part of this project we used Backbone to develop the more complex and interactive components of the website and followed a TDD approach. I also had the opportunity to lead others when building some of these more challenging components. We used Node.js to support our front-end workflow by running tests and managing front-end assets.
One highlight of this role was our group winning the Interface Development team's "hack sessions" competition in the summer of 2012. Our project was an application displaying LBi staff worldwide using Node.js.
Technologies used: Backbone.js, CSS3, Node.js
- Web Developer at global3digital
October 2011 – May 2012
I built investor relations websites for corporate clients mainly listed on the London Stock Exchange using Drupal. I was responsible for both the back-end and the front-end.
- Web Developer at Bright Sites Consulting
April 2011 – October 2011
I worked with a team of four on building websites for a range of clients which included a DIY company in London, a graphic designer and a lottery company.
N.B. I began teaching myself HTML and CSS in September 2009. From September 2007 until April 2010 I had a number of roles unrelated to web development including: 'Graduate Trainee' at a local council, 'Parliamentary Analyst' with mySociety and 'Web Content Editor' at Her Majesty's Inspectorate of Constabulary.
- University of Sheffield
2004 – 2007
- 2:1 in BA (Hons) History and Politics
- Davenant Foundation School
1996 – 2003
- A-Levels: Psychology (A), History (B), English Language (C)
- AS-Level: Religious Education (D)
- GCSEs: 1 A*, 3 As, 6 Bs