Programming Projects

This is kept up to date by some code here

exobrain

GitHub | GitLab | HTML/Bash

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

bgproc

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.

subpath-serve

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

no-db-static-shorturl

GitHub | GitLab | Go

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

plaintext-playlist

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.

raspi-backup

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.

tts

GitHub | GitLab | Shell

CLI tool to convert text to speech using the StreamLabs API

mpvf

GitHub | GitLab | Shell

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

xkcd-favorites

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

dotfiles

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)

mpv-sockets

GitHub | GitLab | Shell

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

mal-unapproved

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.

discord-countdown-bot

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.

glue

GitHub | GitLab | Elixir

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

pmark

GitHub | GitLab | Perl

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

mal-id-cache

GitHub | Python

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

greasyfork_archive

GitHub | GitLab | PyPi | Python

Scrapes data and code from a users Greasyfork account.

vps

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.

jikan_ex

GitHub | GitLab | Hex | Elixir

An elixir wrapper for the Jikan API.

shortcuts

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.

albums

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

keepassxc-pwned

GitHub | GitLab | PyPi | Python

Checks a keepassxc database against previously breached haveibeenpwned passwords.

wca_userinfo

GitHub | GitLab | Rust

A tiny web server that scrapes information for a user from worldcubeassosiation.org. 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.

xqc-dvd

GitHub | GitLab | Elm

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

animeshorts

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.

bootstrap

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.

cube-scramble-cli

GitHub | GitLab | PyPi | Python

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

evry

GitHub | GitLab | Rust

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

docker-jikan

GitHub | GitLab | Dockerfile

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

dotfiles-index

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.

exists

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.

foreverjs-list

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.

superhooks

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.

genpasswd

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.

greasyfork_repo_generator

GitHub | GitLab | Elixir

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

keyvol

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.

largechar

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)

mal-notify-bot

GitHub | GitLab | Python

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

poly-project-euler

GitHub | GitLab | ???

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

proxy-jikan

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.

mac-dotfiles

GitHub | GitLab | Shell

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

pythonanywhere-3-months

GitHub | GitLab | Python

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

reddit-wallpaper-scraper

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.

selenium-shutterfly-scraper

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.

full_todotxt

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!

todotxt_deadline_notify

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.

twitchlive

GitHub | GitLab | Go

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

wait-for-internet

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>

fuji

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.

cookiecutter-template

GitHub | GitLab | Python

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

vimbuffer

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