In programming there are two difficult problems - naming things, cache invalidation, and off-by-one error.