1 00:00:00,000 --> 00:00:00,270 2 00:00:00,270 --> 00:00:01,811 >> MITCH RESNICK: Hi, I'm Mitch Resnick. 3 00:00:01,811 --> 00:00:04,520 I'm a Professor of Learning Research here at the MIT Media Lab, 4 00:00:04,520 --> 00:00:07,052 and I also direct the MIT Scratch Team. 5 00:00:07,052 --> 00:00:08,760 JOHN MALONEY: I'm John Maloney, and I was 6 00:00:08,760 --> 00:00:11,950 a researcher for about 11 years working on the Scratch Project 7 00:00:11,950 --> 00:00:13,492 as the lead developer. 8 00:00:13,492 --> 00:00:15,200 MITCH RESNICK: We call our research group 9 00:00:15,200 --> 00:00:18,590 the Lifelong Kindergarten group because we're inspired by the way children 10 00:00:18,590 --> 00:00:19,730 learn in kindergarten. 11 00:00:19,730 --> 00:00:23,360 The classic kindergarten, children are playfully designing and creating 12 00:00:23,360 --> 00:00:26,130 things in collaboration with one another-- buildings towers 13 00:00:26,130 --> 00:00:29,240 with wooden blocks, making pictures with finger paints and crayons. 14 00:00:29,240 --> 00:00:32,840 As we developed Scratch, we wanted to capture that kindergarten spirit 15 00:00:32,840 --> 00:00:34,164 for learners of all ages. 16 00:00:34,164 --> 00:00:36,330 JOHN MALONEY: One of the big motivations for Scratch 17 00:00:36,330 --> 00:00:39,750 was this project that Mitchell and Natalie 18 00:00:39,750 --> 00:00:42,470 had started called the Computer Clubhouse. 19 00:00:42,470 --> 00:00:47,800 And they saw a lot of kids doing stuff with media tools like Photoshop 20 00:00:47,800 --> 00:00:52,774 and various sound production tools, but they weren't doing any programming. 21 00:00:52,774 --> 00:00:55,940 The kids weren't doing any programming, and we looked around and said, well, 22 00:00:55,940 --> 00:00:57,560 why aren't they doing it? 23 00:00:57,560 --> 00:00:59,600 The answer seemed to be that there wasn't 24 00:00:59,600 --> 00:01:01,740 a tool that was appropriate for that setting. 25 00:01:01,740 --> 00:01:03,640 >> MITCH RESNICK: As we were developing Scratch, 26 00:01:03,640 --> 00:01:07,790 I was inspired by some of the ideas of my mentor, Seymour Papert, who 27 00:01:07,790 --> 00:01:10,180 developed the Logo programming language. 28 00:01:10,180 --> 00:01:13,585 Seymour always used to say that it was important for a new technology 29 00:01:13,585 --> 00:01:18,074 to have a low floor-- meaning it's easy to get started with-- a high ceiling-- 30 00:01:18,074 --> 00:01:20,490 meaning you could do more and more complex things with it. 31 00:01:20,490 --> 00:01:23,875 We also wanted to have what we call "wide walls," 32 00:01:23,875 --> 00:01:25,625 meaning there are many different pathways, 33 00:01:25,625 --> 00:01:29,340 that you can do many different things with the software. 34 00:01:29,340 --> 00:01:32,670 >> It's not enough just to be able to get started easily and do complex things 35 00:01:32,670 --> 00:01:34,360 if everyone's doing the same thing. 36 00:01:34,360 --> 00:01:37,760 We want to have many different pathways because we know different people have 37 00:01:37,760 --> 00:01:39,760 different interests, and we wanted everyone 38 00:01:39,760 --> 00:01:42,640 to be able to work on projects that grew out of their own interests. 39 00:01:42,640 --> 00:01:44,640 >> JOHN MALONEY: I'd like to say that we probably-- 40 00:01:44,640 --> 00:01:48,440 there's-- we considered about 10 times more commands and features than have 41 00:01:48,440 --> 00:01:50,310 ever ended up in Scratch. 42 00:01:50,310 --> 00:01:54,400 We would have endless debates about exactly what 43 00:01:54,400 --> 00:01:58,420 wording to put on blocks and things like whether the default 44 00:01:58,420 --> 00:02:01,130 direction of the sprites should be up or to the right. 45 00:02:01,130 --> 00:02:05,720 So we thought about all of these things, especially the very early experiences 46 00:02:05,720 --> 00:02:07,740 that people would have with Scratch and trying 47 00:02:07,740 --> 00:02:11,332 to make it so that things could be discovered just by experimentation. 48 00:02:11,332 --> 00:02:14,040 >> MITCH RESNICK: When we were first designing Scratch, 49 00:02:14,040 --> 00:02:17,136 our target audience was ages 8 to 16. 50 00:02:17,136 --> 00:02:19,010 JOHN MALONEY: On the low end of the spectrum, 51 00:02:19,010 --> 00:02:23,470 we found that much younger kids were using Scratch than we ever anticipated. 52 00:02:23,470 --> 00:02:27,950 I still remember one-- the first Scratch day, I think, that we had, 53 00:02:27,950 --> 00:02:30,870 this little six year-old guy came in. 54 00:02:30,870 --> 00:02:34,630 On the upper end, I've been surprised at, for example, the use of Scratch 55 00:02:34,630 --> 00:02:39,540 in college classes like CS50 because we didn't really 56 00:02:39,540 --> 00:02:43,490 think of Scratch as a language for teaching computer science to computer 57 00:02:43,490 --> 00:02:44,610 scientists. 58 00:02:44,610 --> 00:02:47,500 >> Another surprise is how many adults are using it. 59 00:02:47,500 --> 00:02:52,130 We found that people who are like full-time programmers 60 00:02:52,130 --> 00:02:55,070 enjoy programming in Scratch as sort of a hobby. 61 00:02:55,070 --> 00:02:57,340 And so we've seen people on the Scratch website 62 00:02:57,340 --> 00:03:02,900 create projects that do, for example, ray tracing 3-D rendering systems. 63 00:03:02,900 --> 00:03:04,650 I couldn't believe it when I saw that. 64 00:03:04,650 --> 00:03:06,950 >> MITCH RESNICK: As we started to work on Scratch, 65 00:03:06,950 --> 00:03:10,030 we want to make it different from previous programming languages 66 00:03:10,030 --> 00:03:13,440 in order to make it accessible to a much wider range of people. 67 00:03:13,440 --> 00:03:16,310 So we had three core guiding principles. 68 00:03:16,310 --> 00:03:18,600 First, we want to make it more tinker-able, 69 00:03:18,600 --> 00:03:22,340 so you could build up programs much like putting Lego bricks together. 70 00:03:22,340 --> 00:03:25,200 So we had the visual programming blocks that snap together. 71 00:03:25,200 --> 00:03:27,460 Second of all, we want to let people work 72 00:03:27,460 --> 00:03:31,590 on more meaningful projects, things that were personally relevant for them. 73 00:03:31,590 --> 00:03:33,430 That's why we make Scratch so media-rich. 74 00:03:33,430 --> 00:03:35,819 >> Third of all, we want to make it more social because you 75 00:03:35,819 --> 00:03:37,610 know a lot of the best learning experiences 76 00:03:37,610 --> 00:03:39,760 come when we interact with others. 77 00:03:39,760 --> 00:03:43,120 So we added the Scratch online community from the very beginning, 78 00:03:43,120 --> 00:03:45,500 right when we launched the software so that people 79 00:03:45,500 --> 00:03:47,490 would have an audience for their creations 80 00:03:47,490 --> 00:03:50,050 and also get inspired by what other people created. 81 00:03:50,050 --> 00:03:54,160 Since we launched Scratch, there have been around 4.5 million projects 82 00:03:54,160 --> 00:03:56,290 that have been shared on the Scratch website. 83 00:03:56,290 --> 00:03:59,440 >> JOHN MALONEY: So I actually joined the project 84 00:03:59,440 --> 00:04:02,310 by sort of pleading to Mitchell. 85 00:04:02,310 --> 00:04:04,630 I asked to join when I heard about it because I thought 86 00:04:04,630 --> 00:04:07,088 it was going to be such a cool thing, and I wanted to help. 87 00:04:07,088 --> 00:04:10,340 But my favorite language was Smalltalk, and I 88 00:04:10,340 --> 00:04:13,960 had helped develop this version of Smalltalk called Squeak. 89 00:04:13,960 --> 00:04:17,320 So I said, well, I'll come and do this work 90 00:04:17,320 --> 00:04:19,490 as long as I can build it in Squeak. 91 00:04:19,490 --> 00:04:22,460 And Mitchell said, oh sure, I don't care what it's made in. 92 00:04:22,460 --> 00:04:23,460 Just make it work. 93 00:04:23,460 --> 00:04:26,480 And so that's how it got to be written in Squeak. 94 00:04:26,480 --> 00:04:29,430 >> So with Scratch 2.0, we thought that we would 95 00:04:29,430 --> 00:04:34,280 try to make Scratch reach out to more people by making it a cloud-based app. 96 00:04:34,280 --> 00:04:37,820 And although there was a version of Squeak that ran in the browser, 97 00:04:37,820 --> 00:04:40,500 it required downloading and installing a plug-in. 98 00:04:40,500 --> 00:04:43,750 And we knew that a lot of people would have trouble doing that, 99 00:04:43,750 --> 00:04:47,090 either because it was a complicated process 100 00:04:47,090 --> 00:04:50,990 or because their administration at their school or whatever wouldn't allow it. 101 00:04:50,990 --> 00:04:54,430 So we wanted something that was kind of built into the browsers 102 00:04:54,430 --> 00:04:57,580 or was kind of by default there on most browsers. 103 00:04:57,580 --> 00:04:58,710 >> We considered Java. 104 00:04:58,710 --> 00:05:00,070 We considered Silverlight. 105 00:05:00,070 --> 00:05:03,130 We considered JavaScript, and we considered Flash. 106 00:05:03,130 --> 00:05:05,550 At that point, Flash was really on the ascendancy. 107 00:05:05,550 --> 00:05:09,760 Adobe was really pushing it, and we didn't yet know, you know, 108 00:05:09,760 --> 00:05:13,640 that it was going to be such a problem on iOS and mobile devices and so forth. 109 00:05:13,640 --> 00:05:18,516 So we went with Flash, and in retrospect, you know, 110 00:05:18,516 --> 00:05:20,890 it would've maybe been nicer if we'd gone with JavaScript 111 00:05:20,890 --> 00:05:22,440 because that's become the dominant language. 112 00:05:22,440 --> 00:05:24,565 >> But I don't think there's any way we could possibly 113 00:05:24,565 --> 00:05:28,760 have seen all the things that were going to change between then and now. 114 00:05:28,760 --> 00:05:32,160 It takes three years or so to put together something like this, 115 00:05:32,160 --> 00:05:35,390 so you make your best guess and hope for the best. 116 00:05:35,390 --> 00:05:38,820 >> MITCH RESNICK: One of our new projects is called Scratch Junior, 117 00:05:38,820 --> 00:05:41,640 trying to have Scratch go down to even younger kids. 118 00:05:41,640 --> 00:05:43,870 It's being aimed at age five to seven year-olds, 119 00:05:43,870 --> 00:05:46,307 like kindergarten to second grade. 120 00:05:46,307 --> 00:05:48,140 The first version of it will be on the iPod, 121 00:05:48,140 --> 00:05:51,670 and we plan to have it come out in the middle of 2014. 122 00:05:51,670 --> 00:05:54,230 So Scratch Junior will be a somewhat scaled down version. 123 00:05:54,230 --> 00:05:56,350 It'll have somewhat fewer features and also 124 00:05:56,350 --> 00:05:59,980 make things more developmentally appropriate for younger kids. 125 00:05:59,980 --> 00:06:03,330 >> JOHN MALONEY: I enjoy the fact that Scratch 2.0 especially 126 00:06:03,330 --> 00:06:08,541 is sort of secretly higher performance than you might imagine. 127 00:06:08,541 --> 00:06:10,790 By default, when you're doing animations and so forth, 128 00:06:10,790 --> 00:06:14,470 you're limited to the frame rate of the-- sort of the update 129 00:06:14,470 --> 00:06:17,000 rate of the screen, and we've designed it deliberately 130 00:06:17,000 --> 00:06:19,600 so that it only does a little bit per frame 131 00:06:19,600 --> 00:06:22,710 so that if you say repeat 10 move 10, you actually 132 00:06:22,710 --> 00:06:26,980 see it move in 10 little step-- 10 little increments. 133 00:06:26,980 --> 00:06:30,250 >> However, there's a sort of hidden mode, called turbo mode, 134 00:06:30,250 --> 00:06:33,340 which you can get by Shift-Clicking on the green flag, 135 00:06:33,340 --> 00:06:37,180 and that basically lets it run kind of as fast as it can. 136 00:06:37,180 --> 00:06:40,260 So this is what lets you do things like the ray tracer, 137 00:06:40,260 --> 00:06:42,260 and you don't have to-- the original ray tracer, 138 00:06:42,260 --> 00:06:45,200 you had to wait about half an hour to see the results because it 139 00:06:45,200 --> 00:06:47,600 was kind of chugging through one frame at a time. 140 00:06:47,600 --> 00:06:50,160 But with the Shift-Click thing, you can get the results 141 00:06:50,160 --> 00:06:53,520 in something like 20 seconds. 142 00:06:53,520 --> 00:06:57,960 So, all of a sudden, you can do sort of high level things in Scratch, 143 00:06:57,960 --> 00:07:00,087 but it's a hidden feature. 144 00:07:00,087 --> 00:07:00,587