personal projects
This is an assorted list of projects and experiments I’ve done, along with links to either relevant blog posts or Git repositories where you can find more information. If there are any broken links here, please inform me.
geode-piano
Electronics project to revive a broken digital piano. I designed and built a new circuit from scratch to replace the original board. geode-piano is based on the Raspberry Pi Pico, using firmware made with the embassy-rs framework in Rust. It runs on MIDI over USB, and also includes note velocity detection.
minrss
A minimal RSS/Atom feed reader I wrote in C, inspired by suckless programs. The main feature is that it represents feeds as folders, with articles as files within them:
rss
|--news
| |--article1
| `--article2
`--blog
|--post
`--other_post
As such, minrss has very good compatibility with shell scripting. You could even use basic shell commands to read your RSS feeds.
sachet
Toy full-stack web service for file-sharing. Includes user management and authentication, as well as support for granular permissions on each user. The backend is written in Python using the Flask framework, while the frontend is written in TypeScript with Mithril.js. There are neat features like dark mode and responsive, mobile-friendly design.
lc-3 vm
Rust implementation of the Little Computer-3 educational architecture as a virtual machine. LC-3 is a simplified 16-bit computer that can run programs and games like 2048. Concepts found in LC-3, like the fetch-execute loop, and assembly, are foundations of modern computing.
bitmask
A Python library that helps with manipulating bit flags. It provides meaningful, object-oriented syntax which makes code clearer in this language compared to the equivalent C syntax.
homeserver automation
Ansible playbook that automates configuration and deployment of my Raspberry Pi server network. Starting from entirely blank machines, it automatically sets up all the software and configurations, including a music server, Matrix chat server, git hosting service, and this website.
encryptme
Small web app for encryption/decryption. This is mostly an experiment in writing a “framework” in vanilla JavaScript. The website aims to be simple and clutter-free, while still being featureful.
pyinstantref
Python utility to conveniently and rapidly add cross-references between notes written in Typst (a type-setting system similar to LaTeX). For more context, see this post about my note-taking setup.
dotfiles
Collection of configurations for my Linux desktop. I sink too much time into this, but customizing things feels great (as many other *nix users can probably confirm).