Things I build, break, fix, and write about

1 September 2026
Privacy boundaries when AI touches government records

AI governance gets awkward fast when government records are involved, because the model is rarely the problem. The problem is the sloppy boundary around it, the sort I have seen quietly turn a harmless prompt into a route through records nobody meant to expose.

1 September 2026
Metadata schema choices for content libraries

Structured metadata only works when it matches how people actually retrieve content. I have seen neat schemas fail as soon as the library meets real...

31 August 2026
Federation trade-offs in self-hosted social feeds

Federation looks tidy until you let it touch the edges, and then the odd cases arrive fast. I prefer self-hosted social feeds that stay explicit about...

31 August 2026
FireAvert Z-Wave stove shutoffs for offline safety

FireAvert’s setup does the part that matters without asking Home Assistant to babysit it, which is exactly how I want stove protection to behave. The...

Latest blog posts you might like

21 July 2026
SquidRouterModule express path and forged sourceAddress

SquidRouterModule express path looked tidy until I traced the forged sourceAddress and a zero-amount call straight through to Safe actions. Once attacker-controlled bytes were trusted for the delegate...

20 July 2026
EvidenceForge for synthetic security logs

EvidenceForge treats synthetic security logs as a state problem, not a formatting exercise. If the same host, process, and logon wander between sources, the whole thing feels false, and I have seen...

20 July 2026
Parsing untrusted media files in MediaInfoLib

I’ve seen parser bugs end up in places they had no business being, and MediaInfoLib heap-based buffer overflows are exactly the sort of mess that starts with a media file and ends with a much bigger...

20 July 2026
Weekly Tech Digest | 20 Jul 2026

Stay updated with the latest in tech! This digest covers AI ethics, auto industry shifts, and the impact of politics on technology, exploring today's pressing issues.

19 July 2026
Orthanc upload paths and DICOM heap overflow

Orthanc does not get to be picky, so the upload path is where the trouble starts. A DICOM heap overflow is rarely elegant, it usually begins with one bad length field, one careless allocation, and a...

19 July 2026
CVSS and EPSS for faster triage

EPSS is the bit people miss when they sort by CVSS alone. I use it to catch the vulnerabilities that are actually getting swung at, not the ones that merely look nasty on paper, and that changes the...

18 July 2026
Hardening Salesforce access after token compromise

Hardening Salesforce access after a token compromise is mostly about being blunt before being clever. I want the broken token chain gone, the document paths checked, and the logs in one place, because...

18 July 2026
How .env theft exposes AI service API keys

A stolen .env file is not just a mess to tidy up, it can hand out API keys that keep working long after the box is gone. That is how autonomous attack workflows stay alive, with one credential quietly...

17 July 2026
OCI image trust for Linux host observability

Inspektor Gadget OCI images make deployment easy, but they also move trust to places people rarely examine. I would rather be awkward about signatures, TLS and build inputs now than discover later...

17 July 2026
Object.prototype pollution in Acrobat Reader DC parsing

Adobe Acrobat PDF parsing is one of those areas where a small trust mistake becomes something much nastier. I spent time tracing how polluted prototypes slip into privileged JavaScript, and the path...