I am a Site Reliability Engineer with over twenty-five years' commercial experience, focused on Free Software and open standards. My mission is to improve the world and benefit the common good. I have experience in the IoT space and working with containerised applications in Kubernetes, as well as eight years' commercial experience developing and maintaining web services in Python (2 and 3), using Django, Restish and Flask frameworks and backed by PostgreSQL, Cassandra, CouchDB, Solr and Elasticsearch and dealing with scalability to serve millions of users worldwide. I have over twenty-five years' Linux experience and have been using Debian-based distributions exclusively on my personal machines since 2006.
The most recent version of this file can always be found at wyrddreams.com/cv.html.
Working as part of a small team, I was responsible for resurrecting an abandoned project for Ebury's Strong Customer Authentication service for PSD2 compliance. We took the existing, legacy code base and refreshed it to be deployed in Docker containers in AWS ECS, extending its capabilities and upgrading from Python 2 to Python 3 along the way.
Key technologies: Django, PostgreSQL, Docker, AWS.
Initially seconded for a short-term project to bring some services deployed in GCP under control, using Terraform for IaC principles, I was subsequently retained as part of the Platform Team, including as part of the 24x7 on-call rotation. I am currently part of the Platform Core team, providing the infrastructure for Ebury's services to run on.
I was nominated Kafka Squad Captain (essentially a team leader) having become the go-to person for our Kafka deployments, leading the deployment and migration of our Kafka proof-of-concept to Production readiness. I have written documentation to detail our Kafka landscape for developers and other Platform Engineers, tooling and process documentation to help with the day-to-day operations, and StackOverflow answers and articles to address frequently-asked questions.
Key technologies: Terraform, Ansible, Kafka (AWS MSK), Jenkins, Kubernetes, Prometheus, Grafana.
I was responsible for devising and implementing the company DevOps strategy, allowing us to meet our 99.9% uptime requirement, providing early warning of non-critical service alerts, and enabling zero-downtime deployments. This multi-faceted role encompassed consolidating, standardising and documenting our various platforms, scripting deployments, implementing Jenkins pipelines and generally making the day-to-day operations less burdensome. I liaised with our developers to learn about the tools of their trade and how best to deploy and manage them in a traditional VM environment, and learned to use Docker and Kubernetes to make our platforms more scalable and reproducible. I introduced system metrics via collectd and application metrics via statsd to aid with monitoring and capacity planning, and logging was centralised using fluentd and used for debugging and service metrics, all feeding into Google Stackdriver. I was responsible for advising on service architecture and performance improvements, mentoring developers and more recently a junior DevOps engineer.
Key technologies: PHP, MySQL, Git, Docker, Kubernetes, Google Cloud Platform, Jenkins.
I also designed and developed a hardware and software solution to receive, store and forward temperature readings from our electronic temperature monitors to our cloud platform. This project started as a messy workaround to overcome the lack of TLS capability in our bespoke hardware, and was expanded to also provide fault tolerance in case of network and service unavailability, elminiating data loss, as well as remote administration of the hardware to reduce the need for site visits.
Key technologies: Python, Celery, SSH.
As part of the Online Services team, née Web & Mobile team, I was responsible for a wide range of Canonical's web services. I was initially brought on board to work on the Ubuntu One file sync service, and was involved in the development of various add-on services including contact synchronisation, music streaming and photo galleries. Remote pair programming featured heavily.
Key technologies: Django, PostgreSQL, Celery, Cassandra, CouchDB, Graphite.
Most recently I was involved in the creation and growth of the Ubuntu Store for Click and Snap packages. I served as tech lead on the Click Package Index search component that is the main Store API entry point for all Ubuntu devices (phones, desktops and IoT devices running Ubuntu Core) when searching for, installing and updating Click and Snap packages.
Key technologies: Django, Restish, Flask, PostgreSQL, Solr, Elasticsearch, ELK, Juju, Grafana.
Leading a core team of two Java EE Developers and a DBA, I was responsible for the development and maintenance of Aeromanager, the Rolls-Royce customer-facing web portal for the management of civil aero engines. I worked with a small team within Rolls-Royce to determine, define and prioritise requirements. I was responsible for scheduling items for development, testing and release, managing the team's workload, mentoring team members and removing impediments to enable the release schedule to be met.
As part of a drive to improve efficiency and customer satisfaction, I initiated and supported the development of a JUnit test suite for the application, and the adoption of Agile processes for development.
Key technologies: Java, BEA WebLogic, WebMethods, SQL Server.
As part of a three-person team, I was responsible for the ongoing development and maintenance of our SMS messaging and billing platforms. Our diverse range of services included wi-fi credentials for The Cloud; PINs for Nokia's music download services; and enabling the mobile banking services of First Direct and HSBC provided by Monilink. I liaised directly with customers and suppliers to establish and prioritise requirements, maintaining an ongoing development roadmap while also providing application support, including out-of-hours work to maintain a 99.5% availability as per our SLAs. I produced and documented our development and deployment processes, based on test-driven development, with a continuous build environment and automated tests run on our staging environment.
I instigated and oversaw the installation of eGroupware within the company as a centralised ticket tracking and project management tool and for its wiki and other collaboration features, as well as the introduction of online meetings via Skype IM to aid with the transition of support staff from their various legacy systems. I also wrote the system startup scripts for our web and application servers to allow all services to start in the correct order after a hardware failure.
Key technologies: Java/J2EE, IBM WebSphere, Struts, Oracle 9i, CruiseControl.
Working as part of a team of around 70 individuals, I was responsible for the development of bespoke applications designed to be tailor-made solutions to the business needs of our clients. I worked closely with several mobile telecommunicatons service providers, helping our applications to attain validation for operation on live service networks. This involved performance of a series of test scripts and analysis of SMPP 3.3, SMPP 3.4 and SEMA OiS traffic as it was transmitted to the SMS Service Centres.
Key technologies: Java/J2EE, Struts, Hibernate, XML, HTML/CSS, JavaScript, Oracle, C/C++, Apache web server, Vignette V7 VCM Server and CodeMesh JunC++ion Java Bridge, WAP/WML, Volantis Mariner multi-channel server, Empower Interactive MSP 3.1.3, First Hop Message Router.
Wyrd Dreams is a freelance IT service provider offering web development, custom application development, systems and network administration, and hardware and software support among other services and specialising in open source and open standards. Predominantly this has been piecemeal part-time work alongside a full-time role, with only a couple of longer-term engagements.
Most recently I was contracted by OpenCraft, working on the Free Software Open edX MOOC platform, and OpenCraft's self-service platform for Open edX instances, OCIM. This was a full-time, fully remote role, with weekly sprint meetings via Zoom, and day-to-day communication via email and Mattermost, as well as asynchronous communication on Jira tickets. The company is small but has a handful of clients for whom it manages dedicated Open edX instances on OpenStack clusters.
Key technologies: Django, Open edX, Git, Docker, Vagrant, Ansible.
Over a three-year course I learned about various aspects of computing in the workplace and the home. The course introduced me to several programming languages, including C, C++, SQL, Java, JavaScript, HTML and Visual Basic, and allowed me to sample different programming techniques. It brought me into contact with a range of Operating Systems and different network architectures, the most prominent of which was MSDOS/Windows 3.11 on a Novell network, but also including Sun Solaris and Vax/VMS with TCP/IP networking.
As level 1 staff member, my role was mainly user support. This involved helping with administrative requests such as password resets, username and channel registrations, and general queries. I was also involved in the resolution of user disputes, moderation of undesirable behaviour, and acting as a catalyst for productive, collaborative discussions.
Initially tracing old maps and later uploading and tracing GPS tracks of my own, I have covered large parts of Derby, including the vast majority of Mickleover's coverage. This has been supplemented with remote mapping of crisis areas as part of the Humanitarian OpenStreeMap Team.
Available on request.