2. “We are recovering from a network connectivity
issue this morning and restoring regular flight
operations.”
United Airlines 8th
of July 2015
400,000 passengers grounded
3. In our HyperConnected Modern World
What is more of a threat?
Which will kill you sooner?
CyberTerrorism
Or Terrible Code
4. 1980 - NORAD reported that the US was under
missile attack. The problem was caused by a
faulty circuit, a possibility the reporting software
hadn’t taken into account.
5. 1983 - Soviet Nuclear early warning system
malfunctioned and erroneously reported
incoming US missiles
Officer in charge decided to follow
gut feelings that it was a false alarm
7. 1985 - Therac-25 Radiation Therapy Machine
delivered a high-powered electron beam with 100
times the intended dose of radiation, delivering a
lethal dose of beta radiation
one-byte counter in a testing routine
frequently overflowed
8. 1991 – Gulf War Patriot Missile System software
had a delay and was not tracking the missile
launch in real time, thus giving Iraq’s missile the
opportunity to break through and explode before
anything could be done to stop.
In all, 28 were killed with an additional 100+
injured.
9. 1994 - Scotland, Chinook helicopter crashed and
killed all 29 passengers.
Initially the pilot was blamed for the crash
However evidence rised that a software error was
the actual cause
10. 2000 - Radiation Therapy planning software
delivered different doses depending on the order
in which data was entered.
This resulted in massive overdoses
5 deaths where known potentially 21 died
11. 2003 - Race Condition Bug causes blackout
across eight US states and Canada
affected 50 million people
12. 2003 - Computer software blunder at St. Mary’s
Mercy Medical Center in Grand Rapids, Michigan,
that cost the lives of 8500 patients.
16. As Software EATS the WORLD
Quality of Code becomes
not just important but a nessecity
Its not just a website going down
there are human lifes at stake
17. In the olden days Infrastructure was built to have
99.9999999% uptime
Modern Containers and MicroServices
architecture allows us to
design infrastrcture for failure
18. We need to architect our software for failure
We need to accommodate for failures
Software Bugs should NOT take a system down
Fault tolerant Code Design Patterns
20. Education is Key
Admitting we dont know everything
Asking for HELP
Learning from Each Other
Test Driven Development
Continous Quality Control
Build Checks into Release Cycles