What Building a Drawing App Taught Me About Performance
Performance issues don’t show up immediately, they build up quietly until your assumptions stop working.
10 parts, in reading order.
Performance issues don’t show up immediately, they build up quietly until your assumptions stop working.
Rendering isn’t just about drawing shapes. It’s about controlling how much work happens per frame.
Freehand input looks simple, but the amount of data it generates can quickly overwhelm your rendering system.
Two people editing the same canvas is not a networking problem. It's an agreement problem.
What actually goes over the wire in a collaborative canvas, and why the ready made library didn't fit.
Presence looks like the easiest feature in a collaborative app. It has the tightest constraints of anything in the system.
Every broadcast loop contains an assumption that send() works. Backpressure is what you build when it doesn't.
Rooms live in memory and get thrown away. The client is the persistence layer, which changes what reconnecting means.
Ctrl+Z is trivial in a single user app. Add one collaborator and the obvious implementation starts erasing other people's work.
Looking back at a collaborative canvas app, the decisions that held up, the ones that didn't, and what's still broken.