41554 blogs · [ { "id": "01a0d80b-3bc5-739f-8e85-32793f448325", "title": "Custom Models in Oh My Pi: vLLM, llama.cpp, SGLang and More", "url": "https://doug.sh/posts/oh-my-pi-custom-models/", "published_at": "2026-09-23T00:00:00+00:00" }, { "id": "01a0cb0f-e408-70e2-ac10-2a8aabb51437", "title": null, "url": "https://doug.sh/", "published_at": "2026-09-20T00:00:00+00:00" }, { "id": "01a0cb0f-e408-70e2-ac10-2a8aac873061", "title": null, "url": "https://doug.sh/privacy/", "published_at": "2026-09-20T00:00:00+00:00" }, { "id": "01a0cb0f-e408-70e2-ac10-2a8aacb79917", "title": null, "url": "https://doug.sh/subscribe/", "published_at": "2026-09-20T00:00:00+00:00" }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ab0bbacb2", "title": null, "url": "https://doug.sh/about/", "published_at": "2026-09-20T00:00:00+00:00" }, { "id": "01a0b0c5-082e-7027-9edf-b8a84720c2f3", "title": "Keeping vLLM's Prefix Cache Warm Between Agent Turns", "url": "https://doug.sh/posts/vllm-kv-cache-agents/", "published_at": "2026-09-15T00:00:00+00:00" }, { "id": "01a0cb0f-e408-70e2-ac10-2a8aadafa9b2", "title": null, "url": "https://doug.sh/posts/", "published_at": "2026-09-15T00:00:00+00:00" }, { "id": "01a0b0c5-082e-7027-9edf-b8a8475b54a5", "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/", "published_at": "2026-09-13T00:00:00+00:00" }, { "id": "01a0cb0f-e408-70e2-ac10-2a8aaf1041a4", "title": "Recent Projects", "url": "https://doug.sh/projects/", "published_at": "2026-08-23T00:00:00+00:00" }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ab163cb7b", "title": null, "url": "https://doug.sh/docs/erm/", "published_at": "2026-08-23T00:00:00+00:00" }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ab23d568f", "title": "Architecture overview - erm", "url": "https://doug.sh/docs/erm/architecture/", "published_at": "2026-08-23T00:00:00+00:00" }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ab2cf1027", "title": "Changelog - erm", "url": "https://doug.sh/docs/erm/changelog/", "published_at": "2026-08-23T00:00:00+00:00" }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ab31e592d", "title": "CLI reference - erm", "url": "https://doug.sh/docs/erm/cli-reference/", "published_at": "2026-08-23T00:00:00+00:00" }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ab3db0461", "title": "Concepts & glossary - erm", "url": "https://doug.sh/docs/erm/concepts/", "published_at": "2026-08-23T00:00:00+00:00" }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ab4390ba5", "title": "Denoise & room tone - erm", "url": "https://doug.sh/docs/erm/denoise-and-room-tone/", "published_at": "2026-08-23T00:00:00+00:00" }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ab43e4908", "title": "Detection - erm", "url": "https://doug.sh/docs/erm/detection/", "published_at": "2026-08-23T00:00:00+00:00" }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ab4e8c60b", "title": "FAQ - erm", "url": "https://doug.sh/docs/erm/faq/", "published_at": "2026-08-23T00:00:00+00:00" }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ab57e4d33", "title": "Installation - erm", "url": "https://doug.sh/docs/erm/installation/", "published_at": "2026-08-23T00:00:00+00:00" }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ab63503c0", "title": "Recipes - erm", "url": "https://doug.sh/docs/erm/recipes/", "published_at": "2026-08-23T00:00:00+00:00" }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ab6974208", "title": "Render pipeline - erm", "url": "https://doug.sh/docs/erm/render-pipeline/", "published_at": "2026-08-23T00:00:00+00:00" }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ab72710bb", "title": "Transcription - erm", "url": "https://doug.sh/docs/erm/transcription/", "published_at": "2026-08-23T00:00:00+00:00" }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ab75c2859", "title": "Troubleshooting - erm", "url": "https://doug.sh/docs/erm/troubleshooting/", "published_at": "2026-08-23T00:00:00+00:00" }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ab7b4aace", "title": "Tuning & workflow - erm", "url": "https://doug.sh/docs/erm/usage/", "published_at": "2026-08-23T00:00:00+00:00" }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ab88108a3", "title": "Video render & A/V sync", "url": "https://doug.sh/docs/erm/video-render/", "published_at": "2026-08-23T00:00:00+00:00" }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ab97dec1e", "title": "Working with video - erm", "url": "https://doug.sh/docs/erm/video/", "published_at": "2026-08-23T00:00:00+00:00" }, { "id": "01a0876f-33bd-73aa-9c5a-d7a0421353dc", "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/", "published_at": "2026-05-02T00:00:00+00:00" }, { "id": "01a0876f-33bd-73aa-9c5a-d7a042e04b7b", "title": "Give Your Coding Agent a Journal", "url": "https://doug.sh/posts/give-your-coding-agent-a-journal/", "published_at": "2026-04-23T00:00:00+00:00" }, { "id": "01a0876f-33bd-73aa-9c5a-d7a04308caed", "title": "Route53 as a Key Value Store, 2026 Edition", "url": "https://doug.sh/posts/route53-as-a-key-value-store-2026-edition/", "published_at": "2026-04-18T00:00:00+00:00" }, { "id": "01a0876f-33bd-73aa-9c5a-d7a0437a71ee", "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/", "published_at": "2021-12-13T00:00:00+00:00" }, { "id": "01a0876f-33bd-73aa-9c5a-d7a04454c15e", "title": "Using Composite Actions with GitHub Actions", "url": "https://doug.sh/posts/using-composite-actions-with-github-actions/", "published_at": "2021-09-11T00:00:00+00:00" }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ab9ccfc45", "title": null, "url": "https://doug.sh/docs/linuxcnc-grpc/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ab9fabece", "title": null, "url": "https://doug.sh/docs/linuxcnc-grpc/server-setup/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8aba3b35da", "title": null, "url": "https://doug.sh/docs/linuxcnc-grpc/getting-started/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8abb14e11e", "title": null, "url": "https://doug.sh/docs/linuxcnc-grpc/tutorial/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8abb94a57d", "title": null, "url": "https://doug.sh/docs/linuxcnc-grpc/server/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8abc78377d", "title": null, "url": "https://doug.sh/docs/linuxcnc-grpc/api-reference/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8abd628ef9", "title": null, "url": "https://doug.sh/docs/linuxcnc-grpc/examples/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8abe2343f0", "title": null, "url": "https://doug.sh/docs/linuxcnc-grpc/e2e-testing/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8abea5135f", "title": null, "url": "https://doug.sh/docs/linuxcnc-grpc/categories/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8abf07a548", "title": null, "url": "https://doug.sh/docs/linuxcnc-grpc/tags/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8abfd09d7f", "title": null, "url": "https://doug.sh/docs/m0601-rs/docs/samples/examples/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ac078bc25", "title": "Overview", "url": "https://doug.sh/docs/m0601-rs/docs/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ac109c073", "title": "Polling and the fail-safe", "url": "https://doug.sh/docs/m0601-rs/docs/concepts/polling-and-failsafe/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ac1d7f316", "title": null, "url": "https://doug.sh/docs/m0601-rs/docs/library/quickstart/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ac1f2b9d8", "title": "scan • m0601 — RS485 hub motor driver", "url": "https://doug.sh/docs/m0601-rs/docs/cli/scan/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ac277c736", "title": null, "url": "https://doug.sh/docs/m0601-rs/docs/library/drive-loops/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ac2eff4cb", "title": "info • m0601 — RS485 hub motor driver", "url": "https://doug.sh/docs/m0601-rs/docs/cli/info/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ac347ef9b", "title": null, "url": "https://doug.sh/docs/m0601-rs/docs/samples/quad/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ac40b6dfb", "title": "The bus", "url": "https://doug.sh/docs/m0601-rs/docs/concepts/the-bus/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ac4fa97a5", "title": null, "url": "https://doug.sh/docs/m0601-rs/docs/library/modes/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ac5179c36", "title": "monitor • m0601 — RS485 hub motor driver", "url": "https://doug.sh/docs/m0601-rs/docs/cli/monitor/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ac5a62490", "title": "Telemetry and echo", "url": "https://doug.sh/docs/m0601-rs/docs/concepts/telemetry-and-echo/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ac5b353b0", "title": "control • m0601 — RS485 hub motor driver", "url": "https://doug.sh/docs/m0601-rs/docs/cli/control/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ac5b64b59", "title": "Stopping safely", "url": "https://doug.sh/docs/m0601-rs/docs/concepts/stopping-safely/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ac60a7727", "title": null, "url": "https://doug.sh/docs/m0601-rs/docs/library/telemetry/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ac639d4c0", "title": "drive • m0601 — RS485 hub motor driver", "url": "https://doug.sh/docs/m0601-rs/docs/cli/drive/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ac68339a5", "title": "Latency • m0601 — RS485 hub motor driver", "url": "https://doug.sh/docs/m0601-rs/docs/concepts/latency/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ac752c575", "title": null, "url": "https://doug.sh/docs/m0601-rs/docs/library/odometry/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ac7985f22", "title": null, "url": "https://doug.sh/docs/m0601-rs/docs/library/multi-motor/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ac7e3ecdf", "title": "set-id • m0601 — RS485 hub motor driver", "url": "https://doug.sh/docs/m0601-rs/docs/cli/set-id/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ac81765c1", "title": "The driver boundary", "url": "https://doug.sh/docs/m0601-rs/docs/concepts/driver-boundary/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ac8cc66f8", "title": null, "url": "https://doug.sh/docs/m0601-rs/docs/library/budgeting/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ac8fd84cf", "title": "raw • m0601 — RS485 hub motor driver", "url": "https://doug.sh/docs/m0601-rs/docs/cli/raw/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ac98094ef", "title": null, "url": "https://doug.sh/docs/m0601-rs/docs/library/testing/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8aca6f3b59", "title": "Getting started", "url": "https://doug.sh/docs/m0601-rs/docs/getting-started/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8acb3b2cf5", "title": null, "url": "https://doug.sh/docs/m0601-rs/docs/tutorial/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8acb65fa87", "title": null, "url": "https://doug.sh/docs/m0601-rs/docs/safety/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8acc273ed2", "title": "CLI • m0601 — RS485 hub motor driver", "url": "https://doug.sh/docs/m0601-rs/docs/cli/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8acce85900", "title": null, "url": "https://doug.sh/docs/m0601-rs/docs/library/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8acd50b940", "title": null, "url": "https://doug.sh/docs/m0601-rs/docs/samples/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8acd6fa6a7", "title": "Setpoint shaping", "url": "https://doug.sh/docs/m0601-rs/docs/concepts/setpoint-shaping/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ace010556", "title": "Concepts • m0601 — RS485 hub motor driver", "url": "https://doug.sh/docs/m0601-rs/docs/concepts/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8acec08673", "title": null, "url": "https://doug.sh/docs/m0601-rs/docs/protocol/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8acf6c8507", "title": "FAQ & gotchas", "url": "https://doug.sh/docs/m0601-rs/docs/faq/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ad059c1e6", "title": null, "url": "https://doug.sh/docs/m0601-rs/docs/troubleshooting/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ad107890a", "title": "Internals • m0601 — RS485 hub motor driver", "url": "https://doug.sh/docs/m0601-rs/docs/internals/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ad177b106", "title": "Categories • m0601 — RS485 hub motor driver", "url": "https://doug.sh/docs/m0601-rs/categories/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ad242fac1", "title": "m0601", "url": "https://doug.sh/docs/m0601-rs/", "published_at": null }, { "id": "01a0cb0f-e408-70e2-ac10-2a8ad2cdce3d", "title": null, "url": "https://doug.sh/docs/m0601-rs/tags/", "published_at": null } ] posts Claim your blog
Back to doug.sh
Blog · corpus.blog/blogs/doug.sh/posts

doug.sh

doug.sh

2026

2021

Undated