"We hold all Earth to plunder
All time and space, as well
Too wonder-stale to wonder
At each new miracle"
(Rudyard Kipling)
So last night, annoyed because the frackin' basketball game screwed up my TiVo recording of Lost, I decided to DL the episode I missed from iTunes and watch it on my iPod.
Now just think about all that for a second.
I have a computer sitting in my living room which does nothing but record TV for me. From the famous (and
apocryphal) prediction that "There is a worldwide market for perhaps 5 computers" to the fact I've got more than that lying around my house.
One of which just records TV programs. We don't think about the ludicrousness of that concept because it's become so ingrained into our daily lives.
And of course the computer in my living room is in constant conversation with computers elsewhere. It's utterly transparent -- I don't even know when it dials out or where it's calling. It just does it, automagically, and I only need to worry about it when I move or when the phone numbers change. When I was in college, getting two computers to talk to each other was a complex and error-prone task; now it's "plug in a cable". (I once wrote a low-level FTP driver, one which literally talked to the ethernet hardware. The amount of work needed to move a single byte back and forth, at the machine level, is astounding.)
But, even in this age of miracles, there are failures. TiVo could not adjust for a live basketball game running overtime. So I casually launched iTunes, clicked some buttons, plugged in my iPod, and bought an episode to watch.
The file size is 218 megabytes, or about 109,000 pages of printed text. It's also about eleven times the size of my first hard drive, which was 20 megabytes. It took a few minutes to download. If I'd been using the 1200 baud modem which was my first gateway to cyberspace, it would have taken about 17 days to download. Not that I could have maintained a glitch free connection over copper phone lines for 17 days -- or had enough disk space to store it on. (250 meg of disk space would have cost me, oh, call it 10 grand or so. Today, of course, I have a 256 meg data key which cost me 30 bucks.)
The casual transparency doesn't end there, of course. Buying it set off a sequence of computers calling computers calling computers to debit my back account. Hundreds of thousands of lines of code executed flawlessly in a handful of milliseconds. To trace the entire sequence of code, even at a source level (never mind machine language or library calls) would probably take a human lifetime.
So the file is downloaded, and then I watch it. On a device which weighs a few ounces, at most, on a screen less than half an inch deep. I remember the days of televisions with dials, huge, bulky, CRTs which produced wavy, blurry, images. Today, images are digital particles, not analog waves, and they can be shown with liquid crystal clarity.
Again, the underlying complexity vanishes. The mathematics of coding and decoding video are hideously complex. It's not just a frame-by-frame digitization, but an intricate compression and decompression algorithm, performed so quickly that there's no evidence it exists. A human mathematician would spend most of his life trying to manually decode a single frame, and he'd probably get it wrong.
It constantly amazes me that any of it works at all. I'm aware of what is needed, say, for the hard drive in my iPod to read and write data. It's a process where everything has to be correct within a few gazillionths of an inch, and yet, it happens when the device is being moved around, tossed, jiggled, licked by cats, etc. For the screen to be as sharp as it is requires obscenely precise manufacturing, yet this can be done cheaply enough that the devices' 2-3 year lifespans are economically acceptable.
The fragility of it worries me the most, especially to the extent which any machines functionality is dependent on the external communication grid being functional. Even something like installing software is becoming more and more dependant on getting a key or a confirmation from a remote server. This means that, over time, a standalone machine will be useless in any kind of widespread communications outage -- and such outages are increasingly likely to happen. It's not easy to destroy a million computers, but it's easy enough to take out the network which links them. Then what?
Comments (3)
Then... the network guys use their backup server after figuring out whatever took out the first one and setting up a protocol to keep it from affecting the backup?
Networks get knocked out all the time. We're in a society that thinks more than a few hours of downtime is outrageous. Besides the beauty of our network is that it isn't centrally located. There are hundreds of ISPs, countless server hubs and nearly infinate individual computers. To kill the entire network would be as difficult as the RCAA shutting down all the napster clones.
Still, speaking as someone who only understands one coding language, I can still admire the complexity you're talking about. It's nothing short of amazing what humanity can come up with.
Although it is an urban myth that DARPA sponsored the development of TCP/IP to construct a nuclear-holocaust-proof network, they did want the Internet to be a decentralized entity. Its nature is to route around damage. As to our software's dependence on signing keys and confirmation mechanisms, well that's where Software Freedom comes in I reckon... GPG for public key cryptography supported web-of-trust, etc... Not that Software Freedom would automagically become commonplace, though...
But interesting train of thought, nonetheless. What with all the talk about Net Neutrality and Universal Wireless Broadband, etc. Very much worth exploring. I'm interested in hearing more.