My Code

I've written a lot of tidbits of code over the years, mostly useful for me, but some may be useful for others.


The primary code project that I think is the most useful and I spend the most time on has its own page, it's called chatdb, and its primary purpose is putting IRC log files into a database and enabling a wide variety of queries and statistics for log analysis.


I had used Amarok for years and loved its dynamic playlists, but it hadn't been updated in quite a while and after some looking around decided to go with MPD.  However, MPD needs to be controlled by some kind of client so to recreate my beloved dynamic playlists I had to write something, so I did.  Using the stickers functionality in MPD and creating a 'rating' I was able to easily define ratings for songs and use them to create playlists.


Controlling radios remotely in amateur radio has a ton of benefits such as being able to automatically know the frequency you're on so you can log contacts, but also basic control of the radio such as frequency, VFO, mode, power, etc.  There are a number of programs that do this in Linux but I never found one that quite worked right or did what I wanted so I wrote a TUI called rigtool that does everything I want.  Displays the current frequency, mode, signal strength, power, VFO, tuning information, let's me change frequency, power, scan, etc.  I use it 24/7 and wouldn't be without it when playing radio.


Wrapper scripts around fscrypt to make using fscrypt transparent by automatically locking and unlocking fscrypt encrypted directories.


GQRX is an excellent SDR program for Linux (and other OSes) but it does not have any way to scan or log information about frequencies so I wrote gqrx-scan to fill in that gap.  It is able to scan a set of channels from a GQRX bookmark file, a CSV file, a frequency range, or just simply monitor a single channel or frequency.  It can log information on things it finds as well as record audio.  I often use it for antenna testing but I've also used it to record FRS or other activity around my house.

APRS Scheduler

To be documented:

Tuya Service

Tuya smart outlets can be easily controlled using the cloudtuya library and my simple script, tuyaservice.  You could call things from curl, scripts, browser, create web pages, or more complicated integrations to use it to turn your Tuya outlets on or off.  Other types of switches or querying of status are currently not implemented.

To monitor the temperature, disk space, and anything else I wanted on a Pi I use in an APRS node I wrote piblink which blinks an LED to indicate status.  The Pi is online and could easily email me, but there are times it might be offline or some other issue.  Plus it was a fun project to play with.


I often find myself wanting to look for unique versions of a file across my backups so I wrote lssnapshot to do that very thing.  It looks for all copies of the specified file and allows you to do comparisons, copy the file back to your normal disk, etc.

Misc tools

And finally a list of my smaller tools, but still useful things to keep out there.

Some scripts, settings, utilities to make good use of the MX Ergo in Linux (alerts for the MX Ergo in Linux via email, plus logging for information on how long the battery lasts)

Radioddity GD-77 related data, scripts, tools (create CSV files for the contact database for the GD77 for use with OpenGD77)

Sample init scripts for starting direwolf with hourly calibration for an SDR
tmux config files to share between my systems (some helper scripts to use an RTL-SDR as an APRS/Direwolf input)

Wrapper script to edit a file remotely over sshfs (used frequently, but a bit of a specialist tool for me)

A simple bash script that wraps around your editor of choice to automate git commits after an edit (still used daily, but not likely a tool other people use)

Records and correlates nick!user@host information for irssi (ie: fork of Stalker that I modified to write to a MariaDB database instead of SQLite)

Small color tweaks to cmatrix (including instructions on how to build cmatrix on modern GCC)

Old stuff

And some old stuff that I hang onto because I'm a digital packrat

Walking Man hack that a bunch of little men walk around on the screen. Amiga source code, plus XPenguins theme

OpenNap NG, Open Source Napster server

Filesystem snapshots using rsync and hard links to optimize speed and disk space (I used this for many years, it has since been replaced with restic)

Automated scripts to move spam around folders based on DSpam and Spam Assassin results (in use for almost 20 years, but likely better tools out there these days)