Here’s a fun fact about resending lost data: you can never be 100% certain that both people, communicating on a network where information might get lost, share the same information—and this holds even if nothing ever actually gets lost!
Here’s an example. Let’s say you want to send the very important message “Hey this is me and I thought of speaking with you, but sent this message instead!” You could send that message and, being clever, ask the recipient to send you back an acknowledgment so you’ll know your message made it through. Easy, right? And let’s say everything goes as planned: they get your message and send you back an acknowledgment.
But when it arrives, while you now know that they got your message, they don’t know that you know that, because there’s a chance their acknowledgment might not have made it through! So you send them a “thanks, I got your acknowledgment” message, which means they now know that you know that they got your initial message, but you don’t know that they know that you know that it went through.
And as this process continues, it becomes clear that the only two options you have—and this is proved through the ruthless mathematics of distributed computing—are to keep sending acknowledgments of acknowledgments (of acknowledgments of acknowledgments) for the rest of time, ever striving for the apparently simple but literally hopeless goal of one set of facts about the state of the world being perfectly understood by two minds…or instead accept that we can never truly know each other in this fallen realm, and move on with our lives.
Similar distributed computing proofs have shown that there’s no way to reach consensus (which is to say, have everyone in the network agree on something that happened) if more than a third of the actors in that network are willing to lie about it.
Two math concepts that also apply to us humans, isn’t it?
You want to read more? Here is a link to “A Hundred Impossibility Proofs for Distributed Computing” from MIT.
See you tomorrow!