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