About me

Senior web developer in Oxford, UK

I have over 25 years experience developing websites, web applications and mobile applications. My recent roles have been developing scalable client-side and server-side applications using Typescript and NodeJS. This experience, combined with my knowledge of databases like Postgres and MySQL, has enabled me to deliver high-quality software that drives business success.

I have been described by colleagues as a “git wizard” and have given talks on the version control system. I have written pre-commit hooks to check code for linting errors before committing and worked on a tool to eliminate merge conflicts caused by linting fixes to a codebase. I have written a tool to find the last place in history that on old branch will rebase to without conflicts, which often makes resolving rebase conflicts easier. I’ve used git as a front end to svn in an svn-only company using the git-svn plugin which enabled me to manage my versions and commits locally then merge them centrally when they were tested and ready.

I know my way around Github and Gitlab’s CI services, including advanced configurations that ran different kinds of tests depending on different triggers and tests that contribute code back to the original repository. I have also used CircleCI, AWS Codebuild, Travis and Jenkins in the past. I have made a small contribution to the original github “hub” command to fix a bug when a single commit has a large number of CI jobs.

I like to ensure all configuration is managed as code and tracked in source control. I’ve written a tool to extract the query and dashboard configuration from a Redash BI server and store it as a series of YAML, SQL and JSON files that can be committed to git, allowing the state to be tracked, branched and reverted. It can also be loaded into other Redash instances running similar databases in different locations. I have recent experience managing dependencies with npm and yarn for Javascript/Typescript and poetry for python. I have also used Ruby’s bundler and PHP’s composer.

I have managed docker containers, optimising built containers to contain only the runtime binaries without the build tools. I’ve used docker-compose to orchestrate containers.

I’m experienced with Agile working practises and have led planning, retrospective and daily stand up meetings. I enjoy working with product owners to find innovative solutions that improve customer experience at the same time as streamlining development.

Hobbies

In my spare time I have a volunteered in audio-visual operation since I was a young teenager. I have about 20 years experience about once a month as a sound engineer, but I now mostly direct and vision mix live multi-camera video for YouTube Live streams and IMAG (Image MAGnification - i.e. the screens for the audience in the room). This often involves managing two separate video feeds at once because there are live hosts who are shown in the stream but not in the IMAG, or when a presenter has slides that should stay on the screens in the room, but the presenter should be shown to the stream.

I’ve contributed extensively in the early days of MusicBrainz, OpenStreetMap and Stack overflow. I’ve made many small contributions to various open-source projects on Github, fixing bugs, improving documentation, and adding small features.