I work on a variety of projects. Most are in Go, but I could have used Rust if I liked it more; they both tend to compile statically linked stand alone executables.
Most relevant to the discussion is Claptrap, a flags library for Go that has no external dependencies and could be imported into a project my copying one file and changing the package. I deal with added functionality with additional, optional, packages that can be imported to add features like conf file support, env var support, man page generation, pretty printing, etc. Each package used adds another dependency, but they’re each optional and relatively small, readable (I hope!) and auditable. I wrote Claptrap after changing flags libraries something like 5 times with each new project because there was something I didn’t like about the last one I tried. I even did an analysis of dependencies and code complexity on about two dozen different popular options.
Then there are a bunch of little tools I use daily. One’s Legume, which is a distributed ticket tracker based on code comments. No external db, no external service, relies entirely on standard code commenting conventions developers have been using for decades. Again, single executable, and it’s pretty fast. It’s not the first such tool, but I think it’s the best.
I have several other little tools I use daily. I have what I think is a really nice set of scripts and zsh functions based around todo.txt files. The main one is tdp, which provides a bunch of functions for doing executive lists, accessing special todo files more easily, and interacting with then through fzf; that may be the set of tools I use the most throughout the day, but it’s not really packaged for release or especially well documented. I rely heavily on todo.txt.
I’m the maintainer for gotop since the original author abandoned Go for Rust. I’ve not been spending a lot of time on it because it needs a refractor and I haven’t found the energy for it, and there are so many good alternatives. That project is all dependencies, so nothing minimal about that.
There’s a really rough TUI SMS chat app I’m writing called dsms, because I hate communicating on phones. It relies on two programs to be running on your Android phone, because there’s no app that both forwards SMSes and allows sending through an API call, so it’s kind of a pain and nowhere near ready for primetime.
And I recently wrote a CLI tool called dvalv for encoding and decoding files encrypted with the Android app Valv (which I _didn’t_write), so if you SyncThing your Valv directory to your desktop, you can decrypt and access your files there.
And I have a really obtuse, byzantine set of tools for taking a resume.json file and generating Word, ODT, HTML, Markdown, and pdf (via Typst) output, via a couple of different templates. The projects unimaginatively called “resume”. That’s entirely for myself, but it someone wants to use it, I’d be happy to walk them through the process of getting everything set up to do so. It uses a couple of very nice templates that I patterned after a couple of professional career councilors. The repos isn’t up to date; I need to push some changes, but since I’m positive I’m the only user I haven’t made it a priority.
A tool I’m extremely happy with and use maybe even more than tdp is rook. This one I did announce on Lemmy. It’s a sort of headless secret store backed by a KeePass DB, and it’s one of the most useful tools I’ve written recently. Rook’s in both AUR and Alpine testing.
There’s a little busybox-compatible Lua script for DD-WRT routers that’ll shuffle and pick a VPN exit node from ones stored in the router; I use it to hop my exit node once or twice a day via a cron job. I use Mullvad and there script might have some assumptions built-in that won’t work for non-Mullvad accounts, but it’s not exactly rocket science.
I forked a lightweight, pure-Go DB project and did some substantial modification, and called it leaf. These sorts of DBs are a dime a dozen, but this fit my needs, which included being usable on programs cross-compiled for mobile devices.
What’s taking all my time lately, though, isn’t my project. I’ve been doing a lot of work on stmps, which is a hard fork of stmp, which is a Subsonic TUI client. I’m doing things like adding album art and synchronized lyrics support, bug fixes, and so on. My dev branch there is called “xxxserxxx”.
All of these are actively developed, if not necessarily getting a lot of commits. I fix bugs as reported, and make improvements as needed.
Thanks for asking!
I work on a variety of projects. Most are in Go, but I could have used Rust if I liked it more; they both tend to compile statically linked stand alone executables.
Most relevant to the discussion is Claptrap, a flags library for Go that has no external dependencies and could be imported into a project my copying one file and changing the package. I deal with added functionality with additional, optional, packages that can be imported to add features like conf file support, env var support, man page generation, pretty printing, etc. Each package used adds another dependency, but they’re each optional and relatively small, readable (I hope!) and auditable. I wrote Claptrap after changing flags libraries something like 5 times with each new project because there was something I didn’t like about the last one I tried. I even did an analysis of dependencies and code complexity on about two dozen different popular options.
Then there are a bunch of little tools I use daily. One’s Legume, which is a distributed ticket tracker based on code comments. No external db, no external service, relies entirely on standard code commenting conventions developers have been using for decades. Again, single executable, and it’s pretty fast. It’s not the first such tool, but I think it’s the best.
I have several other little tools I use daily. I have what I think is a really nice set of scripts and zsh functions based around todo.txt files. The main one is tdp, which provides a bunch of functions for doing executive lists, accessing special todo files more easily, and interacting with then through fzf; that may be the set of tools I use the most throughout the day, but it’s not really packaged for release or especially well documented. I rely heavily on todo.txt.
I wrote a keep-a-changelog generator for Mercurial projects. It’s not as fancy as git-cliff, but it does the job.
I’m the maintainer for gotop since the original author abandoned Go for Rust. I’ve not been spending a lot of time on it because it needs a refractor and I haven’t found the energy for it, and there are so many good alternatives. That project is all dependencies, so nothing minimal about that.
There’s a really rough TUI SMS chat app I’m writing called dsms, because I hate communicating on phones. It relies on two programs to be running on your Android phone, because there’s no app that both forwards SMSes and allows sending through an API call, so it’s kind of a pain and nowhere near ready for primetime.
And I recently wrote a CLI tool called dvalv for encoding and decoding files encrypted with the Android app Valv (which I _didn’t_write), so if you SyncThing your Valv directory to your desktop, you can decrypt and access your files there.
And I have a really obtuse, byzantine set of tools for taking a resume.json file and generating Word, ODT, HTML, Markdown, and pdf (via Typst) output, via a couple of different templates. The projects unimaginatively called “resume”. That’s entirely for myself, but it someone wants to use it, I’d be happy to walk them through the process of getting everything set up to do so. It uses a couple of very nice templates that I patterned after a couple of professional career councilors. The repos isn’t up to date; I need to push some changes, but since I’m positive I’m the only user I haven’t made it a priority.
A tool I’m extremely happy with and use maybe even more than tdp is rook. This one I did announce on Lemmy. It’s a sort of headless secret store backed by a KeePass DB, and it’s one of the most useful tools I’ve written recently. Rook’s in both AUR and Alpine testing.
There’s a little busybox-compatible Lua script for DD-WRT routers that’ll shuffle and pick a VPN exit node from ones stored in the router; I use it to hop my exit node once or twice a day via a cron job. I use Mullvad and there script might have some assumptions built-in that won’t work for non-Mullvad accounts, but it’s not exactly rocket science.
I forked a lightweight, pure-Go DB project and did some substantial modification, and called it leaf. These sorts of DBs are a dime a dozen, but this fit my needs, which included being usable on programs cross-compiled for mobile devices.
What’s taking all my time lately, though, isn’t my project. I’ve been doing a lot of work on stmps, which is a hard fork of stmp, which is a Subsonic TUI client. I’m doing things like adding album art and synchronized lyrics support, bug fixes, and so on. My dev branch there is called “xxxserxxx”.
All of these are actively developed, if not necessarily getting a lot of commits. I fix bugs as reported, and make improvements as needed.
Here’s a full list; nearly all my projects are on Sourcehut.