Adding Canada Support to HamCall.dev
For this latest installment of my journey through Ham Challenge, I'm taking an early look at Week 26!
Make a contribution to an Open Source ham radio software package. This does not necessarily have to be a source code contribution! You can suggest a documentation improvement, file a bug report, submit a feature request, or if you're out of ideas, make a donation.
As I previously mentioned, I'm working on a ham radio logging program in Golang and recently added Callsign Lookup functionality to it. I'm not a big fan of the idea of buying an XML Subscription to QRZ for this project, so I turned to a fellow Ham Radio Village member's project - Hamcall.dev.
HamCall.dev is an open-source callsign database with a simple premise - rather than storing everything in a local database, it generates static JSON files uploaded to Backblaze B2 and accessed through a single-page application and some straight-forward Javascript. But, it originally is designed to work just with US amateur radio callsigns and what the FCC publishes of the ULS regularly.
I work international, so when I saw an open issue mentioning that ISED in Canada publishes the data themselves, I was thrilled and hopped on the idea. I started out writing some very sloppy code to implement it, but the concept was straight-forward - download their zip file, unzip and grab the English text file, go through it line by line and add calls to a slice to be sent off for the JSON files.
After having some other HRV members review my code and catch some inefficiencies and spots where I can save a ton of memory, and figuring out how to display license classes based on their odd formatting of the txt file (took me too long to realize there was a README...whoops), I had a working implementation! I was also suggested to add unit tests, so no one has to go back and do it later, so I added those as well.
As of today (12-March-2025), my code is merged and Canadian callsigns published by ISED are now available for lookup on Hamcall.dev! I'm glad to have made a decent contribution to the project, and look forward to doing some additional work - this helped me learn a lot about Go so I want to keep the momentum rolling!
To finish out this post, I want to provide some cool open-source radio projects to contribute to when others are looking to complete this challenge:
- pat is a Winlink client that is built in Go, designed to be cross-platform. As a Mac user, this is one of the few ways I can mess around with Winlink and keeping this project going is really important!
- nanovna-saver is an archival tool and visualizer for NanoVNAs in Python. This is really cool to me because the screens on NanoVNAs are too tiny to really examine in fine detail!
- ragchew.app is a web interface for Netlogger that is really handy for viewing net information from any device!
- MorseRunner Community Edition is a fork of MorseRunner that is shaping out to be a great CW training tool!
73s, and good luck to all those continuing to participate in Ham Challenge!