At a friend's company, a network hub has been dying a horrible and slow (literally) death until this morning when it got replaced. Of course, they are asking how a networking device like that, without moving parts can start to produce random errors, become gradually slower and sporadically just outright stop working for a little while and then be fine again. Given that after my mostly unsuccessful and expensive attempts to do anything with hardware, a buddy of mine once said "if there is ever a robot invasion from outer space, we'll send Clemens and he'll kill them singlehandedly", that's an excellent question for which I have no good answer, but only a theory: bit erosion!

I suspect that they (our friends) have unhealthily balanced data that has substantially more "1"s than "0"s. Now, when you look at "1" vs. "0", you'll immediately know what I mean. "1" is a lot more edgy and when you send "1"s through a data bus or through a cable, it's pretty obvious that every "1" will scratch along the sides here and there. If you have balanced data, the "0" (round and smooth) will usually polish it all out and while the data bus shows a little bit of wear and tear over time, it usually works well for many, many Exabytes. Now, if you have many more "1"s go down the data bus than "0"s, the bus gets all scratchy from the inside, actual potholes develop and subsequently "1"s start to get stuck. When they get stuck, "0"s bump into them, other "1"s slip past (probably even through a "0"!) and it's all getting really messy. And when you look at it all on a few levels higher up, you start losing packets and stuff gets slow and in the end everybody is unhappy and blames it on the software. The only cure for the problem that I can think of is to do data balancing that ensures a proper proportional flow of "1"s and "0"s. I think that's a totally plausible explanation and cries out loud for software that fixes this problem. ;-)