WEBVTT - The Y2K Bug Was (And Is) a Real Problem

0:00:04.400 --> 0:00:07.800
<v Speaker 1>Welcome to Tech Stuff, a production from I Heart Radio.

0:00:12.080 --> 0:00:15.040
<v Speaker 1>Hey there, and welcome to tech Stuff. I'm your host,

0:00:15.200 --> 0:00:18.520
<v Speaker 1>Jonathan Strickland. I'm an executive producer with I Heart Radio,

0:00:18.680 --> 0:00:23.040
<v Speaker 1>and I love all things tech. And if you are

0:00:23.120 --> 0:00:26.640
<v Speaker 1>in your early twenties or you are younger than that,

0:00:26.960 --> 0:00:30.240
<v Speaker 1>you missed out on a pretty big deal in tech.

0:00:30.640 --> 0:00:34.639
<v Speaker 1>And that's the Y two K problem. So Y two

0:00:34.720 --> 0:00:38.760
<v Speaker 1>K stands for the year two thousand and by the way,

0:00:39.400 --> 0:00:42.960
<v Speaker 1>there's somewhat of a delicious irony at work here, because

0:00:43.120 --> 0:00:45.000
<v Speaker 1>Y two K is a way for us to shorten

0:00:45.520 --> 0:00:48.200
<v Speaker 1>the year two thousand and the Y two K problem

0:00:48.200 --> 0:00:51.800
<v Speaker 1>itself stems from our tendency to shorten stuff for the

0:00:51.880 --> 0:00:56.040
<v Speaker 1>sake of convenience, even at the expense of long term results.

0:00:56.360 --> 0:01:00.360
<v Speaker 1>But I digress. By the late ninety nineties was this

0:01:00.440 --> 0:01:03.760
<v Speaker 1>growing concern that a great deal of the technology that

0:01:03.800 --> 0:01:06.959
<v Speaker 1>we rely upon was just going to fail on the

0:01:07.000 --> 0:01:11.240
<v Speaker 1>stroke of midnight. As New Year's Eve n turned to

0:01:11.319 --> 0:01:15.280
<v Speaker 1>New Year's Day two thousand, people were worried about everything

0:01:15.319 --> 0:01:19.600
<v Speaker 1>from toasters to airplanes that we're all gonna just fail spontaneously,

0:01:20.040 --> 0:01:23.080
<v Speaker 1>and clearly the latter would have a much more catastrophic

0:01:23.120 --> 0:01:26.080
<v Speaker 1>result than the former. So today I thought I would

0:01:26.120 --> 0:01:28.400
<v Speaker 1>really go through what was happening with the HYE two

0:01:28.480 --> 0:01:33.319
<v Speaker 1>K problem, how various companies tried to solve it, and

0:01:33.360 --> 0:01:37.280
<v Speaker 1>what actually happened at the turn of the millennium. Uh,

0:01:37.400 --> 0:01:40.039
<v Speaker 1>that last bit I should probably back off of, since

0:01:40.080 --> 0:01:43.080
<v Speaker 1>you know two thousand was actually the end of the millennium.

0:01:43.120 --> 0:01:46.160
<v Speaker 1>Two thousand one would have been the beginning of the millennium.

0:01:46.200 --> 0:01:49.520
<v Speaker 1>Don't at me. Years don't start at zero, we start

0:01:49.600 --> 0:01:53.040
<v Speaker 1>at one. So that means one to one hundred would

0:01:53.040 --> 0:01:55.200
<v Speaker 1>be the first century, one oh one to two d

0:01:55.240 --> 0:01:59.640
<v Speaker 1>would be the second. That that's my stance. You might disagree.

0:02:00.360 --> 0:02:03.320
<v Speaker 1>Let's just agree to disagree and go our separate ways.

0:02:03.360 --> 0:02:06.480
<v Speaker 1>But I'll also talk about some related issues in tech,

0:02:06.560 --> 0:02:11.160
<v Speaker 1>including how the Y two k problem resurfaced just last year,

0:02:11.960 --> 0:02:15.920
<v Speaker 1>because that actually did happen, and there's there's a reason

0:02:16.040 --> 0:02:22.400
<v Speaker 1>for it, and that reason is kind of tragically funny. Now,

0:02:23.120 --> 0:02:26.320
<v Speaker 1>the easiest thing to do here is to just summarize

0:02:26.360 --> 0:02:29.680
<v Speaker 1>the whole issue in this way. The Y two K

0:02:29.840 --> 0:02:35.160
<v Speaker 1>problem emerged because of a convergence of several factors. Factor

0:02:35.240 --> 0:02:39.680
<v Speaker 1>number one is that computer memory is finite. It has

0:02:39.960 --> 0:02:43.920
<v Speaker 1>a limit. Factor number two is that we often build

0:02:43.960 --> 0:02:47.680
<v Speaker 1>on top of what came before, meaning the stuff we

0:02:47.800 --> 0:02:50.919
<v Speaker 1>create twenty years ago becomes the foundation for the stuff

0:02:50.919 --> 0:02:54.440
<v Speaker 1>that we create today. And factor number three is that

0:02:54.520 --> 0:02:58.400
<v Speaker 1>sometimes people are lazy. Even if they have the resources

0:02:58.440 --> 0:03:01.400
<v Speaker 1>to do more than what was capable in the past,

0:03:02.120 --> 0:03:05.600
<v Speaker 1>they may just still do the bare minimum. Alright, And

0:03:05.680 --> 0:03:09.399
<v Speaker 1>because the world did not go up in flames when

0:03:09.400 --> 0:03:13.640
<v Speaker 1>the calendar switched from two thousand, many people assume that

0:03:13.680 --> 0:03:18.000
<v Speaker 1>the whole brew haha was over nothing. But it wasn't nothing.

0:03:18.200 --> 0:03:23.280
<v Speaker 1>Companies had spent billions of dollars, hundreds of billions of

0:03:23.320 --> 0:03:26.920
<v Speaker 1>dollars to address the issue. They were reconfiguring systems, they

0:03:26.919 --> 0:03:30.440
<v Speaker 1>were updating code in order to avoid the problem. Some

0:03:30.560 --> 0:03:33.560
<v Speaker 1>of them really just punted the problem a little bit

0:03:33.560 --> 0:03:36.800
<v Speaker 1>into the future. And even today, we still occasionally have

0:03:36.880 --> 0:03:40.320
<v Speaker 1>instances in which an antiquated system or piece of software

0:03:40.720 --> 0:03:44.000
<v Speaker 1>generates an incorrect result because of the y u K bug,

0:03:44.320 --> 0:03:46.840
<v Speaker 1>though that sort of thing never really makes the news

0:03:46.880 --> 0:03:50.600
<v Speaker 1>these days. After all, a computer producing an error isn't

0:03:50.640 --> 0:03:56.240
<v Speaker 1>really newsworthy unless something particularly catastrophic results because of that, right,

0:03:56.360 --> 0:03:59.720
<v Speaker 1>So let's get to the root of it. In the

0:03:59.800 --> 0:04:04.520
<v Speaker 1>early days of computer programming for companies and organizations, you know,

0:04:04.520 --> 0:04:07.800
<v Speaker 1>when programming was moving out of like the research labs

0:04:07.800 --> 0:04:10.720
<v Speaker 1>and the military institutions. So we're talking about like the

0:04:10.800 --> 0:04:15.440
<v Speaker 1>nineteen sixties here. Computer memory was a really precious resource.

0:04:15.680 --> 0:04:18.040
<v Speaker 1>There just wasn't a whole lot to work with, so

0:04:18.160 --> 0:04:21.919
<v Speaker 1>programmers would try and cut corners wherever possible, trying to

0:04:22.000 --> 0:04:26.320
<v Speaker 1>make code in an efficient and effective way. And one

0:04:26.360 --> 0:04:29.040
<v Speaker 1>decision a lot of coders made in those early days

0:04:29.400 --> 0:04:31.359
<v Speaker 1>was to take a bit of a shortcut when it

0:04:31.440 --> 0:04:36.280
<v Speaker 1>came to designated the year. Rather than using a four

0:04:36.360 --> 0:04:41.560
<v Speaker 1>digit designation for the year, like you know nineteen sixty one,

0:04:42.000 --> 0:04:46.040
<v Speaker 1>programmers often shorten the year down to the last two digits,

0:04:46.480 --> 0:04:49.240
<v Speaker 1>and heck, to be fair, we humans, we do this

0:04:49.320 --> 0:04:52.960
<v Speaker 1>all the time in casual conversation as well as Brian

0:04:53.040 --> 0:04:56.360
<v Speaker 1>Adams songs or for those of you post two thousand

0:04:56.360 --> 0:05:00.719
<v Speaker 1>babies bowling for soup songs. So nineteene seventy five just

0:05:00.800 --> 0:05:05.119
<v Speaker 1>becomes seventy five. Computers would just assume that the two

0:05:05.320 --> 0:05:09.960
<v Speaker 1>unincluded digits would be one nine, So the two digit

0:05:10.080 --> 0:05:14.120
<v Speaker 1>year designation was with the assumption that this year fell

0:05:14.279 --> 0:05:18.960
<v Speaker 1>somewhere in the century of nineteen hundred to nineteen Well,

0:05:18.960 --> 0:05:21.920
<v Speaker 1>I shouldn't say century, the one hundred year period between

0:05:22.000 --> 0:05:25.039
<v Speaker 1>nineteen hundred and nine. No need to go back on

0:05:25.080 --> 0:05:28.480
<v Speaker 1>that nineteen o one thing, And at the time that

0:05:28.560 --> 0:05:33.200
<v Speaker 1>was okay. There were still decades left in the nineteen hundreds.

0:05:33.240 --> 0:05:37.000
<v Speaker 1>While this computer programming was going on. Computer memory was

0:05:37.040 --> 0:05:40.719
<v Speaker 1>bound to improve, and surely the future programmers would move

0:05:40.760 --> 0:05:43.760
<v Speaker 1>to a four digit designation for the year once they

0:05:43.760 --> 0:05:46.640
<v Speaker 1>had the elbow room to do it. Now, to be clear,

0:05:46.960 --> 0:05:50.200
<v Speaker 1>this problem was not a new one. In fact, you

0:05:50.240 --> 0:05:53.200
<v Speaker 1>could argue that this problem actually dates back to before

0:05:53.279 --> 0:05:56.559
<v Speaker 1>there were computers. So let us take a journey all

0:05:56.600 --> 0:06:01.159
<v Speaker 1>the way back to eighteen eighty one. You probably didn't

0:06:01.200 --> 0:06:03.440
<v Speaker 1>think the Y two K problem dates all the way

0:06:03.760 --> 0:06:08.159
<v Speaker 1>back beyond a century before the pivotal event. Huh. But

0:06:08.400 --> 0:06:12.440
<v Speaker 1>eight eight one, or really eighteen eighty was a census

0:06:12.560 --> 0:06:15.400
<v Speaker 1>year here in the United States, and the US holds

0:06:15.400 --> 0:06:18.839
<v Speaker 1>a census every ten years. Now, the one in eighteen

0:06:18.920 --> 0:06:23.200
<v Speaker 1>eighty presented a particular challenge that was evident by eighty one.

0:06:23.360 --> 0:06:26.640
<v Speaker 1>So that was that it was going to take a

0:06:26.640 --> 0:06:30.720
<v Speaker 1>long time to tabulate all the results of that census

0:06:30.760 --> 0:06:35.240
<v Speaker 1>in fact, Ultimately, it took eight years to tabulate the

0:06:35.279 --> 0:06:38.440
<v Speaker 1>results of the eighteen eighties census, and this is something

0:06:38.480 --> 0:06:42.479
<v Speaker 1>that is to happen every ten years, right. And meanwhile,

0:06:42.839 --> 0:06:46.200
<v Speaker 1>in the United States, population was growing, and it was

0:06:46.440 --> 0:06:49.080
<v Speaker 1>pretty much a guarantee that the next census was going

0:06:49.120 --> 0:06:51.680
<v Speaker 1>to take even longer to tabulate unless there was some

0:06:51.720 --> 0:06:55.080
<v Speaker 1>sort of major change. And then along came a fellow

0:06:55.360 --> 0:06:59.240
<v Speaker 1>by the name of Herman hollerith and engineer with a

0:06:59.279 --> 0:07:03.960
<v Speaker 1>goal to create a machine capable of tallying census results automatically.

0:07:04.600 --> 0:07:10.200
<v Speaker 1>He was building upon Joseph Maria Jacquard's invention the punch card. Now,

0:07:10.280 --> 0:07:15.040
<v Speaker 1>Jacquard used punch cards to guide looms as in weaving machines.

0:07:15.880 --> 0:07:19.520
<v Speaker 1>These these punch cards automated the weaving of certain patterns,

0:07:20.120 --> 0:07:22.640
<v Speaker 1>so that these intricate patterns that would normally take a

0:07:22.800 --> 0:07:24.920
<v Speaker 1>very long time to do by hand, could be done

0:07:25.000 --> 0:07:28.680
<v Speaker 1>very quickly through the use of these punch cards. Holler

0:07:28.720 --> 0:07:32.480
<v Speaker 1>has saw this as a way to designate results on

0:07:32.520 --> 0:07:35.440
<v Speaker 1>a census response. You would have a clerk who would

0:07:35.480 --> 0:07:39.360
<v Speaker 1>take a response. They would punch some holes into a

0:07:40.280 --> 0:07:44.119
<v Speaker 1>punch card that would represent those responses, and then feed

0:07:44.160 --> 0:07:47.480
<v Speaker 1>those two tallying machines that could tabulate the results quickly.

0:07:47.920 --> 0:07:51.840
<v Speaker 1>So Hollow designed cards that measured seven inches by three inches,

0:07:52.240 --> 0:07:56.280
<v Speaker 1>capable of holding just eighty characters total. Now, if you

0:07:56.560 --> 0:08:02.600
<v Speaker 1>only have eighty characters to work with, every character is precious,

0:08:02.640 --> 0:08:05.680
<v Speaker 1>So using four of those eighty characters to designate a

0:08:05.760 --> 0:08:09.480
<v Speaker 1>year would be pure luxury. And so you decide you're

0:08:09.480 --> 0:08:11.640
<v Speaker 1>gonna cut a corner. You're just going to use the

0:08:11.720 --> 0:08:16.880
<v Speaker 1>last two digits of the year instead of the whole thing. Um,

0:08:16.960 --> 0:08:19.040
<v Speaker 1>if anyone's used Twitter back when it was at a

0:08:19.120 --> 0:08:21.920
<v Speaker 1>hundred forty characters, you know, like once you started getting

0:08:21.960 --> 0:08:24.320
<v Speaker 1>close to those hundred forty characters, he had to rethink

0:08:24.360 --> 0:08:27.200
<v Speaker 1>your message as and how can I how can I

0:08:27.200 --> 0:08:29.800
<v Speaker 1>make this more concise so that I can get across

0:08:29.840 --> 0:08:33.640
<v Speaker 1>my meaning? Well, the same sort of thing here. Now,

0:08:33.679 --> 0:08:36.920
<v Speaker 1>that was for nineteenth century punch cards, which, by the way,

0:08:36.920 --> 0:08:40.640
<v Speaker 1>that actually did work. The nine senses took two years

0:08:40.679 --> 0:08:44.200
<v Speaker 1>to tabulate compared to the eight years of the eighty

0:08:44.280 --> 0:08:48.240
<v Speaker 1>cents is but that need to conserve precious memory space

0:08:49.000 --> 0:08:53.040
<v Speaker 1>persisted well into the twentieth century. The prevailing thought was

0:08:53.120 --> 0:08:57.040
<v Speaker 1>that computer memory would improve over time and would eliminate

0:08:57.120 --> 0:08:59.880
<v Speaker 1>the need to be so frugal with the programming code.

0:09:00.559 --> 0:09:05.040
<v Speaker 1>But then people didn't really bank on something called Worth's law.

0:09:05.160 --> 0:09:08.880
<v Speaker 1>That's w I R t H. Now in the tech world,

0:09:09.120 --> 0:09:12.920
<v Speaker 1>there are a few observations that we've collectively decided to

0:09:13.080 --> 0:09:18.160
<v Speaker 1>call laws. Arguably the most famous one is Moore's law.

0:09:18.440 --> 0:09:21.600
<v Speaker 1>That's based on an observation made by Gordon Moore, and

0:09:21.720 --> 0:09:25.439
<v Speaker 1>his observation centered more on the trend of the doubling

0:09:25.640 --> 0:09:29.960
<v Speaker 1>of the number of transistors on integrated circuit every two years.

0:09:30.640 --> 0:09:33.040
<v Speaker 1>Actually gets a little more persinkty than that it brings

0:09:33.040 --> 0:09:37.400
<v Speaker 1>in market pressures and finance and things. But that's a

0:09:37.400 --> 0:09:40.920
<v Speaker 1>decent summary. But these days we typically say that Moore's

0:09:41.000 --> 0:09:44.760
<v Speaker 1>law is a trend in which computers double in processing

0:09:44.840 --> 0:09:48.840
<v Speaker 1>power and or speed every two years, so that the

0:09:48.840 --> 0:09:52.240
<v Speaker 1>computer you buy two years from today will be twice

0:09:52.280 --> 0:09:55.240
<v Speaker 1>as powerful as the one you are currently using. Assuming

0:09:55.360 --> 0:09:58.400
<v Speaker 1>the one you're currently using as a new computer. Well,

0:09:59.120 --> 0:10:03.160
<v Speaker 1>Worth's law is a little bit different. Nicholas Worth wrote

0:10:03.160 --> 0:10:06.520
<v Speaker 1>in an article in n It was an article titled

0:10:06.679 --> 0:10:11.800
<v Speaker 1>a Plea for Lean Software that software was placing greater

0:10:11.880 --> 0:10:15.320
<v Speaker 1>demands on hardware at a rate that was even faster

0:10:15.400 --> 0:10:19.199
<v Speaker 1>than Moore's law. So, in other words, software was requiring

0:10:19.240 --> 0:10:24.079
<v Speaker 1>more processing power than computers could easily provide. And that's

0:10:24.200 --> 0:10:27.880
<v Speaker 1>even taking into account the incredible growth rate of Moore's law.

0:10:28.200 --> 0:10:32.040
<v Speaker 1>Programmers were not being efficient and companies were eager to

0:10:32.080 --> 0:10:35.480
<v Speaker 1>throw in all the possible bells and whistles and programs

0:10:35.480 --> 0:10:38.560
<v Speaker 1>to attract customers. And when you're trying to build in

0:10:38.600 --> 0:10:42.440
<v Speaker 1>the capability for your word processor to also play video files,

0:10:42.440 --> 0:10:45.000
<v Speaker 1>for some reason, you might not have the room to

0:10:45.160 --> 0:10:48.480
<v Speaker 1>also use four digits to mark the year. You cut

0:10:48.559 --> 0:10:52.640
<v Speaker 1>corners where you can so. Ironically, while computer memory would

0:10:52.640 --> 0:10:55.920
<v Speaker 1>improve and in theory allow for a change from the

0:10:55.920 --> 0:11:00.559
<v Speaker 1>two digit year format to a four digit year format,

0:11:00.840 --> 0:11:04.079
<v Speaker 1>a lot of programmers just didn't take that route. Whether

0:11:04.120 --> 0:11:06.680
<v Speaker 1>it was because they had fallen into a habit and

0:11:06.760 --> 0:11:09.160
<v Speaker 1>they just used two digits because this is how we've

0:11:09.160 --> 0:11:12.319
<v Speaker 1>always done it, or because they literally wanted to save

0:11:12.400 --> 0:11:15.760
<v Speaker 1>that space for something else, just comes down to a

0:11:15.800 --> 0:11:19.720
<v Speaker 1>case by case basis. Also, hey, quick side note, the

0:11:19.840 --> 0:11:22.760
<v Speaker 1>argument we do it this way because we've always done

0:11:22.800 --> 0:11:25.960
<v Speaker 1>it this way is a dumb argument. Now it could

0:11:25.960 --> 0:11:29.120
<v Speaker 1>be that the old way is the best way that

0:11:29.160 --> 0:11:31.560
<v Speaker 1>would be totally valid. If it is in fact the

0:11:31.559 --> 0:11:34.000
<v Speaker 1>best way, sure keep doing it. You're not doing it

0:11:34.040 --> 0:11:36.240
<v Speaker 1>because that's the way you've always done it, but because

0:11:36.280 --> 0:11:39.240
<v Speaker 1>that's the best way to do it. But to only

0:11:39.280 --> 0:11:42.400
<v Speaker 1>do things one way, because that quote is how it's

0:11:42.400 --> 0:11:45.400
<v Speaker 1>always been done, en quote, is more often than not

0:11:45.520 --> 0:11:48.000
<v Speaker 1>an impediment to progress. Anyway, let me get back to

0:11:48.040 --> 0:11:51.240
<v Speaker 1>the story now. Part of the story is also about

0:11:51.600 --> 0:11:56.080
<v Speaker 1>standards and why we have them and why it's so

0:11:56.200 --> 0:12:00.920
<v Speaker 1>darn frustrating when we refuse to actually use um when

0:12:00.960 --> 0:12:04.560
<v Speaker 1>it comes to expressing dates and time. There is an

0:12:04.640 --> 0:12:08.120
<v Speaker 1>international standard we could follow, and it goes like this,

0:12:08.559 --> 0:12:12.160
<v Speaker 1>four digits for the year, then two digits for the month,

0:12:12.600 --> 0:12:15.760
<v Speaker 1>then two digits for the day, than two digits for

0:12:15.800 --> 0:12:19.679
<v Speaker 1>the hour, two digits for the minutes, two digits for

0:12:19.720 --> 0:12:23.320
<v Speaker 1>the seconds. And if you followed that then there would

0:12:23.360 --> 0:12:26.840
<v Speaker 1>never be any confusion. Uh. This provides a precise way

0:12:26.840 --> 0:12:30.720
<v Speaker 1>to document the specific time, and if we had relied

0:12:30.760 --> 0:12:33.360
<v Speaker 1>on such a standard, then the Y two K problem

0:12:33.679 --> 0:12:36.280
<v Speaker 1>wouldn't have been a problem at all. Of course, that

0:12:36.280 --> 0:12:39.599
<v Speaker 1>would have required us to have the computer memory available

0:12:39.720 --> 0:12:42.640
<v Speaker 1>to use that standard every time. We needed to have

0:12:43.200 --> 0:12:49.439
<v Speaker 1>a year in the code, but it would actually work.

0:12:50.400 --> 0:12:55.240
<v Speaker 1>And uh, you know, sometimes we just don't incorporate standards

0:12:55.240 --> 0:12:58.760
<v Speaker 1>because incorporating standards requires effort, and you know, sometimes it's

0:12:58.840 --> 0:13:01.559
<v Speaker 1>just not feeling it that day. You know, you get

0:13:01.640 --> 0:13:03.640
<v Speaker 1>up and you're like, you know, I I just don't

0:13:03.679 --> 0:13:08.040
<v Speaker 1>feel like living up to standards. I certainly can identify

0:13:08.120 --> 0:13:11.520
<v Speaker 1>with that on a personal level. Well as early as

0:13:11.600 --> 0:13:15.800
<v Speaker 1>the nineteen eighties, some programmers began to wonder about issues

0:13:15.800 --> 0:13:18.520
<v Speaker 1>that might come up closer to the New millennium. In fact,

0:13:18.960 --> 0:13:21.319
<v Speaker 1>there were some industries that were already dealing with this,

0:13:21.440 --> 0:13:23.680
<v Speaker 1>but we'll get into that a bit later. This was

0:13:23.760 --> 0:13:30.320
<v Speaker 1>more about people actually using publications to talk about this issue.

0:13:30.840 --> 0:13:33.200
<v Speaker 1>So if a computer is looking at dates as two

0:13:33.280 --> 0:13:40.079
<v Speaker 1>digit numbers, what happens when goes to zero zero? Let

0:13:40.080 --> 0:13:42.559
<v Speaker 1>me tell you a quick story about a pinball machine

0:13:42.559 --> 0:13:44.520
<v Speaker 1>that used to play back when I was in college.

0:13:44.920 --> 0:13:47.880
<v Speaker 1>I promise this relates. And also I just love pinball

0:13:48.280 --> 0:13:50.760
<v Speaker 1>and it's one of my favorite stories. I went to

0:13:50.800 --> 0:13:54.480
<v Speaker 1>the University of Georgia and at you g A's student center,

0:13:54.600 --> 0:13:57.120
<v Speaker 1>we had a game room that included a row of

0:13:57.160 --> 0:14:00.079
<v Speaker 1>pinball machines and they were also about two dozen and

0:14:00.320 --> 0:14:04.640
<v Speaker 1>arcade games, and the pinball machines included some true classics

0:14:04.679 --> 0:14:08.400
<v Speaker 1>like Adam's Family, which is to date my favorite pinball

0:14:08.440 --> 0:14:12.720
<v Speaker 1>machine of all time. Twilight Zone another great, very difficult

0:14:12.720 --> 0:14:15.480
<v Speaker 1>pinball machine. But once in a while we would also

0:14:15.520 --> 0:14:19.040
<v Speaker 1>have someone rotate in a new or sometimes a very

0:14:19.160 --> 0:14:22.640
<v Speaker 1>old pinball machine, and I suppose they must have belonged

0:14:22.680 --> 0:14:28.160
<v Speaker 1>to some you know, alumnus is private collection or something. Anyway,

0:14:28.360 --> 0:14:31.960
<v Speaker 1>at one point, for some reason, we got a nineteen

0:14:32.120 --> 0:14:35.840
<v Speaker 1>seventy nine Star Trek pinball machine from Bally and just

0:14:35.880 --> 0:14:38.560
<v Speaker 1>so y'all know, I was in college in the nineties,

0:14:39.040 --> 0:14:42.560
<v Speaker 1>so this was a vintage pinball machine even back then.

0:14:43.040 --> 0:14:46.560
<v Speaker 1>The playing field on this machine had this one little

0:14:46.680 --> 0:14:48.920
<v Speaker 1>button in the floor of the playing field up at

0:14:48.920 --> 0:14:51.600
<v Speaker 1>the top left part, and it was designed so that

0:14:51.640 --> 0:14:54.720
<v Speaker 1>when the pinball would roll over it, it would activate

0:14:54.760 --> 0:14:58.600
<v Speaker 1>the button. And this button was in charge of activating

0:14:58.640 --> 0:15:00.960
<v Speaker 1>an extra ball after it has hit a certain number

0:15:00.960 --> 0:15:04.960
<v Speaker 1>of times. However, this particular machine had a button that

0:15:04.960 --> 0:15:08.480
<v Speaker 1>would stick a little bit, so it didn't take very

0:15:08.560 --> 0:15:11.720
<v Speaker 1>much effort to get that extra ball, and I, being

0:15:11.760 --> 0:15:16.200
<v Speaker 1>the enterprising sort pun intended because of Star Trek, I

0:15:16.280 --> 0:15:19.440
<v Speaker 1>decided one day that. You know, I didn't have any

0:15:19.440 --> 0:15:22.480
<v Speaker 1>classes that day. I was going to use this knowledge

0:15:22.480 --> 0:15:25.400
<v Speaker 1>to my advantage, and my goal was at the beginning

0:15:25.440 --> 0:15:28.640
<v Speaker 1>of each play just just focus on getting the ball

0:15:28.800 --> 0:15:31.600
<v Speaker 1>up in that upper left part of the playfield and

0:15:31.640 --> 0:15:34.960
<v Speaker 1>to activate the extra ball. That was goal number one.

0:15:35.480 --> 0:15:37.800
<v Speaker 1>Once I did that, from that point forward, I could

0:15:37.840 --> 0:15:39.600
<v Speaker 1>just play the game. I could do whatever I wanted

0:15:39.640 --> 0:15:43.000
<v Speaker 1>because I had an extra ball already, and even if

0:15:43.040 --> 0:15:46.040
<v Speaker 1>the ball drained, I wouldn't lose a life because that

0:15:46.160 --> 0:15:48.240
<v Speaker 1>was the extra ball. And as soon as I started

0:15:48.280 --> 0:15:50.760
<v Speaker 1>playing the extra ball, I would do it all over again.

0:15:51.080 --> 0:15:53.000
<v Speaker 1>And this meant that as long as I could get

0:15:53.040 --> 0:15:54.960
<v Speaker 1>it up into that upper left part of the game,

0:15:55.600 --> 0:15:59.600
<v Speaker 1>I could effectively play this game forever or until I

0:15:59.720 --> 0:16:04.240
<v Speaker 1>was exhausted. Well, the score of this particular machine could

0:16:04.240 --> 0:16:06.920
<v Speaker 1>only accommodate up to a certain number of digits, and

0:16:07.120 --> 0:16:10.240
<v Speaker 1>I can't remember what it was. Let's say it was

0:16:10.240 --> 0:16:13.840
<v Speaker 1>a million or just under a million. So I decided

0:16:13.880 --> 0:16:16.600
<v Speaker 1>I wanted to see what would happen if I exceeded

0:16:16.760 --> 0:16:20.400
<v Speaker 1>that number. I had the methodology there, and sure enough,

0:16:20.840 --> 0:16:23.520
<v Speaker 1>when I got to that point, you know whatever, it

0:16:23.600 --> 0:16:28.760
<v Speaker 1>was like nine thousand, nine nine or whatever. I saw

0:16:28.960 --> 0:16:31.440
<v Speaker 1>that the next point, the next thing that I hit

0:16:31.560 --> 0:16:35.840
<v Speaker 1>that generated points sent me back over to the zero

0:16:36.280 --> 0:16:42.160
<v Speaker 1>starting point, and the score keeping started over. So satisfied

0:16:42.200 --> 0:16:45.400
<v Speaker 1>that I had turned over the machine, I had rolled

0:16:45.640 --> 0:16:49.600
<v Speaker 1>over the score, I quickly finished out the game, and

0:16:49.640 --> 0:16:51.320
<v Speaker 1>I wanted to see if it would let me set

0:16:51.360 --> 0:16:55.200
<v Speaker 1>a high score, or if it would, you know, choose

0:16:55.280 --> 0:16:57.760
<v Speaker 1>my score as the high score. It did not. It

0:16:57.840 --> 0:17:03.000
<v Speaker 1>reverted back to the previous high score that was technically lower. Um.

0:17:03.040 --> 0:17:05.199
<v Speaker 1>So there was a rollover problem. In other words, like

0:17:05.240 --> 0:17:09.960
<v Speaker 1>once it hit zero, the computer interpreted that to mean

0:17:10.480 --> 0:17:14.560
<v Speaker 1>that we were back at ground zero. Well, in the

0:17:14.560 --> 0:17:17.159
<v Speaker 1>early eighties, a few programmers were starting to worry that

0:17:17.240 --> 0:17:20.920
<v Speaker 1>a lot of systems in software had a similar rollover

0:17:21.040 --> 0:17:23.280
<v Speaker 1>problem and it was going to all come to a

0:17:23.320 --> 0:17:27.879
<v Speaker 1>head in two thousand. With the two digit designation for years,

0:17:28.160 --> 0:17:30.640
<v Speaker 1>it could mean that computer systems would think the year

0:17:30.720 --> 0:17:33.199
<v Speaker 1>was starting back over at zero and work up to

0:17:33.240 --> 0:17:37.760
<v Speaker 1>a maximum before rolling over again. And this could potentially

0:17:37.840 --> 0:17:40.240
<v Speaker 1>be a big problem. So, for example, let's say you

0:17:40.280 --> 0:17:43.760
<v Speaker 1>were a go getter in and you got yourself one

0:17:43.760 --> 0:17:46.840
<v Speaker 1>of them fancy credit cards, and your credit cards expiration

0:17:46.960 --> 0:17:50.080
<v Speaker 1>date is in let's say two thousand two, and then

0:17:50.480 --> 0:17:52.440
<v Speaker 1>you go out and you take your fancy credit card

0:17:52.480 --> 0:17:55.000
<v Speaker 1>to buy you and someone special, you know, a really

0:17:55.240 --> 0:17:58.600
<v Speaker 1>nice meal, and you've got, you know, plenty of credit

0:17:58.680 --> 0:18:02.040
<v Speaker 1>on your card. Everything should be fine. Only when the

0:18:02.080 --> 0:18:06.320
<v Speaker 1>fancy restaurant runs your credit card, the underlying retail system

0:18:06.400 --> 0:18:09.720
<v Speaker 1>detects and error. The system is attempting to verify that

0:18:09.760 --> 0:18:12.760
<v Speaker 1>your card is valid, so it checks the expiration date,

0:18:13.040 --> 0:18:16.720
<v Speaker 1>but it's essentially saying, you know, is today's date before

0:18:17.119 --> 0:18:20.240
<v Speaker 1>or after the expiration date on this card. If today's

0:18:20.320 --> 0:18:23.760
<v Speaker 1>date is before the expiration date, everything's fine. If it's after,

0:18:23.880 --> 0:18:26.320
<v Speaker 1>that's a problem. And if the system was using a

0:18:26.400 --> 0:18:30.240
<v Speaker 1>two digit year designation, it would say, oh, zero two

0:18:30.280 --> 0:18:34.040
<v Speaker 1>is less than That means this card expired like ninety

0:18:34.160 --> 0:18:38.480
<v Speaker 1>seven years ago, and the transaction would get declined. This

0:18:39.240 --> 0:18:44.440
<v Speaker 1>really happened a lot. Now that's just a sample scenario

0:18:44.480 --> 0:18:47.240
<v Speaker 1>of something that could happen, the sort of you know,

0:18:47.359 --> 0:18:50.800
<v Speaker 1>tiny thing that would be inconvenient on an individual basis.

0:18:51.119 --> 0:18:53.439
<v Speaker 1>But it was just the tip of the iceberg for

0:18:53.520 --> 0:18:56.960
<v Speaker 1>possible problems. I'll talk about it more when we come

0:18:56.960 --> 0:19:07.719
<v Speaker 1>back after this break. I mentioned a small scale problem

0:19:07.760 --> 0:19:10.159
<v Speaker 1>the one that's you know, huge when you apply it

0:19:10.240 --> 0:19:13.960
<v Speaker 1>to the entire population. But how about something that's even

0:19:14.000 --> 0:19:16.720
<v Speaker 1>bigger than that, And let's stick with the financial world

0:19:16.760 --> 0:19:19.960
<v Speaker 1>and talk about banks. So let's say it's nineteen eighty

0:19:20.040 --> 0:19:23.320
<v Speaker 1>five when you establish a savings account and you put

0:19:23.320 --> 0:19:25.240
<v Speaker 1>some money in the account and it begins to earn

0:19:25.320 --> 0:19:28.560
<v Speaker 1>interest at a certain percentage per year. And the way

0:19:28.600 --> 0:19:31.479
<v Speaker 1>the bank system determines this is by taking the current

0:19:31.560 --> 0:19:35.919
<v Speaker 1>year let's say, in this scenario, the current years, and

0:19:35.920 --> 0:19:37.879
<v Speaker 1>then you subtract from that the year in which you

0:19:37.960 --> 0:19:40.760
<v Speaker 1>established your account. So in this example, it would be

0:19:40.840 --> 0:19:45.359
<v Speaker 1>nine eighty five. That gives us ten that's ten years

0:19:45.359 --> 0:19:48.680
<v Speaker 1>of earning interest, which then can be calculated and then

0:19:48.720 --> 0:19:50.600
<v Speaker 1>you know how much interest you've earned on your account,

0:19:50.600 --> 0:19:53.640
<v Speaker 1>which is pretty simple. But let's say instead, now it's

0:19:53.640 --> 0:19:56.600
<v Speaker 1>the year two thousand, and you're still using these two

0:19:56.640 --> 0:19:59.560
<v Speaker 1>digit year designations, and now the bank system is trying

0:19:59.560 --> 0:20:04.560
<v Speaker 1>to subtract from zero zero. Now, remember the system is

0:20:04.600 --> 0:20:07.159
<v Speaker 1>assuming that both of these are happening in the century

0:20:07.280 --> 0:20:12.040
<v Speaker 1>or the one years between ninet So now the figure

0:20:12.080 --> 0:20:15.200
<v Speaker 1>it comes up with is negative eight five, and that

0:20:15.240 --> 0:20:18.800
<v Speaker 1>means that you've earned negative interest which gets pulled from

0:20:18.840 --> 0:20:22.840
<v Speaker 1>your account, it overdraws your account. So the real concern

0:20:23.000 --> 0:20:24.919
<v Speaker 1>was that the Y two K bug was going to

0:20:25.000 --> 0:20:29.000
<v Speaker 1>lead to numerous computer systems, particularly in the financial world,

0:20:29.280 --> 0:20:31.960
<v Speaker 1>but not exclusively there, and it was going to cause

0:20:32.000 --> 0:20:35.080
<v Speaker 1>them to miscalculate things like this, and as a result,

0:20:35.280 --> 0:20:39.960
<v Speaker 1>you would have widespread system failures. Accounts could get wiped out,

0:20:40.080 --> 0:20:45.280
<v Speaker 1>insurance policies could get canceled, mortgages could be flagged for foreclosure,

0:20:45.440 --> 0:20:48.760
<v Speaker 1>and so on. It would be catastrophic and a huge

0:20:48.880 --> 0:20:52.480
<v Speaker 1>headache to clean up, and all because we had migrated

0:20:52.520 --> 0:20:56.000
<v Speaker 1>to computer systems that we're using a two digit format

0:20:56.080 --> 0:20:58.840
<v Speaker 1>for the year. A few people became aware of this

0:20:58.960 --> 0:21:02.119
<v Speaker 1>pretty early on, but it took a surprisingly long time

0:21:02.200 --> 0:21:04.520
<v Speaker 1>for the concern to kind of filter out beyond a

0:21:04.600 --> 0:21:09.840
<v Speaker 1>small collective. The problem extended well beyond the financial industry.

0:21:09.840 --> 0:21:12.800
<v Speaker 1>Anything that was dependent upon a year, even something as

0:21:12.800 --> 0:21:16.760
<v Speaker 1>simple as sorting a group of files chronologically, started to

0:21:16.800 --> 0:21:20.560
<v Speaker 1>fall apart. If the computer systems interpreted two thousand as

0:21:20.720 --> 0:21:26.120
<v Speaker 1>really being nineteen hundred, it could affect navigation systems, communication systems,

0:21:26.119 --> 0:21:29.080
<v Speaker 1>and all sorts of other industries. Now, from what I

0:21:29.080 --> 0:21:32.080
<v Speaker 1>can tell, people began to see this as an issue

0:21:32.960 --> 0:21:37.520
<v Speaker 1>UH and started talking about it beyond internal groups around

0:21:37.600 --> 0:21:40.760
<v Speaker 1>the early nineteen eighties, but didn't get much attention. Back then.

0:21:41.200 --> 0:21:45.239
<v Speaker 1>Some companies like IBM were probably more aware of it.

0:21:45.320 --> 0:21:48.240
<v Speaker 1>I mean, the company certainly claimed as much, but they

0:21:48.320 --> 0:21:51.119
<v Speaker 1>kept those discussions for the most part internal, so the

0:21:51.160 --> 0:21:54.760
<v Speaker 1>outside world wasn't really aware of it. In nineteen eight six,

0:21:55.080 --> 0:21:58.639
<v Speaker 1>Bruce Olmes wrote an article in the IBM Systems Journal,

0:21:58.920 --> 0:22:03.280
<v Speaker 1>Volume twenty five, issue two. It has the title computer

0:22:03.400 --> 0:22:07.919
<v Speaker 1>processing of Dates outside the twentieth century, and in this article,

0:22:08.080 --> 0:22:10.760
<v Speaker 1>Olms points out that there's a need for a different

0:22:10.800 --> 0:22:15.199
<v Speaker 1>approach than this two digit year designation. Omas's solution was

0:22:15.240 --> 0:22:19.840
<v Speaker 1>to use the Lilian date format, which was his own proposal.

0:22:20.359 --> 0:22:23.080
<v Speaker 1>This format actually takes the date of the formation of

0:22:23.080 --> 0:22:27.520
<v Speaker 1>the Gregorian calendar, which was October four two, and thus

0:22:27.560 --> 0:22:33.679
<v Speaker 1>designates October two as date one. So the date of

0:22:33.760 --> 0:22:36.880
<v Speaker 1>the creation of the Gregorian calendar is zero, The next

0:22:36.920 --> 0:22:39.320
<v Speaker 1>day would be one, the day after that would be two,

0:22:39.880 --> 0:22:43.000
<v Speaker 1>and so the format goes up one per each day

0:22:43.040 --> 0:22:46.320
<v Speaker 1>after that date. That would make today's date one hundred

0:22:46.359 --> 0:22:49.800
<v Speaker 1>sixty thousand, two hundred sixty two today, by the way,

0:22:49.840 --> 0:22:54.119
<v Speaker 1>being July one, in case you're listening from the future.

0:22:54.920 --> 0:22:58.840
<v Speaker 1>Olms also suggested an approach that would use windows of

0:22:58.920 --> 0:23:03.120
<v Speaker 1>time to try get around the two digit problem, generally

0:23:03.160 --> 0:23:06.760
<v Speaker 1>speaking for modern systems that weren't dealing with dates and antiquity.

0:23:07.320 --> 0:23:11.760
<v Speaker 1>He was suggesting that for any years designated as fifty

0:23:11.960 --> 0:23:15.800
<v Speaker 1>or lower, we assume that those are for the year

0:23:15.840 --> 0:23:19.280
<v Speaker 1>two thousand, and for any years fifty one or higher,

0:23:19.840 --> 0:23:23.000
<v Speaker 1>we assume that those are for the year nineteen hundreds.

0:23:23.040 --> 0:23:26.680
<v Speaker 1>So with a little coding, the computer system interprets any

0:23:26.800 --> 0:23:30.080
<v Speaker 1>two digit year number above fifty one to belong in

0:23:30.119 --> 0:23:34.879
<v Speaker 1>the nineteen hundreds. Any two digit year belonging below fifty

0:23:35.240 --> 0:23:38.080
<v Speaker 1>belongs in two thousand's. So if the year was listed

0:23:38.080 --> 0:23:41.120
<v Speaker 1>as seventy seven, then it would mean it's nineteen seventy seven,

0:23:41.160 --> 0:23:43.520
<v Speaker 1>But if it were listed as thirty three, it would

0:23:43.560 --> 0:23:46.840
<v Speaker 1>be two thousand thirty three. So he was proposing this

0:23:46.960 --> 0:23:50.440
<v Speaker 1>as a stop gap solution because it only lasts as

0:23:50.480 --> 0:23:53.240
<v Speaker 1>long as whatever you're dividing year is, and we'll get

0:23:53.280 --> 0:23:58.719
<v Speaker 1>back to that. And this would end up being a

0:23:58.720 --> 0:24:02.840
<v Speaker 1>pivotal part of many companies Y two K strategies, which,

0:24:03.520 --> 0:24:06.600
<v Speaker 1>as we'll see, as part of a problem. Ohms also

0:24:06.640 --> 0:24:10.720
<v Speaker 1>pointed out how simple the problem was in concept, but

0:24:10.760 --> 0:24:15.280
<v Speaker 1>how complicated it was in practice. Conceptually, the only thing

0:24:15.320 --> 0:24:17.520
<v Speaker 1>anyone really has to do is go in and change

0:24:17.520 --> 0:24:20.520
<v Speaker 1>a tiny bit of code and a file. So on

0:24:20.560 --> 0:24:24.439
<v Speaker 1>an individual file basis, it was trivial. It was incredibly simple.

0:24:24.880 --> 0:24:28.280
<v Speaker 1>You could do it in a in just a few minutes.

0:24:28.359 --> 0:24:30.879
<v Speaker 1>But of course reality is way more complicated, because in

0:24:30.960 --> 0:24:35.119
<v Speaker 1>reality we have suites of software that all connect to

0:24:35.200 --> 0:24:39.160
<v Speaker 1>one another, and a change in one of those has

0:24:39.240 --> 0:24:42.639
<v Speaker 1>consequences for everything else that connects back to it. The

0:24:42.680 --> 0:24:47.399
<v Speaker 1>interconnectedness of software requires that for these systems, all of

0:24:47.440 --> 0:24:50.440
<v Speaker 1>these changes to the way that we designate years really

0:24:50.440 --> 0:24:54.760
<v Speaker 1>needs to happen simultaneously across all software, or else you're

0:24:54.800 --> 0:24:58.640
<v Speaker 1>gonna have issues with compatibility. Now, at this point, you're

0:24:58.640 --> 0:25:02.400
<v Speaker 1>not talking about just go into a bunch of individual files,

0:25:02.440 --> 0:25:05.679
<v Speaker 1>even like millions of them, and changing a couple of numbers.

0:25:05.920 --> 0:25:09.240
<v Speaker 1>You're talking about trying to keep an entire software ecosystem

0:25:09.359 --> 0:25:13.120
<v Speaker 1>stable while you do it, and so you don't interrupt

0:25:13.200 --> 0:25:16.119
<v Speaker 1>the daily operations, and you also, you know, fix the

0:25:16.240 --> 0:25:21.240
<v Speaker 1>underlying issue. That's a non trivial problem. So Ohams writes,

0:25:21.280 --> 0:25:24.040
<v Speaker 1>this piece for IBM and lays out the challenge and

0:25:24.119 --> 0:25:27.080
<v Speaker 1>the two digit year format is likely to cause at

0:25:27.119 --> 0:25:30.679
<v Speaker 1>least some problems as the year rolls over from ninety

0:25:30.800 --> 0:25:33.560
<v Speaker 1>nine to zero zero. And the scale of the problem

0:25:33.720 --> 0:25:37.400
<v Speaker 1>for large systems is daunting. It will require a lot

0:25:37.440 --> 0:25:40.600
<v Speaker 1>of time and effort to address with a careful approach

0:25:40.680 --> 0:25:43.919
<v Speaker 1>so as not to disrupt normal operations. And this is

0:25:43.960 --> 0:25:47.840
<v Speaker 1>in n when he writes this, so you would think, oh, well,

0:25:47.880 --> 0:25:50.120
<v Speaker 1>that gives you plenty of time to fix things, right,

0:25:50.160 --> 0:25:53.119
<v Speaker 1>I mean, you've got fourteen years. And it means that

0:25:53.520 --> 0:25:56.320
<v Speaker 1>people working on the next generation of software products and

0:25:56.359 --> 0:25:58.960
<v Speaker 1>systems can just avoid the problems of the past, right

0:25:59.000 --> 0:26:03.560
<v Speaker 1>and just use a four digit year from that point forward. Well,

0:26:03.600 --> 0:26:07.320
<v Speaker 1>obviously that didn't happen quite like that. Olams's article and

0:26:07.440 --> 0:26:11.479
<v Speaker 1>IBMS publication of that article acknowledged that there was an

0:26:11.560 --> 0:26:15.080
<v Speaker 1>underlying problem in software and computer systems, but the article

0:26:15.119 --> 0:26:18.200
<v Speaker 1>didn't really go so far as to define the scale

0:26:18.400 --> 0:26:21.000
<v Speaker 1>of the problem nor the amount of work and money

0:26:21.040 --> 0:26:24.840
<v Speaker 1>it would require to address the problem. But it certainly

0:26:24.960 --> 0:26:29.439
<v Speaker 1>established that, y'all, we got a problem. That problem was

0:26:29.600 --> 0:26:34.080
<v Speaker 1>one with a specific countdown every moment that passed would

0:26:34.119 --> 0:26:38.119
<v Speaker 1>bring us closer to January one, two thousand. It was,

0:26:38.640 --> 0:26:43.680
<v Speaker 1>as many people would describe later, a technical time bomb. Now,

0:26:43.720 --> 0:26:45.719
<v Speaker 1>from what I can tell, the first person to actually

0:26:46.080 --> 0:26:50.840
<v Speaker 1>describe the rollover problem as a time bomb was Chris Anderson,

0:26:51.119 --> 0:26:55.600
<v Speaker 1>who published a half page advertisement in the South African

0:26:55.720 --> 0:27:00.440
<v Speaker 1>journal Computing back in June of six. And the top

0:27:00.480 --> 0:27:03.800
<v Speaker 1>of the ad read the time bomb in your IBM

0:27:03.880 --> 0:27:07.560
<v Speaker 1>mainframe system. And I'll just read you a small part

0:27:07.720 --> 0:27:13.119
<v Speaker 1>of the copy for that ad quote the date time bomb.

0:27:13.680 --> 0:27:17.440
<v Speaker 1>The cause is that no IBM mainframe operating system software

0:27:17.520 --> 0:27:21.160
<v Speaker 1>or compiler properly caters for a date subsequent to December

0:27:21.280 --> 0:27:26.520
<v Speaker 1>thirty one. The hardware can cope, but the main system

0:27:26.600 --> 0:27:31.600
<v Speaker 1>software has a bug. Vmsp vs, e v S e S,

0:27:31.680 --> 0:27:35.320
<v Speaker 1>p m vs all have the same glitch. This is

0:27:35.359 --> 0:27:40.840
<v Speaker 1>also true for the compiler's cobal assembler at al end quote.

0:27:41.160 --> 0:27:45.679
<v Speaker 1>So Anderson's message continued and issued warnings against investing in

0:27:45.720 --> 0:27:49.600
<v Speaker 1>companies that rely on outdated systems and making certain that

0:27:49.640 --> 0:27:53.760
<v Speaker 1>you know your affairs are all in order before two thousand,

0:27:53.800 --> 0:27:56.440
<v Speaker 1>that your money's in a safe place, that kind of thing,

0:27:57.040 --> 0:28:00.760
<v Speaker 1>And he paints a pretty bleak worst case an areo

0:28:00.800 --> 0:28:03.800
<v Speaker 1>in this ad, which you know you could go back

0:28:03.840 --> 0:28:06.600
<v Speaker 1>and argue and say all of this is is true.

0:28:06.760 --> 0:28:09.119
<v Speaker 1>If nothing were to be done like this could have

0:28:09.160 --> 0:28:13.320
<v Speaker 1>been a pretty catastrophic event at least one that would

0:28:13.320 --> 0:28:16.840
<v Speaker 1>have been incredibly disruptive for more than a month at least.

0:28:17.560 --> 0:28:20.240
<v Speaker 1>And he ends his ad with a reveal that he's

0:28:20.240 --> 0:28:24.040
<v Speaker 1>setting up a group called Deadline two thousand to investigate

0:28:24.600 --> 0:28:31.120
<v Speaker 1>and and and coordinate implementation of immediate solutions to this problem. Now,

0:28:31.160 --> 0:28:35.600
<v Speaker 1>IBM responded to this, and in that response, a company

0:28:35.640 --> 0:28:39.959
<v Speaker 1>rep argued that it had already anticipated this problem and

0:28:39.960 --> 0:28:42.480
<v Speaker 1>in fact had taken steps to mitigate it, which changes

0:28:42.560 --> 0:28:47.200
<v Speaker 1>to hardware architecture and updated software that uses four digits

0:28:47.320 --> 0:28:51.280
<v Speaker 1>to designate the year, thus sidestepping the two digit problem. Further,

0:28:51.400 --> 0:28:54.240
<v Speaker 1>the company said that there are some legacy systems that

0:28:54.320 --> 0:28:57.880
<v Speaker 1>cannot be upgraded and updated to this this format, but

0:28:58.000 --> 0:29:01.720
<v Speaker 1>these are limited and work around could follow. And essentially

0:29:01.720 --> 0:29:03.880
<v Speaker 1>IBM was saying, this is not the big deal that

0:29:03.920 --> 0:29:06.480
<v Speaker 1>Anderson says it is, and we think he's just trying

0:29:06.480 --> 0:29:10.360
<v Speaker 1>to drive up business for his consulting company. Now, IBM

0:29:10.400 --> 0:29:13.040
<v Speaker 1>was a really big advertiser with this particular magazine, and

0:29:13.080 --> 0:29:17.120
<v Speaker 1>perhaps coincidentally, the magazine failed to carry any other deadline

0:29:17.160 --> 0:29:22.400
<v Speaker 1>two thousand notices moving forward. And by perhaps coincidentally, I

0:29:22.440 --> 0:29:28.960
<v Speaker 1>mean almost certainly not coincidentally. IBM's response did acknowledge that

0:29:29.200 --> 0:29:34.000
<v Speaker 1>some legacy systems like disc directories and tape labels wrote

0:29:34.000 --> 0:29:38.160
<v Speaker 1>alied on the two digit year designation, and that these

0:29:38.200 --> 0:29:41.640
<v Speaker 1>could conceivably cause problems for people down the line if

0:29:41.680 --> 0:29:45.920
<v Speaker 1>they never address that problem. I bet you can't guess

0:29:45.920 --> 0:29:49.280
<v Speaker 1>what happened next, you know what. I'll tell you what

0:29:49.400 --> 0:29:52.640
<v Speaker 1>happened next in just a moment. But first, let's take

0:29:53.040 --> 0:30:02.920
<v Speaker 1>another quick break, all right. I mentioned before the break

0:30:03.000 --> 0:30:04.800
<v Speaker 1>that a big part of this had to do with

0:30:05.000 --> 0:30:08.600
<v Speaker 1>tape files, and we're talking about magnetic tape here, the

0:30:08.640 --> 0:30:12.880
<v Speaker 1>physical medium of storage that we used way back in

0:30:12.920 --> 0:30:16.160
<v Speaker 1>the day to store information. And some of you might

0:30:16.200 --> 0:30:20.240
<v Speaker 1>have even had experiences with magnetic tape, whether I mean

0:30:20.280 --> 0:30:22.600
<v Speaker 1>it could have been cassette tapes. Those are magnetic tape

0:30:22.600 --> 0:30:26.160
<v Speaker 1>as well. Those are used for for audio, but uh,

0:30:26.280 --> 0:30:30.160
<v Speaker 1>some old computers used cassette tapes. Personally, I've had experience

0:30:30.360 --> 0:30:34.360
<v Speaker 1>with magnetic tape because at one point I was working

0:30:34.400 --> 0:30:37.320
<v Speaker 1>with a consulting firm where part of my job involved

0:30:37.720 --> 0:30:41.320
<v Speaker 1>making sure that the company's files went to tape back

0:30:41.400 --> 0:30:43.080
<v Speaker 1>up at the end of each night. So the idea

0:30:43.200 --> 0:30:47.400
<v Speaker 1>was any file that had been changed during that day

0:30:47.640 --> 0:30:51.240
<v Speaker 1>needed to go into a backup, and I regularly would

0:30:51.280 --> 0:30:54.600
<v Speaker 1>have to switch out reels of tape and store the

0:30:54.640 --> 0:30:57.080
<v Speaker 1>older ones away just in case someone needed a version

0:30:57.080 --> 0:30:59.480
<v Speaker 1>of a proposal from you know, I don't know, five

0:30:59.560 --> 0:31:02.880
<v Speaker 1>years a go or something, which, to be fair, did

0:31:02.920 --> 0:31:08.120
<v Speaker 1>occasionally happen. Now. As part of making tape files, administrators

0:31:08.160 --> 0:31:12.080
<v Speaker 1>would assigned to each a file, each file and expiry date,

0:31:12.360 --> 0:31:14.880
<v Speaker 1>so essentially beyond that date, the file would be seen

0:31:14.960 --> 0:31:19.160
<v Speaker 1>as being invalid, something that a system could overwrite without

0:31:19.160 --> 0:31:22.240
<v Speaker 1>an issue because the data in that file is no

0:31:22.240 --> 0:31:26.480
<v Speaker 1>longer relevant and it goes into what was essentially called

0:31:26.480 --> 0:31:29.400
<v Speaker 1>a scratch directory, meaning it's it's ready to be overwritten.

0:31:30.040 --> 0:31:31.840
<v Speaker 1>But this meant that if you were to try and

0:31:31.880 --> 0:31:35.440
<v Speaker 1>insert one of these scratch tapes into a system, rather

0:31:35.520 --> 0:31:38.960
<v Speaker 1>than pulling data off of that tape, the system would

0:31:39.000 --> 0:31:43.040
<v Speaker 1>just overwrite the data on the tape. So anything that

0:31:43.120 --> 0:31:46.320
<v Speaker 1>was on the tape, even if it was valuable and relevant,

0:31:46.720 --> 0:31:49.640
<v Speaker 1>the system would erase because it was beyond that expiry date.

0:31:50.240 --> 0:31:52.200
<v Speaker 1>That was a real issue was that, you know, with

0:31:52.240 --> 0:31:55.760
<v Speaker 1>this two digit format, once you go to zero zero,

0:31:56.520 --> 0:31:58.520
<v Speaker 1>there was a worry that all of this stuff that

0:31:58.560 --> 0:32:01.640
<v Speaker 1>was being stored on magnetic tape would just be marked

0:32:01.760 --> 0:32:04.480
<v Speaker 1>to be erased the next time it was put in use.

0:32:05.080 --> 0:32:07.560
<v Speaker 1>So the time bomb in this case would be the

0:32:07.600 --> 0:32:10.640
<v Speaker 1>tape files that would definitely expire by the beginning of

0:32:10.640 --> 0:32:13.720
<v Speaker 1>two thousand due to that two digit date designation, but

0:32:14.240 --> 0:32:17.720
<v Speaker 1>IBM wasn't too concerned about this at the time because

0:32:17.720 --> 0:32:22.280
<v Speaker 1>there were fourteen years left to go. Complicating matters is

0:32:22.320 --> 0:32:26.959
<v Speaker 1>that these discussions were happening in a pre Worldwide Web environment,

0:32:27.320 --> 0:32:31.120
<v Speaker 1>which meant that the forums for these discussions were typically

0:32:31.360 --> 0:32:35.440
<v Speaker 1>computer magazines, and those, by their very nature have a

0:32:35.480 --> 0:32:39.640
<v Speaker 1>fairly niche and limited audience. That meant that the folks

0:32:39.720 --> 0:32:43.760
<v Speaker 1>having these discussions made up a very tiny sliver of

0:32:43.840 --> 0:32:48.360
<v Speaker 1>the population, and usually it didn't include people who had

0:32:48.440 --> 0:32:53.200
<v Speaker 1>decision making authority at higher levels within various organizations including

0:32:53.640 --> 0:32:56.840
<v Speaker 1>companies and governments. So the folks who really needed to

0:32:56.920 --> 0:32:59.640
<v Speaker 1>know about this, you know, the executives who are in

0:32:59.720 --> 0:33:03.400
<v Speaker 1>charge to big institutions like financial companies or airlines or

0:33:03.400 --> 0:33:07.320
<v Speaker 1>what have you largely remained ignorant of the impending issue

0:33:07.480 --> 0:33:14.760
<v Speaker 1>until it became undeniable and you know, a critical, acute problem.

0:33:14.800 --> 0:33:18.000
<v Speaker 1>So then we get to the early nineteen nineties and

0:33:18.040 --> 0:33:20.760
<v Speaker 1>the birth of the Worldwide Web. That invention would make

0:33:20.800 --> 0:33:24.120
<v Speaker 1>it possible for, you know, to to issue communications on

0:33:24.120 --> 0:33:26.960
<v Speaker 1>a much more broad scale and allow individuals to spread

0:33:26.960 --> 0:33:30.920
<v Speaker 1>the word about things much more effectively. And now stuff

0:33:30.960 --> 0:33:32.880
<v Speaker 1>that might have been buried in a few inches of

0:33:32.880 --> 0:33:35.680
<v Speaker 1>column space in a magazine could get the same spotlight

0:33:35.760 --> 0:33:39.240
<v Speaker 1>as major news. At least in theory, people still needed

0:33:39.280 --> 0:33:42.640
<v Speaker 1>to be able to find that respective web page and

0:33:42.640 --> 0:33:44.480
<v Speaker 1>then read it and all that kind of stuff, but

0:33:44.480 --> 0:33:48.440
<v Speaker 1>the potential to spread information quickly became a really big deal.

0:33:49.680 --> 0:33:55.000
<v Speaker 1>In ninete, Peter di Yeager wrote a couple of articles

0:33:55.160 --> 0:33:58.320
<v Speaker 1>about the rollover problem. The first was in a Canadian

0:33:58.320 --> 0:34:02.719
<v Speaker 1>computer magazine with a relatively small circulation. That article received

0:34:02.720 --> 0:34:06.560
<v Speaker 1>a fairly derisive response from the Globe and Mail, a

0:34:06.720 --> 0:34:10.120
<v Speaker 1>national newspaper in Canada that really downplayed the scope and

0:34:10.200 --> 0:34:14.760
<v Speaker 1>impact of the problem. The second article, published in Computer World,

0:34:15.080 --> 0:34:19.400
<v Speaker 1>had the sensational title Doomsday two thousand, a title that

0:34:19.480 --> 0:34:22.440
<v Speaker 1>Dieger says he did not pitch, but was rather assigned

0:34:22.480 --> 0:34:26.680
<v Speaker 1>by an editor to that piece, and that ended up

0:34:26.719 --> 0:34:30.160
<v Speaker 1>getting a little bit more attention. But even then, even

0:34:30.280 --> 0:34:34.239
<v Speaker 1>people that Dieger was associating with, who were in the

0:34:34.280 --> 0:34:38.839
<v Speaker 1>I T world, even they didn't seem terribly concerned at

0:34:38.880 --> 0:34:41.800
<v Speaker 1>that point. Now, while much of the focus on the

0:34:41.920 --> 0:34:44.680
<v Speaker 1>Y two K problem really centered on the years n

0:34:46.800 --> 0:34:50.480
<v Speaker 1>you know, when it was imminent, that's when organizations and

0:34:50.520 --> 0:34:53.800
<v Speaker 1>companies were feverishly trying to fix their back end systems

0:34:53.800 --> 0:34:57.719
<v Speaker 1>in software to avoid catastrophe. There were earlier cases of

0:34:57.800 --> 0:35:00.480
<v Speaker 1>groups kind of coming to grips with it, just they

0:35:00.480 --> 0:35:04.120
<v Speaker 1>were doing so quietly on an individual basis, which wasn't

0:35:04.160 --> 0:35:09.320
<v Speaker 1>too helpful for everybody else. For example, I mentioned mortgages earlier.

0:35:09.600 --> 0:35:13.120
<v Speaker 1>A common mortgage length is a thirty year mortgage, which

0:35:13.160 --> 0:35:15.840
<v Speaker 1>meant that back in the nineteen seventies, banks and credit

0:35:15.920 --> 0:35:19.320
<v Speaker 1>unions were starting to put together mortgages that would terminate

0:35:19.400 --> 0:35:23.480
<v Speaker 1>in the early two thousands, and these financial institutions discovered

0:35:23.640 --> 0:35:27.520
<v Speaker 1>that the software they were using to determine things like

0:35:27.600 --> 0:35:31.120
<v Speaker 1>mortgage payments and such, we're having problems because of the

0:35:31.239 --> 0:35:36.200
<v Speaker 1>rollover issue. So they were already seeing the effects of

0:35:36.239 --> 0:35:38.760
<v Speaker 1>the Y two K problem back in the nineteen seventies

0:35:38.800 --> 0:35:41.720
<v Speaker 1>because they were projecting out beyond the year two thousand,

0:35:42.040 --> 0:35:44.279
<v Speaker 1>and that's where they were seeing that their software was

0:35:44.280 --> 0:35:48.120
<v Speaker 1>was sputtering. By the nineteen nineties, as I mentioned, we

0:35:48.160 --> 0:35:50.759
<v Speaker 1>started seeing those those credit card examples that I gave

0:35:50.800 --> 0:35:53.600
<v Speaker 1>you earlier. People would get a new credit card in

0:35:53.640 --> 0:35:55.760
<v Speaker 1>the nineties that would have an expiration in the early

0:35:55.800 --> 0:35:59.160
<v Speaker 1>two thousands, and then discovered that the card processing systems

0:35:59.160 --> 0:36:03.480
<v Speaker 1>at various retail establishments were generating a card expired error

0:36:03.600 --> 0:36:06.400
<v Speaker 1>error code even though the actual expiration date was in

0:36:06.440 --> 0:36:09.160
<v Speaker 1>the future, but to the computers that look like it

0:36:09.200 --> 0:36:12.160
<v Speaker 1>was in the distant past. So in these cases, the

0:36:12.360 --> 0:36:16.319
<v Speaker 1>financial institutions like the mortgage companies on one hand, and

0:36:16.360 --> 0:36:20.240
<v Speaker 1>then the retail companies on the other hand, all created

0:36:20.800 --> 0:36:23.840
<v Speaker 1>problem fixes to kind of work around these these problems.

0:36:23.920 --> 0:36:27.920
<v Speaker 1>But these were isolated incidents of companies and organizations taking

0:36:27.920 --> 0:36:32.320
<v Speaker 1>the steps necessary to fix or at least sidestep this problem.

0:36:32.440 --> 0:36:35.720
<v Speaker 1>In the short term, the world at large was still

0:36:35.840 --> 0:36:39.160
<v Speaker 1>under prepared, which is one of the big issues with

0:36:39.160 --> 0:36:41.360
<v Speaker 1>the Y two K problem. It wasn't just that the

0:36:41.360 --> 0:36:45.359
<v Speaker 1>problem was serious, it was that as people were encountering it,

0:36:45.960 --> 0:36:50.719
<v Speaker 1>they were readily sharing that with other companies and other organizations,

0:36:50.760 --> 0:36:53.040
<v Speaker 1>which meant that everyone was having to go through it

0:36:53.200 --> 0:36:55.920
<v Speaker 1>kind of individually, and it was not the most efficient

0:36:55.920 --> 0:36:58.759
<v Speaker 1>way to tackle a problem. So there was the sort

0:36:58.800 --> 0:37:02.600
<v Speaker 1>of hatch work awareness going on. Companies that had any

0:37:02.640 --> 0:37:05.640
<v Speaker 1>sort of programs that would project results into the future

0:37:06.000 --> 0:37:09.040
<v Speaker 1>were likely to run up against the Y two K

0:37:09.239 --> 0:37:12.440
<v Speaker 1>problem at some point. If the company had either a

0:37:12.480 --> 0:37:16.319
<v Speaker 1>product or some internal system that made projections, and if

0:37:16.360 --> 0:37:19.080
<v Speaker 1>that system relied in whole or in part on a

0:37:19.160 --> 0:37:21.839
<v Speaker 1>two digit representation of the year, there was a good

0:37:21.920 --> 0:37:24.960
<v Speaker 1>chance that someone noticed something hinky was going on, that

0:37:25.040 --> 0:37:27.680
<v Speaker 1>programs were not behaving the way they were supposed to.

0:37:28.280 --> 0:37:31.839
<v Speaker 1>But it wasn't until nine in the United States when

0:37:31.880 --> 0:37:36.600
<v Speaker 1>Congress passed the Year two thousand Information and Readiness Disclosure

0:37:36.640 --> 0:37:40.960
<v Speaker 1>Act and President Clinton signed it into law. The law's

0:37:41.000 --> 0:37:43.680
<v Speaker 1>purpose was to encourage companies to share their Y two

0:37:43.760 --> 0:37:48.680
<v Speaker 1>K strategies and in return receive limited liability coverage. The

0:37:48.760 --> 0:37:52.960
<v Speaker 1>hope was that companies that had found successful workarounds could

0:37:53.000 --> 0:37:55.680
<v Speaker 1>share those methods with others and speed up the process

0:37:55.719 --> 0:37:58.240
<v Speaker 1>of getting everyone on the right track. Essentially, to address

0:37:58.320 --> 0:38:01.640
<v Speaker 1>this issue of every on kind of going it alone,

0:38:02.400 --> 0:38:07.640
<v Speaker 1>and they're not being established best practices and workarounds. This

0:38:07.760 --> 0:38:11.320
<v Speaker 1>also included state and federal government offices. These were lagging

0:38:11.560 --> 0:38:14.600
<v Speaker 1>way behind the private sector. There was a survey done

0:38:14.640 --> 0:38:18.080
<v Speaker 1>in ninety eight that showed that the government in the

0:38:18.160 --> 0:38:23.120
<v Speaker 1>United States was far behind the private sector world, you know,

0:38:23.160 --> 0:38:27.040
<v Speaker 1>private companies and publicly traded companies. So out of this

0:38:27.160 --> 0:38:29.759
<v Speaker 1>grew a new industry. You had consultants who would come

0:38:29.760 --> 0:38:32.160
<v Speaker 1>on board to try and bring an organization into Y

0:38:32.239 --> 0:38:35.960
<v Speaker 1>two K compliance, which essentially meant just addressing any gaps

0:38:36.239 --> 0:38:38.920
<v Speaker 1>that would cause the sort of mis interpretation of the

0:38:39.040 --> 0:38:42.640
<v Speaker 1>year on the part of computer systems. The big stop

0:38:42.640 --> 0:38:45.720
<v Speaker 1>gap measure, as I mentioned, was windowing, that is, creating

0:38:45.719 --> 0:38:48.320
<v Speaker 1>a way for a computer system to interpret two digits

0:38:48.440 --> 0:38:51.400
<v Speaker 1>as being four digits. And again I mentioned it earlier

0:38:51.400 --> 0:38:53.439
<v Speaker 1>in this episode, and it works well enough for any

0:38:53.480 --> 0:38:56.799
<v Speaker 1>processes that you know originate in the twentieth century, But

0:38:56.840 --> 0:38:59.200
<v Speaker 1>if you go back further you run into problems as

0:38:59.239 --> 0:39:02.560
<v Speaker 1>the whole thing repeats itself again. But since computers and

0:39:02.560 --> 0:39:07.040
<v Speaker 1>software weren't really a thing back before nineteen six, generally

0:39:07.040 --> 0:39:10.560
<v Speaker 1>it was considered a non issue and an effective stop gap.

0:39:11.200 --> 0:39:15.400
<v Speaker 1>Making these changes proved to be time consuming and expensive.

0:39:15.440 --> 0:39:20.000
<v Speaker 1>The world at large spent hundreds of billions of dollars

0:39:20.040 --> 0:39:23.080
<v Speaker 1>to update code and get things on track for the

0:39:23.160 --> 0:39:27.320
<v Speaker 1>change to two thousand. In that process, the media reported

0:39:27.360 --> 0:39:30.560
<v Speaker 1>on the issue in a way that one could be

0:39:30.640 --> 0:39:35.200
<v Speaker 1>forgiven to describe as hyperbolic. Now, as I've mentioned in

0:39:35.200 --> 0:39:39.120
<v Speaker 1>this episode, there was a very real problem, like a

0:39:39.160 --> 0:39:41.400
<v Speaker 1>host of very real problems that could arise as a

0:39:41.400 --> 0:39:44.560
<v Speaker 1>result of the rollover, and we, in fact we did.

0:39:44.640 --> 0:39:47.520
<v Speaker 1>We saw this happening with mortgages and credit cards, like

0:39:48.120 --> 0:39:51.319
<v Speaker 1>there was definitive proof that this is an issue. The

0:39:51.400 --> 0:39:55.120
<v Speaker 1>problems were not imaginary, and in many cases they were

0:39:55.200 --> 0:39:58.200
<v Speaker 1>not trivial. I've seen some blog posts that have been

0:39:58.200 --> 0:40:00.440
<v Speaker 1>written over the last few years that kind of ridicule

0:40:00.520 --> 0:40:03.000
<v Speaker 1>how people were preparing for Y two K, and it

0:40:03.040 --> 0:40:05.799
<v Speaker 1>trivializes the scope and the reach of the problem, And

0:40:05.840 --> 0:40:09.480
<v Speaker 1>I think that's about as irresponsible as over exaggerating the

0:40:09.560 --> 0:40:14.240
<v Speaker 1>effects of the problem. But anyway, some of the cynical

0:40:14.320 --> 0:40:18.520
<v Speaker 1>response is understandable because media outlets were talking about how

0:40:18.560 --> 0:40:22.520
<v Speaker 1>to stockpile necessities like food and water and toiletries and

0:40:22.640 --> 0:40:26.600
<v Speaker 1>cash just in case the financial systems and payment systems failed,

0:40:26.920 --> 0:40:29.600
<v Speaker 1>and as I mentioned before, we had seen them fail

0:40:29.719 --> 0:40:33.000
<v Speaker 1>in the past. So the idea was that people should

0:40:33.000 --> 0:40:35.360
<v Speaker 1>have a cushion to get them through the worst of

0:40:35.400 --> 0:40:39.280
<v Speaker 1>it and wait for solutions to arise. But some media

0:40:39.280 --> 0:40:41.560
<v Speaker 1>outlets took this to an extreme and it began to

0:40:41.600 --> 0:40:45.759
<v Speaker 1>sound a bit like stockpiling a bunker for protection for

0:40:45.960 --> 0:40:49.200
<v Speaker 1>like nuclear fallout or something, and that the very fabric

0:40:49.239 --> 0:40:51.400
<v Speaker 1>of society would break down and we'd all live in

0:40:51.440 --> 0:40:54.960
<v Speaker 1>the walking debt. There were fears of elevators stopping between

0:40:55.120 --> 0:40:58.720
<v Speaker 1>floors and just not moving again, or climate control systems

0:40:58.760 --> 0:41:02.200
<v Speaker 1>failing entirely. There were fears that airplanes would fall from

0:41:02.239 --> 0:41:06.120
<v Speaker 1>the sky, and most of these fears were well beyond reality,

0:41:06.400 --> 0:41:11.080
<v Speaker 1>but they circulated and they grew. This was the other

0:41:11.320 --> 0:41:15.160
<v Speaker 1>edge of having access to the web. We're coming up

0:41:15.200 --> 0:41:17.480
<v Speaker 1>on the end of this story, but before I get

0:41:17.480 --> 0:41:27.759
<v Speaker 1>to that, let's take one last break. You know, by

0:41:27.880 --> 0:41:31.719
<v Speaker 1>the late nineties, being online was fairly common. You know,

0:41:31.760 --> 0:41:33.360
<v Speaker 1>the World Wide Web was the thing. We had not

0:41:33.480 --> 0:41:36.839
<v Speaker 1>yet had the dot com crash, So the dot com

0:41:36.880 --> 0:41:40.359
<v Speaker 1>world was starting to really take off and information could

0:41:40.440 --> 0:41:43.920
<v Speaker 1>spread very quickly, and a lot of the information was

0:41:43.960 --> 0:41:47.719
<v Speaker 1>about y two K. I still remember New Year's Eve.

0:41:49.800 --> 0:41:53.520
<v Speaker 1>My spouse and I went to a club with some friends.

0:41:54.200 --> 0:41:58.000
<v Speaker 1>It was a ridiculous end of the year slash potential

0:41:58.200 --> 0:42:02.720
<v Speaker 1>end of the world celebration. Uh. They played Prince's nineteen

0:42:02.800 --> 0:42:05.600
<v Speaker 1>nine way too many times. In fact, I would argue

0:42:06.040 --> 0:42:08.760
<v Speaker 1>that although that song is amazing and I love it,

0:42:08.760 --> 0:42:12.480
<v Speaker 1>it makes no sense to play it during because you're

0:42:12.480 --> 0:42:16.960
<v Speaker 1>supposed to party like it's nine. Anyway, we counted down

0:42:17.040 --> 0:42:20.320
<v Speaker 1>the year, I think three times because no one actually

0:42:20.360 --> 0:42:24.320
<v Speaker 1>had access to an accurate time countdown. That seems pretty

0:42:24.360 --> 0:42:27.799
<v Speaker 1>appropriate for y two K. And in the end, once

0:42:27.800 --> 0:42:32.680
<v Speaker 1>everything was over, it was peaceful. Nothing catastrophic happened, and

0:42:33.160 --> 0:42:35.680
<v Speaker 1>the next day we went home, and over the course

0:42:35.719 --> 0:42:39.040
<v Speaker 1>of the following month we saw an outpouring of frustration

0:42:39.239 --> 0:42:44.680
<v Speaker 1>and exasperation and ridicule. Rather than a sense of relief that,

0:42:44.760 --> 0:42:47.319
<v Speaker 1>you know, the various computer programmers out there had spent

0:42:47.440 --> 0:42:50.960
<v Speaker 1>countless hours creating stop gap solutions to get us through

0:42:50.960 --> 0:42:54.440
<v Speaker 1>the transition, we saw people get upset about it, and

0:42:54.480 --> 0:42:57.760
<v Speaker 1>the prevailing sense was that it was much ado about nothing.

0:42:57.960 --> 0:43:00.879
<v Speaker 1>That those billions of dollar or is that we spent

0:43:01.520 --> 0:43:05.080
<v Speaker 1>were spent on a non problem, and that seems pretty

0:43:05.080 --> 0:43:08.239
<v Speaker 1>weird to me. I mean, the reason there weren't that

0:43:08.360 --> 0:43:12.200
<v Speaker 1>many problems here in the United States is precisely because

0:43:13.120 --> 0:43:15.719
<v Speaker 1>that sort of money had been spent on the solutions.

0:43:16.120 --> 0:43:19.520
<v Speaker 1>The solutions prevented the problems from happening. That was the

0:43:19.520 --> 0:43:23.200
<v Speaker 1>whole point. So I'm gonna use a dom analogy. Let's

0:43:23.239 --> 0:43:26.080
<v Speaker 1>say I got a big, old farm and I happened

0:43:26.120 --> 0:43:30.360
<v Speaker 1>to see reports that there's this unusual migration of deer

0:43:30.680 --> 0:43:33.120
<v Speaker 1>moving across the region, and that within a couple of

0:43:33.120 --> 0:43:35.840
<v Speaker 1>weeks they're gonna be where I am, and those deer

0:43:35.960 --> 0:43:39.279
<v Speaker 1>could spell doom for my harvest. So I decided, I'm

0:43:39.280 --> 0:43:41.080
<v Speaker 1>going to spend a large amount of money, and I'm

0:43:41.080 --> 0:43:44.279
<v Speaker 1>gonna get a bunch of construction workers out there, and

0:43:44.280 --> 0:43:47.759
<v Speaker 1>we're gonna put a deer proof wall around my farm.

0:43:47.880 --> 0:43:49.520
<v Speaker 1>And so I spend all this money, we get the

0:43:49.520 --> 0:43:53.320
<v Speaker 1>wall up, and then the day comes when the migration

0:43:53.360 --> 0:43:54.920
<v Speaker 1>is supposed to be in my area, and I go

0:43:55.000 --> 0:43:57.960
<v Speaker 1>outside and I look at my farm inside these walls,

0:43:58.000 --> 0:44:00.080
<v Speaker 1>and there are no deer in the farm. I'm not

0:44:00.120 --> 0:44:03.200
<v Speaker 1>gonna say, man, I wasted that money. I'm gonna say, hey,

0:44:03.320 --> 0:44:08.720
<v Speaker 1>the wall worked well. Our y two K wall worked mostly.

0:44:09.320 --> 0:44:11.640
<v Speaker 1>There were some scattered issues with systems that had not

0:44:11.760 --> 0:44:14.719
<v Speaker 1>yet become Y two K compliant, but they were the

0:44:14.840 --> 0:44:17.800
<v Speaker 1>exception rather than the rule, at least here in the

0:44:17.880 --> 0:44:20.800
<v Speaker 1>United States. In other parts of the world there were more,

0:44:21.520 --> 0:44:25.120
<v Speaker 1>you know, prevalent issues. For example, there were places in

0:44:25.160 --> 0:44:29.360
<v Speaker 1>the UK that had trouble processing card transactions for the

0:44:29.440 --> 0:44:32.719
<v Speaker 1>very reasons that I mentioned earlier in this podcast. Not

0:44:32.760 --> 0:44:35.840
<v Speaker 1>only that, but we actually saw another outbreak of Y

0:44:35.880 --> 0:44:40.879
<v Speaker 1>two K problems just last year in twenty This comes

0:44:40.920 --> 0:44:46.400
<v Speaker 1>back to win doing so addressing Y two K problems,

0:44:46.440 --> 0:44:51.880
<v Speaker 1>you you broadly had two major solutions. You could go

0:44:51.960 --> 0:44:58.200
<v Speaker 1>in and actually reprogrammed stuff, but that was incredibly time

0:44:58.239 --> 0:45:03.279
<v Speaker 1>consuming and expensive, and for certain legacy systems it was

0:45:03.320 --> 0:45:06.759
<v Speaker 1>not practical because you still had those memory limitations in

0:45:06.800 --> 0:45:10.000
<v Speaker 1>place for some of those legacy systems and you literally

0:45:10.120 --> 0:45:14.600
<v Speaker 1>couldn't make those changes. Windowing was seen as a stop gap,

0:45:14.760 --> 0:45:16.480
<v Speaker 1>the idea of being that, well, we're going to have

0:45:16.520 --> 0:45:19.640
<v Speaker 1>to migrate stuff off of those legacy systems onto more

0:45:19.719 --> 0:45:24.200
<v Speaker 1>modern systems that can have a four digit year, but

0:45:24.280 --> 0:45:29.080
<v Speaker 1>in the meantime, let's use windowing. So again, windowing is

0:45:29.239 --> 0:45:34.080
<v Speaker 1>about picking a two digit year and saying anything above

0:45:34.160 --> 0:45:38.560
<v Speaker 1>this number should fall into the nineteen hundreds. Anything below

0:45:38.600 --> 0:45:40.960
<v Speaker 1>this number is in the two thousand's. So again, if

0:45:40.960 --> 0:45:43.719
<v Speaker 1>you pick fifty, as I mentioned earlier, sixty six would

0:45:43.760 --> 0:45:46.680
<v Speaker 1>mean oh, well that's above fifty, so it's nineteen sixty six.

0:45:46.960 --> 0:45:50.400
<v Speaker 1>But twenty two would be interpreted as, oh, that's below fifty,

0:45:50.480 --> 0:45:54.120
<v Speaker 1>that means two thousand twenty two. That works for a while,

0:45:54.680 --> 0:45:57.440
<v Speaker 1>and a lot of programmers who put in a windowing

0:45:57.520 --> 0:46:01.960
<v Speaker 1>stop gap happened to choose twin t as the dividing line,

0:46:02.239 --> 0:46:05.760
<v Speaker 1>perhaps because this put nineteen seventy in a prominent spot

0:46:05.840 --> 0:46:09.240
<v Speaker 1>near the middle. Nineteen seventy also relates to a similar

0:46:09.280 --> 0:46:12.759
<v Speaker 1>issue called UNIX time, which I will talk about at

0:46:12.800 --> 0:46:16.160
<v Speaker 1>the very end of this episode. So when it was

0:46:16.200 --> 0:46:20.920
<v Speaker 1>two thousand to two thousand nineteen, everything was fine because

0:46:20.920 --> 0:46:24.719
<v Speaker 1>that windowing stop gap meant that computers were interpreting the

0:46:24.800 --> 0:46:28.239
<v Speaker 1>year's zero zero to nineteen as being two thousand to

0:46:28.280 --> 0:46:31.279
<v Speaker 1>two thousand nineteen. But then we hit twenty twenty, and

0:46:31.360 --> 0:46:34.320
<v Speaker 1>now the computers were saying, oh, we're back in nineteen

0:46:34.320 --> 0:46:36.680
<v Speaker 1>twenty now, because that was the number that was chosen

0:46:36.680 --> 0:46:39.800
<v Speaker 1>by these programmers and the windowing stop gap and systems

0:46:39.840 --> 0:46:44.000
<v Speaker 1>began to experience problems. This, by the way, really illustrates

0:46:44.200 --> 0:46:47.680
<v Speaker 1>two big things. One is that windowing was really just

0:46:47.960 --> 0:46:50.640
<v Speaker 1>man as a temporary patch. It was not a long

0:46:50.760 --> 0:46:53.719
<v Speaker 1>term solution. The second is that we didn't learn a

0:46:53.800 --> 0:46:56.920
<v Speaker 1>ding dang darn thing from the Y two K experience,

0:46:56.960 --> 0:47:00.520
<v Speaker 1>because it's just the same gosh darn problem as why

0:47:00.600 --> 0:47:04.320
<v Speaker 1>two K. All we did was punted down twenty years

0:47:04.480 --> 0:47:06.880
<v Speaker 1>and then didn't do anything to prep prep for that,

0:47:06.960 --> 0:47:09.760
<v Speaker 1>and so we had the problems again. Also, here's here's

0:47:09.760 --> 0:47:12.719
<v Speaker 1>a fun bit. One of the pieces of software that

0:47:12.800 --> 0:47:16.759
<v Speaker 1>was affected by this, fittingly enough, was w W E

0:47:17.000 --> 0:47:21.359
<v Speaker 1>two K twenty, a wrestling video game, which had more

0:47:21.400 --> 0:47:23.640
<v Speaker 1>than its share of problems. In fact, I could probably

0:47:23.680 --> 0:47:28.600
<v Speaker 1>do a full episode about the incredible train wreck that

0:47:28.719 --> 0:47:32.040
<v Speaker 1>was w W E two K twenty, but I will

0:47:32.120 --> 0:47:34.560
<v Speaker 1>leave it here anyway, The company that made it, too

0:47:34.680 --> 0:47:39.319
<v Speaker 1>K eventually issued a patch that fixed things for as

0:47:39.360 --> 0:47:41.920
<v Speaker 1>far as that goes. Anyway, There are other problems, but

0:47:42.520 --> 0:47:46.840
<v Speaker 1>again we'll leave that for a future episode. Now, I

0:47:46.880 --> 0:47:50.040
<v Speaker 1>did mention just now that Unix time relates to nineteen seventy,

0:47:50.160 --> 0:47:54.320
<v Speaker 1>so the Unix time stamp uses a thirty two bit integer,

0:47:54.719 --> 0:47:58.200
<v Speaker 1>and it traces the origin of time to January one,

0:47:58.480 --> 0:48:03.200
<v Speaker 1>nineteen seventy at zero hours, zero minutes, and zero seconds.

0:48:03.200 --> 0:48:08.400
<v Speaker 1>That is when time began according to Unix. But because

0:48:08.680 --> 0:48:12.360
<v Speaker 1>it's using a thirty two bit integer to mark the

0:48:12.400 --> 0:48:15.239
<v Speaker 1>passage of time, and because it's marketing it all the

0:48:15.239 --> 0:48:19.200
<v Speaker 1>way down to the second, that means there's a limit

0:48:19.239 --> 0:48:21.920
<v Speaker 1>to how far this process of timekeeping can actually go.

0:48:22.440 --> 0:48:26.440
<v Speaker 1>And we'll hit that limit on January nine, two thousand

0:48:26.480 --> 0:48:33.239
<v Speaker 1>thirty eight, at oh three hours, fourteen minutes, oh seven seconds.

0:48:33.840 --> 0:48:37.040
<v Speaker 1>At that point, we will have run out of space

0:48:37.040 --> 0:48:41.359
<v Speaker 1>in that thirty two bit integer designation for time, and

0:48:41.400 --> 0:48:44.480
<v Speaker 1>then all future time stamps will appear as if they

0:48:44.520 --> 0:48:48.239
<v Speaker 1>are a negative number because of integer overflow, which will

0:48:48.280 --> 0:48:52.239
<v Speaker 1>put the time back to nineteen o one. And you know,

0:48:52.480 --> 0:48:55.120
<v Speaker 1>just in case you thought travel to the past was impossible,

0:48:55.320 --> 0:48:58.840
<v Speaker 1>according to computers, it's only not possible at least for

0:48:58.920 --> 0:49:04.040
<v Speaker 1>timekeeping purposes, and everything that is using a Unix based

0:49:04.160 --> 0:49:07.080
<v Speaker 1>system will be treating the year as if it's nineteen

0:49:07.080 --> 0:49:11.640
<v Speaker 1>o one at that point forward. So for Unix based systems,

0:49:11.680 --> 0:49:14.640
<v Speaker 1>that means that we have an ongoing issue. There have

0:49:14.760 --> 0:49:17.200
<v Speaker 1>been some proposed solutions, but they tend to be on

0:49:17.239 --> 0:49:20.719
<v Speaker 1>a case by case basis, not too different from the

0:49:20.760 --> 0:49:25.200
<v Speaker 1>early days of the Y two K problem and UH,

0:49:25.280 --> 0:49:28.120
<v Speaker 1>if recent past is anything to go by, we can

0:49:28.160 --> 0:49:31.040
<v Speaker 1>expect to see some stop gap solutions thrown in there

0:49:31.400 --> 0:49:34.000
<v Speaker 1>that don't really fix anything, but they do push the

0:49:34.040 --> 0:49:38.279
<v Speaker 1>problem further into the future because we're really good at that. UM.

0:49:38.320 --> 0:49:42.600
<v Speaker 1>It's unfortunate because with a little work, well not a

0:49:42.640 --> 0:49:45.680
<v Speaker 1>little work, with a lot of work, we can avoid

0:49:45.680 --> 0:49:50.000
<v Speaker 1>the issue and not have to do triage every few

0:49:50.040 --> 0:49:54.320
<v Speaker 1>decades to correct the issue we have of not creating

0:49:54.520 --> 0:49:58.680
<v Speaker 1>a permanent solution UH and replacing a stop gap and

0:49:58.719 --> 0:50:02.080
<v Speaker 1>instead our habit is to go with the stop gap

0:50:02.120 --> 0:50:06.280
<v Speaker 1>approach because it's faster to implement, it's cheaper to implement,

0:50:06.960 --> 0:50:11.240
<v Speaker 1>and we just collectively think that's a future me problem.

0:50:11.280 --> 0:50:13.359
<v Speaker 1>And I'm as guilty of doing this kind of thing

0:50:13.360 --> 0:50:15.799
<v Speaker 1>as anybody else's. In fact, I would argue I'm even

0:50:15.800 --> 0:50:17.640
<v Speaker 1>more guilty of it. So I'm casting a lot of

0:50:17.640 --> 0:50:20.000
<v Speaker 1>shade here, But someone that's got to hit on me.

0:50:20.080 --> 0:50:23.080
<v Speaker 1>Even though I'm not a programmer, I've definitely fallen into

0:50:23.120 --> 0:50:26.040
<v Speaker 1>that same sort of trap. But I hope this gives

0:50:26.080 --> 0:50:29.279
<v Speaker 1>you a better appreciation of what the Y two K

0:50:29.520 --> 0:50:33.919
<v Speaker 1>problem was and is, and why it's such a big

0:50:33.960 --> 0:50:37.920
<v Speaker 1>deal and why like people were flipping out about it. Uh,

0:50:37.960 --> 0:50:40.160
<v Speaker 1>And yeah, it can be kind of funny to see

0:50:40.200 --> 0:50:42.919
<v Speaker 1>the extent to which some people were flipping out about

0:50:42.960 --> 0:50:45.120
<v Speaker 1>it and worried that it was going to just bring

0:50:45.120 --> 0:50:48.160
<v Speaker 1>about the end of civilization. But you can also understand

0:50:48.320 --> 0:50:52.919
<v Speaker 1>for a society that had in recent memory ported over

0:50:53.000 --> 0:50:58.280
<v Speaker 1>all of its most essential operations onto digital computer systems,

0:50:58.560 --> 0:51:01.040
<v Speaker 1>how a failure in that system could be seen as

0:51:01.040 --> 0:51:04.640
<v Speaker 1>being beaten times. I mean that parts understandable, right, especially

0:51:04.640 --> 0:51:08.479
<v Speaker 1>if you don't have a deep knowledge of how computers work.

0:51:08.960 --> 0:51:10.600
<v Speaker 1>To you, it could just be a mystery and it

0:51:10.680 --> 0:51:13.879
<v Speaker 1>just means that all your stuff stops working the next day.

0:51:14.160 --> 0:51:18.160
<v Speaker 1>That's a pretty terrifying prospect. As we know, it wasn't

0:51:18.160 --> 0:51:21.520
<v Speaker 1>necessarily accurate, but that doesn't mean the Y two K

0:51:21.680 --> 0:51:26.240
<v Speaker 1>problem was not a problem. It certainly was. I hope

0:51:26.280 --> 0:51:28.960
<v Speaker 1>that you enjoyed this episode. Will be back later this

0:51:29.040 --> 0:51:33.600
<v Speaker 1>week with some tech news and a new Smart Talks episode,

0:51:34.080 --> 0:51:36.720
<v Speaker 1>and if you have any suggestions for topics I should

0:51:36.719 --> 0:51:39.200
<v Speaker 1>cover in future episodes of tech Stuff, reach out to

0:51:39.280 --> 0:51:41.960
<v Speaker 1>me on Twitter. The handle for the show is tech

0:51:42.120 --> 0:51:45.240
<v Speaker 1>Stuff h s W and I'll talk to you again

0:51:46.160 --> 0:51:54.840
<v Speaker 1>really soon. Tech Stuff is an I Heart Radio production.

0:51:55.040 --> 0:51:57.880
<v Speaker 1>For more podcasts from My Heart Radio, visit the i

0:51:58.000 --> 0:52:01.440
<v Speaker 1>Heart Radio app, Apple podcast wherever you listen to your

0:52:01.480 --> 0:52:02.200
<v Speaker 1>favorite shows.