Things I build, break, fix, and write about

5 November 2026
Security Advisory – 05 Nov 2026

Daily security advisory summary for 05 Nov 2026

4 November 2026
Linux kernel net/sched UAF constraints on CentOS 9 desktop

Linux kernel net/sched use-after-free looks messy on paper, and on CentOS 9 Desktop it is worse, because the obvious paths are blocked and the useful...

4 November 2026
AI-assisted pull requests raise review cost

AI-assisted pull requests look cheap until you try to review them properly. I’ve seen tidy code hide a lot of work, and the cost only goes up when a...

4 November 2026
Security Advisory – 04 Nov 2026

Daily security advisory summary for 04 Nov 2026

Latest blog posts you might like

11 September 2026
URLPattern out-of-bounds read in workerd

Cloudflare workerd memory corruption is the sort of bug I dislike most, because the JavaScript looks fine while the C++ glue quietly wanders off the edge. If you run Workers or Code Mode, patching is...

11 September 2026
Hardening PHP YAML parsing against untrusted input

The Symfony YAML component is tidy until you point hostile input at it. I am more interested in the bits that fall over, recurse until PHP gives up, or wander into object handling, because those are...

10 September 2026
Avoiding rtnl_lock() in clsact flower paths

Linux kernel net/sched use-after-free bugs are rarely polite, and this one leans on an unlocked clsact flower path that gives the race room to breathe. I prefer fixes at the locking boundary, because...

10 September 2026
Fast section navigation from Markdown headings in fzf

I built my Neovim Markdown outline the hard way, because headings inside fenced code blocks are exactly the sort of nuisance that break a tidy picker. The fix is simple enough, and once fzf opens on...

9 September 2026
Merge request validation after AI-authored patches

LLM-generated pull requests are easy to file and much harder to trust. I care less about tidy diffs than about where they came from, whether they match a real task, and whether I will be stuck...

9 September 2026
ionCube Loader offline decryption of PHP bytecode

ionCube Loader is less mysterious once you stop assuming the obvious path works. The awkward bit is usually the seed, not the stream, and a small hashing mistake will give you a polished-looking pile...

8 September 2026
HEIC metadata removal in mat2 0.15.0

mat2 0.15.0 finally treats HEIC as the awkward format it is, and I prefer that honesty. If you are relying on clean metadata removal, the ICC profile is still there, so you need to check the file...

8 September 2026
Audit logging for Snowflake account takeover

Snowflake customer data exfiltration rarely looks dramatic at first, which is why I care more about the session shape than the login banner. If the identity, device, and timing do not line up, the...

7 September 2026
Emergency WAF release adds Free Ruleset detections

Cloudflare WAF emergency release has landed with new block rules for attacks I would rather catch at the edge than in production. It is a useful backstop, not a fix, and if it starts firing on your...

7 September 2026
Turbopack and single-locale middleware bypass in Next.js

A single locale entry in i18n.locales changed the shape of my request path, and Turbopack stopped behaving like I expected. The Next.js App Router middleware bypass was quiet, awkward, and exactly the...