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:
- stmps - a terminal client for *sonic music servers. Inspired by ncmpcpp.
- gonic - a media streaming server implementing the Subsonic API. I provided support for loading server-side playlists from a directory.
- hugo-tufte - a hard fork of a Tufte theme for Hugo, used to generate this site.
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.