published: October 24, 2016 —
last modified: October 23, 2025
Recently I had the problem some expensive components did overheat in my server rack. The ventilation was not optimal and I had to install additional fans. Because this rack is in my office and I like a quiet working place, the ventilation had to be as quiet as possible.
First I thought about buying a off-the-shelf product, but then I realised: If this controller does not work as I expect and the fans will spin too fast/loud, this will drive me crazy over time. So I decided to build a own fan controller. A very simple one, where I can write own code and tweak it until it runs as I like.
On the project page I describe how to build this particular controller. It is not meant you really reproduce this same controller exactly as shown, but maybe understand some basic principles to build your own controller.
I've been developing software for over 20 years and share how my language preferences shifted—from assembler and C to Python, Swift, C++, Go and Rust. I outline use-cases and trade-offs in a personal, practical way; if you're deciding what to learn, please read the full post for detailed guidance.
I designed a simple three-part 3D printed enclosure for the Adafruit PowerBoost 1000C and up to a 1200mAh LiPo. In this post I share the print files, component list, and step-by-step assembly tips to convert the board into a safe portable power pack — please read on if you'd like to build one.
I demonstrate SMD soldering in a short practice video, working through 1206 and 0805 packages and wrestling with tiny 0603 parts. If you’re curious about surface-mount techniques or improving your hand-soldering, watch the full video — I share what I learned and a few practical tips.
I rebuilt the Meggy Jr RGB library from scratch to make game development simpler on the ATmega328P. I focused on low memory use, frame‑synchronized loops with a back buffer, clear color handling, fast pixel operations, reliable button input and a background sound player. Read the post for examples and the GitHub release.
Posted on 2019-07-10— C++, Improve your Code, Learn
I walk you through how real-time counters work, why integer overflow is usually harmless when you treat time as relative, and practical, Arduino-ready comparisons and code examples to avoid timing mistakes. If you want concrete patterns and simple tests, read the full post.
I present a symmetric logic-gate circuit that implements a well-known function. Try to identify the function; hints are provided if you get stuck. If you enjoy this kind of puzzle, read the full post for images, tips, and the solution - I'd love your feedback and suggestions for more puzzles.