How to think about dates and timestamps, timezones, and offsets — Phil Karlton famously said that the two hardest things in programming are cache invalidation, and naming things. I’d add dates and times to that list. For something so seemingly simple and intuitive to humans, the interaction of dates & times, and timestamps & timezones, has proven deceptively tricky for many…