pmb: (Default)
pmb ([personal profile] pmb) wrote2006-12-23 02:11 pm

All systems have bugs

[livejournal.com profile] mycrust had a half-snarky comment about helping his father-in-law fix the family entertainment system, and it made me go on a tear. Because there's a pretty deep issue here, and it pleasantly touches on lots of stuff close to my heart. But I think I should start by pointing out that the fix to the problem involved some small mucking-about with the remote control, and that the problem was not with the TV, but with the entertainment system. And systems are governed by software and both of them have bugs. People are used to the problems being in the hardware, when nowadays the software is usually at fault. It's not that the hardware has gotten any better, it's that the software has become omnipresent and SO BAD.

  • My cell phone requires a soft reboot every now and then.
  • High end consumer electronics now communicates using a completely stupid digital handshake protocol that is not robust to single bit errors.
  • Televisions take 10 or more seconds to start up because their OS must boot up.
  • My cable modem requires a hard reboot every month or so. (So does my Airport, but at least there's obviously software involved there.)
  • Mercedes had to recall a bunch of cars in order to upgrade the OS to one that was less buggy and that wouldn't interfere with safe operation of the vehicle.
  • Rotting leaves led to buildup of guck on train wheels and tracks that interfered with the electrical connection, and led the train software to believe it was getting derailed, locking the brakes and causing the wheels to skid, thus causing TRAINS to get FLATS.


Our world no longer consists solely of objects, it consists of systems. Objects, when they have a flaw, are found defective and fixed. Systems, when they have a bug, are adapted, worked around, lived-with, or half-fixed. People used to the reliable dependency of objects are generally at a complete loss with buggy systems. Systems are so complex and eldritch that we must depend on experts. It literally takes years of poking to get a feel for how to fix a system. I am, not to put too fine a point on it, a computer ninja, but I am at a loss every day when I deal with problems on my PC - I fix them, and I eventually figure it out, but it truly feels like I start every day from almost entirely anew. I understand how every piece works, but their almost innumerable combinations into the operating system I use is byzantine and horrifying. But I knew and know what I was getting into.

Lot's of people buy systems while they are expecting objects, and are then horrified at the way the whole thing only mostly works. Objects are perfectible. Systems are not. People understand that the tax code is essentially imperfectible. But people don't really realize that the source code for a modern operating system is just as complicated and large, and people REALLY don't realize how much software they are surrounded by.

Systems/software problems are a modern invention - or at least their current explosion into daily life is. Several times in CS 101 I had students encounter really obscure bugs, and they had no frame of reference to understand what was wrong. I just had to tell them that there was a reason it was doing that, and that it was too complicated to go into at this time. But, really, the problem was so kooky that you needed both a degree in CS and several years of practical programming experience to understand what was going on. If that can happen in CS 101 with a teacher trying to guide them, imagine how much trouble the neophyte is in when they have no teacher and no idea that they aren't dealing with something necessarily fixable and are operating on real-world problems.

We have no cultural history for fixing entertainment systems - televisions and VCRs and cable TV. No father ever retired to his workshop for the weekend doing projects with his child where, in a sidelong fashion, he explained the problems inherent in HDMI and HDCP and recommended component video or VGA cables as the solution going forward as they programmed the ol' VCR together. Technology moves too fast for knowledge to spread like woodworking knowledge. It even moves too fast for it to spread through textbooks. Computer books are the thickest, most quickly produced books you've ever seen, but for almost all of them are dated before they come to rest on the shelves at the local megachain bookstore. We have no way of transferring enough knowledge of these systems at a pace that is fast enough to be genuinely useful.

So we're left in a place where the only real skill is adaptability and the only useful knowledge is of the imperfectibility of the systems we encounter. All we can do is hope that the system is useful for what WE want to use it for. The idea that we could set it up "right" is as laughable and ill-founded as the idea that modern televisions could be fixed with wiring diagrams and soldering irons and good old fashioned know-how.*

Perhaps this is how we know we have truly entered the post-modern era. Our dreams of perfection have been brought to their knees by the sheer twitchiness and buggyness of our systems.
* - note that this statement is correct in that it is, for some miniscule subset of component combinations, possible to set them up "right", and that it is, for some miniscule number of problems, possible to fix modern electronics with a soldering iron and some attitude. But nobody ever does this, and it's not clear that it's worth it. The adaptability and extra features seem to be worth the uncertainty and replacement expense for most people.

[identity profile] dboothe.livejournal.com 2006-12-24 01:53 am (UTC)(link)
The defining feature of the post-modern era is the extended warranty, which even I have been happy to shell out non-trivial amounts of cash for. If ever there were a more backhanded way of admitting that your shit is busted off the assembly line, I'd like to hear about it.

[identity profile] patrissimo.livejournal.com 2006-12-24 04:23 am (UTC)(link)
I hate it when people think of the economy as an object rather than a system. "If we pass a law that says you can't raise rents, it must benefit renters!".

[identity profile] pmb.livejournal.com 2006-12-24 05:43 am (UTC)(link)
Note that the solution is not to throw one's hands in the air and do nothing even though a system may have a tendency to self-correct. Inputs are being purposely tweaked all the time.

[identity profile] patrissimo.livejournal.com 2006-12-24 06:47 am (UTC)(link)
I have no problem with doing things, just with doing things without an understanding of what will happen.

Also for the particular system that is the economy, I believe that in practice it turns out that very few input tweaks either a) do what you want them to, or b) improve things. But that is a purely empirical claim, not a general one about systems.

[identity profile] drinkywinky.livejournal.com 2006-12-24 08:16 am (UTC)(link)
You compare OSes to the Tax system. They are nothing alike. The tax system (and economy in general) is complex and imperfectable because it multiple active forces trying to work around each other. Software is imperfectable only when there are problems at a lower level. It is quite possible that people resigned themselves to unknowable bugs because Intel screwed up division on the Pentium, back in the day.

On the other end of things, I've become amazed at how simple most things are. I've recently taken a new job where we, among other things, may start working on the controls system for a proton cancer therapy. This is the system where we shoot positively charged atoms at cancer to kill it. So, we read back some data, adjust some magnets, and boom, we shoot cancer. It's not that simple, but really, it's not that hard.

~Pete
Who told the software guy yesterday, "If we can put a rocket on the moon, we can get reliable USB data."

[identity profile] pmb.livejournal.com 2006-12-24 08:29 am (UTC)(link)
Rev 1 is always the easiest. Software maintenance is when things go sideways. And you are right that it is possible to get software right. The space shuttle does, for example. But they do it at a crippling cost to productivity. Something like 500 LOC per person per year. If you want it faster, and everyone does, then quality is necessarily going to suffer.

Is your program running on an OS? Is the OS Windows? Please say it's not. MS Windows controlling medical equipment gives me the willies.

[identity profile] bagoffarts.livejournal.com 2006-12-24 04:44 pm (UTC)(link)
fyi, WinCE, thankfully, is not certifiable for life critical systems. Not sure about XP, and you would have to be certifiable to even consider vista.

[identity profile] drinkywinky.livejournal.com 2006-12-24 05:01 pm (UTC)(link)
Correct. I hear FDA (or whoever handles devices) is very wary about software or anything with an OS. The critical hardware will probably be running parallel logic on an FPGA, which can be tested extensively.

[identity profile] agthorr.livejournal.com 2006-12-24 02:55 pm (UTC)(link)
We have no way of transferring enough knowledge of these systems at a pace that is fast enough to be genuinely useful.

Increasingly I see a trend towards software that phones home when it crashes, and auto-upgrades itself when a new version is released [*]. Mozilla and Windows both do this, for example, and Google Airbag is a general purpose error-reporting system for this purpose.

This gets the knowledge of what has gone wrong to the people who can most efficiently utilize it, and also gets the fixes to the consumers ASAP.

Microsoft has had this system in place for quite a few years now and has used it to very good effect. More often than not, if Windows 2000 or Windows XP crashes, it is, in fact, a hardware or third-party driver problem.

[identity profile] pmb.livejournal.com 2006-12-24 09:03 pm (UTC)(link)
Auto upgrading worries me. I have this vision of a 0-day bug that spoofs DNS and auto-upgrades you to version Pwn3d.0 transparently and forever , but it's hopefully more complicated than that (digital signatures and the like) and it's not clear how this differs from the power of any other random exploit. Maybe it's the idea that someone, by taking control of my WAP, could take over my whole computer in a very creepy way.

But I am all for software phoning home when it crashes. When I developed software for a living, I used to receive an email EVERY TIME it crashed.

[identity profile] agthorr.livejournal.com 2006-12-24 09:12 pm (UTC)(link)
I'd like to think all the auto-upgrades use digital signatures, so the attacker would to acquire the root private key (a much more difficult task that spoofing DNS). Of course, if an attacker does manage to compromise such a root key, it would be Very Bad.

[identity profile] amoken.livejournal.com 2007-01-03 12:06 am (UTC)(link)
It worries me a bit too.

The other relevant trend re the same comment, though, is the rising popularity of wikis and blogs—and even the old message board seems to be gaining a bit. Very recent information available on a wide range of topics, and if you can't find it, you can ask and often receive. Of course, this has a higher rate of useless or even damaging info than most instruction manuals or even an experienced father, but it's a start. People are trying.

[identity profile] starmom.livejournal.com 2006-12-28 03:13 am (UTC)(link)
Cool!

[identity profile] bardand221.livejournal.com 2007-01-26 02:31 am (UTC)(link)
I do believe that ALL systems have bugs as you have pointed out. And certainly the ordinary consumers have no way of fixing these bugs and have to rely on extended warranties. But the thing is extended warranties will end. Of course system problems will always be there. And auto upgrading the system? Not a lot even understand how that works.

I know that to even ask if there is a perfect system is idealistic. But the thing is, we need a good enough system that would work perfectly for us. I am not just talking here about technology, but system as a whole.

patrissimo : “I hate it when people think of the economy as an object rather than a system.”

So do I.

Bardan Dorminc
http://www.fastcashadvanceonline.info
(http://www.findmypaydayloanonline.info)