{"date":"2026-09-15","description":"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.","lastmod":"2026-09-15","tags":["llm","ai","agents","self-hosted","vllm","gpu","qwen","oh-my-pi","mcp","bifrost"],"title":"Keeping vLLM's Prefix Cache Warm Between Agent Turns","url":"https://doug.sh/posts/vllm-kv-cache-agents/","words":1762}
{"date":"2026-09-13","description":"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.","lastmod":"2026-09-13","tags":["llm","ai","agents","self-hosted","oh-my-pi","qwen","vllm","gpu"],"title":"Tuning a Local Coding Agent: Oh My Pi and Qwen3.8-27B on Two RTX 3090s","url":"https://doug.sh/posts/tuning-a-local-coding-agent-oh-my-pi/","words":3622}
{"date":"2026-05-02","description":"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.","lastmod":"2026-05-02","tags":["audio","speech","whisper","ffmpeg","python","cli","open-source","claude-code"],"title":"erm: A Local CLI That Strips Ums, Uhs, and Erms From Speech","url":"https://doug.sh/posts/erm-a-local-cli-that-strips-ums-uhs-and-erms-from-speech/","words":1567}
{"date":"2026-04-23","description":"A plain markdown journal file, updated as the agent works, is a simple and effective form of memory for LLM harnesses like Claude Code.","lastmod":"2026-04-23","tags":["claude-code","llm","ai","agents"],"title":"Give Your Coding Agent a Journal","url":"https://doug.sh/posts/give-your-coding-agent-a-journal/","words":795}
{"date":"2026-04-18","description":"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.","lastmod":"2026-04-18","tags":["github","actions","aws","route53","oidc"],"title":"Route53 as a Key Value Store, 2026 Edition","url":"https://doug.sh/posts/route53-as-a-key-value-store-2026-edition/","words":1022}
{"date":"2021-12-13","description":"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.","lastmod":"2026-09-14","tags":["github","actions","aws","route53"],"title":"Using Route53 as a Key Value Store in GitHub Actions","url":"https://doug.sh/posts/using-route53-as-a-key-value-store-in-github-actions/","words":951}
{"date":"2021-09-11","description":"Composite Actions let one GitHub Action run several shell steps in bash, Python, Node or PowerShell. How to write one, pass inputs and outputs, and call it.","lastmod":"2026-09-14","tags":["github","actions"],"title":"Using Composite Actions with GitHub Actions","url":"https://doug.sh/posts/using-composite-actions-with-github-actions/","words":608}
