Screenshots for an app that has no simulator
MusicKit returns nothing in the simulator, so the marketing screenshots came from the mock service the app already shipped - plus real cover art from the iTunes Search API.
MusicKit returns nothing in the simulator, so the marketing screenshots came from the mock service the app already shipped - plus real cover art from the iTunes Search API.
A broken GitHub widget traced to a paused upstream demo - and, found along the way, a hash-pinned CSP silently invalidated by a one-line accessibility fix.
Four failures behind one header: dead middleware, _headers rules that merge instead of override, a blob-URL worker under script-src, and a script only the edge injects.
A Sitemap directive that had to point at the index, a 404 fix that almost got overbuilt, and a documented Cloudflare behavior that didn't materialize when checked.
An og:image guard that never fired, a one-line default that fixed it, a purpose-built terminal card, and a retina gotcha in headless Chrome.
A dead symlink target, a fix already queued by automation, and docs describing components that don't exist - three sources of truth, same lesson each time.
A perf batch with an easy half (prerender, PNG optimization) and a silent failure: an SVG favicon whose external image reference browsers drop without a word.
Adding astro check and Prettier before every deploy, a type error the sibling site had already solved, and a manual build trigger with no concept of a dry run.
Replacing dead GitHub Actions with Cloudflare Workers Builds meant a missing --config flag and a token type the Builds API flatly refuses to accept.
Why Imperfect Systems is keeping a public dev log, and how the blog is wired up under the hood.
Page 2 of 2