I host most of my more recent projects on Sourchut. The Go
programs are distributed under the vanity URL ser1.net/<project>. Some of the
projects listed under my profile are forks, but the active 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=value 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
-
ostui
is a hard fork of stmps with many new features.
-
lbb
is a fast address book lookup tool that uses a directory of .ics files (such as
sync’ed with vdirsyncer) as the DB. I wrote it as an alternative to khal, which
is slow on large address books; lbb is about 144x faster than khal.
-
changelog (re)generates changelog files
from commit comments. Inspired by changeloguru, but works on
Mercurial and
Jujutsu repositories as well as git.
-
tjot, a terminal renderer for
DJOT.
-
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.
-
A few years ago, I took over maintenance and development of
gotop, a popular cross- platform,
terminal top application
The projects below are mostly dormant. Most were left in a working state when I
abandoned them, but YMMV. If you find any useful, let me know; they’re down here
because I no longer have the itch they scratched, and I stopped using them.
-
orgchart generates organization charts from
spreadsheet data, written originally out of frustration watching an admin
manually maintain one in Powerpoint. I’ve recently started poking at this again,
and may move it back up into the active list.
-
todotxt-merge is a utility for merging
todo.txt files, like the sync conflicts created by SyncThing. It is broken; do
not use it. I will fix it one of these days. When I fix it, I’ll move it up to
the active list.
-
Restic/BackBlaze backups, config files
and a how-to for setting up restic backups with Backblaze. I think this is
still relevant – I’m still using it, I just haven’t touched the instructions
in a long while.
-
quasiauto is an autotype tool. It was
written to add autotype functionality to
kpmenu (you’ll need my fork for the
integration). Superceded by Rook.
-
gocryptkeeper provides a systray applet
for mounting & unmounting gocrypt shares. I replaced this with a 38-line bash
script that uses rofi.
-
i3quake is a lightweight hotkey popup system
for i3, originally developed to provide i3 with a Quake terminal. Nearly
everything I do these days is in a terminal and tmux, and having a pop-up
terminal became superfluous.
-
kbplug tries to be a non-root udev system,
designed to run programs when smart keyboards are plugged in. This was most
useful to me when a laptop was my main computer, and I was frequently
docking/undocking it. I’ve since gotten a QMK keyboard with layouts in
firmware, and am using a desktop again, and don’t need to set keyboard layouts
anymore. Near the end, I’d discovered
kanata which solved many of the same
issues; I simply don’t need kbplug anymore.
-
importicals is a short script that helps
keep icals in sync with remind events. May be useful in a
vdirsyncer/khal/remind toolchain, but my current workflow with vdirsyncer and
khal import <icsfile> is working and I haven’t needed this in a long while.
-
invoice is a PDF invoice generator from
TimeWarrior records. No attempt to make invoice easy-to-use has been made;
it’s some programs which massage TimeWarrior records and some Typ templates to
generate PDFs. There are many moving parts, and it’s not well documented –
but the end result is pretty, and once it’s set up it’s stable. I used it in
conjunction i3-tracker to track time spent
in different workspaces and automatically generate invoices. I no longer have
a need for it.
-
i3-tracker is a script to track time in
TimeWarrior based on which i3 workspace is displayed. This is the utility that
generated data used by invoice.
-
An implementation of the MARS voting system, an
explatory improvement on STAR
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:
-
gozer - The static site generator I’m now
using for my website. It’s a lighter alternative to Hugo that doesn’t suck up
4GB of RAM to process 100 blog entries. Patches are being accepted upstream,
so I’d use that first.
-
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)
-
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.
-
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. This was
used at a job where we managed web sites for about 300k SMBs, and we used
it to detect “significant” changes for product owners to review. It depends
on technologies from over a decade ago, and almost certainly will not work
OOTB.
-
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?
I wrote this during COVID to indentify where we could get vaccines, back when
they were new. The services it uses aren’t available, and it doesn’t work
anymore.
-
duodecimal provides libraries for Ruby and
Haskell for working with dozenal. I write neither Ruby nor Haskell anymore.
RML is another markup language. Use
djot instead.
-
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.
-
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.
Used by perceptualdiff.
-
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, and was last touched
in 2012.
-
Gozirra is a lightweight Java (1.4)
implementation of the Stomp
specification. I haven’t used Java
in a decade, and Java hasn’t been lightweight in longer than that.
-
Sashay is an OpenAPI code generator for golang.
There are several better, more current, options available.
-
marcinator is a tool for managing software
releases and deployments. It’s named after an ops guy I worked with named Marc
Swingler – hi Marc! – to make deploying releases my team was producing. This
was long before Puppet et al.
-
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. Again, haven’t touched Ruby in decades.
-
TimeTracker is an Android app that helps
you record the amount of time you spend on activities. Very defunct.
-
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.