The 2 hardest problems in computer science: 1. Naming variables 2. Cache invalidation 3. Off-by-one bugs