It’s a lovely sunny afternoon across Europe. Light clouds hover in wide blue skies, the temperature is warm but not hot, a perfect balance caught between the heatwave summer we have just endured and the icy grip of winter that is sure to follow. Ham radio folks have headed to hills and fields, to activate summits and parks, castles and bunkers, or take part in this weekend’s contests. DXpeditions are in progress in Africa, and the Pacific islands.
Spots flicker through the heart of a system designed to handle it all, pulling data from 70 different data sources, processing it, combining it, and serving it out to 50 direct users and another 80 third-party clients with who-knows-how-many users on the other end.

A year ago, Spothole was nothing.
Field Spotter supported five different data sources: POTA, SOTA, WWFF, WWBOTA, and GMA. It was getting increasingly difficult to query more data sources from JavaScript, and I’d found my first real blockers: I wanted to support HEMA, but their website didn’t use HTTPS, and ParksNPeaks, where the API didn’t allow cross-origin requests. I’d have to write some back-end code to proxy the requests, so that Field Spotter could access those APIs.
But if I was going to write back-end code, what else could I do that Field Spotter couldn’t do by itself? I could add a bunch more programmes. I could look up references from static lists. I could simplify Field Spotter a lot. I could make sure each user wasn’t separately hammering the upstream APIs.
It didn’t take me long to start coding; I think I’d made up my mind by the time I’d written that blog post anyway. 24 hours later, I made my first commit to the repo on 26th September. Support for all the programmes Field Spotter supported came the next day, and HEMA and PnP followed a few hours later. Three days after that it had a name, then a domain, and then on 17th October 2025 I announced it to the world.
Now, a year later, Spothole is more capable than ever. Alongside handling spots, it handles alerts about upcoming activations, DXpeditions and contests. It handles and displays solar conditions data. It augments spots with data from callsign and activity databases. The API was always fully documented, but it has recently gained a full set of online help. It offers deep integration with DX Cluster nodes, and now I run my own node as well. It understands 46 different activities, with the list growing all the time. Users can add their own spots and alerts into the system.
And the user base has grown too. 50 users and 80 clients hardly makes it the next Google, but who cares—this is a hobby project. 130 people like a thing that I made, and that’s pretty fulfilling! I’ve met people and made friends through this project that I never would have without, even activated parks and summits with them, and the list of thanks grows and grows. New installs crop up here and there occasionally; others taking my open-source code and doing what they like with it.
What a year it’s been.
Chart of commits per week to the Spothole codebase
And development isn’t stopping here. We are fast closing in on version 3.0, an update with a bucketload of improvements to the API around how we handle different activities. Support is rolling out for posting spots upstream from Spothole to more sources such as SOTA and WWFF. And there are plenty more feature requests on the issue tracker still to come.
So, thank you, to everyone who’s used Spothole or supported this project over the last twelve months. I couldn’t have done it without you, and I’m beyond proud to have been able to contribute a tool that so many people are finding useful.
Here’s to another year!
Comments