← Project Register

Acc.

2026.04

Rochester Map

A Rochester coordination experiment built around a hand-drawn SVG map — a visitor drops a pin for where they'd meet someone tomorrow, and gets paired against one prior pin chosen at random.

Role
Sole developer
Medium
Next.js · TypeScript · Convex · Overpass API
Acquired
Completed
Status
SHIPPED
Extent
11 commits · 2 days
Condition
Shipped and live. Pin drop, pairing and the match rule are covered by unit tests; the contour aggregate is newer and thinner on coverage. The committed map geometry is ODbL-derived, so any rendering of it has to credit OpenStreetMap contributors.
Locality
Rochester, N.Y.
Links

The premise is a Schelling point problem stated as a question instead of a diagram: if you and a stranger both had to be in Rochester tomorrow and couldn’t communicate first, where would you go to find each other? A visitor drops a pin, picks an arrival time, and says whether they’ve been to the city before. There’s no tile provider and no map library underneath it — the base map is one SVG, because the point was never geographic precision.

On submit the pin is paired against exactly one earlier pin, chosen uniformly at random, and that pairing is frozen onto the document. Re-rolling it on read would hand a returning visitor a different opponent than the one they were shown. The outcome is deliberately not stored: it’s a pure function of two immutable pins — within 100 metres of ground distance, and the same arrival slot exactly — reported as two separate axes so that “right place, wrong time” survives the trip from server to copy intact. One pin per session, enforced by an opaque client-generated token on an indexed lookup; Convex mutations are serializable transactions, so check-then-insert is race-safe without reaching for a rate limiter.

Street and building geometry came out of Overpass in a single hand-run script: a bounding box inverted from the projection at the viewBox corners, Douglas–Peucker simplification, clipped to the box, emitted as committed JSON. Nothing hits Overpass at build or request time. The aggregate view — contours, an arrival-time distribution, the share of the map a pin would have caught — sits below the match, deliberately, as a follow-up rather than the lead.