1 00:00:17,160 --> 00:00:18,060 JULIAN SIMIONI: All right. Everyone can hear me well now? 2 00:00:18,060 --> 00:00:19,279 They've turned it off. Everything's good. 3 00:00:19,279 --> 00:00:21,750 All right. It says 3:50 on the little clock 4 00:00:21,750 --> 00:00:23,240 here which means it's time for me to go. 5 00:00:23,240 --> 00:00:26,610 So, hi everyone. I'm Julian. This is my first 6 00:00:26,610 --> 00:00:29,990 RailsConf. It's great to be here. We are not 7 00:00:29,990 --> 00:00:31,500 gonna talk about Rails at all. We're gonna talk 8 00:00:31,500 --> 00:00:34,720 about space. This is one of my favorite pictures 9 00:00:34,720 --> 00:00:36,800 ever, right. It's the, the Earth rise picture from 10 00:00:36,800 --> 00:00:39,920 Apollo 8. 11 00:00:39,920 --> 00:00:43,370 And my whole life, I've just loved space. From 12 00:00:43,370 --> 00:00:44,690 when I was a little kid, it just inspired 13 00:00:44,690 --> 00:00:46,860 me so much. I know it inspires tons of 14 00:00:46,860 --> 00:00:48,580 other people. I know, I got into a technical 15 00:00:48,580 --> 00:00:51,180 field because, as a kid, I loved space. Raise 16 00:00:51,180 --> 00:00:52,969 your hand if you think it's the same thing 17 00:00:52,969 --> 00:00:55,250 for you. I know I've talked to so many 18 00:00:55,250 --> 00:00:56,809 people where that's the case. Awesome. 19 00:00:56,809 --> 00:00:59,719 And I mean, just, space is really cool, right. 20 00:00:59,719 --> 00:01:03,430 There is, just, you know, everything about astronomy or 21 00:01:03,430 --> 00:01:07,280 manned space explorations is just really, really awesome and 22 00:01:07,280 --> 00:01:12,009 inspiring. And there's one thing, above all else, that 23 00:01:12,009 --> 00:01:14,759 inspires people just so much, and that, of course, 24 00:01:14,759 --> 00:01:17,869 is the Apollo program. 25 00:01:17,869 --> 00:01:20,950 Landing on the moon is, maybe, the greatest thing 26 00:01:20,950 --> 00:01:24,970 that humans have ever done. And, and, you know, 27 00:01:24,970 --> 00:01:27,080 people will talk about awesome rockets, right. Like, the 28 00:01:27,080 --> 00:01:30,300 Saturn 5. It generates seven and a half million 29 00:01:30,300 --> 00:01:33,530 pounds of thrust on takeoff. That's. That's a lot. 30 00:01:33,530 --> 00:01:36,830 Or they'll talk about, you know, astronauts who, who 31 00:01:36,830 --> 00:01:39,830 trained for years, and, you know, were brave and 32 00:01:39,830 --> 00:01:41,700 took insane risks that, you know, most of us 33 00:01:41,700 --> 00:01:44,929 can't even comprehend. Or they'll talk about mathematicians and 34 00:01:44,929 --> 00:01:47,530 awesome things they did for, like, the guidance equations 35 00:01:47,530 --> 00:01:49,020 and stuff to get people to the moon safely 36 00:01:49,020 --> 00:01:49,950 and back. 37 00:01:49,950 --> 00:01:53,270 And then they'll say things, like, oh, yeah, we, 38 00:01:53,270 --> 00:01:55,080 we landed on the moon with, you know, less 39 00:01:55,080 --> 00:01:58,429 computing power in a wrist watch, or something. And 40 00:01:58,429 --> 00:02:01,330 as a software developer, you know, that makes me 41 00:02:01,330 --> 00:02:03,270 sad. You know, for a long time, I didn't 42 00:02:03,270 --> 00:02:05,050 really think that there was anything in the Apollo 43 00:02:05,050 --> 00:02:09,610 program to inspire us software developers. And, fortunately, it 44 00:02:09,610 --> 00:02:11,880 turns out, that is not at all the case. 45 00:02:11,880 --> 00:02:15,470 So this is the Apollo guidance computer. To give 46 00:02:15,470 --> 00:02:17,950 you a sense of the scale, the little display 47 00:02:17,950 --> 00:02:19,040 is, like, a little bit bigger than your hand. 48 00:02:19,040 --> 00:02:21,860 I think it's like, nine by nine inches. So 49 00:02:21,860 --> 00:02:23,360 this thing was built to take people to the 50 00:02:23,360 --> 00:02:29,590 moon. And it is awesome in ways you might 51 00:02:29,590 --> 00:02:29,870 not expect. 52 00:02:29,870 --> 00:02:33,320 So it only had two kilobytes of RAM, I 53 00:02:33,320 --> 00:02:36,370 think. Not very much. It was really, really, really 54 00:02:36,370 --> 00:02:41,810 slow. I did some back-of-the-envelope calculations, and it turns 55 00:02:41,810 --> 00:02:45,340 out all of the computation done on all of 56 00:02:45,340 --> 00:02:47,840 the Apollo missions, ever, could be done by my 57 00:02:47,840 --> 00:02:53,260 little laptop over there in under a second. 58 00:02:53,260 --> 00:02:57,360 But, my laptop may or may not make it 59 00:02:57,360 --> 00:03:02,760 through this talk. The Apollo guidance computer never hit 60 00:03:02,760 --> 00:03:06,230 an unknown bug, in thousands of hours of time 61 00:03:06,230 --> 00:03:08,770 in space. It never failed, despite the fact that 62 00:03:08,770 --> 00:03:15,760 space is pretty hostile, right. There's, there's like gamma 63 00:03:15,760 --> 00:03:19,430 rays. Anything metallic that floats around will, will find 64 00:03:19,430 --> 00:03:21,060 the one place where it can short things out 65 00:03:21,060 --> 00:03:24,840 and, and cause lots of problems. 66 00:03:24,840 --> 00:03:26,540 And so this thing is pretty amazing. It worked 67 00:03:26,540 --> 00:03:29,860 really, really well. But what's even more amazing is 68 00:03:29,860 --> 00:03:32,510 that it was built at a time when we 69 00:03:32,510 --> 00:03:36,860 didn't know much about making software. They started working 70 00:03:36,860 --> 00:03:41,030 on it in 1961. And they finished in 1968. 71 00:03:41,030 --> 00:03:46,980 So to put that into perspective, in 1965, the 72 00:03:46,980 --> 00:03:50,819 MIT instrumentation lab, that's the department of MIT that 73 00:03:50,819 --> 00:03:53,860 was building this thing, they got this new computer. 74 00:03:53,860 --> 00:03:56,410 It's called an IBM system 360. Anyone heard of 75 00:03:56,410 --> 00:03:59,709 that before? It's one of the more famous computers 76 00:03:59,709 --> 00:04:01,170 in the history of computing. 77 00:04:01,170 --> 00:04:03,810 So there's one particularly famous person that worked on 78 00:04:03,810 --> 00:04:05,810 it. And anyone know who I'm talking about? Anyone 79 00:04:05,810 --> 00:04:08,750 have an idea? Come on, you all know. Fred 80 00:04:08,750 --> 00:04:11,140 Brooks, right. And he, he wrote this book. What 81 00:04:11,140 --> 00:04:14,660 was the book called? Anyone? The Mythical Man Month. 82 00:04:14,660 --> 00:04:17,720 Yeah. So when did he write that book? Not 83 00:04:17,720 --> 00:04:20,630 until 1975. And by then, you know, we had 84 00:04:20,630 --> 00:04:24,470 been gone from the moon for many, many years. 85 00:04:24,470 --> 00:04:27,240 So think about what that means, right. The, the 86 00:04:27,240 --> 00:04:31,289 software developers writing code for the Apollo Guidance Computer 87 00:04:31,289 --> 00:04:34,600 were learning the same things as Fred Brooks at 88 00:04:34,600 --> 00:04:37,150 the same time, right. So if you're a manager 89 00:04:37,150 --> 00:04:39,000 at a, you know, you have some software developers 90 00:04:39,000 --> 00:04:40,210 working under you, and your boss comes to you 91 00:04:40,210 --> 00:04:42,160 and says hey, you know, your projects a little 92 00:04:42,160 --> 00:04:45,020 bit late. I'm gonna, you know, give you some 93 00:04:45,020 --> 00:04:48,990 more developers to hopefully speed it up, you say, 94 00:04:48,990 --> 00:04:52,160 OK. Whereas today you might say, no. Read The 95 00:04:52,160 --> 00:04:55,000 Mythical Man Month, and you know that that won't 96 00:04:55,000 --> 00:04:55,700 work. 97 00:04:55,700 --> 00:05:00,690 So, another thing. The word software was first used 98 00:05:00,690 --> 00:05:03,850 in 1950. It was used in, like, a research 99 00:05:03,850 --> 00:05:09,220 paper. And there's some back story here. It's pretty 100 00:05:09,220 --> 00:05:11,180 important. We're gonna do a little aside. 101 00:05:11,180 --> 00:05:15,460 So, the first computers in, in the, you know, 102 00:05:15,460 --> 00:05:19,790 20s, 30s, 40s. They were built by men. Like, 103 00:05:19,790 --> 00:05:25,060 predominantly, overwhelmingly men. And, and they would build these 104 00:05:25,060 --> 00:05:28,470 computers, and the computers did one thing, right. You 105 00:05:28,470 --> 00:05:31,710 would build a computer to, you know, calculate the 106 00:05:31,710 --> 00:05:33,490 Fibonacci sequence or something, and if you wanted a 107 00:05:33,490 --> 00:05:37,210 computer to, to calculate prime numbers, like, you built 108 00:05:37,210 --> 00:05:39,240 another computer, or you took the computer you had 109 00:05:39,240 --> 00:05:42,560 and, and modified it really heavily, right. And over 110 00:05:42,560 --> 00:05:44,900 time, you know, computers got a little bit better 111 00:05:44,900 --> 00:05:46,650 and, and then they could sort of be configured, 112 00:05:46,650 --> 00:05:49,270 right. They could, you could like, flip some switches 113 00:05:49,270 --> 00:05:50,930 and set some bits and then the computers would 114 00:05:50,930 --> 00:05:56,120 do different things and, and, and the men building 115 00:05:56,120 --> 00:05:58,130 these computers that, they hated this task, right. They 116 00:05:58,130 --> 00:06:01,840 thought it was boring and that it was easy 117 00:06:01,840 --> 00:06:04,060 and that it wasn't very interesting at all. So 118 00:06:04,060 --> 00:06:07,169 they hired a bunch of women to do all 119 00:06:07,169 --> 00:06:10,430 these things, right. And only later, like, as time 120 00:06:10,430 --> 00:06:13,210 goes on, did they figure out that, that this 121 00:06:13,210 --> 00:06:17,050 task of configuring the computer that, that the men 122 00:06:17,050 --> 00:06:19,389 had built was actually the entire field of software 123 00:06:19,389 --> 00:06:23,410 development, and that it was actually really, really hard 124 00:06:23,410 --> 00:06:26,949 and challenging and it was a field onto itself. 125 00:06:26,949 --> 00:06:29,790 And only then did, did men start coming in 126 00:06:29,790 --> 00:06:33,710 and start saying, hey, I would like to do 127 00:06:33,710 --> 00:06:36,500 this. During the Apollo program, one of the managers 128 00:06:36,500 --> 00:06:40,790 of, of one of the software teams, when he 129 00:06:40,790 --> 00:06:44,020 was assigned to that team, his wife was told 130 00:06:44,020 --> 00:06:45,960 by him, hey, honey, don't tell any of our 131 00:06:45,960 --> 00:06:48,070 friends that I manage a software team. Cause it 132 00:06:48,070 --> 00:06:51,220 wasn't, it wasn't cool for a guy to write 133 00:06:51,220 --> 00:06:54,080 software, yet, in the, in the 60s. It was, 134 00:06:54,080 --> 00:06:55,030 it was getting there. 135 00:06:55,030 --> 00:06:59,100 So, it's kind of interesting, right. So here's my 136 00:06:59,100 --> 00:07:02,180 takeaway from that. If you're a woman and you're 137 00:07:02,180 --> 00:07:05,590 writing some software, and you're maybe thinking, hey, you 138 00:07:05,590 --> 00:07:07,259 know, maybe I'm not cut out for this or, 139 00:07:07,259 --> 00:07:08,900 or some other people are saying things that say 140 00:07:08,900 --> 00:07:11,500 that I shouldn't be here. Don't listen to them. 141 00:07:11,500 --> 00:07:15,570 That's bull shit. You're grandma was writing code. And, 142 00:07:15,570 --> 00:07:17,400 and she did a damn fine job. So don't 143 00:07:17,400 --> 00:07:17,840 worry about that. 144 00:07:17,840 --> 00:07:19,930 And if you're a guy, a man, or woman 145 00:07:19,930 --> 00:07:22,710 I guess, and you're thinking or saying or writing 146 00:07:22,710 --> 00:07:25,900 things like, you know, women shouldn't be here. They're 147 00:07:25,900 --> 00:07:29,030 not as good at writing code as men. Stop. 148 00:07:29,030 --> 00:07:31,600 Stop saying those things. That is all bull shit. 149 00:07:31,600 --> 00:07:34,840 It, that does not stand up to the history 150 00:07:34,840 --> 00:07:38,150 of computing. So. Just a little aside there. 151 00:07:38,150 --> 00:07:42,110 Anyways, OK. We're talking about the Apollo Guidance Computer, 152 00:07:42,110 --> 00:07:45,979 and things that people learned from that. So, what, 153 00:07:45,979 --> 00:07:48,690 let me ask you guys a question. How many 154 00:07:48,690 --> 00:07:51,750 of you have built some sort of web app, 155 00:07:51,750 --> 00:07:54,900 maybe a Rails app or something, and you depend 156 00:07:54,900 --> 00:07:58,199 on someone else to service. Right, an API or 157 00:07:58,199 --> 00:07:59,780 something like that. Someone, something that another team at 158 00:07:59,780 --> 00:08:01,400 your company built or something external, right. And what 159 00:08:01,400 --> 00:08:03,620 happened to your site the first time that thing 160 00:08:03,620 --> 00:08:08,949 went down? Yeah, I heard a very sad noise 161 00:08:08,949 --> 00:08:10,590 of something breaking. 162 00:08:10,590 --> 00:08:13,130 Yeah. Exactly. Your pager goes off. Although maybe in 163 00:08:13,130 --> 00:08:16,509 the 60s, I don't think they even had pagers. 164 00:08:16,509 --> 00:08:19,389 So what did you do after awhile, right? You, 165 00:08:19,389 --> 00:08:22,009 you, the first time you fixed that one thing, 166 00:08:22,009 --> 00:08:23,949 right, you fixed it so that that particular thing 167 00:08:23,949 --> 00:08:28,280 happens again, you know, it'll be OK. And then 168 00:08:28,280 --> 00:08:30,740 something else happens and something else happens, and hopefully 169 00:08:30,740 --> 00:08:36,589 after awhile you, your, your system is smart enough 170 00:08:36,589 --> 00:08:40,429 that anything that this, this other system throws at 171 00:08:40,429 --> 00:08:44,430 you, something you've never even seen before, you know, 172 00:08:44,430 --> 00:08:48,860 it doesn't matter. You'll keep running just fine. 173 00:08:48,860 --> 00:08:51,379 And so the same thing happened during the Apollo 174 00:08:51,379 --> 00:08:54,869 11 landing. So this is the Lunar module. So, 175 00:08:54,869 --> 00:08:57,769 so picture, this is the most critical moment of 176 00:08:57,769 --> 00:08:59,970 the entire Apollo space program, right. Neil Armstrong and 177 00:08:59,970 --> 00:09:02,449 Buzz Aldrin are, are in this little thing. They're 178 00:09:02,449 --> 00:09:05,589 heading down towards the surface of the moon. And 179 00:09:05,589 --> 00:09:07,059 this, the last ten minutes of this are by 180 00:09:07,059 --> 00:09:11,829 far the most, absolutely the most critical and, and 181 00:09:11,829 --> 00:09:14,759 high intensity part of the entire, of the entire 182 00:09:14,759 --> 00:09:15,649 mission. 183 00:09:15,649 --> 00:09:18,769 Neil Armstrong said that those last couple of minutes, 184 00:09:18,769 --> 00:09:20,879 on a difficulty scale of one to ten were 185 00:09:20,879 --> 00:09:22,740 a thirteen, right. And he's, he's a pretty good 186 00:09:22,740 --> 00:09:24,970 pilot. So that means a lot. 187 00:09:24,970 --> 00:09:28,230 So, so, so they're cruising down towards, towards the 188 00:09:28,230 --> 00:09:31,279 surface. They're, they're busy. They're in the zone. All 189 00:09:31,279 --> 00:09:33,740 of the sudden, on their dashboard, you know, a 190 00:09:33,740 --> 00:09:37,079 big light comes on. The master alarm. Everything is 191 00:09:37,079 --> 00:09:40,670 wrong. And their computer is, is giving them this 192 00:09:40,670 --> 00:09:42,579 error, this, like, twelve-oh-one error. 193 00:09:42,579 --> 00:09:45,459 And, you know, the astronauts are distracted and mission 194 00:09:45,459 --> 00:09:47,339 control, they're freaking out. They're trying to figure out 195 00:09:47,339 --> 00:09:50,679 what this is. You know, what does this mean? 196 00:09:50,679 --> 00:09:53,410 One of the MIT engineers in, in mission control 197 00:09:53,410 --> 00:09:56,879 had, very wisely, made a little cheat sheet of 198 00:09:56,879 --> 00:10:00,350 every error code that the computer could throw up. 199 00:10:00,350 --> 00:10:02,999 Very, very smart. 200 00:10:02,999 --> 00:10:05,790 And he, you know, he, he looks up, OK, 201 00:10:05,790 --> 00:10:08,009 twelve-oh-one. What does it say? It says, if, if 202 00:10:08,009 --> 00:10:09,389 nothing else seems wrong, you know, you're good to 203 00:10:09,389 --> 00:10:13,610 go for the landing, and he actually was too 204 00:10:13,610 --> 00:10:16,199 scared to form words, so when he was asked, 205 00:10:16,199 --> 00:10:17,110 you know, are we good to go? He just 206 00:10:17,110 --> 00:10:19,970 sort of like, made a thumbs up. And then 207 00:10:19,970 --> 00:10:21,709 he was awarded a medal from the President of 208 00:10:21,709 --> 00:10:24,129 the United States for his, for his decision to, 209 00:10:24,129 --> 00:10:26,119 to not abort the moon landing. 210 00:10:26,119 --> 00:10:28,300 So what happened? What was this master alarm that 211 00:10:28,300 --> 00:10:31,179 scared the crap out of everyone for actually no 212 00:10:31,179 --> 00:10:36,540 reason? So, today we're pretty lucky with our computers, 213 00:10:36,540 --> 00:10:39,569 right. If you, if you write some code that 214 00:10:39,569 --> 00:10:41,249 does an infinite loop or something, your computer will 215 00:10:41,249 --> 00:10:43,629 probably handle it just fine, right. You have to, 216 00:10:43,629 --> 00:10:45,779 you have to do something pretty crazy to crash 217 00:10:45,779 --> 00:10:48,619 your computer. 218 00:10:48,619 --> 00:10:52,739 The very idea that multiple programs could even be 219 00:10:52,739 --> 00:10:54,339 running on a computer was new in the 90s, 220 00:10:54,339 --> 00:10:57,480 1960s. They, they didn't have words like scheduling or 221 00:10:57,480 --> 00:11:01,759 tasks or processes like we have today. They called 222 00:11:01,759 --> 00:11:07,480 it, they called it, like, like, timesharing, right. And, 223 00:11:07,480 --> 00:11:10,879 and up until the Apollo, Apollo guidance computer had 224 00:11:10,879 --> 00:11:14,839 been built, they didn't do anything sophisticated like, like 225 00:11:14,839 --> 00:11:17,579 have priorities assigned to different tasks. They just said, 226 00:11:17,579 --> 00:11:18,119 anything that wants to run, we'll let it run 227 00:11:18,119 --> 00:11:19,999 for a little while, and then we'll run something 228 00:11:19,999 --> 00:11:21,459 else. 229 00:11:21,459 --> 00:11:24,009 And a lot of engineers thought that this approach 230 00:11:24,009 --> 00:11:25,929 was safe, because it was more predictable, and it 231 00:11:25,929 --> 00:11:28,369 was easier to reason about. But it has a 232 00:11:28,369 --> 00:11:34,670 downside, in that you, with something like priority-based scheduling, 233 00:11:34,670 --> 00:11:39,249 you can, you can figure out what are the 234 00:11:39,249 --> 00:11:41,119 most important things that need to be running, right. 235 00:11:41,119 --> 00:11:43,249 The program to fire the thrusters should probably run 236 00:11:43,249 --> 00:11:45,540 exactly when it wants. The program to update the 237 00:11:45,540 --> 00:11:47,670 display for the astronauts, if it's a couple milliseconds 238 00:11:47,670 --> 00:11:49,339 late, I think they'll be OK. 239 00:11:49,339 --> 00:11:51,230 And so this was a brand new approach for 240 00:11:51,230 --> 00:11:54,139 the Apollo program, or for computing in general. So, 241 00:11:54,139 --> 00:11:58,360 the takeaway here is handle failure gracefully. Just do 242 00:11:58,360 --> 00:12:00,470 a little bit of actual work so that something 243 00:12:00,470 --> 00:12:03,019 unexpected can come up and you'll handle it just 244 00:12:03,019 --> 00:12:03,899 fine. 245 00:12:03,899 --> 00:12:05,559 Step two of that, by the way, is if 246 00:12:05,559 --> 00:12:07,569 you get to the point where you can handle 247 00:12:07,569 --> 00:12:11,259 an unknown failure gracefully, don't throw, like a master 248 00:12:11,259 --> 00:12:15,939 caution alarm and raise a ruckus when, you know, 249 00:12:15,939 --> 00:12:17,860 you're actually handling everything great. 250 00:12:17,860 --> 00:12:21,519 OK. So, who would have ever thought that in 251 00:12:21,519 --> 00:12:26,049 a RailsConf, talking about testing would be, would be 252 00:12:26,049 --> 00:12:28,350 weird? But I have an entire segment about testing. 253 00:12:28,350 --> 00:12:30,970 Thanks DHH for that. 254 00:12:30,970 --> 00:12:36,389 So, there were lives on the line. They're traveling 255 00:12:36,389 --> 00:12:37,899 into space, which is pretty difficult. There was a 256 00:12:37,899 --> 00:12:39,889 ton of testing for the software, for the software 257 00:12:39,889 --> 00:12:44,720 for the Apollo Guidance Computer. They, they had unit 258 00:12:44,720 --> 00:12:46,290 tests. They actually even called them unit tests but 259 00:12:46,290 --> 00:12:48,329 with, with quotes, cause it was like a brand 260 00:12:48,329 --> 00:12:50,189 new word for them. 261 00:12:50,189 --> 00:12:53,670 But the, the engineers didn't really talk much about 262 00:12:53,670 --> 00:12:55,660 their unit tests. They said they were OK, but 263 00:12:55,660 --> 00:12:59,670 they didn't, like, rant and rave about them. And 264 00:12:59,670 --> 00:13:00,869 I have a theory as to why that is, 265 00:13:00,869 --> 00:13:03,720 and that's because most of the code for the 266 00:13:03,720 --> 00:13:08,179 Apollo Guidance Computer was, was, was like functional code. 267 00:13:08,179 --> 00:13:09,929 Not in like the programming sense but al, also 268 00:13:09,929 --> 00:13:12,480 in the mathematical sense on which it's based. Right? 269 00:13:12,480 --> 00:13:16,519 You have, you have code for guidance equations. And 270 00:13:16,519 --> 00:13:18,839 furthermore you have mathematicians writing them. 271 00:13:18,839 --> 00:13:21,069 The idea of a computer science degree did not 272 00:13:21,069 --> 00:13:23,149 exist in the 1960s. I think the last, the 273 00:13:23,149 --> 00:13:25,689 first computer science degree was actually awarded, like, in 274 00:13:25,689 --> 00:13:28,959 the late 60s. So no one writing these computers 275 00:13:28,959 --> 00:13:31,850 was trained as a software programmer, right, or as 276 00:13:31,850 --> 00:13:34,929 a computer scientist. They were trained as mathematicians. And 277 00:13:34,929 --> 00:13:37,449 they were writing code to implement mathematical equations. And, 278 00:13:37,449 --> 00:13:40,420 as you can imagine, eventually they'll get it right. 279 00:13:40,420 --> 00:13:42,689 So, what they do talk really, really highly about 280 00:13:42,689 --> 00:13:45,079 is their, their integration tests. And now, I have 281 00:13:45,079 --> 00:13:46,749 no idea. Should we call these system tests or 282 00:13:46,749 --> 00:13:50,970 some other kind of tests? But anyways. 283 00:13:50,970 --> 00:13:55,459 In 1972, they published a retrospective on basically the 284 00:13:55,459 --> 00:13:59,589 entire software development effort, and they said things. They, 285 00:13:59,589 --> 00:14:03,470 they talked specifically about things that plagued the software 286 00:14:03,470 --> 00:14:05,639 development effort throughout the entire program. And they listed 287 00:14:05,639 --> 00:14:07,739 two things, and they're both really interesting. I have 288 00:14:07,739 --> 00:14:09,109 a link to it at the end of my 289 00:14:09,109 --> 00:14:11,670 slide, so definitely check it out when you get 290 00:14:11,670 --> 00:14:11,970 a chance. 291 00:14:11,970 --> 00:14:13,850 The first thing that they just could not get 292 00:14:13,850 --> 00:14:18,480 right was estimating schedules. And we don't get that 293 00:14:18,480 --> 00:14:19,980 right today so, great. We've made a lot of 294 00:14:19,980 --> 00:14:22,379 progress there. One cool thing they did actually was 295 00:14:22,379 --> 00:14:24,189 they, they cataloged a bunch of ways in which 296 00:14:24,189 --> 00:14:25,509 they can go wrong, right. Like if you have, 297 00:14:25,509 --> 00:14:30,329 if you have two projects competing, or two projects 298 00:14:30,329 --> 00:14:33,910 that are running in parallel, and one of them 299 00:14:33,910 --> 00:14:37,769 is gonna take longer, and you make the one 300 00:14:37,769 --> 00:14:40,569 that is not gonna take as long happen even 301 00:14:40,569 --> 00:14:43,980 faster, you haven't actually made your whole project progress 302 00:14:43,980 --> 00:14:47,730 any faster, right. Just to give an example. 303 00:14:47,730 --> 00:14:50,809 The other thing they talked about, that plagued their 304 00:14:50,809 --> 00:14:55,420 whole project, was getting up to date specs and 305 00:14:55,420 --> 00:15:01,149 requirements and information about different systems. The Apollo program, 306 00:15:01,149 --> 00:15:02,999 you know, was in a rush throughout its entire 307 00:15:02,999 --> 00:15:05,970 development. Everything, every part of every system in the 308 00:15:05,970 --> 00:15:09,989 space craft was constantly changing. And getting up to 309 00:15:09,989 --> 00:15:12,629 date information about these other things is hard, right. 310 00:15:12,629 --> 00:15:13,939 You have to go out and talk to every 311 00:15:13,939 --> 00:15:16,509 team, and if they don't happen to tell you 312 00:15:16,509 --> 00:15:19,009 that something's changing, you might not know. 313 00:15:19,009 --> 00:15:21,949 Again, they didn't come up with a great way 314 00:15:21,949 --> 00:15:24,720 to solve this, and again we still struggle with 315 00:15:24,720 --> 00:15:26,359 this today. I think communication is the hardest part 316 00:15:26,359 --> 00:15:29,279 of software development. But they did find out a 317 00:15:29,279 --> 00:15:32,129 great way to figure out if you have it 318 00:15:32,129 --> 00:15:34,249 wrong. And that's to write integration tests, where you 319 00:15:34,249 --> 00:15:37,299 take everything together, right. Every part of your system, 320 00:15:37,299 --> 00:15:38,720 and you test the hell out of it and 321 00:15:38,720 --> 00:15:40,709 see what breaks. 322 00:15:40,709 --> 00:15:47,709 And, and, and, so. What happens is, there's a 323 00:15:49,629 --> 00:15:52,899 really interesting thing where your unit tests with test 324 00:15:52,899 --> 00:15:54,949 your own code, and then you have integration tests, 325 00:15:54,949 --> 00:15:57,799 which are also code. But they're not there so 326 00:15:57,799 --> 00:16:01,109 much, they're not there so much to test your 327 00:16:01,109 --> 00:16:04,919 code as they are to test your communication. So 328 00:16:04,919 --> 00:16:11,470 to put it another way, if you. How do 329 00:16:11,470 --> 00:16:14,470 I put this? Let's see. 330 00:16:14,470 --> 00:16:17,350 If you, if your integration tests are failing, what 331 00:16:17,350 --> 00:16:20,489 it means, not necessarily that you wrote bad code, 332 00:16:20,489 --> 00:16:23,259 but you wrote great code that does the wrong 333 00:16:23,259 --> 00:16:29,410 thing, right. So, so that's the takeaway there. 334 00:16:29,410 --> 00:16:32,279 Another great thing they did that we don't do 335 00:16:32,279 --> 00:16:34,199 today, is they tested what they call the off 336 00:16:34,199 --> 00:16:37,209 nominal cases, which is just an awesome word, right. 337 00:16:37,209 --> 00:16:40,449 We don't use nominal nearly enough anymore. 338 00:16:40,449 --> 00:16:45,819 So, so. They said for every single, for every 339 00:16:45,819 --> 00:16:47,549 one test they had that tested like the normal 340 00:16:47,549 --> 00:16:49,209 case of things going right during a mission, they 341 00:16:49,209 --> 00:16:53,509 had a hundred that tested things going wrong. 342 00:16:53,509 --> 00:16:54,649 So how many of you guys have a test 343 00:16:54,649 --> 00:16:56,970 in your Rails app, something like, if a user 344 00:16:56,970 --> 00:17:00,579 logs in with the right username and the right 345 00:17:00,579 --> 00:17:03,019 password, they get logged in, right. I, I do. 346 00:17:03,019 --> 00:17:04,929 Right. A lot of hands go up. How many 347 00:17:04,929 --> 00:17:07,510 of you guys have a test where if someone 348 00:17:07,510 --> 00:17:09,770 puts in the right username and the wrong password, 349 00:17:09,770 --> 00:17:12,859 they don't get logged in, right. Fewer hands go 350 00:17:12,859 --> 00:17:13,339 up. 351 00:17:13,339 --> 00:17:16,040 I didn't have that test until I was making 352 00:17:16,040 --> 00:17:20,429 this talk. So I mean, there's so many different 353 00:17:20,429 --> 00:17:22,250 tests for things going wrong that, that we don't 354 00:17:22,250 --> 00:17:24,819 write today, I think. Anything from, you know, security 355 00:17:24,819 --> 00:17:27,940 related or, or like, checking of all sorts of, 356 00:17:27,940 --> 00:17:33,240 you know, inputs and stuff like that. But the 357 00:17:33,240 --> 00:17:36,450 Apollo Guidance Computer team got it right, and there 358 00:17:36,450 --> 00:17:38,930 were all sorts of cases during the Apollo program 359 00:17:38,930 --> 00:17:42,310 where, where something went a little bit wrong and, 360 00:17:42,310 --> 00:17:44,570 and something unexpected happened, and, and like Guidance Computer, 361 00:17:44,570 --> 00:17:47,280 because they had done all these off nominal tests, 362 00:17:47,280 --> 00:17:49,660 came out just fine. 363 00:17:49,660 --> 00:17:52,120 So let's talk about their teams. 364 00:17:52,120 --> 00:17:58,740 In 1961 when, when the instrument lab signed the 365 00:17:58,740 --> 00:18:01,400 contract to deliver the Apollo Guidance Computer, that contract 366 00:18:01,400 --> 00:18:04,440 didn't mention software at all. It said, you just 367 00:18:04,440 --> 00:18:06,810 have to give us this, this box, with a 368 00:18:06,810 --> 00:18:09,590 computer in it that can take men to the 369 00:18:09,590 --> 00:18:10,230 moon. 370 00:18:10,230 --> 00:18:12,140 And, so they didn't know if it was just 371 00:18:12,140 --> 00:18:14,260 gonna be, you know, just a bunch of hardware 372 00:18:14,260 --> 00:18:15,700 and it did this one thing and that's all 373 00:18:15,700 --> 00:18:17,400 it needed or if it was gonna be like 374 00:18:17,400 --> 00:18:20,200 a, you know, a fully programmable computer like it 375 00:18:20,200 --> 00:18:22,480 turned out to be. 376 00:18:22,480 --> 00:18:26,570 They, they didn't know, in 1961, what a space 377 00:18:26,570 --> 00:18:27,790 craft that goes to the moon would look like 378 00:18:27,790 --> 00:18:30,790 at all. They didn't know, you know, would it 379 00:18:30,790 --> 00:18:32,320 be one giant ship that goes all the way 380 00:18:32,320 --> 00:18:33,360 to the moon and then comes all the way 381 00:18:33,360 --> 00:18:35,580 back? Would it be several little ships that are 382 00:18:35,580 --> 00:18:37,630 combined together? Would they build two rockets and have 383 00:18:37,630 --> 00:18:39,410 them meet up in space and then go from 384 00:18:39,410 --> 00:18:40,830 there? Would they build one giant rocket? No one 385 00:18:40,830 --> 00:18:42,300 knew. 386 00:18:42,300 --> 00:18:45,350 No one knew if, even in principle, it would 387 00:18:45,350 --> 00:18:48,510 be possible to navigate to the moon, right. They 388 00:18:48,510 --> 00:18:51,550 didn't have the math to, to prove that you 389 00:18:51,550 --> 00:18:53,920 could go to the moon. And no one knew, 390 00:18:53,920 --> 00:18:56,180 even given math that can help you navigate to 391 00:18:56,180 --> 00:18:58,070 the moon, if a computer could be built to 392 00:18:58,070 --> 00:18:59,510 do it. 393 00:18:59,510 --> 00:19:02,830 So there were, in these early days, there were, 394 00:19:02,830 --> 00:19:06,850 you know, no deadlines. No managers. No requirements. Very 395 00:19:06,850 --> 00:19:12,000 little communication with, with other teams. And what that 396 00:19:12,000 --> 00:19:13,980 means is they were free to experiment and, and 397 00:19:13,980 --> 00:19:15,980 figure things out, right. 398 00:19:15,980 --> 00:19:19,220 A couple years later, OK. Now they know, we're 399 00:19:19,220 --> 00:19:21,700 gonna go to the moon. One giant rocket. Two 400 00:19:21,700 --> 00:19:23,540 little space crafts. One is just for landing on 401 00:19:23,540 --> 00:19:27,080 the moon. We have figured out that, just like 402 00:19:27,080 --> 00:19:29,020 at sea, you can use a sextant and measure 403 00:19:29,020 --> 00:19:30,890 the angles between, like, stars and part of the 404 00:19:30,890 --> 00:19:31,990 moon or part of the Earth and figure out 405 00:19:31,990 --> 00:19:34,750 exactly where you are. And now we know what 406 00:19:34,750 --> 00:19:37,660 the math looks like to take those, those navigation 407 00:19:37,660 --> 00:19:39,690 measurements and plug them into a computer, which we 408 00:19:39,690 --> 00:19:41,260 now know how to build, and we know it 409 00:19:41,260 --> 00:19:43,490 can fit in a space craft and it can 410 00:19:43,490 --> 00:19:44,760 take you to the moon. 411 00:19:44,760 --> 00:19:47,890 So now there's four hundred software developers in the 412 00:19:47,890 --> 00:19:53,160 Apollo Guidance Computer project. And now there's, there's lots 413 00:19:53,160 --> 00:19:57,190 of managers. There's lots of deadlines. There's lots of 414 00:19:57,190 --> 00:20:03,740 requirements. There's lots of documentation. So what happened is 415 00:20:03,740 --> 00:20:06,480 they built, they had teams that were the right 416 00:20:06,480 --> 00:20:08,360 shape and size for what they were trying to 417 00:20:08,360 --> 00:20:10,410 accomplish, right. 418 00:20:10,410 --> 00:20:13,560 If, if you were talking to someone who is 419 00:20:13,560 --> 00:20:16,170 founding a startup, it's brand new, and they said 420 00:20:16,170 --> 00:20:19,940 they had four hundred employees, you might be a 421 00:20:19,940 --> 00:20:23,820 little worried. Likewise, if, if you were talking to 422 00:20:23,820 --> 00:20:27,120 a programmer that happened to work for your bank, 423 00:20:27,120 --> 00:20:28,600 and he said, we have a team of, of 424 00:20:28,600 --> 00:20:30,660 twenty and we don't really have any requirements for, 425 00:20:30,660 --> 00:20:32,850 you know, security or anything like that, you'd probably 426 00:20:32,850 --> 00:20:35,250 find another bank. 427 00:20:35,250 --> 00:20:38,780 So, so teams have to be the right shape 428 00:20:38,780 --> 00:20:41,680 and size for what they want to accomplish. Another, 429 00:20:41,680 --> 00:20:44,630 a corollary to that is switching between those team 430 00:20:44,630 --> 00:20:49,680 sizes will be difficult and, at any given time, 431 00:20:49,680 --> 00:20:52,480 there will be people unhappy with how your current 432 00:20:52,480 --> 00:20:55,970 team is shaped. So NASA and the other contractors 433 00:20:55,970 --> 00:20:58,610 building the Apollo space craft did not like that 434 00:20:58,610 --> 00:21:02,030 there were these, these rogue engineers over at MIT 435 00:21:02,030 --> 00:21:05,580 just fooling around doing whatever they wanted, you know, 436 00:21:05,580 --> 00:21:06,830 and then that they were gonna have to somehow 437 00:21:06,830 --> 00:21:09,300 deliver a guidance computer. 438 00:21:09,300 --> 00:21:12,530 Likewise, as the team grew, a lot of the 439 00:21:12,530 --> 00:21:19,530 smartest engineers, they left the, the guidance project once, 440 00:21:19,800 --> 00:21:22,090 especially once Apollo 8 had gone to the moon, 441 00:21:22,090 --> 00:21:24,010 right. A lot of the engineers said, OK. We've 442 00:21:24,010 --> 00:21:26,060 done it. You know, a couple years ago we 443 00:21:26,060 --> 00:21:27,850 had this cool challenge, and now we've figured it 444 00:21:27,850 --> 00:21:29,520 out. Onto the next thing. 445 00:21:29,520 --> 00:21:32,310 But the, the mission to the moon was successful, 446 00:21:32,310 --> 00:21:34,200 right. The goal was accomplished. We had landed on 447 00:21:34,200 --> 00:21:38,980 the moon before 1970. So the team was always 448 00:21:38,980 --> 00:21:40,010 the right size. 449 00:21:40,010 --> 00:21:42,660 All right, what's next. Let's talk a little bit 450 00:21:42,660 --> 00:21:45,810 about working with users. Except, in this case, it's 451 00:21:45,810 --> 00:21:50,890 actually working with astronauts. So, who's seen The Right 452 00:21:50,890 --> 00:21:53,150 Stuff or read the book? Right, they're both great. 453 00:21:53,150 --> 00:21:54,310 OK, lots of you. 454 00:21:54,310 --> 00:22:00,660 How did they describe astronauts? Anyone? What's that? Reckless, 455 00:22:00,660 --> 00:22:04,670 OK. Cowboys. Yes. There's a lot of scenes of 456 00:22:04,670 --> 00:22:10,060 them riding horses around and stuff. They were arrogant. 457 00:22:10,060 --> 00:22:12,690 They were extremely talented. They were hard to work 458 00:22:12,690 --> 00:22:16,760 with. They're just like software developers. 459 00:22:16,760 --> 00:22:22,410 So, just like any other user, astronauts don't know 460 00:22:22,410 --> 00:22:26,160 what they want, right. As one of the most 461 00:22:26,160 --> 00:22:28,340 important things you can, you can learn about working 462 00:22:28,340 --> 00:22:30,710 with, with your users is they won't tell you 463 00:22:30,710 --> 00:22:33,730 what they actually want. There's a great example of 464 00:22:33,730 --> 00:22:34,080 this. 465 00:22:34,080 --> 00:22:35,870 So the Apollo Guidance Computer was not just a 466 00:22:35,870 --> 00:22:38,250 guidance computer. It was also an autopilot. It could 467 00:22:38,250 --> 00:22:41,060 take you from Earth orbit to, you know, a 468 00:22:41,060 --> 00:22:42,460 couple feet above the lunar surface, and it could 469 00:22:42,460 --> 00:22:44,740 take you from the lunar surface all the way 470 00:22:44,740 --> 00:22:46,140 back to Earth. 471 00:22:46,140 --> 00:22:49,280 So, so the, the engineers at MIT, you know, 472 00:22:49,280 --> 00:22:51,590 would talk to the astronauts, and they said, hey, 473 00:22:51,590 --> 00:22:53,920 hey astronauts. You know, you know how, at the 474 00:22:53,920 --> 00:22:55,450 end of your mission you have this, this re-entry 475 00:22:55,450 --> 00:22:58,880 process and, and it's, it's pretty dangerous, right. If 476 00:22:58,880 --> 00:23:01,350 you, if you're coming in too steep you can 477 00:23:01,350 --> 00:23:03,370 burn up. If you don't come in steep enough 478 00:23:03,370 --> 00:23:05,200 you can ricochet out into space and, and you'll 479 00:23:05,200 --> 00:23:07,300 never come back. But, but we know we can 480 00:23:07,300 --> 00:23:10,260 write an autopilot that will do this for you 481 00:23:10,260 --> 00:23:12,560 automatically. You just have to press a couple buttons 482 00:23:12,560 --> 00:23:15,340 and we'll get you right through every time. 483 00:23:15,340 --> 00:23:17,150 And the astronauts said no. Do not do that. 484 00:23:17,150 --> 00:23:20,000 You will be wasting your time. We are astronauts 485 00:23:20,000 --> 00:23:22,020 and we are trained to do these hard things, 486 00:23:22,020 --> 00:23:25,430 like, like do a manual re-entry. And astronauts, by 487 00:23:25,430 --> 00:23:29,000 the way, were very distrustful of all automation. Partially 488 00:23:29,000 --> 00:23:29,840 for good reason. 489 00:23:29,840 --> 00:23:32,310 In the, in the 50s and 60s, a lot 490 00:23:32,310 --> 00:23:36,160 of early flight tests with, especially analogue computers flying 491 00:23:36,160 --> 00:23:38,910 aircraft had gone, had gone wrong. And a lot 492 00:23:38,910 --> 00:23:42,040 of their friends had died. But on the other 493 00:23:42,040 --> 00:23:46,080 hand, also, astronauts, you know, are super macho, right. 494 00:23:46,080 --> 00:23:49,550 They don't like the idea of a computer taking 495 00:23:49,550 --> 00:23:51,780 away something that, you know, they use to show 496 00:23:51,780 --> 00:23:52,810 their skills. 497 00:23:52,810 --> 00:23:54,680 So the astronauts said no. Don't even bother building 498 00:23:54,680 --> 00:23:57,740 this, building this re-entry program, cause we'll never use 499 00:23:57,740 --> 00:24:02,000 it. So the engineers built it anyways. And then 500 00:24:02,000 --> 00:24:06,050 it was used on every single mission. 501 00:24:06,050 --> 00:24:08,770 It turns out that when you've been in a 502 00:24:08,770 --> 00:24:13,470 box in space with no showers and you're eating, 503 00:24:13,470 --> 00:24:16,610 like, frozen, like, dehydrated food for like, up to 504 00:24:16,610 --> 00:24:20,310 a week, and then there's a button you can 505 00:24:20,310 --> 00:24:22,430 press so that you just have to sit back 506 00:24:22,430 --> 00:24:25,450 and relax, and like four minutes later you're in, 507 00:24:25,450 --> 00:24:27,230 you know, the warm air of the Pacific ocean 508 00:24:27,230 --> 00:24:28,810 or something like that, you're gonna press those buttons 509 00:24:28,810 --> 00:24:31,000 every single time, instead of doing one more hard 510 00:24:31,000 --> 00:24:32,480 thing just to get home, when you've already done 511 00:24:32,480 --> 00:24:35,470 everything you needed to do. So your users don't 512 00:24:35,470 --> 00:24:37,160 know what they want. 513 00:24:37,160 --> 00:24:40,720 Now let's talk about interfaces. Let's imagine you've built 514 00:24:40,720 --> 00:24:43,370 this computer that can go to the moon, and 515 00:24:43,370 --> 00:24:45,200 you've got your astronauts ready to go to the 516 00:24:45,200 --> 00:24:48,710 moon, how do they talk to each other? Keep 517 00:24:48,710 --> 00:24:50,970 in mind, this is the 60s. The field of 518 00:24:50,970 --> 00:24:54,830 human computer action, human computer interaction isn't invented until 519 00:24:54,830 --> 00:24:57,150 1980. 520 00:24:57,150 --> 00:25:00,100 You can't use a CRT screen, because they're too 521 00:25:00,100 --> 00:25:04,270 heavy. You can't use an LCD screen, because they 522 00:25:04,270 --> 00:25:07,810 haven't been invented yet, either. And you can't actually 523 00:25:07,810 --> 00:25:09,600 use any type of screen at all. It turns 524 00:25:09,600 --> 00:25:11,170 out the Apollo Guidance Computer doesn't have the power 525 00:25:11,170 --> 00:25:12,850 for anything like that. So you can use, you 526 00:25:12,850 --> 00:25:15,660 know, little seven segment LEDs and you can use, 527 00:25:15,660 --> 00:25:17,000 like, dials and stuff like that. 528 00:25:17,000 --> 00:25:20,460 So what do you build that astronauts can use? 529 00:25:20,460 --> 00:25:22,000 It has to be powerful, right. It can't just 530 00:25:22,000 --> 00:25:23,320 be one button that says take me to the 531 00:25:23,320 --> 00:25:24,980 moon and maybe another button that says take me 532 00:25:24,980 --> 00:25:28,750 back, right. There's a little bit more going on. 533 00:25:28,750 --> 00:25:31,550 And it has to be something that astronauts in 534 00:25:31,550 --> 00:25:34,140 space suits can, can deal with, right. So I 535 00:25:34,140 --> 00:25:35,450 don't think an iPhone would have worked even if 536 00:25:35,450 --> 00:25:39,080 they had it. It has to be something that 537 00:25:39,080 --> 00:25:41,200 you can operate very quickly, right. There's a little 538 00:25:41,200 --> 00:25:42,860 bit of time pressure when you're moving at, you 539 00:25:42,860 --> 00:25:45,490 know, five miles per second. 540 00:25:45,490 --> 00:25:47,050 So I want to show you what they came 541 00:25:47,050 --> 00:25:50,580 up with, and it's, it's this thing. And this 542 00:25:50,580 --> 00:25:53,160 is not a very pretty picture, but it's here 543 00:25:53,160 --> 00:25:54,600 just as an assurance, because I have a live 544 00:25:54,600 --> 00:25:58,430 demo of it actually working. So this is the 545 00:25:58,430 --> 00:26:00,360 display and keyboard unit. So we're gonna switch over 546 00:26:00,360 --> 00:26:01,090 here. 547 00:26:01,090 --> 00:26:03,770 So, some very smart people who are not me 548 00:26:03,770 --> 00:26:07,120 have used ASM and taken an emulator running actually 549 00:26:07,120 --> 00:26:09,340 Apollo Guidance Computer code. We have all the code, 550 00:26:09,340 --> 00:26:10,850 by the way, and you can take a look 551 00:26:10,850 --> 00:26:14,200 at it online. And they build an actual, functional 552 00:26:14,200 --> 00:26:16,780 interface in your web browser to the guidance computer, 553 00:26:16,780 --> 00:26:18,290 and I'm gonna show you guys how it works. 554 00:26:18,290 --> 00:26:19,870 And I'm gonna see what you guys think. 555 00:26:19,870 --> 00:26:24,330 So, so, you can see here, this thing on 556 00:26:24,330 --> 00:26:27,970 the, on the left pretty much is the actual 557 00:26:27,970 --> 00:26:29,250 interface. And then this stuff on the right is 558 00:26:29,250 --> 00:26:32,130 just for running the, like the emulation. This sort 559 00:26:32,130 --> 00:26:35,140 of represents like the, the simulated environment. They didn't 560 00:26:35,140 --> 00:26:35,860 get this thing. 561 00:26:35,860 --> 00:26:37,510 So, so what do we have here? We've got 562 00:26:37,510 --> 00:26:40,920 a bunch of lights for, you know, warnings and, 563 00:26:40,920 --> 00:26:44,260 and status and stuff like that. We've got just 564 00:26:44,260 --> 00:26:46,710 a couple little bits of display down here. And 565 00:26:46,710 --> 00:26:48,640 then we've got just a couple buttons. So, so 566 00:26:48,640 --> 00:26:52,500 let me give you an example of how this 567 00:26:52,500 --> 00:26:53,500 works. 568 00:26:53,500 --> 00:26:57,710 So, what you can do, is you hit, you 569 00:26:57,710 --> 00:27:00,380 pick a verb and then you pick a noun. 570 00:27:00,380 --> 00:27:04,230 So a verb is something like, show me some 571 00:27:04,230 --> 00:27:07,230 data. So that's verb zero-six. And then a noun 572 00:27:07,230 --> 00:27:10,030 is something like, basically the current system up time 573 00:27:10,030 --> 00:27:12,930 is noun sixty-five. And you hit enter. And it 574 00:27:12,930 --> 00:27:15,320 shows you. You don't get any decimal points. So 575 00:27:15,320 --> 00:27:18,430 you have. And you don't get any labels. 576 00:27:18,430 --> 00:27:19,670 So you have to know what these mean. So 577 00:27:19,670 --> 00:27:21,980 I'll, I'll tell you. So this means, this computer's 578 00:27:21,980 --> 00:27:25,480 been running for one hour, thirty-one minutes and forty-nine 579 00:27:25,480 --> 00:27:29,040 point eight eight seconds. OK, let's try something else. 580 00:27:29,040 --> 00:27:32,940 Let's hit another verb. That's verb one-six. So that's 581 00:27:32,940 --> 00:27:35,720 similar to verb six, except what it means is 582 00:27:35,720 --> 00:27:38,050 show me some data and then keep updating it. 583 00:27:38,050 --> 00:27:41,280 And then we'll do noun sixty-five again. 584 00:27:41,280 --> 00:27:43,550 So now, again, one hour thirty-two minutes, and the 585 00:27:43,550 --> 00:27:45,380 number of seconds are going up, and you can 586 00:27:45,380 --> 00:27:46,300 see there's some activity. 587 00:27:46,300 --> 00:27:49,700 So can anyone think of anything that maybe we 588 00:27:49,700 --> 00:27:52,490 use every single day, some of us, at least, 589 00:27:52,490 --> 00:27:54,440 that lets you take verbs and nouns and combine 590 00:27:54,440 --> 00:27:56,430 them in all sorts of interesting and powerful ways? 591 00:27:56,430 --> 00:27:57,090 Anyone? 592 00:27:57,090 --> 00:27:58,420 AUDIENCE: Language. 593 00:27:58,420 --> 00:28:02,130 J.S.: L- well. All right. Someone over there is 594 00:28:02,130 --> 00:28:05,490 a smart ass. A computer program that we use 595 00:28:05,490 --> 00:28:07,240 every single day with verbs and nouns. 596 00:28:07,240 --> 00:28:08,320 AUDIENCE: HTTP. 597 00:28:08,320 --> 00:28:12,559 J.S.: HTTP is a good one, but no. I 598 00:28:12,559 --> 00:28:15,220 was thinking of VIM. VIM. Let's hear it for 599 00:28:15,220 --> 00:28:20,640 VIM. Yes. Exactly. 600 00:28:20,640 --> 00:28:22,590 I would love to, I would love to find 601 00:28:22,590 --> 00:28:25,940 out that, that the interface in VI was influenced 602 00:28:25,940 --> 00:28:27,920 by the Apollo Guidance Computer. I don't think it 603 00:28:27,920 --> 00:28:29,790 was. If someone happens to know, please let me 604 00:28:29,790 --> 00:28:32,000 know. That would be awesome. 605 00:28:32,000 --> 00:28:33,610 But a funny thing, by the way, is that 606 00:28:33,610 --> 00:28:39,150 this interface was, was intended to be temporary. All 607 00:28:39,150 --> 00:28:40,960 the, all the engineers said, well, we don't really 608 00:28:40,960 --> 00:28:43,120 know what to build. But we'll build this thing 609 00:28:43,120 --> 00:28:44,370 with these verbs and nouns and it's kind of 610 00:28:44,370 --> 00:28:47,220 clever and, and we'll use that until we build 611 00:28:47,220 --> 00:28:49,790 something better. And, of course, we now know, like, 612 00:28:49,790 --> 00:28:52,780 if you want something to stick around forever, just 613 00:28:52,780 --> 00:28:54,760 say it's temporary. 614 00:28:54,760 --> 00:28:57,970 But it's cool that the astronauts were, actually became 615 00:28:57,970 --> 00:29:00,000 very adept at this, and it actually functioned really 616 00:29:00,000 --> 00:29:01,960 well. And the fact that we still use, you 617 00:29:01,960 --> 00:29:04,290 know, something similar in VIM today, like. Raise your 618 00:29:04,290 --> 00:29:06,140 hand if you use VIM as your primary editor 619 00:29:06,140 --> 00:29:08,180 for all the code you write? Exactly. It's maybe 620 00:29:08,180 --> 00:29:09,890 twenty-five percent of the people in the room. 621 00:29:09,890 --> 00:29:13,730 So I just think that's really, really cool. Let's 622 00:29:13,730 --> 00:29:15,580 see. What else have I got for you? We're 623 00:29:15,580 --> 00:29:17,750 gonna go back to the slides here, but just 624 00:29:17,750 --> 00:29:23,250 to say I'm Julian Simioni. I work at 42Floors. 625 00:29:23,250 --> 00:29:25,360 You can Tweet at me there. I am a 626 00:29:25,360 --> 00:29:28,809 pilot in real life, and it's really fun. Again, 627 00:29:28,809 --> 00:29:29,990 another thing I was inspired to do by the 628 00:29:29,990 --> 00:29:32,730 space program. And I would love to take some 629 00:29:32,730 --> 00:29:33,090 questions. 630 00:29:33,090 --> 00:29:34,950 OK guys. Thank you so much.