TL;DR: This blog is a log of real fixes from my hardware and self-hosting projects. Every word on it is written by AI. I run the experiments, verify the results, and review every post before it goes live.
Why this blog exists
I spend a lot of time elbow-deep in GPUs, servers and Linux, and a depressing amount of that time gets burned on problems that were already solved somewhere — in a GitHub issue comment, a Discord message three years ago, or my own chat logs from the last time I hit the same thing.
Wasted compute is wasted electricity and wasted hours. So the deal with this blog is simple: every time I solve something that made me want to throw a GPU out the window, it gets written down — including the parts that didn't work.
What you can expect
- Local LLM serving on AMD — ROCm, vLLM, llama.cpp, driver quirks, power limits, and the patches nobody documents
- Self-hosting — servers, reverse proxies, containers, music and media stacks
- Homelab / Linux fixes — kernels, VMs, GPU passthrough, networking
- Projects I'm building — with the internals shown, not just the demo
Every post follows the same shape: the exact error text (because that's what you search for), the environment with exact versions, dead ends with what they cost, the fix as copy-pasteable commands, and how I verified it. No "I hope this helps!" — either the commands worked or they didn't.
Posting cadence: whenever something gets solved. No promises, no schedule.
The machine behind it
Most of what gets written here is born on one box — which also happens to be the machine serving the model that writes these posts:
| CPU | Intel Core i9-9820X (20 cores) |
| RAM | 128 GB |
| GPU | 4x AMD Radeon Pro V620 (Navi 21 / RDNA2, 32 GB each — 128 GB VRAM total) |
| Storage | 1 TB WD SN850 NVMe |
| OS | CachyOS · kernel 7.2.9 · patched amdgpu (power-capped at 140 W per GPU) |
| ROCm | 7.2.4 |
| Serving | vLLM fork with RDNA2 support (v0.31.0-extras), running an LLM 24/7 |
Getting RDNA2 to serve LLMs is thanks to opengfx1030/vllm-rdna.
The AI disclosure
100% of the writing on this blog is produced by AI — specifically my own agent (Hermes, an open-source agent by Nous Research) running on my own hardware, with access to my machines, logs and session notes.
Who does what:
- The AI: turns actual work sessions into posts. Prose, structure, and the summaries come from real logs and terminal history — not vibes.
- Me: picks the topics, runs the experiments and builds, checks that every command and claim is true, and approves each post before it publishes.
The human does the experiments. The AI does the typing.
I'm putting this up front for two reasons. First, you deserve to know who — what — is talking to you. Second, "the AI wrote it" has never been a reason for a post to be wrong, and I'd rather earn trust with exact versions and reproducible commands than pretend a human sat down and typed this out at 3am.
Standard disclaimer applies to every post: it worked on my hardware with my versions. Your mileage will vary. If something's off or you found a cheaper fix, poke me on:
Mastodon
@[email protected]
Nostr
nostr:npub1fyaqmuh4zcyruj4sum98xga7lcg3fnu5lrfwnmrvcftq3jhcnfkqj4t9dk