Blog
Writing on cybersecurity, going public, and what actually happens in the boardroom.
-
Startup advisory board: build a portfolio, not a committee
In shortI set the pool before I picked the people: about five percent of the company for the whole advisory ecosystem, two…
-
How I built a private LLM router: one boring lookup table decides what leaves my network
My LLM router decided privacy by matching keywords in the prompt. It leaked, and I tore it out the next day. What replaced it is one lookup table you can audit in twenty seconds.
-
Best LLM for Coding in 2026: Picks by Use Case
In shortTwo of the 15 models cleared all 38 tasks at 100 percent quality, and one of them costs more than three…
-
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
In shortThe RTX 2060 SUPER came up clean and generated 52.8 tokens per second, which felt respectable until I noticed the binaries…
-
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
In shortA scanner of mine had failed every one of its last forty-seven calls, and I only found out because an unrelated…
-
Three Green Lies: Debugging a Self-Hosted LLM Observability Dashboard
In shortThe metrics exporter behind every temperature panel had exited 137 two days earlier, when I ran systemctl stop docker for a…
-
How I Drive WordPress From Claude Code (REST, Playwright, wp-cli)
In shortMy Rank Math sitemap had frozen into a snapshot, forty-seven URLs all stamped inside a 4-second window on 2026-04-13. Five documented…
-
Sorting a Filesystem Hoard With Local LLMs: What 2,300 Files Told Me About My Obsidian Vault
In shortThe scan started at 11,930 files, and 84 percent of that was vendored node_modules and .venv noise that every cleanup tool…
-
Anti-detect browser benchmark 2026: 7 stealth tools, 31 Cloudflare targets, 651 verdicts
In shortSeven stealth browsers went against 31 Cloudflare targets, three sweeps each, and only nodriver came back with zero blocked cells. It…
-
Three Months of Speed-Up Experiments on a 3090 Ti: Autoregressive → DFlash → MTP for Qwen3.6-27B
In shortDFlash looked like a 3.44x win until I let the output run long, and decode fell from 46.9 to 30.1 tok/s…
-
Building llama.cpp from source on a Dell Precision T5820 with an RTX 3090 Ti (after seven power cycles)
In shortSeven BIOS power cycles is what it took before the T5820 would POST with a 3090 Ti in it, and the…
-
The LLM Kept Saying “Fixed.” For Three Months, It Wasn’t.
In shortFor three months I pasted the same cron alert into a fresh Claude Code session, got a confident fix, and watched…
-
Where to Work in Victoria BC: Coworking Spaces, Coffee Shops & Remote Work Guide (2026)
In shortWatershed is my top pick and its $25 drop-in is also the cheapest downtown, while KWENCH Fort’s $200 hot desk is…
-
Tech Jobs & Internships in Victoria BC: The Complete Guide (2026)
In shortUVic runs 56 percent co-op participation and 69 percent of those students have an offer before they graduate, which is why…
-
Stop Claude Code from Lobotomizing Itself Mid-Task
In shortAuto-compact fired at 80 percent context three hours into a multi-file refactor, and Claude came back suggesting edits to a file…
-
How I Track Claude, Codex, and Gemini Quotas from One Script
In shortClaude hides its usage behind an undocumented OAuth endpoint that returns 401 unless you send the anthropic-beta: oauth-2025-04-20 header, which I…
-
Inference Arbitrage: How I Route 200+ Daily LLM Calls Across Five Models
In shortI run 80 to 120 interactive calls a day plus another 50 to 200 from scripts, spread across five models for…
-
LLM Benchmark Rankings 2026: 15 Models Tested on 38 Real Coding Tasks
In short15 models, 38 tasks from my own work, 570 API calls, $2.29 total. Opus and Sonnet both scored 100 percent. Gemini…
-
LM Studio Errors on Apple Silicon: Prompt Truncation, Jinja Failures, and Crash Fixes
In shortQuantizing the KV cache from F16 to Q8_0 was the biggest win, taking usable context from roughly 75,000 tokens to 140,000…
-
Claude Code Memory System: MEMORY.md, Topic Files, and Automated Maintenance
The full architecture for giving Claude Code persistent memory across sessions: four layers of markdown files, two commands, five cron jobs, and the 8 design rules I derived from breaking it over 22 days.
-
OpenClaw: 13 Errors, $1.50/Month, and an AI Team That Doesn’t Need the Cloud
OpenClaw on Apple Silicon with a 24B local model: 14 real errors fixed, sub-agent delivery working, $1.50/month total. Every config documented.
-
Is CDL Worth It? A First-Hand Review of Creative Destruction Labs from a Founder Who Did It
In shortI went through the first CDL-West cohort in 2017 with Plurilock, and what the program actually sells is access. It runs…
-
How I Met 54 Angel Investors in a New City With Zero Network (The Exact Method)
In shortPitch events got me a handful of meetings, and service providers got me the rest, because a startup lawyer has 40…
-
Victoria BC Tech Salaries in 2026: What Developers, PMs, and Designers Actually Earn
In shortThe one Victoria salary figure with a real local sample is the mid-level developer median, $75,665 at n=372, with seniors between…