A log of the random stuff I get up to in my spare time.
My focus for the last few months has been contributing to the open-source ecosystem for the Light Phone III. I’ve been working hard on an unofficial API/CLI for the device, a directory website to showcase community-developed Light Phone apps, and also a few apps of my own.
9/21 - Random, sporadic updates to this site over the last few weeks.
9/5 - Refactored my NixOS config to use the dendritic pattern. The net effect is that my system configurations are now incredibly modular, scalable, and clean. You can read more about dendritic design here.
7/22 - Set up template repo with extensive developer infrastructure and tooling for the Light SDK - Nix shell, setup scripts, CI/CD with nightly tests/dependency checks, migration guides.
6/13 - Significant refactoring of the Hugo theme powering this site. The code inevitably became messy as the scope of the site expanded over time. Rewrote all stylesheets with SASS syntax, cleaned up layouts to be more generic, and other misc cleanup.
6/5 - Refined my incredibly overengineered travel planning tech stack in light of an upcoming trip to Southeast Asia. Full process post coming soon.
5/30 - I wanted to make some digital drawings for this site, so I reinstalled Nix on an old tablet I had lying around. It’s been borked since I unsuccessfully tried to install Nix on it about a year ago. This time the process was (relatively) smooth, and I had my full system config up and running incredibly quickly. Wow I love Nix.
5/20 - 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!)
5/19 - Redesigned this site again, combining the previous posts layout and dev log layout into one streamlined feed. (You’re looking at it!)
5/18 - Learned a little Blender and Godot because I wanted to make a small game, and created a basic 3D scene with a movable playable character.
5/15 - Started developing a navigation app for the Light Phone III because the stock one is extremely frustrating to use with public transit.
5/7 - 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.
4/14 - Released a chromatic tuner app for the Light Phone III.
4/13 - Redesigned this site for the second time this month.
4/8 - Released v1.1.0 of my metronome app, adding note subdivision support, small QOL changes, and a few bug fixes.
4/6 - Started awesome-light, a community-maintained list of open-source apps and tools for the Light Phone III.
4/5 - 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.
4/5 - 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.
3/31 - Released an offline dictionary app for the Light Phone III.
3/2 - Redesigned this site with a custom Hugo theme that I’m developing. Launched the trail map and park completion map!
2/3 - 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:
1/2 - 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.
9/21 - 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.)
12/15 - Built an autonomous robot as part of my senior capstone project at UCSC. (Full project post here.)
6/20 - Built an edge-triggered D flip-flop out of logic gates. (Full project post here.)
6/15 - Made a dual-channel oscilloscope with free-running, trigger, scaling, and scrolling capabilities. (Full project post here.)