News for hackers. Stuff that matters.
Re:Killed by a Machine: The Therac-25 by jacquesm on Monday August 01, 2016 @03:19PM (#12205121)
Yes. They also should be required study material for anybody that writes software interacting with the real world. Humans are fragile. I wrote a cad/cam system for a lathe/mill combo, in all the years that that system was out there we found one bug that made it out past my desk and that only happened because some idiot decided to demo a new feature to a prospect to try to close a sale.

The fact that a simple error could cause someone to lose a limb or die does wonders for your focus.

Re:Killed by a Machine: The Therac-25 by 0xdeadbeefbabe on Monday August 01, 2016 @04:59PM (#12205912)
Doesn't it also prevent focus?
Re:Killed by a Machine: The Therac-25 by jacquesm on Monday August 01, 2016 @05:07PM (#12206001)
For me it definitely doesn't. It became part of the release cycle, analyze each and every change made to make sure it was safe and have a whole bunch of code that was tested to the max but never ever changed that would shut down the machine if it ever got outside of it's expected envelope.

This is actually quite a tricky thing to do right because to be able to jog the machine out of a shut-down like that you have to re-enable it in a potentially un-safe situation. For each and every little challenge like that we found a good solution but some of those were real head-scratchers.

A really nasty one that I recall was that when you power up a bunch of latches they can come up in an undefined state, so the decision was made to include a detector for that undefined state which first would have to be cleared before the output of the latches was allowed to influence the motors.

This worked well in practice but given the restrictions of the machine this was all done on it took a bit of thinking, the solution we settled on was a magic sequence output on the parallel port indicating the system had successfully reset after which the relay powering the motor drivers would engage. So until that relay triggered everything else was ignored.

This was already important enough with stepper drivers, but once we switched to servos for some of the more demanding applications it became crucial to safe operation that the drivers would never ever be energized with faulty inputs. A servo driving a ball-screw will happily wreck itself, the machine it is bolted on to and anything standing in-between (including the operator) if it suddenly gets driven to -10 or +10 V and naturally, you'd always get one of those two, never the safe '0'.

Re:Killed by a Machine: The Therac-25 by 0xdeadbeefbabe on Tuesday August 02, 2016 @07:19PM (#12214188)
Is there also a way to make sure one guy isn't responsible? You know the way they credited Petrov with saving us from nuclear war?
Re:Killed by a Machine: The Therac-25 by jacquesm on Wednesday August 03, 2016 @11:51AM (#12218805)
Well, that can cut both ways. In Petrov's case it worked out well, but 'ownership' of a problem (and the associated responsibility) in smaller settings can also work to bring out the best in people.

Separation of duties is a good principle, and wherever possible you should use it.

https://en.wikipedia.org/wiki/Separation_of_duties

But in the case of a single tech guy in a company there isn't a whole lot you can do in that direction, so it is best to clearly assign ownership and make sure that the people involved realize full well the consequences of a fuck-up.