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.
Richard's Blog
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.
Emergency stop: a latch that never releases itself
Why IGNIS-8's emergency stop is a latched, multi-source system that never resets itself: two independent latches, battery and operator triggers, a manual-only release, and a stop that is selective — the drives release while the camera gimbal and sensors stay live.