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 | PyPi | Python

export and interface with firefox history/visits and site metadata. Ensures I don’t ever lose any of my browsing history, and lets me do larger analysis on my behaviours, though HPI.


GitHub | GitLab | PyPi | Python

helpers to prompt, validate, and persist python objects to and from disk using type hints


GitHub | GitLab | Elixir/TypeScript

Used to glue all of my web applications together. Simulates an old GUI interface, with desktop icons and draggable windows. Located at


GitHub | Python

Human Programming Interface. A way to unify, access and interact with all my personal data. It hides the gory details of locating data, parsing, error handling and caching. You simply ‘import’ your data and get to work with familiar Python types and data structures.


GitHub | GitLab | Go

A minimal dark-themed HTTP error page generator. Implements a basic template language, to allow interpolation based on HTTP status codes.


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

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


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

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


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 | 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 | | Rust

A shell-script-centric task scheduler; uses exit codes to determine control flow.


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 | PyPi | Python

A small cache layer for IP geolocation info


GitHub | GitLab | PyPi | Python

A cache which saves URL metadata and summarizes content. Acts as an abstraction layer for fetching youtube subtitles, a summary of the HTML, opengraph information, links to images/videos.


GitHub | GitLab | Shell/Python

A collection of scripts to allow flexible and easier interaction with mpv sockets. Also contains a daemon, which connects to any active mpv instances, collecting metadata so I have a history of what movies/music I’m watching.


GitHub | Python

Cross-platform window watcher. This is a daemon that sits in the background, and logs what window I’m currently using, and for how long. Forked from ActivityWatch to log to a file instead


GitHub | GitLab | Go

Logs metadata for shell commands; an extension to my shell history.


GitHub | GitLab | Shell

A template for my bash scripts, to provide a nicer interface to check for the presence of external commands on the users $PATH


GitHub | GitLab | Python/Shell

Wrapper script/code to interact with mintable; to keep track of my accounts/transactions and create a personal budget.


GitHub | GitLab | Shell

A fzf interface to calories, to add something you’ve eaten in the past again.


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 | PyPi | Python

Exports all accessible reddit comments for an account using pushshift.


GitHub | GitLab | Go

A simple package list parser. Used to clean up comments/newlines/spaces from a list of packages when installing packages in shell scripts.


GitHub | GitLab | Perl

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


GitHub | GitLab | Shell

CLI tool to convert text to speech using the StreamLabs API


GitHub | Python

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


GitHub | GitLab | Python

Exports League of Legends Match History metadata using the RiotGames API. I don’t play league of legends that often anymore, this is to export my entire match history so I can do some analysis as part of HPI.


GitHub | GitLab | Python

Personal hooks/scripts for calcurse. Sources events for calcurse from Google Calendar and todo.txt


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 | TI-BASIC

programs I wrote on my ti-nspire cx back in the day


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 | Python

Scrapes personal game/achievement data from steams website.


GitHub | GitLab | Python

Parses date-related information from my blizzard GDPR export.


GitHub | GitLab | Python

Parses post/metadata from random forums I used in the past


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 | 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

generate a graph that shows correlation between the user and average score on MyAnimeList


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

An old pygame shoot ’em up space game


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 mypy


GitHub | GitLab | Python

Cookiecutter template for a basic python library. Is meant for packages I don’t intend to push to pypi, includes seutptools to install some python code I want to have globally installed, and basic installation method to install from my github.


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


GitHub | Python

An offline CLI tool to search your GitHub Stars. Forked from here to have a simpler interface and also index all of my repositories, in addition to any stars.


GitHub | Ruby

some music created using sonic pi