Kemal Akkoyun

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.

Me in 5 minutes | What I’m doing now | Everything else

Buy Me A Coffee

If you like my work, let’s stay in touch!


Hot out of my brain unfiltered! See notes for more.


eBPF Devroom at FOSDEM 2026

FOSDEM 2026: Even Bigger, Even Better

Another Year, Another FOSDEM FOSDEM — the annual Brussels pilgrimage. If you’ve been, you know the drill: too many talks, too little time, questionable coffee, and the kind of conversations that only happen when you pack thousands of open-source developers into a university campus in the dead of winter. This year was different for me, though. Two talks in two devrooms, three sessions at OTel Unplugged — and this time, I brought the whole family. My wife and our toddler (who has graduated from “can barely walk” to “can absolutely destroy a hotel room in under four minutes”) came along, and we turned it into a proper trip — FOSDEM, then a few days exploring Ghent and Antwerp before heading home. ...

February 13, 2026 · 7 min · 1470 words · Kemal Akkoyun

Fix Go Module Downloads Behind a Corporate VPN

If you work at a company that runs its own Go module proxy and you connect through a VPN, you’ve probably seen this: 1 2 Get "https://binaries.example.com/google.golang.org/grpc/@v/v1.77.0.mod": dial tcp 172.27.5.36:443: i/o timeout The module has nothing to do with your company. It’s a public dependency. Yet Go refuses to fetch it from the public proxy and just dies with a timeout. The frustrating part: you know proxy.golang.org has the module, and your config lists it as a fallback. So why doesn’t it fall through? ...

February 12, 2026 · 3 min · 564 words · Kemal Akkoyun

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
How to Instrument Go Without Changing a Single Line of Code

talk: How to Instrument Go Without Changing a Single Line of Code

Zero-touch observability for Go is finally becoming real. In this talk, we walk through the different strategies you can use to instrument Go applications without changing a single line of code, and what they cost you in terms of overhead, stability, and security. We compare several concrete approaches and projects: eBPF-based auto-instrumentation using OpenTelemetry’s Go auto-instrumentation agent and OBI (OpenTelemetry eBPF Instrumentation), compile-time manipulation using tools like Orchestrion and the OpenTelemetry Compile-Time Instrumentation SIG, runtime injection via Frida/ptrace, and USDT (User Statically-Defined Tracing) probes — both via libstapsdt and a custom Go runtime fork. ...

February 1, 2026 · 2 min · 216 words · Kemal Akkoyun
How to Reliably Measure Software Performance

talk: How to Reliably Measure Software Performance

Measuring software performance reliably is remarkably difficult. It’s a specialized version of a more general problem: trying to find a signal in a world full of noise. A benchmark that reports a 5% improvement might just be measuring thermal throttling, noisy neighbors, or the phase of the moon. In this talk, we walk through the full stack of reliable performance measurement — from controlling your benchmarking environment (bare metal instances, CPU affinity, disabling SMT and dynamic frequency scaling) to designing benchmarks that are both representative and repeatable. We cover the statistical methods needed to interpret results correctly (hypothesis testing, change point detection) and show how to integrate continuous benchmarking into development workflows so regressions are caught before they reach production. ...

February 1, 2026 · 2 min · 218 words · Kemal Akkoyun