doug.sh
Building things with keyboards and end mills. Rabbit holes included.
Four Radeon AI PRO R9700s and two RTX 3090s behind a PEX88096 switch on one X570 slot: BIOS, kernel flags, ROCm and CUDA, and Qwen3.8-27B at 601 tok/s.
What bifurcation risers, retimers and PCIe switch (PLX) cards do for a multi-GPU box, with peer-to-peer copies at 54.7 GB/s inside a PEX88096 and what ACS costs.
Two RTX 3090s on a bifurcated x8/x8 splitter hung vLLM with timeouts and GPU errors. The fix was two PCIe register bits and a gen3 lock at boot.
How to point Oh My Pi at vLLM, llama.cpp, SGLang, and other local servers or a gateway, plus two config fixes for omp 18.2.7 and later.
Keeping vLLM's Prefix Cache Warm Between Agent Turns
Sep 15, 2026
What vLLM's cache tiers hold, why coding agent traffic keeps invalidating them, and the Bifrost tool schema bug that cost 90 to 180 seconds on the turns it hit.
How I cut a self-hosted coding agent's wait per turn from 28 seconds to 7 with Oh My Pi, a thinking budget and a warm vLLM prefix cache.
A tour of erm, a local CLI that removes disfluencies from English speech recordings using faster-whisper, a few detectors that look at the audio directly, and ffmpeg.
Give Your Coding Agent a Journal
Apr 23, 2026
A plain markdown journal file, updated as the agent works, is a simple and effective form of memory for LLM harnesses like Claude Code.
Route53 as a Key Value Store, 2026 Edition
Apr 18, 2026
A modernized take on using Route53 TXT records as a key-value store from GitHub Actions: OIDC auth, no static keys, and a cleaner update flow.
Using Route53 as a Key Value Store in GitHub Actions
Dec 13, 2021
Use Route53 private hosted zone TXT records as a cheap key-value store for GitHub Actions, with composite actions that set and get values through the AWS CLI.