"There are only two hard problems in Computer Science: cache invalidation, naming things and off-by-one errors."