Profile

I am a highly motivated and skilled software engineer with a masters degree in electrical and mechanical engineering. I previously ran a software product development consultancy, delivering bespoke software for clients across several industries. I don’t limit myself to a single technology stack—I use the right tools for the current job, and continually learn new things to keep my skills sharp. I like work that stretches me mentally, lets me learn new things, and provides an opportunity for me to deliver a fantastic solution.

Skills

Skills Selected projects
.NET, C# Coats Dyehouse System, Coats ColourStitch rearchitecture, MethaMeasure dispensing system, Stugo.Interop
node.js, JavaScript (ES6+), TypeScript CDRx, promised-mongo, module-init
Go KPS Protocol Interop, superproxy
SQL Server, MySQL, PostgreSQL Coats Dyehouse System, MethaMeasure dispensing system
mongoDB CDRx, promised-mongo
MATLAB used throughout university, including research and postgrad
docker, linux, Google Cloud, AWS most projects
Source control: Git, SVN all projects

Experience

Senior Developer, Coats Plc, July 2017–Present

ColourStitch Rearchitecture, July 2017–February 2018

I researched software architecture patterns to find a good balance between ease of adoption and maintainability/testability in order to drive the rewrite of a substantial legacy manufacturing quality system in the textile dyeing business. Maintenance and support of legacy system (C#, WPF, WinForms, SQL Server) has required me to quickly get to grips with a highly complex domain.

Coats Dyehouse System, August 2017–February 2018

Tasked with improving code quality and maintainability of a production automation system through application of my expertise in this field, as well as setting up build tooling and install packages (C#, WPF, SQL Server, MySQL, PostgreSQL, Jet 4.0). This project has allowed me to bring industry best practices to the team by driving documentation standards, project management (JIRA) and system architecture standards.

Director, Stugo Ltd, July 2008–July 2017

Stugo was a bespoke software development consultancy specialising in complex automation projects that comprised 7 people at its largest and specialised in complex automation projects.

Kite Power Systems Ltd: Protocol interop and testing tools, March 2017–July 2017

A system-critical tool written in Go, to convert between proprietary GPS radio data stream format to client’s own automation protocol, in an industrial system which generates electricity from kites. Additionally, a related tool to inspect the communications to gain insight into radio operation and test the system. Responsible for whole project end-to-end.

MethaMeasure Ltd: CDRx Pharmacy recordkeeping system, October 2014–January 2017

A web-based pharmacy recordkeeping system to aid UK pharmacies with regulatory compliance, written in JavaScript/React on the browser and JavaScript on Node.js with MongoDB as a data store. Responsible for customer relations, project management, and share of design and development.

MethaMeasure Ltd: MethaMeasure patient information and drug dispensing system, December 2013–January 2017

Ground-up rewrite of existing legacy system in modern C#/WPF/SQL Server stack in tight regulatory environment, deployed in pharmacies in 5 continents. System to identify patients via fingerprint/face recognition, capture prescription data, and control pump hardware to dispense methadone. Business logic deployed as separate WCF service for networked system support.

My intuitive user interface design and stable code greatly reduced client’s support requirement and allowed engineers to focus on new installs. Hired and managed two interns for three months on the project from June 2015. Responsible for sales, contract negotiation, customer relations, DevOps, technical architecture, UX, telephone/email/skype remote support (escalated) and bulk of development, as well as some on-site installs and troubleshooting in pharmacies and prisons.

University of Strathclyde: APAtSCHE Data Collection, March 2013–July 2013

Data collection API in Java EE to gather data from sensors deployed in homes for an energy research project. Web interface for managing data entities (sensors, homes, etc) written as client-side JavaScript app using Angular.

Operations and business management

I undertook almost all of the management and accounting activities in the business, requiring me to confidently liaise with and negotiate with suppliers, manage cashflow, perform payroll and tax duties, and effectively manage my time to meet these obligations while also bringing in business and undertaking client work. I hired our developers, managed their performance, and regrettably let them go when the business ran out of cash, requiring me to have strong interpersonal skills and a thick enough skin to do the difficult jobs.

Project management

I tasked myself with managing our work across multiple projects to ensure that we could deliver to client expectations. I made many mistakes to begin with, and struggled to get a level of process that was lightweight enough to get buy-in from our main client at that time, all of which I think has been fundamental to me developing a proper understanding of the crucial elements of good management.

Business development and client relations

I was responsible for all business development activity and most of the client relations, allowing me to develop my networking, negotiating, and communication skills. I at times had to deliver bad news which required me to be clear, professional and sometimes contrite, while managing client expectations.

Research Student, University of Strathclyde, October 2012–April 2013

Undertaking research on interconnected power systems in civil jet aircraft. Left to focus on other projects. In this short time I produced a conference paper, presented at SAE 2013 AeroTech Congress & Exhibition in Montreal, September 2013. I also participated in a residential business course run by the university and was selected in the top 3 of 8 teams at a business pitch competition which followed. I tutored 3 undergraduate classes during semester 2

Other projects

promised-mongo

A popular open-source Node.js package for connecting to the mongoDB database system from Node using Promises instead of callbacks. Originally a minor extension to the most popular driver package at the time, I rewrote this from scratch in ES6. Gets 10k+ downloads per month from NPM: see here.

Stugo.Interop

Helper library written in C# for dynamic P/Invoke on Windows and Linux. Allows the development of cross-platform managed libraries with native components. Available on GitHub.

superproxy

Written in Go. A small, fast reverse-proxy with ACME support (automatically provisions and renews SSL certificates using Let’s Encrypt). Dynamically loads config from etcd, Consul, BoltDB or Zookeeper. Available on GitHub.

module-init

Written TypeScript. Loads a collection of interdependent modules into a DAG and loads them in the correct order. Available on GitHub.

Publications

Defining Requirements for the Implementation of Interconnected Generation in Future Civil Aircraft

Mackenzie-Leigh, G., Norman, P., Galloway, S., Burt, G., Orr. E., SAE Technical Paper 2013-01-2125, 2013, doi: 10.4271/2013-01-2125.

Education

Masters Syllabus (no award), Medical Devices, University of Strathclyde, September 2013–August 2014

I completed the taught year of the EngD (Engineering Doctorate) Medical Devices programme, following the full curriculum of the MEng programme—I undertook classes in anatomy, physiology, biomechanics, biomaterials, bioelectronics, genetics, biomedical instrumentation, regenerative medicine, biochemistry, statistics, professional studies (certification, documentation, quality management, chartership) and cardiovascular devices. I also undertook a short summer project on the subject of energy harvesting from body movements to power medical devices.

I left this course at the end of the first year to focus on other projects. I attained a very good average mark for my final exams but was not eligible to graduate with a masters since I was enrolled on the EngD programme.

MEng (with Distinction), Electrical and Mechanical Engineering, University of Strathclyde, September 2007–May 2012

I took a range of compulsory classes in first to third year across the electrical and mechanical engineering spectrum. In fourth and fifth year I specialised in a theme of Systems and Automation, taking classes in control theory, power electronics, robotics, artificial intelligence, photonics, electric vehicle technologies, machine dynamics, digital signal processing, mathematical modelling and machinery diagnosis/condition monitoring.

Fifth year (group) project: design and build of a system to monitor and track occupancy in the University Sports Centre. Our implementation utilised wireless sensors connected to a web interface which presented a utilisation map of the cardiovascular suite. I implemented the web service, assisted with the design of the sensors, and constructed all of the sensors.

Fourth year (individual) project: design and build of a high current test apparatus for supercapacitors.

Other things

Outside my professional life, I like to make things: furniture, electronics, music and dinner, in no particular order. I secretly possess the ability to unicycle. I can’t juggle.