On the ongoing subject of programmers who should be hit with blunt objects, I have one of the Weather Channel’s two apps on my phone—which is to say, they have two iOS apps and they encourage people to switch to the newer one, which my phone has. Both of those apps are pretty sucky, but the weather data is better than Apple’s.
A few weeks ago my phone pinged me while it was in my pocket. Not a text message, not anything important from any of the few apps that are allowed to use sound in their notifications. This was the Weather Channel’s (newer) app telling me about some event that happened halfway across the world. Breaking news.
Well that’s stupid, I thought. Who needs the Weather Channel app to tell them about things going on around the world? Either you have a regular news app for that or you don’t care. (Or to put it more mildly, you care on a strictly human level, but not on any other level and not nearly enough to allow an app to notify you.) So I found out where the app configures the things it notifies you about, and turned Breaking News off. I still want the app to alert me if, say, severe thunderstorms are gonna barrel through.
A few days later it happened again. I was sitting watching TV with the in-laws when my phone made a noise in my pocket and told me that a volcano in Hawaii was running amuck. But I had turned that off.
Sure enough, when I checked the settings again the Breaking News item was back on. So I tried some experiments, and it turns out that when I fully close the app, and open it back up, Breaking News alerts are always turned back on.
I’ve seen this exact kind of stupid before. I’ve ranted about it before on this very blog. My cable company eliminated a setting on their DVRs, then brought it back, and when they did some bonehead put in logic that said if this particular setting was off, it should be turned back on in its default state. Nowhere however did they actually account for people having turned it off on purpose. This particular setting was “DVR compensation”, a questionable concept that was implemented badly from the very beginning and never fixed, which is a whole other rant.
Same thing here. The Weather Channel obviously added this stupid Breaking News thing to their app, and wanted to set it up so it’d be on by default. That part’s not horrible; I hate the feature but maybe someone, somewhere, likes it. The bad part is that when they added the feature, they put in logic to keep turning it on.
So listen, inferior programmers, here’s how you do settings correctly. (And you morons at Microsoft, I’m especially talking to you.) Whenever a user changes a setting, it is not enough to simply have a variable or a place in a file that says what that setting currently is. You need to store something else, or store the original value in such a way as to make it clear this setting was explicitly chosen. This can be as simple as keeping a list of settings that were changed, and falling back on the defaults for anything not in that list.
Or you can keep doing it wrong, so that every time your software updates, or in a case like this every time it’s activated, it resets some or all of the settings to a default because it assumes the “off” value is the same as “no preference”.
I do hope everyone in Hawaii is okay. Doesn’t mean I want my phone to freak me out with an alert in the middle of watching Downton Abbey.
Update: They fixed it in a newer version. Finally. Credit where it’s due. But programmers of the world, let this be a lesson to you!