Ian L. Paterson
Practitioner notes on AI agents, cybersecurity, and building public companies in Canada.
Ian’s personal blog.
-

How I built a private LLM router: one boring lookup table decides what leaves my network
How I built a private LLM router that load-balances local + cloud and uses privacy-by-prefix to keep sensitive prompts off cloud APIs. Built live in 3 hours.
-
Best LLM for Coding in 2026: Picks by Use Case
The best LLM for coding in 2026 is Claude Sonnet 4.6. It cleared all 38 tasks in my benchmark at 100% quality for $0.20 per run and a 4.6 second…
-

Linux OOM Killer vs SSH: How to Stop Getting Locked Out of Your Own Server
When the Linux OOM killer fires, ‘sshd is running’ stops meaning ‘you can log in.’ Four systemd and sysctl fixes that keep your login path alive through a memory storm.
-

I Strapped a $15 Sensor to My GPU. It Read the Load Backwards. Here’s How to Calibrate It.
A $15 Zigbee sensor on an open-air GPU reads load backwards in the fan airflow. An LLM falls for the same trick. Calibrate against nvidia-smi to fix both.
-

My brand-new SLZB-07 Zigbee coordinator shipped too old: fixing “EZSP protocol version 12 is not supported by host”
The SMLIGHT SLZB-07 connected, spoke the right protocol, then quit: EZSP version 12 not supported. Here’s the flash fix and how to pick the right channel.
-

Why docker image prune Won’t Fix a Full Root Disk: The Containerd Snapshotter Trap
docker image prune skips tagged images, and the real hog hides in /var/lib/containerd. How I traced a 99% root disk to the containerd snapshotter and fixed it.
-

Self-Hosting RustDesk on Tailscale Without Opening a Single Public Port
Run rustdesk-server-oss behind Tailscale with zero public ports, plus the macOS root-daemon config fight that ate an hour and nobody has documented.
-

Why Your llama.cpp Benchmarks Are Wrong: GPU Architecture and Real Numbers
I pulled an aging Quadro out of my homelab LLM box, dropped in an RTX 2060 SUPER, and the thing booted on the first try. The driver saw both cards.…
-

I Built a Honeypot to Catch Prompt Injections in Claude Code (Here’s What It Caught)
I built a honeypot canary that screens web content with a deliberately gullible LLM before my AI agent reads it. Here is what it caught.
-

Free LLM API Tiers in 2026: What Groq, Cerebras, Mistral, Gemini and Cohere Actually Give You
On May 31, 2026, one of my LLM providers quietly deleted most of its free models, including the exact one my code was calling. My code didn’t change. The vendor’s…