July 21, 2026
Your folder names were the training data
Twelve years of hand-named event folders turned out to be a labeled dataset. How the family's own naming habit became the ground truth an event-clustering pass was tuned against — and the three quiet wrinkles (camera clocks, digitized tapes, and where "home" is) that would have corrupted it otherwise.
Read the post →
July 21, 2026
Finding the same face across twenty years
Face embeddings drift as children grow, so one global clustering pass can't hold a newborn and a ten-year-old at once. Half-year windows, a union-find chain across the gaps, a purity gate that cut clusters in half, and the honest limit where siblings get flagged for a human instead of auto-merged.
Read the post →
July 21, 2026
The archive stays where it is
Read-only by construction, an index on the internal disk, and a WAL journal that survived two literal power cuts with zero data loss. Why "runs locally" is a much bigger architectural commitment than it sounds, and what it costs to keep a full study invisible on a base Mac.
Read the post →