Twenty-one hours, thirty-nine PDFs, zero GPU
Extracting text from ~39 image-only Grok chat-export PDFs into Obsidian-vault markdown via a local CPU-only vision model. Three Windows-specific bugs worth writing down.
Long-form, infra-level sessions with Claude Code. Agentic hours at the command line.
9 posts
Extracting text from ~39 image-only Grok chat-export PDFs into Obsidian-vault markdown via a local CPU-only vision model. Three Windows-specific bugs worth writing down.
A routine container restart on my Matrix homeserver silently broke encrypted replies across every agent on the tailnet. Agents looked healthy. None of them could talk. Here's the mechanism and the lesson.
A proactive security audit on my Matrix homeserver turned up four P0 findings. All closed. Two P1 items stay blocked on bigger migrations. The specifics stay private; the lesson doesn't.
Every AI coding tool wants to add 'Co-Authored-By: Claude' to your commits. Most builders let it happen. Here's why you shouldn't — and a git hook that strips the trailer before it lands.
My media pipeline silently died when a VPN exit node dropped off the tailnet. Six cascading root causes hid under each other. Five hours to find the first one.
Two days off Tailscale. Cause: dead PSU in a small-form-factor host with a proprietary power supply. Disks recovered clean. Now I decide what to build next.
Mail-auth, transport posture, web hardening, DNS integrity. The category list — not the receipt. If you're about to open a host that does mail and web on the same IP, this is the floor.
When status.jordannewell.com's upstream went down, my first two fixes cut latency from 60 seconds to 1.2 seconds. The third cut it to 170 milliseconds. I should have started with the third one.
Built a tool that classifies any crypto-key string and enumerates the cross-chain addresses the same private key unlocks. The Cosmos HRP swap is the headline. Here's how it shipped.