WEBVTT - TechStuff Classic: Bad Computer Bugs

0:00:04.440 --> 0:00:12.239
<v Speaker 1>Welcome to tech Stuff, a production from iHeartRadio. Hey there,

0:00:12.320 --> 0:00:15.800
<v Speaker 1>and welcome to tech Stuff. I'm your host, Jonathan Strickland.

0:00:15.840 --> 0:00:19.079
<v Speaker 1>I'm an executive producer with iHeartRadio, and how the tech

0:00:19.120 --> 0:00:22.480
<v Speaker 1>are you? It is time for a tech Stuff classics episode.

0:00:22.880 --> 0:00:27.920
<v Speaker 1>This episode originally published on December seventh, twenty sixteen. It

0:00:28.000 --> 0:00:33.000
<v Speaker 1>is called bad Computer Bugs. No, it was twenty sixteen,

0:00:33.080 --> 0:00:36.680
<v Speaker 1>the year where like bedbugs became a big news item.

0:00:36.840 --> 0:00:40.560
<v Speaker 1>Like there was a year where it just bed bugs

0:00:40.600 --> 0:00:43.000
<v Speaker 1>were in the news, and I'm wondering if that was

0:00:43.000 --> 0:00:45.559
<v Speaker 1>twenty sixteen. At this point it goes to show that

0:00:45.600 --> 0:00:48.800
<v Speaker 1>I haven't actually listened back to this episode, but yeah,

0:00:48.840 --> 0:00:53.279
<v Speaker 1>Bad Computer Bugs. It originally published December seventh, twenty sixteen.

0:00:53.760 --> 0:00:57.400
<v Speaker 1>Let's take a listen, now, shall we. I have to

0:00:57.480 --> 0:01:02.760
<v Speaker 1>address a bit of apocryphal history, and regrettably it's a

0:01:02.800 --> 0:01:05.760
<v Speaker 1>story that we've repeated on tech Stuff. So I'm sad

0:01:05.800 --> 0:01:10.800
<v Speaker 1>to admit that I was complicit, although unknowingly, in the

0:01:10.840 --> 0:01:15.160
<v Speaker 1>spread of misinformation, and that all has to do with

0:01:15.200 --> 0:01:18.360
<v Speaker 1>the origin of the term bug to describe a flaw

0:01:18.480 --> 0:01:22.720
<v Speaker 1>in programming. So here's the popular story, the one that

0:01:22.959 --> 0:01:29.760
<v Speaker 1>we have accidentally promoted on tech stuff without knowing that

0:01:29.800 --> 0:01:33.120
<v Speaker 1>we were in the wrong. It goes that Grace Hopper,

0:01:33.440 --> 0:01:35.959
<v Speaker 1>who was an early computer scientist who rose to the

0:01:36.040 --> 0:01:39.480
<v Speaker 1>rank of Rear admiral in the US Navy, coined the

0:01:39.560 --> 0:01:43.760
<v Speaker 1>phrase bug after discovering a moth guming up Harvard's Mark

0:01:43.880 --> 0:01:49.000
<v Speaker 1>II calculator, a literal bug. Generally speaking, the story tends

0:01:49.040 --> 0:01:53.080
<v Speaker 1>to be set in nineteen forty five, and there is

0:01:53.200 --> 0:01:56.280
<v Speaker 1>even a note in the logbook that reads first actual

0:01:56.400 --> 0:02:00.240
<v Speaker 1>case of bug being found that's attributed to Grace Hopper.

0:02:01.200 --> 0:02:05.559
<v Speaker 1>But there are several points that are wrong in this story. First,

0:02:05.640 --> 0:02:08.480
<v Speaker 1>the year. It didn't happen in nineteen forty five. It

0:02:08.520 --> 0:02:11.520
<v Speaker 1>happened on September ninth, nineteen forty seven. We know because

0:02:11.560 --> 0:02:15.480
<v Speaker 1>there's a logbook. At the logbook that marks the incident

0:02:15.760 --> 0:02:18.680
<v Speaker 1>not only has the notes, it actually has the moth

0:02:18.840 --> 0:02:23.760
<v Speaker 1>taped into the book itself. It's taped onto the page. Second,

0:02:23.840 --> 0:02:27.240
<v Speaker 1>Grace Hopper wasn't the person to discover the moth or

0:02:27.440 --> 0:02:31.640
<v Speaker 1>make that log entry. She did tell the story about

0:02:31.680 --> 0:02:35.040
<v Speaker 1>the moth several times, but it wasn't in the context

0:02:35.120 --> 0:02:38.880
<v Speaker 1>of finding it or logging it. She just told the

0:02:38.880 --> 0:02:41.040
<v Speaker 1>story that, yeah, we really did have a bug in

0:02:41.080 --> 0:02:44.920
<v Speaker 1>the system, and most importantly, the word bug had already

0:02:44.960 --> 0:02:49.200
<v Speaker 1>been used to describe design flaws for decades before the

0:02:49.240 --> 0:02:52.679
<v Speaker 1>Mark II was even designed. In fact, if you look

0:02:52.680 --> 0:02:55.840
<v Speaker 1>at the logbook, this makes sense. It says first actual

0:02:55.919 --> 0:02:59.880
<v Speaker 1>case of bug being found. That sentence doesn't make sense

0:03:00.200 --> 0:03:04.399
<v Speaker 1>unless you've already used the word bug to describe a flaw,

0:03:04.880 --> 0:03:08.760
<v Speaker 1>because you wouldn't say first actual case of bug being found.

0:03:09.320 --> 0:03:13.920
<v Speaker 1>The wording doesn't make any sense. The context makes no sense. Sadly,

0:03:13.960 --> 0:03:17.639
<v Speaker 1>there are documented quotes dating back to the nineteenth century

0:03:18.120 --> 0:03:21.480
<v Speaker 1>using the word bug to mean a design fault, and

0:03:21.520 --> 0:03:25.360
<v Speaker 1>it could go back even further than that. So is

0:03:25.400 --> 0:03:28.200
<v Speaker 1>with much regret that I admit I have unwittingly contributed

0:03:28.240 --> 0:03:31.080
<v Speaker 1>to a bit of misleading folklore making the rounds. But

0:03:31.120 --> 0:03:33.480
<v Speaker 1>I'm glad I can take this opportunity to address it.

0:03:34.120 --> 0:03:36.640
<v Speaker 1>All Right, So let's talk about design bugs, and I'll

0:03:36.680 --> 0:03:41.520
<v Speaker 1>be covering several goofs, mistakes, flubs, flaws, and outright catastrophes

0:03:41.640 --> 0:03:45.640
<v Speaker 1>in this episode. But one thing I'm not necessarily going

0:03:45.680 --> 0:03:49.600
<v Speaker 1>to cover our software vulnerabilities that were later exploited either

0:03:49.680 --> 0:03:53.280
<v Speaker 1>by opportunistic hackers or white hats who are just trying

0:03:53.320 --> 0:03:57.720
<v Speaker 1>to improve system security. Those vulnerabilities are common in many

0:03:57.760 --> 0:04:01.000
<v Speaker 1>types of software and arise not just through mistakes, but

0:04:01.480 --> 0:04:05.720
<v Speaker 1>sometimes simple oversights. And I think it might be more

0:04:05.760 --> 0:04:08.080
<v Speaker 1>fun to look at some real bugs, like stuff that

0:04:08.520 --> 0:04:11.320
<v Speaker 1>made things go wrong, stuff that may have rendered a

0:04:11.320 --> 0:04:15.080
<v Speaker 1>program defunct or otherwise caused headaches. Now I'm going to

0:04:15.120 --> 0:04:17.400
<v Speaker 1>make an exception to this. I'm going to start off

0:04:17.440 --> 0:04:21.000
<v Speaker 1>with the Ping of death. And I only mention it

0:04:21.040 --> 0:04:24.800
<v Speaker 1>because it has an awesome name. Now, this flaw caused

0:04:24.839 --> 0:04:27.680
<v Speaker 1>headaches back in nineteen ninety five and ninety six. It

0:04:27.760 --> 0:04:32.640
<v Speaker 1>was a flawed IP fragmentation reassembly code, and it became

0:04:32.680 --> 0:04:35.560
<v Speaker 1>possible to crash lots of different types of computers using

0:04:35.560 --> 0:04:39.760
<v Speaker 1>different operating systems, although Windows machines were particularly vulnerable, and

0:04:39.839 --> 0:04:42.680
<v Speaker 1>this particular flaw would make a Windows machine revert to

0:04:42.760 --> 0:04:46.200
<v Speaker 1>the dreaded blue screen of death. And it all happened

0:04:46.200 --> 0:04:49.800
<v Speaker 1>by sending a special ping packet over the Internet. So,

0:04:49.920 --> 0:04:52.120
<v Speaker 1>for those of you who aren't familiar with what that is,

0:04:52.200 --> 0:04:55.680
<v Speaker 1>a ping is essentially a simple message that checks for

0:04:55.800 --> 0:04:59.320
<v Speaker 1>a connection between two computers. You send one ping from

0:04:59.320 --> 0:05:01.520
<v Speaker 1>a computer to a another one and look for a

0:05:01.560 --> 0:05:04.479
<v Speaker 1>response so that way you verify there is in fact

0:05:04.520 --> 0:05:07.240
<v Speaker 1>a connection. You can also tell other things like how

0:05:07.320 --> 0:05:10.800
<v Speaker 1>fast is that connection between those two computers. Now, in

0:05:10.839 --> 0:05:13.800
<v Speaker 1>this case, you would have to actually design a malformed

0:05:13.920 --> 0:05:17.240
<v Speaker 1>ping request and send that to a target and it

0:05:17.279 --> 0:05:21.520
<v Speaker 1>would bring that target down. That's the only security vulnerability

0:05:21.560 --> 0:05:24.200
<v Speaker 1>story I really wanted to focus on. The others are

0:05:24.240 --> 0:05:27.960
<v Speaker 1>all just design flaws. And let's begin with the bug

0:05:27.960 --> 0:05:30.120
<v Speaker 1>that inspired me to do this episode in the first place,

0:05:30.200 --> 0:05:33.720
<v Speaker 1>that Spotify bug I mentioned earlier. Ours Tetnica wrote a

0:05:33.760 --> 0:05:36.479
<v Speaker 1>piece on it in November twenty sixteen, but the problem

0:05:36.560 --> 0:05:39.560
<v Speaker 1>seems to date back at least as far as June

0:05:39.640 --> 0:05:43.760
<v Speaker 1>twenty sixteen, and that's when a few savvy Spotify users

0:05:43.880 --> 0:05:47.680
<v Speaker 1>noticed some unusual activities on their computers, and it took

0:05:47.680 --> 0:05:49.760
<v Speaker 1>a little bit of detective work, but they discovered that

0:05:49.800 --> 0:05:53.600
<v Speaker 1>Spotify was apparently generating a huge amount of data on

0:05:53.640 --> 0:05:58.760
<v Speaker 1>a daily basis, like gigabytes of data per day. And

0:05:58.800 --> 0:06:02.039
<v Speaker 1>the culprit turned out to be a vacuum process for

0:06:02.120 --> 0:06:06.400
<v Speaker 1>a database file containing the string mercury dot dB. Now,

0:06:06.400 --> 0:06:10.120
<v Speaker 1>the vacuum process is the digital equivalent of vacuum ceiling.

0:06:10.240 --> 0:06:12.960
<v Speaker 1>It's meant to repack data so that it takes up

0:06:13.040 --> 0:06:16.200
<v Speaker 1>less space on a drive. Now, this involves building a

0:06:16.240 --> 0:06:19.640
<v Speaker 1>new file to maximize efficiency, which is a good thing

0:06:19.800 --> 0:06:26.040
<v Speaker 1>generally speaking. The problem was that Spotify's version was making

0:06:26.040 --> 0:06:28.400
<v Speaker 1>it happen way too frequently, like on the order of

0:06:28.440 --> 0:06:32.560
<v Speaker 1>once every few minutes. So that's not generally necessary. You

0:06:32.560 --> 0:06:35.400
<v Speaker 1>don't need to rebuild a database file every few minutes

0:06:35.440 --> 0:06:38.520
<v Speaker 1>to make sure it's the most efficient size it can be.

0:06:39.640 --> 0:06:42.919
<v Speaker 1>So each rebuild represented a relatively small amount of data,

0:06:43.000 --> 0:06:45.960
<v Speaker 1>but over time it added up, which meant that if

0:06:46.000 --> 0:06:48.839
<v Speaker 1>you had Spotify on on your computer, even if it

0:06:48.880 --> 0:06:51.640
<v Speaker 1>was just running in the background, it would be generating

0:06:51.640 --> 0:06:55.760
<v Speaker 1>gigabytes worth of information rewriting this file over and over. Now,

0:06:55.800 --> 0:06:58.600
<v Speaker 1>it wasn't filling up a hard drive. It was just

0:06:58.839 --> 0:07:04.159
<v Speaker 1>overwriting the same file. Now, if it had been filling

0:07:04.240 --> 0:07:06.240
<v Speaker 1>up a hard drive, people would have noticed much earlier,

0:07:06.279 --> 0:07:09.320
<v Speaker 1>and it wouldn't have just been savvy Spotify users, because

0:07:09.320 --> 0:07:12.200
<v Speaker 1>you would suddenly notice, hey, I can't save anything to

0:07:12.200 --> 0:07:15.840
<v Speaker 1>my hard drive because everything's filling up. Instead, again, it

0:07:15.920 --> 0:07:18.480
<v Speaker 1>was just sort of writing and deleting, and writing and

0:07:18.520 --> 0:07:21.320
<v Speaker 1>deleting the same file over and over again, and that

0:07:21.360 --> 0:07:23.440
<v Speaker 1>probably doesn't sound like a big deal, but it is

0:07:23.480 --> 0:07:27.160
<v Speaker 1>a problem if you're using a solid state drive or SSD.

0:07:28.040 --> 0:07:30.640
<v Speaker 1>So one of the drawbacks of an SSD is that

0:07:30.720 --> 0:07:34.560
<v Speaker 1>over time it loses storage capacity. Like you can store

0:07:34.960 --> 0:07:39.040
<v Speaker 1>less data on an SSD over time. Now, by overtime

0:07:39.080 --> 0:07:41.280
<v Speaker 1>I generally mean over a great deal of time and

0:07:41.320 --> 0:07:44.040
<v Speaker 1>a lot of different data being written to it and overwritten.

0:07:45.880 --> 0:07:49.080
<v Speaker 1>Generally speaking, most of us end up replacing our drives

0:07:49.120 --> 0:07:51.640
<v Speaker 1>before we get to a point where the loss of

0:07:51.720 --> 0:07:55.240
<v Speaker 1>capacity is a real issue. But similar in a way

0:07:55.280 --> 0:07:57.400
<v Speaker 1>to how a battery can lose its ability to hold

0:07:57.400 --> 0:08:01.200
<v Speaker 1>a full charge after you've gone through lots of charging

0:08:01.240 --> 0:08:04.520
<v Speaker 1>and discharging cycles, you know how a battery won't be

0:08:04.600 --> 0:08:07.200
<v Speaker 1>able to hold as much even if it says it's

0:08:07.280 --> 0:08:09.560
<v Speaker 1>up to one hundred percent, But one hundred percent doesn't

0:08:09.640 --> 0:08:12.280
<v Speaker 1>last you as long as it used to. That's because

0:08:12.440 --> 0:08:15.400
<v Speaker 1>its capacity to hold a full charge has decreased over time.

0:08:16.920 --> 0:08:19.600
<v Speaker 1>But let's say you've got a program that's just constantly

0:08:19.680 --> 0:08:23.480
<v Speaker 1>overwriting data to your drive, you might discover that your

0:08:23.520 --> 0:08:28.280
<v Speaker 1>SSD's useful lifespan has been drastically reduced. So as I

0:08:28.360 --> 0:08:32.360
<v Speaker 1>record this episode, Spotify has already rolled out an updated

0:08:32.440 --> 0:08:35.000
<v Speaker 1>version of its desktop application, and that, by the way,

0:08:35.080 --> 0:08:37.560
<v Speaker 1>is the only version of Spotify that was affected. If

0:08:37.600 --> 0:08:41.360
<v Speaker 1>you use web based Spotify or mobile Spotify, you're in

0:08:41.400 --> 0:08:43.959
<v Speaker 1>the clear already. If you use a desktop version, as

0:08:43.960 --> 0:08:46.960
<v Speaker 1>long as you have version one point zero point four

0:08:47.000 --> 0:08:51.880
<v Speaker 1>to two or later, you are fine. But if you

0:08:51.920 --> 0:08:54.280
<v Speaker 1>did have that earlier version and you just had Spotify

0:08:54.360 --> 0:08:57.360
<v Speaker 1>running on in the background, chances are it was writing

0:08:57.360 --> 0:09:00.680
<v Speaker 1>to your hard drive like crazy. So what about some

0:09:00.720 --> 0:09:03.440
<v Speaker 1>of the other big bugs in computer history. Well, some

0:09:03.480 --> 0:09:06.280
<v Speaker 1>of the real doozies involve our attempts to explore the

0:09:06.320 --> 0:09:10.080
<v Speaker 1>final frontier. So we'll be talking about space a few

0:09:10.080 --> 0:09:12.520
<v Speaker 1>times in this episode, and we'll start with an early

0:09:12.760 --> 0:09:16.720
<v Speaker 1>US satellite. So first up is a nineteen sixty two

0:09:16.840 --> 0:09:20.760
<v Speaker 1>blunder involving the Mariner one. So some backstory on this one.

0:09:21.720 --> 0:09:23.560
<v Speaker 1>We're going to talk a lot about the Soviet Union

0:09:23.559 --> 0:09:26.560
<v Speaker 1>in this episode too. It takes a couple of roles

0:09:26.640 --> 0:09:29.280
<v Speaker 1>as we go on, But in this case, the then

0:09:29.480 --> 0:09:33.440
<v Speaker 1>USSR had launched Sputnik into orbit in nineteen fifty seven,

0:09:33.440 --> 0:09:36.280
<v Speaker 1>which really kicked off the space race and also was

0:09:36.400 --> 0:09:39.000
<v Speaker 1>a big shot in the Cold War because the Soviet

0:09:39.080 --> 0:09:42.360
<v Speaker 1>Union was essentially saying, hey, we can launch this into space,

0:09:42.400 --> 0:09:46.200
<v Speaker 1>we could also launch something at you. In response, the

0:09:46.280 --> 0:09:48.200
<v Speaker 1>US done sort of the same thing. They had launched

0:09:48.240 --> 0:09:51.360
<v Speaker 1>some satellites into space, and the Mariner one was going

0:09:51.440 --> 0:09:54.240
<v Speaker 1>to be a big, big feather in the cap of

0:09:54.320 --> 0:09:56.439
<v Speaker 1>the US. The whole idea was to launch a probe

0:09:56.440 --> 0:09:59.400
<v Speaker 1>that would be a flyby probe and it would go

0:09:59.440 --> 0:10:05.280
<v Speaker 1>by Venus. So NASA, which was newly formed in nineteen

0:10:05.360 --> 0:10:08.360
<v Speaker 1>sixty two, was taking control of this, and the budget

0:10:08.400 --> 0:10:12.000
<v Speaker 1>for this particular project was eighteen point five million dollars, which,

0:10:12.080 --> 0:10:14.840
<v Speaker 1>if you were to adjust for inflation, would be almost

0:10:14.880 --> 0:10:19.079
<v Speaker 1>one hundred and fifty million dollars today, So one hundred

0:10:19.080 --> 0:10:21.920
<v Speaker 1>and fifty million dollar project to launch the Mariner one

0:10:21.960 --> 0:10:25.200
<v Speaker 1>and have it fly by Venus. But, as I'm sure

0:10:25.240 --> 0:10:27.960
<v Speaker 1>you guys have figured out by now based upon the

0:10:28.120 --> 0:10:31.679
<v Speaker 1>topic of this podcast, not all went according to plan.

0:10:33.000 --> 0:10:36.959
<v Speaker 1>Not long at all. After the rocket launched from the

0:10:37.040 --> 0:10:40.680
<v Speaker 1>launch pad, it began to veer off course, and neither

0:10:40.720 --> 0:10:43.600
<v Speaker 1>the computer controls on the rocket or manual controls back

0:10:43.640 --> 0:10:47.880
<v Speaker 1>at HQ could correct for the problem. The rocket's course

0:10:48.440 --> 0:10:50.360
<v Speaker 1>was such that it was going to take it over

0:10:50.480 --> 0:10:54.000
<v Speaker 1>shipping lanes, which meant there could be a potential catastrophe,

0:10:54.400 --> 0:10:58.040
<v Speaker 1>and so a range safety officer made the difficult call

0:10:58.160 --> 0:11:00.800
<v Speaker 1>and issued the command to blow the whole thing up

0:11:01.480 --> 0:11:05.080
<v Speaker 1>just shy of three hundred seconds after it launched. So

0:11:05.120 --> 0:11:07.440
<v Speaker 1>what happened? What why did it go off course in

0:11:07.440 --> 0:11:09.600
<v Speaker 1>the first place? Well, there was a flaw in the

0:11:09.600 --> 0:11:13.400
<v Speaker 1>spacecraft's guidance software which diverted the rocket, and no amount

0:11:13.440 --> 0:11:16.520
<v Speaker 1>of commands from ground control could correct for it. After

0:11:16.559 --> 0:11:21.520
<v Speaker 1>a lengthy investigation, NASA discovered the error was the result

0:11:21.600 --> 0:11:27.520
<v Speaker 1>of a mistake transcribing handwritten notes into computer code. So

0:11:27.559 --> 0:11:32.160
<v Speaker 1>someone just took some handwritten notes and misinterpreted one of them,

0:11:32.880 --> 0:11:38.720
<v Speaker 1>and that one mistake was enough to crash the rocket

0:11:38.800 --> 0:11:44.760
<v Speaker 1>or to necessitate it being destroyed. The great science fiction

0:11:45.280 --> 0:11:49.440
<v Speaker 1>author Arthur C. Clark wrote that the Mariner one was

0:11:49.600 --> 0:11:54.360
<v Speaker 1>wrecked by the most expensive hyphen in history, which isn't

0:11:54.400 --> 0:11:57.560
<v Speaker 1>quite right, but it's pretty funny, I mean, come on,

0:11:57.679 --> 0:12:01.880
<v Speaker 1>its humorous phrase. So the actual punctuation mark that caused

0:12:01.920 --> 0:12:05.040
<v Speaker 1>the problem was not technically a hyphen. It was a

0:12:05.080 --> 0:12:09.440
<v Speaker 1>superscript bar. Superscript bars, by the way, not a place

0:12:09.480 --> 0:12:12.760
<v Speaker 1>where playwrights hang out. To get tore up. A superscript

0:12:12.760 --> 0:12:16.040
<v Speaker 1>bar just means it's a horizontal bar that is above

0:12:16.200 --> 0:12:19.520
<v Speaker 1>some other symbol. In this case, it was a radius symbol,

0:12:20.160 --> 0:12:23.760
<v Speaker 1>and that was a symbol along with the superscript bar

0:12:24.040 --> 0:12:28.080
<v Speaker 1>to describe a smoothing function, which means the formula was

0:12:28.120 --> 0:12:32.040
<v Speaker 1>meant to calculate smoothed values over the time derivative of

0:12:32.080 --> 0:12:37.520
<v Speaker 1>a radius. Now, without the smoothing function, tiny deviations in

0:12:37.640 --> 0:12:40.880
<v Speaker 1>course sent commands to the rocket's thrusters to kick in

0:12:40.920 --> 0:12:44.760
<v Speaker 1>big time to overcorrect for that problem. As an analogy,

0:12:44.840 --> 0:12:47.559
<v Speaker 1>imagine you're driving a vehicle and you see a pothole

0:12:47.960 --> 0:12:50.560
<v Speaker 1>in the road and you're approaching it, and instead of

0:12:51.120 --> 0:12:55.320
<v Speaker 1>gently steering out of the way, you wrench the wheel

0:12:55.559 --> 0:12:57.680
<v Speaker 1>really hard to the left or to the right in

0:12:57.760 --> 0:13:00.280
<v Speaker 1>order to try and get around this pothole. That's kind

0:13:00.280 --> 0:13:02.360
<v Speaker 1>of what was happening with the rocket. It didn't have

0:13:02.400 --> 0:13:05.439
<v Speaker 1>the smoothing function and so as a result, it was

0:13:05.520 --> 0:13:09.640
<v Speaker 1>having these wild deviations and course. So it wasn't a

0:13:09.720 --> 0:13:14.000
<v Speaker 1>hyphen that caused the problem, was close enough. Our next

0:13:14.040 --> 0:13:16.480
<v Speaker 1>space story takes place in nineteen ninety six with the

0:13:16.480 --> 0:13:22.480
<v Speaker 1>European Space Agency's Ari Anne five flight five oh one rocket. Now,

0:13:22.520 --> 0:13:24.880
<v Speaker 1>this rocket was to launch into space on June fourth,

0:13:25.040 --> 0:13:30.040
<v Speaker 1>nineteen ninety six, and instead the rocket disintegrated forty seconds

0:13:30.080 --> 0:13:33.760
<v Speaker 1>after taking off. So what the heck happened? Well, it

0:13:33.840 --> 0:13:37.760
<v Speaker 1>largely had to do with the ESA reusing old work.

0:13:38.120 --> 0:13:40.880
<v Speaker 1>This actually becomes a theme in this episode. One of

0:13:40.920 --> 0:13:44.960
<v Speaker 1>the morals the of this entire podcast is, if you're

0:13:45.000 --> 0:13:50.040
<v Speaker 1>designing something a successor to an earlier product, and you'd

0:13:50.080 --> 0:13:53.480
<v Speaker 1>want to reuse some of the features that you created

0:13:53.520 --> 0:13:57.559
<v Speaker 1>in your previous product, test the heck out of it

0:13:57.720 --> 0:14:01.160
<v Speaker 1>in its new form, factor, because it could be that

0:14:01.200 --> 0:14:04.960
<v Speaker 1>things that worked perfectly fine in the earlier model will

0:14:05.040 --> 0:14:10.160
<v Speaker 1>go awry in the new one. That's what happened here. So,

0:14:10.400 --> 0:14:13.320
<v Speaker 1>as you might guess from the name, the Ariyan five

0:14:13.600 --> 0:14:17.240
<v Speaker 1>marked the fifth generation of launch vehicles under that name.

0:14:17.440 --> 0:14:22.200
<v Speaker 1>The Arian four's inertial reference system would convert sixty four

0:14:22.240 --> 0:14:26.080
<v Speaker 1>bit floating point numbers into a sixteen bit signed integer,

0:14:27.120 --> 0:14:32.600
<v Speaker 1>and it worked just fine. But the Arian five's stats

0:14:32.640 --> 0:14:36.680
<v Speaker 1>were beefier than its predecessor with faster engines, and that

0:14:36.880 --> 0:14:40.600
<v Speaker 1>was where the problem really started. The engine output meant

0:14:40.720 --> 0:14:45.280
<v Speaker 1>those sixty four bit floating point numbers were significantly larger

0:14:45.320 --> 0:14:48.640
<v Speaker 1>than the ones generated by the engines on the Arean four.

0:14:48.880 --> 0:14:52.960
<v Speaker 1>They didn't anticipate this, so during the conversion process there

0:14:53.040 --> 0:14:57.200
<v Speaker 1>was actually data overflow, and that overflow caused both the

0:14:57.240 --> 0:15:00.760
<v Speaker 1>backup computer and the primary computer board the Area N

0:15:00.880 --> 0:15:03.520
<v Speaker 1>five to crash, and they crashed in that order. The

0:15:03.520 --> 0:15:07.080
<v Speaker 1>backup computer crashed first, followed by the primary computer a

0:15:07.120 --> 0:15:10.120
<v Speaker 1>couple of seconds later. The whole thing took less than

0:15:10.160 --> 0:15:15.680
<v Speaker 1>a minute to go from launch to disintegration. Oops, now

0:15:15.720 --> 0:15:17.880
<v Speaker 1>we're going to stick with space. But jump forward to

0:15:18.000 --> 0:15:23.480
<v Speaker 1>nineteen ninety eight and the Mars Climate Orbiter. This was

0:15:24.360 --> 0:15:28.480
<v Speaker 1>an unfortunate problem. So this particular spacecraft was meant to

0:15:28.520 --> 0:15:32.080
<v Speaker 1>study Mars's climate, atmosphere and surface changes, and it was

0:15:32.120 --> 0:15:34.600
<v Speaker 1>also supposed to be a kind of relay station for

0:15:34.720 --> 0:15:38.760
<v Speaker 1>landers that would explore Mars's surface, but none of that

0:15:38.800 --> 0:15:42.560
<v Speaker 1>would last because of some pretty significant goofs. So on

0:15:42.600 --> 0:15:46.720
<v Speaker 1>September twenty third, nineteen ninety nine, the orbiter passed into

0:15:46.760 --> 0:15:51.120
<v Speaker 1>the upper atmosphere of Mars and did so at a

0:15:51.200 --> 0:15:54.400
<v Speaker 1>pretty low altitude. And this is what folks in the

0:15:54.440 --> 0:15:58.000
<v Speaker 1>space industry call a bad thing. The drag on the

0:15:58.000 --> 0:16:02.120
<v Speaker 1>spacecraft was significant, it began to fall apart and it

0:16:02.240 --> 0:16:08.880
<v Speaker 1>was destroyed upon entering Mars's atmosphere. That's what happened. So

0:16:08.960 --> 0:16:13.280
<v Speaker 1>the software guiding the orbiter was to blame, and it's

0:16:13.320 --> 0:16:16.880
<v Speaker 1>a dumb, dumb mistake. It was supposed to make adjustments

0:16:16.880 --> 0:16:21.520
<v Speaker 1>to the orbiter's flight in SI units, specifically in Newton's seconds.

0:16:22.600 --> 0:16:27.160
<v Speaker 1>That's what the contract with Lockheed and NASA said, Newton seconds,

0:16:27.360 --> 0:16:31.160
<v Speaker 1>use Si units for all of your all of your calculations.

0:16:31.840 --> 0:16:35.840
<v Speaker 1>But the software instead made calculations in non SI units,

0:16:35.920 --> 0:16:42.080
<v Speaker 1>namely pounds seconds. So Lockheed software gave information to NASA's

0:16:42.120 --> 0:16:46.920
<v Speaker 1>systems using the wrong units of measure. NASA systems then

0:16:46.960 --> 0:16:50.320
<v Speaker 1>took that information, assuming it was with the right units

0:16:50.320 --> 0:16:56.200
<v Speaker 1>of measure, and executed commands based upon that. So this

0:16:56.400 --> 0:16:59.200
<v Speaker 1>is why if you're ever in a math course and

0:16:59.840 --> 0:17:03.360
<v Speaker 1>the teacher makes you stop in the middle of writing

0:17:03.360 --> 0:17:05.720
<v Speaker 1>a problem on the board and says, where are your units?

0:17:06.400 --> 0:17:09.040
<v Speaker 1>This is why you have to make sure you're using

0:17:09.040 --> 0:17:12.800
<v Speaker 1>the right units, because if you're saying a number and

0:17:12.880 --> 0:17:15.800
<v Speaker 1>you don't associate a unit with it, someone could make

0:17:15.840 --> 0:17:19.200
<v Speaker 1>an incorrect decision based on that, and it could be disastrous,

0:17:19.320 --> 0:17:22.160
<v Speaker 1>as it was with the case of this orbiter, the

0:17:22.160 --> 0:17:25.639
<v Speaker 1>thrusters fired at four point four or five times the

0:17:25.760 --> 0:17:28.960
<v Speaker 1>power they were supposed to, and the orbiter didn't stand

0:17:28.960 --> 0:17:32.480
<v Speaker 1>a chance. And this was a pre expensive mistake. That

0:17:32.600 --> 0:17:34.960
<v Speaker 1>mission's cost came in at three hundred and twenty seven

0:17:35.000 --> 0:17:38.720
<v Speaker 1>point six million dollars. But on the bright side, with

0:17:38.840 --> 0:17:41.520
<v Speaker 1>all of these stories, at least no human lives were

0:17:41.560 --> 0:17:44.320
<v Speaker 1>ever in real danger as a result of the mistake.

0:17:45.440 --> 0:17:47.640
<v Speaker 1>We're gonna take a quick break, and when we come back,

0:17:48.160 --> 0:18:01.800
<v Speaker 1>we'll talk more about bad computer bugs. All right, Now,

0:18:01.880 --> 0:18:04.320
<v Speaker 1>let's make a switch to AT and T, which is

0:18:04.359 --> 0:18:06.840
<v Speaker 1>a company that had a pretty big problem with switches

0:18:07.040 --> 0:18:09.720
<v Speaker 1>once upon a time. I'm talking about an issue that

0:18:09.720 --> 0:18:13.240
<v Speaker 1>popped up on January fifteenth, nineteen ninety. That's when AT

0:18:13.280 --> 0:18:15.960
<v Speaker 1>and T long distance customers discovered they were unable to

0:18:15.960 --> 0:18:19.600
<v Speaker 1>make any long distance calls. Why why could they no

0:18:19.680 --> 0:18:24.359
<v Speaker 1>longer reach anybody? Well? AT and t's long distance switches,

0:18:25.080 --> 0:18:29.520
<v Speaker 1>which control that and allow for the actual connections to

0:18:29.560 --> 0:18:32.119
<v Speaker 1>be made, were on the frints. They were trying to

0:18:32.160 --> 0:18:34.840
<v Speaker 1>reboot over and over again. They were just stuck in

0:18:34.880 --> 0:18:39.040
<v Speaker 1>a reboot cycle. Now, initially the company thought it was

0:18:39.080 --> 0:18:41.679
<v Speaker 1>being hacked, but like I said at the top of

0:18:41.680 --> 0:18:44.920
<v Speaker 1>the show, I'm not covering stories about hackers here. I'm

0:18:44.920 --> 0:18:48.920
<v Speaker 1>talking about big design flaws that caused problems. So they

0:18:48.960 --> 0:18:52.320
<v Speaker 1>weren't getting hacked. That's not what was going on with

0:18:52.320 --> 0:18:55.400
<v Speaker 1>those one hundred and fourteen long distance switches. No, there

0:18:55.440 --> 0:18:58.560
<v Speaker 1>was a design problem at fault. So what had happened

0:18:58.600 --> 0:19:00.919
<v Speaker 1>was AT and T had rolled out an update to

0:19:01.000 --> 0:19:03.840
<v Speaker 1>the code that managed the switches, and it was meant

0:19:03.880 --> 0:19:06.959
<v Speaker 1>to increase the efficiency. It was meant to speed things up.

0:19:07.000 --> 0:19:09.720
<v Speaker 1>But the problem was it sped things up so much

0:19:09.760 --> 0:19:13.000
<v Speaker 1>that the system got caught up in itself. It gets

0:19:13.000 --> 0:19:14.679
<v Speaker 1>pretty technical, but I can give you kind of an

0:19:15.119 --> 0:19:18.359
<v Speaker 1>overview of what the problem was. All right, So each

0:19:18.400 --> 0:19:23.000
<v Speaker 1>switch had a function that allowed it to alert the

0:19:23.040 --> 0:19:26.520
<v Speaker 1>next switch down the line if things were starting to

0:19:26.520 --> 0:19:31.200
<v Speaker 1>get hairy. So imagine that switch number one is handling traffic,

0:19:31.320 --> 0:19:34.080
<v Speaker 1>but it's getting really close to capacity. So it sends

0:19:34.119 --> 0:19:36.320
<v Speaker 1>a message over to switch number two and says, I

0:19:36.359 --> 0:19:39.520
<v Speaker 1>can't take on any more work because if I do,

0:19:39.640 --> 0:19:43.680
<v Speaker 1>I'll be overloaded. Switch too then says, no problem, I'll

0:19:43.720 --> 0:19:47.800
<v Speaker 1>take on any oncoming work for you and we'll handle

0:19:47.840 --> 0:19:50.679
<v Speaker 1>it from there. And if switched number two were to

0:19:50.760 --> 0:19:53.200
<v Speaker 1>get into the same sort of situation, it would say

0:19:53.200 --> 0:19:55.119
<v Speaker 1>the same thing to switch number three, and so on

0:19:55.200 --> 0:19:59.040
<v Speaker 1>and so forth. Now, eventually each switch will contact the

0:19:59.040 --> 0:20:01.760
<v Speaker 1>one below it and say, hey, how you doing there,

0:20:02.160 --> 0:20:05.520
<v Speaker 1>And if the answer is okay, then everything switches back

0:20:05.560 --> 0:20:09.040
<v Speaker 1>and you go back to normal operation. That's how it's

0:20:09.040 --> 0:20:13.800
<v Speaker 1>supposed to work up. But AT and t's updated code

0:20:13.880 --> 0:20:18.000
<v Speaker 1>sped things up so much it caused some real issues,

0:20:18.080 --> 0:20:21.439
<v Speaker 1>and there was some poor timing, just coincidental timing that

0:20:21.480 --> 0:20:25.080
<v Speaker 1>made things worse. So switch number one starts to get

0:20:25.080 --> 0:20:27.840
<v Speaker 1>overwhelmed and sends a message over to switch number two,

0:20:27.920 --> 0:20:30.480
<v Speaker 1>But switch number two was just in the middle of

0:20:30.520 --> 0:20:34.720
<v Speaker 1>resetting itself, So switch number two goes into reset mode,

0:20:34.720 --> 0:20:37.000
<v Speaker 1>which says do not disturb. Sends a message over to

0:20:37.000 --> 0:20:40.639
<v Speaker 1>switch number three. That prompted switch number three to overload

0:20:40.920 --> 0:20:42.960
<v Speaker 1>and put up a do not disturb sign. Move that

0:20:43.000 --> 0:20:46.000
<v Speaker 1>down to switch number four. This whole thing goes down

0:20:46.040 --> 0:20:48.680
<v Speaker 1>the entire line of one hundred and fourteen switches. They

0:20:48.720 --> 0:20:51.360
<v Speaker 1>all end up getting overloaded as a result of this,

0:20:51.760 --> 0:20:54.920
<v Speaker 1>and all go into reset mode and they get stuck there.

0:20:56.480 --> 0:21:00.520
<v Speaker 1>That problem lasted for nine hours before be for AT

0:21:00.600 --> 0:21:03.240
<v Speaker 1>and T was finally able to address the message load

0:21:03.359 --> 0:21:05.879
<v Speaker 1>on the entire system and get the switches back to normal.

0:21:06.359 --> 0:21:09.520
<v Speaker 1>The estimated cost of lost revenue for that time was

0:21:09.560 --> 0:21:13.840
<v Speaker 1>about sixty million dollars in long distance calls, and there

0:21:13.840 --> 0:21:16.000
<v Speaker 1>were a lot of angry customers to boot, so to

0:21:16.119 --> 0:21:19.919
<v Speaker 1>placate them, AT and T offered reduced long distance rates

0:21:19.960 --> 0:21:25.040
<v Speaker 1>on Valentine's Day. Pretty ugly, but AT and T tried

0:21:25.080 --> 0:21:27.080
<v Speaker 1>to handle it, at least in a way that didn't

0:21:27.119 --> 0:21:30.400
<v Speaker 1>turn it into a pr nightmare. Not so with Intel.

0:21:31.080 --> 0:21:33.880
<v Speaker 1>That's what brings us to the Pendium problem. I don't

0:21:33.920 --> 0:21:36.760
<v Speaker 1>know if you guys remember when pentium processors first came out,

0:21:36.760 --> 0:21:41.080
<v Speaker 1>but they were a big deal. It was a redesign

0:21:41.160 --> 0:21:43.480
<v Speaker 1>of the architecture of the microprocessor and it was meant

0:21:43.520 --> 0:21:47.159
<v Speaker 1>to really speed things up. Well, Intel had a massive

0:21:47.240 --> 0:21:51.159
<v Speaker 1>nightmare in nineteen ninety four thanks to a flaw in

0:21:51.240 --> 0:21:56.439
<v Speaker 1>the entire first generation of Pentium processors. Now, when you

0:21:56.480 --> 0:21:59.920
<v Speaker 1>break it all down, a CPU is all about performing math,

0:22:00.080 --> 0:22:02.760
<v Speaker 1>medical operations on data, so it's kind of important that

0:22:02.760 --> 0:22:07.200
<v Speaker 1>it does this correctly. Unfortunately, the flaw on the Pentium

0:22:07.280 --> 0:22:10.200
<v Speaker 1>processors kind of messed that up, and the issue has

0:22:10.240 --> 0:22:13.600
<v Speaker 1>to do with floating point operations. So the predecessor to

0:22:13.640 --> 0:22:16.560
<v Speaker 1>the Pentium, the four eighty six, used a shift and

0:22:16.640 --> 0:22:21.040
<v Speaker 1>subtract algorithm for floating point operations, which was effective but

0:22:21.560 --> 0:22:25.080
<v Speaker 1>relatively slow compared to what Intel thought they could do

0:22:25.680 --> 0:22:32.280
<v Speaker 1>by totally redesigning that structure and using a lookup table approach. Now,

0:22:32.320 --> 0:22:35.040
<v Speaker 1>the table was supposed to have one thousand and sixty

0:22:35.160 --> 0:22:39.080
<v Speaker 1>six entries programmed directly onto the logic array of the

0:22:39.080 --> 0:22:43.800
<v Speaker 1>Pentium processor, but for some reason only one thousand and

0:22:43.920 --> 0:22:48.280
<v Speaker 1>sixty one entries made it. Five entries went missing and

0:22:48.640 --> 0:22:52.520
<v Speaker 1>essentially returned an answer of zero instead of what they

0:22:52.520 --> 0:22:56.359
<v Speaker 1>were supposed to say, so if a calculation accessed one

0:22:56.359 --> 0:22:58.720
<v Speaker 1>of those missing cells, it got zero, even though that's

0:22:58.760 --> 0:23:02.240
<v Speaker 1>not the correct answer. All the first generation pentiums went

0:23:02.280 --> 0:23:04.600
<v Speaker 1>out with this error because it was so minor that

0:23:04.680 --> 0:23:07.679
<v Speaker 1>it wasn't even picked up by Intel's quality control at

0:23:07.680 --> 0:23:12.560
<v Speaker 1>the time. Now, processes worked just fine up to the

0:23:12.680 --> 0:23:16.399
<v Speaker 1>eighth decimal point. Beyond that things got messy, but for

0:23:16.480 --> 0:23:19.720
<v Speaker 1>most folks that wasn't a problem because they weren't doing

0:23:20.000 --> 0:23:24.159
<v Speaker 1>mathematical calculations that needed that level of precision. It just

0:23:24.400 --> 0:23:26.560
<v Speaker 1>wasn't a thing. In fact, there was only a one

0:23:26.560 --> 0:23:30.000
<v Speaker 1>in three hundred and sixty billion chance that this error

0:23:30.040 --> 0:23:34.000
<v Speaker 1>would cause a big enough problem to reach up to

0:23:34.080 --> 0:23:38.000
<v Speaker 1>the fourth decimal place. So most calculations that were simple

0:23:38.040 --> 0:23:41.840
<v Speaker 1>were bulletproof. You were fine. But if you needed that precision,

0:23:42.440 --> 0:23:45.760
<v Speaker 1>if you needed that really fine degree, that's when you

0:23:45.800 --> 0:23:50.400
<v Speaker 1>would encounter the flaw. And that happened because they're math

0:23:50.480 --> 0:23:54.280
<v Speaker 1>professors in this world, and one of those, Thomas Nicely

0:23:55.040 --> 0:23:58.000
<v Speaker 1>discovered in October nineteen ninety four that he was getting

0:23:58.080 --> 0:24:01.280
<v Speaker 1>errors because of this issue. He needed the processor to

0:24:01.320 --> 0:24:05.639
<v Speaker 1>work correctly, and so he contacted Intel about the problem.

0:24:06.280 --> 0:24:09.480
<v Speaker 1>And this is where we take a moment to acknowledge

0:24:09.480 --> 0:24:11.960
<v Speaker 1>there's a right way and a wrong way to handle

0:24:12.680 --> 0:24:16.240
<v Speaker 1>an issue. That's your fault. Intel decided to go the

0:24:16.320 --> 0:24:19.280
<v Speaker 1>wrong way. My opinion is if you make a mistake,

0:24:19.320 --> 0:24:21.719
<v Speaker 1>it's usually a good idea to just own up to

0:24:21.760 --> 0:24:25.000
<v Speaker 1>it and try to make it better. But Intel's response

0:24:25.119 --> 0:24:26.840
<v Speaker 1>was more along the lines of, yeah, we didn't think

0:24:26.840 --> 0:24:29.480
<v Speaker 1>it was a big deal. And then Intel made other

0:24:29.520 --> 0:24:33.320
<v Speaker 1>pr blenders. But because people began to hear, hey, that

0:24:33.359 --> 0:24:37.359
<v Speaker 1>pentium processor in your computer that you just bought it

0:24:37.400 --> 0:24:41.560
<v Speaker 1>doesn't work properly. So people wanted to get replacements, but

0:24:41.840 --> 0:24:44.240
<v Speaker 1>Intel said, oh, we're only going to replace the ones

0:24:44.480 --> 0:24:47.600
<v Speaker 1>if you can prove that the mistakes that it makes

0:24:47.960 --> 0:24:52.080
<v Speaker 1>affect you in some meaningful way. So they weren't They

0:24:52.119 --> 0:24:55.320
<v Speaker 1>weren't denying that there was a problem. They were just saying, hey,

0:24:55.400 --> 0:24:58.320
<v Speaker 1>unless you can prove the problem affects you, we don't care.

0:24:59.240 --> 0:25:02.280
<v Speaker 1>That didn't go well. If you create a product and

0:25:02.320 --> 0:25:04.600
<v Speaker 1>you market it as the future of computing and then

0:25:04.640 --> 0:25:07.360
<v Speaker 1>it's discovered there's a flaw in the design, and then

0:25:07.400 --> 0:25:09.600
<v Speaker 1>you say we'll replace it, but only if you prove

0:25:09.680 --> 0:25:13.720
<v Speaker 1>you deserve it, it doesn't tend to make your customer

0:25:13.760 --> 0:25:18.639
<v Speaker 1>base very happy. So ultimately Intel reverse that decision and

0:25:18.680 --> 0:25:21.840
<v Speaker 1>offered to replace the processor for anyone who wanted it

0:25:21.880 --> 0:25:26.320
<v Speaker 1>who had a first generation Pentium, and that mistake ended

0:25:26.359 --> 0:25:32.000
<v Speaker 1>up costing the company four hundred and seventy five million dollars. Yikes.

0:25:32.880 --> 0:25:36.600
<v Speaker 1>All right, now we're gonna switch gears over to Microsoft. First.

0:25:36.640 --> 0:25:39.760
<v Speaker 1>I think you could claim that all of Microsoft Bob,

0:25:40.240 --> 0:25:42.280
<v Speaker 1>the nineteen ninety five product that was supposed to be

0:25:42.320 --> 0:25:46.400
<v Speaker 1>an easy accessible computer interface, was really just a massive

0:25:46.440 --> 0:25:51.320
<v Speaker 1>software bug. I mean it introduced comic sands. For goodness sakes,

0:25:52.000 --> 0:25:55.560
<v Speaker 1>the cluttered organization system, the lack of meaningful security, and

0:25:55.640 --> 0:26:00.760
<v Speaker 1>other numerous issues plagued that software. But we did an

0:26:00.920 --> 0:26:03.440
<v Speaker 1>entire episode of tech Stuff about Microsoft Bob a couple

0:26:03.400 --> 0:26:05.359
<v Speaker 1>of years ago, So I'm not going to dwell on

0:26:05.440 --> 0:26:08.280
<v Speaker 1>it anymore, but if you want to hear more about it,

0:26:09.000 --> 0:26:12.080
<v Speaker 1>go find that episode. It was a fun one. Now.

0:26:12.080 --> 0:26:16.159
<v Speaker 1>In two thousand and seven, Microsoft experienced a massive headache

0:26:16.800 --> 0:26:19.920
<v Speaker 1>when a bug on their servers notified thousands of Windows

0:26:19.960 --> 0:26:22.800
<v Speaker 1>customers that they were filthy, dirty software pirates and they

0:26:22.840 --> 0:26:26.679
<v Speaker 1>should be punished. These include people who actually had legitimate

0:26:27.240 --> 0:26:32.600
<v Speaker 1>legal purchase copies of Windows XP or Vista. So the

0:26:32.640 --> 0:26:37.400
<v Speaker 1>problem here was Microsoft had an initiative called Windows Genuine Advantage,

0:26:38.040 --> 0:26:40.240
<v Speaker 1>and it was a nice name for a strategy meant

0:26:40.240 --> 0:26:45.160
<v Speaker 1>to curtail operating system piracy. Essentially, it was a component

0:26:45.240 --> 0:26:48.120
<v Speaker 1>in Windows that would allow Microsoft to figure out if

0:26:48.160 --> 0:26:53.040
<v Speaker 1>the copy of Windows on any given computer was legit.

0:26:53.640 --> 0:26:56.480
<v Speaker 1>In other words, it was a DRM strategy. But in

0:26:56.520 --> 0:26:59.960
<v Speaker 1>two thousand and seven, a buggy install of software on

0:27:00.160 --> 0:27:06.080
<v Speaker 1>a server misidentified thousands of legitimate, law abiding customers as pirates.

0:27:06.760 --> 0:27:09.880
<v Speaker 1>For nineteen hours, the software just laid down the law,

0:27:10.040 --> 0:27:13.080
<v Speaker 1>and so people began to receive sternly written warnings about

0:27:13.119 --> 0:27:16.240
<v Speaker 1>their choice to indulge in bad behavior. And if you

0:27:16.280 --> 0:27:19.240
<v Speaker 1>were a Windows Vista customer, you had it the worst,

0:27:20.000 --> 0:27:22.960
<v Speaker 1>not just because you were using Windows Vista, which I

0:27:22.960 --> 0:27:25.800
<v Speaker 1>think we all agree was not one of the bright

0:27:25.880 --> 0:27:31.920
<v Speaker 1>points in Microsoft's operating system history, but also because Microsoft

0:27:32.000 --> 0:27:34.919
<v Speaker 1>had built in the ability for Windows Genuine Advantage to

0:27:35.080 --> 0:27:40.040
<v Speaker 1>switch off certain operating system features in Windows Vista if

0:27:40.080 --> 0:27:43.000
<v Speaker 1>it determined that the copy someone was using was a

0:27:43.040 --> 0:27:47.639
<v Speaker 1>pirated version. So it was misidentifying real versions as pirated ones,

0:27:48.040 --> 0:27:50.520
<v Speaker 1>turning off features. And these are for people who have

0:27:50.680 --> 0:27:53.600
<v Speaker 1>bought legitimate copies. This, by the way, is one of

0:27:53.600 --> 0:27:57.800
<v Speaker 1>the big arguments people have against DRM. It has the

0:27:57.880 --> 0:28:02.879
<v Speaker 1>tendency to punish legitimate CUS customers. And you feel like

0:28:03.000 --> 0:28:06.480
<v Speaker 1>you're stupid for buying a copy of a piece of

0:28:06.520 --> 0:28:09.120
<v Speaker 1>software rather than just stealing one that has had those

0:28:09.119 --> 0:28:13.720
<v Speaker 1>features or those defenses removed. Like why you're creating more

0:28:13.760 --> 0:28:17.800
<v Speaker 1>incentives for people to go outside and get a pirated copy.

0:28:19.280 --> 0:28:22.239
<v Speaker 1>All right, so imagine you've purchased this legitimate copy of

0:28:22.320 --> 0:28:25.240
<v Speaker 1>Windows Vista. First of all, you already feel bad. Then

0:28:25.280 --> 0:28:27.960
<v Speaker 1>you're told you're a thief, so you feel worse. Then

0:28:28.040 --> 0:28:31.119
<v Speaker 1>someone remotely switches off several features of your operating system.

0:28:31.160 --> 0:28:34.760
<v Speaker 1>That was not a great PR message, So that was

0:28:34.800 --> 0:28:37.639
<v Speaker 1>a real issue. They did eventually fix it after that

0:28:37.720 --> 0:28:41.440
<v Speaker 1>nineteen hours, but by then people were already very upset. Also,

0:28:41.520 --> 0:28:45.880
<v Speaker 1>I don't want to just you know, pile lots of

0:28:45.920 --> 0:28:49.040
<v Speaker 1>abuse onto Microsoft. I gotta talk about Apple here too.

0:28:50.280 --> 0:28:53.440
<v Speaker 1>So the company prides itself on a high standard of quality,

0:28:54.480 --> 0:28:57.000
<v Speaker 1>and in general it's pretty good about living up to

0:28:57.040 --> 0:28:59.720
<v Speaker 1>that standard of quality, depending upon your point of view

0:28:59.720 --> 0:29:02.720
<v Speaker 1>of their various products. But that hasn't stopped a few

0:29:02.800 --> 0:29:08.000
<v Speaker 1>clunkers getting through and into the public hands. And that

0:29:08.120 --> 0:29:11.240
<v Speaker 1>was the case in twenty twelve with Apple Maps. If

0:29:11.240 --> 0:29:13.600
<v Speaker 1>you owned an iPhone back in twenty twelve when Apple

0:29:13.640 --> 0:29:17.040
<v Speaker 1>Maps came out, you may remember this problem. It's pretty

0:29:17.080 --> 0:29:21.080
<v Speaker 1>well publicized. Maps were inaccurate, sometimes leaving out important details, like,

0:29:21.200 --> 0:29:23.960
<v Speaker 1>you know, a river or a lake between you and

0:29:24.000 --> 0:29:27.120
<v Speaker 1>your destination, things that might be important if I don't

0:29:27.120 --> 0:29:30.480
<v Speaker 1>know you don't drive an amphibious vehicle, might not have

0:29:30.560 --> 0:29:34.800
<v Speaker 1>a road on there that's important, might misidentify the location

0:29:35.000 --> 0:29:38.400
<v Speaker 1>of a historical landmark. For instance, it thought the Washington

0:29:38.440 --> 0:29:41.680
<v Speaker 1>Monument was across the street from where it is, but nope,

0:29:41.960 --> 0:29:45.640
<v Speaker 1>it's just where we left it. Despite all of Rolanimerick's

0:29:46.240 --> 0:29:50.240
<v Speaker 1>best attempts to move it or destroy it, it's still there.

0:29:52.600 --> 0:29:55.160
<v Speaker 1>The real problem here was that the Apple software just

0:29:55.240 --> 0:29:59.600
<v Speaker 1>wasn't ready for public unveiling. It needed a lot more testing.

0:30:00.080 --> 0:30:02.600
<v Speaker 1>It was trying to play catch up to Google Maps,

0:30:02.600 --> 0:30:05.560
<v Speaker 1>but Google had the advantage of working with companies that

0:30:05.560 --> 0:30:09.480
<v Speaker 1>had been doing mapping software for years. Google acquired those

0:30:09.520 --> 0:30:12.320
<v Speaker 1>companies and acquired the expertise of people had been working

0:30:12.360 --> 0:30:15.960
<v Speaker 1>on that software, and Apple was really just trying to

0:30:16.040 --> 0:30:19.000
<v Speaker 1>create their own version and get it out as fast

0:30:19.040 --> 0:30:21.240
<v Speaker 1>as it could. But it got out a little too early,

0:30:21.920 --> 0:30:24.480
<v Speaker 1>and the company spent the next several months tweaking maps

0:30:24.480 --> 0:30:26.520
<v Speaker 1>and trying to keep control of the situation. But by

0:30:26.520 --> 0:30:29.360
<v Speaker 1>that time, many of Apple's fans, even the most devoted ones,

0:30:29.760 --> 0:30:31.640
<v Speaker 1>had kind of given up and switched over to Google

0:30:31.680 --> 0:30:35.880
<v Speaker 1>Maps instead. All right, we've got another break ahead of us,

0:30:36.000 --> 0:30:38.800
<v Speaker 1>but don't worry. Once that's done, we're back to conclude

0:30:38.800 --> 0:30:51.280
<v Speaker 1>our discussion about bad computer bugs. Now I'm going to

0:30:51.280 --> 0:30:55.320
<v Speaker 1>transition into some serious bugs. These are ones that either

0:30:55.440 --> 0:31:00.600
<v Speaker 1>threaten the lives of people or they contributed to people dying.

0:31:01.400 --> 0:31:05.280
<v Speaker 1>The ones I've talked about now up to out rather

0:31:05.400 --> 0:31:08.720
<v Speaker 1>have cost companies millions of dollars, but no one's life

0:31:08.840 --> 0:31:12.320
<v Speaker 1>was truly threatened. Unfortunately, that's not the case with all

0:31:12.320 --> 0:31:15.400
<v Speaker 1>software bugs. Now, a couple of bugs had the potential

0:31:15.720 --> 0:31:19.920
<v Speaker 1>to kill millions of people. One of those happened in

0:31:20.000 --> 0:31:25.160
<v Speaker 1>nineteen eighty a famous famous bug, or at least a

0:31:25.200 --> 0:31:28.480
<v Speaker 1>faulty circuit, and that was a faulty circuit in Norrad's

0:31:28.520 --> 0:31:31.760
<v Speaker 1>computer system, which caused it to mistakenly conclude the US

0:31:31.840 --> 0:31:36.880
<v Speaker 1>was under nuclear attack from the Soviet Union. So displays

0:31:37.120 --> 0:31:40.400
<v Speaker 1>on nor Ad systems showed seemingly random attacks, and they

0:31:40.400 --> 0:31:43.680
<v Speaker 1>didn't correspond with each other. So the display might show, Hey,

0:31:43.720 --> 0:31:46.719
<v Speaker 1>they're two missiles heading over from the Soviet Union. No,

0:31:46.760 --> 0:31:50.720
<v Speaker 1>they're two hundred. No they're fifty. No there's three. And

0:31:50.880 --> 0:31:54.440
<v Speaker 1>it wasn't consistent, and command posts around the US all

0:31:54.480 --> 0:31:58.240
<v Speaker 1>had conflicting information, which led leaders to conclude the whole

0:31:58.280 --> 0:32:02.480
<v Speaker 1>thing was a regrettable computer error, and they were right

0:32:02.520 --> 0:32:05.680
<v Speaker 1>to do so. To be fair, they were kind of

0:32:05.680 --> 0:32:08.200
<v Speaker 1>prepared for this because there was another incident that had

0:32:08.200 --> 0:32:11.560
<v Speaker 1>actually happened in nineteen seventy nine that was way scarier,

0:32:12.240 --> 0:32:15.280
<v Speaker 1>and in that case, someone mistakenly inserted a training scenario

0:32:15.400 --> 0:32:17.479
<v Speaker 1>into the computer system that made it seem like the

0:32:17.480 --> 0:32:20.280
<v Speaker 1>Soviet Union had launched an all out nuclear attack on

0:32:20.320 --> 0:32:23.320
<v Speaker 1>the US. But that wasn't a bug. That was a

0:32:23.320 --> 0:32:25.680
<v Speaker 1>mistake on the part of a human who had accidentally

0:32:25.880 --> 0:32:29.760
<v Speaker 1>uploaded the wrong or rather executed the wrong command. It

0:32:29.840 --> 0:32:31.760
<v Speaker 1>didn't have something to do with a flaw in the

0:32:31.760 --> 0:32:37.080
<v Speaker 1>computer system itself. However, because that thing happened and everybody

0:32:37.720 --> 0:32:40.520
<v Speaker 1>was freaked out and then was able to determine that

0:32:40.560 --> 0:32:42.719
<v Speaker 1>in fact, it was a false alarm, it meant that

0:32:42.880 --> 0:32:47.360
<v Speaker 1>calmer heads could prevail in the nineteen eighty incident, so

0:32:47.800 --> 0:32:50.680
<v Speaker 1>the Soviets also had a close call just a few

0:32:50.720 --> 0:32:53.160
<v Speaker 1>years later. It was a bug in the early warning

0:32:53.200 --> 0:32:57.400
<v Speaker 1>detection software that the USSR was using in the early eighties,

0:32:57.680 --> 0:33:01.520
<v Speaker 1>and on September twenty third, nineteen eighty three, so Union

0:33:01.560 --> 0:33:04.640
<v Speaker 1>received an alert that the US had launched a nuclear

0:33:04.680 --> 0:33:09.520
<v Speaker 1>attack in the form of five nuclear warheads, technically two

0:33:09.560 --> 0:33:12.800
<v Speaker 1>different attacks. The first would have been a single nuclear

0:33:12.840 --> 0:33:16.760
<v Speaker 1>warhead and the second was four nuclear warheads, and this

0:33:16.960 --> 0:33:20.280
<v Speaker 1>was during a particularly stressful period in the history of

0:33:20.320 --> 0:33:23.800
<v Speaker 1>both countries and their relationship with each other, at the

0:33:23.840 --> 0:33:28.280
<v Speaker 1>height of the Cold War nineteen eighty three. Now, Fortunately,

0:33:30.200 --> 0:33:36.600
<v Speaker 1>Soviet Air Defense Forces Lieutenant Colonel Stanislav Petrov suspected that

0:33:36.640 --> 0:33:39.840
<v Speaker 1>this report was an error and that there was some

0:33:39.880 --> 0:33:43.000
<v Speaker 1>sort of bug in the software or a mistake in

0:33:43.080 --> 0:33:46.840
<v Speaker 1>the reporting system that caused this. He gave a command

0:33:46.920 --> 0:33:49.960
<v Speaker 1>to hold off on any sort of retaliatory strike, which

0:33:49.960 --> 0:33:52.880
<v Speaker 1>would have initiated a full scale nuclear war had it happened.

0:33:53.760 --> 0:33:56.680
<v Speaker 1>Petrov was the officer in charge at a bunker that

0:33:56.760 --> 0:33:59.640
<v Speaker 1>served as the command center for this early warning system,

0:34:00.040 --> 0:34:03.880
<v Speaker 1>and he had said afterward that his reckoning was any

0:34:03.960 --> 0:34:07.280
<v Speaker 1>real attack would consist of hundreds of warheads, not five.

0:34:08.080 --> 0:34:11.759
<v Speaker 1>No one would start an attack with just five warheads,

0:34:12.040 --> 0:34:13.759
<v Speaker 1>so it was more likely to be an error than

0:34:13.760 --> 0:34:16.600
<v Speaker 1>a genuine attack, So he gave the command to wait

0:34:16.719 --> 0:34:20.000
<v Speaker 1>until the reported missiles would pass into the range of radar,

0:34:20.520 --> 0:34:24.200
<v Speaker 1>which only extended as far as the horizon, so if

0:34:24.440 --> 0:34:26.520
<v Speaker 1>it had in fact been a real attack, it would

0:34:26.520 --> 0:34:30.279
<v Speaker 1>have potentially limited the Soviet Union's ability to respond. But

0:34:30.680 --> 0:34:36.560
<v Speaker 1>no missile showed up, and he was vindicated in his decision. Now,

0:34:36.600 --> 0:34:38.640
<v Speaker 1>the cause of the false alarm in this case was

0:34:39.280 --> 0:34:44.680
<v Speaker 1>a combination of factors that the designers didn't anticipate, which

0:34:44.760 --> 0:34:48.920
<v Speaker 1>largely consisted of sunlight hitting high altitude clouds at a

0:34:48.960 --> 0:34:53.400
<v Speaker 1>particular angle from a particular perspective of the satellites. So

0:34:53.440 --> 0:34:59.840
<v Speaker 1>the satellites misidentified that reflection as a warhead. Now they

0:34:59.880 --> 0:35:02.040
<v Speaker 1>were where the Soviets were able to address this error

0:35:02.040 --> 0:35:05.680
<v Speaker 1>in the future by adding another step in which these

0:35:05.719 --> 0:35:10.120
<v Speaker 1>satellites would cross reference data from other geostationary satellites to

0:35:10.200 --> 0:35:15.160
<v Speaker 1>make certain that they are identifying actual rockets as opposed

0:35:15.239 --> 0:35:21.200
<v Speaker 1>to high altitude clouds. Now, there are several cases of

0:35:22.200 --> 0:35:27.320
<v Speaker 1>software bugs leading to actual deaths. For example, the Therak

0:35:27.440 --> 0:35:29.840
<v Speaker 1>twenty five was such a case. Now, that was a

0:35:29.960 --> 0:35:33.080
<v Speaker 1>radiation therapy machine that could deliver two different modes of

0:35:33.200 --> 0:35:37.719
<v Speaker 1>radiation treatments. The first was a low powered direct electron

0:35:37.800 --> 0:35:41.520
<v Speaker 1>beam and the second was a megavault X ray beam. Now,

0:35:41.520 --> 0:35:44.000
<v Speaker 1>the X ray beam was far more intense and it

0:35:44.080 --> 0:35:48.360
<v Speaker 1>required physicians to provide shielding to patients to limit exposure

0:35:48.440 --> 0:35:51.840
<v Speaker 1>to the beam. But the Therak twenty five had inherited

0:35:51.920 --> 0:35:55.719
<v Speaker 1>its code from its predecessor, which had different hardware constraints.

0:35:56.280 --> 0:36:00.439
<v Speaker 1>Now the new machine meant that these constraints were aren't there,

0:36:00.480 --> 0:36:03.279
<v Speaker 1>and it created a deadly problem. If operators change the

0:36:03.360 --> 0:36:06.560
<v Speaker 1>machine's mode too quickly from one to the other, it

0:36:06.560 --> 0:36:09.799
<v Speaker 1>would actually send two sets of instructions to the processor,

0:36:09.880 --> 0:36:12.520
<v Speaker 1>one for each mode of operation, and whichever set of

0:36:12.520 --> 0:36:16.640
<v Speaker 1>instructions reached the processor first, that's what the machine would

0:36:16.680 --> 0:36:20.920
<v Speaker 1>switch to. So let's say you've been operating the the

0:36:21.120 --> 0:36:25.279
<v Speaker 1>Act twenty five in the Megavault X ray mode, but

0:36:25.480 --> 0:36:27.319
<v Speaker 1>now you're going to have a patient come in. You

0:36:27.400 --> 0:36:30.719
<v Speaker 1>need to administer radiation therapy, so you want to switch

0:36:30.760 --> 0:36:33.720
<v Speaker 1>it to low electron beam. You switch it too quickly,

0:36:34.360 --> 0:36:37.040
<v Speaker 1>it sends two sets of instructions to the processor, and

0:36:37.080 --> 0:36:40.319
<v Speaker 1>the one that arises the Megavault X ray instruction, So

0:36:40.360 --> 0:36:44.440
<v Speaker 1>instead of switching it, you confirm to stay on the

0:36:44.480 --> 0:36:50.439
<v Speaker 1>more intense, deadlier radiation. The tragic news is this did

0:36:50.560 --> 0:36:55.879
<v Speaker 1>happen several times. Six patients were documented as dying from

0:36:55.880 --> 0:36:59.160
<v Speaker 1>complications due to radiation poisoning from THERA Act twenty five

0:36:59.200 --> 0:37:02.880
<v Speaker 1>machines between nineteen eighty five and nineteen eighty six, and

0:37:02.920 --> 0:37:06.280
<v Speaker 1>while the machine would send error messages when these conditions

0:37:06.280 --> 0:37:10.239
<v Speaker 1>were present. The documentation for the machine didn't explain what

0:37:10.280 --> 0:37:12.600
<v Speaker 1>the errors meant. It didn't say, hey, if you get

0:37:12.600 --> 0:37:15.960
<v Speaker 1>this error, it means that you've switched modes too quickly

0:37:16.080 --> 0:37:20.120
<v Speaker 1>and you need to address this. So, since operators weren't

0:37:20.160 --> 0:37:24.000
<v Speaker 1>told that this was necessarily a hazardous condition, they would

0:37:24.040 --> 0:37:28.000
<v Speaker 1>just clear the error and proceed, and there were deadly results.

0:37:29.360 --> 0:37:33.360
<v Speaker 1>In a similar vein in Panama City, Panama, there was

0:37:33.400 --> 0:37:37.680
<v Speaker 1>an incident involving a Cobalt sixty system, actually several incidents

0:37:37.680 --> 0:37:41.320
<v Speaker 1>involving this Cobalt sixty system that was running therapy planning

0:37:41.400 --> 0:37:45.319
<v Speaker 1>software made by a company called Multi Data Systems International. Now,

0:37:45.320 --> 0:37:48.360
<v Speaker 1>the software's purpose was to calculate the amount of radiation

0:37:48.680 --> 0:37:53.480
<v Speaker 1>that cancer patients should receive in radiation therapy sessions. Now,

0:37:53.600 --> 0:37:57.480
<v Speaker 1>during these radiation therapy sessions, the therapists were meant to

0:37:57.520 --> 0:38:02.320
<v Speaker 1>place metal shields on the patient to protect healthy tissue

0:38:02.320 --> 0:38:07.560
<v Speaker 1>from radiation damage, and the software would allow therapists to

0:38:07.719 --> 0:38:11.680
<v Speaker 1>use a methodology to show where those shields were on

0:38:11.800 --> 0:38:15.239
<v Speaker 1>the patient to indicate where the shields are present, But

0:38:15.440 --> 0:38:18.680
<v Speaker 1>they could only draw up to four shields, and the

0:38:18.719 --> 0:38:22.200
<v Speaker 1>doctors in Panama wanted to use five shields for particular

0:38:22.360 --> 0:38:26.120
<v Speaker 1>therapy sessions. They were overloaded, they had a long waiting

0:38:26.120 --> 0:38:28.239
<v Speaker 1>list of patients, and they were trying to make things

0:38:28.280 --> 0:38:32.120
<v Speaker 1>more efficient, and they discovered that they could kind of

0:38:32.160 --> 0:38:36.680
<v Speaker 1>work around this limitation of four shields by drawing a

0:38:36.719 --> 0:38:38.959
<v Speaker 1>design on the computer screen as if they were using

0:38:39.080 --> 0:38:42.000
<v Speaker 1>just one large shield that has a hole in the

0:38:42.000 --> 0:38:43.880
<v Speaker 1>middle of it. And so what they would do is

0:38:43.920 --> 0:38:46.719
<v Speaker 1>they would arrange the five shields to essentially be in

0:38:46.760 --> 0:38:49.880
<v Speaker 1>the same sort of shape with the middle of it

0:38:49.960 --> 0:38:52.440
<v Speaker 1>being opened, so that they could have the radiation therapy

0:38:52.480 --> 0:38:57.840
<v Speaker 1>pass through it. But they didn't realize that the software

0:38:57.880 --> 0:39:00.200
<v Speaker 1>had a bug in it, and that bug was if

0:39:00.200 --> 0:39:03.239
<v Speaker 1>you drew the hole in one direction, you get the

0:39:03.280 --> 0:39:06.200
<v Speaker 1>correct dose of radiation, but if you drew it in

0:39:06.239 --> 0:39:11.240
<v Speaker 1>the other direction, so like clockwise versus counterclockwise, the software

0:39:11.239 --> 0:39:15.320
<v Speaker 1>would recommend a dosage twice as strong as what was needed,

0:39:15.640 --> 0:39:19.719
<v Speaker 1>and the result was devastating. Eight patients died as a

0:39:19.719 --> 0:39:23.279
<v Speaker 1>result of this, and another twenty received doses high enough

0:39:23.280 --> 0:39:27.359
<v Speaker 1>to potentially cause health problems. Later on, the physicians were

0:39:27.400 --> 0:39:30.640
<v Speaker 1>actually arrested and brought up on murder charges because they

0:39:30.640 --> 0:39:34.640
<v Speaker 1>were supposed to double check all calculations by hand to

0:39:34.800 --> 0:39:36.640
<v Speaker 1>ensure that they were going to give the proper dose

0:39:36.680 --> 0:39:40.880
<v Speaker 1>of radiation treatment. So while the software was calculating the

0:39:41.200 --> 0:39:46.200
<v Speaker 1>incorrect dose, the physicians were responsible for making sure that

0:39:46.480 --> 0:39:48.960
<v Speaker 1>any dose that was calculated was in fact the correct one,

0:39:48.960 --> 0:39:50.840
<v Speaker 1>and they failed to do so, or at least that

0:39:51.000 --> 0:39:55.560
<v Speaker 1>was the charge. There are also bugs that involve military

0:39:55.600 --> 0:39:58.399
<v Speaker 1>applications that have resulted in the loss of life. During

0:39:58.440 --> 0:40:01.480
<v Speaker 1>the Persian Gulf War in Iraq, he fired scud missile

0:40:01.520 --> 0:40:04.800
<v Speaker 1>hit a US base in Saudi Arabia and it killed

0:40:04.920 --> 0:40:08.680
<v Speaker 1>twenty eight soldiers. Now the base had detected the missile

0:40:09.200 --> 0:40:12.320
<v Speaker 1>and had launched and fired a Patriot missile in return.

0:40:12.760 --> 0:40:14.920
<v Speaker 1>The purpose of the Patriot missile was to intercept and

0:40:14.960 --> 0:40:18.359
<v Speaker 1>destroy incoming missiles, and the way a Patriot missile did

0:40:18.360 --> 0:40:22.600
<v Speaker 1>this was to use radar pulses to guide trajectory calculations

0:40:22.840 --> 0:40:25.600
<v Speaker 1>so that it would end up getting close to the

0:40:25.600 --> 0:40:28.600
<v Speaker 1>incoming missile. This is harder than it sounds because both

0:40:28.640 --> 0:40:31.759
<v Speaker 1>missiles are moving very very quickly, so a NEA very

0:40:31.800 --> 0:40:36.400
<v Speaker 1>precise information in order to adjust its trajectory properly and

0:40:36.480 --> 0:40:39.520
<v Speaker 1>make sure it was on target. Now, once it gets

0:40:39.520 --> 0:40:43.600
<v Speaker 1>within range, which is between five and ten meters. I

0:40:43.600 --> 0:40:48.319
<v Speaker 1>think it would then fire out one thousand pellets from

0:40:48.320 --> 0:40:50.680
<v Speaker 1>the Patriot missile at high velocity, with the goal of

0:40:51.120 --> 0:40:55.799
<v Speaker 1>causing the incoming warhead to explode prematurely. In this case,

0:40:55.840 --> 0:40:59.280
<v Speaker 1>the Patriot missile missed, and the military investigated the issue

0:40:59.320 --> 0:41:01.280
<v Speaker 1>in the wake of the loss of life and found

0:41:01.320 --> 0:41:05.160
<v Speaker 1>a problem with the software guiding the Patriot missile. And

0:41:05.239 --> 0:41:06.960
<v Speaker 1>it was a problem that actually the military kind of

0:41:07.040 --> 0:41:09.400
<v Speaker 1>knew about already. So one of the processes in the

0:41:09.400 --> 0:41:13.120
<v Speaker 1>Patriots programming was to convert time into floating point operations

0:41:13.680 --> 0:41:18.799
<v Speaker 1>for increased accuracy, but not all subroutines that depended on

0:41:18.840 --> 0:41:25.040
<v Speaker 1>tracking time did this. Some of them remained clock units

0:41:25.120 --> 0:41:28.799
<v Speaker 1>rather than floating point operations, which meant that they would

0:41:28.800 --> 0:41:31.040
<v Speaker 1>get out of sync after a while. There'd be a

0:41:31.040 --> 0:41:34.880
<v Speaker 1>disagreement in various subroutines as to how much time had

0:41:34.920 --> 0:41:37.719
<v Speaker 1>actually passed. And like I said, the military was aware

0:41:37.719 --> 0:41:40.880
<v Speaker 1>of this issue and they had a workaround which was

0:41:41.239 --> 0:41:45.240
<v Speaker 1>not ideal. The workaround was you would occasionally reboot the system,

0:41:45.480 --> 0:41:48.239
<v Speaker 1>which would reset the clocks and synchronize them, but over

0:41:48.280 --> 0:41:50.319
<v Speaker 1>time they would fall out of sync because they're not

0:41:50.360 --> 0:41:53.279
<v Speaker 1>tracking time the same way. And since there was no

0:41:53.360 --> 0:41:56.480
<v Speaker 1>hard and fast rule as to how frequently you'd reset

0:41:56.520 --> 0:41:59.839
<v Speaker 1>the system, problems like this one were possible, and in fact,

0:42:00.040 --> 0:42:02.160
<v Speaker 1>in this case it did happen. So prior to this

0:42:02.200 --> 0:42:06.239
<v Speaker 1>particular incident, that specific Patriot system had been running for

0:42:06.360 --> 0:42:11.239
<v Speaker 1>one hundred hours without a reboot, and the clock disagreement

0:42:11.480 --> 0:42:14.400
<v Speaker 1>amounted to about one third of a second. Now that

0:42:14.440 --> 0:42:16.279
<v Speaker 1>seems like it's no time at all. One third of

0:42:16.320 --> 0:42:19.759
<v Speaker 1>a second is so short, but a scud missile's top

0:42:19.800 --> 0:42:23.880
<v Speaker 1>speed is about one point one miles per second or

0:42:23.920 --> 0:42:27.080
<v Speaker 1>one point seven kilometers per second, which means if you

0:42:27.120 --> 0:42:29.200
<v Speaker 1>take a third of a second, the missile could travel

0:42:29.280 --> 0:42:32.719
<v Speaker 1>more than five hundred meters. And since a Patriot needs

0:42:32.719 --> 0:42:34.839
<v Speaker 1>to be within ten meters of a target to destroy it,

0:42:34.920 --> 0:42:39.160
<v Speaker 1>that resulted in a catastrophic failure. So software bugs can

0:42:39.239 --> 0:42:42.239
<v Speaker 1>be a matter of life or death. It's not all

0:42:42.520 --> 0:42:45.479
<v Speaker 1>just Hey, this irritating thing meant people couldn't make long

0:42:45.520 --> 0:42:50.960
<v Speaker 1>distance phone calls, or this issue caused my computer to

0:42:51.000 --> 0:42:53.360
<v Speaker 1>start writing massive amounts of data to its hard drive.

0:42:54.239 --> 0:42:58.000
<v Speaker 1>And this is why it's so important to have really

0:42:58.560 --> 0:43:02.759
<v Speaker 1>qualified QA personnel go through code and make sure it's

0:43:02.800 --> 0:43:05.239
<v Speaker 1>doing what it's supposed to do, because the problems that

0:43:05.280 --> 0:43:08.120
<v Speaker 1>can arise can be non trivial and in fact life

0:43:08.200 --> 0:43:12.319
<v Speaker 1>or death situations depending upon the application of technology. So

0:43:12.600 --> 0:43:15.920
<v Speaker 1>technology is a fascinating thing. It's a wonderful thing. It

0:43:15.960 --> 0:43:20.000
<v Speaker 1>has benefited us in ways that I can't even begin

0:43:20.080 --> 0:43:23.000
<v Speaker 1>to describe. It's just too broad a topic, and it's

0:43:23.040 --> 0:43:25.799
<v Speaker 1>something I've been tackling for, you know, eight years, and

0:43:25.840 --> 0:43:29.520
<v Speaker 1>I haven't even gotten close to getting toward a finishing point.

0:43:29.640 --> 0:43:33.399
<v Speaker 1>So I don't want to suggest that technology is bad,

0:43:33.440 --> 0:43:37.799
<v Speaker 1>but we definitely have the need to check, double check,

0:43:37.840 --> 0:43:40.120
<v Speaker 1>and triple check all this work to make certain things

0:43:40.160 --> 0:43:43.400
<v Speaker 1>are working properly before we release them ount into the wild.

0:43:43.400 --> 0:43:48.200
<v Speaker 1>That particularly applies if, again, you are reusing old code

0:43:48.520 --> 0:43:53.239
<v Speaker 1>or old components in a new way, because you have

0:43:53.280 --> 0:43:55.400
<v Speaker 1>to make absolutely certain that there's not going to be

0:43:55.600 --> 0:44:00.760
<v Speaker 1>some unintended problem that results when a new form factor

0:44:01.000 --> 0:44:05.520
<v Speaker 1>is using old code. Alrighty, And that was our Bad

0:44:05.560 --> 0:44:08.320
<v Speaker 1>Computer Bugs episode, which I still haven't listened back to yet.

0:44:08.400 --> 0:44:12.920
<v Speaker 1>So maybe I talked about bedbugs. I probably talked about

0:44:12.960 --> 0:44:16.840
<v Speaker 1>Grace Hopper in that episode. Just did an episode about

0:44:16.840 --> 0:44:21.000
<v Speaker 1>Grace Hopper earlier this year for a Memorial Day remembering

0:44:21.080 --> 0:44:25.200
<v Speaker 1>Grace Hopper and her contributions because of the somewhat apocryphal

0:44:25.280 --> 0:44:30.200
<v Speaker 1>story that she coined the term computer bug, but I

0:44:30.239 --> 0:44:32.080
<v Speaker 1>have a feeling I might have addressed that in this

0:44:32.200 --> 0:44:35.400
<v Speaker 1>episode too. Hopefully I did. If not, make sure you

0:44:35.960 --> 0:44:38.800
<v Speaker 1>find that episode about Grace Hopper. She was a truly

0:44:38.920 --> 0:44:44.720
<v Speaker 1>phenomenal innovator and computer scientist, someone who is extremely important

0:44:44.760 --> 0:44:47.600
<v Speaker 1>in the history of computer science, especially here in the

0:44:47.680 --> 0:44:51.000
<v Speaker 1>United States. Check that out and I hope you enjoyed

0:44:51.080 --> 0:44:53.839
<v Speaker 1>this classic episode. I hope you're all well, and I'll

0:44:53.880 --> 0:45:02.879
<v Speaker 1>talk to you again really soon. Tech Stuff is an

0:45:02.880 --> 0:45:08.400
<v Speaker 1>iHeartRadio production. For more podcasts from iHeartRadio, visit the iHeartRadio app,

0:45:08.560 --> 0:45:11.720
<v Speaker 1>Apple Podcasts, or wherever you listen to your favorite shows.