It’s a small web app that runs entirely in your browser, meaning no data ever leaves your computer. I believe in privacy, and since this could be done completely client-side, why not? (Plus, it saves me a bit on hosting costs)
You simply export your contest log (for example, from N1MM) as a Cabrillo file, drop it into the app, and generate a map with an animated timeline of your QSOs. Since you already have to produce this log to submit your contest entries anyway, this is meant as a fun little tool to visualize all your contacts after the event.
You can also share your map with others while all the data is encoded directly in the URL, so again, no data is sent anywhere. And if you’d like, you can generate a GIF of the timeline as well.
Note on GIF generation: Even though I spent quite some time trying to make the GIF rendering work flawlessly, I was unable to fully decouple the rendering from the browser resolution. The GIF will therefore use the current aspect ratio and zoom level, so you might need to play around a bit to get it just right.
Technical bits (for the curious)
The app is built using React and runs as a fully static site hosted on Cloudflare Pages, which makes it quite fast and serverless by design.
Under the hood you will find:
React Leaflet and Leaflet Geodesic for rendering the map and and connection geodisics
LZ-String for URL compression when sharing the maps
html2canvas and gif.js to capture and animate the timeline into GIF format
date-fns for handling timestamps and animation timing
Currently the app is not working! I am looking at fixing the data import!
Being unwell for a bit gave me time to indulge in some POTA and SOTA hunting. While the existing tools are solid, I’ve always thought it would be much better to visualize activations on a map instead of just working from a list. So, I decided to build an app to do just that: SpotMap.
How SpotMap Came to Be
The project started with me experimenting with the new agent feature in Replit AI, which made setting up the app quick and fun. It’s amazing to let AI do the heavy lifting. However, the cost of the AI agent ($25/month) combined with Replit’s hosting plans (even the cheapest ones) was too steep for a basic project. Hosting the app there would have set me back over $15/month.
Since I already subscribe to Cursor AI and have been using its tools for a while, I decided to migrate the project there and continue development. The system is built with a Node.js backend and a React frontend, for those interested in the tech details. I also managed to host it for free on Render.com, which is a big plus. I love finding free hosting solutions—for example, this blog is was hosted for free on Cloudflare Pages, so it doesn’t didn’t cost me a thing (Note from the future: I have since moved my blog over to a WordPress site so my hosting is no longer free).
Who Is SpotMap For?
SpotMap is designed for POTA Hunters and SOTA Chasers who want a better way to track activations. It’s intuitive to use, but here are some features you might not immediately notice:
Filtering Options: Easily filter activations by POTA or SOTA, as well as by band and mode.
Pinning Spots: You can pin a spot to keep it at the top of your list, whether you’re working from the map or the recent spots list.
QSO Logging: Log your QSOs by clicking the icon next to the pin button. Later, you can export your logs as ADI files to import into other software. All data is stored locally in your browser, so only you can see your QSO notes.
Color-Coding: The colors on the map represent different types of information. Check the legend (click the info icon in the bottom left corner of the map) for details.
Support the Project: If you find SpotMap useful, consider clicking the “Buy me a coffee” button to support its development!
Final Thoughts
I built SpotMap to enhance the experience of POTA and SOTA hunting, and I hope it becomes a useful tool for you. You can find a link to the tool on the top menu of this blog and if you have any issues or feature ideas, feel free to drop me an email at contact@lb1dk.no
Don’t get me wrong—I really enjoy the Xiegu G90, and I’m definitely not planning to part ways with it. However, my HAM shack recently welcomed two new members of the Yaesu lineage: the FT-710 and the FT-891.
Why the FT-710?
The primary reason for adding the FT-710 to my lineup was convenience. I got tired of constantly disconnecting and reconnecting the G90 every time I wanted to head out the door. I wanted something more permanent, with a bit more power under the hood.
After countless hours on YouTube and poring over reviews, my final contenders were the Icom 7300, the Yaesu FT-710, and the Yaesu FTDX10. I nearly scored a used FTDX10 for an amazing price, but it was snatched up literally before my eyes. Not long after, I stumbled upon a used FT-710, and moments later, it was on its way to my mailbox.
I’ve been using it for almost a month now, and I couldn’t be happier. It does everything I need and so much more—I’m still learning about its full potential. The advanced filters on this rig are game-changers and would have been incredibly handy during the recent CQ Worldwide Contest. Now, I’m practicing with the various filters and noise suppression features to be ready for the next one.
First power on of the FT-710Speaking of CQWW – here is me and LB5SH collecting as many QSOs we can from our club LA2T QTH
Unfortunately, winter isn’t doing me any favors. The 20m band is mostly closed in the evenings, which is the only time I can operate—and the only band I currently have an antenna for at my QTH. Living up north means daylight disappears around 14:30, leaving me with very little time for radio. Spring can’t come soon enough!
I do have a project in the works to build a spiral loop antenna for 40m. So far, my attempts at creating a variable capacitor have been unsuccessful, but I’m not giving up. I’ll definitely write about it here—whether I succeed or fail.
Why the FT-891?
So, why did I get the FT-891 when I already have a G90? Well, to be honest, I placed a bid on a used FT-891 and promptly forgot about it. A few days later, I discovered I had won the auction! No complaints, though—it was a happy accident.
A 100W portable rig is something I’ve been eyeing for a while, especially for POTA/SOTA activations. As frequent readers of this blog might know, I’ve been using a power amplifier (PA) with the G90 to boost my signal. While that setup worked okay, it had its quirks. For example, I noticed some unpleasant clicks in the radio when I released the PTT, which led me to suspect some reflected power from the PA back into the G90.
Additionally, the PA required heavier batteries, as it couldn’t handle the 4S LiPo battery I normally use for portable operations. Lugging those extra batteries made my backpack heavier than I liked. Now, with the FT-891’s 100W capability and compatibility with my 4S LiPo battery (and eventually the LiFePO4 I have on order), I’ve streamlined my setup and lightened my load.
Bonus: Mobile Activations
In other news, I’ve managed to get an Ampro 40m whip working on the roof of my car. This has allowed me to do some POTA activations right from the comfort of my vehicle. It’s been a game-changer for cold-weather operations!
I’m excited to explore these new radios and refine my portable setups over the coming months.
The weather started out beautifully—clear blue skies and a brisk 4°C. I was in high spirits as I parked my car and stepped into the sunshine. But while packing my gear, I realized I’d forgotten my windbreaker jacket! Even though the weather was pleasant at that moment, I knew worse conditions were on the way. Still, I wasn’t ready to give up, so I threw an extra blanket from the car into my backpack and set off.
Nice and sunny weatherThat is the destination. All the way up into the snow.
The hike began on a gravel road leading up to a cabin. As I walked along this forest road, more and more snow gathered on both sides. It wasn’t a heavy snowfall, but it was evident that the trees and bushes weren’t ready for snow so early. Colorful autumn leaves mixed with the white snow made for a beautiful sight.
oplus_1048608oplus_1048608oplus_1048608
Further up, the gravel road gave way to a hiking path, and the snow thickened with each step. The trail was just as steep as I remembered, but now with a colder bite to the air. Despite that, I worked up quite a sweat, and my heart rate was going strong.
oplus_1048608oplus_1048608
After about 45 minutes, I reached the spot where we had turned around last time. I rewarded myself with an energy bar and refilled my water bottle from a nearby stream. Then it was time to keep moving—up, up, up, into the snowy white rocks.
I kept a close eye on my map, feeling a sneaky suspicion that the summit might be less accessible than I’d originally thought. It looked like there were two summits—one was much easier to reach, but the other appeared taller and very steep. I didn’t want to get to the end of the path only to realize I couldn’t reach the true summit. But there was only one way to find out, and that was to keep putting one foot in front of the other. So I did, for another 45 minutes.
oplus_1048608oplus_1048608
Soon enough, the wind started to affect me. My fleece sweater did nothing to block it, and despite working up a sweat, the cold wind cooled me down fast. Thankfully, I found the ruins of an abandoned cabin, whose walls provided just enough shelter for me to put on all my remaining clothes. I also used the blanket as a makeshift cape, and at that moment, I felt a bit like a member of the Fellowship of the Ring. However, I was no Legolas, that’s for sure.
oplus_1048576oplus_1048609
The path seemed to go between the two summits, up a pass. My mood lifted when I realized I’d likely be able to reach the highest point without needing to climb any icy rocks. Just as I posted my second YouTube short, I noticed a yellow-painted cairn marking the summit! The climb wasn’t steep at all, and soon I found myself at the highest point in the area. I cross-checked with my GPS—confirmed, I was there! It was time to set up the radio and antenna and get started.
oplus_1048608oplus_1048576
I unpacked my gear and began setting everything up. As I did, I noticed dark clouds approaching, and I knew I had limited time before I needed to start my descent to avoid getting caught in a snowstorm without my windbreaker. With renewed motivation, I worked quickly, but in my haste, I managed to tangle my counterpoise wires, which I had to sort out while my fingers went numb.
oplus_1048608oplus_1048608Wind bent the antenna quite so
I checked the weather forecast—it was now -3°C. I positioned my backpack behind the cairn to get some protection from the icy wind. Then I tuned the antenna with my Xiegu G90 and hooked the power amplifier up to its batteries.
At that point, I realized I’d not only forgotten my windbreaker but also my pencil and paper! Fortunately, I had an app on my phone called HAMRS that I wanted to test, so that would have to do.
After a quick self-spot on SOTA Watch, I found myself managing a pileup. The app worked well, even verifying callsigns with QRZ.com, which helped ensure accuracy. The biggest challenge was typing on the on-screen keyboard with numb fingers.
Things went fairly smoothly, though I fumbled a bit due to the growing stress of those dark clouds moving in. Thankfully, everyone was patient and helped me through.
Unfortunately, I had to stop even though many people were still calling. I didn’t feel it was safe to continue, as I wanted to get off the summit before visibility dropped and conditions worsened. It felt rude to cut things short, but safety had to be the priority.
oplus_1048576oplus_1048608
The descent went smoothly—I only slipped once, thankfully onto a patch without any sharp rocks. It took me about an hour and a half to get back to my car. Though going downhill is easier, it’s still no small feat and takes quite a bit of energy.
Now, I’m back in my warm house, writing this up after claiming another first activator badge and earning the 1 km ascent badge, as the summit was 1,100 meters tall.
Again I spent a lot of time on the SOTLAS Map and been eyeing the summits that have zero activations. It happened that my family’s cabin is in an area that have quite few of those and I decided to get one of those this weekend while we were there. So off I went to Kopparen (LA/ST-217)
The weather was so so with a temperature of 8C and clouds, but that is also a perfect hiking weather for me. I packed my backpack and if I was ot estimate the weight it was about 10kg. At some point in time I will make a post detailing what I bring along on these longer activations, but for now a short list will have to do:
– KL 203 P portable PA that is modified to work on 20m and a 12V motorbike starter battery
– Rite in the Rain top spiral notebook and a Rite in the Rain Work Ready Mechanical Pencil
– Various cables, tools and other things to make the trip more comfortable
The hike up to the summit follows a 4.5km gravel road all the way up. There is an alternative route on the other side of the summit that is shorter, but a lot steeper and is a path and not a road. No vehicles are allowed on the gravel road and it is quite steep after the first kilometer. The first leg of the road goes through a forested area with a few cabins along the road. After a bit the incline started and the forest started to diminish.
First leg into a forested areaRoad starts to climb and I see the destinationGetting closer
It was then I remembered I forgot to bring anything bu a 0.5l soda bottle, but luckily about half way up there was a small stream where I could refill it. I prefer to bring a lot more than 0.5l of drink when hiking – but turning around was not an option for me.
Filling my soda bottle with water from a stream
After a half way break where I filled up the reserves with an energy bar, the road became even more steep and my heart rate spiked at 150 at times. Great cardio exercise for sure. There were a few other people going up and down, but not everyone were as red faced as me…
This does not look very steep on the picture, but I assure you that it wasPanorama view close to the top of the summit
On the top of the summit there are a huge radio tower operated by one of the national telecom companies and a not-so-secret military radar installation. I sat up my vertical antenna and its counterpoise wires and got it adjusted to 20m. I love that it gets a SWR of 1.0 without using the G90 tuner – which in turn means I can use my little PA without any SWR issues. I did a test call with a person from the Netherlands (unfortunately I forgot to note the callsign). Then I tried to reach some fellow Norwegians that I was chatting with on Discord, but seems like we were inside the skip distance so no contact possible there.
Radio up and running with the antenna i in the background. It started to drizzle.
I self-spotted on SOTA Watch and seconds later I had a pileup to manage. However, this round I did not have the luxury of getting help from Stian [LB5SH](https://lb5sh.no/) and his 9 years of experience running multiple DXpeditions and thousands of QSOs. So that meant it was all up to me!
I must admit it is both exciting and frightening to have 5-10 people call you at the same time. Exiting bit is that everything is working and I am able to reach out to people and get the activation in the logbook. The scary part is that I want people to have a good impression of me, and have a good experience chasing my activations so they will come back later. Luckily I feel that most HAMs out there are very patient and understands that someone are new to the hobby and need a bit more time to get things sorted and noted. Usually it takes me a couple of tries to get their callsign correct. Especially if their callsign does not follow the usual 2 letters, 1 number, 2-3 letters format. I am also not very familiar with the country suffixes and that sometimes gets me a bit confused. However, as many other things in life, this will only improve with time.
After an hour or so the QSO intervals veined and my hands were quite cold. At some point it started to rain as well, so I had to improvise a some cover for the radio and the PA. It would be great if I could dome up with some kind of mini tent or shelter that I can setup that does not weigh too much. But that is on the wishlist for future activations. Anyways, I decided to pack my stuff and return from the summit. I got in a couple more QSOs while packing and the end result was 31 QSOs in about one hour. I am very happy with that.
I also got a summit to summit activation and this is something I must remember to chase when I am setup. I need to dedicate some time at the end of the activation to look at the spots and try to make some summit to summit QSOs.
The hike down went fairly smooth even though my legs felt the number of steps accumulated though the 9km walk.
After the not so successful but half way there trip this weekend I still had not scratched my SOTA itch for the week. Looking at the map my eyes were drawn to another local hill that should be rather easy to climb and get an activation in the pocket. Today it was Solesmvåttan, LA/ST-012 that was on the menu. Its not as tasty as the other summits with its single point, but one is better than none.
I dialed in my batphone and, yet again, summoned Stian (LB5SH) to join me as a two-legged companion.
In my backpack I packed my trusty Xiegu G90 powered by a 8000mAh LiPo, KL 203 P portable PA powered by a motorbike start battery and my favorite antenna combination of a PAC-12 7MHz-50MHz antenna with a 5.6m whip antenna The SWR of the antenna is 1.0 on 14mHz and after changing the patch cable between the G90 and the PA we got that to 1.0 also. SWR between the radio and PA was previously above 2 and it turned out it was a bad cable. Lesson learned; don’t trust your cables.
Stian went first and even before I managed to add a self spot on Sota Watch QSOs started puring in! We took turns on running the radio for about an hour and we ended up with 74 QSOs combined between the two of us. Stian got most as I still struggle with managing the pileup and getting the callsigns correcly at first try – hopefully that will improve with time and experience.
We packed our gear and returned from the hill in order to try to catch the lcoal soccer match (result 1-1, by the way. Not great…)
Now I am back at staring at the sota map and plan out my next activations before the snow and winter will add to the challenges.
It was more of a climb that I thought it would be.
For a while now I have been staring at the Sota Maps and especially eyeing all the summits that have zero activations. There are quite few within my area, and it is really cool that I can potentially be the first to activate them. Some of them require quite bit of effort, but some are not that hard to activate. Some of the summits I have already been to before my SOTA career started!
So this morning I packed my backpack and started my car setting my destination to one of those “virgin” SOTA summits. I also brought my four legged companion, named Zelda (1 year old Shiranian), to see if she would be able to accompany me on a SOTA activation.
After driving for 1.5 hours we parked the car and donned the backpack. Its quite a bit heavier with two batteries, Xiegu G90 and a 100W PA. The PA is a KL 203 P that is modded to have a small fan and somewhat able to run 14MHz (not fully 100W though.)
It started great with nice weather and a cool breeze to keep us from overheating. Zelda got to meet some cows for the first time in her life (they were quite scary according to her) and we had a chat with the local farmer.
oplus_1048608
However, after about 20 minutes of walking my four legged companion started to feel the climb and hinted at that it was time to turn around and go back to the car. Unfortunately that was just a quarter of the way we needed to walk and the climb had not even started for real yet. After some encouraging words and goodies she reluctantly continued onward.
We continued for 40 more minutes before she just sat down and refused to move – regardless of encouragement and bribes. When we sat down she climbed up into my lap and I understood that the activation was a dud and we had to cut the hike and return to the car.
Obviously I was not excited about this, but I don’t want to push my fourlegged friend more than she is comformtable with either. And since this was her first longer hike it also was kind of expected.
So I learned not to bring Zelda on my SOTA activations – at least not those that require more than an hour of walk. Hopefully the weather will keep next week and I can give this another go.
Side note I also discovered that the HF propagation were horrible today due to solar flares and the heavy northern lights activity so I would probably ended up with 0 QSOs anyways. So I guess, in a way, she did me a favor 🙂
oplus_1048576Second leg was more of a path up the hillHere but no further. We turned around when got half way up.Northern lights taken from the driveway of my house the night before.
For my second SOTA activation I decided to try something new. Liaåsen, LA/ST-011 is a small hill just outside Trondheim, Norway with a transmitter mast on top. It’s a popular location for hiking and quite popular with SOTA hams. I have been there before, but for other reasons than SOTA. My previous activation I used a PAC-12 7MHz-50MHz antenna from Aliexpress and it worked okay, but it was quite narrow banded and I wanted to remedy that. In my box of radio stuff I had a 5.6m whip antenna that would be the perfect length for 20m. Since its segmented it would also allow me to easily do 17m and 10m. Very fortunately there was a bench we could install ourselves and the equipment on.
After adjusting the length using my trust NanoVNA the Xiegu G90 from Radioddity I did not even need tune antenna as the SWR was 1.0 across all of the 20m band! I was very pleased with that. That means I probably dont need to bring all of the PAC-12 kit with me unless I want to so 40m. I also started on a 3D-printed base for the antenna using some hardware from the local hardware store – but that will have to wait for another day.
Then we let the action begin, and on the very first CQ call I got a QSO even before I spotted myself on SOTA watch! DJ1HAM was my contact and we had a short but nice QSO on 20m SSB. Then the contacts started pouring in and since I am very new at this I got som help from Stian LB5SH to decipher and note down the call signs. This is definitely something I need to work on improving, but it will come with time and practice. After 30 minutes I had 26 QSOs in my log and Stian asked if he could have little go at the radio. Obiviously it would only be a couple of minutes since it started getting dark and we had to return from the summit soon. Obviously.
However, he also started to get pileups and the he got hooked! It was really fun and a great learning experience to watch a much more experienced operator work the radio. After 15 minutes we took a short break and hooked a linear amplifier into the signal path to see how that would work. We did not have a power meter so we are not sure how many watts it was transmitting on, but somewhere between 50 and 70 is my guess. This little amplifier helped us reach even further and combined with the greyline even more pileup happened and Stian was working stations like a pro! Half an hour later he had a log of 36(!) QSOs! It was then time to call it as it was getting quite dark, and we had to leave quite a few still calling for us. Sorry about that, but safety first!
Happily we returned without too many challenges and we are ready for the next SOTA adventure!
I’ve decided to start a blog to document my exploration and learning around being a ham radio operator.
There are many reasons for this, but the main one is that I want to have a central place to collect my thoughts and ideas around the subject. I’ve been learning a lot, and I want to have a place to collect and share my knowledge.
I just got my license this summer, and I’ve already learned a lot from people on youtube, local people in my local club, and online communities. I’ve also been experimenting a lot with antennas and how to use my previous experience with 3D design and 3D printing to see how these two hobbies can be combined.
This blog is the first step in my journey to share my knowledge and experiences with others. I also hope that it will be a resource for others who are interested in learning about ham radio.
I’m still trying to figure out how I want to use the blog, but I’m thinking that it will be a combination of a journal, a documentation of my learning, and a collection of resources. For sure it will be a way of documenting my SOTA activations, but I also want to write about other things that I find interesting.
I’m excited for what the future holds, and I’m looking forward to sharing my journey with you.