1 00:00:04,160 --> 00:00:07,160 Speaker 1: Get in touch with technology with tech Stuff from how 2 00:00:07,240 --> 00:00:13,800 Speaker 1: Stuff works dot com. Hey guys, welcome to tech Stuff. 3 00:00:13,880 --> 00:00:18,400 Speaker 1: I'm your host Jonathan strickland Um with super producer Dylan 4 00:00:18,880 --> 00:00:22,239 Speaker 1: in the teeny Tiny Stuff You Should Know Studio. Pretty soon, 5 00:00:22,280 --> 00:00:24,239 Speaker 1: I'm going to demand it be called the Stuff You 6 00:00:24,280 --> 00:00:28,319 Speaker 1: Should Know in Tech Stuff Studio, because who's gonna stop me. 7 00:00:29,000 --> 00:00:30,960 Speaker 1: Today I wanted to take a look at some of 8 00:00:31,000 --> 00:00:35,760 Speaker 1: the most spectacular computer bugs ever made, or at least 9 00:00:35,840 --> 00:00:37,839 Speaker 1: some of the more notable ones, and I got the 10 00:00:38,000 --> 00:00:41,400 Speaker 1: inspiration for this episode after researching a bug affecting the 11 00:00:41,440 --> 00:00:44,640 Speaker 1: Spotify desktop app. More on that in just a second, 12 00:00:45,880 --> 00:00:50,480 Speaker 1: but first I have to address a bit of apocryphal history, 13 00:00:50,800 --> 00:00:55,200 Speaker 1: and regrettably it's a story that we've repeated on tech Stuff. 14 00:00:55,240 --> 00:00:59,840 Speaker 1: So I'm sad to admit that I was complicit, although unknowingly, 15 00:01:00,600 --> 00:01:04,960 Speaker 1: in the spread of misinformation and that all has to 16 00:01:05,000 --> 00:01:07,960 Speaker 1: do with the origin of the term bug to describe 17 00:01:07,959 --> 00:01:12,280 Speaker 1: a flaw in programming. So here's the popular story, the 18 00:01:12,319 --> 00:01:19,039 Speaker 1: one that we have accidentally, uh promoted on tech Stuff 19 00:01:19,040 --> 00:01:22,280 Speaker 1: without knowing that we were in the wrong. It goes 20 00:01:22,319 --> 00:01:25,560 Speaker 1: that Grace Hopper, who was an early computer scientist who 21 00:01:25,640 --> 00:01:28,000 Speaker 1: rose to the rank of Rear admiral in the U. S. 22 00:01:28,080 --> 00:01:32,759 Speaker 1: Navy coined the phrase bug after discovering a moth coming 23 00:01:32,840 --> 00:01:38,200 Speaker 1: up Harvard's Mark two calculator, a literal bug. Generally speaking, 24 00:01:38,240 --> 00:01:43,000 Speaker 1: the story tends to be set in nineteen and there 25 00:01:43,080 --> 00:01:45,400 Speaker 1: is even a note in the log book that reads 26 00:01:45,560 --> 00:01:49,480 Speaker 1: first actual case of bug being found that's attributed to 27 00:01:49,520 --> 00:01:53,200 Speaker 1: Grace Hopper. But there are several points that are wrong 28 00:01:53,320 --> 00:01:57,160 Speaker 1: in this story. First, the year it didn't happen in ninet. 29 00:01:58,480 --> 00:02:02,000 Speaker 1: It happened on September. N We know because there's a 30 00:02:02,080 --> 00:02:05,560 Speaker 1: log book. At the log book that marks the incident 31 00:02:05,760 --> 00:02:08,720 Speaker 1: not only has the notes, it actually has the moth 32 00:02:08,880 --> 00:02:13,880 Speaker 1: taped into the book itself. It's taped onto the page. Second, 33 00:02:13,880 --> 00:02:17,280 Speaker 1: Grace Hopper wasn't the person to discover the moth or 34 00:02:17,480 --> 00:02:21,720 Speaker 1: make that log entry. She did tell the story about 35 00:02:21,720 --> 00:02:25,080 Speaker 1: the moth several times, but it wasn't in the context 36 00:02:25,200 --> 00:02:28,919 Speaker 1: of finding it or logging it. She just told the 37 00:02:28,960 --> 00:02:31,080 Speaker 1: story that, yeah, we really did have a bug in 38 00:02:31,120 --> 00:02:34,960 Speaker 1: the system. And most importantly, the word bug had already 39 00:02:35,000 --> 00:02:39,280 Speaker 1: been used to describe design flaws for decades before the 40 00:02:39,280 --> 00:02:42,720 Speaker 1: Mark two was even designed. In fact, if you look 41 00:02:42,760 --> 00:02:45,359 Speaker 1: at the log book. This makes sense. It says first 42 00:02:45,400 --> 00:02:49,519 Speaker 1: actual case of bug being found. That sentence doesn't make 43 00:02:49,680 --> 00:02:53,440 Speaker 1: sense unless you've already used the word bug to describe 44 00:02:53,520 --> 00:02:57,920 Speaker 1: a flaw, because you wouldn't say first actual case of 45 00:02:57,919 --> 00:03:00,880 Speaker 1: bug being found. That the wording doesn't make any sense. 46 00:03:00,880 --> 00:03:05,400 Speaker 1: The context makes no sense. Sadly, there are documented quotes 47 00:03:05,760 --> 00:03:09,040 Speaker 1: dating back to the nineteenth century using the word bug 48 00:03:09,080 --> 00:03:12,239 Speaker 1: to mean a design fault, and it could go back 49 00:03:12,240 --> 00:03:16,239 Speaker 1: even further than that. So is with much regret that 50 00:03:16,280 --> 00:03:18,840 Speaker 1: I admit I have unwittingly contributed to a bit of 51 00:03:18,880 --> 00:03:21,799 Speaker 1: misleading folklore making the rounds. But I'm glad I can 52 00:03:21,800 --> 00:03:24,880 Speaker 1: take this opportunity to address it. All Right, So let's 53 00:03:24,919 --> 00:03:29,799 Speaker 1: talk about design bugs, and I'll be covering several goofs, mistakes, flubs, flaws, 54 00:03:29,840 --> 00:03:34,040 Speaker 1: and outright catastrophes in this episode. But one thing I'm 55 00:03:34,080 --> 00:03:38,240 Speaker 1: not necessarily going to cover our software vulnerabilities that were 56 00:03:38,320 --> 00:03:42,680 Speaker 1: later exploited, either by opportunistic hackers or white hats who 57 00:03:42,680 --> 00:03:46,880 Speaker 1: are just trying to improve system security. Those vulnerabilities are 58 00:03:46,960 --> 00:03:50,000 Speaker 1: common in many types of software and arise not just 59 00:03:50,080 --> 00:03:55,240 Speaker 1: through mistakes, but sometimes simple oversights, and I think it 60 00:03:55,320 --> 00:03:57,440 Speaker 1: might be more fun to look at some real bugs, 61 00:03:57,440 --> 00:04:00,760 Speaker 1: like stuff that made things go wrong, stuff that may 62 00:04:00,800 --> 00:04:04,800 Speaker 1: have rendered a program defunct or otherwise caused headaches. Now 63 00:04:04,800 --> 00:04:06,840 Speaker 1: I'm gonna make an exception to this. I'm going to 64 00:04:06,960 --> 00:04:10,560 Speaker 1: start off with the ping of death, and I only 65 00:04:10,600 --> 00:04:14,240 Speaker 1: mention it because it has an awesome name. Now, this 66 00:04:14,280 --> 00:04:18,000 Speaker 1: flaw caused headaches back in ninety six. It was a 67 00:04:18,000 --> 00:04:23,160 Speaker 1: flawed i P fragmentation reassembly code, and it became possible 68 00:04:23,160 --> 00:04:25,919 Speaker 1: to crash lots of different types of computers using different 69 00:04:25,960 --> 00:04:30,000 Speaker 1: operating systems, although Windows machines were particularly vulnerable, and this 70 00:04:30,080 --> 00:04:32,880 Speaker 1: particular flaw would make a Windows machine revert to the 71 00:04:33,000 --> 00:04:36,400 Speaker 1: dreaded blue screen of death. And it all happened by 72 00:04:36,400 --> 00:04:40,039 Speaker 1: sending a special ping packet over the internet. So, for 73 00:04:40,160 --> 00:04:42,120 Speaker 1: those of you who aren't familiar with what that is, 74 00:04:42,279 --> 00:04:45,800 Speaker 1: a ping is essentially a simple message that checks for 75 00:04:45,880 --> 00:04:49,400 Speaker 1: a connection between two computers. You send one ping from 76 00:04:49,400 --> 00:04:52,200 Speaker 1: a computer to another one and look for a response, 77 00:04:52,480 --> 00:04:55,080 Speaker 1: so that way you verify there is in fact a connection. 78 00:04:55,120 --> 00:04:57,840 Speaker 1: You can also tell other things like how fast is 79 00:04:57,880 --> 00:05:01,400 Speaker 1: that connection between those two computers. Now, in this case, 80 00:05:01,720 --> 00:05:04,960 Speaker 1: you would have to actually design a malformed ping request 81 00:05:05,040 --> 00:05:07,840 Speaker 1: and send that to a target, and it would bring 82 00:05:07,880 --> 00:05:12,000 Speaker 1: that target down. That's the only security vulnerability story I 83 00:05:12,040 --> 00:05:15,040 Speaker 1: really wanted to focus on. The others are all just 84 00:05:15,760 --> 00:05:18,640 Speaker 1: design flaws. And let's begin with the bug that inspired 85 00:05:18,680 --> 00:05:20,320 Speaker 1: me to do this episode in the first place, That 86 00:05:20,400 --> 00:05:24,080 Speaker 1: Spotify bug I mentioned earlier. Ours Technica wrote a piece 87 00:05:24,120 --> 00:05:26,240 Speaker 1: on it in November two thousand and sixteen, but the 88 00:05:26,240 --> 00:05:29,120 Speaker 1: problem seems to date back at least as far as 89 00:05:29,240 --> 00:05:32,760 Speaker 1: June two thousand sixteen, and that's when a few savvy 90 00:05:32,839 --> 00:05:37,440 Speaker 1: Spotify users noticed some unusual activities on their computers. And 91 00:05:37,480 --> 00:05:39,240 Speaker 1: it took a little bit of detective work, but they 92 00:05:39,240 --> 00:05:43,120 Speaker 1: discovered that Spotify was apparently generating a huge amount of 93 00:05:43,200 --> 00:05:48,560 Speaker 1: data on a daily basis, like gigabytes of data per day. 94 00:05:48,720 --> 00:05:51,960 Speaker 1: And the culprit turned out to be a vacuum process 95 00:05:52,040 --> 00:05:56,440 Speaker 1: for a database file containing the string mercury dot dB. Now, 96 00:05:56,480 --> 00:06:00,279 Speaker 1: the vacuum process is the digital equivalent of vacuum c link. 97 00:06:00,320 --> 00:06:03,000 Speaker 1: It's meant to repack data so that it takes up 98 00:06:03,120 --> 00:06:06,280 Speaker 1: less space on a drive. Now, this involves building a 99 00:06:06,279 --> 00:06:09,719 Speaker 1: new file to maximize efficiency, which is a good thing 100 00:06:09,839 --> 00:06:16,080 Speaker 1: generally speaking. The problem was that Spotify's version was making 101 00:06:16,120 --> 00:06:18,440 Speaker 1: it happen way too frequently, like on the order of 102 00:06:18,520 --> 00:06:22,640 Speaker 1: once every few minutes, so that's not generally necessary. You 103 00:06:22,640 --> 00:06:25,440 Speaker 1: don't need to rebuild a database file every few minutes 104 00:06:25,480 --> 00:06:28,440 Speaker 1: to make sure it's the most efficient size it can be. 105 00:06:29,720 --> 00:06:33,000 Speaker 1: So each rebuild represented a relatively small amount of data, 106 00:06:33,080 --> 00:06:36,039 Speaker 1: but over time it added up, which meant that if 107 00:06:36,080 --> 00:06:38,880 Speaker 1: you had Spotify on on your computer, even if it 108 00:06:38,960 --> 00:06:41,680 Speaker 1: was just running in the background, it would be generating 109 00:06:41,720 --> 00:06:45,400 Speaker 1: gigabytes worth of information rewriting this file over and over. 110 00:06:45,720 --> 00:06:48,479 Speaker 1: Now it wasn't filling up a hard drive. It was 111 00:06:48,520 --> 00:06:53,920 Speaker 1: just overwriting the same file. Now, if it had been 112 00:06:53,920 --> 00:06:56,320 Speaker 1: filling up a hard drive, people would have noticed much earlier, 113 00:06:56,320 --> 00:06:59,360 Speaker 1: and it wouldn't have just been savvy Spotify users, because 114 00:06:59,360 --> 00:07:01,800 Speaker 1: you would suddenly notice, hey, I don't I can't save 115 00:07:01,800 --> 00:07:05,800 Speaker 1: anything to my hard drive because everything is filling up. Instead. Again, 116 00:07:05,839 --> 00:07:08,480 Speaker 1: it was just sort of writing and deleting and writing 117 00:07:08,480 --> 00:07:11,280 Speaker 1: and deleting the same file over and over again. And 118 00:07:11,320 --> 00:07:13,240 Speaker 1: that probably doesn't sound like a big deal, but it 119 00:07:13,440 --> 00:07:15,800 Speaker 1: is a problem if you're using a solid state drive 120 00:07:16,040 --> 00:07:19,240 Speaker 1: or s s D. So one of the drawbacks of 121 00:07:19,240 --> 00:07:23,600 Speaker 1: an ss D is that over time it loses storage capacity, 122 00:07:23,720 --> 00:07:27,960 Speaker 1: like you can store less data on an SSD over time. Now, 123 00:07:28,400 --> 00:07:30,960 Speaker 1: by overtime I generally mean over a great deal of 124 00:07:31,040 --> 00:07:33,160 Speaker 1: time and a lot of different data being written to 125 00:07:33,200 --> 00:07:37,360 Speaker 1: it and overwritten. Uh. Generally speaking, most of us end 126 00:07:37,440 --> 00:07:40,320 Speaker 1: up replacing our drives before we get to a point 127 00:07:40,320 --> 00:07:44,320 Speaker 1: where the loss of capacity is a real issue. But 128 00:07:44,520 --> 00:07:46,560 Speaker 1: similar in a way to how a battery can lose 129 00:07:46,600 --> 00:07:49,400 Speaker 1: its ability to hold a full charge after you've gone 130 00:07:49,440 --> 00:07:53,560 Speaker 1: through lots of charging and discharging cycles, you know how 131 00:07:53,600 --> 00:07:55,960 Speaker 1: a battery won't be able to to hold as much 132 00:07:56,000 --> 00:07:58,720 Speaker 1: even if it says it's up to a but a 133 00:07:58,760 --> 00:08:01,120 Speaker 1: hundred percent doesn't last you as long as it used to. 134 00:08:01,680 --> 00:08:04,400 Speaker 1: That's because its capacity to hold a full charge has 135 00:08:04,440 --> 00:08:08,560 Speaker 1: decreased over time. But let's say you've got a program 136 00:08:08,640 --> 00:08:12,680 Speaker 1: that's just constantly overwriting data to your drive, you might 137 00:08:12,720 --> 00:08:15,560 Speaker 1: discover that your ss D s useful lifespan has been 138 00:08:15,640 --> 00:08:20,560 Speaker 1: drastically reduced. So as I record this episode, Spotify has 139 00:08:20,600 --> 00:08:24,360 Speaker 1: already rolled out an updated version of its desktop application, 140 00:08:24,400 --> 00:08:26,280 Speaker 1: and that, by the way, is the only version of 141 00:08:26,320 --> 00:08:29,520 Speaker 1: Spotify that was affected. If you use web based Spotify 142 00:08:29,800 --> 00:08:32,719 Speaker 1: or mobile Spotify, you're in the clear already if you 143 00:08:32,800 --> 00:08:35,480 Speaker 1: use a desktop version, as long as you have version 144 00:08:35,600 --> 00:08:40,160 Speaker 1: one point zero point four two or later, you are fine. 145 00:08:41,280 --> 00:08:43,520 Speaker 1: But if you did have that earlier version and you 146 00:08:43,640 --> 00:08:46,000 Speaker 1: just had Spotify running on in the background, chances are 147 00:08:46,160 --> 00:08:50,160 Speaker 1: it was writing to your hard drive like crazy. So 148 00:08:50,200 --> 00:08:53,400 Speaker 1: what about some of the other big bugs in computer history. Well, 149 00:08:53,440 --> 00:08:56,120 Speaker 1: some of the real doozies involve our attempts to explore 150 00:08:56,200 --> 00:08:59,839 Speaker 1: the final frontier. So we'll be talking about space a 151 00:09:00,000 --> 00:09:02,200 Speaker 1: few times in this episode, and we'll start with an 152 00:09:02,200 --> 00:09:06,640 Speaker 1: early US satellite. So first up is a nineteen sixty 153 00:09:06,679 --> 00:09:10,400 Speaker 1: two blunder involving the Mariner one. So some backstory on 154 00:09:10,440 --> 00:09:12,880 Speaker 1: this one. Uh, We're gonna talk a lot about the 155 00:09:12,880 --> 00:09:16,040 Speaker 1: Soviet Union in this episode two. It takes a couple 156 00:09:16,080 --> 00:09:18,880 Speaker 1: of roles as we go on. But in this case, 157 00:09:18,960 --> 00:09:22,880 Speaker 1: the then USSR had launched Sputnik into orbit in nineteen 158 00:09:22,920 --> 00:09:25,280 Speaker 1: fifty seven, which really kicked off the space race and 159 00:09:25,360 --> 00:09:28,640 Speaker 1: also was a big shot in the Cold War because 160 00:09:28,679 --> 00:09:31,640 Speaker 1: of so Union was essentially saying, hey, we can launch 161 00:09:31,720 --> 00:09:34,320 Speaker 1: this into space, we could also launch something at you. 162 00:09:35,520 --> 00:09:37,760 Speaker 1: In response, the US and done sort of the same thing. 163 00:09:37,760 --> 00:09:40,840 Speaker 1: They had launched some satellites into space and the Mariner 164 00:09:40,920 --> 00:09:43,880 Speaker 1: one was going to be a big, big feather in 165 00:09:43,920 --> 00:09:45,599 Speaker 1: the cap of the US. The whole idea was to 166 00:09:45,679 --> 00:09:48,440 Speaker 1: launch a probe that would be a fly by probe 167 00:09:48,559 --> 00:09:53,640 Speaker 1: and it would go by Venus. So uh NASA, which 168 00:09:53,679 --> 00:09:57,400 Speaker 1: was newly formed in nineteen sixty two, was taking control 169 00:09:57,440 --> 00:09:59,720 Speaker 1: of this and the budget for this particular project was 170 00:09:59,800 --> 00:10:02,600 Speaker 1: eight team point five million dollars, which if you were 171 00:10:02,640 --> 00:10:06,440 Speaker 1: to adjust for inflation, would be almost a hundred fifty 172 00:10:06,520 --> 00:10:10,520 Speaker 1: million dollars today, So a hundred fifty million dollar project 173 00:10:10,559 --> 00:10:14,200 Speaker 1: to launch the Mariner one and have it fly by Venus. 174 00:10:14,240 --> 00:10:16,760 Speaker 1: But as I'm sure you guys have figured out by 175 00:10:16,760 --> 00:10:20,520 Speaker 1: now based upon the topic of this podcast, not all 176 00:10:20,600 --> 00:10:24,760 Speaker 1: went according to plan. Not long at all. After the 177 00:10:24,880 --> 00:10:28,800 Speaker 1: rocket launched from the launch pad, it began to veer 178 00:10:28,880 --> 00:10:32,440 Speaker 1: off course, and neither the computer controls on the rocket 179 00:10:32,559 --> 00:10:37,000 Speaker 1: or manual controls back at HQ could correct for the problem. 180 00:10:37,080 --> 00:10:39,760 Speaker 1: The rockets course was such that it was going to 181 00:10:39,840 --> 00:10:42,640 Speaker 1: take it over shipping lanes, which meant there could be 182 00:10:42,640 --> 00:10:47,280 Speaker 1: a potential catastrophe, and so Arrange safety officer made the 183 00:10:47,320 --> 00:10:50,280 Speaker 1: difficult call and issued the command to blow the whole 184 00:10:50,360 --> 00:10:54,480 Speaker 1: thing up, just shy of three hundred seconds after it launched. 185 00:10:55,000 --> 00:10:57,400 Speaker 1: So what happened? What why did it go off course 186 00:10:57,400 --> 00:10:59,520 Speaker 1: in the first place? Well, there was a flaw in 187 00:10:59,559 --> 00:11:02,880 Speaker 1: the space crafts guidance software which diverted the rocket, and 188 00:11:02,960 --> 00:11:05,840 Speaker 1: no amount of commands from ground control could correct for it. 189 00:11:06,280 --> 00:11:10,800 Speaker 1: After a lengthy investigation, NASA discovered the era error was 190 00:11:11,080 --> 00:11:16,560 Speaker 1: the result of a mistake transcribing handwritten notes into computer code. 191 00:11:17,360 --> 00:11:21,880 Speaker 1: So someone just took some handwritten notes and misinterpreted one 192 00:11:21,880 --> 00:11:28,000 Speaker 1: of them, and that one mistake was enough to crash 193 00:11:28,280 --> 00:11:33,680 Speaker 1: the rocket, or to to necessitate it being destroyed. The 194 00:11:33,760 --> 00:11:38,400 Speaker 1: great science fiction author Arthur C. Clark wrote that the 195 00:11:38,480 --> 00:11:43,800 Speaker 1: Mariner one was wrecked by the most expensive hyphen in history, 196 00:11:43,960 --> 00:11:47,120 Speaker 1: which isn't quite right, but it's pretty funny. I mean, 197 00:11:47,280 --> 00:11:51,480 Speaker 1: come on, it's humorous phrase. So the actual punctuation mark 198 00:11:51,520 --> 00:11:54,840 Speaker 1: that caused the problem was not technically a hyphen. It 199 00:11:54,920 --> 00:11:59,120 Speaker 1: was a superscript bar. Superscript bars, by the way, not 200 00:11:59,200 --> 00:12:01,319 Speaker 1: a place where player rights hang out to get tore up. 201 00:12:02,120 --> 00:12:05,440 Speaker 1: A superscript bar just means it's a horizontal bar that 202 00:12:05,600 --> 00:12:08,360 Speaker 1: is above some other symbol. In this case, it was 203 00:12:08,400 --> 00:12:12,920 Speaker 1: a radius symbol, and that was a symbol along with 204 00:12:12,960 --> 00:12:17,280 Speaker 1: the superscript bar to describe a smoothing function, which means 205 00:12:17,320 --> 00:12:20,920 Speaker 1: the formula was meant to calculate smoothed values over the 206 00:12:20,960 --> 00:12:25,760 Speaker 1: time derivative of a radius. Now, without the smoothing function, 207 00:12:26,320 --> 00:12:30,439 Speaker 1: tiny deviations in course sent commands to the rockets thrusters 208 00:12:30,440 --> 00:12:34,000 Speaker 1: to kick in big time to overcorrect for that problem. 209 00:12:34,040 --> 00:12:36,760 Speaker 1: As an analogy, imagine you're driving a vehicle and you 210 00:12:36,800 --> 00:12:39,600 Speaker 1: see a pothole in the road and you're approaching it, 211 00:12:39,720 --> 00:12:44,160 Speaker 1: and instead of gently steering out of the way, you 212 00:12:44,400 --> 00:12:47,160 Speaker 1: wrenched the wheel really hard to the left or to 213 00:12:47,200 --> 00:12:49,440 Speaker 1: the right in order to try and get around this pothole. 214 00:12:49,880 --> 00:12:51,920 Speaker 1: That's kind of what was happening with the rocket. It 215 00:12:51,960 --> 00:12:55,120 Speaker 1: didn't have the smoothing function and so as a result, 216 00:12:55,200 --> 00:12:59,240 Speaker 1: it was having these wild deviations and course. So it 217 00:12:59,360 --> 00:13:02,000 Speaker 1: wasn't a high fin that caused the problem, but is 218 00:13:02,040 --> 00:13:05,800 Speaker 1: close enough. Our next space story takes place in nineteen 219 00:13:06,400 --> 00:13:10,640 Speaker 1: with the European Space Agencies RAN five Flight five O 220 00:13:10,880 --> 00:13:14,200 Speaker 1: one rocket. Now, this rocket was to launch into space 221 00:13:14,240 --> 00:13:19,400 Speaker 1: on June four nine, and instead the rocket disintegrated forty 222 00:13:19,559 --> 00:13:23,640 Speaker 1: seconds after taking off. So what the heck happened? Well, 223 00:13:23,679 --> 00:13:25,640 Speaker 1: it largely had to do with the e s A 224 00:13:26,080 --> 00:13:30,239 Speaker 1: reusing old work. This actually becomes a theme in this episode. 225 00:13:30,640 --> 00:13:34,480 Speaker 1: One of the morals of of this entire podcast is 226 00:13:34,600 --> 00:13:38,440 Speaker 1: if you're designing something a successor to an earlier product, 227 00:13:39,720 --> 00:13:42,800 Speaker 1: and you'd want to reuse some of the features that 228 00:13:42,880 --> 00:13:47,320 Speaker 1: you created in your previous product, test the heck out 229 00:13:47,360 --> 00:13:50,760 Speaker 1: of it in its new form factor, because it could 230 00:13:50,840 --> 00:13:53,760 Speaker 1: be that things that worked perfectly fine in the earlier 231 00:13:53,800 --> 00:13:58,240 Speaker 1: model will go awry in the new one. That's what 232 00:13:58,360 --> 00:14:01,760 Speaker 1: happened here. So as you might guess from the name, 233 00:14:02,000 --> 00:14:06,360 Speaker 1: the Aeryan five marked the fifth generation of launch vehicles 234 00:14:06,520 --> 00:14:11,160 Speaker 1: under that name. The Arian four's inertial reference system would 235 00:14:11,160 --> 00:14:14,920 Speaker 1: convert sixty four bit floating point numbers into a sixteen 236 00:14:14,960 --> 00:14:20,680 Speaker 1: bits signed integer, and it worked just fine. But the 237 00:14:20,760 --> 00:14:26,400 Speaker 1: Arian five stats were beefier than its predecessor with faster engines, 238 00:14:26,440 --> 00:14:29,640 Speaker 1: and that was where the problem really started. The engine 239 00:14:29,640 --> 00:14:33,480 Speaker 1: output meant those sixty four bit floating point numbers were 240 00:14:33,560 --> 00:14:37,520 Speaker 1: significantly larger than the ones generated by the engines on 241 00:14:37,560 --> 00:14:41,680 Speaker 1: the Arian four. They didn't anticipate this, so during the 242 00:14:41,680 --> 00:14:46,400 Speaker 1: conversion process there was actually data overflow, and that overflow 243 00:14:46,520 --> 00:14:50,360 Speaker 1: caused both the backup computer and the primary computer aboard 244 00:14:50,360 --> 00:14:53,440 Speaker 1: the Arian five to crash, and they crashed in that order. 245 00:14:53,480 --> 00:14:57,040 Speaker 1: The backup computer crashed first, followed by the primary computer 246 00:14:57,080 --> 00:14:59,960 Speaker 1: a couple of seconds later. The whole thing took less 247 00:15:00,000 --> 00:15:04,120 Speaker 1: than a minute to go from launch to disintegration. Oops, 248 00:15:05,600 --> 00:15:07,920 Speaker 1: now we're gonna stick with space. But jumped forward to 249 00:15:10,240 --> 00:15:16,200 Speaker 1: and the Mars Climate Orbiter. This was an unfortunate problem. 250 00:15:16,560 --> 00:15:19,960 Speaker 1: So this particular spacecraft was meant to study Mars's climate, 251 00:15:20,080 --> 00:15:22,920 Speaker 1: atmosphere and surface changes, and it was also supposed to 252 00:15:22,960 --> 00:15:26,200 Speaker 1: be a kind of relay station for landers that would 253 00:15:26,240 --> 00:15:30,320 Speaker 1: explore Mars's surface, but none of that would last because 254 00:15:30,440 --> 00:15:36,040 Speaker 1: of some pretty significant goofs. So on September, the orbiter 255 00:15:36,160 --> 00:15:40,680 Speaker 1: passed into the upper atmosphere of Mars and did so 256 00:15:40,880 --> 00:15:44,320 Speaker 1: at a pretty low altitude. And this is what folks 257 00:15:44,320 --> 00:15:47,920 Speaker 1: in the space industry called a bad thing. The Dragon, 258 00:15:48,000 --> 00:15:51,800 Speaker 1: the spacecraft was significant. It began to fall apart and 259 00:15:51,960 --> 00:15:57,680 Speaker 1: it was destroyed upon entering Mars's atmosphere. That's what happened. 260 00:15:58,840 --> 00:16:02,280 Speaker 1: So the software guide the orbiter was to blame, and 261 00:16:03,160 --> 00:16:06,360 Speaker 1: it's a dumb, dumb mistake. It was supposed to make 262 00:16:06,360 --> 00:16:10,600 Speaker 1: adjustments to the orbiter's flight in SI units, specifically in 263 00:16:10,640 --> 00:16:15,560 Speaker 1: Newton seconds. That's what the contract with Lockheed and NASA said, 264 00:16:16,280 --> 00:16:20,040 Speaker 1: Newton seconds, use SI units for all of your all 265 00:16:20,080 --> 00:16:24,400 Speaker 1: of your calculations, but the software instead made calculations in 266 00:16:24,520 --> 00:16:30,840 Speaker 1: non SI units, namely pounds seconds. So Lockheeds software gave 267 00:16:30,920 --> 00:16:34,960 Speaker 1: information to NASA's systems using the wrong units of measure. 268 00:16:36,040 --> 00:16:39,240 Speaker 1: NASA systems then took that information, assuming it was with 269 00:16:39,360 --> 00:16:43,800 Speaker 1: the right units of measure, and executed commands based upon that. 270 00:16:45,000 --> 00:16:47,760 Speaker 1: Uh So, this is why if you're ever in a 271 00:16:47,840 --> 00:16:52,600 Speaker 1: math course and the teacher makes you stop in the 272 00:16:52,640 --> 00:16:54,760 Speaker 1: middle of writing a problem on the board and says, 273 00:16:54,800 --> 00:16:57,920 Speaker 1: where are your units? This is why you have to 274 00:16:58,000 --> 00:17:01,520 Speaker 1: make sure you're using the right units, because if you're 275 00:17:01,560 --> 00:17:04,800 Speaker 1: saying a number and you don't associate a unit with it, 276 00:17:05,080 --> 00:17:08,040 Speaker 1: someone could make an incorrect decision based on that, and 277 00:17:08,080 --> 00:17:10,639 Speaker 1: it could be disastrous, as it was with the case 278 00:17:10,760 --> 00:17:14,360 Speaker 1: of this orbiter. The thrusters fired at four point four 279 00:17:14,440 --> 00:17:17,960 Speaker 1: or five times the power they were supposed to, and 280 00:17:18,000 --> 00:17:20,760 Speaker 1: the orbiter didn't stand a chance. And this was a 281 00:17:20,760 --> 00:17:24,080 Speaker 1: pretty expensive mistake. That mission's cost came in at three 282 00:17:24,800 --> 00:17:28,639 Speaker 1: seven point six million dollars, but on the bright side 283 00:17:28,680 --> 00:17:31,359 Speaker 1: with all of these stories, at least no human lives 284 00:17:31,440 --> 00:17:36,000 Speaker 1: were ever in real danger as a result of the mistake. Now, 285 00:17:36,080 --> 00:17:39,840 Speaker 1: I've got a lot more to say about bugs, but 286 00:17:40,040 --> 00:17:42,240 Speaker 1: before I get into that, let's take a quick break 287 00:17:42,400 --> 00:17:53,000 Speaker 1: to thank our sponsor. All right, Now, let's make a 288 00:17:53,040 --> 00:17:55,479 Speaker 1: switch to A T and T, which is a company 289 00:17:55,480 --> 00:17:58,160 Speaker 1: that had a pretty big problem with switches once upon 290 00:17:58,200 --> 00:18:00,920 Speaker 1: a time. I'm talking about issue that popped up on 291 00:18:01,000 --> 00:18:04,560 Speaker 1: January nine nine. That's when A T and T long 292 00:18:04,600 --> 00:18:07,200 Speaker 1: distance customers discovered they were unable to make any long 293 00:18:07,240 --> 00:18:11,879 Speaker 1: distance calls. Why why could they no longer reach anybody? Well, 294 00:18:12,440 --> 00:18:17,119 Speaker 1: A T and T s long distance switches, which control 295 00:18:17,240 --> 00:18:20,639 Speaker 1: that and allow for the actual connections to be made, 296 00:18:20,960 --> 00:18:23,840 Speaker 1: were on the fritz. They were trying to reboot over 297 00:18:23,880 --> 00:18:27,560 Speaker 1: and over again. They were just stuck in a reboot cycle. Now, 298 00:18:27,640 --> 00:18:31,520 Speaker 1: initially the company thought it was being hacked, But like 299 00:18:31,560 --> 00:18:33,000 Speaker 1: I said at the top of the show, I'm not 300 00:18:33,119 --> 00:18:36,680 Speaker 1: covering stories about hackers here. I'm talking about big design 301 00:18:36,720 --> 00:18:41,680 Speaker 1: flaws that caused problems. So they weren't getting hacked. That's 302 00:18:41,920 --> 00:18:44,320 Speaker 1: not what was going on with those D fourteen long 303 00:18:44,320 --> 00:18:47,600 Speaker 1: distance switches. No, there was a design problem at fault. 304 00:18:48,440 --> 00:18:49,959 Speaker 1: So what had happened was a T and D had 305 00:18:50,040 --> 00:18:53,480 Speaker 1: rolled out an update to the code that managed the switches, 306 00:18:53,880 --> 00:18:56,080 Speaker 1: and it was meant to increase the efficiency. It was 307 00:18:56,119 --> 00:18:58,879 Speaker 1: meant to speed things up, but the problem was it 308 00:18:59,040 --> 00:19:01,680 Speaker 1: sped things up so much that the system got caught 309 00:19:01,800 --> 00:19:04,679 Speaker 1: up in itself. It gets pretty technical, but I can 310 00:19:04,680 --> 00:19:08,439 Speaker 1: give you kind of a overview of what the problem was. Alright, 311 00:19:08,480 --> 00:19:12,560 Speaker 1: so each switch had a function that allowed it to 312 00:19:12,760 --> 00:19:16,800 Speaker 1: alert the next switch down the line if things were 313 00:19:16,800 --> 00:19:20,560 Speaker 1: starting to get hairy. So imagine that switch number one 314 00:19:20,960 --> 00:19:24,200 Speaker 1: is handling traffic, but it's getting really close to capacity. 315 00:19:24,240 --> 00:19:26,320 Speaker 1: So it sends a message over to switch number two 316 00:19:26,359 --> 00:19:29,680 Speaker 1: and says, I can't take on any more work because 317 00:19:29,720 --> 00:19:33,200 Speaker 1: if I do, I'll be overloaded. Switch to then says, 318 00:19:33,400 --> 00:19:36,679 Speaker 1: no problem, I'll take on the any oncoming work for 319 00:19:36,720 --> 00:19:40,159 Speaker 1: you and we'll handle it from there. And if switched 320 00:19:40,200 --> 00:19:43,000 Speaker 1: number two order to get into the same source situation, 321 00:19:43,359 --> 00:19:45,240 Speaker 1: it would say the same thing to switch number three, 322 00:19:45,320 --> 00:19:48,840 Speaker 1: and so on and so forth. Now, eventually each switch 323 00:19:48,920 --> 00:19:51,679 Speaker 1: will contact the one below it and say, hey, how 324 00:19:51,680 --> 00:19:54,440 Speaker 1: are you doing there? And if the answer is okay, 325 00:19:54,520 --> 00:19:58,240 Speaker 1: then everything switches back and you go back to normal operation. 326 00:19:59,200 --> 00:20:02,679 Speaker 1: That's how it's suppo was to work up. But A 327 00:20:02,800 --> 00:20:05,560 Speaker 1: T and t s updated code sped things up so 328 00:20:05,640 --> 00:20:09,360 Speaker 1: much it caused some real issues, and there was some 329 00:20:09,560 --> 00:20:14,080 Speaker 1: poor timing, just coincidental timing that made things worse. So 330 00:20:14,440 --> 00:20:17,159 Speaker 1: switch number one starts to get overwhelmed and sends a 331 00:20:17,200 --> 00:20:19,679 Speaker 1: message over to switch number two, but switched number two 332 00:20:19,920 --> 00:20:23,840 Speaker 1: was just in the middle of resetting itself. So switch 333 00:20:23,920 --> 00:20:26,680 Speaker 1: number two goes into reset mode, which says do not disturb. 334 00:20:26,760 --> 00:20:29,680 Speaker 1: Sends a message over to switch number three. That prompted 335 00:20:29,720 --> 00:20:32,239 Speaker 1: switch number three to overload and put up I do 336 00:20:32,280 --> 00:20:34,760 Speaker 1: not disturb sign. Move that down to switch number four. 337 00:20:35,119 --> 00:20:39,120 Speaker 1: This whole thing goes down the entire line of on switches. 338 00:20:39,200 --> 00:20:42,040 Speaker 1: They all end up getting overloaded as a result of this, 339 00:20:42,440 --> 00:20:45,600 Speaker 1: and I'll go into reset mode and they get stuck there. 340 00:20:47,160 --> 00:20:51,359 Speaker 1: That problem lasted for nine hours before A T and 341 00:20:51,359 --> 00:20:54,080 Speaker 1: T was finally able to address the message load on 342 00:20:54,119 --> 00:20:56,520 Speaker 1: the entire system and get the switches back to normal. 343 00:20:57,040 --> 00:21:00,560 Speaker 1: The estimated cost of lost revenue for that was about 344 00:21:00,560 --> 00:21:04,600 Speaker 1: sixty million dollars in long distance calls, and there were 345 00:21:04,640 --> 00:21:07,560 Speaker 1: a lot of angry customers to boot, so to placate them, 346 00:21:07,600 --> 00:21:10,719 Speaker 1: A T and T offered reduced long distance rates on 347 00:21:10,840 --> 00:21:15,440 Speaker 1: Valentine's Day pretty ugly. By the A T and T 348 00:21:15,440 --> 00:21:17,280 Speaker 1: tried to handle it, at least in a way that 349 00:21:17,440 --> 00:21:21,040 Speaker 1: didn't turn it into a pr nightmare. Not so with Intel. 350 00:21:21,760 --> 00:21:24,320 Speaker 1: That's what it brings us to the Pendium problem. I 351 00:21:24,359 --> 00:21:27,040 Speaker 1: don't know if you guys remember when Pentium processors first 352 00:21:27,080 --> 00:21:29,720 Speaker 1: came out, but they were a big deal. It was 353 00:21:30,680 --> 00:21:33,800 Speaker 1: a redesign of the architecture of the microprocessor and it 354 00:21:33,840 --> 00:21:37,239 Speaker 1: was meant to really speed things up. Well, Intel had 355 00:21:37,280 --> 00:21:41,840 Speaker 1: a massive nightmare in nine thanks to a flaw in 356 00:21:41,880 --> 00:21:47,080 Speaker 1: the entire first generation of Pentium processors. Now, when you 357 00:21:47,119 --> 00:21:50,400 Speaker 1: break it all down, a CPU is all about performing 358 00:21:50,440 --> 00:21:53,399 Speaker 1: mathematical operations on data, so it's kind of important that 359 00:21:53,440 --> 00:21:57,920 Speaker 1: it does this correctly. Unfortunately, the flaw and the Pentium 360 00:21:57,920 --> 00:22:00,840 Speaker 1: processors kind of messed that up. And the issue has 361 00:22:00,880 --> 00:22:04,280 Speaker 1: to do with floating point operations. So the predecessor to 362 00:22:04,280 --> 00:22:07,879 Speaker 1: the Pentium, the four six, used a shift and subtract 363 00:22:07,960 --> 00:22:12,800 Speaker 1: algorithm for floating point operations, which was effective but relatively 364 00:22:12,880 --> 00:22:17,000 Speaker 1: slow compared to what Intel thought they could do by 365 00:22:17,280 --> 00:22:22,960 Speaker 1: totally redesigning that structure and using a look up table approach. Now, 366 00:22:22,960 --> 00:22:26,159 Speaker 1: the table was supposed to have one thousand sixty six 367 00:22:26,440 --> 00:22:30,800 Speaker 1: entries programmed directly onto the logic array of the Pentium processor, 368 00:22:31,920 --> 00:22:36,320 Speaker 1: but for some reason only one thousand sixty one entries 369 00:22:36,400 --> 00:22:40,800 Speaker 1: made it. Five entries went missing and essentially returned an 370 00:22:40,800 --> 00:22:45,400 Speaker 1: answer of zero instead of what they were supposed to say, 371 00:22:45,480 --> 00:22:47,919 Speaker 1: So if a calculation accessed one of those missing cells, 372 00:22:47,960 --> 00:22:50,280 Speaker 1: it got zero, even though that's not the correct answer. 373 00:22:51,200 --> 00:22:53,720 Speaker 1: All the first generation pentiums went out with this error 374 00:22:53,800 --> 00:22:56,200 Speaker 1: because it was so minor that it wasn't even picked 375 00:22:56,320 --> 00:23:01,680 Speaker 1: up by Intel's quality control at the time. Now, processes 376 00:23:01,680 --> 00:23:05,159 Speaker 1: work just fine up to the eighth decimal point. Beyond 377 00:23:05,240 --> 00:23:08,360 Speaker 1: that things got messy. But for most folks that wasn't 378 00:23:08,359 --> 00:23:12,959 Speaker 1: a problem because they weren't doing mathematical calculations that needed 379 00:23:12,960 --> 00:23:16,400 Speaker 1: that level of precision. It just wasn't a thing. In fact, 380 00:23:16,440 --> 00:23:19,399 Speaker 1: there was only a one in three sixty billion chance 381 00:23:19,880 --> 00:23:23,320 Speaker 1: that this error would cause a a big enough problem 382 00:23:23,560 --> 00:23:27,480 Speaker 1: to reach up to the fourth decimal place. So most 383 00:23:27,480 --> 00:23:31,000 Speaker 1: calculations that were simple were bulletproof. You you're fine, But 384 00:23:31,080 --> 00:23:34,439 Speaker 1: if you needed that precision, if you needed that really 385 00:23:34,560 --> 00:23:38,399 Speaker 1: fine degree, that's when you would encounter the flaw, and 386 00:23:38,560 --> 00:23:42,439 Speaker 1: that happened because there are math professors in this world, 387 00:23:42,920 --> 00:23:48,040 Speaker 1: and one of those, Thomas nicely discovered in October that 388 00:23:48,119 --> 00:23:51,200 Speaker 1: he was getting errors because of this issue. He needed 389 00:23:51,240 --> 00:23:54,840 Speaker 1: the processor to work correctly, and so he contacted Intel 390 00:23:54,880 --> 00:23:58,800 Speaker 1: about the problem. And this is where we take a 391 00:23:58,880 --> 00:24:01,639 Speaker 1: moment to acknowledge there's a right way and a wrong 392 00:24:01,680 --> 00:24:06,479 Speaker 1: way to handle an issue. That's your fault until decided 393 00:24:06,520 --> 00:24:09,199 Speaker 1: to go the wrong way. My opinion is, if you 394 00:24:09,240 --> 00:24:11,520 Speaker 1: make a mistake, it's usually a good idea to just 395 00:24:11,720 --> 00:24:13,920 Speaker 1: own up to it and try to make it better. 396 00:24:14,600 --> 00:24:16,960 Speaker 1: But Intel's response was more along the lines of yeah, 397 00:24:17,040 --> 00:24:19,200 Speaker 1: we didn't think it was a big deal. And then 398 00:24:19,240 --> 00:24:23,800 Speaker 1: Intel made other pr blenders. But because people began to hear, hey, 399 00:24:23,880 --> 00:24:27,119 Speaker 1: that Pentium processor in your computer that you just bought, 400 00:24:27,880 --> 00:24:31,480 Speaker 1: it doesn't work properly. So people wanted to get replacements. 401 00:24:32,160 --> 00:24:34,520 Speaker 1: But Intel said, oh, we're only going to replace the 402 00:24:34,560 --> 00:24:37,880 Speaker 1: ones if you can prove that the mistakes that it 403 00:24:37,960 --> 00:24:42,119 Speaker 1: makes affect you in some meaningful way. So they weren't 404 00:24:42,600 --> 00:24:45,320 Speaker 1: They weren't denying that there was a problem. They were 405 00:24:45,359 --> 00:24:47,840 Speaker 1: just saying, hey, unless you can prove the problem affects 406 00:24:47,840 --> 00:24:51,880 Speaker 1: you where we don't care. That didn't go well. If 407 00:24:51,880 --> 00:24:53,919 Speaker 1: you create a product and you market it as the 408 00:24:53,960 --> 00:24:56,680 Speaker 1: future of computing and then it's discovered there's a flaw 409 00:24:56,720 --> 00:24:59,280 Speaker 1: on the design, and then you say we'll replace it, 410 00:24:59,320 --> 00:25:02,880 Speaker 1: but only if you proof you deserve it, it doesn't 411 00:25:03,000 --> 00:25:06,919 Speaker 1: tend to make your customer base very happy. So ultimately, 412 00:25:07,040 --> 00:25:11,080 Speaker 1: until reverse that decision and offered to replace the processor 413 00:25:11,160 --> 00:25:15,240 Speaker 1: for anyone who wanted it who had a first generation Pentium, 414 00:25:15,400 --> 00:25:22,760 Speaker 1: and that mistake ended up costing the company four million dollars. Yikes. 415 00:25:23,560 --> 00:25:27,280 Speaker 1: All right, now we're gonna switch Gears over to Microsoft. First. 416 00:25:27,320 --> 00:25:30,399 Speaker 1: I think you could claim that all of Microsoft Bob 417 00:25:31,920 --> 00:25:34,600 Speaker 1: product that was supposed to be an easy, accessible computer 418 00:25:34,640 --> 00:25:38,720 Speaker 1: interface was really just a massive software bug. I mean, 419 00:25:39,080 --> 00:25:44,400 Speaker 1: it introduced comic sands for goodness sakes, the cluttered organization system, 420 00:25:44,520 --> 00:25:49,000 Speaker 1: the lack of meaningful security, and other numerous issues plagued 421 00:25:49,200 --> 00:25:52,560 Speaker 1: that software. But we did an entire episode of Tech 422 00:25:52,560 --> 00:25:55,239 Speaker 1: Stuff about Microsoft Bob a couple of years ago, so 423 00:25:55,240 --> 00:25:57,920 Speaker 1: I'm not gonna dwell on it anymore, but if you 424 00:25:57,960 --> 00:26:00,720 Speaker 1: want to hear more about it, go in that episode. 425 00:26:00,800 --> 00:26:03,760 Speaker 1: It was a fun one. Now in two thousand seven, 426 00:26:04,720 --> 00:26:08,280 Speaker 1: Microsoft experienced a massive headache when a bug on their 427 00:26:08,320 --> 00:26:11,960 Speaker 1: servers notified thousands of Windows customers that they were filthy, 428 00:26:12,040 --> 00:26:15,280 Speaker 1: dirty software pirates and they should be punished. These include 429 00:26:15,320 --> 00:26:20,120 Speaker 1: people who actually had legitimate, legal purchase copies of Windows 430 00:26:20,240 --> 00:26:24,679 Speaker 1: XP or Vista. So the problem here was Microsoft had 431 00:26:24,720 --> 00:26:29,280 Speaker 1: an initiative called Windows Genuine Advantage, and it was a 432 00:26:29,359 --> 00:26:35,040 Speaker 1: nice name for a strategy meant to curtail operating system piracy. Essentially, 433 00:26:35,080 --> 00:26:37,960 Speaker 1: it was a component in Windows that would allow Microsoft 434 00:26:38,040 --> 00:26:40,680 Speaker 1: to figure out if the copy of Windows on any 435 00:26:40,720 --> 00:26:45,199 Speaker 1: given computer was legit. In other words, it was a 436 00:26:45,280 --> 00:26:48,080 Speaker 1: d r M strategy. But in two thousand seven, a 437 00:26:48,119 --> 00:26:54,000 Speaker 1: buggy install of software on a server misidentified thousands of legitimate, 438 00:26:54,520 --> 00:26:59,400 Speaker 1: law abiding customers as pirates for nineteen hours. The software 439 00:26:59,440 --> 00:27:01,679 Speaker 1: just laid on the law, and so people began to 440 00:27:01,720 --> 00:27:05,000 Speaker 1: receive sternly written warnings about their choice to indulge in 441 00:27:05,119 --> 00:27:08,440 Speaker 1: bad behavior. And if you were a Windows Vista customer, 442 00:27:08,920 --> 00:27:11,639 Speaker 1: you had it the worst, not just because you were 443 00:27:11,720 --> 00:27:15,239 Speaker 1: using Windows Vista, which I think we all agree was 444 00:27:15,400 --> 00:27:20,200 Speaker 1: not one of the bright points and Microsoft's operating system history, 445 00:27:20,520 --> 00:27:23,919 Speaker 1: but also because Microsoft had built in the ability for 446 00:27:24,000 --> 00:27:28,760 Speaker 1: Windows genuine advantage to switch off certain operating system features 447 00:27:29,000 --> 00:27:32,680 Speaker 1: in Windows Vista if it determined that the copy someone 448 00:27:32,760 --> 00:27:36,560 Speaker 1: was using was a pirated version, so it was misidentifying 449 00:27:36,640 --> 00:27:40,280 Speaker 1: real versions as pirated ones turning off features, and these 450 00:27:40,280 --> 00:27:43,119 Speaker 1: are for people who have bought legitimate copies. This, by 451 00:27:43,119 --> 00:27:45,639 Speaker 1: the way, is one of the big arguments people have 452 00:27:45,880 --> 00:27:51,240 Speaker 1: against DRM. It has the tendency to punish legitimate customers. 453 00:27:52,080 --> 00:27:56,280 Speaker 1: And you feel like you're stupid for buying a copy 454 00:27:56,520 --> 00:27:58,960 Speaker 1: of a piece of software rather than just stealing one 455 00:27:59,040 --> 00:28:02,119 Speaker 1: that has had those feet yours or those defenses removed, 456 00:28:02,640 --> 00:28:05,439 Speaker 1: Like why you're you're creating more incentives for people to 457 00:28:05,480 --> 00:28:11,000 Speaker 1: go outside and get a pirated copy. Alright, so imagine 458 00:28:11,040 --> 00:28:14,240 Speaker 1: you've purchased this legitimate copy of Windows Vista. First of all, 459 00:28:14,280 --> 00:28:17,200 Speaker 1: you you already feel bad. Then you're told you're a thief, 460 00:28:17,280 --> 00:28:20,320 Speaker 1: so you feel worse. Then someone remotely switches off several 461 00:28:20,359 --> 00:28:22,560 Speaker 1: features of your operating system. That was not a great 462 00:28:22,600 --> 00:28:26,880 Speaker 1: pr message, So that was a real issue. They did 463 00:28:26,920 --> 00:28:29,800 Speaker 1: eventually fix it after that nineteen hours, but by then 464 00:28:29,840 --> 00:28:32,720 Speaker 1: people were already very upset. Also, I don't want to 465 00:28:33,040 --> 00:28:38,080 Speaker 1: just you know, pile lots of abuse onto Microsoft I 466 00:28:38,080 --> 00:28:42,240 Speaker 1: gotta talk about Apple here too. So the company prides 467 00:28:42,280 --> 00:28:45,880 Speaker 1: itself on a high standard of quality and general it's 468 00:28:45,920 --> 00:28:48,920 Speaker 1: pretty good about living up to that standard of quality, 469 00:28:49,080 --> 00:28:51,600 Speaker 1: depending upon your point of view of their various products. 470 00:28:52,200 --> 00:28:55,880 Speaker 1: But that hasn't stopped a few clunkers getting through and 471 00:28:56,440 --> 00:28:59,400 Speaker 1: into the public hands. And that was the case in 472 00:28:59,400 --> 00:29:02,400 Speaker 1: two thousand twelve with Apple Maps. If you owned an 473 00:29:02,400 --> 00:29:04,960 Speaker 1: iPhone back in two thousand twelve when Apple Maps came out, 474 00:29:05,360 --> 00:29:08,960 Speaker 1: you may remember this problem. It's pretty well publicized. Maps 475 00:29:08,960 --> 00:29:12,120 Speaker 1: were inaccurate, sometimes leaving out important details like you know, 476 00:29:12,320 --> 00:29:15,440 Speaker 1: a river or a lake between you and your destination, 477 00:29:16,200 --> 00:29:18,160 Speaker 1: things that might be important if I don't know you 478 00:29:18,240 --> 00:29:21,680 Speaker 1: don't drive an amphibious vehicle, might not have a road 479 00:29:21,760 --> 00:29:25,800 Speaker 1: on there that's important. Might misidentify the location of a 480 00:29:25,920 --> 00:29:29,600 Speaker 1: historical landmark. For instance, that thought the Washington Monument was 481 00:29:29,640 --> 00:29:32,800 Speaker 1: across the street from where it is, But nope, it's 482 00:29:32,880 --> 00:29:36,600 Speaker 1: just where we left it. Despite all of Roland emericks 483 00:29:36,920 --> 00:29:40,880 Speaker 1: best attempts to move it or destroy it, it's still there. 484 00:29:43,280 --> 00:29:45,800 Speaker 1: The real problem here was that the Apple software just 485 00:29:45,880 --> 00:29:49,320 Speaker 1: wasn't ready for public unveiling. It was. It needed a 486 00:29:49,400 --> 00:29:52,400 Speaker 1: lot more testing. It was trying to play catch up 487 00:29:52,440 --> 00:29:55,479 Speaker 1: to Google Maps, but Google had the advantage of working 488 00:29:55,480 --> 00:29:58,880 Speaker 1: with companies that have been doing mapping software for years. 489 00:29:58,960 --> 00:30:02,000 Speaker 1: Google acquired the those companies and acquired the expertise of 490 00:30:02,040 --> 00:30:04,880 Speaker 1: people who have been working on that software. And Apple 491 00:30:05,040 --> 00:30:08,800 Speaker 1: was really just trying to create their own version and 492 00:30:08,840 --> 00:30:10,600 Speaker 1: get it out as fast as it could. But it 493 00:30:10,680 --> 00:30:13,400 Speaker 1: got out a little too early, and the company spent 494 00:30:13,480 --> 00:30:15,800 Speaker 1: the next several months tweaking maps and trying to keep 495 00:30:15,800 --> 00:30:17,840 Speaker 1: control of the situation. But by that time, many of 496 00:30:17,840 --> 00:30:20,840 Speaker 1: Apple's fans, even the most devoted ones, had kind of 497 00:30:20,880 --> 00:30:24,920 Speaker 1: given up and switched over to Google Maps instead. Well, 498 00:30:24,960 --> 00:30:27,440 Speaker 1: that's most of the fun stuff. I've got some really 499 00:30:27,680 --> 00:30:31,760 Speaker 1: serious bugs to cover. But before I do that, let's 500 00:30:31,760 --> 00:30:43,400 Speaker 1: take another quick break and thank our sponsor. Now I'm 501 00:30:43,440 --> 00:30:46,760 Speaker 1: going to transition into some serious bugs. These are ones 502 00:30:46,840 --> 00:30:51,400 Speaker 1: that either threatened the lives of people or they contributed 503 00:30:51,480 --> 00:30:56,680 Speaker 1: to people dying. The ones I've talked about now up 504 00:30:56,720 --> 00:30:59,760 Speaker 1: to now rather have cost companies millions of dollars, but 505 00:31:00,160 --> 00:31:04,480 Speaker 1: one's life was truly threatened. Unfortunately, that's not the case 506 00:31:04,520 --> 00:31:07,200 Speaker 1: with all software bugs. Now, a couple of bugs had 507 00:31:07,200 --> 00:31:11,960 Speaker 1: the potential to kill millions of people. One of those 508 00:31:12,000 --> 00:31:17,560 Speaker 1: happened in night a famous, famous bug, or at least 509 00:31:17,560 --> 00:31:20,360 Speaker 1: a faulty circuit, and that was a faulty circuit in 510 00:31:20,440 --> 00:31:23,680 Speaker 1: nora ADS computer system which caused it to mistakenly conclude 511 00:31:23,720 --> 00:31:26,720 Speaker 1: the US was under nuclear attack from the Soviet Union. 512 00:31:28,400 --> 00:31:32,600 Speaker 1: So displays on nora AD systems showed seemingly random attacks, 513 00:31:32,600 --> 00:31:35,440 Speaker 1: and they didn't correspond with each other. So the display 514 00:31:35,520 --> 00:31:38,240 Speaker 1: might show, Hey, there two missiles heading over from the 515 00:31:38,280 --> 00:31:41,600 Speaker 1: Soviet Union. No, they're two hundred. No they're fifty. No, 516 00:31:41,760 --> 00:31:45,880 Speaker 1: there's three, And it wasn't consistent, and command posts around 517 00:31:46,080 --> 00:31:49,840 Speaker 1: the US all had conflicting information, which led leaders to 518 00:31:49,880 --> 00:31:54,400 Speaker 1: conclude the whole thing was a regrettable computer error, and 519 00:31:54,440 --> 00:31:57,560 Speaker 1: they were right to do so. To be fair, they 520 00:31:57,560 --> 00:31:59,880 Speaker 1: were kind of prepared for this because there was another 521 00:32:00,040 --> 00:32:02,600 Speaker 1: incident that had actually happened in nineteen seventy nine that 522 00:32:02,720 --> 00:32:06,760 Speaker 1: was way scarier, and in that case, someone mistakenly inserted 523 00:32:06,760 --> 00:32:09,360 Speaker 1: a training scenario into the computer system that made it 524 00:32:09,400 --> 00:32:11,760 Speaker 1: seem like the Soviet Union had launched an all out 525 00:32:11,840 --> 00:32:15,200 Speaker 1: nuclear attack on the US. But that wasn't a bug. 526 00:32:15,360 --> 00:32:17,080 Speaker 1: That was a mistake on the part of a human 527 00:32:17,120 --> 00:32:20,960 Speaker 1: who had accidentally uploaded the wrong or rather executed the 528 00:32:20,960 --> 00:32:23,560 Speaker 1: wrong command. It didn't have something to do with a 529 00:32:23,600 --> 00:32:27,680 Speaker 1: flaw in the computer system itself, however, because that thing 530 00:32:27,760 --> 00:32:32,360 Speaker 1: happened and everybody was freaked out and then was able 531 00:32:32,360 --> 00:32:34,320 Speaker 1: to determine that, in fact it was a false alarm, 532 00:32:34,640 --> 00:32:37,520 Speaker 1: it meant that calmer heads could prevail in the nineteen 533 00:32:37,560 --> 00:32:42,600 Speaker 1: eighty incident, so the Soviets also had a close call 534 00:32:42,680 --> 00:32:44,720 Speaker 1: just a few years later. It was a bug in 535 00:32:44,760 --> 00:32:48,640 Speaker 1: the early warning detection software that the USSR was using 536 00:32:48,840 --> 00:32:51,600 Speaker 1: in the early eighties, and on September twenty three, nine 537 00:32:51,840 --> 00:32:55,560 Speaker 1: eight three and so Union received an alert that the 538 00:32:55,680 --> 00:32:58,640 Speaker 1: US had launched a nuclear attack in the form of 539 00:32:58,800 --> 00:33:03,200 Speaker 1: five nuclear war It's uh, technically two different attacks. The 540 00:33:03,280 --> 00:33:06,280 Speaker 1: first would have been a single nuclear warhead and the 541 00:33:06,360 --> 00:33:09,920 Speaker 1: second was four nuclear warheads. And this was during a 542 00:33:09,920 --> 00:33:13,600 Speaker 1: particularly stressful period in the history of both countries and 543 00:33:13,640 --> 00:33:16,880 Speaker 1: their relationship with each other, at the height of the 544 00:33:16,920 --> 00:33:23,800 Speaker 1: Cold War nine three now fortunately, UH Soviet Air Defense 545 00:33:23,840 --> 00:33:29,960 Speaker 1: Forces Lieutenant Colonel Stanislav Petrov suspected that this report was 546 00:33:30,040 --> 00:33:32,920 Speaker 1: an error and that there was some sort of bug 547 00:33:32,920 --> 00:33:36,479 Speaker 1: in the software or a mistake in the reporting system 548 00:33:36,520 --> 00:33:39,960 Speaker 1: that caused this, he gave a command to hold off 549 00:33:40,000 --> 00:33:43,240 Speaker 1: on any sort of retaliatory strike, which would have initiated 550 00:33:43,240 --> 00:33:47,040 Speaker 1: a full scale nuclear war had it happened. Petrov was 551 00:33:47,360 --> 00:33:49,680 Speaker 1: the officer in charge of a bunker that served as 552 00:33:49,680 --> 00:33:52,840 Speaker 1: the command center for this early warning system, and he 553 00:33:52,840 --> 00:33:56,640 Speaker 1: he had said afterward that his reckoning was any real 554 00:33:56,640 --> 00:34:00,680 Speaker 1: attack would consist of hundreds of warheads, not five. No 555 00:34:00,760 --> 00:34:04,560 Speaker 1: one would start an attack with just five warheads, so 556 00:34:04,600 --> 00:34:06,320 Speaker 1: it was more likely to be an error than a 557 00:34:06,360 --> 00:34:09,440 Speaker 1: genuine attack. So he gave the command to wait until 558 00:34:09,440 --> 00:34:12,480 Speaker 1: the reported missiles would pass into the range of radar, 559 00:34:13,000 --> 00:34:16,720 Speaker 1: which only extended as far as the horizon, so if 560 00:34:16,880 --> 00:34:18,959 Speaker 1: it had in fact been a real attack, it would 561 00:34:18,960 --> 00:34:22,759 Speaker 1: have potentially limited the Soviet Union's ability to respond. But 562 00:34:23,120 --> 00:34:29,040 Speaker 1: no missile showed up, and he was vindicated in his decision. Now, 563 00:34:29,040 --> 00:34:31,080 Speaker 1: the cause of the false alarm in this case was 564 00:34:31,760 --> 00:34:36,840 Speaker 1: a combination of factors that the designers didn't anticipate, uh 565 00:34:36,920 --> 00:34:41,279 Speaker 1: which largely consisted of sunlight hitting high altitude clouds at 566 00:34:41,320 --> 00:34:45,359 Speaker 1: a particular angle from a particular perspective of the satellites, 567 00:34:45,760 --> 00:34:52,239 Speaker 1: so the satellites misidentified that reflection as a warhead. Now, 568 00:34:52,280 --> 00:34:54,480 Speaker 1: they were. The subvieys were able to address this error 569 00:34:54,520 --> 00:34:58,120 Speaker 1: in the future by adding another step in which these 570 00:34:58,160 --> 00:35:02,520 Speaker 1: satellites would cross referenced data from other geostationary satellites to 571 00:35:02,640 --> 00:35:07,680 Speaker 1: make certain that they are identifying actual rockets as opposed 572 00:35:07,719 --> 00:35:13,640 Speaker 1: to high altitude clouds. Now, there are several cases of 573 00:35:14,640 --> 00:35:19,360 Speaker 1: software bugs leading to actual deaths. For example, the the 574 00:35:19,560 --> 00:35:22,880 Speaker 1: RACK was such a case. Now that was a radiation 575 00:35:22,960 --> 00:35:26,799 Speaker 1: therapy machine that could deliver two different modes of radiation treatments. 576 00:35:27,400 --> 00:35:30,719 Speaker 1: The first was a low powered direct electron beam and 577 00:35:30,760 --> 00:35:33,960 Speaker 1: the second was a mega volt X ray beam. Now, 578 00:35:33,960 --> 00:35:36,440 Speaker 1: the x ray beam was far more intense and it 579 00:35:36,520 --> 00:35:40,839 Speaker 1: required physicians to provide shielding to patients to limit exposure 580 00:35:40,880 --> 00:35:44,880 Speaker 1: to the beam. But the therac had inherited its code 581 00:35:44,920 --> 00:35:49,000 Speaker 1: from its predecessor, which had different hardware constraints. Now the 582 00:35:49,040 --> 00:35:53,160 Speaker 1: new machine meant that these constraints weren't there, and it 583 00:35:53,239 --> 00:35:56,600 Speaker 1: created a deadly problem if operators changed the machines mode 584 00:35:56,719 --> 00:35:59,600 Speaker 1: too quickly from one to the other, it would actually 585 00:35:59,600 --> 00:36:03,000 Speaker 1: send sets of instructions to the processor, one for each 586 00:36:03,080 --> 00:36:06,160 Speaker 1: mode of operation, and whichever set of instructions reached the 587 00:36:06,160 --> 00:36:10,680 Speaker 1: processor first. That's what the machine would switch to So 588 00:36:10,760 --> 00:36:15,640 Speaker 1: let's say you've been operating the therac in the mega 589 00:36:15,719 --> 00:36:18,759 Speaker 1: volt X ray mode, but now you're going to have 590 00:36:18,880 --> 00:36:21,720 Speaker 1: a patient come in. You need to administer radiation therapy, 591 00:36:22,040 --> 00:36:24,560 Speaker 1: so you want to switch it to low electron. Being 592 00:36:25,080 --> 00:36:27,880 Speaker 1: you switch it too quickly, it sends two sets of 593 00:36:27,920 --> 00:36:30,560 Speaker 1: instructions to the processor, and the one that arises the 594 00:36:30,600 --> 00:36:33,759 Speaker 1: mega volt x ray instruction, so instead of switching it, 595 00:36:34,040 --> 00:36:39,000 Speaker 1: you confirm to stay on the more intense, deadlier radiation. 596 00:36:40,520 --> 00:36:45,799 Speaker 1: The tragic news is this did happen several times. Six 597 00:36:45,840 --> 00:36:49,840 Speaker 1: patients were documented as dying from complications due to radiation 598 00:36:49,880 --> 00:36:53,560 Speaker 1: poisoning from there at twenty five machines between night five 599 00:36:53,640 --> 00:36:56,840 Speaker 1: and nineteen eight six, And while the machine would send 600 00:36:56,960 --> 00:37:01,360 Speaker 1: error messages when these conditions were present, the documentation for 601 00:37:01,400 --> 00:37:04,640 Speaker 1: the machine didn't explain what the errors meant. It didn't say, hey, 602 00:37:04,640 --> 00:37:07,400 Speaker 1: if you get this error, it means that you've switched 603 00:37:07,480 --> 00:37:11,399 Speaker 1: modes too quickly and you need to address this. So, 604 00:37:11,440 --> 00:37:16,000 Speaker 1: since operators weren't told that this was necessarily a hazardous condition, 605 00:37:16,080 --> 00:37:19,440 Speaker 1: they would just clear the error and proceed, and there 606 00:37:19,440 --> 00:37:24,680 Speaker 1: were deadly results in a similar vein in Panama City, Panama, 607 00:37:25,520 --> 00:37:29,120 Speaker 1: there was an incident involving a Cobalt sixty system, actually 608 00:37:29,200 --> 00:37:32,840 Speaker 1: several incidents involving this Cobalt sixty system that was running 609 00:37:32,880 --> 00:37:35,960 Speaker 1: therapy planning software made by a company called Multi Data 610 00:37:36,000 --> 00:37:39,799 Speaker 1: Systems International. Now, the software's purpose was to calculate the 611 00:37:39,840 --> 00:37:44,040 Speaker 1: amount of radiation that cancer patients should receive in radiation 612 00:37:44,080 --> 00:37:49,600 Speaker 1: therapy sessions. During these radiation therapy sessions, the therapists were 613 00:37:49,600 --> 00:37:53,920 Speaker 1: meant to place metal shields on the patient to protect 614 00:37:54,000 --> 00:37:59,080 Speaker 1: healthy tissue from radiation damage. And the software would allow 615 00:37:59,160 --> 00:38:03,560 Speaker 1: therapists to use a methodology to show where those shields 616 00:38:03,600 --> 00:38:06,560 Speaker 1: were on the patient, to indicate where the shields are present. 617 00:38:07,640 --> 00:38:11,000 Speaker 1: But they could only draw up to four shields, and 618 00:38:11,040 --> 00:38:14,040 Speaker 1: the doctors in Panama wanted to use five shields for 619 00:38:14,160 --> 00:38:18,239 Speaker 1: particular therapy sessions. They were overloaded, they had a long 620 00:38:18,280 --> 00:38:20,440 Speaker 1: waiting list of patients, and they were trying to make 621 00:38:20,480 --> 00:38:24,439 Speaker 1: things more efficient, and they discovered that they could kind 622 00:38:24,480 --> 00:38:29,000 Speaker 1: of work around this limitation of four shields by drawing 623 00:38:29,040 --> 00:38:31,120 Speaker 1: a design on the computer screen as if they were 624 00:38:31,200 --> 00:38:34,319 Speaker 1: using just one large shield that has a hole in 625 00:38:34,360 --> 00:38:36,279 Speaker 1: the middle of it. And so what they would do 626 00:38:36,320 --> 00:38:39,080 Speaker 1: is they would arrange the five shields to essentially be 627 00:38:39,080 --> 00:38:41,880 Speaker 1: in the same sort of shape with the middle of 628 00:38:41,920 --> 00:38:44,480 Speaker 1: it being open so that they can have the radiation 629 00:38:44,520 --> 00:38:49,600 Speaker 1: therapy passed through it. Uh, But they didn't realize that 630 00:38:49,719 --> 00:38:52,000 Speaker 1: the software had a bug in it, and that bug 631 00:38:52,160 --> 00:38:55,400 Speaker 1: was if you drew the whole in one direction, you 632 00:38:55,440 --> 00:38:58,399 Speaker 1: get the correct dose of radiation, but if you drew 633 00:38:58,440 --> 00:39:02,600 Speaker 1: it in the other direction, so like clockwise versus counterclockwise, 634 00:39:03,120 --> 00:39:06,839 Speaker 1: the software would recommend a dosage twice as strong as 635 00:39:06,880 --> 00:39:10,480 Speaker 1: what was needed, and the result was devastating. Eight patients 636 00:39:10,640 --> 00:39:14,840 Speaker 1: died as a result of this, and another twenty received 637 00:39:14,880 --> 00:39:17,640 Speaker 1: doses high enough to potentially cause health problems. Later on, 638 00:39:18,960 --> 00:39:21,959 Speaker 1: the physicians were actually arrested and brought up on murder 639 00:39:22,120 --> 00:39:25,760 Speaker 1: charges because they were supposed to double check all calculations 640 00:39:25,800 --> 00:39:28,440 Speaker 1: by hand to ensure that they were going to give 641 00:39:28,480 --> 00:39:31,960 Speaker 1: the proper dose of radiation treatment. So while the software 642 00:39:32,160 --> 00:39:37,040 Speaker 1: was calculating the incorrect dose, the physicians were responsible for 643 00:39:37,120 --> 00:39:40,640 Speaker 1: making sure that any dose that was calculated was in 644 00:39:40,680 --> 00:39:42,480 Speaker 1: fact the correct one, and they failed to do so, 645 00:39:42,840 --> 00:39:46,600 Speaker 1: or at least that was the charge. There are also 646 00:39:46,680 --> 00:39:49,640 Speaker 1: bugs that involved military applications that have resulted in the 647 00:39:49,719 --> 00:39:52,640 Speaker 1: loss of life. During the Persian Gulf War in Iraqi, 648 00:39:52,840 --> 00:39:55,800 Speaker 1: fired scud missile hit a US base in Saudi Arabia 649 00:39:56,080 --> 00:40:00,120 Speaker 1: and it killed twenty eight soldiers. Now the base had 650 00:40:00,160 --> 00:40:04,000 Speaker 1: detected the missile and had launched and fired a Patriot 651 00:40:04,000 --> 00:40:06,719 Speaker 1: missile in return. The purpose of the Patriot missile was 652 00:40:06,760 --> 00:40:09,880 Speaker 1: to intercept and destroy incoming missiles, and the way a 653 00:40:09,880 --> 00:40:12,840 Speaker 1: Patriot missile did this was to use radar pulses to 654 00:40:12,960 --> 00:40:17,120 Speaker 1: guide trajectory calculations so that it would end up getting 655 00:40:17,160 --> 00:40:19,880 Speaker 1: close to the incoming missile. This is harder than it 656 00:40:19,960 --> 00:40:23,520 Speaker 1: sounds because both missiles are moving very very quickly, so 657 00:40:23,560 --> 00:40:26,600 Speaker 1: we need a very precise information in order to adjust 658 00:40:26,680 --> 00:40:31,400 Speaker 1: its trajectory properly and make sure it was on target. Now, 659 00:40:31,440 --> 00:40:34,279 Speaker 1: once it gets within range, which is between five and 660 00:40:34,520 --> 00:40:38,399 Speaker 1: ten meters I think uh, it would then fire out 661 00:40:38,840 --> 00:40:42,440 Speaker 1: a thousand pellets from the Patriot missile at high velocity 662 00:40:42,480 --> 00:40:46,080 Speaker 1: with the goal of causing the incoming warhead to explode prematurely. 663 00:40:47,719 --> 00:40:50,560 Speaker 1: In this case, the Patriot missile missed and the military 664 00:40:50,600 --> 00:40:52,880 Speaker 1: investigated the issue in the wake of the loss of 665 00:40:52,920 --> 00:40:55,600 Speaker 1: life and found a problem with the software guiding the 666 00:40:55,600 --> 00:40:58,759 Speaker 1: Patriot missile, and it was a problem that actually the 667 00:40:58,760 --> 00:41:01,000 Speaker 1: military kind of knew about already. So one of the 668 00:41:01,040 --> 00:41:04,080 Speaker 1: processes in the Patriots programming was to convert time into 669 00:41:04,120 --> 00:41:10,000 Speaker 1: floating point operations for increased accuracy. But not all subroutines 670 00:41:10,560 --> 00:41:15,200 Speaker 1: that depended on tracking time did this. Some of them 671 00:41:15,200 --> 00:41:19,759 Speaker 1: remained UH clock units rather than floating point operations, which 672 00:41:19,800 --> 00:41:22,960 Speaker 1: meant that they would get out of sync after a while. 673 00:41:23,000 --> 00:41:26,160 Speaker 1: There'd be a disagreement in various subroutines as to what 674 00:41:26,600 --> 00:41:29,279 Speaker 1: how much time had actually passed. And like I said, 675 00:41:29,280 --> 00:41:31,560 Speaker 1: the military was aware of this issue and they had 676 00:41:31,600 --> 00:41:35,440 Speaker 1: a work around, which was not ideal. The workaround was 677 00:41:35,880 --> 00:41:38,840 Speaker 1: you would occasionally reboot the system, which would reset the 678 00:41:38,840 --> 00:41:41,480 Speaker 1: clocks and synchronize them, but over time they would fall 679 00:41:41,520 --> 00:41:44,320 Speaker 1: out of sync because they're not tracking time the same way. 680 00:41:44,960 --> 00:41:47,520 Speaker 1: And since there was no hard and fast rule as 681 00:41:47,520 --> 00:41:50,799 Speaker 1: to how frequently you'd reset the system, problems like this 682 00:41:50,840 --> 00:41:53,160 Speaker 1: one where possible, and in fact, in this case it 683 00:41:53,200 --> 00:41:57,040 Speaker 1: did happen. So prior to this particular incident, that specific 684 00:41:57,080 --> 00:42:00,080 Speaker 1: Patriot system had been running for one hours with how 685 00:42:00,120 --> 00:42:05,319 Speaker 1: to reboot, and the clock disagreement amounted to about one 686 00:42:05,400 --> 00:42:07,680 Speaker 1: third of a second. Now, that seems like it's no 687 00:42:07,800 --> 00:42:09,760 Speaker 1: time at all. One third of a second is so 688 00:42:09,760 --> 00:42:13,440 Speaker 1: so short, But a scutt missile's top speed is about 689 00:42:13,480 --> 00:42:17,200 Speaker 1: one point one miles per second or one point seven 690 00:42:17,280 --> 00:42:20,120 Speaker 1: kilometers per second, which means if you take a third 691 00:42:20,120 --> 00:42:22,399 Speaker 1: of a second, the missile could travel more than five 692 00:42:24,000 --> 00:42:26,160 Speaker 1: And since the patriot needs to be within ten ms 693 00:42:26,160 --> 00:42:28,279 Speaker 1: of a target to destroy it, that resulted in a 694 00:42:28,360 --> 00:42:32,960 Speaker 1: catastrophic failure. So software bugs can be a matter of 695 00:42:33,000 --> 00:42:36,239 Speaker 1: life or death. It's not all just Hey, this irritating 696 00:42:36,320 --> 00:42:40,480 Speaker 1: thing meant people couldn't make long distance phone calls or uh, 697 00:42:40,520 --> 00:42:44,680 Speaker 1: this issue caused my computer to start writing massive amounts 698 00:42:44,680 --> 00:42:47,799 Speaker 1: of data to its hard drive. And this is why 699 00:42:48,200 --> 00:42:53,080 Speaker 1: it's so important to have really qualified q A personnel 700 00:42:53,360 --> 00:42:55,879 Speaker 1: go through code and make sure it's doing what it's 701 00:42:55,880 --> 00:42:58,720 Speaker 1: supposed to do, because the problems that can arise can 702 00:42:58,760 --> 00:43:01,680 Speaker 1: be non trivial and in fact life or death situations 703 00:43:02,000 --> 00:43:05,959 Speaker 1: depending upon the application of technology. So technology is a 704 00:43:06,000 --> 00:43:09,799 Speaker 1: fascinating thing. It's a wonderful thing. It has benefited us 705 00:43:09,840 --> 00:43:13,399 Speaker 1: in ways that I can't even begin to describe. It's 706 00:43:13,440 --> 00:43:16,000 Speaker 1: just too broad a topic, and it's something I've been 707 00:43:16,040 --> 00:43:19,200 Speaker 1: tackling for, you know, eight years and I haven't haven't 708 00:43:19,239 --> 00:43:22,279 Speaker 1: even gotten close to getting toward the finishing point. So 709 00:43:23,400 --> 00:43:26,000 Speaker 1: I don't want to suggest that technology is bad, but 710 00:43:26,080 --> 00:43:30,360 Speaker 1: we definitely have the need to check, double check, and 711 00:43:30,400 --> 00:43:32,799 Speaker 1: triple check all this work to make certain things are 712 00:43:32,880 --> 00:43:35,840 Speaker 1: working properly before we release them out into the wild. 713 00:43:35,880 --> 00:43:40,640 Speaker 1: That particularly applies if, again, you are reusing old code 714 00:43:41,000 --> 00:43:45,680 Speaker 1: or old components in a new way, because you have 715 00:43:45,760 --> 00:43:47,959 Speaker 1: to make absolutely certain that there's not going to be 716 00:43:48,080 --> 00:43:53,200 Speaker 1: some unintended problem that results when a new form factor 717 00:43:53,440 --> 00:43:57,200 Speaker 1: is using old code. I hope you guys found this 718 00:43:57,280 --> 00:44:00,719 Speaker 1: episode interesting. I plan on doing a lot of other 719 00:44:00,960 --> 00:44:06,479 Speaker 1: kind of list sort of podcasts in the future, things 720 00:44:06,520 --> 00:44:11,680 Speaker 1: like some of the the most successful pieces of software 721 00:44:11,680 --> 00:44:15,439 Speaker 1: of all time, the most uh popular gadgets of all time, 722 00:44:15,480 --> 00:44:17,480 Speaker 1: that sort of stuff. But if you have any suggestions 723 00:44:17,480 --> 00:44:20,640 Speaker 1: for that kind of topic or anything else, really you 724 00:44:20,680 --> 00:44:23,839 Speaker 1: should write me. My email address is tech stuff at 725 00:44:23,920 --> 00:44:26,400 Speaker 1: how stuff works dot com, or you can drop me 726 00:44:26,440 --> 00:44:30,000 Speaker 1: a line on Facebook for Twitter to handle it. Both 727 00:44:30,000 --> 00:44:33,560 Speaker 1: of those is text stuff H s W. And I'll 728 00:44:33,600 --> 00:44:42,719 Speaker 1: talk to you guys again really soon for more on 729 00:44:42,719 --> 00:44:45,200 Speaker 1: this and thousands of other topics. Is it how stuff 730 00:44:45,200 --> 00:44:55,680 Speaker 1: Works dot Com