Blog

Short notes on things I figured out at work or on the weekend. Mostly backend, sometimes infrastructure, occasionally a strong opinion about tools.

01

What Is an Agent Harness? (And Why Your LLM Needs One)

An agent harness is the code around an LLM that turns a chat model into a reliable agent: the loop, tool dispatch, context management, verification, and recovery.
02

Why your Kubernetes rolling deploy still drops requests

A rolling update is not the same as zero downtime. Kubernetes will route traffic to a pod that is shutting down and restart one that is merely busy. Here is what actually makes a deploy invisible to users: readiness gating, the SIGTERM race and the preStop fix, PodDisruptionBudgets, and the ASP.NET Core and Node.js specifics.
03

How I would secure a Kubernetes cluster from day one

I ran .NET microservices on EKS in production, and we bolted security on after the fact. A fresh Kubernetes cluster trusts everything by default. Here is the day-one hardening I would never defer again: default-deny networking, least-privilege RBAC, admission control, real secrets, and runtime detection.
04

The request is the wrong unit of scale for LLMs on Kubernetes

Your dashboard says traffic is flat while latency drifts and the GPU strains. The HTTP request is only the envelope; the real work is token processing. Why tokens, not requests, are the unit of scale for LLMs on Kubernetes.
05

Building a production LLM platform on Kubernetes

I have run Kubernetes in production for microservices, not LLMs. Serving large language models breaks the assumptions that make K8s good at web apps. Here is how I would architect a production LLM platform, vendor-neutral, with the router, token accounting, and autoscaling Kubernetes will not give you.
06

An idempotency bug that only affected posts with em-dashes

My nightly D1 to GitHub backup worker claimed idempotency and quietly lied about it every run. The culprit: atob() returns a latin-1 string, not UTF-8. Here is how I found it and the 13-line fix.
07

Terraform, Pulumi, Kubernetes, or none: picking infra in 2026

I have used Terraform to run Kubernetes microservices in production. My personal site runs on 47 lines of wrangler.toml. After seven years with and without those tools, here is the honest cutoff.
08

Migrating from WordPress to Cloudflare Workers in 2026

After years on WordPress, I rebuilt yigittanriverdi.com as a single Cloudflare Worker. Astro 6 SSR, D1 for content, two write paths into one source of truth, and an admin panel I can edit from anywhere.
09

Using Claude Code as Your Pair: Notes from Building a Real Site

Three days of building a personal site end-to-end with Claude Code as the primary engineer. What worked, what did not, and the workflow patterns that emerged.