Ignore an issue for long enough, and it stops being an issue :)
https://downloads.bbc.co.uk/rd/pubs/whp/whp-pdf-files/WHP031...
The reason is this: Reed Solomon corrects entire symbols, but can only correct so many symbols per block. LDPC and Turbo correct single bit errors. If you have a lot of single bit errors, mixed with completely corrupt blocks, it's best to use both.
Interleaving usually mixes the bits around too, to spread long chains of errors out between symbols.
This setup is used in digital radio, 3G, CD and DVD, DSL, etc
Also check out https://github.com/Parchive/par2cmdline
I wish something like this was integrated into a modern and free archive format. RAR has it. RAR also got volume recovery: when creating split multi-volume archives you can also create recovery volumes - each recovery volume can replace any other one missing volume. It was a life-saver in floppy-disk times.
On the internet you can just retransmit if something went wrong, and if you're worried about the media specifically then there are media specific measures, like RAID and filesystem level checksums.
https://www.usenix.org/conference/atc12/technical-sessions/p...
My impression was always that error checking was implemented at the hardware level, or else at the OS/driver level.
But just curious if there are some applications I'm missing.
Hadoop has an RS implementation inside the filesystem (called "erasure coding"), instead of storing 3 copies of the same data, it can actually instead store ~1.5 copies as (6+3) or (10+4).
Previously, I've run into this tech in satellite internet gateways, but distributed filesystems is where I've gone through the math & probabilities of failure properly.
I work on perf & the extra network hops (with 3 replicas, you read 100% of data local, when you stripe it that doesn't work) and math for the error correction are hot spots when you are trying to keep all cores busy.
The professor later spun up a startup that has since been acquired by Dropbox, but I'm unaware what kind of product they're currently working on.
I believe parchive version 1 was simple XOR parity.
Also, the parity matrix for v1 would be sometimes singular (non-invertible), which v2 tried to fix but it didn't quite work.
You might also be building a distributed system, where blocks are spread across multiple disks. In that case, an "error" you're trying to correct might be the loss of a disk or server in the distributed system; there is no one single disk or OS responsible for all the relevant blocks in that case.
But, both of these are assuming you're building some kind of data-store, which is not a typical user application. Writing robust data-stores is hard for many reasons, error correcting is just one of them.
https://mirrors.edge.kernel.org/pub/linux/kernel/people/hpa/... https://www.usenix.org/legacy/event/fast08/tech/full_papers/...
Given one or more known inputs/outputs of a Reed Solomon function with known symbol size, message length, number of parity symbols. Is it possible to calculate the other parameters (polynomial coefficients, primitive element etc)?
I failed to find an answer a few years ago, when trying to interoperate with chirp.io (now gone). https://math.stackexchange.com/questions/663643/discover-par...
EDIT: for reference: https://datatracker.ietf.org/doc/html/rfc1071.html