How and Why

last modified: October 23, 2025

How to Create a Large 3D Printed Artwork

Posted on 2021-12-30— 3D Printing, Build, How and Why, Learn, Projects

I built a 100×80cm 3D‑printed artwork and walk through the technical steps I used: preparing mathematical height data, generating Z‑maps, slicing into printable tiles with Blender and PrusaSlicer, and assembling and painting the final piece. If you're curious about the scripts and workflow, read the full tutorial.

Read this post

How to Automate the Turn-On Time of a Deco Light

Posted on 2018-12-21— How and Why, Learn

I wanted my winter decoration to switch on at dusk without constant adjustments, so I built a simple low-voltage controller using a P-channel MOSFET, a microcontroller and an ambient light sensor. I walk through my design choices, sealing for outdoor use and programming tips—read on if you'd like to build one too.

Read this post

How to Deal with Badly Written Code

Posted on 2018-08-31— C++, How and Why, Improve your Code

I often encounter poorly written C++ libraries, especially around hardware. In this post I outline four practical strategies—rewrite, refactor, wrap the library, or wrap the interface—to regain control, improve reliability, and reduce pain. Read on for pragmatic steps and examples you can apply to your projects.

Read this post

How to Design a Cheap Plant Watering Sensor (Part 5)

Posted on 2017-03-09— How and Why

I walk you through designing the final PCB for a low-cost plant watering sensor: choosing tools, shaping the board, iterative layouts, BOM decisions, assembly planning and unit-cost calculations. If you want practical steps and cost details, please read the full post to follow the next parts.

Read this post

How to Design a Cheap Plant Watering Sensor (Part 4)

Posted on 2017-03-04— How and Why

I guide you through writing a near-final firmware for my cheap plant watering sensor, describing module structure, incremental development, and practical tests. I cover ADC sampling, oscillator checks, EEPROM settings and a prototype fix for the push-button. If you’re building a similar device, I invite you to read the full post.

Read this post

How to Design a Cheap Plant Watering Sensor (Part 3)

Posted on 2017-03-03— How and Why

In part three I assemble and test the prototype PCB, set ATtiny13A fuses, and refine user interaction and firmware plans. I cover LED display choices, power measurements and a modular firmware approach. If you’re building a low-cost plant sensor, read the full post for practical steps and diagrams.

Read this post

How to Design a Cheap Plant Watering Sensor (Part 2)

Posted on 2017-02-14— How and Why

I take you through part two of my cheap plant-watering sensor project, testing a prototype: power draw, LED impact, oscillator and MCU startup timing, voltage-divider checks, firmware inputs, and PCB preparation. If you want to see the detailed measurements and next steps, I invite you to read the full post.

Read this post

How to Design a Cheap Plant Watering Sensor (Part 1)

Posted on 2017-02-08— How and Why

I walked through designing a cheap capacitive plant watering sensor, from goals and measurement options to component selection and early prototypes. I explain why I chose a CR2032‑powered op‑amp oscillator, ATtiny MCU and low‑power timer. If you’re curious, read the full post for details and test results.

Read this post

How to use the Scripts in the Cat Protector Project

Posted on 2015-11-24— How and Why, Projects

I explain how to use the Cat Protector project's scripts to prepare an SD card with audio samples. I walk you through installing SOX and Perl, converting WAVs with ConvertAudio.pl, building a disk image, and safely writing it with dd on Linux or macOS. Read the full guide for commands and tips.

Read this post

How to Debug Time Critical Code using an Oscilloscope

Posted on 2014-11-13— How and Why

I often use a simple oscilloscope trick to debug time-critical code: toggle an I/O line before and after critical sections and observe interrupt timing and execution width. It’s low-effort and revealing — read on for practical steps, examples, and tips to measure and reason about your timing issues.

Read this post

How and Why to use Namespaces

Posted on 2014-10-31— C++, How and Why

I explain how C++ namespaces prevent name conflicts and why they matter, especially in Arduino projects. I walk through practical patterns—prefixing, selective using-declarations, and importing a namespace—with class and global examples. Read the full post for simple, pragmatic examples to keep your code clearer and conflict-free.

Read this post