1 00:00:07,008 --> 00:00:08,134 [telephone rings] 2 00:00:09,469 --> 00:00:11,637 -[woman] 9-1-1, emergency? -[telephone rings] 3 00:00:11,721 --> 00:00:13,389 [second woman] 911. What's your emergency? 4 00:00:13,473 --> 00:00:16,559 -[man] 9-1-1. What's your emergency? -[second woman] 9-1-1. 5 00:00:19,854 --> 00:00:24,525 [Karlie Kloss] On April 9, 2014, 9-1-1 service suddenly stopped 6 00:00:24,609 --> 00:00:27,153 for millions of people across the United States. 7 00:00:27,779 --> 00:00:30,239 It was down for over six hours. 8 00:00:30,323 --> 00:00:33,367 More than 6,000 emergency calls couldn't get through. 9 00:00:33,951 --> 00:00:37,246 The government traced the problem to a computer in a call-routing facility 10 00:00:37,330 --> 00:00:38,998 in Englewood, Colorado. 11 00:00:39,082 --> 00:00:41,834 It was a simple coding mistake. 12 00:00:41,918 --> 00:00:43,878 The people in charge of coding that computer 13 00:00:43,961 --> 00:00:47,882 chose to do it with an upper limit for the number of calls it could log, 14 00:00:47,965 --> 00:00:51,344 a limit the coders thought the computer would never hit. 15 00:00:51,427 --> 00:00:54,514 But that night in 2014, it did. 16 00:00:54,597 --> 00:00:56,933 The computer followed its instructions perfectly. 17 00:00:57,016 --> 00:00:59,852 It hit the limit and stopped routing calls. 18 00:00:59,936 --> 00:01:04,315 The problem wasn't the computer, and it wasn't a bug in the code. 19 00:01:04,398 --> 00:01:07,568 It was the coding, the decision-making process 20 00:01:07,652 --> 00:01:10,488 by which people communicate with the computer. 21 00:01:10,571 --> 00:01:14,659 This kind of power comes with great ethical responsibility. 22 00:01:14,742 --> 00:01:18,246 There's nothing like doing it. There's nothing that substitutes for it. 23 00:01:18,329 --> 00:01:21,332 You know, much the same ways that builders of a city 24 00:01:21,415 --> 00:01:23,459 determine how your life is lived in the city, 25 00:01:23,543 --> 00:01:26,838 I-I think code controls how we live online, 26 00:01:26,921 --> 00:01:29,423 which basically is how we live. 27 00:01:29,507 --> 00:01:33,678 Not just when we go on the Internet, but when we contact emergency services... 28 00:01:34,554 --> 00:01:37,807 or go to the doctor or get in a car. 29 00:01:37,890 --> 00:01:41,519 We're all so close to code every day. 30 00:01:41,602 --> 00:01:45,690 Yet only around a third of one percent of us 31 00:01:45,773 --> 00:01:47,358 know how to write it. 32 00:01:47,441 --> 00:01:50,611 To the overwhelming majority, it's a black box. 33 00:01:50,695 --> 00:01:55,199 But it doesn't have to be. So, how does coding really work? 34 00:01:55,283 --> 00:01:58,369 And what new world are we building with it? 35 00:02:00,705 --> 00:02:01,831 [man] The computer. 36 00:02:03,082 --> 00:02:06,085 An ingenious collection of electronic hardware 37 00:02:06,169 --> 00:02:08,004 was created by man. 38 00:02:08,087 --> 00:02:11,382 [second man] It is not that we do not have adequate machines to solve our problems, 39 00:02:11,465 --> 00:02:14,177 but rather we lack adequate descriptions of how to solve our problems. 40 00:02:14,260 --> 00:02:18,472 [woman] When someone says coding, you think it's really, really hard. 41 00:02:18,556 --> 00:02:20,683 [man] It's very important to really remember 42 00:02:20,766 --> 00:02:25,271 everything you use on your computer was created by some human being. 43 00:02:31,903 --> 00:02:34,906 Let's say an alien came, and you're like, "Okay, what's the importance of code? 44 00:02:34,989 --> 00:02:39,577 What is it?" I'd say, "Well, you know, we live on this sort of physical earth, 45 00:02:39,660 --> 00:02:41,287 and about 50 years ago, 46 00:02:41,370 --> 00:02:44,582 a small group of people started building another planet. 47 00:02:44,665 --> 00:02:46,918 But it wasn't physical, virtual planet. 48 00:02:47,001 --> 00:02:50,087 Look around the street. You see all the people walking down the street 49 00:02:50,171 --> 00:02:52,548 with their head bent down and staring at their phone? 50 00:02:52,632 --> 00:02:56,093 They're actually in that other world. So, that's what code is. 51 00:02:56,177 --> 00:02:58,638 It's the building blocks of that other world." 52 00:03:00,056 --> 00:03:04,727 This loom is the ancestor of every computer and smartphone on Earth. 53 00:03:04,810 --> 00:03:09,357 It was invented in 1804, and the big innovation was these cards. 54 00:03:10,107 --> 00:03:13,319 The holes in each card allowed only certain pins to pass through. 55 00:03:14,237 --> 00:03:16,405 With thousands of holes on hundreds of cards, 56 00:03:16,489 --> 00:03:19,742 weavers could do more complex patterns than they could before. 57 00:03:19,825 --> 00:03:23,037 Elaborate shawls became all the rage in Europe. 58 00:03:23,120 --> 00:03:26,832 And woven designs could be so intricate, they looked like drawings, 59 00:03:26,916 --> 00:03:29,210 like this one of the loom's inventor. 60 00:03:30,169 --> 00:03:33,464 Before these looms, individual strings had to be selected by hand 61 00:03:33,547 --> 00:03:34,882 by "draw boys." 62 00:03:34,966 --> 00:03:39,011 Math back then was done by hand, too, by so-called "computers." 63 00:03:39,095 --> 00:03:40,972 The first computers were people. 64 00:03:41,681 --> 00:03:46,143 And the best machines we had to help us could only do one type of math problem, 65 00:03:46,227 --> 00:03:48,980 like the abacus for adding and subtracting. 66 00:03:49,063 --> 00:03:51,065 British mathematician Charles Babbage 67 00:03:51,148 --> 00:03:54,735 wanted a machine that could do any math problem you chose for it to do 68 00:03:54,819 --> 00:03:57,113 or rather "programmed" it to do. 69 00:03:57,780 --> 00:04:01,200 He proposed a machine he called "The Analytical Engine." 70 00:04:01,284 --> 00:04:04,954 Babbage's idea would earn him a place in history. 71 00:04:05,037 --> 00:04:10,543 Computers were invented first by Babbage, 72 00:04:10,626 --> 00:04:13,963 a very eccentric British inventor. 73 00:04:14,046 --> 00:04:16,590 Babbage had inspiration for how it would work. 74 00:04:16,674 --> 00:04:20,136 He kept a copy of this picture hanging in his house. 75 00:04:20,219 --> 00:04:23,264 Babbage's Analytical Engine, like Jacquard's loom, 76 00:04:23,347 --> 00:04:25,558 had physical parts--hardware. 77 00:04:25,641 --> 00:04:27,101 And also like the loom, 78 00:04:27,184 --> 00:04:31,564 you could give the hardware instructions in the form of cards punched with holes. 79 00:04:31,647 --> 00:04:33,024 The holes let pins in, 80 00:04:33,107 --> 00:04:36,068 and the absence of holes forced other pins backwards, 81 00:04:36,152 --> 00:04:39,196 setting off a chain of mechanical calculations. 82 00:04:39,780 --> 00:04:42,575 The cards with their different holes, that's software. 83 00:04:43,701 --> 00:04:45,995 Babbage never finished his Analytical Engine, 84 00:04:46,078 --> 00:04:48,080 but a young woman working with him 85 00:04:48,164 --> 00:04:52,585 saw its world-changing potential way beyond just math. 86 00:04:52,668 --> 00:04:55,880 Ada Byron, Countess of Lovelace, wrote, 87 00:04:55,963 --> 00:04:58,090 "The bounds of arithmetic were outstepped 88 00:04:58,174 --> 00:05:02,178 the moment the idea of applying the cards had occurred." 89 00:05:02,261 --> 00:05:04,263 She saw what Jacquard saw-- 90 00:05:04,347 --> 00:05:06,974 the holes could represent more than just numbers. 91 00:05:07,058 --> 00:05:09,310 They could be patterns, music... 92 00:05:10,603 --> 00:05:12,688 or entire sentences. 93 00:05:12,772 --> 00:05:15,191 You can think of it kind of as Morse code. 94 00:05:15,274 --> 00:05:17,401 Each letter in the Morse-code alphabet 95 00:05:17,485 --> 00:05:19,987 is expressed as a set of only two signals-- 96 00:05:20,071 --> 00:05:23,157 [short beep] or [long beep]. It's binary. 97 00:05:23,240 --> 00:05:26,827 And with just those beeps, we can say anything, 98 00:05:26,911 --> 00:05:30,831 like this distress call sent out by the Titanic in 1912. 99 00:05:31,665 --> 00:05:34,627 SOS doesn't stand for anything. 100 00:05:34,710 --> 00:05:37,922 It's just incredibly simple to send in Morse code. 101 00:05:38,005 --> 00:05:40,841 [Andy] You can equally well think of every letter 102 00:05:40,925 --> 00:05:44,678 could be expressed as a combination of zeros and ones. 103 00:05:44,762 --> 00:05:47,807 [Kloss] Look familiar? This is binary code. 104 00:05:47,890 --> 00:05:51,852 And it's how we bridge the gap between machines and human language. 105 00:05:51,936 --> 00:05:55,856 Each one or zero is a binary digit or "bit." 106 00:05:55,940 --> 00:05:58,442 These are the atoms of modern computing. 107 00:05:58,526 --> 00:06:02,696 You may know them by another name-- eight bits is a byte. 108 00:06:02,780 --> 00:06:08,077 So, you know that picture on your computer that's 1.1 megabytes? 109 00:06:08,160 --> 00:06:12,289 That's 8,800,000 ones and zeros. 110 00:06:12,373 --> 00:06:15,334 Like Morse code's dots and dashes are just a way to write down 111 00:06:15,418 --> 00:06:16,836 [long beep] and [short beep], 112 00:06:16,919 --> 00:06:20,214 binary code's ones and zeros are just the way we write down 113 00:06:20,297 --> 00:06:23,134 what's really happening in a modern computer-- 114 00:06:23,217 --> 00:06:25,344 charge or no charge. 115 00:06:25,428 --> 00:06:27,680 This is a simple electrical circuit. 116 00:06:27,763 --> 00:06:30,850 Imagine millions of these all working together. 117 00:06:30,933 --> 00:06:32,852 That's a computer today. 118 00:06:32,935 --> 00:06:35,521 On an electric circuit, this is a bit. 119 00:06:35,604 --> 00:06:38,023 Is the light bulb off? Zero. 120 00:06:38,107 --> 00:06:40,025 On? One. 121 00:06:40,109 --> 00:06:42,194 Computers only understand electricity, 122 00:06:42,278 --> 00:06:46,365 so everything coders do with computers is, in the end, 123 00:06:46,449 --> 00:06:49,660 just a series of on-or-off charges. 124 00:06:49,743 --> 00:06:53,414 It all works because, strung together in just the right way, 125 00:06:53,497 --> 00:06:56,542 those charges can represent logic. 126 00:06:56,625 --> 00:07:01,172 [man] Basically, logic is a predictable series of facts or events, 127 00:07:01,255 --> 00:07:03,090 such as closing this switch... 128 00:07:04,717 --> 00:07:07,136 and this one to ring the bell. 129 00:07:07,219 --> 00:07:08,971 [bell rings] 130 00:07:09,054 --> 00:07:12,516 In fact, computer people call this a logic AND circuit. 131 00:07:13,517 --> 00:07:15,686 [Kloss] Or a logic gate. 132 00:07:15,769 --> 00:07:18,439 Let's see if I can do this without burning a hole through this table. 133 00:07:18,522 --> 00:07:23,152 In an AND gate, both circuits need to be closed for the light to go on. 134 00:07:23,235 --> 00:07:24,695 And there are OR gates, 135 00:07:24,778 --> 00:07:28,365 where the light goes on if just one of the circuits is closed. 136 00:07:28,449 --> 00:07:29,825 You can put this another way. 137 00:07:29,909 --> 00:07:34,413 If one of these circuits is closed, then turn on the light. 138 00:07:34,497 --> 00:07:38,209 That kind of if/then statement, that's an algorithm. 139 00:07:38,292 --> 00:07:40,794 In pop culture today, the word "algorithm" 140 00:07:40,878 --> 00:07:42,671 causes lots of confusion. 141 00:07:42,755 --> 00:07:45,925 We've seen this before, uh, where the algorithms go haywire. 142 00:07:46,008 --> 00:07:49,094 The way algorithms work is something of a mystery to most people. 143 00:07:49,178 --> 00:07:51,847 What the heck is an algorithm, anyway? 144 00:07:51,972 --> 00:07:55,059 [Kloss] But an algorithm is really just a set of directions. 145 00:07:55,142 --> 00:07:56,727 Imagine walking to the store. 146 00:07:56,810 --> 00:07:59,647 You could take a left and then take a right. 147 00:07:59,730 --> 00:08:02,983 Or you could just take a right, then turn left. 148 00:08:03,067 --> 00:08:05,069 Or you could also take four lefts, 149 00:08:05,152 --> 00:08:07,029 run around the park, cross a highway, 150 00:08:07,112 --> 00:08:09,281 and then take four rights again. 151 00:08:09,365 --> 00:08:12,076 Just like there are different directions to get to the same place, 152 00:08:12,159 --> 00:08:14,411 in coding, there can be many different algorithms 153 00:08:14,495 --> 00:08:16,205 to solve the same problem. 154 00:08:16,288 --> 00:08:20,376 The goal is to find the most elegant, efficient one. 155 00:08:20,459 --> 00:08:22,795 Beautiful code doesn't repeat itself. 156 00:08:22,878 --> 00:08:24,922 It's very elegant. It's powerful. 157 00:08:25,589 --> 00:08:29,051 Computers running algorithms just did what we told them to do, 158 00:08:29,134 --> 00:08:34,139 but so much faster, which made people so much more powerful. 159 00:08:34,223 --> 00:08:37,935 When scientists first began to develop the fusion bomb, 160 00:08:38,018 --> 00:08:40,896 they primarily used human computers. 161 00:08:40,980 --> 00:08:43,148 But then they turned to this one-- 162 00:08:43,232 --> 00:08:47,820 the ENIAC computer ran thermonuclear calculations for six weeks. 163 00:08:47,903 --> 00:08:51,073 Its results contributed directly to this-- 164 00:08:51,156 --> 00:08:53,993 the first successful test in 1952 165 00:08:54,076 --> 00:08:57,496 of a bomb hundreds of times more powerful than the atomic fission bombs 166 00:08:57,580 --> 00:09:00,749 dropped on Hiroshima and Nagasaki during World War II. 167 00:09:01,500 --> 00:09:05,296 The power to code amplified people's ability to do 168 00:09:05,379 --> 00:09:06,672 what they chose to do. 169 00:09:07,590 --> 00:09:11,385 But in the 1940s, it was still a lot of work. 170 00:09:11,468 --> 00:09:16,181 [Andy] Writing programs in zeros and ones clearly doesn't scale. 171 00:09:16,265 --> 00:09:19,101 [Kloss] People wanted more of the power coding gave, 172 00:09:19,184 --> 00:09:21,604 but they wanted an easier way to code. 173 00:09:22,521 --> 00:09:24,315 The story of coding since then 174 00:09:24,398 --> 00:09:29,361 has been the story of making code closer and closer to human language 175 00:09:29,445 --> 00:09:35,117 by inventing what nearly all coders today actually use--programming languages. 176 00:09:35,200 --> 00:09:39,496 Compared to ones and zeros, these languages are pretty abstract. 177 00:09:39,580 --> 00:09:42,166 Abstraction's a word that's tough for people. 178 00:09:42,249 --> 00:09:45,794 More abstract languages boil down to the same ones and zeros. 179 00:09:45,878 --> 00:09:48,714 We've just found better ways to organize them. 180 00:09:48,797 --> 00:09:51,300 You can think of it in terms of biology. 181 00:09:51,383 --> 00:09:53,135 Humans are incredibly complex, 182 00:09:53,218 --> 00:09:57,348 but 99% of our bodies are made up of only six elements. 183 00:09:57,431 --> 00:10:00,184 [Alan] And you can work your way up to large molecules. 184 00:10:00,267 --> 00:10:02,269 Between that layer of organization 185 00:10:02,353 --> 00:10:04,688 and the one that is the simplest living thing 186 00:10:04,772 --> 00:10:06,231 is actually a bit of a jump. 187 00:10:06,315 --> 00:10:09,526 [Kloss] And humans have brains which do things so advanced, 188 00:10:09,610 --> 00:10:12,821 it's hard to believe they're still made of the same stuff. 189 00:10:12,905 --> 00:10:16,825 Computers actually are rather like that, but are much simpler. 190 00:10:17,951 --> 00:10:19,203 So that is the good news. 191 00:10:19,286 --> 00:10:23,082 The story of coding is the story of moving this box up, 192 00:10:23,165 --> 00:10:26,627 moving away from binary to give ourselves easier, faster, 193 00:10:26,710 --> 00:10:29,004 more powerful ways to code 194 00:10:29,088 --> 00:10:32,341 without having to deal with or really even understand 195 00:10:32,424 --> 00:10:34,760 the binary and logic gates beneath. 196 00:10:35,344 --> 00:10:39,223 That's what allows coders to make the products we're all familiar with. 197 00:10:39,306 --> 00:10:41,392 The first step to get there was... 198 00:10:41,475 --> 00:10:46,146 [Andy] "Assembly language," which is much easier to read and write, 199 00:10:46,230 --> 00:10:49,817 where you say instead of 0-1-0-0-0-1-1-1, 200 00:10:49,900 --> 00:10:51,610 let's call it "add," 201 00:10:51,694 --> 00:10:55,406 and then have a program called the assembler 202 00:10:55,489 --> 00:10:59,410 translate the letters A-D-D 203 00:10:59,493 --> 00:11:03,497 to the appropriate equivalent zeros and ones. 204 00:11:03,580 --> 00:11:07,543 [Kloss] At this level, binary is organized into letters and numbers, 205 00:11:07,626 --> 00:11:10,796 just like atoms are organized into molecules. 206 00:11:10,879 --> 00:11:15,759 But coding in assembly language still wasn't exactly easy, 207 00:11:15,843 --> 00:11:20,013 because all these computers used different assembly languages. 208 00:11:20,097 --> 00:11:25,018 If you wrote a program for one computer, it wouldn't work on any of the others. 209 00:11:25,102 --> 00:11:27,187 Very quickly, people started thinking about, 210 00:11:27,271 --> 00:11:29,440 "Well, what we really want to give the computer 211 00:11:29,523 --> 00:11:33,110 are things in terms that we actually use every day." 212 00:11:33,193 --> 00:11:35,821 You have programming languages 213 00:11:35,904 --> 00:11:39,825 that we built using the assembly language, 214 00:11:39,908 --> 00:11:42,911 and then from those programming languages, we build more programming languages. 215 00:11:42,995 --> 00:11:44,955 You've probably heard their names. 216 00:11:45,038 --> 00:11:45,914 -LISP. -BASIC. 217 00:11:45,998 --> 00:11:47,207 -Java. -C++. 218 00:11:47,291 --> 00:11:49,042 -[man] Python 3. -HTML 5. 219 00:11:49,126 --> 00:11:51,044 PEARL. PHP. A little bit of C. 220 00:11:51,128 --> 00:11:53,672 Just like how spoken languages are different ways 221 00:11:53,756 --> 00:11:57,217 of expressing the same idea to other people, 222 00:11:57,301 --> 00:11:58,510 programming languages 223 00:11:58,594 --> 00:12:02,264 are just different ways of expressing the same idea to computers. 224 00:12:02,347 --> 00:12:04,850 [Andy] We have more than one high-level language, 225 00:12:04,933 --> 00:12:06,810 because, first of all, 226 00:12:06,894 --> 00:12:10,647 different languages address different needs. 227 00:12:10,731 --> 00:12:12,191 [Kloss] Take a look at these two. 228 00:12:12,274 --> 00:12:15,903 This one, COBOL, was created in the late 1950s 229 00:12:15,986 --> 00:12:19,156 to make it easier for businesses to use code. 230 00:12:19,239 --> 00:12:21,158 It looks a lot like English, 231 00:12:21,241 --> 00:12:25,621 except if every conversation ended with "STOP RUN." 232 00:12:26,497 --> 00:12:30,334 This one, CPL, was developed in the 1960s 233 00:12:30,417 --> 00:12:33,128 and included more scientific computing. 234 00:12:33,212 --> 00:12:35,547 It's like biological evolution. 235 00:12:35,631 --> 00:12:38,634 As organisms get more complex, they develop features 236 00:12:38,717 --> 00:12:41,929 that make them better adapted to their specific environments. 237 00:12:42,012 --> 00:12:46,433 And, frankly, it's also a matter of taste. 238 00:12:46,517 --> 00:12:50,521 People like different tools for expressing themselves. 239 00:12:50,604 --> 00:12:53,774 For example, the language C++. 240 00:12:53,857 --> 00:12:56,276 Elon Musk... n-not a fan. 241 00:12:56,360 --> 00:12:57,903 You could make one up. 242 00:12:57,986 --> 00:13:02,866 This is a real high-level language made entirely of the word "moo." 243 00:13:02,950 --> 00:13:05,202 Seriously. It's called COW. 244 00:13:05,285 --> 00:13:09,164 This one is made of Arnold Schwarzenegger movie quotes. 245 00:13:09,248 --> 00:13:13,335 Every time I think, "Okay, we must be done by now," 246 00:13:13,418 --> 00:13:15,796 somebody else comes up with a new language 247 00:13:15,879 --> 00:13:20,008 and it develops a group of devotees. 248 00:13:20,092 --> 00:13:24,888 So I don't see any end in sight to the invention of new languages. 249 00:13:25,472 --> 00:13:29,309 And all of these languages are still based around logic. 250 00:13:29,393 --> 00:13:32,604 For example, a coder at Netflix could say, 251 00:13:32,688 --> 00:13:35,357 "If you've been watching longer than two hours, 252 00:13:35,440 --> 00:13:37,609 then display this." 253 00:13:37,693 --> 00:13:39,903 But for code to impact most people's lives, 254 00:13:39,987 --> 00:13:42,739 most people had to be using computers, 255 00:13:42,823 --> 00:13:46,076 which meant computers had to be easier, friendlier, 256 00:13:46,159 --> 00:13:50,664 and that required another big leap, which started here, 257 00:13:50,747 --> 00:13:54,376 in a demo given by Doug Engelbart in 1968. 258 00:13:54,459 --> 00:13:56,795 [Doug] In a second, we'll see the screen he's working 259 00:13:56,879 --> 00:13:58,380 and the way the tracking spot moves 260 00:13:58,463 --> 00:14:01,967 in conjunction with movements of that mouse. 261 00:14:02,050 --> 00:14:04,219 People nowadays don't program 262 00:14:04,303 --> 00:14:07,723 by writing out statements on a piece of paper 263 00:14:07,806 --> 00:14:11,476 and then handing them off to somebody who types it in. 264 00:14:11,560 --> 00:14:15,272 You sit down at a screen. You have a graphical user interface. 265 00:14:15,355 --> 00:14:17,941 Today, we call them GUIs. 266 00:14:18,025 --> 00:14:21,153 With GUIs, people can code without typing at all. 267 00:14:22,571 --> 00:14:25,157 Or they can just use code more easily. 268 00:14:25,240 --> 00:14:30,203 You're typically operating in a programming environment 269 00:14:30,287 --> 00:14:34,917 of the type that Alan and his companions 270 00:14:35,000 --> 00:14:36,418 created so beautifully 271 00:14:36,501 --> 00:14:40,631 at Xerox Palo Alto Research Center in the early '70s. 272 00:14:40,714 --> 00:14:42,799 Alan. This Alan. 273 00:14:42,883 --> 00:14:45,928 I think of him as the father of personal computing 274 00:14:46,011 --> 00:14:50,599 because he was the first to really articulate that vision. 275 00:14:50,682 --> 00:14:54,353 And I have to confess, at the time, I thought it was science fiction. 276 00:14:54,436 --> 00:14:56,605 When big things really get done... 277 00:14:58,106 --> 00:14:59,733 there's usually a whole community. 278 00:14:59,816 --> 00:15:04,696 And, boy, Park was fantastic at it. It was just like magic. 279 00:15:04,780 --> 00:15:08,492 The graphical user interface allowed millions more people 280 00:15:08,575 --> 00:15:13,080 to use computers in a way that is natural to them. 281 00:15:13,163 --> 00:15:17,125 When Xerox first advertised GUIs in 1979, 282 00:15:17,209 --> 00:15:20,253 they showed how code could change daily life. 283 00:15:20,337 --> 00:15:21,630 [man] You come into your office, 284 00:15:21,713 --> 00:15:25,008 and a Xerox machine presents your morning mail on a screen. 285 00:15:25,092 --> 00:15:27,344 Soon, Xerox systems like this 286 00:15:27,427 --> 00:15:30,389 will help you manage your most precious resource-- 287 00:15:30,472 --> 00:15:31,765 information. 288 00:15:31,848 --> 00:15:33,433 There were people like me, 289 00:15:33,517 --> 00:15:36,520 and a lot of the people in this research community 290 00:15:36,603 --> 00:15:38,105 wanted to make the world better. 291 00:15:38,188 --> 00:15:43,527 They had an idea that was deeply related to human augmentation. 292 00:15:43,610 --> 00:15:46,613 Something that would interact with us, 293 00:15:46,697 --> 00:15:49,366 you know, the-the public, the-the normal person, 294 00:15:49,449 --> 00:15:53,620 and make us capable of doing more than we were before. 295 00:15:53,704 --> 00:15:56,248 It did make us capable of doing more. 296 00:15:56,331 --> 00:15:58,875 GUIs were a big jump up this spectrum. 297 00:15:59,501 --> 00:16:03,922 And then came the next world-changing innovation. 298 00:16:04,006 --> 00:16:05,298 [dial-up drone] 299 00:16:05,382 --> 00:16:09,094 A new way to distribute everything that we could make with code. 300 00:16:10,095 --> 00:16:11,763 On TV, people started predicting 301 00:16:11,847 --> 00:16:14,725 what sudden access to all this code would mean. 302 00:16:14,808 --> 00:16:17,394 Imagine, if you will, sitting down to your morning coffee, 303 00:16:17,477 --> 00:16:20,439 turning on your home computer to read the day's newspaper. 304 00:16:20,522 --> 00:16:23,358 Imagine a world where every word ever written, 305 00:16:23,442 --> 00:16:24,901 every picture ever painted, 306 00:16:24,985 --> 00:16:28,697 every film ever shot could be viewed instantly in your home. 307 00:16:28,780 --> 00:16:33,660 I think we're actually on the cusp of something exhilarating and terrifying. 308 00:16:33,744 --> 00:16:36,204 -It's just a tool, though, isn't it? -No, it's not. 309 00:16:36,288 --> 00:16:40,667 The most impactful software products today make use of all these innovations. 310 00:16:40,751 --> 00:16:45,172 One college student used a high-level programming language, PHP, 311 00:16:45,255 --> 00:16:47,424 to make something shared over the Internet, 312 00:16:47,507 --> 00:16:49,926 to be used on computers with GUIs. 313 00:16:50,010 --> 00:16:53,889 He described it in his first ever TV interview in 2004. 314 00:16:53,972 --> 00:16:56,349 It's an online directory that connects people 315 00:16:56,433 --> 00:16:59,478 through universities and colleges through their social networks there. 316 00:16:59,561 --> 00:17:03,106 Now we're at a hundred thousand people, so who knows where we're going next? 317 00:17:03,190 --> 00:17:06,777 Where we went was more than 2,000,000,000 people 318 00:17:06,860 --> 00:17:08,653 on Facebook monthly. 319 00:17:08,737 --> 00:17:11,823 Today, coders shape literally billions of people's lives. 320 00:17:11,907 --> 00:17:16,119 How they work, shop, eat, date, and chill. 321 00:17:16,203 --> 00:17:17,537 What are you doing right now? 322 00:17:17,621 --> 00:17:21,333 You're watching me in a Netflix web browser. 323 00:17:23,335 --> 00:17:25,337 So Netflix itself is code, 324 00:17:25,420 --> 00:17:28,340 and it's being run in a web browser that is code, 325 00:17:28,423 --> 00:17:33,970 which is being run on a computer that was designed using code. 326 00:17:34,054 --> 00:17:36,431 It's-It's turtles all the way down, right? 327 00:17:37,682 --> 00:17:41,269 Great code is like being the architect of a museum 328 00:17:41,353 --> 00:17:43,396 that millions of people think of 329 00:17:43,480 --> 00:17:46,149 and go and walk around and use every day. 330 00:17:46,233 --> 00:17:49,569 I think there's nothing like writing code, because it feels like pure creation. 331 00:17:49,653 --> 00:17:52,239 You have an idea for how something should work, 332 00:17:52,322 --> 00:17:56,159 and then you try to sit down in front of a computer 333 00:17:56,243 --> 00:17:58,078 and make that a reality. 334 00:17:58,161 --> 00:18:01,081 I think there's a lot of responsibility for that role. 335 00:18:01,164 --> 00:18:04,084 You know, you have a speed limit. 336 00:18:04,167 --> 00:18:05,752 No more than 60 miles an hour. 337 00:18:06,670 --> 00:18:11,466 Fine. But what if you had a car, and the computer said... 338 00:18:12,175 --> 00:18:15,762 "Well, this car is not gonna go faster than 60 miles an hour"? 339 00:18:15,846 --> 00:18:17,973 That's a different way of controlling your behavior. 340 00:18:18,056 --> 00:18:20,225 Often by controlling our choices... 341 00:18:20,892 --> 00:18:26,064 code in our live exerts an almost more profound regulatory effect, 342 00:18:26,148 --> 00:18:28,441 uh, than the law can ever hope to. 343 00:18:28,525 --> 00:18:30,861 And that might be a great thing. 344 00:18:30,944 --> 00:18:35,282 There are around 6,000,000 car crashes in the U.S. every year, 345 00:18:35,365 --> 00:18:39,703 and one analysis found 94% are caused by the driver. 346 00:18:40,370 --> 00:18:43,206 Advancements in coding could save millions of lives. 347 00:18:43,707 --> 00:18:47,377 But they can also put lives in danger in new ways. 348 00:18:47,460 --> 00:18:51,047 I have something called hypertrophic cardiomyopathy, 349 00:18:51,131 --> 00:18:56,386 um, which is the medical term for the fact that I have a big heart. 350 00:18:56,469 --> 00:18:58,180 My heart is literally a big heart. 351 00:18:58,263 --> 00:19:00,932 It is about three times the size of a normal person's heart. 352 00:19:01,016 --> 00:19:03,143 I found out when I was about 30, 353 00:19:03,226 --> 00:19:07,355 and so my risk of suddenly dying by 40 was just very large. 354 00:19:07,439 --> 00:19:10,025 And the electrophysiologist said, "Well, this is no problem at all 355 00:19:10,108 --> 00:19:12,903 because you can get a pacemaker defibrillator." 356 00:19:12,986 --> 00:19:15,030 This device runs on code. 357 00:19:15,697 --> 00:19:18,033 A couple years ago, when I was pregnant, 358 00:19:18,116 --> 00:19:20,160 my heart was palpitating. 359 00:19:20,243 --> 00:19:23,622 About a quarter of all women have palpitations. 360 00:19:23,705 --> 00:19:25,081 It's perfectly normal. 361 00:19:25,165 --> 00:19:29,586 But my device thought that I was in a dangerous rhythm, and it shocked me. 362 00:19:29,669 --> 00:19:34,090 Device manufacturers have no interest in pregnant ladies getting shocked. 363 00:19:34,174 --> 00:19:36,551 It is literally the last thing they want. 364 00:19:36,635 --> 00:19:39,262 They just... haven't considered it. 365 00:19:39,346 --> 00:19:42,974 There is this huge set of decisions... 366 00:19:43,058 --> 00:19:47,479 and the people who do the programming will be making them. 367 00:19:48,188 --> 00:19:53,693 And inevitably, there will be some combination of circumstances 368 00:19:53,777 --> 00:19:56,154 that they will not have anticipated. 369 00:19:56,238 --> 00:20:02,160 So, what we try to teach when we teach the craft of programming 370 00:20:02,244 --> 00:20:07,749 is how you think about all these different conditions. 371 00:20:07,832 --> 00:20:13,255 How you try to be exhaustive without becoming paralyzed 372 00:20:13,338 --> 00:20:16,091 by the number of things that you might have to consider. 373 00:20:16,174 --> 00:20:18,468 And that will only become more true, 374 00:20:18,551 --> 00:20:21,721 because we've started coding in a completely new way. 375 00:20:22,430 --> 00:20:25,976 In traditional coding, you write instructions for a computer. 376 00:20:26,059 --> 00:20:30,313 But we're now able to give a computer a bunch of inputs and a bunch of outputs 377 00:20:30,397 --> 00:20:33,858 and get it to write its own instructions. 378 00:20:33,942 --> 00:20:37,404 What you do is you give the computer... 379 00:20:38,363 --> 00:20:39,990 a lot of examples, 380 00:20:40,073 --> 00:20:43,785 and you say, "This is a party, this is a party, this is a party." Right? 381 00:20:43,868 --> 00:20:47,247 And then you have other things. A dentist's office--not a party. 382 00:20:47,330 --> 00:20:49,249 A classroom--not a party. 383 00:20:49,332 --> 00:20:51,584 So then the computer looks at these 384 00:20:51,668 --> 00:20:55,171 and tries to build a classification system. 385 00:20:55,255 --> 00:20:57,173 This is machine learning. 386 00:20:57,257 --> 00:21:00,385 These days, if somebody says artificial intelligence, 387 00:21:00,468 --> 00:21:01,553 this is what they mean. 388 00:21:01,636 --> 00:21:05,265 That's a whole different kind of abstraction 389 00:21:05,348 --> 00:21:06,641 and way of doing things, 390 00:21:06,725 --> 00:21:11,563 because it doesn't really fit into the way we stack these things up. 391 00:21:11,646 --> 00:21:13,732 We call them machine-learning algorithms 392 00:21:13,815 --> 00:21:18,069 because the computer is creating its own set of directions to follow. 393 00:21:18,153 --> 00:21:19,779 But, of course, in the end, 394 00:21:19,863 --> 00:21:24,534 they too get translated into tiny little instructions. 395 00:21:25,201 --> 00:21:28,455 Google Translate used to be more than a million lines of code. 396 00:21:28,538 --> 00:21:32,792 That's people writing million little instructions. 397 00:21:32,876 --> 00:21:38,381 Currently, Google Translate is about 500 lines of code 398 00:21:38,465 --> 00:21:42,218 -that just calls in the machine learning. -Suppose, because of an oversight, 399 00:21:42,302 --> 00:21:46,973 none of the photos of parties you put in included any black or Hispanic people. 400 00:21:47,057 --> 00:21:49,351 The computer could decide that a rule of parties 401 00:21:49,434 --> 00:21:52,771 is only white and Asian people are invited. 402 00:21:52,854 --> 00:21:56,149 There's a lot of white and Asian guys who program. 403 00:21:56,232 --> 00:22:01,237 We should absolutely expand who gets to be in that design room 404 00:22:01,321 --> 00:22:02,447 for a million reasons. 405 00:22:02,530 --> 00:22:05,325 They will ask better questions if there is more life experience. 406 00:22:05,408 --> 00:22:08,995 But, in the end, if you're feeding your machine-learning system data, 407 00:22:09,079 --> 00:22:13,208 say, criminal-justice system that has structural racism built into that data, 408 00:22:13,291 --> 00:22:15,502 and let's say your machine-learning programmers 409 00:22:15,585 --> 00:22:20,423 look like a Benetton ad, different races, different sort of faces, 410 00:22:20,507 --> 00:22:22,592 different social backgrounds, 411 00:22:22,675 --> 00:22:25,303 that machine-learning system is still gonna learn from the data. 412 00:22:25,387 --> 00:22:28,056 Without people actively correcting for that, 413 00:22:28,139 --> 00:22:31,768 historical data will lead us to repeat the mistakes of the past. 414 00:22:33,812 --> 00:22:38,483 The story of coding is one of human ambition and creativity. 415 00:22:38,566 --> 00:22:41,528 [man] Liftoff of the Falcon 9 rocket. 416 00:22:41,611 --> 00:22:44,030 We have seen what we thought was unseeable. 417 00:22:44,906 --> 00:22:46,282 A black hole. 418 00:22:46,366 --> 00:22:50,203 We're building a new world with more and more intuitive tools 419 00:22:50,286 --> 00:22:56,042 that a greater number of people can use to help make sure that world is better. 420 00:22:56,126 --> 00:22:57,544 We have been on a journey 421 00:22:57,627 --> 00:23:00,422 to make computers more accessible to human beings 422 00:23:00,505 --> 00:23:02,424 and to a greater set of human beings. 423 00:23:02,507 --> 00:23:07,178 We're seeing this revolution play out before our eyes in the past 50 years, 424 00:23:07,262 --> 00:23:09,806 and that's why it's so exciting to be alive today. 425 00:23:09,889 --> 00:23:12,016 It's very important to really remember 426 00:23:12,142 --> 00:23:16,938 everything you use on your computer was created by some human being. 427 00:23:17,021 --> 00:23:18,773 You can be one of those people, actually, 428 00:23:18,857 --> 00:23:21,234 and it's really important you become one of those people. 429 00:23:21,317 --> 00:23:24,154 You can actually change the world in a really fundamental way. 430 00:23:24,237 --> 00:23:26,614 There's a world that's gonna be run 431 00:23:26,698 --> 00:23:30,827 using machine learning and data and traditional coding 432 00:23:30,910 --> 00:23:32,287 in more and more ways. 433 00:23:32,370 --> 00:23:35,123 And what we have to do as a society is say, 434 00:23:35,206 --> 00:23:38,209 "Okay. We've got this potent new technology, 435 00:23:38,293 --> 00:23:43,089 and in some ways, it could be great, but it's not gonna be great by itself." 436 00:23:44,799 --> 00:23:46,801 [closing music playing]