Stupid, stupid hardware
Mar. 8th, 2002 12:16 amI don't like hardware, never have.
Software has a certain elegance, it's all ones and zeros, on or off. If it works, then it's because of precisely laid out code. If it doesn't work, then it's all the fault of the programmer.
Or at least that's the theory. In practice, it's never quite that simple. Leaving aside the fact that beyond a certain level of complication software is extremely unpredictable, unless you're working at an incredibly low level, your software depends on other software to work properly. Your software calls other software, which calls other software which eventually works its way down the chain to some software which actually interacts with the hardware.
And the hardware is the problem. Hardware is real life. It's not on or off, it's usually in some fuzzy in between state. Computers work by taking this fuzzy inbetweenness and forcing it to extremes that can substitute for 1 and 0. So that -3 Volts = 0 and +3 Volts = 1 (for instance). If the voltage is actually 2.9V then that's probably a 1 and heck, it's close enough.
But, as you can see, hardware doesn't work in that clean, mathematical, pure state that software does, where every answer flows from the rules of the system and everything is (theoretically) predictable.
As a side note, due to non-functioning middleware (middleware is everything between your code and the computer. When I tell the computer to do something, all the layers that the command passes through before it gets to the hardware are middleware), I was once made very aware of how complex and teetering the world around us is, where everything we do depends on so many complex interactions outside of our control.
For example, when you buy a burger, imagine how many steps have to be gone through to get all the ingredients from every place around the world together in that place ready to give you that burger. How many things can go wrong at each step? How many people have to fulfil some kind of function? Isn't it amazing that any burgers ever end up at McDonald's at all?
Anyway, hardware. I spent 10 minutes under my desk today trying to work out why white noise was coming out of my speakers (I have a nice set of surround speakers, which allow me to pinpoint perfectly the person trying to shoot me in the back while playing Counterstrike, just in time to spin round and get shot in the front instead). I tried adjusting the volume on the PC - the fuzz stayed constant. I tried adjusting the volume on the speaker box - the fuzz stayed constant. I tried unplugging the speakers from the PC - the fuzz stayed constant. Finally, I looked around at all the mess of wires lying across the floor under my desk and unplugged the power cable for my Archos Jukebox, and moved the power cables from off of the speaker cables.
And the fuzz vanished. See, you'd never guess that was the problem, would you?
Software has a certain elegance, it's all ones and zeros, on or off. If it works, then it's because of precisely laid out code. If it doesn't work, then it's all the fault of the programmer.
Or at least that's the theory. In practice, it's never quite that simple. Leaving aside the fact that beyond a certain level of complication software is extremely unpredictable, unless you're working at an incredibly low level, your software depends on other software to work properly. Your software calls other software, which calls other software which eventually works its way down the chain to some software which actually interacts with the hardware.
And the hardware is the problem. Hardware is real life. It's not on or off, it's usually in some fuzzy in between state. Computers work by taking this fuzzy inbetweenness and forcing it to extremes that can substitute for 1 and 0. So that -3 Volts = 0 and +3 Volts = 1 (for instance). If the voltage is actually 2.9V then that's probably a 1 and heck, it's close enough.
But, as you can see, hardware doesn't work in that clean, mathematical, pure state that software does, where every answer flows from the rules of the system and everything is (theoretically) predictable.
As a side note, due to non-functioning middleware (middleware is everything between your code and the computer. When I tell the computer to do something, all the layers that the command passes through before it gets to the hardware are middleware), I was once made very aware of how complex and teetering the world around us is, where everything we do depends on so many complex interactions outside of our control.
For example, when you buy a burger, imagine how many steps have to be gone through to get all the ingredients from every place around the world together in that place ready to give you that burger. How many things can go wrong at each step? How many people have to fulfil some kind of function? Isn't it amazing that any burgers ever end up at McDonald's at all?
Anyway, hardware. I spent 10 minutes under my desk today trying to work out why white noise was coming out of my speakers (I have a nice set of surround speakers, which allow me to pinpoint perfectly the person trying to shoot me in the back while playing Counterstrike, just in time to spin round and get shot in the front instead). I tried adjusting the volume on the PC - the fuzz stayed constant. I tried adjusting the volume on the speaker box - the fuzz stayed constant. I tried unplugging the speakers from the PC - the fuzz stayed constant. Finally, I looked around at all the mess of wires lying across the floor under my desk and unplugged the power cable for my Archos Jukebox, and moved the power cables from off of the speaker cables.
And the fuzz vanished. See, you'd never guess that was the problem, would you?