Welcome to my collection of open-source projects. Beware, most if not all of
these projects are unsuitable for production use. If you want help getting
started with one of them, please send me an email.πͺΆ Background Information
conductor
Description
A Haskell music organizer with a metadata composition language
Something like this will produce a m3u playlist file with the tracks that are obtained with the conditions provided:
songs <- filter(artist == "Nujabes") -- 1. adds Nujabes songs to set
|| filter(genre == "Hip Hop") -- 2. adds Hip Hop songs to set
&& limit(year > 1990) -- 3. limit the set to songs made after 1990
otherSongs <- filter(artist == "Aphex Twin") -- 1. Get all songs by aphex twin
&& limit(count == 100) -- limit number of tracks in playlist
result <- write $ union(songs, otherSongs) -- merges the sets together
I finally decided to make use of the knowledge from watching Tsoding's JSON Parser video. I implemented parsers using the excellent parsec library. I think that this project made haskell's real strengths shine when it comes to parsing and writing languages. Although my project is not as complicated as general purpose languages, it goes to show how convenient combinatory parsing is for developers.
I have a lot more ideas for the applications of the "query language", I just need more time to work on itβ¦
gtfo
Description
This program is designed to organize files based on type written in Haskell.
The sorting will work by creating folders for files based their kind (Document, Music, Video, Image, etcβ¦).
Going from this:
/home/user
βββ document-1.pdf
βββ document-2.pdf
βββ document-3.pdf
βββ song3.mp3
βββ pic-1.jpg
βββ pic-2.jpg
βββ video-2.mp4
βββ pic-3.jpg
βββ pic-4.jpg
βββ document-4.pdf
βββ song1.mp3
βββ song2.mp3
βββ video-1.mp4
βββ video-3.mp4
βββ video-4.mp4To this:
/home/user
βββ Documents
β βββ document-1.pdf
β βββ document-2.pdf
β βββ document-3.pdf
β βββ document-4.pdf
βββ Pictures
β βββ pic-1.jpg
β βββ pic-2.jpg
β βββ pic-3.jpg
β βββ pic-4.jpg
βββ Music
β βββ song1.mp3
β βββ song2.mp3
β βββ song3.mp3
βββ Videos
βββ video-1.mp4
βββ video-2.mp4
βββ video-3.mp4
βββ video-4.mp4Reflection
This was my first "serious" project that I wrote in Haskell. This went beyond the experience I had come by through doing advent of code in previous years. Wrestling with the build system and external dependencies was not the same struggle as it has been the last couple of years. File system work is pretty complicated in Haskell compared to other languages, but the typing is what made this project really fun to design.
cd-maker
Description
A program to generate a file system for a cd using m3u playlists and mp3s. It is written in Common Lisp.
I was going to make this into a script, but is evolving to be a bit more than that, so it is getting its own repo.
The directory structure will look like this:
Music
βββ Disk01
βββ 00-Playlists
β βββ playlist1.m3u
β βββ playlist2.m3u
β βββ playlist3.m3u
β βββ playlist4.m3u
βββ 01-Album name
β βββ cover.jpg
β βββ song1.mp3
β βββ song2.mp3
β βββ song3.mp3
βββ 02-Album name
β βββ cover.jpg
β βββ song1.mp3
β βββ song2.mp3
β βββ song3.mp3
βββ 03-Album name
βββ cover.jpg
βββ song1.mp3
βββ song2.mp3
βββ song3.mp3The playlists will be structured like this:
"/home/user/Music/Disk01/01-Album\ name/song2.mp3"
"/home/user/Music/Disk01/03-Album\ name/song3.mp3"
"/home/user/Music/Disk01/02-Album\ name/song1.mp3"
...Burn the playlist to a cd using whatever software. Then, you can pop the playlist into a CD player and play the playlist.
robozo - Vex Robotics Code for 2023-2024 Season
Description
This code hosts my driver control and autonomous code for my high school robotics competition called VEX Robotics. It runs on a firmware for the arm robot brain called pros.
Reflection
I learned a lot through making this kind of project. I worked closely with my teammates to work on strategy for the competition. This was my first year working with C++ and more advanced VEX programming practices.
vex-high-steaks - Vex Robotics Code for 2023-2024 Season
Reflection
This was my second year working with C++ and I learned a lot more about common practices. I learned much more about the odometry tracking algorithms and was almost able to develop my own.
My personal website
If you are reading this, you are either on my website, peeking through the org files in the website's repository, or something crazy like Internet Archive snapshots (if you are doing that why?).
I write this site in org-mode markup and then Hugo turns it into a static website. I have taken and heavily modified Luke Smiths lugo theme for Hugo. The colorscheme is more or less an opinionated selection of colors from the modus-vivendi color theme.
The about page has more regarding the non-technical aspects and motivations behind this site.
Minor projects
denote wiki
Emacs Configuration
More about this here
dotfiles and nixos config
The dotfiles-stow repository is my generic system configuration files. These can be used on any system. It has my shell scripts, some window manager configurations, rc files and more.
nixos-dotfiles has my NixOS configuration (duh). It is quite modulated, so if you are interested just take a look at the repo and read the code. NixOS is not as complicated as I thought, so my configuration is pretty simple. I don't use home-manager for any configurations outside of vim, since my vimrc is really small. I keep my user level packages (browser, mpv, emacs, etc) in the home-manager directory in many modules. The system level packages are in nixos directory. Per-machine settings are in host. pocket is the name of my laptop, and as of October 2025, I am not using NixOS anywhere else.
Suckless tools forks
I have personal forks of dmenu, st, dwm, and slock. I did not write these, but I modified the source code for my liking with patches or other changes. My experience with C began with these tools. I have packaged my forks in derivations for NixOS in my nixos-dotfiles repository.
Gruber darker theme fork
I forked tsoding's gruber darker theme because it was missing some colors in places that I wanted to have from other themes. I didn't make many modifications, but I learned a lot about how Emacs configures color themes. I analyzed other themes like the awesome modus-themes.