When dealing with user input, Murphy’s Law will always apply in full force: “Anything than can go wrong will go wrong”. Or as Douglas Adams would have it:
“A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools”
This is a common crux for us developers: how do we architect a completely foolproof system? There are many routes you can take to do this, but in this particular blog post, I would like to focus on a specific aspect of this: managing user inputs.