Blog
12 posts, newest first.
- 8 min
Homelab telemetry: Proxmox, InfluxDB, Telegraf and two GPU vendors on one dashboard
How I built the monitoring stack for the Proxmox rack, and the three weeks it spent silently broken because Telegraf fetched its own config from the database it was supposed to feed.
- 9 min
Tricking Apple Silicon into native CUDA via homelab Proxmox
How I built a transparent compiler proxy and runner stub architecture to compile and debug CUDA kernels on a remote Pascal GPU directly from macOS.
- 6 min
SSH and RDP into the homelab: a phone as my only dev machine
I stopped syncing state across a laptop and a desktop and just moved the whole dev environment onto the H12D-8D. SSH for terminal work, RDP for anything that needs a screen, reachable from a phone.
Concurrency benchmarks across Qwen 3 8B and Gemma 4: 189 tok/s over PCIe 4.0
The ultimate validation of my heterogeneous Instinct MI50 + Radeon RX 6900 XT cluster. I put Qwen 3 8B, Qwen 2.5 7B, and Gemma 4 through a 16-client concurrency sweep, clocking 189 tok/s with just +2.8ms of latency drift.

The 64KB LDS trap and MoE stragglers: low-level ROCm kernel surgery
Once my heterogeneous MI50 + RX 6900 XT cluster was running, Google Gemma 4 crashed with an out-of-resources LDS fault. Here is how I diagnosed a 1,024-byte Triton attention overflow, patched the kernel, and mathematically analyzed why MoE models stall on asymmetric GPUs.

- 14 min
Breaking artificial segmentation: heterogeneous AMD Tensor Parallelism on MI50 + RX 6900 XT
MI50 prices spiked, so instead of buying a second datacenter card, I augmented my compute by pairing my existing MI50 with a consumer Radeon RX 6900 XT. Here is how I bypassed AMD's RCCL barriers and Blackwell SM100 traps to run vLLM TP=2 over PCIe 4.0.

- 12 min
Deploying vLLM on AMD Instinct MI50: 422 tok/s on retired enterprise silicon
MI50 prices started spiking on the secondary market, but before buying more hardware, I wanted to see how far a single 32GB HBM2 card could go with continuous batching. Here is how I ported vLLM to GCN 5.1 in an unprivileged Proxmox container.

- 7 min
Outgrowing the ProArt: moving the homelab to a Huananzhi H12D-8D
The X670E ProArt topped out at two GPU slots. Here's why I moved to a budget Huananzhi H12D-8D and an EPYC 7F52, and the four PCIe slots it opened up.

- 12 min
Building this site with Claude: design mockups to production architecture
I used Claude to design the LCARS aesthetic, then engineered a zero-dependency Vite pipeline, custom Markdown AST parser, and static prerendering engine. Here is what the systems architecture looks like and why each decision got made.
- 12 min
From bare-metal to cloud shuffles: what hypervisors hide in distributed data
Why 2 vCPUs don't scale like 2 cores, how the Order Inversion pattern saves Reducers from silent OOMs, and what happened when I deployed a bare-metal Hadoop cluster from raw XMLs.

- 9 min
Qwen3.5 on MI50: tracking a segfault to a broken rocBLAS kernel
Qwen3.5-35B-A3B crashed on every GPU load. Qwen-VL-30B-A3B ran fine at 75 t/s on the same card. The difference was a buggy pre-compiled kernel in rocBLAS: building it from scratch fixed it.

- 11 min
One node, three GPUs, ten guests: building the home Proxmox rack
A Ryzen 7700, an MI50, a 1080 Ti, and a Raphael iGPU walk into a hypervisor. The hardware was straightforward: deciding which GPU received which virtualization path was where the engineering began.
