https://kudoer.com
source
My friend and I wrote this in July 2024. It's a site that allows you to review, or "give kudos" to anything you please. Books, movies, places, mathematical concepts, whatever. You can follow your friends accounts and see their reviews.
The pages are all generated statically on the backend (written in go). The html, css, tiny bit of js, and EVEN most of the svgs are carefully handwritten to keep the site fast and enjoyable to use.
Assets like profile pictures and icons are named with their hash so we can suggest an immutable cache to the browser. A strict CSP, CSRF tokens, and the lightning fast caddy proxy keep the site secure and extremely easy to manage.
nilsu
For many years I've hosted my own messaging server for friends and family and I've slowly written more and more tools and features. I've written a nice backend for authentication in go so everything uses the same shared login and then whenever I think of an interesting little project I can incorporate it with the same login infrastructure.
https://pkg.nilsu.org
Package repository for alpine and void linux.
https://lists.nilsu.org
I wrote this for grocery lists and other shared notes that you want to be able to quickly check and update without any faff.
https://paste.nilsu.org
A pastebin site I wrote many years ago. I use this whenever I need to send someone a zip of photos or whatever. There's a basic web interface and I've also written some cli tools in go and python.
https://recipes.nilsu.org
A simple and elegant recipe site for submitting and sharing recipes with friends.
abar
I use sway as my window manager / compositor, but since 2019 or so I've been going without a bar. This was partially an exercize in dramatically reducing the distractions on my computer, there's nothing on my screen other than the programs I'm actively using, but also the decision was largely driven by a lack of any "good enough" bars.
But then in 2025 I found myself wishing a had just a little bit of basic system information visible. I wanted to know when my speakers were turned on and my battery percentage without pressing a hotkey to check.
A basic status program comes with sway, but it's lacking several important features. I searched around, but I couldn't find any status tools for swaybar which were event based (instead of polling), support click events, and allow me to toggle on and off different bar sections on the fly (hiding a music section when you're not playing music or a batter section when your laptop is docked and fully charged).
So I wrote one! I've used it as an opportunity to get more practice in with rust, it would've been much faster to write it in go or something, but I've been playing around with bevy a bit and felt like the extra practice would be good.
initiative
A dnd assistant comprise of a tool to display on a player facing monitor and a control tool for running combat. They communicate using a custom TCP protocol. Normally, you would run the server on a raspberry pi or something plugged into a monitor and then run the client on your laptop.

calendar
A TUI version of the classic cal program.

backpack
An inventory management discord bot. I wrote a bot that allows creating shops and maintaining player inventories for a moxie campaign matthew was running.
aotearoa tides
A cute little app that displays tidal data using the LINZ tide predictions. It works completely offline for ports all around the country.
gemgen
Command line tool for converting Commonmark Markdown to Gemtext. The goal is to create proper hand-made gemtext. Links and “autolinks” are placed below each paragraph, but a “paragraph” of only links is left intact. Normally, paragraphs are merged onto a single line, but hardlinks (double spaces or \ at the end of a line) may be used for manual line breaks. Lists and headings are simplified to the gemtext format, emphasis markings are removed (or kept with the -e flag), horizontal rules are turned into 80 character lines, and indented code is converted to the gemtext “fenced” format.
tracklist
Convert a huge audio or video file into many small files using a simple tracklist as input.
tape
ASCII Art screen recorder. Uses wf-recorder under the hood.
shrink
Personal media shrinking script. Nothing fancy.
duplicates
Walk a filepath and find duplicate files by calculating the hash of each file.
jotto
Wordle/jotto for your terminal! Uses the official wordle word list, answer list, and defaults to the daily wordle for your local time. You can play older or newer wordles by passing the number as an argument. Your results are automatically copied into your clipboard using the same format as wordle.
notabar
Notabar is a tool and simple csv syntax. It’s used to format and display the output of several programs in a notification. I use it instead of a system bar.

colorswap
Finds color codes from STDIN and replaces them with a new format:
$ echo 'rgb(155,112,255)' | colorswap -hex
#9b70ff
pastefile
Tiny little cli tool to quickly paste your clipboard contents as a file.
star
Display information about a github or sourcehut repository. I use this to "save" interesting repos to a text file rather than being logged into github.
timer
A basic countdown timer. I also wrote a script, tea which plays a sound and displays a notification when the timer finishes. It'll even unmute your speakers (and remute later) if needed.
timer 25s
timer 11:32AM
timer 19:20
timer 3h40m50s
snowy trees
Minecraft mod that improves the look of snowy forests by generating snow under the trees.

better chainmail
Minecraft mod that makes chainmail armour better. Chainmail armour is uncraftable and rather difficult to obtain in Minecraft, but is worse than iron armour making it pretty much useless. This mod buffs the armour such that it's similar, but slightly different than diamond.
better horses
Minecraft mod that replaces the horse breeding algorithm. The default algorithm takes the stats from both parents and a 3rd random horse and combines them and then divides by 3. This has the somewhat realistic effect of making is exponentially harder to breed better horses, but it's quite awful from a gameplay perspective. This mod instead creates the child horse with stats averaged from the parents and then applies linear variation to each stat and finally clamps it between the min/max values in vanilla Minecraft. It's still quite a feat to get a "perfect" horse, but at least now it's a goal you can work towards.
metweather
A little CLI tool to display weather information for Metservice. I created this and a Go library, metservice-go, so that I could have weather info for Aotearoa in my notification.
tide
A command line program that prints Aotearoa's tidal data. It reads the official CSV files from LINZ and uses their provided algorithm to calculate the current tide height. If run in an interactive terminal it will also print out a basic graph.

pcf
A simple ftp-based pastebin server and client. Uses a static webserver, ftp,
sha1, and a filewatcher such as incron. In addition to the server spec +
scripts, I wrote a basic command line client in
go (although you can always use an ftp client and sha1sum instead). Someday, I
might add sftp support for easier private server use.
modget
A package manager for Minecraft CurseForge mods. It kinda works right now, but is missing several important features... listen, working with curseforge's undocumented API isn't pleasant.
dprint
Print specified values from desktop files to stdout. Look, it's hard to describe okay? Here's a picture of me using it with my dmenu fork.

My launcher script pipes the output of dprint into dmenu to get a selection. Then it passes that selection into dprint -- with some options -- and then the output of that is executed by your shell (to launch the program).
#!/bin/sh
SELECTION=$(dprint | dmenu -i -l 8 "$@")
echo "Name:$SELECTION" | dprint -i - -o "StripExec" | ${SHELL:-"/bin/sh"} &
I wrote dprint because the default dmenu_run script just lists all the
programs in your $PATH exactly as they're named. So, there's no easy way to
rename them or tweak launch options. For example, that
"calculator"
program in the screenshot runs st -t st-float -g 76x30 -e python, and I renamed
"ncmpcpp" to just "music."
black-pastel
A black background vim color-scheme. It's really just a slight fork of
base16's default-dark, but I think
it turned out nice.

kota-prompt
My vi-mode zsh prompt. I unironically use vi-mode. There are literally
dozens of us.
I think one of the big sticking points for people is that by default in bash
or zsh there's virtually no current mode indicator. You just have to remember,
I guess? This prompt is just your current path with /home/username replaced
with ~ and it turns blue if you're in normal mode or red if your last command
exited non-zero. Simple. Effective.
statblock
A cli tool that takes the name of a D&D monster and prints out it's stat block in a simple markdown format.

mcoffline
Makes converting a server to offline mode easier.
mclist
List players on an mc server + it's description and such.
tabstore
Store your opened Firefox tabs in a plain text file for later restoration. A
friend and I wrote this little extension back in 2017 after Firefox quantum came
out and there were no plugins around to do this. Very useful for downloading a
huge list of youtube videos (with youtube-dl -a) or sending a shopping list to
a friend. It still works fine, but fair warning, I don't really use Firefox
anymore.
wal_steam
A python script that patches Metro for Steam with colors from wal or wpg. Steam has been slowly removing theming support so it's not quite what it once was. These days I try to by my games on itch, humble, or gog to more directly support Indie game developers. So wal_steam is in maintenance mode.

castaways
A game inspired by club penguin and a short hike.
Kererū
Sleek and fast matrix client.