Documentation discipline: from README to runbook
Who writes docs, when, and how do they stay current? The approaches that stuck across 10 projects.
Web font loading: FOUT, FOIT, and getting font-display right
Custom fonts are the default on modern sites. Picking between FOUT and FOIT, the font-display trade-off, and preload strategy.
API response caching: ETag, Last-Modified, and when to build your own
Caching API responses saves latency and bandwidth, but botch invalidation and you ship stale data. Notes from three projects.
BGTaskScheduler in the wild: what actually works in production
Background work on iOS is rationed but possible. What I've actually shipped with BGTaskScheduler, BGAppRefreshTask, and BGProcessingTask in production apps.
Tenant onboarding automation: going from manual to API-driven
In the early months of a multi-tenant SaaS, every new customer gets onboarded by hand. At 50 customers it's a bottleneck. How…
Getting a new engineer productive in two weeks, not two months
On a team without documented onboarding, a new developer is still barely productive after two months. The six-step process that gets it…
Critical CSS extraction: how it actually works in production
Inlining above-the-fold CSS shaves hundreds of milliseconds off FCP. Critical CSS extraction tools, build pipeline integration, and how to handle dynamic pages.
Face ID and Touch ID: using LocalAuthentication the right way
Biometric auth is a premium feature on iOS. LocalAuthentication has a clean API, but using it wrong puts user security at risk.…
Real-time vs eventual consistency: how it actually shows up in UX
Eventual consistency is unavoidable in a distributed system, but how it surfaces to users is a choice. Read-your-writes, session consistency, and optimistic…
How to write an incident postmortem that actually changes your system
A postmortem isn't paperwork, it's a learning tool. How to structure a good one, what questions to ask, how to keep the…
Lazy loading: when native beats IntersectionObserver, and when it doesn’t
Is native loading=lazy enough in modern browsers, or do you still need a custom IntersectionObserver implementation? A practical comparison from three projects.
Webhook vs polling: the real trade-offs and the hybrid that actually works
Arguing webhook versus polling is asking the wrong question. When is each the right fit, and when do you need to run…