Portfolio

Things I've designed, built and run, from web apps on a home server to custom circuit boards. Everything here is live or documented on this site. Resume →

Software

Qwordy home page
Qwordy

Five one-minute daily games: build words, learn vocabulary, pick the precise word, estimate, and guess which came first. Server-side timing and scoring, streaks, rankings, and an archive of past days.

Flask SQLite gunicorn

WikEq equation list
WikEq

50 engineering equations across dynamics, fluids and electricity. Solve for any variable, plug in numbers, and copy the Python.

Flask SymPy KaTeX

Wiring Tool editor
Wiring Tool

Lay out components, wire pins into named nets, auto-route, and export a netlist, CSV, SVG or PDF.

Flask JavaScript YAML

Daily Melody piano
Daily Melody

Learn one simple melody on the piano each day, a phrase at a time on glowing keys. Free play with a circle of fifths.

Web Audio JavaScript Flask

Marble Tilt start screen
Marble Tilt

Tilt the maze to roll a marble through five rounds of escalating mazes, and race your own ghost.

JavaScript Canvas

Wiki-Doc, self-hosted

This whole site runs on a Raspberry Pi at home: Cloudflare tunnel, Caddy routing by hostname, Flask apps under gunicorn and systemd, InfluxDB in Docker. Plus two Python libraries on PyPI: DocNet and Fleet-SSH.

Linux Caddy Cloudflare Docker

Hardware

Time Tilt PCB
Time Tilt

A smart ESP-based tilt clock on a custom PCB, with battery sensing, LED matrix and speaker.

PCB ESP MicroPython

Touch Tone 2.0 PCB
Touch Tone 2.0

A chainable capacitive-touch I2C piano board built on the MPR121, with WS2812 LEDs.

PCB I2C MPR121

Color wheel clock
Clock Maker

A dozen clocks from 3D prints, canvas, LED matrices, pixel strips, e-ink and OLEDs.

Microcontrollers LEDs 3D printing

E-ink display
E-Ink Display

A battery-powered ESP32-C6 e-ink display for network scanning and weather, tuned for weeks of battery life.

ESP32-C6 E-ink

Joystick mouse
Joystick Mouse

A beginner CircuitPython project: build your own USB mouse, with a printable enclosure.

RP2040 CircuitPython 3D printing

DIY Stereo Vision

Depth measurement from two cameras on a Raspberry Pi 5, working toward a 3D map of a room. In progress.

Raspberry Pi 5 Computer vision