doodad.gallery is 54,565 objects from the Cooper Hewitt collection on one infinite canvas. I built it solo. There's no sorting and no categories. Object position comes from a UMAP projection of image and text embeddings, so things that look alike or mean alike end up as neighbors. No nav, no search, no menus. You pan and zoom, thumbnails resolve out of a field of dots, and you click one. The only other thing you can do is leave a sticker, one per object.
My first pass sized the thumbnails in world units, so the images grew at the same rate as the space between them. A dense cluster stayed a solid mat of overlapping images however far you zoomed. Sizing in screen pixels fixes that and raises the question of which ones to show. Every object gets a reveal level computed at build time: the first zoom at which its 72px cell isn't already claimed by something else. Zooming uncovers more thumbnails rather than magnifying the ones already on screen, and nothing overlaps at any depth.
Less than 1% of these objects have ever been opened by anyone, so the sticker is a way to leave a mark on what you find. Placing one is a single drag. You pull a sticker out of a tray, and the copy that follows your finger jumps up a size one frame later, so picking it up reads as a pop rather than a smooth grow. It leans up to 16 degrees in whatever direction you're dragging, and straightens out again if you stop moving. Where you let go gets checked against the object's image plus a margin, because fingers land near things rather than on them. Then the sticker drops with a squash and a small overshoot before it settles. Of 122 visitors, 31 placed one with no prompt and no tutorial. The median gap between opening a first object and sticking something to it was 12 seconds. That 122 is people who loaded the map, not the thousand-odd requests Cloudflare counted.
I built search, tested it, and deleted it. UMAP preserves local neighborhoods but not global distance, so a query's fly-to landed on its true nearest neighbors sometimes and a third of the map away other times. Cutting it took the objects table from 962 MB to 521 MB.
The median visitor opened two objects. One opened 140, over about an hour and 15 minutes.
