Tomas is a computer scientist, finishing his PhD at the University of Cambridge. He has been using F# since the early Microsoft Research versions many years ago.
He is the author of the popular (and F#-centric) book Real World Functional Programming, and has written numerous articles and StackOverflow answers. He has been a Microsoft C# MVP since 2004. He is also a frequent speaker at F# and .NET events, and a founding member of the F# Foundation.
He is the creator of the FSharp.Formatting library and has made major contributions to libraries such as FSharp.Data and Deedle.
"If trials of three or four simple cases have been made, and are found to agree with the results given by the engine, it is scarcely possible that there can be any error." (On the mathematical powers of the calculating engine, Charles Babbage, 1837)If Charles Babbage was right, you would just try to run your program on a few sample inputs and be sure that it will work correctly. Sadly, the world is not so simple. Since the invention of computers, we mostly eliminated hardware issues, but software errors remain. And programmers spent over 60 years finding different strategies for dealing with coding errors.Are software errors a curse that must be eliminated at all costs as advocates of strong typing claim? Are they a professional embarrassment that can be avoided through proper engineering? Should we see errors as an unavoidable part of any modern system and "let it crash" if an unhandled error occurs? Or could we even see errors as a source of creative inspiration?
In this talk, I look at a number of strategies for dealing with errors that appeared throughout the history of programming. Understanding the origins of different approaches to errors is not just a fun historical exploration, but it sheds light on current issues in programming, including computer science education, hiring process and the never-ending programming language wars.