I just bought a new cell phone. It’s a nice phone, with lots of nice features, but I’m not sure it’s working properly. I went to test it, using the built-in test utility software. And that’s when I realized what’s wrong with Priuses.
Toyota Prius cars are getting recalled for unexplained accelerations. At first the problem was thought to be something mechanical — a collision between floormat and gas pedal, perhaps — but when problems persisted it began to appear it was actually due to a flaw in the software that runs the car. And a lot of software runs that car… It doesn’t even start with a turn of the key; it starts with a push of a button.
Everything these days starts with the push of a button. Even baby toys. Everything requires a battery, a computer chip, a button… Some of the same toys that have been around for decades still exist, except now instead of a baby pulling a knob on a spring to ring a bell, babies today press buttons to release digital sounds through speakers.
Obviously the earlier kids are exposed to computer technology the better they acclimate to it. By growing up with computing it will never have to be something they must separately learn. But what of the physical world? When will they learn about that?
As it happens, not being a child of the 21st century I *have* learned about these things, and in thinking about my cell phone it dawned on me: given the right parts and instructions I could probably build a working telephone. Hell, given the right parts and instructions I could probably build a working motor vehicle. Mechanics are mechanics; they work in certain ways according to the basic laws of physics.
But cars and telephones and toys are no longer objects ruled by physics: they’re ruled by software. In fact, their physics are often overruled by software. It’s not that software is magic — indeed, software works because it provides a logic to an operation; it’s not alchemy at all. But given the way software now controls the physical in these objects it might as well be magic. Loosen a screw and we can see the physical consequence. But if your car crashes into a wall, and all the screws were appropriately tightened, it’ll be the mystical software embedded on a chip (a chip whose physical form has no effect on the operation of the vehicle itself) that’s at the root of the problem.
I saw a post on Techdirt recently dismissing the concerns raised by the Prius issue on whether cars should be run with software. To be sure, having software run a vehicle can help operate its physical properties much more efficiently than a human or mechanical operator could. For instance, that some sort of onboard logic can control fuel consumption means the physical properties of the car can operate at peak efficiency.
But all this software comes at a cost. For one, and this might be a blog post of itself, our reliance on software to run everything is removing us from the physical world. While we are becoming smart when it comes to programming, we are becoming stupid in terms of every other technology. A child who grows up pressing buttons will be a sophisticated button presser, but will he be able actually build anything worth having software to control? In subordinating the mechanical we are losing our mastery over our physical world while at the same time becoming entirely dependent on programmers to control unseen software for us.
And that dependency on something as opaque as it is important is itself dangerous. While with the physical we could always observe the mechanics of how something worked and troubleshoot the failures, with software the source code is often obscured. That means when something goes wrong — e.g., a car suddenly accelerates — we are dependent on whomever is privileged enough to have access to the code to fix it, even though these may be the very same people who wrote it badly in the first place.
Which is why I’ve titled this post as I have, “Runaway Secrets.” I am less concerned that Toyotas are having some problems and more concerned that we are entirely dependent on Toyota to fix them. Toyota might end up doing a great job; my goal is not to criticize Toyota per se. But this situation is not unique to Toyota. Other companies make other apparatuses whose operation is obscured to its users. Take my phone, whose own software utilities I needed to use in order to test whether its *other* software was controlling its hardware correctly. Or take voting machines, which are run by proprietary source code. Counting chads, as they did in Florida in the 2000 presidential election, was hardly ideal, but at least there was something physical to count. This cannot be said for all electronic voting machines, whose vote counting logic is invisible to all but its manufacturer.
Even though I’m a fan of technology — I *like* the cool things my new, software-driven cell phone can do, and I agree with the Techdirt article that in many ways software enhances what we can get physical technology to do — I do think we should do a better job maintaining our connection to the physical technology we’ve been working on for the past several hundred or thousand years. It’s pretty handy stuff, and we don’t want to forget how to innovate with it. Or, worse, be incapable of replicating the innovations that have already come.
But to the extent that software is appropriate, I echo the point raised in the Techdirt article: software controls need to be more transparent. Perhaps it’s not a big deal if people can’t reprogram their babies’ toys. But if their car is prone to driving them into a wall, or their votes keep getting deleted, people should be able to see how that is happening so they don’t have to keep blindly hoping that the manufacturer’s staff alchemist will be able to fix it for them.
Rather, their technologically-adept children should be able to.