Three layers of caching in front of a container that scales to zero26 September 2026
My blog's API is an Azure Container App that scales to zero, with a 30 second cold start. How three layers of caching keep readers from ever waiting on it: a stale-while-revalidate cache in a Cloudflare Worker, a durable KV fallback for Cloudflare's per-colo cache, and Cosmos DB Change Feed pushes so reads stop waking the container at all. With real monthly costs, and the trade-offs I accepted instead of solving.
Three Versions of a Blog-Post Counter17 September 2026
My blog counter went through three implementations in a week: fetching the whole article list to count it, a dedicated count endpoint that still cold-started the backend, and a Cosmos DB Change Feed keeping a Cloudflare KV value current so the read never touches origin. Plus a debugging story about one secret with three different names.
Adding Comments to This Blog: Cosmos, an Azure Function, and Cloudflare AI10 September 2026
How I added a moderated comment system to this blog: Cosmos DB's own Change Feed as the queue, an Azure Function scoring comments via Cloudflare Workers AI, least-privilege RBAC kept out of the CI pipeline on purpose, several real bugs found the hard way in production, and a mid-flight model upgrade after the small LLM proved unreliable.
Claude can now write my blog posts1 September 2026
I built a write API so Claude can create and update blog posts directly — and fixed a same-day production bug it uncovered along the way.
Blog feature is now live!24 August 2026
The blog shows articles from a Cosmos DB fetched via a minimal api and shown by two cloudflare workers.