now playing

Projects

A record of the random stuff I get up to in my spare time.

My focus for the last few months has been developing apps and tools for the Light Phone III, a dumbphone with a bare minimum set of apps. It’s a bit too minimal for me, so I’m modding it and sideloading my own custom-made tools.

The company behind the Light Phone has announced the release of a community developer program in which they’ll allow open-source contributions to their approved app list, and in their announcement they have specifically shouted out my existing work. My work is mentioned in a Wired article about the program as well!


filter / /

2026

- Wrote a Last.fm scrobbler for the Light Phone III so I can track my listening history. This was tricky as the LPIII only broadcasts playback state and not track metadata, so I had to do a lot of poking around under the hood to find how to access it. I learned a lot about the underlying architecture of the device software in the process though. (Also - added a listening history widget to my site, in the sidebar!)

- Redesigned this site again, combining the previous posts layout and dev log layout into one streamlined feed. (You’re looking at it!)

- Started learning Blender and Godot in preparation for a small game I want to make, and created a basic 3D scene with a movable playable character.

- Developed more custom Hugo layouts to support new site content: art, media, concerts.

- Started developing a navigation app for the Light Phone III because the stock one is extremely frustrating to use with public transit.

- Released an unofficial API + CLI/TUI for remotely managing on-device content for Light Phones, providing convenient alternatives to the official web-based dashboard. These are my very first published packages on PyPI.

silverbullet-geonotes

- Published silverbullet-geonotes, an interactive map plugin providing support for geolocation notes in Silverbullet (a FOSS markdown notetaking app I use). I’m using the plugin extensively for travel planning.

light-topographic

- Officially released Topographic (an outdoor maps app for the Light Phone III), adding a bunch of features and bug fixes after field-testing the prerelease on ~40 miles worth of hikes for a month. Works great!

- Released a chromatic tuner app for the Light Phone III.

- Redesigned this site for the second time this month.

- Released v1.1.0 of my metronome app, adding note subdivision support, small QOL changes, and a few bug fixes.

- Started awesome-light, a community-maintained list of open-source apps and tools for the Light Phone III.

- Prereleased Topographic, an outdoor maps app for the Light Phone III. I got mildly lost on my hike the other day and I’m using that as an excuse to build something new.

- Released light-gpslogger, a fork of GPSLogger redesigned to match the aesthetic of the Light Phone III. It bothered me that GPSLogger was the one singular app I used that didn’t fit the theme.

- Released an offline dictionary app for the Light Phone III.

light-metronome

- Released a metronome app for the Light Phone III.

- Redesigned this site with a custom Hugo theme that I’m developing. Launched the trail map and park completion map!

- Built a music player for Labyrinthine, my custom Qt/C++ Linux desktop environment.

After moving from Spotify to digital ownership of my music, I needed a local music player. Existing ones for Linux were ugly, lacked native Vim navigation support, and lacked rich Spotify-like playlist metadata. Thus, the Labyrinthine music player was born!

- Set up my home server! It runs on an old laptop that’s been sitting around for years, and it’s powered by Nix. Some of the stuff I run:

  • HomeBox - asset management for the things I own (I like to make lists)
  • Silverbullet - personal knowledge management platform; FOSS replacement for Obsidian
  • Dawarich - FOSS replacement for Google Timeline
  • Immich - FOSS replacement for Google Photos
  • Paperless-ngx - FOSS document management system

- Started work on Labyrinthine, a custom desktop environment made with Qt/C++.

This is my third major iteration of a from-scratch DE. First it was AwesomeWM (2022-2024; Lua), which I left because I had to reinvent too many wheels. Then it was AGS (2024-2025; Typescript/Gtk4), which I left because it was leaky and there were breaking changes every 5 minutes. I landed on using this stack because it comes batteries included and it’s very stable. Plus, I get more C++ practice.

2023

- Built a stepper motor music player. (Full project post here.)

While making a robot for my mechatronics class, I noticed stepper motors made differently-pitched noises at different RPMs. I took MIDI files (which digitally encode musical data like notes and timing), converted the note pitches to PWM frequencies, and sent the signal to an array of stepper motors. The result was very retro-sounding music.

- Built a 3D-printed microservo robotic arm. (Full project post here.)

- Recreated Meridia’s Beacon, a prop from Skyrim, using a magnet embedded in a 3D-printed Beacon and a reed switch. (Full project post here.)

2022

- Built an autonomous robot as part of my senior capstone project at UCSC. (Full project post here.)

2021

- Built an edge-triggered D flip-flop out of logic gates. (Full project post here.)

- Made a dual-channel oscilloscope with free-running, trigger, scaling, and scrolling capabilities. (Full project post here.)