Re: I paid for school by working as an electrical engineer for a sex toy company
"Any good stories for, say, 'On Call' or the bootnotes section?"
I have a few. Here is the one I remember the most:
With our computer-controlled prototype, the programmer didn't see my note about a change to the motor control chips, we also received the wrong motors (I misread the order-number decoding table in the manufacturer's catalog). The newer controllers could handle quite a lot more load than the older ones, plus had finer-grained control over each motor (which used a different byte format, more on that later). We were also using a different motor configuration to improve efficiency.
Test day came around, a dozen motor clusters taped into place on our test rig (A silicone anatomically and proportionally correct model of a woman). System is booted up, all tests come back successfully. The motors are turned on to their lowest settings and all is going as planned. Next comes time to to bump the motors up one, at which point three things became clear to me: one, the programmer hadn't changed the endianness of the data going to the motor controllers; and two, the motors are orders of magnitude more efficient than my calculations would have suggested; and three, the motors that I got were, in fact, capable of handling the level of energy I was pumping into them. The motors started going crazy and started pulling up the tape while I was trying to shut the system down (and finding out that ctrl-C does not clear the motor controllers, but keeps them at the last state...). Before I could unplug everything, the motor clusters had successfully released themselves and now there were about a dozen metal eggs flying about, tethered to a control box and its power supply (Which also had its power outlet right next to it). I had to crawl being my chair, using it as a shield, to get over to the workbench and unplug the thing. Even with the shield, I still ended up quite a few bruises on my body and my office / lab ended up trashed.
The lesson here, I suppose, is to always, always double check your numbers. The motor part numbers were made up of a force ID, plus number of brushes and a lifetime factor. So intended to buy motors with an ID of 200, 6 brushes, and lifetime of 9, so ordered motor part 20069, when I should've gotten 269 and thus ended up with motors of a force/load of 20 times as large.
Although that wouldn't have been too much of a problem if I had confirmed the numbers coming from the output: The initial test should have outputted 0x1000 0000 0000 0001 (-1) with the second test giving me 0x1000 0000 0000 0010, rather the endian change didn't happen so the motor controller received 0x1000 0000 0000 0001 (-1) for the first test and 0x0100 0000 0000 0001 (16,385) for the second test.
Even at power levels of the intended motors, that value would be deep into our "for the most-experienced masochists and only with proper supervision" territory and normal safe limits being in the 1024-1536 range, but with the power being 20 times as much...