[ Custom Software ]

Custom Software.

Building, buying, and instrumenting the systems your business actually runs on.

40 articles · See the Custom Software service →

[ Custom Software ]

Rewrite or refactor: telling the difference honestly

Engineers reach for the rewrite when the code is unpleasant. The honest test is whether the problem is the code or your understanding of it.

Aug 2026·2 min read
[ Custom Software ]

How to run an agency build without losing control

Written by an agency, about the client behaviours that make projects go well. The good ones want you to read this.

Aug 2026·1 min read
[ Custom Software ]

How to remove a feature nobody uses

Every unused feature costs you on every future change. Removing one is easier than teams fear and harder than they expect.

Aug 2026·1 min read
[ Custom Software ]

The backup you have never restored

An untested backup is a belief, not a control. The restore drill takes an afternoon and is the only thing that turns one into the other.

Aug 2026·1 min read
[ Custom Software ]

Multi-tenancy: the decision that shapes everything else

How you separate one customer’s data from another’s determines your security posture, your migrations, and your pricing. Decide it deliberately.

Jul 2026·1 min read
[ Custom Software ]

Designing an API other teams can build on

An API is a promise you have to keep for years. The design decisions that make that survivable, made at the start.

Jul 2026·2 min read
[ Custom Software ]

Where the time actually goes in a slow web app

Almost never the language, almost always the database and the network. Measure before optimising anything.

Jul 2026·1 min read
[ Custom Software ]

Choosing a database, without the religion

For most business software the answer is a relational database. The interesting questions are the ones after that.

Jul 2026·1 min read
[ Custom Software ]

Data migrations: how to move without losing a week

The migration is never the hard part. Reconciling what arrived against what left is where the week goes.

Jul 2026·2 min read
[ Custom Software ]

Internal tools are the highest-leverage software you’re not building

Nobody gets promoted for shipping the admin panel. It’s often the highest-return thing on the roadmap anyway.

Jun 2026·2 min read
[ Custom Software ]

How to write a spec an agency can quote accurately

Vague briefs don’t get cheaper quotes, they get padded ones. What to include so the number you’re given is the number you pay.

Jun 2026·1 min read
[ Custom Software ]

Working with a legacy system you can’t replace

Sometimes the old system stays, for reasons that are entirely valid. How to build around it without inheriting all of its constraints.

Jun 2026·1 min read
[ Custom Software ]

Shipping safely: flags, staged rollouts and the off switch

The ability to turn something off in ten seconds changes how much risk a release carries. It is cheap to build and rarely built.

Jun 2026·1 min read
[ Custom Software ]

Configuration and secrets, done simply

Most environment-specific outages are a setting, and most credential leaks are a file that should never have been committed. Both are cheap to prevent.

Jun 2026·1 min read
[ Custom Software ]

Choosing a stack you can still hire for

The technology decision is also a recruitment decision, made years before you notice. How to weigh novelty against the labour market.

May 2026·1 min read
[ Custom Software ]

Writing documentation developers will actually read

Nobody reads the wiki. They read the four things they need at the moment something is broken or new.

May 2026·1 min read
[ Custom Software ]

Dates, times and the bugs they cause

The most under-estimated source of quiet data corruption in business software. A short list of rules that prevent most of it.

May 2026·1 min read
[ Custom Software ]

Logging: what to record and what to leave out

Too little and you’re blind. Too much and you’re paying to store noise you’ll never read — and possibly data you shouldn’t hold.

May 2026·1 min read
[ Custom Software ]

Do you need a mobile app or a good mobile site?

An app costs several times more to build and far more to keep alive. Three conditions justify it; nothing else does.

Apr 2026·1 min read
[ Custom Software ]

The technical debt you should keep

Not all debt accrues interest. Paying down the wrong kind is how teams spend a quarter and change nothing a customer notices.

Apr 2026·1 min read
[ Custom Software ]

Search is the feature everyone underestimates

It looks like a text box and a query. It is ranking, tolerance for error, and knowing what people actually meant.

Apr 2026·1 min read
[ Custom Software ]

How to instrument software so you can add AI later

The reason AI features are hard to add to existing systems is almost never the model. It’s that nothing was ever written down.

Apr 2026·2 min read
[ Custom Software ]

The admin user problem

Every system starts with two roles: normal and everything. The gap between them is where most access problems live.

Mar 2026·1 min read
[ Custom Software ]

The integration nobody owns

Every company has one: the script connecting two systems that one person wrote and nobody has looked at since. Here’s what it costs you.

Mar 2026·1 min read
[ Custom Software ]

Scheduled jobs: the code nobody watches

Nightly tasks fail silently for months because nothing complains. The fix is alerting on absence, not on errors.

Mar 2026·1 min read
[ Custom Software ]

Questions to ask a software vendor before you buy

The demo answers none of them. Eight questions whose answers determine what the next three years cost.

Mar 2026·2 min read
[ Custom Software ]

Receiving webhooks without losing events

Someone else’s system calls yours, once, possibly twice, possibly while you’re deploying. Four rules that make it survivable.

Mar 2026·1 min read
[ Custom Software ]

Why your dashboard doesn’t get used

It answers questions nobody asked, at a moment nobody is looking. Four fixes, none of which is another chart.

Mar 2026·2 min read
[ Custom Software ]

When to add a queue

Queues fix slow requests and unreliable dependencies, and they introduce a whole new category of failure. Three signals that it’s time.

Mar 2026·1 min read
[ Custom Software ]

Making sure your product’s email actually arrives

Password resets and receipts that land in spam are indistinguishable from a broken product. The setup is mostly DNS and restraint.

Feb 2026·1 min read
[ Custom Software ]

What “production ready” actually means

It works on the demo is not the same as it works on a Tuesday when the person who built it is on holiday. A checklist.

Feb 2026·1 min read
[ Custom Software ]

Six signs your software needs attention

None of them is that the code is old. All of them are things the business can observe without reading a line of it.

Feb 2026·1 min read
[ Custom Software ]

Protecting a public endpoint from abuse

Anything reachable from the internet will be probed, scraped and spammed. Four controls that handle most of it cheaply.

Feb 2026·1 min read
[ Custom Software ]

What you should receive at the end of a build

The working software is the smallest part of it. Seven things to have agreed before the final invoice.

Feb 2026·1 min read
[ Custom Software ]

How many dependencies is too many?

Every package saves a day now and costs a little forever. A test for whether the trade is worth making.

Jan 2026·1 min read
[ Custom Software ]

Why software estimates are wrong, and what to do instead

Not because engineers are optimistic. Because an estimate is a forecast of work nobody has fully specified yet.

Jan 2026·1 min read
[ Custom Software ]

Notifications: the feature that annoys everyone

Every stakeholder wants their event to notify. The result is a system users mute, which then fails to reach them when it matters.

Jan 2026·1 min read
[ Custom Software ]

Build vs buy in the AI era: the questions that decide it

Building got cheaper, which changed the maths but not the principle. Five questions that settle the argument faster than a spreadsheet.

Jan 2026·2 min read
[ Custom Software ]

What to automate in testing, and what to check by hand

Chasing total coverage produces a slow suite nobody trusts. A small, fast, meaningful set plus deliberate manual checks beats it.

Jan 2026·1 min read
[ Custom Software ]

Environments: how many do you actually need?

A staging environment nobody trusts is worse than none. What each one is for, and the property that makes it useful.

Jan 2026·1 min read