devmaker.net is a hands-on blog from a real homelab: honest guides and lessons learned on self-hosting & Linux, smart home, electronics & 3D printing, plus AI and MCP development. Tested, documented, pitfalls and all.
Seven Fallacies in Klipper Troubleshooting
Seven fallacies from real Klipper troubleshooting: a plausible CAN hypothesis that was wrong, a config without effect, a measured number I didn't believe – and the rule that helped in every case: look for the number that could …
OrcaSlicer & Klipper: 34 % Less Print Time
34 % print time saved, measured rather than estimated: Z-hop as the most expensive item, layer height and flow as the biggest …
Klipper skew_correction: Measuring and Correcting XY Skew
Measure and correct XY skew with Klipper skew_correction: why only the diagonals reveal a skewed printer, how a 68 mm test frame …
Klipper CoreXY: Two Y Endstops Fighting During Homing
Layer shift on the B diagonal, grinding during homing: two endstops on one belt twisted the X gantry on every homing. How …
Prefer step by step? Start a learning path.
AI Agents Guide: MCP, Claude Code and Local LLMs
The curated learning path: from the MCP concept through Claude Code to a local LLM
Home Assistant Guide: From First Install to Your Own Automation
The curated learning path: installation, basics, your own sensors and automations
Homelab Self-Hosting Guide
From a Debian server to a production setup – the curated learning path
~/ latest posts
Print-in-Place: Layer Height Decides Whether Joints Move
In print-in-place models, the position of the slice planes decides whether joints stay movable. Why finer layers make the problem worse instead of solving …
Klipper Bed Mesh: A Missing Zero Reference Costs 0.14 mm
A bed mesh without zero_reference_position doesn't act as a shape correction but as a constant 0.14 mm offset. How I found the bug, why …
Klipper Update 2026: Correctly configure BTT Eddy after the deprecation of z_offset
With the Klipper update 2026, z_offset in the probe_eddy_current block was marked as deprecated and replaced by descend_z. This article shows step-by-step how you …
No space left on device: Docker logs killed Postgres
A full `/var` from never-rotated Docker json logs drove a shared Postgres container into a crash loop – result: HTTP 500 on all sites …
Claude Code over SSH: Keep Sessions Alive with tmux & mosh
Run Claude Code over SSH without losing sessions: tmux decouples the process from the connection, mosh survives network switches and hiccups. For real crashes …
Control FreeCAD with AI: Robust MCP Bridge + Claude
How I hooked the FreeCAD Robust MCP Bridge Server up to Claude Code on Linux – and had the AI model parametric parts, a …
Dragon Burner X-Carriage for the HevORT: A FreeCAD Build
A custom X-carriage for the HevORT that holds the Dragon Burner: stable and universal rather than tuned for low weight, with an integrated adapter …
Klipper Status LEDs on the Toolhead (Neopixel + led_effect)
Printer status at a glance: three Neopixels on the toolhead show homing, heating, printing and standby using the Klipper led_effect plugin. Setup via the …