Services

Senior engineering, in the shape you need.

Some problems need a few days of experienced judgement. Others need a principal engineer in the team for months. Most clients use a mix of the two.

Advisory

A senior second opinion, measured in days.

Useful when a big decision is coming up, or when something isn’t working and nobody can quite say why.

  • Architecture reviews, of a proposed design or of a system already in production
  • Code and system health checks, with a prioritised list of what to fix first
  • Cloud cost reviews: where the money goes, and how much of it doesn’t need to
  • Technology choices and build-versus-buy decisions
  • Cloud, on-premises or colocation: choosing the right home for a workload
  • How your team uses AI: what’s working, what’s risky, and what to change first
  • Independent assessment of a supplier’s architecture and code quality. At Thames Water, my improvement plan helped the supplier release more often, with fewer errors.

You get a clear written recommendation, not a slide deck of options.

Hands-on engineering

A principal engineer on your team.

I work inside your team as a principal or lead engineer, usually on a day-rate contract.

  • Designing and building the hard parts: core services, data models, integrations
  • Setting technical direction and making the decisions others are blocked on
  • Code review and mentoring that raise the standard of the whole team
  • Helping the team work well with AI coding assistants and agents, on your own codebase
  • Getting delivery working: CI/CD, infrastructure as code and security in the pipeline

Fixed-scope delivery

A defined outcome, at an agreed price.

For work that can be described clearly up front, we agree the scope, the outcome and the price before anything starts.

  • Migrations: to the cloud, between clouds, or back out again
  • Modernising legacy applications one piece at a time
  • New services and internal tools
  • AI integrations: MCP servers, CLIs and developer tooling
  • Automating manual, error-prone processes

Technology

Given the choice, I build in Rust. I also work in Go, TypeScript and Node.js, and C#/.NET, with PostgreSQL and SQL Server, on Azure, AWS or plain Linux servers. I choose tools to suit the problem and the team that will maintain the result, not my own preferences.

How an engagement starts

  1. Get in touch. Email a few lines about what you’re trying to achieve and where things stand.
  2. Talk it through. A short call, with no charge and no obligation, to understand the problem. If I’m not the right person, I’ll say so.
  3. Agree the shape. A short written proposal setting out scope, approach and commercial terms: day rate or fixed price.

I do most of the work myself. For larger jobs, I bring in trusted colleagues I’ve worked with before, and I stay your single point of contact and responsible for the result.

Get in touch to discuss current availability and rates.

Have a problem worth solving?

Tell me what you’re working on. A short email is plenty, and you’ll get a straight answer on whether I can help.