A huge tenet of programming is GIGO: Garbage In/Garbage Out.
Years ago when I was practicing for a play (Night of January the 16th by Ayn Rand). I was the bailiff. At one point in the play I’m handed a copy of a check that is evidence. I’m supposed to “read” what’s on the check. Of course since it’s a play, I have my lines memorized.
But during this dress rehearsal I’m given a piece of paper with actual writing on it. Unfortunately it was just some random writing. But my brain went into segfault and I stopped. Part of my brain wanted to read what’s on the piece of paper. Part of my brain wanted to say my lines, but it could no longer remember them.
It was a perfect example of how easy it is to scramble the input for our brains. In the actual performances we made sure the piece of paper was actually blank.
I was reminded of this the other night when Steve Harvey made his gaff on live television. I was curious how he could make such a mistake but I had my suspicions. And I was right. The cue card apparently was VERY poorly designed and his visual input system (i.e. his eyes and brain) screwed up. Read here for more details. Bad input lead to bad output.
These are humorous examples, but in the software world, these can be very dangerous.
At one point during the shuttle program, they found an error where the arm thought it had rotated more than 360 degrees, a physical impossibility. This link has some details (though in my recollection the issue was not a rounding error but that the code went from 0-360 instead of 0-359 or 1-360). Garbage in could have lead to potentially bad garbage out.
Much more recently however, here’s an example of intentional “garbage” in. This is part of the encryption software used on many firewalls. Your bank or other financial institution for example may be using this code.
Ironically true garbage, as in a purely random number, might be better. But here it seems someone poisoned the input with their specific number and then set it up to use the results in a dangerous manner. I say dangerous because the 3rd party using this code may not realize that they’re completely vulnerable to having all their data seen. About the only thing worse than unencrypted data is data you think is encrypted but isn’t. In the former, I’m probably going to pay far more attention to who has access. I’ll add too that some of us suspect the NSA had a hand in this.
This is by the way I highly recommend folks don’t write their own encryption. Unless you’re an expert you’re liable to screw it up.
Moral: So be careful of your inputs, they definitely influence your outputs, both in code and in your brain.