82 lines
3.1 KiB
Markdown
82 lines
3.1 KiB
Markdown
# 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).
|