# ianlpaterson.com > Ian L. Paterson is a cybersecurity CEO (Plurilock), angel investor, and homelab tinkerer in Victoria BC. This site covers self-hosted LLM engineering, homelab infrastructure, Claude Code workflows, startup fundraising, and Victoria BC guides. ## Key pages - [Homelab](https://ianlpaterson.com/homelab/): Ian Paterson's homelab: a Dell T5820 with GPUs, Raspberry Pis, Docker over Tailscale, and Home Assistant. Guides on self-hosting, monitoring, and servers. - [LLM Picker: Find the Right Model for Your Task](https://ianlpaterson.com/llm-picker/): Interactive tool ranking 15 LLMs on 38 real coding tasks. Filter by use case, budget, and priority. Backed by benchmark data with actual costs and speed. - [Best Local LLM to Run AI on Your Hardware (2026)](https://ianlpaterson.com/ai/best-local-llm/): How to choose the best local LLM for your hardware in 2026, with a Qwen model comparison table by VRAM. - [Best LLM for Coding Agents (2026)](https://ianlpaterson.com/ai/best-llm-for-agents/): Guide to picking the best LLM for coding agents in 2026, ranked on real agentic task performance. - [Guide to Victoria BC's Tech Community (2026)](https://ianlpaterson.com/guide-to-the-tech-startup-community-in-victoria-bc/): The definitive guide to Victoria's tech ecosystem: startups, employers, coworking, events, and funding. - [Victoria to Vancouver, Seattle & Beyond: Every Route Compared (2026)](https://ianlpaterson.com/getting-to-from-victoria-bc/): Every way to travel between Victoria BC and Vancouver, Seattle, and beyond. Ferries, flights, floatplanes, and drive times compared. - [Victoria BC Executive Visitor's Guide: Where to Stay, Eat & Meet (2026)](https://ianlpaterson.com/victoria-bc-executive-visitors-guide/): Where to stay, eat, and meet in Victoria BC for executive visitors in 2026. - [Business Travel Gear That Endures](https://ianlpaterson.com/gear-that-endures-a-decade-of-travel-use-and-failure/): A curated list of buy-it-for-life business travel gear, tested over 10+ years and 500K+ miles. - [Innovation Policy in Canada: A Practitioner's Perspective](https://ianlpaterson.com/tech-innovation-policy-in-canada/): Canada's tech innovation policy analysis by Ian L. Paterson - [About](https://ianlpaterson.com/about/): CEO of Plurilock, host of Code & Country, and board member. Based in Victoria, BC. ## Posts - [Linux OOM Killer vs SSH: How to Stop Getting Locked Out of Your Own Server](https://ianlpaterson.com/blog/oom-lockout-ssh-survival-hardening/): 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.](https://ianlpaterson.com/blog/gpu-thermal-side-channel-reads-load-backwards/): 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"](https://ianlpaterson.com/blog/genuine-hardware-stale-firmware-zigbee/): 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](https://ianlpaterson.com/blog/docker-image-prune-containerd-disk-full/): 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](https://ianlpaterson.com/blog/rustdesk-self-host-tailscale/): 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](https://ianlpaterson.com/blog/llama-cpp-build-from-source-cuda-benchmark/): A homelab GPU swap booted clean with a good token rate, but the binaries were built for the old card. Why I rebuilt llama.cpp before trusting the benchmark. - [I Built a Honeypot to Catch Prompt Injections in Claude Code (Here's What It Caught)](https://ianlpaterson.com/blog/claude-code-prompt-injection-canary/): 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](https://ianlpaterson.com/blog/free-llm-api-2026/): A dated snapshot of free LLM API tiers in 2026, plus the silent model deletion that broke my pipeline and the routing fix that survived it. - [Three Green Lies: Debugging a Self-Hosted LLM Observability Dashboard](https://ianlpaterson.com/blog/grafana-llm-router-observability/): Within a week of standing up the dashboard, three panels were showing bad data. None of them was a Grafana bug. - [How I Drive WordPress From Claude Code (REST, Playwright, wp-cli)](https://ianlpaterson.com/blog/how-i-drive-wordpress-from-claude-code-rest-playwright-wp-cli/): Driving WordPress from Claude Code (Anthropic's terminal coding agent) fights the platform's core assumption roughly every other operation. - [Sorting a Filesystem Hoard With Local LLMs: What 2,300 Files Told Me About My Obsidian Vault](https://ianlpaterson.com/blog/obsidian-vault-cleanup-with-a-local-llm/): What do 2,300 random files on a knowledge worker's laptop actually look like? I let a local LLM tell me. - [Anti-detect browser benchmark 2026: 7 stealth tools, 31 Cloudflare targets, 651 verdicts](https://ianlpaterson.com/blog/anti-detect-browser-benchmark-patchright-nodriver-curl-cffi/): 7 anti-detect browsers including patchright, nodriver, and curl_cffi, tested against 31 real Cloudflare targets. Only nodriver passed every gate cleanly. - [Three Months of Speed-Up Experiments on a 3090 Ti: Autoregressive → DFlash → MTP for Qwen3.6-27B](https://ianlpaterson.com/blog/3090-ti-qwen-speedup-dflash-mtp/): Three months benchmarking speculative decoding on Qwen3.6-27B on a 3090 Ti: autoregressive vs DFlash vs MTP. Flags, decode-collapse data, lossless probe. - [Building llama.cpp from source on a Dell Precision T5820 with an RTX 3090 Ti (after seven power cycles)](https://ianlpaterson.com/blog/llama-cpp-3090-ti-dell-t5820/): Used Dell T5820 + RTX 3090 Ti + from-source llama.cpp + seven boot cycles. The working recipe and 42 tok/s on Qwen3.6-27B at the end. - [The LLM Kept Saying "Fixed." For Three Months, It Wasn't.](https://ianlpaterson.com/blog/llm-kept-saying-fixed-three-months/): An LLM endorsed three months of fake cron fixes before a shell linter caught the bug that would have wiped my VPS. Use deterministic tools first. - [Where to Work in Victoria BC: Coworking Spaces, Coffee Shops & Remote Work Guide (2026)](https://ianlpaterson.com/blog/where-to-work-victoria-bc/): I've been working out of Victoria for 15+ years, which means I've cycled through most of these spaces at some point. A few are genuinely great. Some are fine. - [Tech Jobs & Internships in Victoria BC: The Complete Guide (2026)](https://ianlpaterson.com/blog/tech-jobs-internships-victoria-bc/): At Plurilock, I've hired 15+ UVic co-op students over the past decade. - [Stop Claude Code from Lobotomizing Itself Mid-Task](https://ianlpaterson.com/blog/stop-claude-code-from-lobotomizing-itself-mid-task/): Claude Code auto-compact fires at 80% context and summarizes your conversation, losing constraints, files, and skills. Here is how to disable it, what to use instead, and how to build a session lifecycle that keeps context clean. - [How I Track Claude, Codex, and Gemini Quotas from One Script](https://ianlpaterson.com/blog/tracking-claude-codex-gemini-quotas-from-one-script/): I built a bash script that queries three undocumented AI CLI quota APIs (Claude OAuth, Codex JSON-RPC, Gemini session files) and normalizes them into one JSON file on an hourly cron. - [Inference Arbitrage: How I Route 200+ Daily LLM Calls Across Five Models](https://ianlpaterson.com/blog/inference-arbitrage-llm-routing-playbook/): A decision tree for routing LLM tasks to the right model. Covers Claude, GPT, Gemini, Codex, and local Qwen with cost comparisons from 38 real tasks. - [LLM Benchmark Rankings 2026: 15 Models Tested on 38 Real Coding Tasks](https://ianlpaterson.com/blog/llm-benchmark-2026-38-actual-tasks-15-models-for-2-29/): 15 LLMs (Claude, GPT, Gemini, DeepSeek + 11 more) run on 38 real coding tasks. Pass rates, latency, cost, and which model to actually use in 2026. - [LM Studio Errors on Apple Silicon: Prompt Truncation, Jinja Failures, and Crash Fixes](https://ianlpaterson.com/blog/lm-studio-fix-cannot-truncate-prompt-n-keep-n-ctx/): Quick fixes for common LM Studio errors on Apple Silicon: cannot truncate prompt, jinja template failures, exit code null, and 30B+ model crashes. Includes performance tuning tips (12 to 49 tok/s). - [Claude Code Memory System: MEMORY.md, Topic Files, and Automated Maintenance](https://ianlpaterson.com/blog/claude-code-memory-architecture/): A practical persistent memory system for Claude Code using plain markdown and cron jobs. MEMORY.md structure, topic file organization, session state management, and 8 design rules for context that survives across conversations. - [OpenClaw: 13 Errors, $1.50/Month, and an AI Team That Doesn't Need the Cloud](https://ianlpaterson.com/blog/openclaw-setup-apple-silicon-local-llm/): Fixes for "cannot truncate prompt with n_keep >= n_ctx", "unknown model", jinja template errors, and 10 more. Full OpenClaw setup on Apple Silicon with LM Studio, performance tuning (12 to 49 tok/s), and $1.50/month cost breakdown. - [Victoria BC Tech Salaries in 2026: What Developers, PMs, and Designers Actually Earn](https://ianlpaterson.com/blog/victoria-bc-tech-salaries-2026/): Victoria BC tech salaries run 10-15% below Vancouver. Mid-level developers earn $63K-$93K. See role-by-role salary ranges for developers, QA, product, and design. - [Is CDL Worth It? A First-Hand Review of Creative Destruction Labs from a Founder Who Did It](https://ianlpaterson.com/blog/creative-destruction-labs-review/): A founder who went through CDL-West's first cohort shares what the accelerator is actually like: access, elimination rounds, mentor red flags, and whether it's worth your time. - [How I Met 54 Angel Investors in a New City With Zero Network (The Exact Method)](https://ianlpaterson.com/blog/meeting-angel-investors-in-a-new-city-without-a-network/): How I generated 54 qualified angel investor introductions in a new city using a single repeatable strategy: the service provider funnel. No cold email required. Exact method inside.