
Hey, I’m Kemal
Software Infrastructure Engineer, System Programmer, Performance Engineer. Obsessed with observability, instrumentation, and low-level programming. Slow thinker. Open Source Enthusiast. Mentor. Blogger and speaker. Introverted human (not Cylon, I guess). Pronouns: He/Him.
Deep in the trenches of Go compile-time magic, runtime eBPF trickery, and tracing wizardry. Keeping a soft spot for profiling while tinkering with Go and its toolchain. Still exploring distributed systems, time-series (Prometheus) sorcery, and making machines sing in harmony.
Currently building Go instrumentation and tracing while keeping an eye on profiling at Datadog. Based in Berlin with my partner and our son.
Most Recent Issues
Latest issues across all newsletters.
- The Unwind #2: Twenty weeks · The Unwind ·
- The Unwind #1: Cold start · The Unwind ·
Recent Notes
Hot out of my brain unfiltered! See notes for more.
Start Here
New here? Three paths through the archive. Pick the one that matches whatever dragged you in.
If any of these land, the newsletter brings the next ones to your inbox.
Recent Posts

talk: Why Your Go Benchmarks Are Lying (And How to Stop Them)
A benchmark moved that could not have moved. At Datadog our code runs inside the customer’s process: a false red wastes our time, a false green costs the customer CPU. This talk is the set of checks we run before we believe a number, and each check earns its place through an incident. Every section opens on a real incident and asks one of three questions. Is the benchmark measuring real work? Is the sample stable enough? Is the difference large relative to the noise? On a laptop, the compiler deletes the work you meant to measure and a single run is a point. In CI, one workload is not representative and shared runners move under you. No maths on stage: each section says why a check matters and ends with one action you can take on Monday. ...

talk: How to Instrument Go Without Changing a Single Line of Code
A production bug, a service you cannot touch, and a debugging loop measured in deploys. This talk follows one Go process through its lifecycle and finds an instrumentation point at each station: at build time, at process start, and in the kernel. At build time, otelc rewrites the code during compilation, so the binary ships already instrumented. At process start, the OpenTelemetry injector loads an agent into the process without a rebuild. In the kernel, OBI attaches eBPF probes to a static Go binary and collects traces and metrics from outside the process. Along the way we pick up CPU profiles, see where request correlation across goroutines and connections breaks down, and when the baseline still cannot answer the question, a live debugging probe captures the missing logs and variables within explicit limits. ...
Parkinson's Law in Reverse: Garbage Collecting My Work Before a Team Change
“It is a commonplace observation that work expands so as to fill the time available for its completion.” That’s the first sentence of C. Northcote Parkinson’s essay in The Economist, November 1955, better known as Parkinson’s law. His example is an “elderly lady of leisure” who spends a whole day sending one postcard to her niece at Bognor Regis, a job a busy man would finish in three minutes. Fun fact: that sentence isn’t even the law. The rest of the essay is about why government offices keep growing, with rules like “Officials make work for each other.” I never needed an official. I made work for myself just fine. ...
Hooking into the Go Toolchain
Note This post was originally published on Internals for Interns on 2026-10-05, as a guest post in Jesús Espino’s series on Go internals. This is a mirror on my personal blog. If you want to share it, please link the original post. Today we’re going to take a look at the Go toolchain, and more specifically at how we can take part in the compilation process with our own code. We won’t patch the compiler. We’ll stand right next to it while it works, watch what it does, and every now and then hand it something it didn’t ask for. Think of it as photobombing the compiler, politely. 📸 ...

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. ...
