Programming Projects

This is kept up to date by some code here


GitHub | GitLab | HTML/Bash

external brain – uses pandoc to generate my blog/brain dump. See here for more info.


GitHub | GitLab | Shell

bash loop to run tasks in the background. I use this instead of cron. uses a lockfile to make sure duplicate processes aren’t running, and evry to schedule tasks periodically.


GitHub | GitLab | Go

Serves text files from a directory by matching subpaths. I use this to serve my dotfiles here. It also allows me to quickly send someone one of my scripts/configuration files from my dotfiles using this script


GitHub | GitLab | Go

File based single-binary URL shortener server. Has no dependencies; doesn’t require you to setup a database.


GitHub | GitLab | Bash

Interactive terminal playlist manager, storing contents in readable text files. Was my first attempt at creating a relatively large bash application. Seems that most people tend to use spotify/apple music nowadays, but I still like having music locally. This lets me manage playlists locally without having to use one of the bulky GUI applications.


GitHub | GitLab | Shell

script to periodically back up my machine to my raspberry pi. Is pretty minimal, just uses headless raspbian with an external 4TB that gets mounted on boot.


GitHub | GitLab | Shell

CLI tool to convert text to speech using the StreamLabs API


GitHub | GitLab | Shell

Interface to select youtube-dl format for streaming videos with mpv


GitHub | GitLab | HTML

A list of my favorite xkcd’s. Was initially rendered client-side with some JS, but I now use a bash script to convert it to a static site. Hosted here


GitHub | GitLab | Shell

My dotfiles; using yadm. Includes lots of my scripts, and my configuration files for everything. See here for an index.

Works on both Mac/Linux(Arch)


GitHub | GitLab | Shell

A collection of scripts to allow flexible and easier interaction with mpv sockets


GitHub | GitLab | Ruby

website that displays unapproved MAL (MyAnimeList) entries. MAL doesn’t provide this functionality on their website, so its not easy to know if you’re submitting a duplicate entry to the database.


GitHub | GitLab | Python

Discord bot to use for countdowns. I use this as an alternative to syncplay – to make sure everyone in a discord channel are all hitting play at the same time when watching movies/TV shows together.


GitHub | GitLab | Elixir

Used to glue all of my web applications together. This is the code for my homepage at, which links off to my static/other sites hosted on the same server. The elixir application also handles caching information for my feed page.


GitHub | GitLab | Perl

A hacky, markdown pre-processor. Uses code blocks to generate markdown, from within the markdown itself.


GitHub | Python

An cache of MAL IDs updated whenever something is added to the database. See here for more info.


GitHub | GitLab | PyPi | Python

Scrapes data and code from a users Greasyfork account.


GitHub | GitLab | Shell

Scripts used for installing/managing/restarting/monitoring processes on my server (and my server). Wraps supervisor to handle process crashing. Includes other misc scripts (mediaproxy/remsync) to provide FTP/Proxy-like functionality.


GitHub | GitLab | Hex | Elixir

An elixir wrapper for the Jikan API.


GitHub | GitLab | Ruby

Converts a toml file into shell scripts. I use this to convert short/one-liner shell commands into individual files. This makes my scripts easier to share with others, not dependent on shell-specific syntax (e.g. exported bash functions), and makes scripts accessible to other scripts/launchers like rofi/dmenu.


GitHub | GitLab | Python/SQL

An amalgamation of acclaimed album lists. This is my replacement for RateYourMusic.

This was started years ago, before I knew how databases worked, so my database is a google sheet. I then learnt SQL, so it also has code to convert the google sheet to a MySQL schema

Also includes an API that lets me list recently listened albums on my media feed


GitHub | GitLab | PyPi | Python

Checks a keepassxc database against previously breached haveibeenpwned passwords.


GitHub | GitLab | Rust

A tiny web server that scrapes information for a user from Web scraping in rust is a bit cumbersome, but it was some nice exposure to using Results and error handling. I scrape my page from the WCA website once per week, and use it to generate this page on my website.


GitHub | GitLab | Elm

A browser DVD logo animation/game. Was a project for learning Elm; Hosted here


GitHub | GitLab | Python

Code for generating and maintaining my (static) site for anime short films/series. Generates the html with the generic yattag package, doesn’t use a full SSG framework.


GitHub | GitLab | Shell

A script to setup a new bash VPS/servers with defaults I like. This is one of the first things I do whenever I setup a new server, so I have all my vi bindings and aliases.


GitHub | GitLab | PyPi | Python

A CLI for pyTwistyScrambler, to generate random states for twisty puzzles.


GitHub | GitLab | Rust

A tool to manually run commands – periodically. Uses shell exit codes to determine control flow in shell scripts.


GitHub | GitLab | Dockerfile

Personal Jikan setup; so I don’t have to compile PHP 7.3 on new servers.


GitHub | GitLab | TypeScript

SSG to display my scripts/configuration files from my dotfiles. I replaced this with subpath-serve, next.js’s core is great, but its missing some of the auxiliary tooling (specifying a different base path easily) to let me host this on my site easily.


GitHub | GitLab | C

Pipe to test if files exist. Got tired of doing the unreadable: xargs -I {} sh -c "[ -e \"{}\" ] && echo \"{}\"" when doing shell one-liners, so this simplifies that.


GitHub | GitLab | JavaScript

Express API to get information about forever.js processes. I used to use this to ping my server every 10 minutes to make sure my processes were still running. I use my fork of superhooks to do that now.


GitHub | GitLab | Python

Posts supervisor event data as an embed to a discord server. This sends me notifications whenever some process on my server crashes/restarts.


GitHub | GitLab | C++

Yet another Password Generator. Theres lots of these out there, but writing my own means the flags match exactly what I want.


GitHub | GitLab | Elixir

Archives a users Greasyfork account and creates a Github repo from the information. Uses my greasyfork_archive package.


GitHub | GitLab | Go

An interactive terminal interface for pamixer/pactl to control system volume. I use this on my laptop when I’m using my external keyboard to change volume so I don’t have to reach to the volume keys. Also means I don’t have to leave home row to change my volume.


GitHub | GitLab | JavaScript

Displays large characters on your screen. Was a replacement for this Alfred feature, and an excuse to do some GUI programming with electron (if one can call it that)


GitHub | GitLab | Python

Discord bot that checks the MAL (MyAnimeList) “Just Added” page, reporting newly added entries.


GitHub | GitLab | ???

Solutions to Project Euler, using distinct languages. I really like learning new languages, so this was an excuse to do that.


GitHub | GitLab | Python

Self-signed (HTTPS) token-authenticated proxy for Jikan. Used so I quell my paranoia of being IP banned. Can also act as a generic proxy.


GitHub | GitLab | Shell

My old dotfiles for Mac. Has now been combined into my single dotfiles repo


GitHub | GitLab | Python

Clicks the ‘Run until 3 months from today’ button on pythonanywhere, so your website doesn’t deactivate automatically.


GitHub | GitLab | Python

Scrapes the top posts from wallpaper subreddits. I’m not huge into collecting wallpapers, but I wanted to have a couple hundred in my rotation. This scraped and classified ~7500 images in about 15 hours.


GitHub | GitLab | Python

(At least when I did this), there was no way to download all of your images off of a shutterfly account. This used a combination of selenium and pyautogui to do that.


GitHub | GitLab | Python

A todotxt interactive interface that forces you to specify certain attributes. Used in combination with todotxt_deadline_notify, to allow me to quickly create todos and have notifications to remind me to do them!


GitHub | GitLab | Elixir

Sends me reminders in discord when deadlines for my todos are approaching. Syncs from my list of local todos (a text file, following the todo.txt standard) up to my server.


GitHub | GitLab | Go

A CLI tool to list which Twitch channels you follow are currently live.


GitHub | GitLab | Rust

Command line utility that waits till you have an internet connection. I use this multiple times daily since the I have multiple routers at my house depending on whether or not I’m connecting to my NAS/am upstairs or downstairs. Often like wait-for-internet && <some command that requires an external connection>


GitHub | GitLab | Python

When it was still allowed, automated the process of creating an free trial account on ForJoyTV using selenium, to watch Japanese TV.


GitHub | GitLab | Python

cookiecutter template for new python projects, using pipenv, pytest, and travis


GitHub | GitLab | PyPi | Python

Lets me edit files and strings in temporary vim (or some other console editor) buffers. I’ve mostly replaced this with my heavy use of a customized ranger