Contact GavinContact me directly by email or message me through LinkedIn.
Gavin's timeNovember 21st, 2024 08:24 CET
(in Luxembourg, where he usually is)
Gavin is🥐 Eating breakfast
(but that's just a guess)

Work with me

What I can do for you

Contact GavinContact me directly by email or message me through LinkedIn.
Gavin's timeNovember 21st, 2024 08:24 CET
(in Luxembourg, where he usually is)
Gavin is🥐 Eating breakfast
(but that's just a guess)

I’m Gavin, and I’m primarily a software developer with many years experience of myriad languages and technologies. I was once a production systems, DNS, and email administrator too, giving me a solid foundation for work on build tooling and CI/CD setups.

I might be a good person to contact when you need someone to:

  • Build something specific for you.
  • Design a new component, then build and integrate it.
  • De-risk a project by prototyping technically challenging parts.
  • Collaborate with your team to share my skills.
  • Work as an expert reviewer of your team’s code.
  • Help your team get unstuck by providing an outsider’s perspective.

See the software development, build tooling and CI/CD, and databases sections to learn more about my experience, and get specific examples of what I can do for you.

I work on a contract basis, ranging from two weeks to “until the work is done”. I’m based in Luxembourg and work remotely, though I can travel for specific events.

Software development

Web development mostly, backend and frontend.

I’m doing a lot of work in Rust (async, Axum, GraphQL, WebAssembly, etc.) and Elm right now. I also have extensive experience with Python and TypeScript (hence JavaScript too) and some experience with Haskell. I’ve used Golang for production work and am relearning it.

I can, for example:

  • Build a website to your specifications.
  • Design an application to solve your specific problem, choose components, and implement it, including full CI/CD setup; see below.
  • Provide clean and documented code (always), so that the hand over to you or your team is painless and successful.
  • Be an expert to “bootstrap” your team when migrating to Rust, Elm, Python, or TypeScript.

Build tooling & CI/CD

I’ve written many Dockerfiles, hundreds of Makefiles, and thousands of shell scripts. I’ve done a lot of work with Shake, a Haskell library for building build systems. I wrote firstaide to bootstrap Nix environments. I wrote postgresfixture for rapid set-up and tear-down of PostgreSQL clusters, and later ported it to Rust.

I have worked with large test suites, especially in Python. For example, I reduced the running time of MAAS’s test suites from 36 minutes to 6 minutes, and made them easier for developers to work with (i.e. not a hack; btw, not producing hacks is a recurring feature of my work).

Regarding CI/CD, I use GitHub Actions for my projects but I’ve used Travis CI, CircleCI, Jenkins, Docker Hub, and a few bespoke systems too.

I can, for example:

  • Write the developer build tooling for your software stack.
  • Design and implement a continuous integration and/or deployment pipeline.
  • Propose and implement changes to your build tooling, processes, and test suites to improve speed and developer experience.
  • Document those build processes and hand over to you and your team.

Databases

I’ve worked with PostgreSQL and MySQL for more than two decades. I usually reach for PostgreSQL for new projects, though I also used SQLite recently. I cut my teeth on Oracle.

I won’t claim to be your next DBA, but I can help with:

  • Writing complex queries, and optimising their performance.
  • Helping you understand transaction isolation and making it work with your application.
  • Full text search in PostgreSQL and SQLite.
  • Designing and/or migrating schemas.