
Freeclimbs2024 -
Free and open source route book for home climbing and spray walls, including automatic hold detection and segmentation, shareable private walls, and admin tools.
I'm trying out Pocketbase for the backend of this one; the current frontend is Svelte 4 with a 5 port in progress.
The computer vision is a tune of YoloV8 (I labelled a lot of holds...) and in-browser SegmentAnything.
Source is available here.

GroupMe Archive ViewerAugust 2024
To preserve and search old group chats - an area where GroupMe's own interface is somewhat lacking - I put together this simple tool which displays exported chat archives.
A one day build, using Go and Svelte of course.
Volumetric Christmas TreeWinter 2023
If you light your tree with 1,000 addressable WS2812 LEDs and map their positions, you can display rudimentary holograms! Here's a longer video of some "fireworks" on Google Photos.
Driving the LEDs at a reasonable refresh rate turned out to be nontrivial - big thank you to Jeremy Bentham/Lean2 for this ingenious code for the Raspberry Pi's SMI (Secondary Memory Interface) with which I was able to run 10 channels in parallel with the tight timings required.
(No source for this one, sorry - it was very hacked together at the last minute and the code is spread all over the place.)

Wireless Shifter2023
Bicycle shifter and remote built around two NRF52840 microcontrollers. This programmable shifter supports nearly any combination of derailleur and cassette and is in daily use on my road bike. Click for Onshape CAD soup.

Christmas CardWinter 2022
A pen-plotter-based Christmas card to send out to friends and family. Click through for a page about creating the art on the card.

PantryTempJanuary 2021
My parents were worried about their pantry freezing in winter if they closed the door. Putting together a Raspberry Pi with a temperature sensor and custom web widget to reassure them otherwise was of course the only reasonable course of action.
Golang and Svelte.

Earthwalker (contributor)2020
A GeoGuessr clone built by Linus Heck around some brilliant manipulation of Google StreetView packets. I overhauled the Go backend for better read- and maintain-ability and contributed a new Svelte frontend, along with some additional game features like Nominatim-derived GeoJSON map constraints.

Which? Spring 2020
A simple polling web app with support for approval and ranked-choice voting in additional to regular old fashioned plurality. Includes OAuth 2 support with from-scratch sessions. At one point it was deployed on AWS EC2 and RDS but Amazon's rates are a bit steep. Made with Postgres, Golang, and Svelte.
Svelte-DragDropList May 2020
I needed a sortable list component for Which? and wasn't satisfied with anything available from the community in terms of ease of integration, stability, and accessibility. This Svelte 3 component was my effort to meet those requirements.
Spotted in the wild at CalMatters!

Barrage Spring 2018
Minimal Electron audio player with a real time waveform visualization acting as the seek bar/scrubber.
Inverse Squares2015
The result of some discussion in my high school physics class about an inverse square law (gravity?) was several of us trying to get a JavaScript widget like this to run smoothly. Hopefully we were done with our homework.

Python Python2015
Snake, made with Python for the terminal.