All writing

WRITING

Realtime is a consistency problem, not a speed problem

Stickbook anchor — multiple phones, one canvas, concurrent drags on the same sticker.

July 2026· 2 min read

Stickbook's core interaction sounds simple until you write down what has to be true for it to work: several people, on several phones, looking at the same scrapbook page, and any of them can grab a photo and drag it at any moment. Two people can grab the same sticker at the same time. For a group trip, on a page everyone just got the link to at once, that's closer to the common case than an edge case.

This is a distributed systems problem wearing a scrapbook's clothes, and it's a different problem from "make it fast." A slow update is annoying. An update that silently loses someone's edit, or shows two people two different final positions for the same sticker, breaks the entire premise — the whole point is that everyone's looking at one shared object, not a private copy that happens to match.

There are a small number of honest ways to handle concurrent edits to the same piece of state, and each trades away something different. Last-write-wins is the simplest to implement, and "simplest" is doing a lot of work there — whoever's update arrives last silently overwrites whoever was first, with no signal to the person who lost. Locking — claim a sticker before you move it — guarantees no lost updates, but the second person to grab it has to wait, which is strange to explain in a UI that's supposed to feel like a physical scrapbook nobody's gatekeeping. CRDTs let every client apply updates locally and merge deterministically without a central lock, the theoretically clean answer — but the cleanliness has a cost, and "deterministic merge" for sticker position and z-order isn't free to design correctly.

TODO — NOT YET SUPPLIED

which of these Stickbook actually uses, and why — the paragraph that turns this from a design-space essay into a real case study. Include what broke during testing, if anything did.

What I think is true regardless of which approach won: for a product like this, the realtime layer isn't a feature bolted on after the UI works. It's the thing the UI has to be honest about. A scrapbook that occasionally loses a sticker is one nobody trusts with the trip photos — the one thing it can't afford to be. Try it, and try breaking it, at stickbook.app.

Back to all writing