HOME SHACK
Fixed station. Full power, full bands, and the wire that takes itself seriously.
- RIG
- Icom IC-7300
- PWR
- 100W HF
- ANT
- Hustler 5-BTV vertical
KF8EJM
licensed amateur radio operator · bit by the POTA bug · digital mode enthusiast · linux native · self-hosting advocate
parks on the air · portable HF · digital first, SSB always
General class. Based in Hazel Park, Michigan (grid EN82). Most of my air time is HF digital — FT8 is the daily mode and CW practice on the side. Parks on the Air motivates me to get out and take the long way home on trips.
Find me on the air or look me up: pota.app/KF8EJM and qrz.com/KF8EJM.
Three configurations, picked by the kind of day it is.
Fixed station. Full power, full bands, and the wire that takes itself seriously.
G90 in the Ranger. Default config keeps a 20m Ham stick on the mount — FT8 from anywhere I can park.
Full-portable go-kit. Pack holds rig plus battery — walk in, deploy a wire, you're a station.
Different problems, different wire. The Ham sticks work great until they don't — then a bigger antenna comes out of the bag.
FT8 is the daily mode. WSJT-X on the Lenovo T480 (Arch Linux, of course) does the heavy lifting — GridTracker2 is a must for tracking and logging. JS8Call is a curiosity and I have jumped in a few times. Not a regular thing.
For portable, the laptop has hotspot when available. Sometimes thats just not possible. Like Death Valley. so I wrote a small Python app that polls a USB GPS dongle and sets the system clock from $GPRMC, calculates the Maidenhead grid from the fix, updates the clock with chrony and sends the UDS packet for grid to WSJT-X. By the time the radio is warm, the clock is right and the grid is set. No fiddling — just deploy and operate or drive and stay correct.
Confirmed contacts with parks in five different DX entities. Long-haul propagation putting in the work.
100 unique POTA reference areas worked as a hunter. The first triple-digit hunter milestone in the books.
20 unique reference areas activated — not just worked. Each one a setup, a CQ POTA, and a logbook full of contacts.
Five POTA entities activated inside a single UTC day — US-9425, US-9432, US-9486, US-1944, US-0483. A roving day with no idle time.
Hunter award for the April 18–19 UTC weekend event. A whole weekend of working activators across the program.
the oldest mode · still works when nothing else does
Working on copying speed. It's a long road but a good one — the lower HF bands still belong to Morse, and there's no faster way to make a contact when conditions get rough. The plan: drill characters to the point of reflex, then move to real on-air copy. Sending comes after the ear catches up. I plan to setup one of the ultimate cheap portable rigs. The tr(uSDX) and the spooltenna.
Character and word drills with Koch progression. Send and receive practice with adjustable WPM. This is where the reflexes get built, two characters at a time.
The on-air style copy trainer. Once the characters are solid, this is where they get tested against real CW pacing — Q-codes, callsigns, RST exchanges, the whole rhythm of a contact.
I have embraced the hated AI coding. I wanted a CW trainer that meets my needs so I created it. It has the usual Koch Farnsworth method but also has random call signs and mock conversations.
A modified build of Lou VK2IDL's open Morse Code Sender V2. The original is a transmit-side tool — text in, keyed Morse out. I'm adding the other half: audio in, decoded text out. Adding a couple components to get both directions.
The goal is a single bench box for off-air practice that can also sit alongside the rig and help with copy when the headphones aren't enough. Code, schematics, and notes will land in GitHub when it's stable.
ORIGINAL SENDER · VK2IDL · ham radio & electronics projects
running on a homelab · open source where possible · own your data
Self-hosted proxy for breaking through soft paywalls — read the article, skip the spotlight overlay.
access serviceRecipe vault and meal planner. Import from any cooking site, scale ingredients, plan a week of dinner.
access serviceFront-end for running local and remote LLMs. Chat, RAG, tool use — all self-hosted, no SaaS lock-in.
access servicePersonal git forge — repos, issues, CI. Where my projects actually live before they go public.
access serviceA self-hosted aggregator. The open web still has good things — RSS is how I find them without the algorithm.
access servicetools, tech, and what I do when I'm off the keyboard
A non-exhaustive list of the things I build with, hack on, ride, and break regularly. Snapshot of the rig — not links, just inventory.
on the air, on the net · pick a band