In 2012, I ordered a computer online for the first time. Every computer I had purchased before that one had been studied, manipulated in-store, revisited, coveted and eventually and with great enthusiasm, purchased.
It’s this enthusiasm to own a shiny new beast of a machine that led me to Apple’s online store, where not only did I pick the largest base model, but then talked myself into upgrading every single component inside it. I added, among other things, a larger hard drive, a secondary solid state drive (SSD), a beefier processor and more memory. (I could almost hear Tim “The Tool Man” Taylor grunt in approval as I made these decisions. “More power!”)
The in-person experience of taking physical possession of a computer had been replaced by an online storefront proxy, but my enthusiasm had not dampened in comparison with every earlier computer-purchasing experience. If anything, it was more palpable. “When does my computer get here?”, I’d repeatedly ask myself in the following days, until the moment when the large brown UPS box was delivered and definitively in my living room.
That was three years ago. I am writing this blog post on The Beast now, and I’m happy to say that it has been serving me well ever since its unboxing.
Well… there is one thing that never worked properly. The Wi-Fi circuitry inside the computer seems to have a problem. Or maybe it’s the software that handles that circuitry. In essence, the machine was billed as being able to connect to Wi-Fi networks at three separate speeds: A/B (slow), G (medium), and N (fast). I’ve been able to successfully establish and maintain connections in the first two modes, but when it comes to N, for some reason there are intermittent failures, like blackouts, in the signal. Sometimes the connection will be fine for 15 minutes, and, without warning or obvious reason, my computer will be unable to connect to the network for the next 2-3 minutes. Then, the signal will come back for 30 seconds, before going down for another 2 minutes. Then up for 8 minutes, just enough to lull you into a false sense of security, only to go offline for the next 40 seconds. And so on, and so on, and so on.
It’s a frustrating problem to have, but more than that, it feels like The Beast has a limp in one of its legs, making it unable to… uh… run at full speed and… uh… catch data gazelles?
The point is, I spent hours working on this one problem. I tried different routers. I tried placing the router antennas in different positions around my house. I collected hundreds of thousands of metrics on my tiny 1-device home network, in search for a pattern, in search for an Aha! moment that, sadly, never came.
I even corresponded briefly with an Apple engineer. He reached out to me when I joined an online discussion of users having similar problems as mine. I sent him all of the data and analysis I had collected and then… nothing.
Sadly, we never found the problem or the fix and The Beast still limps along at “G” speeds, rather than the “N” speeds which were promised on the outside of the box.
The Illusion of Progress
From that time, three years ago, when I unboxed my new desktop computer, the proliferation of smartphones and new, ever-more-powerful computers has not slowed a bit. However, this continuous integration of software and internet technologies in everyday life is anything but smooth.
To illustrate how rocky is this road, I’d like to present a sketch of some of the more dubious human/computer interactions I might run into in a typical day of working in the Silicon Valley:
7:20am: One of the first things I do after waking up is to look at my weather app, to get ideas as to what I should wear today. It looks like it’s going to be a very comfortable 18°C by 3pm this afternoon. That sounds like T-shirt weather, but if you’re not careful, you might miss the part where it says, in much smaller print, that winds will be gusting about at a mean 34 km/h today, just like they did yesterday. Make no mistake about it, it’s jacket weather. It has never really made sense to me why weather apps generally choose to highlight the wrong information, like showing the actual outdoor temperature (18°C) in large print, while the more useful “it feels like this” temperature requires a few extra taps to find.
7:49am: Aside from finding out what to wear, the other daily question I need to answer is “How do I want to get to the office today?” I can either take the train, or I can drive my car. I only want to drive if there are no events at San Francisco’s AT&T Park, which is only 2 blocks from my office. If there’s an event today, not only do parking prices in the area quintuple (from $12 to $60+), but traffic can be a nightmare. For this reason, I often need to research and answer the question, “Is there an event today at AT&T Park?” As a consequence of me running this search routinely, my phone has become obsessed with showing me the scores of Giants baseball games, at home in SF and away. My interest in AT&T Park is misinterpreted by various recommendation algorithms as being an interest in the Giants.
8:31am: I decided to take the train. I’m standing on the platform. The digital readout announces that the train is “4 minutes late” and yet, here it is, pulling into the station at exactly the scheduled time. Strange.
9:29am: I arrive in the city, and I see that the monitor that displays the schedule for the next few trains is offline, as it has been for about three weeks now. I don’t know when the next train comes, but I do know that Windows Defender needs to be updated.
9:39 am: I arrive at the office. It’s Monday morning, and since my work computer has been on all weekend, it has accumulated a number of messages that have popped up to alert me of various things I ostensibly care about:
It generally stands to reason that new versions of software are better than old versions. For instance, in the updates proposed above, you’ll notice that the new versions of “HipChat” and “iTerm” (two pieces of software I use many, many, many times a day) contain new fixes for existing bugs. It’s tempting to think that this auto-update behaviour is continuously improving the stability of my computer every time it proposes an update, and indeed, this is the main narrative behind the auto-update feature: newer is better. This is a misleading, if not patently false, impression. There is no dialogue box that shows you what new bugs are introduced in every new version, and sure enough, that’s exactly how they keep getting onto your computer.
9:44am: It takes a few minutes for the software updates to complete their installation, so I take advantage of this brief morning intermission to grab a cup of coffee. Crushing it!
9:45am: One of the slightly annoying things about these updates is that they sometimes ask for “permissions”. You see, certain parts of your computer that contain sensitive or private information are protected by software “gates” that require the user to explicitly give permission for the sensitive information to be shared with the requesting application. In this case, CoreServicesUIAgent is asking for permission to access my calendar:
I don’t know what CoreServicesUIAgent is, but my intuition tells me that with a name like that, it’s some kind of system program that, for some reason, needs to access my calendar. I don’t know what that reason is, but I do know that refusing to grant this permission would mean that two pieces of my operating system wouldn’t be able to talk to each other. I know from past experience that this can lead to unexpected, quirky and seemingly random behaviour in the future. Refusing this permission is tantamount to breaking a pipeline somewhere in the complex machinery of my computer. Is it an important pipeline? That’s very hard to answer, given that I have no idea what CoreServicesUIAgent actually does.
(The permission screen is a security feature, to make sure no virus steals your sensitive information without your knowledge, yet it only really works when the user is informed enough to make a sensible decision. If I were making a virus that aimed to steal your calendar information, I wouldn’t call it Big Bad Mean Virus, because no one would grant the necessary permission. Instead, I would call it CoreServicesUIAgenda, hoping everyone would automatically grant the necessary permission without giving it too much thought. Did you spot the difference? Because most people probably won’t.)
9:48am: After gazing off into the distance and pondering the issue of software permissions for three minutes, I take a peek at what my calendar looks like for today:
I have multiple e-mail accounts where calendars are stored (four on Google, one on the computer and one more on Apple’s iCloud), and because they all try to be helpful by inserting various Canadian and American holidays into my planner, this happens on certain days. As a result of all of this helpfulness, I can’t actually see the meetings I have today without a few more clicks.
10:12 am: I’ve been catching up on e-mails and easing into the workweek, and by now, I’m feeling “warmed up” enough to get into some serious software coding. To do that, I like to put on my headphones, find a good playlist of music that allows me to focus, and let ‘er rip. Only problem is, after about a minute, I notice that most of the music sounds like it’s coming from right side of the room. I know why this is. I open the System Preferences app and see that it’s happened again:
If you look at the Balance slider, you’ll notice that it’s skewed towards the right. I didn’t do that. There’s a long-standing bug in Mac OS X that causes the sound balance to very gradually and subtly drift towards the right channel. Every week or two, I have to go into the sound settings and manually re-center the balance. This has been happening for years and years now. I wonder why Apple hasn’t fixed this yet.
12:35pm: I stepped out to grab a sandwich around the corner. As I’m walking down the street, I spot a beautiful vintage Mustang convertible waiting at the red light. I take out my phone, and snap a picture to send to a co-worker. Alas, my phone freezes just after I’ve captured the picture, and I need to restart it, losing the picture in the process. By the time my phone is back on, the car is long gone. Damn.
12:38pm: As I sit in the busy sandwich shop, waiting for my order to be up, I run through in my head the programming puzzle I’ve been working on all morning. I’ve designed a piece of code that goes to great lengths to make sure that a certain thing only happens a single time. It works flawlessly, except for the minor fact that the thing that’s supposed to happen only once actually happens two ore more times, and I don’t know why. I enjoy working on problems like this, but I’ll admit that spending 20 hours to discover the root cause can be a bit frustrating when all you want to do is tell the computer “Once = good. Twice or more = bad.” I mean, how is that so hard to understand?
3:33pm: In the middle of my afternoon back at work, I find myself waiting for a password reset e-mail to be sent to me, so that I can reset another password I’ve forgotten, and change it to something I’ll forget again soon. I wonder how many times per day and per week do I need to reset the password to some service or account I’ve all but forgotten and in that instant, need? I swear there are mischievous sprites who change my passwords behind my back…
5:05pm: I’m trying to write a short e-mail on my phone, but it’s a frustrating exercise. At this very moment, my phone has decided that it’s time to download and install some software updates. Like my desktop computer, my phone goes through a process of looking for new updates to software that I already have installed.
I don’t have many apps, but the number of updates available on a daily basis adds up quickly. Since downloading and installing software tends to be a processor-intensive activity, my phone does this thing where it freezes for a second or two while I keep typing, before the letters all appear at once, as if trying to catch up. Even more frustrating, every time a new piece of software is installed, my on-screen keyboard disappears for 2 seconds, even if I was right in the middle of a word.
I can’t keep writing my e-mail while these updates are installing, so I can either turn off software updates, write my e-mail, then turn them back on, OR, I can wait it out. Turning off software updates requires me to exit the e-mail app and navigate to the appropriate screen, which would take time and divert my attention from the task at hand. I opt instead to just put my phone down for a minute or two, until the update storm passes. I wish there were a weather app that would tell me how usable my phone will be today.
5:35pm: A friend of mine from France tried calling me on Skype, but I was walking to the train, and thus, was unavailable. She left me a video message, but unfortunately, it consistently freezes about 3 seconds in, when I try to watch it on my phone. I’ll try watching it later on my home computer.
5:47pm: On my earphones, I have a “volume up” and “volume down” button, in order to control the volume of music or phone calls without getting your phone out of your pocket. I notice that in the latest version of the Spotify music player, the “volume down” button doesn’t work. Turning the volume up works, but in order to turn it down, you have to get your phone out of your pocket and adjust the volume from there.
7:30pm: Now home, I check to see if the video message plays any better on my home computer. Before I can try watching it, though, I need to install a software update as well as give permission for Skype to update itself.
7:31pm: The version of Skype on my iMac plays the video message better than my phone, but not by much. It still freezes at 0:03 mark, but at least I’m able to drag the playhead over to 0:05 and watch the rest of the message, even though it’s glitchy. I wasn’t able to do this on my phone.
8:20pm: I start watching an episode of The Office on Netflix. Here too, I get asked to grant more permissions:
My web browser wants to know if I want to allow Netflix to display its videos in fullscreen. Why on earth do I need to grant a permission to show videos full screen?
The answer, it turns out, is that this is another (bad) security feature. If a malicious web app or virus were to make itself fullscreen without my noticing (and without me being required to give explicit permission), then it might be able to fool me. It could, for instance, show me a fake password dialogue box with generic text like “You need to enter your administrator password to continue”. Since I get bombarded all day long with requests for permissions and requests for me to enter my password, this app could easily spoof another one of these screens and trick me into giving it my password.
The solution then, is to ask the user each time a specific web address wants to show its content in fullscreen mode.
I’ve already granted this permission in the past, but the reason it’s asking again is because this time, I’m accessing the site through “www1.netflix.com” rather than the more common “www.netflix.com”. This isn’t a choice I made. I went to “www.netflix.com”, and they bounced me over to a secondary server, “www1″. (This is sometimes done in order to distribute web traffic, and not overload one server with too many visitors. There might also be a “www2″, “www3″, etc.)
In either case, my web browser now wants to know if I’m cool with “www1.netflix.com” going fullscreen. Tomorrow, I might be asked if I’m cool with “www4.netflix.com” going fullscreen…
The Kind of Day It Has Been
I’ve listed several software issues I encounter on a typical day, and these are by no means all of them. In fact, I would estimate that I experience at least ten times more bugs and software quirks on an average day than I described above. It simply wouldn’t make for a good blog post to exhaustively document some of the more obscure and convoluted issues.
Ultimately, the cause of each and every single one of these issues could be explained away by an expert. For instance, if you were to discuss the issue of the digital readout on the train station that marked the train as being “4 minutes late” even though it was on-time (8:31am), you’d get an explanation which might sound like this: “There are sensors on the track that detect which train is passing at a certain point. These sensors send a signal to a central piece of scheduling software, which estimates the delays. Unfortunately, the sensors at the Mountain View station were made by a different manufacturer than the others, and so they’re not fully compatible with the latest update in the central scheduling software. This means that the information they send is wrong, and because of a bug, they’re off by 23-seconds when they report the times to the central scheduling computer, and this triggers the estimation algorithm to calculate that the train is 4 minutes late.”
The explanations that engineers tend to give for software bugs are always totally logical, and more often than not, immensely unsatisfying. I can see that the train is at the station. Why can a computer not see that very simple and obvious truth too?
Likewise, many of the other issues I’ve detailed above have explanations which are completely reasonable, and completely unsatisfying. In the case of the Netflix/fullscreen permission issue (at 8:20pm), the fact that Netflix might want to put me on their “www3.netflix.com” server in order to distribute traffic makes sense. The fact that my web browser tries to protect me against software that puts itself into fullscreen without my knowledge makes sense. Taken together, however, the fact that I don’t really know, when I watch Netflix, whether I’ll need to give a permission I’ve given in the past all over again, or not, makes absolutely no sense.
In other words, it makes no sense to me for my computer to ask me to perform seemingly-arbitrary tasks to accomplish things I don’t really care about. I don’t really give a good gosh darn if CoreServicesUIAgent has permission to access my calendar or not. I just want my computer to work.
Why am I being deputized to oversee the continuous updating of software on my computer? Why am I being asked to arbitrate every permission request, as if I don’t have better things to do? Since when is my computer a tool for managing itself, rather than a tool for getting my work done?
It’s been over three years since I ordered my computer online. It mostly works, but every day, I run into new issues and quirks. The “N” wireless capability still doesn’t work, as was promised on the outside of the box, and at this point, I’m pretty sure it never will.
And so, I’m left still asking myself, “When does my computer get here?”