Latest articles about Code
Using C++ with the NXP Zigbee SDK

The NXP Zigbee SDK is not well setup for use with C++. Although I prefer it over the Texas Instruments ZStack for various reasons, ease of C++ development is not one of them. I had no trouble converting ZStack sample programs to C++. I had all sorts of issues with the NXP SDK.
Generals
Getting started with the NXP Zigbee SDK

My attempt to develop custom firmware for the Aqara E1 Zigbee wall switch (link coming soon) necessitated learning NXP’s Zigbee SDK for the JN5189.
Generals
How to insert a Git commit hash into your build on Eclipse CDT

Knowing the specific code that was used to build a particular binary is very useful when it comes to debugging unexpected behavior. Although version numbers can help for significant releases, they’re less useful when iterating quickly.
Generals
How to build NXP JN5189 Zigbee apps in MCUXpresso on Linux in 2024

NXPs MCUXpresso is not configured by default to build JN5189 SDK Zigbee apps on Linux, but with some minor tweaks, it is possible to build both the samples and your own applications.
Generals
A full deck of dynamically generated SVG playing cards in 47 KB

A full deck of dynamically generated SVG cards in 47 KB. SVG cards are beautiful on hi-DPI devices, but tend to be as large, or larger than raster versions. This doesn’t need be the case.
SolitaireCat.com
SolitaireCat.com game design

SolitaireCat.com is a cat-themed Solitaire playing website and Solitaire history blog, because, why not?
I developed the site as a project to improve my Typescript skills and get some exposure to SolidJS and Supabase.
SolitaireCat.com
Design of the embee.hk pollution monitoring site

Embee is a manufacturer and retailer of IQAir-compatible air filters based in Hong Kong.
In addition to their main ecommerce sales site, I built a website that reports live air quality across Hong Kong at embee.hk/a/air-quality.
embee.hk/a/air-quality
BT audio player: Firmware

Firmware design for the Bluetooth audio player project. The basic architecture uses events to trigger external interrupts. Handlers post the event details into a queue and a simple control loop polls the queue and dispatches events to various handlers.
Bluetooth Audio Player
Building a toaster reflow oven - Part 4 (Controller software)
This is part 4 of a 4-part series on building a toaster reflow oven:
Oven hardware Controller hardware Manufacturing Controller software Continuing on from the prior posts on the controller hardware and manufacturing, the device needs software.
Toaster Reflow Oven
Building the time lapse video

Before embarking on this construction project, I setup a camera to take a single photo every 10 minutes during the entire process. Time lapse camera setup in the second floor bathroom
How to build a pool
Building an automated water level maintainer for my green wall to prevent another fish apocalypse

Building an automatic water manager for a vertical garden wall.
Water-level Maintainer