Harbour — internal deploy platform
Twelve teams, twelve ways to ship. One manifest, one CLI, sensible defaults and an escape hatch for the two teams that needed one.
- Stack
- TS · Terraform · K8s
- Result
- First deploy in 1 day
Work — 2016 to now
Most of this work looks dull in a screenshot — a queue that drains, a deploy that stops being an event, an invoice that reconciles. What follows is the constraint, the decision I'd defend, and the number that moved.
Client names are abbreviated where the work is still under wraps. Happy to talk through any of it in detail on a call.
Case in full — 01
An analytics product whose customer-facing numbers were always a day old, produced by a nightly job that had quietly grown from forty minutes to nine hours. When it overran, support found out before the on-call engineer did.
Not throughput. Eleven downstream consumers read the batch output directly, three of them owned by teams with their own roadmaps. The project was really a negotiation with a deadline attached: dual-write, verify, cut over one consumer at a time, never ask anyone for a freeze.
Keep the shadow period — six weeks of running both paths and diffing the output caught two bugs that no test would have. Change the schema registry decision: we deferred it for a month and paid for that month twice.
The archive
Filter by the shape of the problem rather than the logo. Most engagements sat in one of four buckets.
Showing 6 of 6
Twelve teams, twelve ways to ship. One manifest, one CLI, sensible defaults and an escape hatch for the two teams that needed one.
A six-year-old schema with four conflicting notions of “account”. Split in place over eleven reversible steps, with reads switched last.
Orders lost to timeouts at the worst possible moment. Idempotency keys, a proper outbox, an honest retry story. Nothing clever, just finished.
Instrumentation existed; nobody trusted it. Standard span names, one dashboard per service, and alerts tied to things a customer would notice.
Nobody had looked at query costs in two years. Partitioning, three deleted dashboards and a scheduler that stopped refreshing tables no one opened.
One day a fortnight: design review, incident write-ups, and the occasional argument against a rewrite that would have eaten their year.
Older work — two mobile backends, a ticketing integration and a long stretch on an in-house CMS — is on the CV rather than here. Ask and I'll send it.
Anatomy of an engagement
A week of reading code, dashboards and incident threads. Half the time the expensive problem isn't the one that got me hired.
Problem, two routes, the one I'd pick and its cost. Circulated before any code, so disagreement happens while it's still cheap.
Smallest end-to-end path, behind a flag, with metrics on it from day one. Then widen it until the old path is unused.
Runbooks, a walkthrough recording, two weeks of pairing. The measure of success is that nobody needs to call me in March.
How this work arrives
If none of these fits, say so anyway — the shape is easier to work out in a conversation than on a page.
How I got here →Three to six months, embedded with your engineers, one system to build or rescue. Weekly rate, fixed for the engagement.
Meridian · Harbour · Wicker
Two weeks, fixed price. I read everything, measure what's actually slow or expensive, and leave a written plan you can hand to anyone — including someone who isn't me.
Quarry started this way
A standing day or two a month with a small platform team: design review, incident write-ups, interview support, and a second opinion that has no stake in the outcome.
Currently one seat open
“He spent the first week reading our code instead of rewriting it. By the time he proposed anything, he knew the system better than most of us.”
“Deploys used to be a ceremony with three people watching. Now a junior ships on their second day and nobody holds their breath.”
“The migration ran on a Tuesday afternoon and the support queue didn't move. I still think about how unremarkable it was.”
About these projects
Most of it belongs to clients, so no. I can walk through architecture decisions in detail on a call, and there are a few small open-source tools I'm happy to point at.
No. Every project here had a team around it, and the role listed on each card is the one I held. Where I led, I led; where I paired, I've said so.
From the dashboards the teams already had, measured before and after. Where a figure was estimated rather than measured, I'll say that out loud rather than round it up.
Yes — an internal tool I built in 2019 that two teams adopted and everyone quietly abandoned within a year. It taught me more than most of the successes, and I'll tell you about it unprompted.
Two days a week from next quarter, for a contract or a standing advisory seat. Send a paragraph and I'll tell you honestly whether it's a fit.
Two days a week from next quarter
Tell me what's slow, what's expensive or what keeps waking someone up. A paragraph is plenty to start — and if it isn't work I should take, I'll point you at someone better placed.
Typical reply
Within two working days
Good first step
A 30-minute call, no deck
Also happy to
Review a design doc, free