Migrating duk.io from Ghost to Hugo

I decided to migrate this blog from Ghost to Hugo. If you’re reading this, then the migration was a success.
Ghost | Hugo | Scripting

Dynamic SVG playing card generation on SolitaireCat.com

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.
Typescript | Svg | Code

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.
Typescript | Solidjs | Supabase | Svg | Code

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.
Aws | Shopify | Code

How to sleep an ATMega328p on less than 1µA with timer wakeup

How to configure an ATMega328p to consume lest than 1uA, while still retaining the ability to wake the processor up periodically via timer (or external interrupt).
Electronics | Microcontrollers | Low Power

BT audio player: Conclusion, problems and screwups

Discussion of the design and implementations problems encountered during the design/construction of my in-wall Bluetooth audio player, with environmental sensors, proximity wake-up, metadata display, and cat animations.
Bluetooth Audio Player
Electronics | Microcontrollers | Bluetooth

BT audio player: Installation and external power

Installation, power, and speaker connections for the custom made in-wall Bluetooth audio player. The wall plate connects to the speaker connections and power control electronics via a single RJ45 cable.
Bluetooth Audio Player
Electronics | Bluetooth | Enclosures

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
Electronics | Microcontrollers | Firmware | Bluetooth | Code

BT audio player: Mechanical Design

Mechanical design for the in-wall Bluetooth audio player project. The most difficult aspects of the design are mechanical. Fitting the module into a standard electrical junction box without visible fasteners, while allowing for it to be easily removed and look good is quite a challenge.
Bluetooth Audio Player
Electronics | Woodwork | Enclosures

BT audio player: Circuit and PCB

Circuit and PCB design for the Bluetooth audio player project. The circuit design is not complicated. The main sections are MCU with 8MHz crystal and supporting caps, ...
Bluetooth Audio Player
Electronics | Microcontrollers | Pcbs | Bluetooth

BT audio player: System Design

My latest project is a cat-themed Bluetooth audio player to be permanently installed in my bathroom. The unit will be housed in a standard electrical junction box on the bathroom wall..
Bluetooth Audio Player
Electronics | Microcontrollers | Bluetooth

STM32 Microcontroller Cheat Sheet

STM32 microcontroller cheat sheet by product line, feature, model number. Includes product code descriptions and timer/peripheral information.
Electronics | Microcontrollers
Page 1 of 6