Repeating Our Mistakes
[Editorial note: This post is a rant. Nothing here is a professional or academic opinion. It's supposed to be somewhat funny too, so read it accordingly.]
Why must we repeat our mistakes?
Our industry has an abysmal track record of repeating the same stupid mistakes over and over.
We started out with lots of different connectors for peripherals. I can understand that. Some connectors, such as serial and parallel were general purpose, and some were special because it was our first attempt. Live and learn. But we didn't learn, did we?
We had this cool new technology called "ethernet", which allows us to create arbetrary networks out of devices with RJ-45 plugs. Sweet! So, as the joke goes, I could have a toaster on this network, right? Read on when you're done laughing because you know as well as I do that we'll never be able to agree on a standard that a toaster could do anything useful with...
To solve the problem alluded to earlier (too many protocols for peripherals), our poster-child is USB, and look how cool it is that you don't need serial and parallel and ps/2 mice and ps/2 or AT keyboards and external SCSI and special sound plugs and hey we can even power trivial trinkets like led desk lights and small massagers (wtf?) off of it! But, alas, we hadn't actually learned anything, even if we had agreed on whether USB or Firewire is better instead of arguing over it for the next (so far) 10 years or so.
We already had this cool not-so-new-anymore technology for making networks (which is really what USB and Firewire are all about), called "ethernet". I know you're all probably too young to remember the "ethernet", but it was this neat generalized protocol where any device can send packets with arbetrary data to any other device (or all devices) on what was called a "local area network". Why couldn't this work for peripherals too? Sure IP might not be the best protocol to run on top of it (or maybe it would be), but why can't we reuse the tools that already fit the job?
Meanwhile, we're out making a complunderful (complex and wonderful) standard called USB that runs at a whopping 11mbps. (At the time, this obscure "ethernet" thing did 100mbps, and today it's still faster than both USB and Firewire.) In fact, this protocol is so complunderful, we STILL haven't figured out how to support it in boot loaders so you can fully support something as trivial as a keyboard. I mean, wow. It's only been 10 years or so, guys. Why can't all the major OSs and BIOS makers support it yet?! (In all fairness, the only BIOSs I've tried are 5 years old, but FreeBSD 6.1's boot loader still can't figure out a USB keyboard on all computers, which means USB keyboards are totally worthless to me.)
Oh ya we have USB, Firewire, and ethernet to choose from, but none of those were really ever designed to handle something as specific as a hard disk. The awesome complexity of a hard disk clearly requires extremely specialized interfaces and hardware and software to do anything or it'll be nothing more than a USB Mass Storage Device. As I said, I can't even hope to comprehend the minute details of a hard disk interface so how could I possibly know anything about what SATA really does that ethernet can't.
Which brings me to plugs. Haven't we learned a damn thing from the idiots that designed the USB plug? Isn't anyone who designs this junk actually using it? Haven't they been irritated by USB devices coming unplugged or older ports that have become loose from being used over and over? (*cough*RJ-45 sure didn't seem to have these problems.) Or is it all a big conspiracy to prevent us from crimping our own cables so Best Buy can rip us off on 3-foot cables for $19.99? Plugs should be secured into place! And they should not be flimsy! SATA didn't really improve anything in terms of cabling; it just changed to problem from "bulky" to "flimsy", and I'd rather have "bulky".
Why do we have so damn many internal power connectors?! (AT motherboard (actually 2 of these), ATX motherboard, 2 or 3 extensions to that, two legacy connectors for disks, and SATA power.) How about one power connector that supplies ground, 3.3v, 5v, and 12v on a 4-conductor plug that isn't so hard to (dis)connect. If you need more amps, use more of the same connector. A motherboard might have 5 power cables going to it, but at least it'd be scalable, instead of having 4 or 5 types that don't scale. And make these power connectors available externally as well. Duh!
I can understand the first version being ad-hoc, but when ATX came out, why didn't we learn anything from our history?
New concept: Component reuse.
I think I may have heard of this concept in really advanced new-fangled software engineering classes targeted at making software so complunderful that the "merest operational parameters I am not worthy to calculate". In any case, while it's far too high-level to be of any real usefulness, the basic premise is that if you already have something that will do the job, use it, and if you don't, make something you can reuse on something unrelated sometime down the road. I know it's silly to even mention it for hardware, because obviously the experts designing this complunderful stuff have wayyyy more experience than I do and again I couldn't possibly hope to comprehend the intricate interplay between all the electrical signals of a computer.
But is it too much to ask that my devices interoperate seemlessly?! Or that new hardware use existing interfaces so we don't have to completely reengineer all our software?
GET A CLUE! We're wasting billions of dollars and years of time that could be spent on new development instead of poorly reinventing stuff we already have that works well. Computers would be twice as fast if hardware makers had just paid attention in software engineering class. Software would be light-years ahead if it wasn't bogged down in supporting all this extra crap we keep inventing.
I'm starting to calm down now. It really feels good to rant sometimes. Maybe I'll revise this or add to it if I get fired up again while I finish fixing my broken computers. If you actually read this far, I'm sorry because I probably wasted your time.
Later I found this List of device bandwidths on Wikipedia. At the time of this writing, 10 gigabit copper ethernet outperforms everything except memory buses, fiber networking, PCI, and AGP. Even SCSI only performs at about half that speed, at distances far shorter than 100 meters. Admittedly, 10GbE is in its infancy, but that won't last long.
Interestingly, iSCSI is doing exactly what I'm talking about above, but I didn't know about it at the time I wrote the rant above. I'm glad someone is considering the possibility of using ethernet for more than just host-to-host networking.
In any case, I just want people to stop making this rat's nest of standards and cabling worse than it already is for no good reason; it is just making things harder for users and software people.