Twice a year I’m reminded of how little correlation there is between how much a time-telling device costs and how smart it is about daylight saving time.

Device Approx. price new Does it automatically adjust for DST?
IKEA wall clock $15 No
Microwave oven $90 No
Kindle Paperwhite $100 No
Fitbit fitness tracker $150 Yes (but don’t ask about the sleep tracking for that night)
Canon M5 camera $700 No
iPhone 7 $750 Yes
Stove and oven $1,000 No
MacBook Pro $3,000 Yes
Toyota Camry $16,000 Yes

For comparison, Amazon lists an analog wall clock that will regularly set itself, including for daylight saving time, from the time station in Colorado. It costs $20 and has an average rating of 4½ stars.

Irritation at others’ inadequacies

The one that really gets me is the camera. I like it overall, but it doesn’t have built-in GPS for geotagging my photos, and—setting aside daylight saving entirely—it’s bad at keeping accurate time, so even if I use my smartphone to collect a GPS track it will still take trial and error later to tag my photos. Why, Canon!?

Admission of my own inadequacies

I worked for a scientific-measurement company whose devices would appear near the Camry in this table. The instruments had industry-leading precision, but they didn’t have real-time clocks, so on each new boot they got to relive some day in 2011. This detail was invisible to the end user… until I had the bright idea to make the device accessible through an HTTP API. Now every piece of information from the device came with a Date header that was wrong by at least three years. But what can you do? RFC 2616 requires that you send a Date header, after all.

Except… it doesn’t. In fact, it specifically says that “if the server does not have a clock that can provide a reasonable approximation of the current time, its responses MUST NOT include a Date header field.” And I was using the built-in Go HTTP server, which will remove the auto-generated Date header if you just ask it to. I had hoped there would be a more interesting moral to this story, but I think the lesson is simply that if you’re justifying a bug by pointing to a standard, make sure you’ve actually read the standard.