There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

via http://martinfowler.com/bliki/TwoHardThings.html