A partial list of software I've developed.
Miscellaneous C++ classes and programs, this library has been used in nearly all of my projects of the last 20+ years. Dwm::IO is the main thrust of the package. It also includes a simple unit testing framework.
Library documentation can be found here.
C++ classes for secure, authenticated TCP communication. This is a replacement for libDwmAuth. Uses libsodium, boost::asio and libDwm. Uses XChaChaPoly1305 for encryption and Ed25519 keys for identity verification.
Library documentation can be found here.
A C++ DNS resolver library. Originally developed in the year 2000 as just 'Dns', I recently revived and refactored it to make it easier to add new resource record types and added EDNS support and TCP fallback. Today it's an alpha-quality release, but there's a decent set of unit tests.
Library documentation can be found here.
A simple command line utility for obtaining a rough count of lines of code and comments in many programming language source files. It is primarily targetted at C++ projects, and in my experience is more accurate than other tools while being on par with the fastest tools.
Up-to-date information can be found in my github repository here.
A meshed host and network service monitor. A daemon runs as both a client and server on each of the 7x24 hosts in my home. They communicate with each other over authenticated and encrypted connections, and a client may connect to any of them to fetch current alerts. mcrover is capable of monitoring local services (filesystems, ZFS pools, default route, DHCP guests in my ARP cache, bandits in my ARP cache) as well as network services (DNS, any TCPv4 service, RPC services such as NFS, SMTP, nutmon (UPS), HTTP and HTTPS).
There is a terminal client which shows active alerts (or ASCII art if there are no alerts), and a Qt-based client which shows active alerts or the weather forecast and radar map if there are no alerts. In my home, I have a Raspberry Pi 4 connected to a 24" monitor that runs the Qt-based client 7x24 in my office. This allows me to see problems on my home network or Internet connection and services I use at a glance.
Here's a screenshot of the Qt client when my broadband Internet connection is down.
Here's a screenshot of the weather forecast and current conditions.
Here's a screenshot of the weather radar.
And a movie of some of the ASCII art in the terminal client when there are no alerts.
A small suite of tools implementing RDAP, with a secure caching server that keeps country codes per IPv4 prefix. The server automatically updates entries more than 90 days old, and can be bootstrapped from ipdeny.com or GeoLite2 data. Secured using libDwmAuth. Used by mcblock, this package is targetted at IDS/IPS applications that wish to map IPv4 addresses to country codes.
Library documentation can be found here. Manpages for the server are at dwmrdapd(8) and dwmrdapd.conf(5). Bootstrap programs for the server data include geolite2db(1) and ipdeny2db(1). A simple client of the server, dwmrdapc(1), is included in the package.
Automated pf (packet filter) table manipulation and TCP connection termination in real time. Applies per-country, per-table policy. This has relieved me of many hours of system administration work per month; those attempting to break in via ssh, IMAP/TLS and http are thwarted quickly, and unlike most other solutions, I have control over the prefix width and duration of blocking via policy configuration so my pf tables don't explode in size. Client/server using libDwmAuth, which allows all of my machines to contribute to the security of my home network.
Generated library documentation can be found here. There are manpages for mcblockd(8), mcblockd.conf(5), mcblockc(1) and mcblocklog(1).
A C++ library providing a simplified interface for authentication and encryption. Uses ECDH for initial key exchange, 2048-bit RSA keys and signatures for authentication (deprecated, now using ed25519), and AES128 for encryption (deprecated, now using XChaCha20Poly1305). Used by dwmrdap, mcblock, mcrover and mcpigdo.
Generated library documentation can be found here. There is a manpage for the dwmauth(1) utility.
A garage door opener based on a Raspberry Pi running FreeBSD, a custom hardware HAT I designed, magnetic switches, rotary encoders, pushbuttons and LEDs. Secured with libDwmAuth, uses multicast for status, and has a secure web page (using Wt and C++) to check the status and open/close my garage doors. I developed a FreeBSD device driver to handle the rotary encoders. It's been running since August 21, 2016 with no issues (and zero downtime thanks to being powered via PoE from a switch that is on UPS).
There are some personal blog entries on the project at mcpigdo blog entries. There's a snapshot of the HAT layout at layout1_0.png and random hardware photos in my gallery here. There are manpages for mcpigdod(8), mcpigdoc(1) and mcpigdowatch(1). Documentation for the tiny client library is here.
There is also a Qt application for the desktop, and an iOS app. The Qt application and the web application look very similar, as seen in the video of both on my desktop below. I have since fixed the day/night scene handling in the Qt application.
My replacement for the obsoleted gallery3 software. All C++, this was my first 'big' project using Wt. Supports drag and drop upload, drag-and-drop organizing, photo captioning, automatic photo orientation and manual photo rotation. Visible at rfdm.com. A video below shows the creation of a new album and drag-and-drop upload of 5 photos from Aperture. Since the server is on my local LAN, it's very fast. Much faster and more reliable than gallery3 uploads, and the drag-and-drop can accept URI sources (so you can drag and drop a photo from a browser window, for example).