+44 (0)7914-692-659
Stack Exchange

I am a software engineer currently specializing in Golang microservices with experience in large Python codebases, distributed systems and bash scripting.

My current personal project is a progressive web app to easily generate XKCD style passwords on mobile devices, built with Vuejs + Vuikit to explore service workers and AMP.

British Citizen, eligible to work in the EU and happy to relocate anywhere. Particularly interested in Germany, Canada and Singapore.

Depoel Technology (Formerly Leopard Software)
Software Engineer
2016-06 – Present
Working on e-tips NextGen (Financial Intermediate between temporary worker agencies and blue chip clients transacting £1B+ yearly), migrating from a PHP monolith to Go microservices to improve performance, scalability and legal compliance while reducing AWS deployment cost.
Skills Used
  • Golang
  • Docker
  • Python
  • MySQL
  • ETL
  • Bash
  • Jenkins
  • Git
  • Code Review
  • Splitting features from a legacy codebase into services with extensive unit, integration and regression test coverage ensuring matching financial figures with improving performance improvements through the use for parallel programming
  • Created and maintained scripts and automated tooling around high volume data ETL’s (~200GB daily) in python.

Hewlett Packard
Engineer (Intern)
2014-07 – 2015-08
Working with the Cloud Services team on Openstack Swift, A distributed fault tolerant Object Storage platform written in Python.
Skills Used
  • Python (2.6, 2.7, 3.3, 3.4)
  • Ansible
  • Bash
  • Git
  • Openstack
  • Swift
  • RabbitMQ
  • Time series monitoring
  • Vagrant
  • Memcached
  • Agile
  • Code Review
  • Updated an Icinga, Bash and Python based monitoring system for the production environment to a fully integrated Python solution. Metrics produced were ingested by Monasca for anomaly detection. Runtime of the system was reduced from minutes to less than a second. Created extensive documentation and gave presentations and training sessions to the team that would take ownership when I left.

  • Worked with the open source community implementing features, increasing unit test coverage (using unittest, mock and testtools modules) and fixing bugs for the python-swiftclient project. All code was cross version compatible from Python 2.6 to 3.4.
Aberystwyth University
Bachelors (BSc) of Computer Science
2012-10 – Present
  • Dissertation: dash shell clone in Golang. Implementation of an interpreted language with recursive descent / pratt parsers and a coroutine style lexer. Improved my understanding of C through reverse engineering the code for bash, dash and busybox’s ash.
  • Group Project – Location graphing Android App with PHP/MySQL backend integrating with Google maps API through Javascript.
  • Other modules included: Web apps and API’s with Ruby on Rails, Algorithms and Data Structures with Java, Machine Learning, Intro to Haskell, Computer Vision.
Extensive experience writing cross version code for both applications and automated database extract, transform, load (ETL) scripts with petl. I have a strong focus on unit and integration tests, preferably written with pytest, since they improve code quality for everyone
I am deeply knowledgeable of shell features, in particular those of bash and (d)ash, thanks to my dissertation’s topic. I also maintained a large number of bash scripts during my time at HP and use bash to script Jenkins jobs. The importance of documentation really shows itself in shell scripts and I use a docco style generator to help.
18 months experience, 6 months professionally. Gin-gonic, though the router is less than great and I’m using chi on personal projects, testify, logrus, pkg/errors. Almost everything else from the stdlib. The tooling, guru and gometalinter especially, are great for writing large amounts of readable, extendable code.
Configuration Management
I have automated my personal servers using Ansible as well as assisting in the creation of playbooks intended for deployment to thousands of production servers during my industrial year. Some experimentation with fabric as well.
Linux Sysadmin
I have been using Linux, specifically Ubuntu and other debian based distributions, personally since 2008 and on multiple servers since 2010.
Use of docker and docker-compose on both linux and OSX and the quirks that come along with that. Maintaining a dockerized local data set for fast development iteration.
Configuring Jenkins a.k.a Hudson job configs for pipeline deployments from branch builds through to a QA environment. for personal projects.
Some Knowledge / Learning
SQLite and Postgres which is preffered due to its built-in full text search, nice CLI, easy cascades, and ability to EXPLAIN queries even though the replication support leaves something to be desired.
  • KeyVal – Memcached, Redis and BoltDB.
  • Document – TinyDB and Tiedot.
  • Time Series – InfluxDB.
Laravel 5 and Laravel Spark
Vanilla, VueJS 2, Jasmine