blueshed.co.uk

blueshed builds software for people who have to get work done together — a booking board, an allocation system, a planner, an ops console. The kind of app where two people are looking at the same thing at once, and it has to be true for both of them.

That turns out to be one hard problem wearing different hats. What a person sees on screen is a document: a composed shape, gathered from tables that know nothing about screens. Keeping that document truthful while several people write to it — without re-fetching the world, without losing what someone was in the middle of typing — is most of the work in an app of this kind, and almost none of what frameworks help with.

So the practice has two halves. One is the apps themselves, built for the people who use them. The other is a run of small tools, each one an attempt to state the problem more exactly than the last.

How the work goes

Start from what someone sees in order to do a job. Not from the tables. A document is what an actor watches while they work, and the entities are derived from it — the other way round from how most schemas get drawn.

Tell it as stories first. A use case is an actor and an action. The model is finished when every record traces back to something someone said they do.

Prove it before building it. A model can be checked: that everything is reachable, that every write an actor can make echoes back into something they are watching, that no screen asks for a permission nobody grants. Missing pieces get named before they are a surprise in week six.

Then the build is a transcription. If the judgement work is done and written down, making the code is the easy part — and it can be done again, on a different substrate, without the argument being had twice.

The journey

Eight projects over a year, each a clean rewrite of the one before, chasing the same idea until it got small enough to hold: from dzql, which named the problem and couldn't finish it, to eta, a kernel where the whole app is documents, every write is a patch, and every patch knows its own inverse — so undo is free, and what crosses the wire is legible enough to read in a terminal.

Read the journey →

Getting in touch

blueshed.co.uk is Peter Bunyan. Write to pete@blueshed.co.uk.