# 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](/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](https://embassy.dev/) framework in Rust. It runs on MIDI over USB, and also includes note velocity detection. ## [minrss](/minrss) A minimal RSS/Atom feed reader I wrote in C, inspired by [suckless](http://tools.suckless.org/ii/) [programs](http://tools.suckless.org/sic/). 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](https://github.com/dogeystamp/sachet-ui) 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](/lc3) 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](https://github.com/dogeystamp/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](https://github.com/dogeystamp/homeserver-iac) 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](https://github.com/dogeystamp/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](https://github.com/dogeystamp/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](/typst-notes) about my note-taking setup. ## [dotfiles](https://github.com/dogeystamp/dots) 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).