This is my digital workbench for deep dives into Linux internals, networking, and optimizing the engineering workflow. A personal space for projects distinct from my professional role.

Recent Posts


Dissecting Binaries: The Six Layers of a Hardened Binary

This is one of Dissecting Binaries with machine-code-analyzer, a series where I point the tool at real binaries and write up what falls out. A modern binary defends itself in layers. None of the layers is a wall. Each one takes a single technique out of an attacker’s toolbox. It is the stack of them, and the way they interlock, that makes an exploit expensive to write. The clearest way to see the layers is to remove them....

July 7, 2026 · 9 min · Hagen Paul Pfeifer

Entering the Agentocene: A Statistical Investigation of AI-Era Coding

TL;DR This started as a search for KPI differences from AI adoption. That led to a more basic question first: can a shift like this be proven statistically at all? Software keeps handing more work to the machine: compilers, libraries, autocomplete. AI is the next step, and this time it shows up in the data, not just in opinions. I mined 5,009 git repositories (Rust, Python, JavaScript, TypeScript, commit history from 2019 through mid-2026) and tracked 10,812 individual developers to look for a measurable trace of that shift....

July 5, 2026 · 18 min · Hagen Paul Pfeifer

Dissecting Binaries: How Functions Begin

This is one of Dissecting Binaries with machine-code-analyzer, a series where I point the tool at real binaries and write up what falls out. Every text on x86 assembly teaches the same function prologue: push %rbp mov %rsp, %rbp Save the old frame pointer, point it at the current stack top, and now you have a stable base to address locals and walk the stack. It is in every textbook, every course, every disassembly screenshot from 2010....

July 4, 2026 · 5 min · Hagen Paul Pfeifer

Dissecting Binaries: A Tour of the Analyzer

This opens Dissecting Binaries with machine-code-analyzer, a series where I point the tool at real binaries and write up what falls out. I keep asking small questions about binaries and never having a quick way to answer them. How big is the average function in this program? How much of it is cold error handling that almost never runs? Does it use SIMD at all? Was it built with the stack protector?...

June 14, 2026 · 7 min · Hagen Paul Pfeifer

Opening Up My Git Training Material

I started teaching Git back when the porcelain was thin and most workflows required you to understand what was happening underneath. Over the years the material grew into something close to a full curriculum: fundamentals, branching and merging, rebasing, hooks, submodules, subtrees, LFS. Around 300 pages total. I no longer run these trainings myself, but the content is still in use in professional settings. Releasing it under an open license seems like the right call at this point....

May 7, 2026 · 2 min · Hagen Paul Pfeifer

AI-Powered Email Workflow

Background: when you’re subscribed to multiple mailing lists like the Linux Kernel Mailing List (lkml), bpf, dwarves, io-uring, linux-embedded, and others, the daily flood of emails makes it impossible to read everything in detail. Still, I want to keep up with ongoing development. That’s why I built a ChatGPT Summary Generator that integrates nicely with my OfflineIMAP–NeoMutt–Notmuch setup. Sorry for the clickbait — it’s just an email-to-ChatGPT fan-out. No proprietary Google/Microsoft stuff involved....

September 24, 2025 · 14 min · Hagen Paul Pfeifer