Address: 51 Bramley Avenue, Melbourn. SG8 6HG
I am an experienced software architect, familiar with a range of languages including Python, C, C++ and Perl. I have a wide-ranging background covering many areas: automated continuous integration (CI) software using physical hardware, distributed development, embedded and mobile application development, leading multi-disciplinary teams, Linux and other free software distributions and cross-compilation support.
I have a strong interest in the creation and development of software frameworks to support software validation, continuous integration, continuous deployment, upstreaming changes and functional testing. I am a strong proponent of free software, open development, multi-disciplinary collaboration and fostering community involvement.
I have been a Debian developer since 2006. My recent professional role as a technical lead involved refactoring a large Python codebase to a new design whilst maintaining existing production instances delivering CI solutions for a worldwide user base.
Python and Django software design and development
Using bare metal, virtualised, LXC, Docker and cloud systems.
Using ZMQ & encryption for distributed deployments across open networks.
Virtual and bare metal device support using over 150 different prototype and developer kit devices using OE, Debian and AOSP system deployments.
Unit test development and functional test design
Git and GitLab CI system development.
Unit tests and continuous deployment using Docker and Debian packages
C & C++, GTK+ and Qt embedded application development.
Assisting with migration from GTK1 to GTK2.
C++ and Qt using multiple threads
Debian packaging and build systems, native and cross-compilation and multi-architecture support, GUI and CLI utility development.
ARM (32bit and 64bit)
Free Software licensing and system integration.
Continuous Deployment testing using Debian or Docker.
Upstreaming changes to various external free software projects.
Management of complex dependency chains for current upstream and selected stable release sets.
Open, collaborative, agile development to foster community development.
SCRUM, JIRA and GitLab.
Perl module and application development, POSIX shell scripting.
The role consisted of leading a distributed team of developers working on a large Python codebase - a distributed system for automated validation (LAVA). I personally re-architected our system and led the work to migrate to the new design while continuing to support our large legacy user base. This involved working with hardware, QA and other developer teams to ensure that the new design met all the original use cases and provided methods to meet new use cases outside the scope of the original codebase.
LAVA consists of server-side code using Django to store and retrieve results and code for distributed workers which interface with the hardware being used for the automated test. Workers use Python3 and ZMQ and can support encrypted communication across public networks. LAVA fits into existing CI to consume files from a build system and deploy the files to real hardware to test that firmware, kernel and low level userspace code is functional in each specific build. Tests range from simple boot tests to full system tests producing 50,000 results or more and include external suites like LTP, kselftest and CTS.
As part of enabling the migration, I instituted a new regime of CI on our own software. This included functional tests, unit tests and automatic static code analysis, covering security and code quality metrics. When I started, the previous codebase was unable to run its own small suite of unit tests. When I finished, we had a comprehensive set of tests upon which the team now rely as part of all code reviews. The migrated codebase is also part of multiple external CI projects testing mainline Linux kernels and has been able to reveal and prevent multiple regressions in release candidate builds. Error reporting and triage support from LAVA has allowed these projects to lower infrastructure failures to less than 0.1%, despite relying on dozens of prototype / development kit devices.
I developed support for many new devices in the automation system, learning the idiosyncracies of a extensive range of hardware to create a homogeneous system which could deploy and test diverse software using those devices. My experience with these devices led to the establishment of a set of best practices which have influenced a number of hardware manufacturers in their implementations of standardised test automation support hardware which will make automated firmware testing much easier for everyone.
My team administered a number of automated systems using our LAVA software to run CI on hardware across multiple platforms, both locally and in the cloud.
LAVA is a Free Software project; I have engaged over a number of years with the wider test automation community to help meet their needs, including presenting at a variety of international conferences. This has developed into a growing community around LAVA leading to the recent foundation of the LAVA Software Community Project.
An important part of my role has included studying and then implementing support for a wide range of technologies: git, GitLab, gerrit, jenkins, GitHub, ansible, JIRA, Docker and LXC. I have also gained a lot of experience with deploying and testing various systems including Android, Open Embedded, Debian, Zephyr and a range of IoT systems.
My role consisted of developing embedded applications using C, C++ and Qt for devices based on the PXA270 ARMv5 CPU. The role involved platform code devlopment, new cross-building infrastructure, fully automated cross and native build systems, bug tracking systems, UML, test suites, production programming systems and Debian packaging. I developed test processes for individual software components to complement device level testing, including profiling tools. The software interfaced with Acapela voices to provide computer generated speech and PDA type support for users with a variety of disabilities.
An important element of the role was as R&D liaison to a group of academic researchers based at the University of Sheffield who were using Toby Churchill devices in user trials for environmental control systems for people with dysarthric speech. This involved assisting the academics to run machine learning models on resource restricted hardware to allow each individual to have a personal model which the machine could turn into text and then into machine generated speech to support real time conversations with strangers in noisy environments.
I organised a one day set of seminars on company premises to bring together academics, software developers and designers to foster greater interaction across these disciplines.
Further to my pharmaceutical training up to 1988, I was employed as ward pharmacist and I was offered the additional role of Pharmacy Computer Manager at Southampton Teaching Hospital. This involved maintaining and upgrading a DEC mainframe running the pharmacy dispensary stock control system.
I subsequently moved into Community Pharmacy but I wanted to further my interest in computer software, so I moved to self-emplyed and changed to a part-time role. From 2005 onwards, I became increasingly involved in Free Software and Debian as a hobby, resulting in an invitation to start a professional career in software development.
I started working with free software with the GnuCash project to help with the migration from GTK1 to GTK2 using SVN. This work also involved maintaining a C shared library which I used to develop a number of other applications of my own.
My first involvement in Debian was in preparing and packaging a mobile software suite of 40 inter-dependent packages. I took an interest in the Embedded Debian sub-project (Emdebian) and took the lead in easing the creation of cross-building toolchains for use with Debian and developing two new Emdebian distributions aimed at resource-constrained devices. I developed new build tools for multiple-repository, cross-architecture, root filesystem builds. For multiple years, I ran and maintained the Emdebian packages archive and assisted with the implementation of “Multi-Arch” in Debian.
I have maintained a wide range of other packages in Debian over the years, many of my own creation. These have included build-system helpers, PDF readers, PDA synchronisation utilities and finance utilities. I have been an active participant in multiple Debian events like DebConf and bug-squashing parties.
Aston University ; Bsc (Hons), Pharmaceutical Sciences, 1985 – 1988
Hiking, theatre, travel, music, photography, chess, reading, Free Software, films.
Mr Steve McIntyre, Mr Ryan Arnold,
Debian Project Leader (emeritus). Director, Linaro Ltd.
Mr Dave Pigott
Lab Tech Lead, Linaro Ltd.