Projects
I’ve written some open source software in my free time. In some cases I even maintain them! Shocking, I know.
s4g#
s4g is the static site generator that powers this blog. It’s written in Go and uses djot as a saner markdown. Reasonably complete, but definitely has room for improvement—internal link rot detection is one strong candidate. Syntax highlighting would be nice too.
Shark#
Shark is a simple “desktop pet”. It’s my first foray into cross-platform desktop application development, also my first Go project that actually did anything fun.
Pytaku#
Pytaku is a web-based manga reader that’s designed to be as self-host-friendly as possible. It’s an experiment to see how far I can get with a simpler toolset: basically just flask, sqlite and mithril.js for the frontend. There are still many rough spots but that’s enough for my daily use, so it’s currently in maintenance mode.
ORTS#
ORTS is a GUI for operating scoreboards on fighting game streams. It’s served its purpose beaufifully during our local tournaments and several Saigon Cups… until a certain pandemic happened.
GORTS#
GORTS is ORTS rewritten in Go and Tcl/Tk. It has been a fun experiment in cross-language IPC, and a much less masochistic exercise in software packaging compared to Python.
An animated wallpaper for KDE Plasma#
I was frustrated that KDE 5 didn’t allow animated gifs as wallpaper so I wrote one. Every now and then someone would use it on /r/unixporn and cause a surge in github stars. It is currently my most starred repo, which gives me mixed feelings.
McRoss#
McRoss is a minimal and usable gemini:// browser written in python and tkinter, meaning it Just Works (tm) on any self-respecting desktop OS. Fast forward a couple of years and there’s still no interesting content on the gemini-verse (that I can find anyway). Also given the fact that there’s a very good web proxy now, McRoss is pretty much shelved.
Caophim#
Caophim is my take on imageboard software and also my excuse to try Nim. There’s a usable live instance at caophim.imnhan.com. It’s nowhere near my goals but to be honest I got tired of running into nim’s bugs, in the compiler, the standard library, the flagship module that’s supposed to supersede a module in the standard library… you name it. The straw that broke the camel’s back though, was this gem right here that remains unfixed to this day.