13 October 2026
What a RAG assistant and semantic search really cost on Cloudflare's free plan: measured neurons, the account-wide limit and its 24-hour lockout, and the design decisions that followed.
13 October 2026
What a RAG assistant and semantic search really cost on Cloudflare's free plan: measured neurons, the account-wide limit and its 24-hour lockout, and the design decisions that followed.
6 October 2026
A RAG chat assistant fully on Cloudflare (Workers AI, Vectorize, a Durable Object) where the contact offer has to be earned: the model only reports a judgment, code decides.
27 September 2026
Automating website deployment with AI: I tell Claude which site to add or update and what to change, and everything after that is automatic, except my review of the pull request. Claude gets no Cloudflare credentials; it prepares one PR with config, custom domain and images, and GitHub Actions and Cloudflare Workers Builds deploy it after the merge.
13 September 2026
Cache invalidation closes the loop from part 8's stale-cache workaround, proven live with a real hit-then-edit-then-miss test. Plus a small backend bug (an unprompted greeting mid-conversation) and a run of real mobile layout bugs on the widget interface.
13 September 2026
The chat widget goes live, and real use immediately surfaces a language rule the model ignored, a cross-partition retrieval sort bug that had been silently serving the worst-matching content since launch, a citation leak, and the stale-cache gotcha that makes the next part necessary.
13 September 2026
Securing the assistant Worker before it gets a public widget: per-IP rate limiting, wiring in a Turnstile check the site can't pass yet, a conversation-logging heuristic that turned out not to be a security boundary, and an older language-handling bug caught along the way.
13 September 2026
Backfilling the knowledge store for real: embedding all 93 blog articles, authoring personal and professional facts through an interview process (and catching a real factual error along the way), and refining the assistant's conversational manners for small talk, farewells, and off-topic questions.
12 September 2026
Building the assistant Worker itself: a public-facing least-privilege Cosmos role, querying a vector database with no SDK available, a generation model that turned out to already be deprecated, and a live test that correctly answered a Dutch question from English source content.
12 September 2026
Embedding real articles into the vector store: a silent Ollama context-window truncation bug, and real before/after evidence that paragraph-level chunking dramatically outperforms whole-article embeddings.
12 September 2026
Provisioning the Cosmos DB vector store: an immutable container policy, a database-level shared-throughput restriction that took three failed deployments to diagnose, and a missing executeQuery permission found only once a real query was attempted.
12 September 2026
Testing whether an embedding model run locally through Ollama produces the same vectors as the same model hosted on Cloudflare Workers AI, the result that decides whether this project's local-authoring/cloud-serving split actually works.
12 September 2026
Kicking off a new project and blog series: a RAG-based AI chat assistant that answers visitor questions about me, reusing the Cosmos DB + Cloudflare stack already running this blog.
2 September 2026
Building a browser-based CKA practice lab: a real Ubuntu terminal with genuine vim/grep/awk muscle memory, simulated kubeadm/kubectl for safe repetition, and the Azure/Cloudflare integration quirks that came with it.
25 August 2026
I extended my Hangman demo with Claude Code so a human player can guess letters alongside the two LLM agents.
24 August 2026
The blog shows articles from a Cosmos DB fetched via a minimal api and shown by two cloudflare workers.
22 July 2026
Building a live Capacity Advisor demo over the holidays: an agent that collects Azure Container Apps metrics and asks a Cloudflare Llama model whether the configured resources are actually sufficient, with a real-time SignalR log stream.
21 July 2026
An hour spent debugging why a D1 binding vanished after moving a Cloudflare Worker to GitHub + wrangler.jsonc — the fix was defining a proper main entrypoint alongside the static-assets binding, not just adding the binding in the dashboard.
1 June 2026
The original Hangman demo launch: two Cloudflare Qwen2.5 LLM agents playing against each other, containerized on Azure Container Apps, served by a Cloudflare Worker, with real-time output over SignalR — evolved from an earlier AI-102 console practice project.
11 May 2026
Cutting first-click latency on the Text Analysis demo by 5-10 seconds: a Cloudflare Worker checks KV on page load and invisibly prefetches/warms the Azure Container Apps backend if it's been idle more than 5 minutes.
7 May 2026
The build log for koorevaar.com itself: three evenings from buying the domain to a portfolio built with Aider+Qwen2.5, GitHub Actions pipelines, and a Terraform-deployed Azure Container Apps text-analysis demo behind a Cloudflare Worker + phi3:mini.
2 May 2026
Week 3 of an AZ-400 side project: a full Terraform + AKS + Traefik pipeline covering infrastructure, blue/green + canary deployment, and teardown — with real execution times for each stage, down to seconds for a blue/green traffic switch.
27 April 2026
A permanent, always-HTTPS demo domain that costs almost nothing when idle: a Cloudflare Worker + KV serves a static placeholder page, then instantly re-routes to a freshly provisioned AKS backend the moment a new ephemeral demo starts.