Passing messages via the ARRL National Traffic System (NTS) has recently caught my fancy. If you don’t know anything about it, you should take a look at the NTS page on the ARRL website. In short, it’s a network of hundreds of ham radio operators that tirelessly meet multiple times each day on local, regional, state, and transcontinental “nets” (conference calls on the radio) to pass traffic around.
Back before email and unlimited long distance, you could go to your neighborhood ham and give him a message for your mother across the country. That ham would insert it into the system and all the hams in between would pass it along until it reached the proper area, at which point a ham local to the recipient would deliver it in person, by mail, or phone. Nowadays there is not much real traffic to pass, but all the involved radio operators still meet multiple times a day, 365 days a year to practice and keep the system oiled and working. If we were to ever be set back to the stone age (communications-wise) the hams would be ready to pass a large volume of messages.
Anyway, it’s very important to be able to copy down the message into the proper form, which is an ARRL radiogram. You can certainly do that by printing hundreds of those forms and copying by hand, but that gets wasteful and is hard on your writing hand (I type much faster than I write). For a while, I was copying the messages into a plain text file and then quickly counting the words for the checksum manually, but decided that was rather silly.
So, I decided to see if I could write something in elisp to help me out. I’ve never written anything like a major mode or user interface, so it was a learning experience. I was successful in writing nts.el, which gives me a fillable form that helps correct the format, validates the checksum, and records the received and sent timestamp automatically. It also helps me manage the messages by keeping them organized into “Active” ones that need to be passed along and “Completed” ones that have been handled and need to be archived. It looks like this:
I don’t expect there are many Emacs users that also participate in the NTS system, but if so, feel free to take a look at the code.