Things Get Surreal

dsp
FT8
Author

Rob Bryan

Published

July 5, 2026

So far…

I was detecting and decoding about 18% of the signals present in my recording.
The other 82%, I missed entirely.
So I went full-speed into learning how to use these advanced techniques for pulling signal out of noise:

NoteObservation

It took me a week to learn the concepts involved well enough to write working code.

At the end, instead of simply checking a candidate signal so see if it passes a check and throwing it away if it fails, I used belief propagation and low-density parity-checks to evolve the candidate signal into one that matches the energy profile that was transmitted AND passes the parity-check.

After some debugging, I ran my new code on the full 20-minute reference recording:

Before

2026-06-29 05:40:25,809 INFO: processing time 191 seconds.
2026-06-29 05:40:25,809 INFO: 3 minutes and 11 seconds.
2026-06-29 05:40:25,810 INFO: 18 matches, 95 missed.

After

2026-07-04 13:39:09,762 INFO: processing time 2450 seconds.
2026-07-04 13:39:09,762 INFO: 40 minutes and 50 seconds.
2026-07-04 13:39:09,763 INFO: 16 matches, 97 missed.

Analysis

The fact that it takes 12 times as long isn’t the killer.
It’s a lot easier to performance-tune a working function than it is to write an efficient one the first time, usually, so the timing, I figured, I could fix.

Finding FEWER signals, that’s bad.

Plan going forward

Up to this point, I have been guessing a lot and being close enough to right enough of the time that I kept moving forward, but I’m pretty sure I just spent a week solving the wrong problem, and I don’t want to do that again, so I’m going to spend some time measuring the lengths of all of my lists and printing the shapes of my arrays and double-checking my code in the places where I have made guesses in the past.

Late update

It didn’t take long for me to find places where my code wasn’t doing what I thought it was doing, at all.
Like, not even close.

WarningWhat I said out loud

“How in the world could I find and decode 18% of signals and still be this far off?”

So now I’m going line-by-line, looking for assumptions, adding logging, adding test cases, and verifying that I’m doing what I think I’m doing.