I just came back from a weeks-long trip to the American West. It was amazing, gorgeous.
You know what all this beauty has in common? Besides mostly being protected wild areas?
Zero bars of cell phone signal. Or maybe like, two bars, depending on whether there was a mesa in the way. We drove almost all of it on state freeways, not interstates, and there was, let me emphasize, NO SIGNAL.
That’s fine by me. I was taking a vacation and don’t need my phone pestering me all the time. I had even dowloaded a bunch of albums and playlists to stream to the car audio system.
I’m going to call out Amazon Music here, but none of them are good. I used to use Google Music, but I loathe YouTube music’s interface very slightly more than the Amazon interface. And Spotify is fine, but I like actually owning and downloading music instead of streaming it, because I have this silly old-fashioned notion that if I have purchased something and downloaded it, I might want to, you know, provide that to the car.
The process goes like this.
- Open Amazon Music App
- Reject Car Mode, because I was the passenger.
- Reject the offer I get to sign up for Unlimited Whatever Streaming. I get this offer EVERY TIME. There is no way I can find to permanently dismiss it. I do not want to stream my music.
- Click the Library icon
- Click the Albums icon
- Swear and switch into “Offline Music”, because it keeps defaulting me to “Online Music”
- Select album, say, James – La Petit Mort
- Sing along
- Become very startled by the next thing to happen, which is rather than the app thinking “yes, album played, good job me, now I stop”, it says, “I see you have played your own music. I will now construct a STREAMING STATION based on that and attempt to communicate over this-here roaming connection, because I have never considered acting like a music player, I am here to CURATE TASTE.”
- Everyone in the car with me is subjected to my rant about app developers who have never considered offline mode.
And it wasn’t just the music player — I had trouble finding books I had downloaded to my phone because it evidently wanted to dial home to confirm something? My licenses? And it wasn’t just Amazon. Aura Picture Frame app — very cool, no queuing capabilities. Marriott Bonvoy app — why WOULDN’T anyone want to spend data loading gorgeous pictures of resorts in the Maldives if one was booking a room in St. George, Utah? CovidAwareMN — help, help! I can’t find a signal and I don’t know where we are, alert!
The two apps that did not piss me off were Snapchat, which let me take and queue images without a fuss, and Google Maps, which let me pre-download maps around destinations it thought I might be headed to.
Now, this could be just a whine about how my magical communicator device didn’t do what I wanted, but I think it’s actually a pretty fair indicator of a real problem we have in software development generally, and app development in particular. We assume that everyone has data the way we have data – boundless, essentially free, always on. That streaming is just the new way radio works.
But it’s not! Radio is one-to-many, and what we are building with our always-on assumptions doesn’t map to that. Data is not free. If you look at the cost of downloads in non-US countries, or even in non-metropolitan US, or even for people on pay-as-you-go cell plans, IT’S NOT FREE. It’s expensive. And every time we lazily write a back-and-forth communication as if it were just a database call, we’re costing someone money. Mostly someones who can least afford it.
I was joking on Twitter that I wanted to drop app developers into the middle of the American West for a week and see how they felt about their product then, and hey, it would probably be good for them to get some screen-free time, but the more I thought about it, the more I do want someone to be angry with me. Because when we had to call the EMTs, I was glad we were somewhere with phone signal. And when we checked into a hotel and the volunteer-fire-department alarm was going off, I learned that they couldn’t get reliable pager coverage to summon firefighters. At the risk of sounding catastrophic, global climate change is going to lead to a lot of situations where we need our apps to do basic things without being able to phone home. If my first-aid manual is in PDF, will I be able to access it without hitting Adobe servers?
When we talk about building robust systems, we are thinking about hardware, software, failovers, unavailable humans, mostly normal failures. But this is a normal failure that I never hear us talk about.
PS – I also got in a lot of starwatching. It was marvelously dark, and I was watching for the Leonids and also resenting all the microsatellites. Yes, I know they are supposed to bring internet access to more of the world, but holy wow, they are bright and distracting and maybe we could have thought that through better, design-wise.
Minneapolis DevOps Meetup