Blog

All posts in reverse chronological order

last modified: October 19, 2025

How to Write Custom Snowflake Patterns

Posted on 2019-12-07— Projects

I’ll walk you through creating custom patterns for your snowflake decoration, covering double-buffering, frame-sync, non-linear PWM, fixed-point math and the scene interface in C++. If you can solder and use an SWD programmer, read on for practical examples and a ready-to-edit User scene template.

Read this post

Programming the Snowflake Decoration

Posted on 2019-11-30— Projects

I walk you through flashing custom firmware to your Pimoroni snowflake decoration using an SWD J-Link and Atmel Studio. I cover hardware, wiring, software setup, and step-by-step build and flash instructions so you can safely program your boards. Read the full guide for tips and troubleshooting.

Read this post

Candlelight Effect

Posted on 2019-11-25— Projects

I built a compact Neopixel-based candlelight decoration with a DS3231 RTC and share the schematic, firmware, and build tips here. It's best placed behind a screen or in a jar. Read the full post for parts, assembly photos, and configuration notes to recreate it yourself.

Read this post

How to Wire the Snowflake Decoration

Posted on 2019-11-23— Projects

I walk through creating custom wiring for the snowflake decoration, covering layouts, cable choices, current and voltage-drop math, and a simple power supply board for Pimoroni kits. If you want practical tips and diagrams to wire your own design, please read the full guide.

Read this post

Snowflake Configuration

Posted on 2019-11-22— Projects

I walk you through the Snowflake v1.2 firmware's button-based configuration: short vs long presses, auto and single modes, LED indicators, and pattern durations. I explain the six-second timeout and that settings aren't saved after power loss—please read the full post for step-by-step usage and tips.

Read this post

Snowflake Project Videos

Posted on 2019-11-15— Projects

I've been making videos of my LED snowflake decorations, but they still fall short of the live sparkle and diffraction I see. I explain the problems—blinding LED peaks and weak diffraction spikes—and invite you to read the post to watch the clips and see my plan to add digital effects.

Read this post

Snowflake Decoration Available on the Pimoroni Store

Posted on 2019-11-13— Common

I'm happy to share you can now buy an assembled Snowflake Decoration from Pimoroni with worldwide shipping. The panels arrive pre-soldered, use 5V power and flat cables so no soldering is needed. If you'd like details on the updates and compatibility, please read the full post.

Read this post

HAL LCD Demo

Posted on 2019-08-18— Common, Projects

I added a stable Hitachi LCD driver to the HAL layer, using an MCP23008 backend to cut wiring and simplify hardware. This post walks through parts, firmware repositories, and how to run the demo via serial shell. Read the full article for setup steps, code links, and usage tips.

Read this post

Event-Based Firmware Example

Posted on 2019-08-05— C++, Improve your Code, Learn

I provide a complete event-loop firmware example for SAM‑D boards (Arduino Zero, Feather M0). I explain module design—Buttons, Display, and a support library—initialisation and polling logic, and link the source and demo. If you're curious, read the full post for code and implementation notes.

Read this post

Consistent Error Handling

Posted on 2019-08-01— C++, Improve your Code, Learn

I walk through practical techniques I use to make firmware error handling clearer and more consistent in modern C++. From enum classes and a shared SimpleStatus to StatusResult templates and helpers like isSuccessful, I present readable patterns and code examples you can adopt. Read the full post for details and examples.

Read this post

Use Enum with More Class!

Posted on 2019-07-29— C++, Improve your Code, Learn

I explain C++11 enum class: why it prevents name conflicts, how it compares to traditional enums and common workarounds, with practical Arduino-friendly examples. If you want clearer, safer enum usage in your interfaces, read the full post for code samples and simple best-practice guidance.

Read this post

C++ Templates for Embedded Code (Part 2)

Posted on 2019-07-27— C++, Improve your Code, Learn

I continue exploring C++ templates for embedded systems, showing template classes, pin abstraction, and combining Sender and Pin examples to reduce firmware size and improve code clarity. I explain static methods, type aliases, and trade-offs between runtime flexibility and efficiency. Read the full post to see code and assembly comparisons.

Read this post

Bit Manipulation using Templates

Posted on 2019-07-23— C++, Improve your Code, Learn

I explore replacing unsafe bit macros with lightweight C++ templates to make embedded bit operations safer and clearer. I show templates for one-bit extraction, set/clear helpers, and compiled firmware size for Arduino Uno. Read the full post to see examples, exercises, and practical benefits.

Read this post

C++ Templates for Embedded Code

Posted on 2019-07-20— C++, Improve your Code, Learn

I walk through C++ templates for embedded projects, showing how function templates work, why they’re type-safe, and how they can keep firmware small and fast. Using Arduino examples like circularShift, reverseBits and a template-based Sender, I invite you to read the full post to learn practical tips and patterns.

Read this post

Auto and Structured Binding

Posted on 2019-07-16— C++, Improve your Code, Learn

I introduce C++17 structured binding with approachable examples: returning multiple values via std::tuple, binding to structs and arrays, and using references to avoid copies. If you use a C++17-capable compiler and want cleaner, clearer code, read the full article for practical examples and tips.

Read this post

Guide to Modular Firmware

Posted on 2019-07-14— C++, Improve your Code, Learn

I wrote a concise guide for embedded developers to refactor Arduino/C++ firmware into clean, modular components. I walk you through creating Display, Buttons, and Animation modules, testing and committing small changes, and improving maintainability. If you'd like practical steps and examples, please read the full article.

Read this post

It's Time to Use #pragma once

Posted on 2019-07-13— C++, Improve your Code, Learn

I explain why I prefer #pragma once over macro header guards and how it prevents subtle build errors and wasted debugging time. I’ll show examples, common pitfalls, and practical steps to replace guards in existing projects — read on if you want a simple, low-risk improvement.

Read this post

Write Less Code using the "auto" Keyword

Posted on 2019-07-12— C++, Improve your Code, Learn

I walk through practical ways I use C++11's auto keyword to reduce repetitive declarations, simplify range-based for loops, lambdas and register access, and make Arduino and embedded code easier to refactor. Read the full post for examples and tips you can apply to your projects.

Read this post

Units of Measurements for Safe C++ Variables

Posted on 2019-07-11— C++, Improve your Code, Learn

I show how I avoid unit mistakes in C++ by creating a templated Duration type and user-defined literals like 100_ms. I explain declaring Seconds/Milliseconds/Nanoseconds, adding conversions, and how the compiler catches unit mismatches with no runtime cost. Read the full article for code examples and the GitHub repo.

Read this post