New Tool: Mizule

I want to do better about switching out the BURP backup disks, so I need something to remind me. A calendar event might work, but if I forget to do it on the day it's scheduled, I won't get another reminder until the next scheduled date.

I decided to write a simple program that checks the UUID of the filesystem mounted at /var/spool/burp and generates a notification if it has not changed for some time. This way, if I forget to do it on the scheduled date, it will keep reminding me until I do.

I wrote the tool in Rust, because it is very simple and I have been looking for a project to help me get motivated to learn Rust more. It took about 12 hours start-to-finish.

Aside from my lack of familiarity with Rust, probably the most difficult part of the project was getting it to reliably send email notifications! At some point, I realized that nullmailer wasn't running on my desktop, and hadn't been for quite some time! When I started it up, it had so many messages queued up (from cron, etc.), that Protonmail put a rate limit on my email account! This made it difficult to test Mizule's email capability, since I couldn't actually see the messages it was sending, only that it had sent something according to the Postfix logs.

I am going to look into some other options for sending push notifications. So far, I have found Firebase Cloud Messaging, Google's "offical" push notification solution, which naturally requires a Google account, Google Services Framework, et. al. I also found Gotify, which just uses a WebSocket. There is also notify.run, which uses the Web Push API (browser based), and signald, which sends messages to Signal. XMPP may be an option as well.