Aug 15, 2026
August 15 - seventy-seven percent of the "edited" photos were not edited
A phone screenshot of an error turned into a day of storage work: an audit of 4,921 pulled photo edits found 3,777 byte-identical to their originals, 108 GB reclaimed, a 3.4 TB library moved with an instant rename, and five separate ways a copy or a delete can lie to you.
Aug 4, 2026
August 4 - I raised an alarm about my own backups, then measured it away
A session meant to make a backup claim checkable first read the config wrong and nearly 'repaired' a healthy setup, then proved one restore, then opened an alarm about unbounded growth. The follow-up the same day measured the alarm and found two of its load-bearing facts wrong. Ruling: accept.
Aug 1, 2026
August 1 - I said the sync would survive losing the middle machine, so I cut it and watched
My notes sync between three machines went through one of them, which made that machine a single point of failure for the other two. I paired the outer two directly, then proved the claim both ways by pausing the middle machine and timing a canary file across. The procedure I had approved turned out not to exist yet, and the documented emergency command had the wrong verb.
Jul 24, 2026
July 24 - three backups, zero bytes, and a mount that timed itself out
Three database backups written to network storage two weeks earlier were all zero bytes. The cause was an idle timeout on the mount tearing it down mid-write. The obvious retry then failed instantly for a second, unrelated reason, and the worker stopped and asked instead of improvising.
Jun 24, 2026
June 24 - a demo that ships without a backend, and a render pull that lied about succeeding
Built a static, backend-free demo of the Loupe cull UI, untangled an edited-render pull that reported success while writing nothing, fixed an importer that choked on Live Photos, and reorganized all my project notes into one place.
Jun 23, 2026
June 23 - Loupe's first offsite backup, lazy render lookups, and getting my notes out of iCloud's way
The whole project finally lives somewhere other than my one machine: I pushed a private backup of the repo. Then a small but careful change to how the app resolves edited renders so it stops checking thousands of network files on every restart, plus a power-outage readiness check and a move of my project notes vault out of the folders iCloud sweeps.
Jun 22, 2026
June 22 - folding two repos into one, then scrubbing my git history clean before the first push
I merged Loupe's pipeline repo into the app repo as a folder with its history intact, untangled a code-vs-data path coupling that would have quietly broken everything, and then (right before the first push to a private GitHub repo) ran a full-history audit that came back dirty. It found a home address, GPS coordinates, and a dump of my home network's internal layout buried in old commits. The rest of the day was rewriting history to purge all of it, normalizing my commit identity, and collapsing everything to a single clean branch.
Jun 21, 2026
June 21 - glass on the surface, plumbing underneath
A wide day: shipped a dormant glass redesign and a fully responsive header, chased a stats box that kept clipping, traced six photo-pairing mis-binds down to a filename suffix, sorted out the faithful way to pull edited photos, relocated my notes vault, and ran a security review I'm keeping vague on purpose.
Jun 17, 2026
June 17 - making Loupe leave my box: portability, a brand, and a public site
The day Loupe stopped being a thing that only runs on my machine. I reframed it as a self-hostable product, made the pipeline portable through environment variables, scrubbed both repos clean for publishing, finalized a brand and header, fixed the photobook's repetition problem, and registered loupeculling.com for a marketing site.
Jun 16, 2026
June 16 - a kernel reboot, two apps becoming one, and an enrichment layer pulled from Apple
The day the project got a name and a spine: I came back to a box that had silently rebooted, merged two sibling photo-review apps into one managed service called Loupe, added a cloud backup and AI-written period summaries, and built an enrichment layer that joins Apple's own labels, people, and scores back onto my library by UUID.
Jun 15, 2026
June 15 - the 462 GB move that took 0.09 seconds, and two review tools
A long day: turning a 462 GB copy into an instant rename by understanding the filesystem, catching two backup processes about to trample each other, and building two browser tools to actually review ~91,000 photos without ever deleting one by accident.