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.