Projects
I host most of my more recent projects at https://sr.ht/~ser. Some of the projects there are forks, but the ones I’ve authored are:
- Rook is a lightweight, stand-alone, headless, reasonably auditable (minimal dependency) secret service tool backed by a Keepass v2 database.
- Claptrap is a small but feature-rich Go flags library. Claptrap features: getopt-ish flags; sub-commands; long and short flags; –flag= syntax; invertable boolean flags; short-flag combination; variadic arguments; typed arguments/flags (int, bool, string, float, Duration); global flags; mandatory arguments; positional arguments; Levenshtein(ish) command matching; Usage text; and no external dependencies. Claptrap is a single, stand-alone Go source file.
- legume tracks issues in sourcecode TODO/FIXME comments
- changelog (re)generates changelog files from commit comments. Inspired by changeloguru, but works on Mercurial repositories as well.
- Forage is a shopping list app backed by your (self-hosted) Mealie server. It features an offline mode, syncing and merging, the ability to add lists and items, and it runs as a native app on your desktop and mobile devices.
- kanto if you like Kanban development, kanto provides you with a micro-tool Kanban board in your CLI, based on todo.txt
- tdp lets you manage todo.txt files with fzf, including: sorting, adding, completing, editing, and convenience bindings for incrementing and decrementing the priority of tasks. The repo talks about distributed development, but this is where the fzf README and code lives.
- quasiauto is an autotype tool. It was written to add autotype functionality to kpmenu (you’ll need my fork for the integration).
- gocryptkeeper provides a systray applet for mounting & unmounting gocrypt shares
- i3quake is a lightweight hotkey popup system for i3, originally developed to provide i3 with a Quake terminal
- kbplug tries to be a non-root udev system, designed to run programs when smart keyboards are plugged in.
- I’m now the maintainer and main developer of gotop, a popular cross- platform, terminal
top
application - todotxt-merge is a utility for merging todo.txt files, like the sync conflicts created by SyncThing.
- importicals is a short script that helps keep icals in sync with remind events. May be useful in a vdirsyncer/khal/remind toolchain.
- invoice is a PDF invoice generator from TimeWarrior records
- i3-tracker is a script to track time in TimeWarrior based on which i3 workspace is displayed
- orgchart generates organization charts from spreadsheet data, written originally out of frustration watching an admin manually maintain one in Powerpoint
- An implementation of the MARS voting system, an explatory improvement on STAR
- Restic/BackBlaze backups, config files and a how-to for setting up restic backups with Backblaze
I also contribute bug fix and feature PRs to a number of projects. Some of the more active ones which may have useful changes not yet upstream are kept on Sourcehut:
- gonic - a media streaming server implementing the Subsonic API. I provided support for loading server-side playlists from a directory.
- stmp - a terminal client for *sonic music servers. Inspired by ncmpcpp. I’ve been working off a fork of a fork, and have put in a bit of time on this to get it to where I can use it daily. I’ve added MPRIS support, search, and sorting, in addition to fixing bugs and addressing concurrency issues.
Legacy applications, for hysterical reference (maybe someone will find some useful code in here)
- Given two images, perceptualdiff provides a perceptually difference score; originally written as part of a testing tool for web sites to track the magnitude of CSS changes
- disp is another utility for i3 to manage display plug/unplug events; use https://github.com/rliou92/python-umonitor instead
- vaccinewatcher, now obsolete… or is it?
- duodecimal provides libraries for Ruby and Haskell for working with dozenal
- RML is another markup language; obviously the superior one, but markdown – like Windows, git, and VHS – has won through ubiquity despite technical inferiority
- ditz-trac was a system to sync Ditz bugs with Trac. I haven’t used either in so long, and ditz has been unmaintained for years, so this is probably of hysterical historical interest only
- autocompare helps track changes on websites. Designed for large numbers of sites (on the order of 2-3 hundred thousand pages), it produces a perceptual difference between two versions of a website and flags if the amount of change is larger than a configured amount.
- configserver is a little process to provide versioned configuration information through a simple REST interface, supporting set inheritance. It is schema-less and ad-hoc.
- Gozirra is a lightweight Java (1.4) implementation of the Stomp specification.
- Sashay is an OpenAPI code generator for golang.
- marcinator is a tool for managing software releases and deployments
- svggraph (SVG:::Graph) is a pure Ruby library for generating charts, which are a type of graph where the values of one axis are not scalar.
- TimeTracker is an Android app that helps you record the amount of time you spend on activities
- REXML is an XML parser for Ruby, in Ruby. Note REXML is now part of the Ruby standard library; this repository is historical, and represents development up to inclusion into Ruby.