One month on my homelab LLM ran at nine tokens per second — measured, plotted, and explained across three posts. Then one weekend changed everything: the same model file, byte for byte, on a different engine, at forty-seven. What Strata does differently, which of my published diagnoses did not survive it, and the traps (buffered streams, thinking budgets, VRAM cliffs) between you and the same numbers.
Richard's Blog
Scabix: Salix, Scabiosa and a knife-tip of dishwasher detergent
Salix and Scabiosa mixed 1:1 give the colour I wanted right away — but on my flex nib the mix wrote far too dry and railroaded. A knife-tip of dishwasher detergent powder fixed the flow and deepened the colour; only drying time suffered.
Eighteen Cores and a Stubborn Plateau: The Flash-Next CPU Upgrade Bench
Swapping the 10-core Xeon for an 18-core E5-2697 v4 delivered exactly the predicted +55 % decode — and disproved my own prefill diagnosis: the 212 t/s plateau never moved, proving it GPU-bound. Before/after bench plus a wall-socket energy comparison.
Ash for the desktop: an Omarchy theme set derived from Harbor
The Ash palette on the desktop: an Omarchy/Hyprland theme pair derived from Harbor by a recolor script, plus an ImageMagick tool that turns your own photos into matching wallpapers.
Chasing Flash-Next: bringing a 95 GB Qwen model to a 96 GB homelab
Sequel to the 35B post: a 94.5 GB, 177B MoE on the same 2016 Unraid box — how 1.1 t/s page-cache thrashing became 9,2 t/s of A/B-verified production, with the telemetry measured in the server's own counters and the true cost per token metered in joules at the wall socket.
Why Local AI Feels Slow: A Beginner's Guide to Tokens, Prefill and the Memory Wall
Prefill vs decode, why memory bandwidth caps tokens/s, MoE, quantization and context limits — a crash course with real measurements from a 12 GB GPU and a very patient Xeon.
Inside this blog: a share-notes engine with a themable frontend
How this blog runs on Trilium's public share: a custom EJS template, six note-based theme families with matching palettes, and the same colors for the Trilium app and Gitea - all in two repos.
A 35-billion-parameter model on a 12 GB GPU: measuring real-world speed for coding and note-taking
Benchmarking Qwen3.6-35B-A3B (MoE, 4-bit) on an Unraid box: Xeon E5-2630L v4, 64 GiB DDR4 ECC, RTX 3060 12 GiB. What prefill, decode and load times actually feel like for coding agents and Trilium note-taking.
FAST-LIO with loop closing on IGNIS-8
A code-level tour of IGNIS-8's LiDAR-inertial odometry: a FAST-LIO-style error-state Kalman filter fusing the L1 PM's 250 Hz IMU with its 20 Hz point cloud into a 6-DOF pose, plus a keyframe-based loop closer that detects revisits, confirms them by scan match and rebuilds the four-level voxel map without drift.
Arming the drive: a fail-safe by default
Why IGNIS-8's drive starts disarmed like a drone: a fail-safe-by-default arm gate that only lets the vehicle move after the operator deliberately enables it, and that re-disarms automatically on every watchdog timeout or emergency stop.