A paper receipt headed HYPERFOCUS, itemised for one session. Under DELIVERED, working code worth three days, the interesting part reached, proof of concept shipped. Under CHARGED, lunch skipped, coffee cold, 6pm hard stop blown. Total due, one evening. The footer reads "payable on receipt, no longer accepting Sundays". Beside it, the line "Hyperfocus is a superpower with an invoice attached."
Reflection · · 6 min

New world as an ADHD person

Six hours. I had planned to spend thirty minutes on a proof-of-concept. Engineers overrun estimates all the time. But this wasn’t a planning failure, it was something I’d spent my whole adult life recognizing too late: hyperfocus. The kind where time doesn’t slow down, it simply stops existing. My coffee went cold. I missed lunch. I blew past my 6pm hard stop with more working code than I’d shipped in the previous three days combined. ...

August 28, 2026 · 6 min · 1108 words · Kemal Akkoyun
Engineering · · 9 min

Making zero-touch Go observability agent-actionable

You can’t reproduce the bug locally, so you add a log line and redeploy. Wrong place. You add another one and redeploy again. That is the debugging loop from my GopherCon UK talk, and in this last part we’re going to shorten it: a decision rule for two zero-touch tools, then a runbook an AI coding agent (not a Java-style one) can execute. The runbook starts with one boring question: is this Go service already running, or can I rebuild it? If the service has to stay untouched, OBI (OpenTelemetry eBPF Instrumentation) is the default. If I can rebuild it and need function-level spans, otelc (OpenTelemetry Go compile-time instrumentation) is the default. The rest of the decision tree is checking privileges, Go version, collector endpoint, and whether RED metrics are enough. ...

August 6, 2026 · 9 min · 1898 words · Kemal Akkoyun
Deep-Dive · · 8 min

Stop Putting API Keys in Your Shell Config

We all know better. Don’t hardcode secrets. Use a vault. Rotate your keys. We’ve been saying this for years. And then the agentic coding boom happened. Suddenly every tool wants an API key. OpenAI, Anthropic, Gemini, Groq, Mistral, Replicate—the list grows weekly. And where do those keys end up? Right there in .zshrc, in plain text, because you needed it working right now and you were going to fix it later. ...

February 12, 2026 · 8 min · 1595 words · Kemal Akkoyun