Thank you for pointing that out.

I have added a disclaimer to the repository:

This is AI-generated code. The developer has a neurological condition that makes it impossible to use and learn traditional programming. The developer has put in a significant effort. This code might not work properly. Use at your own risk.

This code has not been reviewed by professional coders, it is a large task. If there are tests available in the codebase, please review those.


Den 13.12.2025 13:32, skrev Marcus Müller:
Hey Håken,

>  From what I can tell of the code, it is not "toy code ".

But that's the whole thing here: No matter whether you yourself can tell, it really is toy code. Your "hard decision decoder" is not a decoder at all, your cryptography is broken beyond what an LLM can randomly repair based on feedback from a third party and so on.

I like that you use the wording "toy code". I think what is happening here is that you're toying with LLMs to generate code for you, and you're considering that a good entertaining way of building something. And: I somewhat get it! That's a cool way of experimentation! I think you might benefit more if you did *smaller* things, because clearly, the code you generate isn't understood by you (to a very large degree, at least).

And: you do have to realize that I, and others, looking at the forks of project on your github account, do need to read your code when you send PRs, and that if you publish a project like this, you are actually harming people who think it works. It doesn't, and specifically you throwing broken cryptography into projects endangers people who would actually rely on it.

That's why I'll have to say this:
I do value every would-be contributor to the GNU Radio project, including you! That's why I so enthusiastically replying to your first email. But when you do a "Feedback Request", that's a big ask. That's actively sinking hours. I've been contacted by **multiple** developers who now also have looked at your code. That means you burned through a couple Thousand norse kroner worth of "consulting" time, if you want to think of it in monetary terms (I prefer not to).

So please don't be sad if I say this:

Dear Håken,

your code is autogenerated and doesn't do what you think it does. SDR is a rich field, and it requires not only writing of code that looks plausible and works on the tests that the same machine that wrote the code adds when you ask it to add tests.
It actually requires understanding what you're implementing there.

Your email read plausibly much like you understood a bit of what you're doing. I understand now that this "sounding plausible" was me falling for the usual "LLM-generated confidence" trap. That's on me – I just wasn't expecting it on the mailing list.

So, I do apologize for the harsh tone, but will insist that you understand that sending code for review that you didn't have the time or capacity to **fully** understand yourself is not a *contribution*, but a *detraction*.

I don't think you realize that. But in the GNU Radio project, I merge no code at all that I haven't *fully* understood (there is exceptions, if someone who is trusted by the project knows the specific area better, I can defer understanding every single line to them, but no line goes into the code base that isn't understood). If you don't understand (not even having written it) the code you're sending, then I still have to. That means you asking an LLM to write 1000 lines of code in a few hours is going to cost an actual expert more time than you spent on this to review stuff.

That is not sustainable, especially because you generate code you don't actually seem to have need for yet, you just want to "wish it into existence", and LLMs betray you into believing they can do that for you. But they just make you take useful human time.

Best regards,
Marcus



On 2025-12-12 6:29 PM, Håken Hveem wrote:

Sorry.  I never intended any harm.  I use AI assisted programming due to a neurological issue, it makes it impossible for me to program.
At least I know how to use the tool  correctly and test it.
 From what I can tell of the code, it is not "toy code ".


Den 12.12.2025 17:25, skrev Marcus Müller:
Hi Håken, dear Community,

oh no, I just got an LLM-generated reply to my (high-effort) reply to this email, and realized this is the same user that tried me to get a vibe-coded cryptographic module(!!!) merged upstream, then didn't even understand that no matter how much automatedly generated fuzzing you throw at things, if that doesn't actually test functionality, it's worthless.

Ok, not going to bother with this module or your code in general anymore. Taking my email and pasting it into a chatbot to give me, in a single email,

- "You're right to be curious",
- "You're exactly right about the trade-off.",
- "You've identified a real issue!",
- "You're correct",
- "You're absolutely right",
- "You're right to question it."

That degree of unmitigated LLM appeasement bullshit is not only sad, that's actively insulting to me. Sorry, I can't put this in any nicer terms. You're sending an email with questions, and once someone answers them, you take their reply, without having asked them, feed them into an LLM, spending about none effort on understanding the answers you've gotten at all, and send the reply to me, *as if that was an actual effort on your end*.

If I wanted to chat with a large language model, I would. I don't need you to sit between a multi-billion dollar company's service and me and copy and paste text.

I invest my time in this projects for *the humans using GNU Radio*. I don't know why you conjure this digital noise, but it's not productive. Especially because you're clearly pushing for terrible cryptographic decisions, I can't decide whether this is just gross incompetence on your end, or whether you're trying to covertly introduce broken cryptography into FOSS projects. The more of your filler projects I see, the more I tend towards the latter. If you're trying to poison the well here, please do go away.

I decide how I spend my time on GNU Radio trying to help the community, the code base, and the long-term ecosystem development.
Assuming you do this out of positive intent:
You don't seem to realize that throwing vibe coded / LLM-generated nonsense at the community actually consumes our human resources. I sure as hell am *less* happy to volunteer my time working on GNU Radio after this interaction.

Best regards,
Marcus

On 2025-12-12 4:00 PM, Marcus Müller wrote:
Hi Håken!

That sounds very exciting! I haven't had time to look at your source code, I'd especially be interested in your synchronization methods and your choice of LDPC codes (we're deep into the "short code length for limited latency" vs "code effectiveness" tradeoff area here!)

You're using ChaCha20, which is a stream cipher, right? That's interesting because if you lose a single ciphertext block, say, to a single uncorrectable bit error after FEC, then you need a way of continuing to work. How does that work? Do you keep multiple Key/Nonce pairs around and round-robin between a larger number of ChaCha20 instances, to give you some leeway to continue to decode OPUS while the receiving end asks for a keystream reinitialization?

To kick off a bit more discussion, let me quickly answer your questions to the best of my abilities:

 1. *Channel modeling:* Are the GNU Radio fading channel models (Rayleigh/Rician)     representative of real-world mobile conditions, or should I expect different results
    on-air?

They are what they say on the box :) It's hard to say whether Rayleigh or Rician fading describes the channels you are aiming at. Intercontinental HF links are different than indoors 5.8 GHz channels!
So, you need to define your use case first.

 2. *LDPC implementation:* I'm using hard-decision decoding for simplicity. For those     who've implemented soft-decision LDPC in GNU Radio, what's the practical performance
    gain (measured, not theoretical)?

That depends on very many factors, mostly on decoder design, block length and maximum iteration count.

I'm assuming you're just using the belief propagation sum-product decoder that is in gr- fec? That does do soft decoding, you'd need to pass in soft-bit RX values, though.

It's really been a while since I thought about FSKs higher than 2-FSK (that aren't differnetial). Gut feeling here says that 4-FSK it's a pretty suboptimal use of signal power. I suspect that the first thing you'd do is drop the FSK approach there, and go for a modulation scheme that allows for soft-bits where, at least in AWGN, the entropy per bit is a bit better behaved? But I'm really swimming dangerously close to the edge of my channel decoder knowledge there.

 3. *Frequency offset:* The ±1 kHz sensitivity is possible concerning.

Is it? What carrier frequencies are you aiming at? What are your synchronization options? Let's start with some back-of-envelop calculations here: You're aiming at a 8000 b/s rate, using a r=2/3 code that's 12000 b/s code, using 8-FSK, that's 4 kSym/s.

Unless you're overly wasteful with your FSK spacing, that's a rather narrow channel, and tolerating 1/4 of the symbol rate as frequency offset is rather phenomenally good!

Hence, recommendation to describe your current frequency synchronization in more detail. You're clearly doing something (else much less than a quarter-symbol rate frequency error should lead to breakdowns) right already!

Has anyone
    implemented effective AFC for FSK in GNU Radio? Recommendations for libraries or
    approaches?

Depends on what you're currently doing, and what your framing, pilot, preamble, and system synchronization structure (is this just one-way? Or can both ends agree on corrections?) are.

 4. *Performance validation:* How do simulation results typically compare to hardware     testing in your experience?

I think you'll realize that the only possible answer to this is "it depends" :D

 > What factors cause the biggest discrepancies?

The things you don't expect :) Sorry! This is a bit broad. As said, synchronization and system aspects are often more relevant than textbook knowledge would suggest, but I clearly don't know what background you're doing this from, and hence, what you've covered already.

Best,
Marcus





Reply via email to