WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000 00:01:19.147 --> 00:01:20.230 SPEAKER 1: Good afternoon. 00:01:20.230 --> 00:01:21.137 My name is Sarah. 00:01:21.137 --> 00:01:22.470 SPEAKER 2: And my name is Grant. 00:01:22.470 --> 00:01:25.678 SPEAKER 1: And we are The Harvard Crocodilians and the Radcliffe Pitches. 00:01:25.678 --> 00:01:27.720 SPEAKER 2: Now, Sarah and I understand that today 00:01:27.720 --> 00:01:29.490 is the final lecture of CS50. 00:01:29.490 --> 00:01:31.170 SPEAKER 1: It's been a tough semester. 00:01:31.170 --> 00:01:34.323 We made it through P sets 4, 5, and even finance. 00:01:34.323 --> 00:01:36.490 SPEAKER 2: Now, I know this is an unpopular opinion, 00:01:36.490 --> 00:01:38.040 but I particularly enjoyed finance. 00:01:38.040 --> 00:01:40.560 I spent a lot of time with my flask. 00:01:40.560 --> 00:01:42.300 SPEAKER 1: The P set? 00:01:42.300 --> 00:01:45.390 SPEAKER 2: There was a P set? 00:01:45.390 --> 00:01:48.150 SPEAKER 1: Well, at least things are looking up. 00:01:48.150 --> 00:01:49.810 Today is our last lecture. 00:01:49.810 --> 00:01:51.540 And look how far we've come. 00:01:51.540 --> 00:01:55.765 If I were an emoji right now, I'd be the face with tears of joy. 00:01:55.765 --> 00:01:58.390 SPEAKER 2: Sorry about that we're just trying to work some CS50 00:01:58.390 --> 00:01:59.740 references into the intro. 00:01:59.740 --> 00:02:06.880 I mean, boy I sure hope this Tide man doesn't run off my Mario filter. 00:02:06.880 --> 00:02:08.440 SPEAKER 1: You could say that. 00:02:08.440 --> 00:02:14.737 For loop x equals open bracket 1 comma 2 close bracket. 00:02:14.737 --> 00:02:17.320 Boy, I sure wish we had Check 50 see if these jokes were funny 00:02:17.320 --> 00:02:19.768 when we wrote them. 00:02:19.768 --> 00:02:20.560 SPEAKER 2: Any who. 00:02:20.560 --> 00:02:22.840 We hope that you'll enjoy this brief serenade. 00:02:25.350 --> 00:02:27.240 [SCATTING] 00:02:27.240 --> 00:02:29.282 SPEAKER 1: (SINGING) Well, you lace up your boats 00:02:29.282 --> 00:02:32.310 and you walk on down to an knocked down shack edge of town. 00:02:32.310 --> 00:02:34.435 There's a landing [INAUDIBLE] that just won't quit. 00:02:34.435 --> 00:02:35.390 [INTERPOSING VOICES] 00:02:41.520 --> 00:02:43.230 SPEAKER 1: Well, there's fryers. 00:02:43.230 --> 00:02:44.070 SPEAKER 2: Broilers. 00:02:44.070 --> 00:02:45.195 SPEAKER 1: And [INAUDIBLE]. 00:02:45.195 --> 00:02:46.728 SPEAKER 2: Barbeque ribs. 00:02:46.728 --> 00:02:48.936 SPEAKER 1: But the trick of the train is what they're 00:02:48.936 --> 00:02:51.420 serving at those fine [INAUDIBLE]. 00:02:51.420 --> 00:02:54.510 You're going to spend the rest of your [? brights ?] down 00:02:54.510 --> 00:02:56.766 at the house of blue lights. 00:02:56.766 --> 00:02:59.682 [ALL SCATTING] 00:03:08.280 --> 00:03:10.610 Down at the house, the house of blue lights. 00:03:10.610 --> 00:03:12.960 Well, you lace up your boots and you walk on down 00:03:12.960 --> 00:03:14.995 to a knock down shack on the edge of town. 00:03:14.995 --> 00:03:17.370 There's a landing [INAUDIBLE] there that won't just quit. 00:03:17.370 --> 00:03:21.720 You walk until you see a blue light [INAUDIBLE] fall in there. 00:03:21.720 --> 00:03:25.170 Can you dig them sights down at the house, the house of blue lights? 00:03:25.170 --> 00:03:27.000 [ALL SCATTING] 00:03:43.810 --> 00:03:46.090 You lace up your boots and you walk on down 00:03:46.090 --> 00:03:48.790 to a knocked down shack on the edge of town. 00:03:48.790 --> 00:03:51.250 There's a lot of people coming there that just won't quit. 00:03:51.250 --> 00:03:54.550 You walk until you see a blue light [INAUDIBLE] fall in there. 00:03:54.550 --> 00:03:59.110 Can you dig them sights down at the house, the house of blue lights? 00:04:01.975 --> 00:04:03.850 [ALL SCATTING] 00:04:05.590 --> 00:04:09.160 ALL: (SINGING) Be sure to spend your brights down 00:04:09.160 --> 00:04:13.688 at the house of blue lights. 00:04:13.688 --> 00:04:16.604 [APPLAUSE] 00:04:25.380 --> 00:04:27.130 SPEAKER 3: Good afternoon, everyone. 00:04:27.130 --> 00:04:28.710 We are the Harvard Krokodiloes. 00:04:28.710 --> 00:04:31.560 And it is such an honor to be here with the Radcliffe Pitches 00:04:31.560 --> 00:04:33.810 performing for CS50's final lecture. 00:04:33.810 --> 00:04:35.250 Congratulations to everyone. 00:04:35.250 --> 00:04:37.845 And we hope you'll enjoy this our tribute to CS50. 00:04:44.410 --> 00:04:47.140 1: 1 2, a, 1, 2, 3, 4. 00:04:47.140 --> 00:04:50.640 ALL: [VOCALIZING] 00:04:57.340 --> 00:05:02.530 SPEAKER 2: (SINGING) C is for the language I once knew. 00:05:02.530 --> 00:05:07.420 O is for O notation, I must do. 00:05:07.420 --> 00:05:12.580 D is for dynamic, flask run and finance it. 00:05:12.580 --> 00:05:17.170 E is even more than David Malan can adore. 00:05:17.170 --> 00:05:21.183 So code is all that I can give to you. 00:05:21.183 --> 00:05:22.600 ALL: (SINGING) He can give to you. 00:05:22.600 --> 00:05:26.350 SPEAKER 2: Code debugging it since, P set 2. 00:05:26.350 --> 00:05:27.927 ALL: (SINGING) Bugs in P set 2. 00:05:27.927 --> 00:05:30.010 SPEAKER 2: (SINGING) Soon deadlines, I'll make it. 00:05:30.010 --> 00:05:32.350 Hit Compile and please don't break it. 00:05:32.350 --> 00:05:35.440 Code was made by me for you. 00:05:35.440 --> 00:05:41.530 ALL: [VOCALIZING] (SINGING) C is for the language I once knew. 00:05:41.530 --> 00:05:46.780 O is for O notation I must do. 00:05:46.780 --> 00:05:52.210 D is for dynamic, flask run and finance it. 00:05:52.210 --> 00:05:55.990 E Is even more than David Malan can adore. 00:05:55.990 --> 00:06:01.000 So code is all that I can give to you. 00:06:01.000 --> 00:06:05.880 Code debugging, it says P set 2. 00:06:05.880 --> 00:06:08.080 Soon deadlines, I'll make it. 00:06:08.080 --> 00:06:10.450 Hit Compile, but please don't break it. 00:06:10.450 --> 00:06:14.720 Code was made by me for you. 00:06:14.720 --> 00:06:17.830 SPEAKER 2: (SINGING) C is for the language. 00:06:17.830 --> 00:06:19.930 SPEAKER 3: 0,1,0,0, 0.1,0, 0. 00:06:19.930 --> 00:06:22.150 SPEAKER 2: (SINGING) O is for O notation. 00:06:22.150 --> 00:06:24.485 SPEAKER 3: 0, 1, 0, 0, 1, 0 00:06:24.485 --> 00:06:26.770 SPEAKER 2: (SINGING) D is for dynamic. 00:06:26.770 --> 00:06:29.500 Flask run and finance it. 00:06:29.500 --> 00:06:33.460 E Is even more than David Malan can adore. 00:06:33.460 --> 00:06:38.500 So code is all that I can give to you. 00:06:38.500 --> 00:06:43.120 Code debugging it, sends P set 2. 00:06:43.120 --> 00:06:45.700 Soon deadlines, I'll make it. 00:06:45.700 --> 00:06:48.010 Hit Compile and please don't break it. 00:06:48.010 --> 00:06:50.740 Code was made by me for. 00:06:50.740 --> 00:06:53.200 Code was made by me for. 00:06:53.200 --> 00:06:58.225 Code was made by me for you. 00:06:58.225 --> 00:06:59.920 ALL: [VOCALIZING] 00:07:02.512 --> 00:07:03.595 SPEAKER 2: (SINGING) Code. 00:07:06.087 --> 00:07:07.170 DAVID J. MALAN: All right. 00:07:07.170 --> 00:07:10.035 [APPLAUSE] 00:07:18.885 --> 00:07:19.830 All Right. 00:07:19.830 --> 00:07:21.720 This is CS50. 00:07:21.720 --> 00:07:26.160 And CS50, this was the Harvard Krokodiloes and the Radcliffe Pitches. 00:07:26.160 --> 00:07:28.740 If one more time we can thank them for joining us today. 00:07:28.740 --> 00:07:31.035 [APPLAUSE] 00:07:33.790 --> 00:07:38.640 So this is already week 10, our last, and indeed among the goals 00:07:38.640 --> 00:07:41.460 for today are to hopefully give you all the more of appreciation 00:07:41.460 --> 00:07:43.470 of truly just how far you've come. 00:07:43.470 --> 00:07:46.380 Recall that in week 0, we began with this visual 00:07:46.380 --> 00:07:51.600 here whereby it was described this class as a bit of a fire hose, whereby 00:07:51.600 --> 00:07:55.980 drinking from that fire hose or really a fire hose from a water fountain 00:07:55.980 --> 00:07:58.417 is not unlike getting an education down the road too. 00:07:58.417 --> 00:08:01.500 And so this is to say, that if you're feeling like you didn't quite get it 00:08:01.500 --> 00:08:03.480 all down, like that's actually OK. 00:08:03.480 --> 00:08:04.590 And that's to be expected. 00:08:04.590 --> 00:08:08.170 And even if you felt that with each passing week, 0, 1, 2 all the way up 00:08:08.170 --> 00:08:11.250 now till 10, it never really ever got easier, 00:08:11.250 --> 00:08:15.960 perhaps just consider that what was once hard like Mario and getting 00:08:15.960 --> 00:08:18.600 "Hello, world" to compile is indeed the right measure 00:08:18.600 --> 00:08:21.450 of the delta between week 0 and now in week 10. 00:08:21.450 --> 00:08:25.770 In fact, you might recall that again in week 0, 2/3 of your classmates 00:08:25.770 --> 00:08:28.180 had never taken a CS course before. 00:08:28.180 --> 00:08:29.640 Now, of course, you all have. 00:08:29.640 --> 00:08:32.794 And indeed, if you think back to this final sentiment from week 0, 00:08:32.794 --> 00:08:34.919 that indeed "what ultimately matters in this course 00:08:34.919 --> 00:08:37.320 is not where you end up relative to your classmates, 00:08:37.320 --> 00:08:41.080 but where you end up relative to where you yourself began." 00:08:41.080 --> 00:08:44.350 So I would take some pride, take some satisfaction, take some relief, 00:08:44.350 --> 00:08:47.100 even though, a little bit more work does remain at really just how 00:08:47.100 --> 00:08:48.810 far you've come since that week 0. 00:08:48.810 --> 00:08:52.200 And recall that in week 0, we literally started with just 0s and 1s. 00:08:52.200 --> 00:08:56.580 And by now, many of you might have gleaned that these 64 0s and 1s have 00:08:56.580 --> 00:08:58.410 been spelling something week by week. 00:08:58.410 --> 00:09:03.360 In fact, today is our very last message here in binary encoded on stage. 00:09:03.360 --> 00:09:05.490 But then quickly, we introduced scratch and we 00:09:05.490 --> 00:09:09.510 started to assemble some building blocks of programming, loops, conditions, 00:09:09.510 --> 00:09:11.310 loops, conditions, functions and the like, 00:09:11.310 --> 00:09:14.122 but without all the distractions of semicolons and curly braces 00:09:14.122 --> 00:09:16.830 and all of that which admittedly we introduced the next week when 00:09:16.830 --> 00:09:18.130 we introduced you to C. 00:09:18.130 --> 00:09:20.460 But even now that we've transitioned to Python, 00:09:20.460 --> 00:09:23.068 hopefully even those kinds of curiosities or confusions 00:09:23.068 --> 00:09:25.110 are hopefully starting to just get more familiar. 00:09:25.110 --> 00:09:28.230 And so you finally start to see the missing semicolon as opposed 00:09:28.230 --> 00:09:30.210 to spending time on that kind of struggle. 00:09:30.210 --> 00:09:33.480 Recall too, that in week 2, we started talking already about memory 00:09:33.480 --> 00:09:36.120 and how you can manage things in arrays that later 00:09:36.120 --> 00:09:37.920 became, of course, in Python, lists. 00:09:37.920 --> 00:09:42.300 The week after we talked not only about debugging bugs in code 00:09:42.300 --> 00:09:44.450 but how to debug those same programs. 00:09:44.450 --> 00:09:46.450 Thereafter, we started talking about algorithms, 00:09:46.450 --> 00:09:48.495 and we took a step back from code and looked 00:09:48.495 --> 00:09:51.120 at the bubble sorts and the selection sorts and the merge sorts 00:09:51.120 --> 00:09:53.905 and all of the searches as well that go hand in hand with that. 00:09:53.905 --> 00:09:57.030 And indeed, this ultimately is what a lot of problem solving moving forward 00:09:57.030 --> 00:10:00.030 is going to be about, just solving problems with some form of algorithm. 00:10:00.030 --> 00:10:03.210 And you have so many different languages in your toolkit 00:10:03.210 --> 00:10:05.370 now with which to approach problems like those. 00:10:05.370 --> 00:10:07.830 We talked thereafter about pointers, which 00:10:07.830 --> 00:10:10.083 are not likely to come back in any modern languages 00:10:10.083 --> 00:10:12.000 that you now use but hopefully you have an all 00:10:12.000 --> 00:10:13.710 the better of a sense underneath the hood 00:10:13.710 --> 00:10:15.780 of like what's going on inside of the computer 00:10:15.780 --> 00:10:18.120 so that when you're designing something, you're using something, 00:10:18.120 --> 00:10:21.090 something crashes, you at least have a mental model for what's going on 00:10:21.090 --> 00:10:24.810 and it's no longer that week 0 Black box as it once was. 00:10:24.810 --> 00:10:26.730 I mean, you built things like this. 00:10:26.730 --> 00:10:29.370 Think back to week 5 when you built your own hash table. 00:10:29.370 --> 00:10:31.770 And those things are everywhere, key value pairs, 00:10:31.770 --> 00:10:36.720 whether it's in Python or in C or if it's now in CSS and JavaScript 00:10:36.720 --> 00:10:40.960 and even HTML, like that principle of key value pairs is really everywhere. 00:10:40.960 --> 00:10:43.950 And so, of course, now code doesn't necessarily have to look like this. 00:10:43.950 --> 00:10:46.470 It now wonderfully looks a little something more like this. 00:10:46.470 --> 00:10:49.680 But eventually, you're probably not, I'm not going to use Python anymore. 00:10:49.680 --> 00:10:51.810 Something new and better is going to come along. 00:10:51.810 --> 00:10:53.790 But odds are, like a lot of the building blocks 00:10:53.790 --> 00:10:57.480 from these past 11 weeks are still going to be useful for wrapping 00:10:57.480 --> 00:10:59.100 your mind around those new worlds. 00:10:59.100 --> 00:11:01.427 And indeed SQL, we introduced to you a little bit too. 00:11:01.427 --> 00:11:03.510 And even if you don't feel yourself yet an expert, 00:11:03.510 --> 00:11:05.820 hopefully you have a sense of what you can do with it 00:11:05.820 --> 00:11:07.500 and what problems you can solve. 00:11:07.500 --> 00:11:11.220 It's of course a better alternative to something simple like a spreadsheet. 00:11:11.220 --> 00:11:13.600 And now of course, web stuff is everywhere, 00:11:13.600 --> 00:11:17.062 whether it's on your laptop or desktop or even a lot of the mobile apps 00:11:17.062 --> 00:11:19.020 that you use on your phone, even though they're 00:11:19.020 --> 00:11:22.530 native applications, like you install them from Google Play or the Apple App 00:11:22.530 --> 00:11:23.280 Store. 00:11:23.280 --> 00:11:26.973 They're implemented increasingly with HTML, CSS, and JavaScript, 00:11:26.973 --> 00:11:28.890 but they're put in a little rectangular window 00:11:28.890 --> 00:11:31.770 so you don't even notice that that's actually really just an embedded 00:11:31.770 --> 00:11:32.430 browser. 00:11:32.430 --> 00:11:34.397 And then of course, you can build things, 00:11:34.397 --> 00:11:37.230 as you might for your final project, that too might very well be web 00:11:37.230 --> 00:11:38.470 based if you go that route. 00:11:38.470 --> 00:11:41.010 I mean, I'm still clinging to like the very first like web 00:11:41.010 --> 00:11:42.840 app I ever made years ago. 00:11:42.840 --> 00:11:46.725 But honestly, I do that in part because I was just so darn proud 00:11:46.725 --> 00:11:48.600 that like I taught myself how to do something 00:11:48.600 --> 00:11:51.070 and it actually worked and was used by other people. 00:11:51.070 --> 00:11:54.450 So whether it's just used by you or your classmates or your roommates 00:11:54.450 --> 00:11:56.340 or your family or your company down the line, 00:11:56.340 --> 00:11:58.090 there's a great sense of satisfaction that 00:11:58.090 --> 00:12:01.200 comes despite all of the pain that might be along the way 00:12:01.200 --> 00:12:03.930 when you just can't see or fix that bug. 00:12:03.930 --> 00:12:05.760 Now, of course we'll transition as you'll 00:12:05.760 --> 00:12:10.680 see in the coming days to empowering you to code client side as well. 00:12:10.680 --> 00:12:13.680 Up until now, you've been using our own VS Code installation 00:12:13.680 --> 00:12:15.722 in the cloud, which is nice because you've got up 00:12:15.722 --> 00:12:17.730 and running super fast in week 1, focusing only 00:12:17.730 --> 00:12:20.580 on code challenges not on technical difficulties. 00:12:20.580 --> 00:12:24.090 But among the goals now, if you so choose and want to program 00:12:24.090 --> 00:12:26.880 after this class, even if you never take another CS course before, 00:12:26.880 --> 00:12:30.780 you can use these same real world de facto standard tools 00:12:30.780 --> 00:12:32.220 on your own Mac or PC. 00:12:32.220 --> 00:12:34.820 And so pictured here is screenshot of like VS Code on the Mac. 00:12:34.820 --> 00:12:36.570 And even though, yes, you're going to have 00:12:36.570 --> 00:12:38.653 to jump through a couple of more hoops to just get 00:12:38.653 --> 00:12:41.258 Python or some other language working on your own Mac or PC, 00:12:41.258 --> 00:12:43.800 like that's what programming is ultimately going to be about. 00:12:43.800 --> 00:12:46.450 And we deliberately transition you to this at term's end 00:12:46.450 --> 00:12:49.950 so that now you have 11 weeks of more comfort under your belt 00:12:49.950 --> 00:12:52.680 with which to solve sort of silly technical support 00:12:52.680 --> 00:12:55.570 headaches that might have been deal breakers so many weeks ago. 00:12:55.570 --> 00:12:58.680 So there's still more to be done in the coming weeks. 00:12:58.680 --> 00:13:01.620 And indeed a support structure therefore, the CS50 hackathon, 00:13:01.620 --> 00:13:05.220 of course, will be this 7:00 PM till 7:00 AM 00:13:05.220 --> 00:13:07.380 opportunity to dive into your final project-- 00:13:07.380 --> 00:13:10.530 well, really continue diving into your final project ideally 00:13:10.530 --> 00:13:14.040 at that point alongside classmates, perhaps your project partners 00:13:14.040 --> 00:13:15.630 if you're working collaboratively. 00:13:15.630 --> 00:13:19.593 And awaiting you will be such memories and excitement hopefully as these, 00:13:19.593 --> 00:13:22.260 even as you then turn your attention back to your final project. 00:13:22.260 --> 00:13:26.160 There of course, will be several meals during the day culminating with 5:00 AM 00:13:26.160 --> 00:13:29.160 shuttles to IHOP, the local pancake place, 00:13:29.160 --> 00:13:33.010 if you are so awake at that point or even if you get there. 00:13:33.010 --> 00:13:35.970 This is not an uncommon sight as you might recall from week 0. 00:13:35.970 --> 00:13:38.520 And then lastly is the CS50 fair, which is finally 00:13:38.520 --> 00:13:41.247 back after a couple of years now of it not being on campus. 00:13:41.247 --> 00:13:43.080 And this will be an opportunity for everyone 00:13:43.080 --> 00:13:45.873 to present their final projects to passers by, 00:13:45.873 --> 00:13:48.540 classmates, faculty and staff and really just delight in what it 00:13:48.540 --> 00:13:52.520 is you created on your Mac, your PC, your phone, in the cloud or anywhere 00:13:52.520 --> 00:13:53.020 else. 00:13:53.020 --> 00:13:54.630 And indeed, it's just going to be an opportunity 00:13:54.630 --> 00:13:57.060 to bring your laptop to a shared space or your phone 00:13:57.060 --> 00:14:00.750 and introduce your project to passers by such as might appear 00:14:00.750 --> 00:14:03.870 and ultimately celebrate what you all accomplished. 00:14:03.870 --> 00:14:07.710 And indeed will you be handed at the CS50 fair, your very own I took 00:14:07.710 --> 00:14:12.490 CS50 t-shirt, which I daresay, I'm still wearing all of these years later. 00:14:12.490 --> 00:14:13.605 And so you too-- 00:14:13.605 --> 00:14:15.600 [APPLAUSE] 00:14:15.600 --> 00:14:19.240 --will have that ahead of you as well. 00:14:19.240 --> 00:14:23.010 So for what's on the agenda today, we thought we would not only look back 00:14:23.010 --> 00:14:23.757 but look forward. 00:14:23.757 --> 00:14:26.340 But first, we wanted to thank so many of the team members that 00:14:26.340 --> 00:14:28.500 have been helping both on stage and off who've 00:14:28.500 --> 00:14:32.370 made this course and these sections and so much more about CS50 possible. 00:14:32.370 --> 00:14:34.590 Of course, the building that we are now in, 00:14:34.590 --> 00:14:37.410 there's a whole team downstairs in Memorial Hall who helps 00:14:37.410 --> 00:14:39.240 us get set up and organized each day. 00:14:39.240 --> 00:14:40.230 Our thanks to them. 00:14:40.230 --> 00:14:43.350 There's the education support services team who makes everything look 00:14:43.350 --> 00:14:46.140 and sound so well down here, especially when we have all of them 00:14:46.140 --> 00:14:47.820 more microphones as well. 00:14:47.820 --> 00:14:50.310 Our friends, the Harvard Krokodiloes and the Radcliffe 00:14:50.310 --> 00:14:55.890 Pitches most recently and then of course CS50's own team, that [INAUDIBLE] 00:14:55.890 --> 00:14:59.130 CS50's own favorite restaurant, Chang Chau, down the road. 00:14:59.130 --> 00:15:02.340 Indeed if you find yourself in Cambridge for the next 1, 2, 3, 4 years 00:15:02.340 --> 00:15:05.160 or visiting from out of town, do pay a visit to our friends 00:15:05.160 --> 00:15:06.090 just down the road. 00:15:06.090 --> 00:15:09.060 And in fact, we'll have our very last CS50 lunch this Friday 00:15:09.060 --> 00:15:11.130 if you're able locally to partake. 00:15:11.130 --> 00:15:14.790 And then there are CS50's own team, both on stage and off. 00:15:14.790 --> 00:15:15.780 And my thanks, truly. 00:15:15.780 --> 00:15:18.540 Because not only do they make everything run so smoothly, 00:15:18.540 --> 00:15:21.960 they capture it for students here who might not be physically present here. 00:15:21.960 --> 00:15:24.900 For our friends down in New Haven at Yale and certainly for anyone 00:15:24.900 --> 00:15:27.100 online who might be tuning in as well. 00:15:27.100 --> 00:15:30.220 And then lastly, wanted to thank, of course, 00:15:30.220 --> 00:15:33.240 the huge team of your classmates, your peers that 00:15:33.240 --> 00:15:37.230 make CS50 possible in sections and office hours, tutorials, and more. 00:15:37.230 --> 00:15:40.980 Allow me to share with you the outtakes, so 00:15:40.980 --> 00:15:44.520 that even we, the teaching staff sometimes struggle with computer 00:15:44.520 --> 00:15:47.910 science, here are some of the clips that we captured when just passing 00:15:47.910 --> 00:15:50.340 packets via TCPIP a while back. 00:15:50.340 --> 00:15:51.540 You saw the finally-- 00:15:51.540 --> 00:15:54.240 the nicely polished version, but here are, 00:15:54.240 --> 00:15:57.585 if I may, if we could dim the lights, are some of the outtakes. 00:15:57.585 --> 00:16:00.510 [MUSIC PLAYING] 00:16:00.510 --> 00:16:01.110 Buffering. 00:16:01.110 --> 00:16:03.330 OK. 00:16:03.330 --> 00:16:06.450 Josh, nice. 00:16:06.450 --> 00:16:07.300 Helen, Oh. 00:16:07.300 --> 00:16:13.845 [CHUCKLES] Yet, Moni, No, oh, wait. 00:16:19.872 --> 00:16:20.830 That was amazing, Josh. 00:16:23.790 --> 00:16:25.326 But. 00:16:25.326 --> 00:16:26.025 Um, Sophie. 00:16:33.210 --> 00:16:35.730 Amazing. 00:16:35.730 --> 00:16:37.850 That was perfect. 00:16:37.850 --> 00:16:38.870 Moni. 00:16:38.870 --> 00:16:42.240 [CHUCKLES] I think I-- 00:16:42.240 --> 00:16:44.880 SPEAKER 4: Hey, un-mute. 00:16:44.880 --> 00:16:46.403 DAVID J. MALAN: Over to Yoel. 00:16:46.403 --> 00:16:47.320 SPEAKER 4: [INAUDIBLE] 00:16:47.320 --> 00:16:48.153 DAVID J. MALAN: Guy. 00:16:51.980 --> 00:16:53.090 That was amazing. 00:16:53.090 --> 00:16:53.788 Thank you all. 00:16:53.788 --> 00:16:54.580 SPEAKER 4: So good. 00:16:56.568 --> 00:16:59.360 DAVID J. MALAN: Indeed, in that moment, if we could, just one round 00:16:59.360 --> 00:17:01.790 of applause for everyone who's helped out this semester. 00:17:01.790 --> 00:17:06.030 [APPLAUSE] 00:17:06.030 --> 00:17:11.319 So back in week 0, we introduced you, of course, 00:17:11.319 --> 00:17:13.920 to this idea of computational thinking, which 00:17:13.920 --> 00:17:16.859 is to think a little more methodically, a little more algorithmically. 00:17:16.859 --> 00:17:18.869 And by way of these various languages, hopefully, that 00:17:18.869 --> 00:17:20.950 is something you notice, maybe not in the moment, 00:17:20.950 --> 00:17:24.000 but in the months and the years to come that you do find that your thoughts are 00:17:24.000 --> 00:17:27.000 indeed a little more cleaned up and you're just able to express yourself 00:17:27.000 --> 00:17:30.630 a little more precisely and even spot illogic in someone else's document 00:17:30.630 --> 00:17:31.760 or statements as well. 00:17:31.760 --> 00:17:33.510 But at the end of the day, really a course 00:17:33.510 --> 00:17:35.580 like this is also about critical thinking. 00:17:35.580 --> 00:17:38.010 And indeed, rewind again to week 0 when we 00:17:38.010 --> 00:17:41.850 frame the entirety of computer science as really just this, problem solving. 00:17:41.850 --> 00:17:45.120 And any problem in the world, be it CS or otherwise, has some input, 00:17:45.120 --> 00:17:47.130 and we decided how to represent those inputs. 00:17:47.130 --> 00:17:49.320 It needs some output, the solution there too. 00:17:49.320 --> 00:17:52.620 And then all of what you focused on doing and learning and applying 00:17:52.620 --> 00:17:56.220 these past several weeks is in that proverbial black box, which hopefully 00:17:56.220 --> 00:17:59.670 is not such an abstraction anymore but is indeed something 00:17:59.670 --> 00:18:02.495 that you know how to harness and know what could be going on 00:18:02.495 --> 00:18:05.370 underneath the hood, even if it's in some technology or some language 00:18:05.370 --> 00:18:09.000 that maybe we ourselves didn't cover, because a lot of those first principles 00:18:09.000 --> 00:18:10.150 remain the same. 00:18:10.150 --> 00:18:13.840 Now, along the way, we talked about the quality of solutions to those problems. 00:18:13.840 --> 00:18:16.200 We happen to focus on correctness, just does it work? 00:18:16.200 --> 00:18:19.110 Design, which is a bit more qualitative and subjective. 00:18:19.110 --> 00:18:21.000 And then style, the aesthetics of it all. 00:18:21.000 --> 00:18:22.980 And these two are characteristic, maybe not 00:18:22.980 --> 00:18:26.040 with these same words, of just how you might write or evaluate 00:18:26.040 --> 00:18:29.590 other creations in life, be it physical or written or the like. 00:18:29.590 --> 00:18:31.500 So think about too, as you solve problems, 00:18:31.500 --> 00:18:34.920 just how you can frame for yourself, like am I doing a good job 00:18:34.920 --> 00:18:39.520 or not by quantizing it, along these or perhaps other axises as well. 00:18:39.520 --> 00:18:42.540 And we thought we'd highlight just two topics from that week 0 that 00:18:42.540 --> 00:18:45.780 have really been manifest for the past several weeks, namely abstraction, 00:18:45.780 --> 00:18:49.440 like taking complicated things and ideas and trying to simplify them so that we 00:18:49.440 --> 00:18:52.500 can operate at this level and solve problems we care about 00:18:52.500 --> 00:18:56.790 without getting into the weeds of implementation details so to speak. 00:18:56.790 --> 00:18:59.100 But there's this tension because, you know now, 00:18:59.100 --> 00:19:02.850 from all of these different languages, that code is fairly unforgiving. 00:19:02.850 --> 00:19:05.980 I mean, even omitting a stupid semicolon sometimes breaks everything. 00:19:05.980 --> 00:19:08.310 And so precision is sort of at odds sometimes 00:19:08.310 --> 00:19:10.900 with this idea of leveraging abstraction. 00:19:10.900 --> 00:19:13.890 And so we thought we would try to tease this apart, 00:19:13.890 --> 00:19:19.210 especially all these weeks later here, but with a bit of a live demonstration. 00:19:19.210 --> 00:19:21.930 So on the way in, you probably all received a sheet of paper. 00:19:21.930 --> 00:19:24.780 If not, but someone near you did just tear theirs in half 00:19:24.780 --> 00:19:26.940 and borrow half a sheet if you can or any piece 00:19:26.940 --> 00:19:29.310 of loose leaf paper or the like will suffice 00:19:29.310 --> 00:19:31.260 as long as you have a pen or pencil. 00:19:31.260 --> 00:19:37.230 And for this, allow me to propose that we invite up maybe two final CS50 00:19:37.230 --> 00:19:41.795 volunteers this semester, and like a lot of hands are going up in this. 00:19:41.795 --> 00:19:42.420 A lot of hands. 00:19:42.420 --> 00:19:44.730 How about, I saw the first hand there. 00:19:44.730 --> 00:19:47.280 Yes, who's pointing at herself now. 00:19:47.280 --> 00:19:50.190 Come on down. 00:19:50.190 --> 00:19:52.980 We just need the one hand for now but, oh, wait. 00:19:52.980 --> 00:19:54.183 You'll be our number two. 00:19:54.183 --> 00:19:56.100 Well, OK, we have way too many volunteers now. 00:19:56.100 --> 00:19:56.760 No, no please. 00:19:56.760 --> 00:19:57.480 Please come down. 00:19:57.480 --> 00:19:59.260 Yes, in the black shirt. 00:19:59.260 --> 00:20:03.890 And if you guys, we will, we'll do pair programming in just a bit. 00:20:03.890 --> 00:20:05.640 If you want to hang out in the wings here, 00:20:05.640 --> 00:20:07.630 we'll have our second demonstration as well. 00:20:07.630 --> 00:20:10.380 So OK, now maybe round of applause for our three volunteers. 00:20:10.380 --> 00:20:12.555 [APPLAUSE] 00:20:14.440 --> 00:20:14.940 Oh. 00:20:14.940 --> 00:20:15.870 Come on up, first. 00:20:15.870 --> 00:20:16.920 Oh, no. 00:20:16.920 --> 00:20:17.880 Second and third. 00:20:17.880 --> 00:20:18.750 OK, you come first. 00:20:18.750 --> 00:20:20.310 We'll do it order No. 00:20:20.310 --> 00:20:21.570 This is a queue. 00:20:21.570 --> 00:20:22.362 Queue here. 00:20:22.362 --> 00:20:23.070 What's your name? 00:20:23.070 --> 00:20:23.580 DANI: I'm Dani. 00:20:23.580 --> 00:20:24.000 DAVID J. MALAN: Dani. 00:20:24.000 --> 00:20:24.810 OK, take this mic. 00:20:24.810 --> 00:20:27.723 OK, so we will de-queue you momentarily. 00:20:27.723 --> 00:20:29.890 All right, so Dani, come on over to the middle here. 00:20:29.890 --> 00:20:33.630 And in a moment, I'm going to hand to Dani a sheet of paper that 00:20:33.630 --> 00:20:34.562 has a picture on it. 00:20:34.562 --> 00:20:36.270 And this picture is going to be something 00:20:36.270 --> 00:20:39.870 that I'd like you to verbally program the audience to draw. 00:20:39.870 --> 00:20:44.380 You can use any words, any abstractions, any level of precision that you want, 00:20:44.380 --> 00:20:47.700 but you just can't make hand gestures or sort of show them what to draw. 00:20:47.700 --> 00:20:51.000 But first, you want to tell us a little something about yourself, including 00:20:51.000 --> 00:20:51.840 everyone here. 00:20:51.840 --> 00:20:54.288 DANI: I'm Dani, and I took CS50. 00:20:54.288 --> 00:20:55.080 DAVID J. MALAN: OK. 00:20:55.080 --> 00:20:55.830 Wonderful. 00:20:55.830 --> 00:20:56.400 Wonderful. 00:20:56.400 --> 00:20:59.468 So I'm going to reveal the picture only to Dani. 00:20:59.468 --> 00:21:02.010 And if each of you would like to take out that sheet of paper 00:21:02.010 --> 00:21:04.470 and just make sure that no one else can see this, 00:21:04.470 --> 00:21:06.540 if you want to hold it up this way. 00:21:06.540 --> 00:21:10.500 Everyone here is now holding their pen or pencil, and in some number of steps, 00:21:10.500 --> 00:21:12.757 give them a verbal algorithm for drawing what you see. 00:21:12.757 --> 00:21:15.090 And you can say anything you want, but no hand gestures. 00:21:15.090 --> 00:21:18.780 DANI: OK, so you're going to want to draw 00:21:18.780 --> 00:21:26.010 a square in the center of the paper with the diagonal pointing 00:21:26.010 --> 00:21:29.160 to the center of the edge. 00:21:32.750 --> 00:21:33.300 Wait. 00:21:33.300 --> 00:21:35.670 No actually, scratch that. 00:21:35.670 --> 00:21:38.595 Draw a rhombus in the center of your paper. 00:21:41.450 --> 00:21:44.120 DAVID J. MALAN: And for those who forget what a rhombus is? 00:21:44.120 --> 00:21:46.484 DANI: A diamond. 00:21:46.484 --> 00:21:51.020 A square that's on its side. 00:21:51.020 --> 00:21:56.700 And then from the bottom vertex, draw a straight line down, 00:21:56.700 --> 00:21:59.060 but not all the way to the edge of the paper. 00:22:01.960 --> 00:22:02.690 OK. 00:22:02.690 --> 00:22:06.580 And then keep your pencil or pen at that point, 00:22:06.580 --> 00:22:09.940 and you're going to want to draw a line that's 00:22:09.940 --> 00:22:14.845 parallel to the line of the original rhombus to the right. 00:22:18.320 --> 00:22:21.370 And then keep your pencil or pen at that point, 00:22:21.370 --> 00:22:24.790 and draw a line straight up, connecting to the side vertex. 00:22:28.840 --> 00:22:29.410 Yes. 00:22:29.410 --> 00:22:34.450 And then go back to the line that you drew from the bottom vertex 00:22:34.450 --> 00:22:39.070 to the bottom of the paper, and then draw a line parallel 00:22:39.070 --> 00:22:43.840 to the left edge of the rhombus. 00:22:43.840 --> 00:22:49.510 And then keep your pencil at that point and draw a line up 00:22:49.510 --> 00:22:52.585 to the vertex of the rhombus again. 00:22:55.990 --> 00:22:56.990 DAVID J. MALAN: The end. 00:22:56.990 --> 00:22:57.440 DANI: The end. 00:22:57.440 --> 00:22:58.040 DAVID J. MALAN: All right. 00:22:58.040 --> 00:22:59.270 Well, thank you to Dani. 00:22:59.270 --> 00:23:00.290 Hang on to your paper. 00:23:00.290 --> 00:23:01.295 Thank you so much. 00:23:01.295 --> 00:23:03.920 And if you want to step off to the stage there, we will reveal. 00:23:03.920 --> 00:23:04.520 Thank you. 00:23:04.520 --> 00:23:06.395 A round of applause if we could for Dani. 00:23:06.395 --> 00:23:07.100 [APPLAUSE] 00:23:07.100 --> 00:23:10.260 That is not an easy task, I'm sure. 00:23:10.260 --> 00:23:13.328 And if Carter wouldn't mind just grabbing a few samples here, 00:23:13.328 --> 00:23:15.620 let's actually take a look on the overhead if we could. 00:23:15.620 --> 00:23:17.330 I'm going to pop down over here real fast. 00:23:17.330 --> 00:23:19.330 We don't need to collect them all, but if you're 00:23:19.330 --> 00:23:25.370 feeling either good or bad with what you drew, happy to collect a few of them. 00:23:25.370 --> 00:23:26.930 OK. 00:23:26.930 --> 00:23:27.590 Thank you. 00:23:27.590 --> 00:23:29.860 Thank you. 00:23:29.860 --> 00:23:31.940 I hope you won't mind if I can't reach everyone. 00:23:31.940 --> 00:23:34.400 Just a couple more, over here. 00:23:34.400 --> 00:23:35.000 OK. 00:23:35.000 --> 00:23:36.830 All right, that's-- 00:23:36.830 --> 00:23:37.575 OK. 00:23:37.575 --> 00:23:39.200 AUDIENCE: This one's really [INAUDIBLE] 00:23:39.200 --> 00:23:40.250 DAVID J. MALAN: This one's really funny. 00:23:40.250 --> 00:23:41.480 I'm going to go with this one if I may. 00:23:41.480 --> 00:23:42.530 And Carter has some too. 00:23:48.050 --> 00:23:49.520 Thank you so much. 00:23:49.520 --> 00:23:50.090 OK. 00:23:50.090 --> 00:23:52.910 So just a random assortment here. 00:23:52.910 --> 00:23:56.300 Let me turn on a camera so I can show you what I see. 00:23:56.300 --> 00:24:00.740 Here, for instance, is one classmate's drawing 00:24:00.740 --> 00:24:04.280 which might resemble perhaps what you Drew here. 00:24:04.280 --> 00:24:09.530 Here is the beginnings of a house, it seems. 00:24:09.530 --> 00:24:10.850 Nice. 00:24:10.850 --> 00:24:15.920 This one, this one is larger. 00:24:15.920 --> 00:24:20.630 And how about a couple of others that were getting closer, I think. 00:24:20.630 --> 00:24:22.970 So more edges and vertices there. 00:24:22.970 --> 00:24:30.080 This one seems a little similar in spirit, if not proportional. 00:24:30.080 --> 00:24:34.310 This is Zac's the best one. 00:24:34.310 --> 00:24:37.790 But it turns out if I may, Zac, you're not all that far off. 00:24:37.790 --> 00:24:41.960 Here, Dani, is what you were reciting to everyone algorithmically. 00:24:41.960 --> 00:24:44.000 Indeed, it was this here cube. 00:24:44.000 --> 00:24:47.240 And so Dani, can you come on back up for a moment. 00:24:47.240 --> 00:24:49.448 So if you'd like to share for just a moment like what 00:24:49.448 --> 00:24:51.490 were some of the thoughts going through your head 00:24:51.490 --> 00:24:53.870 and why did you choose the words that you did? 00:24:53.870 --> 00:24:54.620 DANI: OK. 00:24:54.620 --> 00:24:58.250 So what was going through my head when I saw the cube. 00:24:58.250 --> 00:25:01.580 I didn't know if I could say, draw a cube. 00:25:01.580 --> 00:25:04.490 So I decided to start with the top and so 00:25:04.490 --> 00:25:06.590 draw a rhombus in the center of your paper, 00:25:06.590 --> 00:25:11.640 and then draw a line down and just do the first part. 00:25:11.640 --> 00:25:14.420 Then the second part, then the third part. 00:25:14.420 --> 00:25:16.280 And then you would get a cube like Zac. 00:25:16.280 --> 00:25:18.200 DAVID J. MALAN: Yeah, and so had you said, 00:25:18.200 --> 00:25:21.597 and you could have said, draw a cube, which would be more of an abstraction. 00:25:21.597 --> 00:25:23.930 Even that's not necessarily sufficiently precise, right, 00:25:23.930 --> 00:25:26.778 because you don't necessarily know what the orientation of that cube 00:25:26.778 --> 00:25:28.820 is, the size of it, the positioning on the paper. 00:25:28.820 --> 00:25:31.640 So you instead took a lower level approach, which is not unlike Scratch. 00:25:31.640 --> 00:25:33.723 If you think about Scratch, being able to move up, 00:25:33.723 --> 00:25:36.710 down, left, right, turn 90 degrees, turn 15 degrees and the like. 00:25:36.710 --> 00:25:39.890 I mean, that is ultimately how a lot of graphical programs and games 00:25:39.890 --> 00:25:42.680 even might be implemented by really focusing at the level you do. 00:25:42.680 --> 00:25:44.763 But of course, there's this tension with us humans 00:25:44.763 --> 00:25:46.820 whereby we prefer often to think at this level, 00:25:46.820 --> 00:25:48.403 but even that might not be sufficient. 00:25:48.403 --> 00:25:50.660 Which is to say, here in week 10, these are still 00:25:50.660 --> 00:25:53.990 going to be in our hard problems, but a hand, if we could, 00:25:53.990 --> 00:25:56.960 one more time for Dani for getting us that far along. 00:25:56.960 --> 00:25:57.710 Thank you so much. 00:25:57.710 --> 00:25:59.168 Let me give you a stress ball here. 00:25:59.168 --> 00:25:59.750 [APPLAUSE] 00:25:59.750 --> 00:26:00.440 All right. 00:26:00.440 --> 00:26:04.730 And if we could have both of our volunteers come up here. 00:26:04.730 --> 00:26:07.490 We're going to have-- yes, come on up. 00:26:07.490 --> 00:26:08.240 Come on up. 00:26:08.240 --> 00:26:13.220 And let me have you guys introduce yourselves in the middle here. 00:26:13.220 --> 00:26:15.132 EVAN: Hi, I'm Evan. 00:26:15.132 --> 00:26:15.840 SADDIQ: Hi there. 00:26:15.840 --> 00:26:16.970 I'm Saddiq from Turkey. 00:26:16.970 --> 00:26:17.660 Nice to meet you all. 00:26:17.660 --> 00:26:18.230 DAVID J. MALAN: Wonderful. 00:26:18.230 --> 00:26:18.890 Welcome. 00:26:18.890 --> 00:26:23.450 And this time we're going to flip it around so as to have the audience 00:26:23.450 --> 00:26:25.400 do what Dani just did for us. 00:26:25.400 --> 00:26:27.440 The only catch here is that the only means 00:26:27.440 --> 00:26:30.755 we have for showing the audience what they need to tell you to draw 00:26:30.755 --> 00:26:32.630 is like literally right above the chalkboard. 00:26:32.630 --> 00:26:36.110 So on our system here, that your eyes must stay on the chalkboard 00:26:36.110 --> 00:26:37.160 and not look up. 00:26:37.160 --> 00:26:39.740 And in just a moment, if you guys want to both stand 00:26:39.740 --> 00:26:42.320 in front of the chalkboard, back to the audience. 00:26:42.320 --> 00:26:45.740 And as you're talking with each other, verbalize it through the microphone 00:26:45.740 --> 00:26:46.470 if you will. 00:26:46.470 --> 00:26:49.610 I'm going to show everyone else in the room a second and final drawing, 00:26:49.610 --> 00:26:51.740 and we'll just go rapid fire around the room, 00:26:51.740 --> 00:26:53.870 give us one step at a time collectively, and we'll 00:26:53.870 --> 00:26:57.595 see if these guys can't draw exactly that same outcome. 00:26:57.595 --> 00:26:58.970 AUDIENCE: Is there another chalk? 00:26:58.970 --> 00:26:59.510 DAVID J. MALAN: What's that? 00:26:59.510 --> 00:27:00.830 SADDIQ: Is there another chalk? 00:27:00.830 --> 00:27:03.705 DAVID J. MALAN: Just the one, so you'll have to collaborate and let's 00:27:03.705 --> 00:27:08.660 give you a clean slate here, literally. 00:27:08.660 --> 00:27:09.290 All right. 00:27:09.290 --> 00:27:11.280 So no looking up. 00:27:11.280 --> 00:27:12.920 That's the only rule for you guys. 00:27:12.920 --> 00:27:13.550 Here we go. 00:27:13.550 --> 00:27:20.030 For the audience, here is what we'd like them, ironically, to draw. 00:27:20.030 --> 00:27:23.430 Step one, from anyone in the audience? 00:27:23.430 --> 00:27:24.050 Yes. 00:27:24.050 --> 00:27:25.710 AUDIENCE: Draw a circle. 00:27:25.710 --> 00:27:27.050 DAVID J. MALAN: Draw a circle. 00:27:27.050 --> 00:27:29.210 Anywhere. 00:27:29.210 --> 00:27:30.980 AUDIENCE: Not anywhere. 00:27:30.980 --> 00:27:34.508 [INTERPOSING VOICES] 00:27:34.508 --> 00:27:35.300 DAVID J. MALAN: OK. 00:27:35.300 --> 00:27:36.080 That's step one. 00:27:36.080 --> 00:27:37.010 Step two. 00:27:37.010 --> 00:27:37.830 Someone else? 00:27:37.830 --> 00:27:39.006 Yeah, in the middle. 00:27:39.006 --> 00:27:41.930 AUDIENCE: Draw a line down from the bottom of the stairs, 00:27:41.930 --> 00:27:44.450 about halfway down to the-- 00:27:44.450 --> 00:27:45.033 half way down. 00:27:45.033 --> 00:27:47.033 DAVID J. MALAN: Draw a line down from the bottom 00:27:47.033 --> 00:27:48.680 of the circle about halfway down. 00:27:48.680 --> 00:27:50.555 I think there was a hand in front of you too. 00:27:50.555 --> 00:27:52.064 Number three? 00:27:52.064 --> 00:27:57.720 AUDIENCE: From the point on the bottom, draw a diagonal line to the left. 00:27:57.720 --> 00:27:58.220 OK. 00:27:58.220 --> 00:27:58.720 [INAUDIBLE] 00:27:58.720 --> 00:28:01.170 [LAUGHTER] 00:28:01.170 --> 00:28:02.148 DAVID J. MALAN: OK. 00:28:02.148 --> 00:28:06.167 AUDIENCE: The overarching goal here is you're trying to draw a person. 00:28:06.167 --> 00:28:09.000 DAVID J. MALAN: The overarching goal here, for those unable to hear, 00:28:09.000 --> 00:28:10.170 is to draw a person. 00:28:10.170 --> 00:28:11.535 EVAN: Oh, it's a stick figure. 00:28:11.535 --> 00:28:12.035 SADDIQ: OK. 00:28:12.035 --> 00:28:13.260 It may be a stick figure. 00:28:13.260 --> 00:28:15.010 AUDIENCE: Draw the left leg of the person. 00:28:15.010 --> 00:28:18.050 DAVID J. MALAN: Draw the left leg of the person, of this person. 00:28:18.050 --> 00:28:19.050 OK. 00:28:19.050 --> 00:28:19.560 Good job. 00:28:19.560 --> 00:28:20.180 All right. 00:28:20.180 --> 00:28:20.680 OK. 00:28:20.680 --> 00:28:21.810 Next, step four. 00:28:21.810 --> 00:28:23.010 Yeah? 00:28:23.010 --> 00:28:28.021 AUDIENCE: Go to the vertice of the line going up and the circle 00:28:28.021 --> 00:28:32.632 and to the left, I'm sorry, to the right, draw a V. 00:28:32.632 --> 00:28:35.590 DAVID J. MALAN: To the right of the vertex at the bottom of the circle, 00:28:35.590 --> 00:28:36.510 draw a V. 00:28:36.510 --> 00:28:38.290 AUDIENCE: Yeah, draw a V. 00:28:38.290 --> 00:28:39.180 SADDIQ: A V. 00:28:39.180 --> 00:28:40.230 EVAN: Like what V? 00:28:40.230 --> 00:28:41.813 DAVID J. MALAN: Nope, not interactive. 00:28:41.813 --> 00:28:44.110 Draw a V. 00:28:44.110 --> 00:28:51.478 EVAN: Well-- Yeah, it seems really weird. 00:28:51.478 --> 00:28:52.770 DAVID J. MALAN: Get ready for-- 00:28:52.770 --> 00:28:54.103 EVAN: Maybe something like this? 00:28:54.103 --> 00:28:55.550 DAVID J. MALAN: Step five. 00:28:55.550 --> 00:28:56.730 OK, we'll go with that. 00:28:56.730 --> 00:28:57.420 Step five. 00:28:57.420 --> 00:28:58.680 Someone else? 00:28:58.680 --> 00:29:00.538 Step five, someone else? 00:29:00.538 --> 00:29:01.080 Someone else? 00:29:01.080 --> 00:29:01.882 Yeah? 00:29:01.882 --> 00:29:03.590 AUDIENCE: Draw the right side of the leg. 00:29:03.590 --> 00:29:06.100 DAVID J. MALAN: Draw the right side of the leg. 00:29:06.100 --> 00:29:07.200 Nice. 00:29:07.200 --> 00:29:08.250 Step six. 00:29:08.250 --> 00:29:09.168 Step six. 00:29:09.168 --> 00:29:09.960 SADDIQ: Happy face? 00:29:09.960 --> 00:29:11.440 DAVID J. MALAN: Six. 00:29:11.440 --> 00:29:11.940 Six. 00:29:11.940 --> 00:29:12.480 Yes? 00:29:12.480 --> 00:29:16.450 AUDIENCE: Erase the line you have on the left. 00:29:16.450 --> 00:29:19.283 DAVID J. MALAN: Erase the line that you have on the left. 00:29:19.283 --> 00:29:20.200 AUDIENCE: On the left. 00:29:22.515 --> 00:29:23.640 DAVID J. MALAN: Step seven. 00:29:23.640 --> 00:29:24.645 Yes? 00:29:24.645 --> 00:29:28.680 AUDIENCE: Instead of that line that was before going up, make it go down. 00:29:28.680 --> 00:29:32.490 DAVID J. MALAN: Instead of that line before going up, make it go down. 00:29:32.490 --> 00:29:34.040 Step eight. 00:29:34.040 --> 00:29:35.660 Step eight? 00:29:35.660 --> 00:29:36.380 Step eight? 00:29:36.380 --> 00:29:37.490 Yes? 00:29:37.490 --> 00:29:39.570 AUDIENCE: Connect that line to the hip. 00:29:39.570 --> 00:29:41.975 DAVID J. MALAN: Connect that line to the hip, 00:29:41.975 --> 00:29:43.350 AUDIENCE: Not like, not touching. 00:29:43.350 --> 00:29:44.558 DAVID J. MALAN: Not touching. 00:29:44.558 --> 00:29:47.010 EVAN: Something like this, maybe? 00:29:47.010 --> 00:29:48.315 DAVID J. MALAN: Compromise. 00:29:48.315 --> 00:29:49.530 EVAN: Not touching. 00:29:49.530 --> 00:29:50.610 SADDIQ: Not touching. 00:29:50.610 --> 00:29:51.402 DAVID J. MALAN: OK. 00:29:51.402 --> 00:29:51.960 All right. 00:29:51.960 --> 00:29:52.710 Step nine. 00:29:52.710 --> 00:29:53.820 Almost there, I think. 00:29:53.820 --> 00:29:54.465 Step nine? 00:29:58.460 --> 00:29:59.000 Step nine? 00:29:59.000 --> 00:29:59.500 Step nine? 00:29:59.500 --> 00:30:00.591 Yes, in back. 00:30:00.591 --> 00:30:07.820 AUDIENCE: [INAUDIBLE] write the word "hi" on the top left of the circle. 00:30:07.820 --> 00:30:10.861 DAVID J. MALAN: Right the word "hi" on the top left of the circle. 00:30:10.861 --> 00:30:13.170 EVAN: Put this right here. 00:30:13.170 --> 00:30:14.070 DAVID J. MALAN: OK. 00:30:14.070 --> 00:30:15.700 And step 10. 00:30:15.700 --> 00:30:16.242 Almost there. 00:30:16.242 --> 00:30:17.867 AUDIENCE: Draw a line pointing to "hi". 00:30:17.867 --> 00:30:19.870 DAVID J. MALAN: Draw a line pointing to "hi". 00:30:19.870 --> 00:30:23.880 EVAN: This is like a speech bubble, basically. 00:30:23.880 --> 00:30:27.390 DAVID J. MALAN: And step 10, 11? 00:30:27.390 --> 00:30:28.228 Yeah? 00:30:28.228 --> 00:30:30.097 AUDIENCE: Erase the exclamation point. 00:30:30.097 --> 00:30:31.930 DAVID J. MALAN: Erase the exclamation point. 00:30:31.930 --> 00:30:32.620 Nice. 00:30:32.620 --> 00:30:34.360 12. 00:30:34.360 --> 00:30:37.470 Do we want to give them one more? 00:30:37.470 --> 00:30:37.970 12? 00:30:37.970 --> 00:30:39.440 Or are we good? 00:30:39.440 --> 00:30:41.420 Yeah, last one. 00:30:41.420 --> 00:30:43.290 AUDIENCE: Erase the right arm. 00:30:43.290 --> 00:30:45.300 DAVID J. MALAN: Erase the right arm. 00:30:45.300 --> 00:30:48.330 I think we're going to need a 13 then. 00:30:48.330 --> 00:30:51.260 And then? 00:30:51.260 --> 00:30:52.188 Yeah? 00:30:52.188 --> 00:30:54.532 AUDIENCE: Repeat the left arm, but rotate it 90 degrees. 00:30:54.532 --> 00:30:57.240 DAVID J. MALAN: Repeat the left arm, but rotate it by 90 degrees. 00:31:00.903 --> 00:31:01.945 SADDIQ: That feels wrong. 00:31:04.850 --> 00:31:05.780 How would you like-- 00:31:05.780 --> 00:31:06.950 as an organic human being, how would you use your arms? 00:31:06.950 --> 00:31:07.060 DAVID J. MALAN: No. 00:31:07.060 --> 00:31:07.560 No. 00:31:07.560 --> 00:31:09.460 No. 00:31:09.460 --> 00:31:10.357 AUDIENCE: [INAUDIBLE] 00:31:10.357 --> 00:31:12.440 SADDIQ: Would you ever stretch your arm like that? 00:31:12.440 --> 00:31:14.482 DAVID J. MALAN: That would not be a stick figure. 00:31:16.550 --> 00:31:19.190 SADDIQ: Would you do this or would you do that? 00:31:19.190 --> 00:31:21.620 DAVID J. MALAN: All right, little hint, maybe. 00:31:21.620 --> 00:31:23.420 Give me a step 14. 00:31:23.420 --> 00:31:24.710 Step 14 and final? 00:31:24.710 --> 00:31:25.250 Step 14? 00:31:27.368 --> 00:31:29.160 I think we just got to tell him what to do. 00:31:29.160 --> 00:31:30.390 Step 14? 00:31:30.390 --> 00:31:31.230 Yes? 00:31:31.230 --> 00:31:33.090 AUDIENCE: Think of a walking man. 00:31:33.090 --> 00:31:38.980 The right hand [INAUDIBLE] normal [INAUDIBLE],, but just 00:31:38.980 --> 00:31:41.440 rotate the edge of it a little to a left. 00:31:41.440 --> 00:31:47.230 DAVID J. MALAN: Think of a walking man, and have the left, 00:31:47.230 --> 00:31:51.238 the right hand walking to your right. 00:31:51.238 --> 00:31:52.030 SADDIQ: It's like-- 00:31:52.030 --> 00:31:54.220 DAVID J. MALAN: Where could the hand go? 00:31:54.220 --> 00:31:57.610 Where should the hand go on that arm? 00:31:57.610 --> 00:31:59.690 But Yeah. 00:31:59.690 --> 00:32:00.190 OK. 00:32:00.190 --> 00:32:00.730 Yes. 00:32:00.730 --> 00:32:03.400 No. 00:32:03.400 --> 00:32:04.720 I mean, look right here. 00:32:04.720 --> 00:32:05.440 Look right here. 00:32:05.440 --> 00:32:06.520 Look right. 00:32:06.520 --> 00:32:07.420 Yes, sorry. 00:32:07.420 --> 00:32:08.740 Thank you. 00:32:08.740 --> 00:32:10.200 14 is done. 00:32:10.200 --> 00:32:12.550 [APPLAUSE] 00:32:12.550 --> 00:32:15.650 That's pretty close, so congratulations to you guys. 00:32:15.650 --> 00:32:17.150 And thank you as well. 00:32:17.150 --> 00:32:20.620 All right, so I mean, these things too are not-- yes, round 00:32:20.620 --> 00:32:22.030 of applause then, sure. 00:32:22.030 --> 00:32:25.630 [APPLAUSE] 00:32:25.630 --> 00:32:30.400 So this is to say these ideas of abstraction and precision 00:32:30.400 --> 00:32:32.650 and really every other term of art that we explored 00:32:32.650 --> 00:32:34.630 this term are sort of omnipresent and can 00:32:34.630 --> 00:32:36.700 be easier or harder to implement depending 00:32:36.700 --> 00:32:38.560 on exactly what the problem is. 00:32:38.560 --> 00:32:41.620 But what we thought we'd do now in our final day 00:32:41.620 --> 00:32:45.520 is try to now similarly prepare you for life after CS50. 00:32:45.520 --> 00:32:50.200 And this is really going to be a list of really potential to-do, 00:32:50.200 --> 00:32:53.140 so that you can stand on your own after the class, after the classes' 00:32:53.140 --> 00:32:55.240 infrastructure, write actual code. 00:32:55.240 --> 00:32:58.030 And then we'll come full circle one final time with our friend 00:32:58.030 --> 00:33:00.460 Jennifer 8 Lee to look at the world of emojis 00:33:00.460 --> 00:33:03.190 and how they relate to all forms of representation 00:33:03.190 --> 00:33:05.960 that we've talked about up until now. 00:33:05.960 --> 00:33:09.100 So one, how can you go about programming after CS50? 00:33:09.100 --> 00:33:13.390 So one, you can actually install command line tools on your own Mac or PC. 00:33:13.390 --> 00:33:15.550 Perhaps unbeknownst to you, Windows has what's 00:33:15.550 --> 00:33:16.990 generally called a command prompt. 00:33:16.990 --> 00:33:21.380 Mac OS literally comes with a terminal program in your applications utilities 00:33:21.380 --> 00:33:21.880 folder. 00:33:21.880 --> 00:33:23.838 And so even if you've never run those programs, 00:33:23.838 --> 00:33:26.050 you've actually had a sort of blinking cursor, 00:33:26.050 --> 00:33:27.940 black and white prompt available to you. 00:33:27.940 --> 00:33:31.210 Might not have all of the same software installed as your code space 00:33:31.210 --> 00:33:33.880 in the cloud, but you have that command line interface even 00:33:33.880 --> 00:33:35.500 within today's graphical tools. 00:33:35.500 --> 00:33:38.980 And among the tools you can install within that command line interface 00:33:38.980 --> 00:33:41.080 would be something called Xcode on the Mac 00:33:41.080 --> 00:33:44.740 which comes not only with a GUI IDE, integrated development environment, 00:33:44.740 --> 00:33:47.710 but also those command line tools and Microsoft for Windows 00:33:47.710 --> 00:33:49.510 has something similar as well. 00:33:49.510 --> 00:33:53.177 Learning Git, so we've used Git, only unbeknownst to you 00:33:53.177 --> 00:33:54.760 underneath the hood for the most part. 00:33:54.760 --> 00:33:58.240 But Git is a very, very popular tool, if challenging 00:33:58.240 --> 00:34:01.060 to pick up for the first time, that makes it easy to push code 00:34:01.060 --> 00:34:03.550 to a website called GitHub or any equivalent 00:34:03.550 --> 00:34:05.800 and then collaborate more effectively with classmates. 00:34:05.800 --> 00:34:07.675 There's definitely a bit of a learning curve, 00:34:07.675 --> 00:34:10.270 but thanks to CS50's own Brian Yu, you can start, for instance 00:34:10.270 --> 00:34:11.380 with a video like this. 00:34:11.380 --> 00:34:13.780 And this indeed is going to be one of these de facto standards 00:34:13.780 --> 00:34:16.040 in the real world, at least for the next several years 00:34:16.040 --> 00:34:19.750 that you'll probably encounter if you work in tech or really any company 00:34:19.750 --> 00:34:21.250 where you're doing some programming. 00:34:21.250 --> 00:34:24.320 VS code itself, we'll walk you through this process in the coming days, 00:34:24.320 --> 00:34:26.860 but you can indeed install it on your own Mac or PC. 00:34:26.860 --> 00:34:28.790 And what can you do when you write code? 00:34:28.790 --> 00:34:31.870 Well, you can certainly write software for your Mac, for your PC, 00:34:31.870 --> 00:34:35.199 for your phone, or of course per week 9, you 00:34:35.199 --> 00:34:41.830 can host your own website be it static as in week 8, hosting it 00:34:41.830 --> 00:34:45.550 at websites like these, which generally have free or student-friendly accounts 00:34:45.550 --> 00:34:48.639 via which you can put something statically on the web at a real domain 00:34:48.639 --> 00:34:50.199 name that you might choose. 00:34:50.199 --> 00:34:53.320 Or you can host a full fledged web app, and using 00:34:53.320 --> 00:34:58.210 student tiers on Amazon and Microsoft and Google's Cloud Services or others, 00:34:58.210 --> 00:35:01.150 you can sign up for, being a student certainly, a whole lot 00:35:01.150 --> 00:35:06.670 of free software, free hosting so as to if nothing else experiment and perhaps 00:35:06.670 --> 00:35:09.530 maximally get your own app or website up and running. 00:35:09.530 --> 00:35:11.690 So know that those are resources available to you. 00:35:11.690 --> 00:35:15.340 And this is by certainly a non-exhaustive list. 00:35:15.340 --> 00:35:18.400 If you'd like to geek out in the coming months, in the coming years, 00:35:18.400 --> 00:35:22.210 these are just some of the places that people who take computer science 00:35:22.210 --> 00:35:25.570 classes, who write code, might tend to hang out and ask and answer 00:35:25.570 --> 00:35:27.230 questions of each other. 00:35:27.230 --> 00:35:29.290 So keep an eye for instance on these here. 00:35:29.290 --> 00:35:31.840 And then CS50 has its own communities as you'll see. 00:35:31.840 --> 00:35:35.020 If you go to this URL here via the OpenCourseWare version of CS50 00:35:35.020 --> 00:35:38.710 which is open to the world, there a vibrant community, 00:35:38.710 --> 00:35:42.280 thanks to time zones, that's pretty much active 24/7, 365. 00:35:42.280 --> 00:35:45.470 Talking about not only CS50 goings on and problem sets and projects, 00:35:45.470 --> 00:35:48.020 but really technology more generally, as well. 00:35:48.020 --> 00:35:52.090 So certainly feel welcome to partake, either asking or answering questions. 00:35:52.090 --> 00:35:55.540 Now, speaking of asking and answering questions, a couple of weeks 00:35:55.540 --> 00:35:58.900 ago, you kindly gave us a whole bunch of review questions 00:35:58.900 --> 00:36:02.558 which we culled through and picked out our favorite 20 of them. 00:36:02.558 --> 00:36:04.600 These, of course, were multiple choice questions. 00:36:04.600 --> 00:36:08.590 And in preparation for this week, in preparation for life 00:36:08.590 --> 00:36:12.580 ahead, we thought we would choreograph a bit of a quiz show here. 00:36:12.580 --> 00:36:15.670 And indeed, as you came in at the start of class, 00:36:15.670 --> 00:36:20.350 you might recall being invited to go to this URL here, CS50/ly, either here 00:36:20.350 --> 00:36:25.240 in person or if you're watching live from home at this URL here. 00:36:25.240 --> 00:36:28.030 You can use a phone or a laptop. 00:36:28.030 --> 00:36:32.500 And if it's easier on the phone, you can point your camera at this 2D barcode 00:36:32.500 --> 00:36:36.470 here, we'll give folks a moment to pull that up. 00:36:36.470 --> 00:36:46.560 And again that, URL was CS50.ly/poll, and once it looks like most folks have 00:36:46.560 --> 00:36:54.150 it up and running, our friend Carter here will help us dive into this review 00:36:54.150 --> 00:36:57.300 session, if you will, with a bit of fun along the way. 00:36:57.300 --> 00:36:59.790 All right, Carter, if you'd like to take it away. 00:36:59.790 --> 00:37:01.950 What do we have as our first question? 00:37:01.950 --> 00:37:04.920 You should see on your phone or laptop, this same question being asked. 00:37:04.920 --> 00:37:07.560 The first question is, "How do you print quote, unquote "hello, 00:37:07.560 --> 00:37:09.540 world" in Python?" 00:37:09.540 --> 00:37:14.600 So among the possible answers are these here. 00:37:14.600 --> 00:37:16.705 Buzz in on your phone or your laptop. 00:37:19.840 --> 00:37:23.040 We've got a few hundred responses already. 00:37:23.040 --> 00:37:24.930 Seven seconds to make your decision. 00:37:27.790 --> 00:37:30.790 This is question 1 of 20, going into it with some confidence. 00:37:30.790 --> 00:37:36.490 I think we're down to 0 on the clock and Carter it looks like 98% of you 00:37:36.490 --> 00:37:37.960 indeed said, "hello, world." 00:37:37.960 --> 00:37:41.660 And Carter, per the check mark, that's indeed the correct answer here. 00:37:41.660 --> 00:37:45.670 Now, to make things interesting, know that you'll see some number of points. 00:37:45.670 --> 00:37:49.210 And we've deliberately anonymized it so only what number you are. 00:37:49.210 --> 00:37:53.320 So a whole lot of guests have a perfect score of 1,000 at the moment. 00:37:53.320 --> 00:37:55.610 Hopefully we'll see over the next several questions, 00:37:55.610 --> 00:37:57.460 things start to bridge out. 00:37:57.460 --> 00:38:00.460 But know that the speed with which you buzz in 00:38:00.460 --> 00:38:03.220 will also factor into how many points you now get. 00:38:03.220 --> 00:38:05.830 So the faster you move, the more points you get. 00:38:05.830 --> 00:38:09.885 Question 2, if we could, "What does DNS stand for?" 00:38:09.885 --> 00:38:11.260 from just a couple of weeks back. 00:38:11.260 --> 00:38:12.550 "Domain Number System. 00:38:12.550 --> 00:38:14.020 Domain Name System. 00:38:14.020 --> 00:38:19.860 Data Numbering Structure" and "There's no such thing as DNS." 00:38:19.860 --> 00:38:26.640 Few hundred responses are in, 8 seconds remain. 00:38:26.640 --> 00:38:29.580 Fewer points now, but still a chance to buzz in. 00:38:29.580 --> 00:38:34.560 And now as we hit zero, the responses are these, "Domain Name System" which 00:38:34.560 --> 00:38:39.360 is indeed correct, and 84% of you got that one correctly, and indeed exists, 00:38:39.360 --> 00:38:41.590 we talked about it a couple of weeks ago. 00:38:41.590 --> 00:38:44.112 So we're still seeing a whole lot of ties at 2,000. 00:38:44.112 --> 00:38:46.320 We'll see if someone starts to pull away before long. 00:38:46.320 --> 00:38:51.220 Question three, "What is the upper bound of Merge Sort's run time?" 00:38:51.220 --> 00:38:53.460 So that escalated quickly. 00:38:53.460 --> 00:38:55.500 "Big O of n log n. 00:38:55.500 --> 00:38:58.560 Big O of log n. 00:38:58.560 --> 00:39:00.240 Omega of log n." 00:39:00.240 --> 00:39:03.190 or "Big O of 1." 00:39:03.190 --> 00:39:07.420 "What is the upper bound of Merge Sort's runtime?" 00:39:07.420 --> 00:39:11.020 That was the last of the algorithms we saw for sorting, and in one second, 00:39:11.020 --> 00:39:14.170 we'll see that the correct answer is just edging out 00:39:14.170 --> 00:39:18.010 everyone else, indeed, 46% it is, n-- 00:39:18.010 --> 00:39:18.880 I know. 00:39:18.880 --> 00:39:20.590 It's n log n. 00:39:20.590 --> 00:39:24.280 Now, if I may, as the teacher, it can't be log n, 00:39:24.280 --> 00:39:26.290 because log n is strictly less than n. 00:39:26.290 --> 00:39:29.710 And you can't possibly sort n elements unless you minimally look at 00:39:29.710 --> 00:39:30.950 or touch each of them. 00:39:30.950 --> 00:39:33.550 So it's got to be at least greater than n intuitively. 00:39:33.550 --> 00:39:35.050 We still have a whole bunch of ties. 00:39:35.050 --> 00:39:37.660 Let's move on to number 4. 00:39:37.660 --> 00:39:40.930 "What is stored in argc?" 00:39:40.930 --> 00:39:43.240 Back to the language, C. Is it "An array of arguments. 00:39:43.240 --> 00:39:44.920 The maximum size of an array. 00:39:44.920 --> 00:39:47.860 The count of arguments given to a program when first run." 00:39:47.860 --> 00:39:51.630 or "how much memory is allocated to a function?" 00:39:51.630 --> 00:39:54.850 Again, you wrote all of these questions. 00:39:54.850 --> 00:39:59.290 And we have 5 seconds, for the reveal. 00:39:59.290 --> 00:40:05.500 Argc is indeed "The count of arguments given to a program when first run." 00:40:05.500 --> 00:40:10.450 Think back to C when we did command line arguments, there was argc and argv. 00:40:10.450 --> 00:40:13.510 Argv was the array, but argc was indeed the count. 00:40:13.510 --> 00:40:14.770 The a and argc. 00:40:14.770 --> 00:40:18.550 All right, we still have a whole bunch of ties at the top 00:40:18.550 --> 00:40:21.430 here, but let's move on then to number 5. 00:40:21.430 --> 00:40:24.550 "What is the duck debugger's favorite hobby?" 00:40:24.550 --> 00:40:27.940 According to one of your classmates, "Dressing up like Dracula. 00:40:27.940 --> 00:40:29.320 Swimming across the stage. 00:40:29.320 --> 00:40:32.560 Filling up the entire bathroom of a guy's house. 00:40:32.560 --> 00:40:36.430 Sitting quietly on stage." 00:40:36.430 --> 00:40:38.680 The third of course, is a reference to a YouTube video 00:40:38.680 --> 00:40:41.150 that was on the course's website that week. 00:40:41.150 --> 00:40:46.720 But according to your classmates, number 2, seconds remaining, 00:40:46.720 --> 00:40:50.650 sitting quietly on stage is its favorite pastime. 00:40:50.650 --> 00:40:54.610 So a little harder perhaps than the others. 00:40:54.610 --> 00:40:57.400 5,000, now we're starting to see some spread. 00:40:57.400 --> 00:41:01.480 So we only have six guests in contention for first place. 00:41:01.480 --> 00:41:08.120 And the next question now is 6, "What is the function used to open a file in C?" 00:41:08.120 --> 00:41:09.220 "fopen. 00:41:09.220 --> 00:41:10.545 open. fileopen. 00:41:10.545 --> 00:41:11.045 file." 00:41:13.870 --> 00:41:16.840 "What is the function used to open a file in C?" 00:41:20.390 --> 00:41:23.440 7 seconds. 00:41:23.440 --> 00:41:28.660 There's some differences between C and Python here, and the reveal, 00:41:28.660 --> 00:41:32.710 it is indeed fopen at 77% correct too. 00:41:32.710 --> 00:41:34.390 All right, let's see the rankings now. 00:41:34.390 --> 00:41:41.680 If you are Guest1590, 715, 6171, 3753 or 3273, you're now in the lead 00:41:41.680 --> 00:41:44.410 as we move on to question 7. 00:41:44.410 --> 00:41:47.020 "How does strlen compute the avg-- 00:41:47.020 --> 00:41:51.150 sorry, how does strlen compute the length of a string in C?" 00:41:51.150 --> 00:41:53.070 "It looks at how much memory the string uses. 00:41:53.070 --> 00:41:55.862 It counts the number of characters until it reaches backslash zero. 00:41:55.862 --> 00:41:57.870 It counts the number of bits in the string. 00:41:57.870 --> 00:42:02.000 It creates pointers for each character and counts them." 00:42:02.000 --> 00:42:09.900 10 seconds, strlen in C. Recall that we implemented this ourselves in class, 00:42:09.900 --> 00:42:12.000 but then we use the library thereafter. 00:42:12.000 --> 00:42:16.200 And indeed, with 85%, it simply counts the number of characters 00:42:16.200 --> 00:42:19.260 until it reaches that sentinel, backslash zero, a.k.a. 00:42:19.260 --> 00:42:19.960 Null. 00:42:19.960 --> 00:42:27.580 And in this case, we have 544 of you tied now for first. 00:42:27.580 --> 00:42:32.870 All right, question 8, "Where does malloc allocate memory from?" 00:42:32.870 --> 00:42:33.590 The "Stack." 00:42:33.590 --> 00:42:38.650 The "Heap" The "Pointers" or the "Temp" "Where does malloc 00:42:38.650 --> 00:42:40.150 allocate memory from?" 00:42:42.690 --> 00:42:44.825 Responses are coming in, 8 seconds. 00:42:48.280 --> 00:42:50.470 A good review question at that. 00:42:50.470 --> 00:42:54.670 In 2 seconds we'll see that malloc allocates memory from, close one, 00:42:54.670 --> 00:42:56.800 the Heap is correct. 00:42:56.800 --> 00:42:57.760 The Heap is correct. 00:42:57.760 --> 00:43:00.102 The stack recall is where functions store 00:43:00.102 --> 00:43:01.810 their local variables and their arguments 00:43:01.810 --> 00:43:03.440 and that just happens automatically. 00:43:03.440 --> 00:43:07.690 The Heap represented in our pictures up top is where malloc draws from. 00:43:07.690 --> 00:43:15.430 Now we have guest 15 has made its way to the top here, 00:43:15.430 --> 00:43:18.130 but others can catch up if they don't buzz in fast enough. 00:43:18.130 --> 00:43:21.520 So number 9, "How many people flew from Fiftyville 00:43:21.520 --> 00:43:25.660 to New York on the day of the crime?" 00:43:25.660 --> 00:43:26.590 "16. 00:43:26.590 --> 00:43:27.550 29. 00:43:27.550 --> 00:43:28.930 8." 00:43:28.930 --> 00:43:29.740 or "3." 00:43:33.190 --> 00:43:35.920 Anyone with a laptop perhaps has an advantage here. 00:43:40.590 --> 00:43:46.200 5 seconds, and the answers are-- 00:43:46.200 --> 00:43:48.240 but the answer is 16. 00:43:50.830 --> 00:43:54.090 Let's see if Guest15 got this. 00:43:54.090 --> 00:43:56.220 They did not. 00:43:56.220 --> 00:43:58.200 Goodbye to Guest15 at the top. 00:43:58.200 --> 00:43:59.490 All right, question 10. 00:43:59.490 --> 00:44:00.900 We're about halfway there. 00:44:00.900 --> 00:44:06.720 "What are meta tags used for in HTML? " "To describe a web page. 00:44:06.720 --> 00:44:08.700 To define parameters for an element. 00:44:08.700 --> 00:44:09.960 To group elements together. 00:44:09.960 --> 00:44:14.040 To translate content into machine-readable format." 00:44:14.040 --> 00:44:16.830 "What are meta tags used for in HTML?" 00:44:16.830 --> 00:44:24.200 We saw a few of them for different use cases. 00:44:24.200 --> 00:44:28.490 And with 1 second, we see that indeed the number one answer 00:44:28.490 --> 00:44:31.590 was to describe the webpage, be it for a mobile device, 00:44:31.590 --> 00:44:34.460 be it for screen scrapers like Facebook and Twitter 00:44:34.460 --> 00:44:37.830 and other such apps that grab images and descriptions thereof. 00:44:37.830 --> 00:44:38.330 All right. 00:44:38.330 --> 00:44:44.870 We're in the second half now, Guest4669 edged ahead. 00:44:44.870 --> 00:44:46.710 Guest15 is now in sixth place. 00:44:46.710 --> 00:44:47.210 All right. 00:44:47.210 --> 00:44:51.730 Number 11 is "How do you find the address of a variable in C?" 00:44:51.730 --> 00:44:53.140 Think back a few weeks. 00:44:53.140 --> 00:44:56.200 Star, dollar sign, ampersand Ask. 00:45:01.470 --> 00:45:03.630 From one of your own classmates, "How do you 00:45:03.630 --> 00:45:05.640 find the address of a variable in C?" 00:45:11.350 --> 00:45:15.010 And the number one answer is ampersand which is indeed 00:45:15.010 --> 00:45:17.470 the address of operator at 62%. 00:45:17.470 --> 00:45:18.250 Nicely done. 00:45:18.250 --> 00:45:20.620 Let's see who's the top of the list now. 00:45:20.620 --> 00:45:25.060 Guest4669 has retained their lead, so we move on to 12. 00:45:25.060 --> 00:45:28.990 "What does the arrow operator mean in C?" 00:45:28.990 --> 00:45:31.210 A hyphen and a greater than sign. 00:45:31.210 --> 00:45:31.990 "Nothing. 00:45:31.990 --> 00:45:33.100 Starts a comment. 00:45:33.100 --> 00:45:35.080 Replaces a star in dot operator. 00:45:35.080 --> 00:45:38.220 Declares a pointer." 00:45:38.220 --> 00:45:43.360 "What does this arrow operator mean in C?" 00:45:43.360 --> 00:45:46.000 Again from a few weeks back. 00:45:46.000 --> 00:45:49.750 3 seconds, harder assortment perhaps. 00:45:49.750 --> 00:45:54.430 And it's oh, "Replaces a star in dot operator." 00:45:54.430 --> 00:45:57.010 The number two answer was indeed correct. 00:45:57.010 --> 00:45:59.770 This was just a cleaner way, syntactic sugar 00:45:59.770 --> 00:46:02.860 for collapsing what would be a star and then some parentheses and then a 00:46:02.860 --> 00:46:05.950 dot into quite simply something that looks like an arrow itself. 00:46:05.950 --> 00:46:08.470 All right, Carter, who's in the lead now? 00:46:08.470 --> 00:46:12.910 Still that same guest, and let's see what 13 has for us. 00:46:12.910 --> 00:46:16.390 "Which of these is not a data type in SQLite?" 00:46:16.390 --> 00:46:17.440 "BLOB. 00:46:17.440 --> 00:46:19.595 STRING, INTEGER. 00:46:19.595 --> 00:46:20.095 TEXT." 00:46:24.430 --> 00:46:28.810 We used a few of these more commonly than others but not all of these 00:46:28.810 --> 00:46:31.660 are for real. 00:46:31.660 --> 00:46:35.410 5 seconds to make your decision. 00:46:35.410 --> 00:46:41.680 And the results are BLOG is a thing, STRING is not in SQLite. 00:46:41.680 --> 00:46:44.740 It's of course called TEXT, as we've seen it. 00:46:44.740 --> 00:46:48.940 BLOB, as goofy as it sounds, is just binary large object. 00:46:48.940 --> 00:46:52.660 But indeed, it's how you might store a binary file in your database. 00:46:52.660 --> 00:46:53.890 All right. 00:46:53.890 --> 00:46:58.300 The rankings now, oh, Guest8444 has eked ahead. 00:46:58.300 --> 00:47:00.530 So we move on to 14. 00:47:00.530 --> 00:47:03.670 "Which of the following is a valid way to print exclamation, 00:47:03.670 --> 00:47:09.090 point exclamation, point exclamation point, exclamation point, in Python?" 00:47:09.090 --> 00:47:12.570 And I'll let you read these yourselves. 00:47:12.570 --> 00:47:15.380 Which is a valid way? 00:47:15.380 --> 00:47:17.045 OK, everyone got quiet and is thinking. 00:47:20.370 --> 00:47:21.360 All right. 00:47:21.360 --> 00:47:25.365 6 seconds, a few hundred responses in so far. 00:47:27.980 --> 00:47:30.320 All right, and yes, nicely done. 00:47:30.320 --> 00:47:31.920 78% is correct. 00:47:31.920 --> 00:47:34.190 You can use the star operator to essentially multiply 00:47:34.190 --> 00:47:35.420 the character at left. 00:47:35.420 --> 00:47:37.280 All right, who's in the lead, Carter? 00:47:37.280 --> 00:47:41.090 We now have still Guest8444. 00:47:41.090 --> 00:47:43.160 And so we move on now to 15. 00:47:43.160 --> 00:47:46.370 "What does the free function do?" 00:47:46.370 --> 00:47:48.320 Deallocated memory from a primitive. 00:47:48.320 --> 00:47:50.390 Deallocated memory at the given pointer. 00:47:50.390 --> 00:47:53.900 Terminates a loop." or "Returns a value from the function." 00:47:53.900 --> 00:47:55.700 "What does the free function do?" 00:48:00.820 --> 00:48:02.800 All right, 5 seconds. 00:48:02.800 --> 00:48:04.480 "What does the free function do?" 00:48:04.480 --> 00:48:06.640 Call to the opposite essentially of malloc. 00:48:06.640 --> 00:48:10.120 And it "Deallocates the memory at the given pointer." 00:48:10.120 --> 00:48:10.880 as well. 00:48:10.880 --> 00:48:12.310 And in C, that's on you. 00:48:12.310 --> 00:48:16.720 In Python, you don't need to worry about allocating or freeing alike. 00:48:16.720 --> 00:48:17.440 All right. 00:48:17.440 --> 00:48:22.780 We now have at the top, still Guest8444 and seeing more and more spread. 00:48:22.780 --> 00:48:27.550 16, "Which is not a step of compiling? 00:48:27.550 --> 00:48:30.400 Think back now to week 2. 00:48:30.400 --> 00:48:31.150 "Compiling. 00:48:31.150 --> 00:48:32.140 Preprocessing. 00:48:32.140 --> 00:48:32.740 Linking." 00:48:32.740 --> 00:48:33.790 or "Threading." 00:48:33.790 --> 00:48:38.230 "Which is not a step of compiling?" 00:48:38.230 --> 00:48:40.570 We use it as a catchall, but it technically 00:48:40.570 --> 00:48:43.330 means a few different things collectively. 00:48:47.720 --> 00:48:48.290 All right. 00:48:48.290 --> 00:48:51.080 And threading is indeed not on the list. 00:48:51.080 --> 00:48:54.110 That is a technical thing, generally meaning 00:48:54.110 --> 00:48:56.330 a program can do multiple things at once, 00:48:56.330 --> 00:48:59.240 but that is not related here to compiling. 00:48:59.240 --> 00:49:02.450 All right Guest8444 still at the top. 00:49:02.450 --> 00:49:04.040 We have just a few questions left. 00:49:04.040 --> 00:49:09.110 And so, 17 "What was the surprise at the beginning of the Halloween lecture?" 00:49:09.110 --> 00:49:11.720 According to your classmates, someone scared me, 00:49:11.720 --> 00:49:14.120 "Someone hid candy under every chair." 00:49:14.120 --> 00:49:15.650 Someone dressed up as me. 00:49:15.650 --> 00:49:17.705 "The entire staff dressed up as Carter." 00:49:21.070 --> 00:49:27.910 Oh, interesting litmus test of who came to or watched lecture perhaps. 00:49:27.910 --> 00:49:31.510 Let's see which guests got this correct. 00:49:31.510 --> 00:49:35.300 Someones really dressed up as indeed me at 64%. 00:49:35.300 --> 00:49:38.390 So I think we have attendance here essentially from that lecture. 00:49:38.390 --> 00:49:40.810 So let's move on now to the final few questions 00:49:40.810 --> 00:49:44.710 after seeing that Guest8444 is still doing well. 00:49:44.710 --> 00:49:46.330 Can anyone dethrone them? 00:49:46.330 --> 00:49:49.870 "Why is it incorrect to use the equals equals operator in C 00:49:49.870 --> 00:49:52.980 to compare strings?" 00:49:52.980 --> 00:49:54.600 "It is computationally inefficient. 00:49:54.600 --> 00:49:56.610 You're comparing the locations of the strings. 00:49:56.610 --> 00:49:57.900 Strings don't exist. 00:49:57.900 --> 00:50:01.110 Using equal equals will lead to buffer overflow." 00:50:04.760 --> 00:50:08.660 "Why is it incorrect to use equal equals in C to compare strings?" 00:50:08.660 --> 00:50:09.890 3 seconds. 00:50:09.890 --> 00:50:12.440 We saw this live, and it motivated like an entire week 00:50:12.440 --> 00:50:16.850 because you're comparing the locations, that is the addresses in memory 00:50:16.850 --> 00:50:18.030 of those same strings. 00:50:18.030 --> 00:50:18.530 All right. 00:50:18.530 --> 00:50:21.320 Let's see if this leaves the rankings the same. 00:50:21.320 --> 00:50:24.800 Guest8444 is still at the top and pulling ahead. 00:50:24.800 --> 00:50:26.930 Two final questions, 19. 00:50:26.930 --> 00:50:30.620 "What is the difference between NUL" one L, "and NULL." 00:50:30.620 --> 00:50:33.740 Two Ls. 00:50:33.740 --> 00:50:35.330 NUL and NULL mean the same thing. 00:50:35.330 --> 00:50:39.470 NUL refers to backslash 0, whereas NULL" 2 L's "is the 0 address. 00:50:39.470 --> 00:50:43.790 NUL is the zero address whereas NULL" two L's "refers to backslash zero. 00:50:43.790 --> 00:50:47.690 NUL is NULL but lazier." 00:50:47.690 --> 00:50:49.630 5 seconds. 00:50:49.630 --> 00:50:50.320 Subtle. 00:50:50.320 --> 00:50:53.860 Not the best design perhaps to have in technical terms, 00:50:53.860 --> 00:50:58.780 but indeed 62% of you got that and N-U-L is the first thing we talked about when 00:50:58.780 --> 00:51:02.080 we talked about backslash zero, and N-U-L-L is a pointer. 00:51:02.080 --> 00:51:03.790 It's the zero pointer. 00:51:03.790 --> 00:51:06.310 Same number, but different context. 00:51:06.310 --> 00:51:07.720 All right, Carter. 00:51:07.720 --> 00:51:13.300 Guest8444 is the person to beat with our final 20th questions. 00:51:13.300 --> 00:51:17.100 "What do the binary bulbs on stage spell today?" 00:51:20.740 --> 00:51:25.000 And these are your four choices, different from usual. 00:51:25.000 --> 00:51:26.770 We usually use 8-bit Ascii. 00:51:26.770 --> 00:51:31.720 Today we are using UTF8 which is a form of Unicode, 00:51:31.720 --> 00:51:35.230 which is the larger subset that uses 1, or 2, or 3, 00:51:35.230 --> 00:51:39.920 or even 4 bytes to spell a single character. 00:51:39.920 --> 00:51:44.350 And the answer, wow, close, is indeed a cupcake. 00:51:44.350 --> 00:51:45.940 Indeed, a cupcake. 00:51:45.940 --> 00:51:47.020 Well done. 00:51:47.020 --> 00:51:48.880 And let's see the final results. 00:51:48.880 --> 00:51:50.860 8444 is the winner. 00:51:50.860 --> 00:51:53.230 Are they here in person, perhaps? 00:51:53.230 --> 00:51:54.790 8444. 00:51:54.790 --> 00:51:55.780 You're 8444. 00:51:55.780 --> 00:51:56.620 Come on down. 00:51:56.620 --> 00:51:59.105 [APPLAUSE] 00:52:03.715 --> 00:52:04.390 Thank you. 00:52:04.390 --> 00:52:05.140 There you go. 00:52:05.140 --> 00:52:05.840 Congratulations. 00:52:05.840 --> 00:52:06.715 GUEST8444: Thank you. 00:52:06.715 --> 00:52:08.050 DAVID J. MALAN: Thank you. 00:52:08.050 --> 00:52:09.040 All your. 00:52:09.040 --> 00:52:11.860 All right. 00:52:11.860 --> 00:52:17.410 Today if we may, give me just one moment. 00:52:24.860 --> 00:52:25.640 All right. 00:52:35.600 --> 00:52:36.200 All right. 00:52:36.200 --> 00:52:40.700 So today we are so pleased to be joined by Jennifer 8 00:52:40.700 --> 00:52:43.640 Lee who's an alumna of the college, a dear friend, 00:52:43.640 --> 00:52:47.450 and is actually really the reason why there's evidence of Muppets in CS50. 00:52:47.450 --> 00:52:50.300 In fact, some years ago, I was visiting her 00:52:50.300 --> 00:52:52.910 and she had on her shelf like this custom Muppet. 00:52:52.910 --> 00:52:56.480 It wasn't one that appears on TV, but she had somehow gone on a website, 00:52:56.480 --> 00:52:59.217 a former toy store called FAO Schwartz at the time, 00:52:59.217 --> 00:53:01.550 and you're allowed to configure your own Muppet whatnot. 00:53:01.550 --> 00:53:03.633 Choose the eyes, the nose, the face and the torso. 00:53:03.633 --> 00:53:05.551 And I just thought this was the coolest thing. 00:53:05.551 --> 00:53:07.370 And so in the taxi on the way home, I was 00:53:07.370 --> 00:53:10.850 like going on the website trying to purchase our very first Muppet. 00:53:10.850 --> 00:53:12.950 I then sort of woke up the next morning thinking, 00:53:12.950 --> 00:53:15.350 why did I just buy a puppet in the back of a taxi? 00:53:15.350 --> 00:53:17.450 And so it sat on the shelf for really two years. 00:53:17.450 --> 00:53:19.747 And then a colleague of mine within CS50's team 00:53:19.747 --> 00:53:22.580 decided, after I brought it into the office to sit on a shelf there, 00:53:22.580 --> 00:53:24.170 to actually bring it to life. 00:53:24.170 --> 00:53:28.100 And indeed if you Google around and CS50 Muppetry and puppetry online, 00:53:28.100 --> 00:53:30.187 you'll see in fact these as characters, not only 00:53:30.187 --> 00:53:32.270 over the past couple of years in COVID times, when 00:53:32.270 --> 00:53:36.200 really there was next to no one actually here, and so they were instead. 00:53:36.200 --> 00:53:39.710 But indeed she's brought not only this educational element, 00:53:39.710 --> 00:53:42.530 this pedagogical element, this playful element to CS50. 00:53:42.530 --> 00:53:46.400 And we have her here today to speak to exactly the sorts of encodings 00:53:46.400 --> 00:53:47.600 that are here on stage. 00:53:47.600 --> 00:53:51.050 Jenny is the former Vice Chair of the Unicode subcommittee 00:53:51.050 --> 00:53:53.930 on emoji, which is to say that she and her colleagues 00:53:53.930 --> 00:53:56.480 have been influential in taking emoji from what 00:53:56.480 --> 00:53:59.510 was a very limited character set early on and by far 00:53:59.510 --> 00:54:04.760 unrepresentative of much human emotion in speech into really an initiative now 00:54:04.760 --> 00:54:07.640 to capture digitally all of the world's languages, 00:54:07.640 --> 00:54:11.300 past, present and future, as well as the range of emotions 00:54:11.300 --> 00:54:13.730 that we might see here in the form of that pillow 00:54:13.730 --> 00:54:15.350 or even in the cake that await. 00:54:15.350 --> 00:54:18.146 So allow me to introduce, Jennifer 8 Lee. 00:54:18.146 --> 00:54:18.646 JENNIFER 8. 00:54:18.646 --> 00:54:19.310 LEE: Thank you. 00:54:22.790 --> 00:54:24.830 I much drink. 00:54:24.830 --> 00:54:25.620 Clicker. 00:54:25.620 --> 00:54:26.120 Hi. 00:54:26.120 --> 00:54:26.420 All right. 00:54:26.420 --> 00:54:26.920 Hold on. 00:54:26.920 --> 00:54:28.660 I have to hide my drinks. 00:54:28.660 --> 00:54:29.660 I might need more water. 00:54:29.660 --> 00:54:31.160 All right. 00:54:31.160 --> 00:54:33.170 I'm really excited to speak. 00:54:33.170 --> 00:54:34.310 So speak your last time. 00:54:34.310 --> 00:54:35.595 Last year I was here. 00:54:35.595 --> 00:54:38.720 One, I was wearing a mask, which is like a real bummer if you're lecturing. 00:54:38.720 --> 00:54:41.540 And then the entire front part was all Muppets. 00:54:41.540 --> 00:54:44.780 So I'm really happy to see humans actually. 00:54:44.780 --> 00:54:48.380 And it's always an honor to speak at Sanders. 00:54:48.380 --> 00:54:50.910 And then Dave and I were actually classmates way back when. 00:54:50.910 --> 00:54:54.300 So I do remember him when he was an undergrad much like you. 00:54:54.300 --> 00:54:57.560 So I am going to give a talk on the world of emoji 00:54:57.560 --> 00:54:59.660 and how I kind of became an emoji activist. 00:54:59.660 --> 00:55:04.820 So it kind of all starts with my friend, Yiying Lu, 00:55:04.820 --> 00:55:07.760 who is a designer who's well known for doing the Twitter fail 00:55:07.760 --> 00:55:10.350 whale, which was kind of laid to rest. 00:55:10.350 --> 00:55:15.540 Except now, this week it seems like it may be necessary again. 00:55:15.540 --> 00:55:17.660 So she and I one day were texting. 00:55:17.660 --> 00:55:18.920 This is back in 2015. 00:55:18.920 --> 00:55:22.550 We're texting about dumplings because we are Chinese-ish women 00:55:22.550 --> 00:55:24.510 and we like to text about food. 00:55:24.510 --> 00:55:26.540 And so I sent her this picture of dumplings. 00:55:26.540 --> 00:55:29.660 She was like yum, yum, yum, yum, yum, yum, yum, yum. 00:55:29.660 --> 00:55:34.638 And then she was like, oh, Apple doesn't have a dumpling emoji. 00:55:34.638 --> 00:55:36.680 And I was like, well, that's kind of interesting. 00:55:36.680 --> 00:55:40.970 I didn't really think anything about it because people point things out to you 00:55:40.970 --> 00:55:44.520 all the time, and then you just like forget, and you just like move on. 00:55:44.520 --> 00:55:50.000 But then half an hour later, on my phone appears this dumpling with heart eyes. 00:55:50.000 --> 00:55:52.490 And you don't see it because this is a still shot, 00:55:52.490 --> 00:55:54.020 but it actually had blinking eyes. 00:55:54.020 --> 00:55:56.187 So she liked to call it like bling, bling, dumpling. 00:55:56.187 --> 00:56:00.620 So she as a designer had decided to go in and make her own dumpling 00:56:00.620 --> 00:56:03.733 emoji because she was like, I'm a designer, I can fix it. 00:56:03.733 --> 00:56:05.150 But that actually got me thinking. 00:56:05.150 --> 00:56:07.670 I was like, where do emoji come from? 00:56:07.670 --> 00:56:09.800 And how is there not a dumpling emoji. 00:56:09.800 --> 00:56:14.000 Because from my perspective, dumplings are this kind of universal food. 00:56:14.000 --> 00:56:14.510 Right. 00:56:14.510 --> 00:56:21.730 So and there are a lot of Japanese foods on the emoji keyboard. 00:56:21.730 --> 00:56:23.560 And I was not, this was like back in 2015. 00:56:23.560 --> 00:56:26.060 I was like not a big emoji user like at all. 00:56:26.060 --> 00:56:28.180 So I mean, you have things like ramen. 00:56:28.180 --> 00:56:29.680 You have Bento boxes. 00:56:29.680 --> 00:56:30.910 You have curry. 00:56:30.910 --> 00:56:32.200 You have tempura. 00:56:32.200 --> 00:56:35.710 You even have kind of obscure kind of foods 00:56:35.710 --> 00:56:40.060 like this thing, things on a stick, turns out to be fish things on a stick. 00:56:40.060 --> 00:56:44.350 Then this pink and white swirly thing is also a fish thing. 00:56:44.350 --> 00:56:46.510 And there's even like that triangle rice ball 00:56:46.510 --> 00:56:49.780 that looks like it's had a bikini wax, all well represented 00:56:49.780 --> 00:56:52.602 on the emoji keyboard, but no dumplings. 00:56:52.602 --> 00:56:55.810 And it's very strange, because like all cultures kind of have their dumpling, 00:56:55.810 --> 00:56:59.620 whether or not it's khinkali or ravioli or empanadas, 00:56:59.620 --> 00:57:02.260 like essentially everyone sort of like discovered 00:57:02.260 --> 00:57:07.270 the idea of yummy goodness inside a carbohydrate shell, 00:57:07.270 --> 00:57:11.390 whether or not baked or fried or steamed. 00:57:11.390 --> 00:57:16.270 So I was like, OK, I literally Google was like who controls emoji. 00:57:16.270 --> 00:57:20.260 And you discover that they're actually regulated by a nonprofit called 00:57:20.260 --> 00:57:21.850 the Unicode Consortium. 00:57:21.850 --> 00:57:25.930 And it is, and I just went on their website 00:57:25.930 --> 00:57:30.070 and I discovered that they had 12 full voting members as of 2015. 00:57:30.070 --> 00:57:33.430 So this is 2015, and they were like mostly US multinational tech companies. 00:57:33.430 --> 00:57:34.090 It was Oracle. 00:57:34.090 --> 00:57:40.120 It was IBM, Microsoft, Adobe, Google, Apple, Facebook, and Yahoo. 00:57:40.120 --> 00:57:44.680 And of the three that were not multinational US tech companies, 00:57:44.680 --> 00:57:48.340 there were, let's see a German company called SAP. 00:57:48.340 --> 00:57:52.720 A Chinese telecom company called Huawei, and then like the government of Oman. 00:57:52.720 --> 00:57:57.700 Those were basically the 12 full voting members of the US multinational tech 00:57:57.700 --> 00:57:58.220 companies. 00:57:58.220 --> 00:58:03.460 So they at that point paid $18,000 a year 00:58:03.460 --> 00:58:06.790 to have full voting power on the Unicode committee. 00:58:06.790 --> 00:58:09.730 And I was like, oh, that's a lot of money. 00:58:09.730 --> 00:58:13.055 And I kind of felt indignant about this. 00:58:13.055 --> 00:58:15.430 But then if you kind of keep on digging on their website, 00:58:15.430 --> 00:58:18.160 you found there was this kind of interesting loophole, which 00:58:18.160 --> 00:58:22.660 is could join as an individual for $75. 00:58:22.660 --> 00:58:24.760 You don't get voting power, but it gave you 00:58:24.760 --> 00:58:27.880 the right to put yourself on the email list 00:58:27.880 --> 00:58:30.490 and also to attend the quarterly Unicode meeting. 00:58:30.490 --> 00:58:31.690 So I was like, I'll do that. 00:58:31.690 --> 00:58:32.982 I had no idea what I was doing. 00:58:32.982 --> 00:58:35.800 But I'm like, I'm going to go fight for this dumpling emoji, 00:58:35.800 --> 00:58:38.980 because from my perspective, dumplings are universal. 00:58:38.980 --> 00:58:41.000 Emoji are kind of universal. 00:58:41.000 --> 00:58:44.350 So the fact that there was no dumpling emoji meant like something 00:58:44.350 --> 00:58:49.430 was wrong in the universe and I was determined to fix this. 00:58:49.430 --> 00:58:50.950 You know I was on this email list. 00:58:50.950 --> 00:58:54.170 And then a couple of maybe, even like a couple of weeks later, 00:58:54.170 --> 00:58:56.960 I got-- they kind of sent out this note that's like, 00:58:56.960 --> 00:58:59.050 hey, who's coming to the quarterly meeting. 00:58:59.050 --> 00:59:01.420 And I was like, I looked at the calendar. 00:59:01.420 --> 00:59:02.450 I looked at my schedule. 00:59:02.450 --> 00:59:06.080 I was like, oh, I'll be in Silicon Valley at that time. 00:59:06.080 --> 00:59:09.850 So I basically like RSVP and I was like, I will be there 00:59:09.850 --> 00:59:13.827 and took Caltrain to an Apple building. 00:59:13.827 --> 00:59:15.910 It's a legal building in I think it was Sunnyvale. 00:59:15.910 --> 00:59:17.110 So I just like show up. 00:59:17.110 --> 00:59:20.680 And I don't know what I was sort of expecting like with like the Unicode. 00:59:20.680 --> 00:59:23.440 I think I maybe that was going to be like a baby Congress, 00:59:23.440 --> 00:59:26.650 like with a little very formal seats, people with gavels. 00:59:26.650 --> 00:59:28.150 That is not what I found. 00:59:28.150 --> 00:59:30.760 Basically it is, it was a conference room 00:59:30.760 --> 00:59:34.830 full of people who skewed wider, skewed older, skewed male, skewed engineers. 00:59:34.830 --> 00:59:36.830 And this is basically the room where it happens. 00:59:36.830 --> 00:59:38.710 So this is 2015. 00:59:38.710 --> 00:59:43.930 These were the people who decided your emoji, all very nice and. 00:59:43.930 --> 00:59:47.290 There was one, even had a daughter who had a sense of humor and made him 00:59:47.290 --> 00:59:50.860 a shirt that said "Shadowy Emoji Overlord." 00:59:50.860 --> 00:59:55.690 So I just kind of listened to them debate things like milk emoji and beans 00:59:55.690 --> 00:59:56.260 emoji. 00:59:56.260 --> 00:59:58.870 And it just seemed like not quite right to me 00:59:58.870 --> 01:00:03.850 that it would be this global visual language that were basically 01:00:03.850 --> 01:00:08.270 decided by like a small group of people inside a conference room in Silicon 01:00:08.270 --> 01:00:08.920 Valley. 01:00:08.920 --> 01:00:12.250 So I decided to form a group called Emojination, 01:00:12.250 --> 01:00:14.770 whose motto is like "Emoji by the People, for the People." 01:00:14.770 --> 01:00:20.290 And it basically advocates for more kind of representative inclusive emoji. 01:00:20.290 --> 01:00:25.120 We start with a Kickstarter campaign, dumpling emoji 01:00:25.120 --> 01:00:27.730 process trying to right the wrong in this world 01:00:27.730 --> 01:00:30.458 and made this little cute video sort of advocating-- 01:00:30.458 --> 01:00:32.500 NARRATOR: Dumpling are one of the most universal, 01:00:32.500 --> 01:00:34.450 cross-cultural foods in the world. 01:00:34.450 --> 01:00:40.090 Georgia has khinkali Japan has gyoza, Korea has mandu, Italy has ravioli, 01:00:40.090 --> 01:00:44.020 Poland has pierogi, Russia has pelmani, Argentina has empanadas, 01:00:44.020 --> 01:00:47.020 Jewish people have kreplach, China has potstickers, 01:00:47.020 --> 01:00:49.780 Nepal and Tibet have momos. 01:00:49.780 --> 01:00:51.970 Yet somehow, despite their popularity, there 01:00:51.970 --> 01:00:54.700 is no dumpling emoji in the standard set. 01:00:54.700 --> 01:00:55.750 Why is that? 01:00:55.750 --> 01:01:00.320 Emoji exist for pizza, tempura, sushi, spaghetti, hot dog and now tacos, 01:01:00.320 --> 01:01:02.600 which Taco Bell takes credit for. 01:01:02.600 --> 01:01:04.420 We need to right this disparity. 01:01:04.420 --> 01:01:05.680 Dumplings are global. 01:01:05.680 --> 01:01:07.145 Emoji are global. 01:01:07.145 --> 01:01:08.770 Isn't it time we brought them together? 01:01:11.380 --> 01:01:14.320 Oh, yeah, while we're at it, how about an emoji for Chinese takeout? 01:01:17.420 --> 01:01:17.920 JENNIFER 8. 01:01:17.920 --> 01:01:21.110 LEE: So I did put together a dumpling emoji proposal. 01:01:21.110 --> 01:01:24.850 I wrote this, I remember Thanksgiving Day 2015 on a plane. 01:01:24.850 --> 01:01:29.080 And actually, and we got it passed, basically dumpling, 01:01:29.080 --> 01:01:32.590 takeout box, chopsticks and fortune cookie. 01:01:32.590 --> 01:01:35.680 I have to say, I don't think fortune cookie would have made it 01:01:35.680 --> 01:01:37.510 on its own merits, but it kind of like slid 01:01:37.510 --> 01:01:40.070 in on the coattails of the other ones. 01:01:40.070 --> 01:01:42.790 And so these were the proposals as we submitted them. 01:01:42.790 --> 01:01:46.475 And then these are the ones that kind of exist now on the Apple keyboard. 01:01:46.475 --> 01:01:48.350 And I have to say, the dumpling looks really, 01:01:48.350 --> 01:01:51.190 really realistic, oddly realistic. 01:01:51.190 --> 01:01:54.160 And whereas, like the fortune cookie I think is like a big fail, 01:01:54.160 --> 01:01:56.950 because first of all, there's like, it has no-- it has no gap. 01:01:56.950 --> 01:01:58.750 It looks like a dead 3D Pac-Man. 01:01:58.750 --> 01:02:03.417 So I'm very disappointed in the manifestation of that. 01:02:03.417 --> 01:02:04.000 But that's OK. 01:02:04.000 --> 01:02:05.110 That's OK. 01:02:05.110 --> 01:02:07.600 And so it's kind of interesting, like what is 01:02:07.600 --> 01:02:10.660 the process of getting an emoji passed? 01:02:10.660 --> 01:02:13.220 And I will walk you through it. 01:02:13.220 --> 01:02:15.760 So first of all, you come up with your idea. 01:02:15.760 --> 01:02:19.090 And then you write this proposal and then 01:02:19.090 --> 01:02:22.420 you submit it to the Unicode emoji subcommittee who then gives you 01:02:22.420 --> 01:02:24.070 comments and then sends it back to you. 01:02:24.070 --> 01:02:25.945 And you kind go around and around the circle. 01:02:29.560 --> 01:02:31.197 So these are things that we consider. 01:02:31.197 --> 01:02:34.030 So somewhere in there, I also fought my way onto the emoji committee 01:02:34.030 --> 01:02:37.090 and then also became a Vice Chair, became a Vice Chair. 01:02:37.090 --> 01:02:41.140 Sort of an extracurricular just like completely run amok in my life. 01:02:41.140 --> 01:02:47.590 So things that matter popular demand, is it a frequently requested emoji. 01:02:47.590 --> 01:02:51.940 Multiple usages and meanings, so that's actually kind of very important 01:02:51.940 --> 01:02:55.130 for something like certain animals have meaning. 01:02:55.130 --> 01:03:01.000 So we did sloth a while ago, and that also has not only the literal meaning 01:03:01.000 --> 01:03:04.120 but sort of like connotations. 01:03:04.120 --> 01:03:07.280 There are visually distinctiveness, it can be recognized. 01:03:07.280 --> 01:03:10.720 So this was a blocker for one of the emoji 01:03:10.720 --> 01:03:14.870 that I have worked on before which is cave, which is kind of hard to do. 01:03:14.870 --> 01:03:17.650 I think, meaning wise, is pretty good, but it's really hard 01:03:17.650 --> 01:03:20.140 to get a cave down in emoji sizes. 01:03:20.140 --> 01:03:22.120 And then it filling a gap, completeness. 01:03:22.120 --> 01:03:25.630 So a good example for that is like for some reason, for many years, 01:03:25.630 --> 01:03:29.260 we had red heart, yellow heart, green heart, blue heart, purple heart, 01:03:29.260 --> 01:03:31.840 and no orange heart. 01:03:31.840 --> 01:03:34.338 So somewhat, so you would do the rainbow, 01:03:34.338 --> 01:03:36.130 but people would substitute the pumpkin in. 01:03:36.130 --> 01:03:39.280 So you would like have a rainbow heart thing with a little pumpkin stuck 01:03:39.280 --> 01:03:39.890 in the middle. 01:03:39.890 --> 01:03:45.640 So orange heart obviously should be added and give a sense of completeness. 01:03:45.640 --> 01:03:49.120 And then something else is existing vendor compatibility. 01:03:49.120 --> 01:03:53.680 And so a good example for that was many years ago 01:03:53.680 --> 01:03:58.150 WhatsApp decided to add the gender non-binary emoji. 01:03:58.150 --> 01:04:03.860 And then once it did that, then all of the other kind of vendors jumped on. 01:04:03.860 --> 01:04:06.580 So what kind of knocks out an emoji. 01:04:06.580 --> 01:04:08.830 So too specific or narrow. 01:04:08.830 --> 01:04:13.250 So we'll often see that with very specific animals or a very specific 01:04:13.250 --> 01:04:13.750 group. 01:04:13.750 --> 01:04:18.312 It's redundant so one year, oh my God, who makes a Butterball? 01:04:18.312 --> 01:04:19.520 Butterball makes the turkeys. 01:04:19.520 --> 01:04:24.202 Butterball submitted an emoji proposal that was like a cooked turkey. 01:04:24.202 --> 01:04:27.410 But we already had a live turkey so it seemed kind of redundant to have both, 01:04:27.410 --> 01:04:29.810 like a cooked turkey for Thanksgiving and a live turkey. 01:04:29.810 --> 01:04:33.410 So not visually discernible. 01:04:33.410 --> 01:04:36.200 This is a struggle for things like, I know my friends have 01:04:36.200 --> 01:04:40.250 kind of proposed kimchi. 01:04:40.250 --> 01:04:44.992 Kimchi is really hard on emoji sizes for many reasons and part of that tension 01:04:44.992 --> 01:04:46.700 is because it's not visually discernible. 01:04:46.700 --> 01:04:49.520 Then there are no logos brands, deities, or celebrities. 01:04:49.520 --> 01:04:52.910 So no Nike swoosh, no McDonald's M. And then 01:04:52.910 --> 01:04:57.200 this is one that we decide in the last year or so which is no more flags. 01:04:57.200 --> 01:04:59.660 Flags are a very complicated thing. 01:04:59.660 --> 01:05:01.880 And as a result Unicode does not want to be 01:05:01.880 --> 01:05:05.030 in a business of deciding what is a country or not a country. 01:05:05.030 --> 01:05:08.840 So like when you get a proposal from like Kurdistan, you're like-- 01:05:08.840 --> 01:05:11.930 so right now, the way that the emoji flags are decided 01:05:11.930 --> 01:05:14.750 is they kind of depend on what the UN recognizes 01:05:14.750 --> 01:05:18.020 and then those get passed down to the International Standards Organization 01:05:18.020 --> 01:05:19.460 and then Unicode just does that. 01:05:19.460 --> 01:05:25.700 It does not want to be in the business of the geopolitical affairs. 01:05:25.700 --> 01:05:28.310 So once it comes out of the subcommittee, 01:05:28.310 --> 01:05:31.250 it goes to the full Unicode Technical Committee, UTC. 01:05:31.250 --> 01:05:34.550 Those were the people that were in the room that I showed you. 01:05:34.550 --> 01:05:39.950 And they vote once a year basically to pass all the emoji. 01:05:39.950 --> 01:05:40.967 And it takes a while. 01:05:40.967 --> 01:05:43.550 There's a lot of coordinating with the International Standards 01:05:43.550 --> 01:05:47.210 Organization and a lot of working with the companies. 01:05:47.210 --> 01:05:50.750 And eventually, it takes a long time, but it ends up on your devices. 01:05:50.750 --> 01:05:53.325 And that historically has taken about 18 to 24 months 01:05:53.325 --> 01:05:55.700 from when you put it in a proposal to when you get it in. 01:05:55.700 --> 01:06:00.920 It's going to be a little bit longer going forward probably is my sense 01:06:00.920 --> 01:06:02.120 as we're organized-- 01:06:02.120 --> 01:06:05.600 Unicode is designed to space out some of the Unicode releases. 01:06:05.600 --> 01:06:09.750 So Emojination kind of has done its thing. 01:06:09.750 --> 01:06:12.170 So one of the weird things is like how did Unicode, 01:06:12.170 --> 01:06:15.050 this kind of non-profit organization based in Mountain View, 01:06:15.050 --> 01:06:19.320 California end up controlling this global visual language? 01:06:19.320 --> 01:06:22.580 So a lot of it has to start, has it has to do with the fact 01:06:22.580 --> 01:06:26.450 that emoji started in Japan back in the late 1990s. 01:06:26.450 --> 01:06:30.590 The set from Docomo in 1999 is considered, 01:06:30.590 --> 01:06:33.620 is widely considered sort of like the first like color emoji set. 01:06:33.620 --> 01:06:36.410 It has been collected by the Museum of Modern Art. 01:06:36.410 --> 01:06:41.720 And so the Japanese telecom companies would use basically, 01:06:41.720 --> 01:06:43.178 would have their own sets of emoji. 01:06:43.178 --> 01:06:46.303 And then there were different companies, so they would have different sets. 01:06:46.303 --> 01:06:49.550 So you could basically only send these like visual characters with someone 01:06:49.550 --> 01:06:51.350 who is on your same carrier. 01:06:51.350 --> 01:06:55.040 So it's like basically equivalent of if you were on like Verizon, 01:06:55.040 --> 01:06:58.010 you could only text people on Verizon with like emoji. 01:06:58.010 --> 01:07:01.680 Or if you were on T-Mobile, you could only do that. 01:07:01.680 --> 01:07:08.600 So at a certain point, they decided they the Apple and Google came into Japan. 01:07:08.600 --> 01:07:10.550 They wanted to start selling smartphones. 01:07:10.550 --> 01:07:14.270 And they realized that it was a hodgepodge of systems 01:07:14.270 --> 01:07:16.380 and they wanted to unify it. 01:07:16.380 --> 01:07:19.820 And so in 2007, they went to Unicode and they're like OK, 01:07:19.820 --> 01:07:26.220 help us unify the emoji, kind of basically all the emojis 01:07:26.220 --> 01:07:27.870 so that we have one standard system. 01:07:27.870 --> 01:07:30.850 And part of the reason is why Unicode. 01:07:30.850 --> 01:07:32.600 Because Unicode basically has this mission 01:07:32.600 --> 01:07:35.300 is to enable everyone speaking every language on Earth 01:07:35.300 --> 01:07:37.940 to be able to use your languages on computer and smartphone, 01:07:37.940 --> 01:07:43.850 so it basic unifies all written languages into one ginormous set. 01:07:43.850 --> 01:07:47.400 And that was not the case actually when I was growing up. 01:07:47.400 --> 01:07:50.300 There was a point where like if you were Japanese on Apple 01:07:50.300 --> 01:07:54.620 that would be different than Japanese on DOS or Chinese or Arabic. 01:07:54.620 --> 01:07:57.170 So it drove everyone crazy and they basically 01:07:57.170 --> 01:08:02.240 decided around the late '80s or early 1990s that they were going to come up 01:08:02.240 --> 01:08:04.700 with one standardized system that sort of encoded 01:08:04.700 --> 01:08:09.060 all characters in one ginormous set. 01:08:09.060 --> 01:08:12.350 So there's three main projects for Unicode if you care. 01:08:12.350 --> 01:08:14.930 So one is encoding characters including emoji. 01:08:14.930 --> 01:08:17.569 Now there are about 100,000 characters aside assigned, 01:08:17.569 --> 01:08:24.830 so that includes Chinese, Japanese, Korean, Arabic, Cyrillic, actually 01:08:24.830 --> 01:08:29.930 all the hieroglyphics, all of the emoji, a lot of things like the Bitcoin symbol 01:08:29.930 --> 01:08:31.490 or like copyleft or whatever. 01:08:31.490 --> 01:08:36.290 Those all assigned were about 100,000 characters, even those languages 01:08:36.290 --> 01:08:38.069 that are basically out of use. 01:08:38.069 --> 01:08:44.689 So the other thing it does, it creates localization resources so things so 01:08:44.689 --> 01:08:49.520 that you know, oh, if you're in this country this is you're using a euro 01:08:49.520 --> 01:08:51.569 or you're using the pesos or something. 01:08:51.569 --> 01:08:54.800 So there's a lot of localization data that 01:08:54.800 --> 01:08:59.600 is needed depending on which geography you're using your device from, 01:08:59.600 --> 01:09:03.960 or that you know that the time is used this way or dates are shown that way. 01:09:03.960 --> 01:09:09.240 So that is called the common local data repository or CLDR as they call it. 01:09:09.240 --> 01:09:12.560 And the other thing they do is they kind of maintain libraries for developers 01:09:12.560 --> 01:09:15.328 in order to do all-- 01:09:15.328 --> 01:09:18.370 so they are not building everything from scratch, and that is called ICU. 01:09:18.370 --> 01:09:21.130 So it's very funny, because it's called CLDR, 01:09:21.130 --> 01:09:24.520 and then one day, one of our friend's girlfriends 01:09:24.520 --> 01:09:30.040 made him this thing which she called a sealdeer, because whenever 01:09:30.040 --> 01:09:35.710 he talked about CLDR, she thought he was talking about sealdeers. 01:09:35.710 --> 01:09:40.450 So now this is his little like mascot for like Unicode related things. 01:09:40.450 --> 01:09:42.580 So how does Unicode do this? 01:09:42.580 --> 01:09:44.439 So basically it assigns code points. 01:09:44.439 --> 01:09:48.910 And each code point is a unique number assigned to each Unicode character, 01:09:48.910 --> 01:09:55.090 so face with tears of joy, it can be written like this with a code point, 01:09:55.090 --> 01:09:57.597 or it can be written like this in terms of decimal numbers. 01:09:57.597 --> 01:09:59.680 And it can also written in this in binary numbers. 01:09:59.680 --> 01:10:01.970 So these are all basically the same. 01:10:01.970 --> 01:10:04.270 And the key thing to know, at least about emoji, 01:10:04.270 --> 01:10:07.300 is that when your device, if you're talking on your iPhone 01:10:07.300 --> 01:10:11.800 with someone who's on a laptop or an iPad or like an Android device, 01:10:11.800 --> 01:10:13.715 it's not sending the images back and forth. 01:10:13.715 --> 01:10:15.590 It's sending just a number of back and forth. 01:10:15.590 --> 01:10:19.120 And then locally, your phone, or like your laptop 01:10:19.120 --> 01:10:23.920 decides like, oh this number correlates with which image in terms 01:10:23.920 --> 01:10:25.910 of our emoji font and then pulls it up. 01:10:25.910 --> 01:10:30.940 So this is really key to know why different emoji look different 01:10:30.940 --> 01:10:33.020 on different platforms. 01:10:33.020 --> 01:10:36.320 So 2007 to 2010, it took about three years, 01:10:36.320 --> 01:10:40.450 but Unicode 6.0 came out with our first little baby set of emoji. 01:10:40.450 --> 01:10:42.430 And it just kind of hung out there for a year. 01:10:42.430 --> 01:10:44.013 Like no one, it wasn't doing anything. 01:10:44.013 --> 01:10:48.010 So 2011 though, Apple starts adding the emoji keyboard 01:10:48.010 --> 01:10:52.930 and it just like explodes, like I feel like in some ways, emoji are 01:10:52.930 --> 01:10:53.980 were not invented. 01:10:53.980 --> 01:10:54.970 They were discovered. 01:10:54.970 --> 01:10:58.120 They like obviously touch something very, very primal 01:10:58.120 --> 01:11:04.030 to like our human desire to communicate in like little colorful glyphs 01:11:04.030 --> 01:11:05.530 on electronic devices. 01:11:05.530 --> 01:11:08.260 And you kind of have what's kind of really interesting 01:11:08.260 --> 01:11:13.570 is like the ambiguity that comes with what emoji kind of mean. 01:11:13.570 --> 01:11:15.698 And so one this is one of my favorite emoji. 01:11:15.698 --> 01:11:18.490 It's sort of like an upside down smiley face, very, very ambiguous. 01:11:18.490 --> 01:11:20.680 Clearly very ambiguous, because if you start 01:11:20.680 --> 01:11:23.920 typing into Google, like the top hits are like what does it mean from a guy. 01:11:23.920 --> 01:11:25.270 What does it mean from a girl. 01:11:25.270 --> 01:11:27.160 It's clearly something that a lot of people 01:11:27.160 --> 01:11:30.820 are using in like complex situation ships between each other. 01:11:33.490 --> 01:11:36.310 So one of the fun things is who can propose emoji. 01:11:36.310 --> 01:11:37.540 Technically anyone can. 01:11:37.540 --> 01:11:38.590 Anyone here can. 01:11:38.590 --> 01:11:40.240 Normal humans can. 01:11:40.240 --> 01:11:42.850 We have basically Google Doc or Google Form 01:11:42.850 --> 01:11:46.480 that we throw up historically between August, sorry April 01:11:46.480 --> 01:11:49.100 and August in the last two years. 01:11:49.100 --> 01:11:53.330 And so this is one of our favorite examples. 01:11:53.330 --> 01:11:54.730 This is Rayouf Alhumedhl. 01:11:54.730 --> 01:11:58.600 She was a 15-year-old Saudi Arabian girl who was living in Vienna at the time 01:11:58.600 --> 01:12:02.440 that she proposed the hijab emoji. 01:12:02.440 --> 01:12:05.072 And then she was like Time Magazine like coolest teens 01:12:05.072 --> 01:12:07.030 she got like a whole bunch of different things. 01:12:07.030 --> 01:12:08.510 She got into Harvard and Stanford. 01:12:08.510 --> 01:12:09.552 And she went to Stanford. 01:12:12.700 --> 01:12:13.930 So this is a proposal we got. 01:12:13.930 --> 01:12:16.090 Then there was a group of folks from Argentina 01:12:16.090 --> 01:12:20.350 who got the mate emoji, kind of the symbol of their national drink. 01:12:20.350 --> 01:12:24.520 Then we worked with, there was a nonprofit that really wanted 01:12:24.520 --> 01:12:30.850 to get a menstruation emoji and so what they proposed to begin with 01:12:30.850 --> 01:12:32.480 was like bloody underwear. 01:12:32.480 --> 01:12:34.870 And I was just like no, no, no. 01:12:34.870 --> 01:12:38.650 So many different reasons why this is a terrible emoji. 01:12:38.650 --> 01:12:41.403 So we did get blood drops and you can do moon and blood 01:12:41.403 --> 01:12:42.820 drop or underwear and blood drops. 01:12:42.820 --> 01:12:44.153 There's a lot of different ways. 01:12:44.153 --> 01:12:47.140 Actually it's really funny, because I was polling my friends beforehand 01:12:47.140 --> 01:12:50.320 what they would use to indicate menstruation 01:12:50.320 --> 01:12:52.430 before there was a blood drop. 01:12:52.430 --> 01:12:54.220 So there was like red wine. 01:12:54.220 --> 01:12:59.050 There was kind of that rose with the like falling petal. 01:12:59.050 --> 01:13:01.810 And then my favorite is actually my friend 01:13:01.810 --> 01:13:04.090 who used a Japanese flag as a way to indicate 01:13:04.090 --> 01:13:06.830 that she was having her period. 01:13:06.830 --> 01:13:11.890 So one of the biggest contributors, this skin tone emoji 01:13:11.890 --> 01:13:13.480 appeared, I think in 2015. 01:13:13.480 --> 01:13:14.600 It was amazing. 01:13:14.600 --> 01:13:15.100 It is. 01:13:15.100 --> 01:13:18.700 And it was proposed by a mom, Katrina Parrott. 01:13:18.700 --> 01:13:21.940 She is an entrepreneur and a mom who is just like at home 01:13:21.940 --> 01:13:24.100 one day and her daughter comes home and is 01:13:24.100 --> 01:13:28.680 like I wish there were emoji that looked like me. 01:13:28.680 --> 01:13:31.020 And her mom was like, that's great, honey. 01:13:31.020 --> 01:13:32.130 What's an emoji? 01:13:32.130 --> 01:13:36.150 And so she, like me, I guess googled and just figure it out 01:13:36.150 --> 01:13:38.490 that Unicode controlled emoji. 01:13:38.490 --> 01:13:41.130 And she just came up with a proposal saying we should not only 01:13:41.130 --> 01:13:42.690 have the yellow skin tones. 01:13:42.690 --> 01:13:45.540 At that time, everything was sort of Simpson's yellow. 01:13:45.540 --> 01:13:52.350 It's really interesting to see how race and nationality are depicted 01:13:52.350 --> 01:13:53.920 in different parts of the world. 01:13:53.920 --> 01:13:59.910 So originally in Japan, everyone was yellow, but these were the non-- 01:13:59.910 --> 01:14:03.450 by default, everyone was just like human or Japanese. 01:14:03.450 --> 01:14:05.880 But they had like a couple of things that were like not. 01:14:05.880 --> 01:14:08.520 One was, you had a blonde person. 01:14:08.520 --> 01:14:10.830 So there's an emoji called like blonde woman 01:14:10.830 --> 01:14:13.403 or whatever that represents all Westerners. 01:14:13.403 --> 01:14:14.070 So that was one. 01:14:14.070 --> 01:14:16.923 And then they have one that's like an Indian guy with a turban. 01:14:16.923 --> 01:14:18.840 So that's supposed to represent Indian people. 01:14:18.840 --> 01:14:23.225 And then there's like a guy with a little like little hat that's supposed 01:14:23.225 --> 01:14:24.600 to represent like Chinese people. 01:14:24.600 --> 01:14:29.040 So that was like that the Japanese view of race which was like default, then 01:14:29.040 --> 01:14:32.400 you were then you were like blonde Western, Chinese or Indian. 01:14:32.400 --> 01:14:34.450 And that is all there was. 01:14:34.450 --> 01:14:38.590 And obviously in the United States, we care a lot about race. 01:14:38.590 --> 01:14:42.210 And then so she came up with a system with five skin tones 01:14:42.210 --> 01:14:43.830 like just like normal people. 01:14:43.830 --> 01:14:45.630 Some guy in Germany decided that he wanted 01:14:45.630 --> 01:14:51.255 to do a face with one eyebrow raised, or as we call it the [? cobara ?] emoji. 01:14:54.540 --> 01:14:55.500 Oh, this one's fun. 01:14:55.500 --> 01:14:57.210 So woman's flat shoe. 01:14:57.210 --> 01:15:00.150 I have to say, not highly used statistically at this point. 01:15:00.150 --> 01:15:02.130 But I really kind of appreciate it because it 01:15:02.130 --> 01:15:06.000 was a mom who was very offended that all women shoes had heels, even 01:15:06.000 --> 01:15:06.840 the sandals. 01:15:06.840 --> 01:15:09.570 So this is her, she had like three kids at the time. 01:15:09.570 --> 01:15:10.350 She now has four. 01:15:10.350 --> 01:15:12.210 She was very fertile. 01:15:12.210 --> 01:15:19.380 And she also did the women's flat-- 01:15:19.380 --> 01:15:25.322 she also did one piece bathing suit because she was also 01:15:25.322 --> 01:15:27.780 offended by the fact that the only kind of bathing suit you 01:15:27.780 --> 01:15:29.852 had was like this little itsy bitsy polka 01:15:29.852 --> 01:15:33.060 dot bikini thing, which is not great if you're like taking your six-year-old. 01:15:33.060 --> 01:15:35.850 So I would say that got passed, but like it didn't go over 01:15:35.850 --> 01:15:37.950 super well with everyone. 01:15:37.950 --> 01:15:41.880 So you know Unicode, because it's very public, submits things for comments. 01:15:41.880 --> 01:15:46.350 And we got this comment back, so one piece bathing suit, why? 01:15:46.350 --> 01:15:50.370 A person wanting to indicate the use of swimwear can't use existing bikini. 01:15:50.370 --> 01:15:52.330 Is this really necessary? 01:15:52.330 --> 01:15:56.050 What about a Victorian bathing costume or wetsuit or [INAUDIBLE].. 01:15:56.050 --> 01:16:01.860 This is like literally in like the records, and like do not encode. 01:16:01.860 --> 01:16:04.530 And so the person who did this, actually very impressive. 01:16:04.530 --> 01:16:08.970 He's actually the person who created the middle finger emoji. 01:16:08.970 --> 01:16:12.720 And actually if you've ever seen the Vulcan emoji, the Vulcan hand emoji, 01:16:12.720 --> 01:16:14.670 he's actually very active. 01:16:14.670 --> 01:16:17.970 And I have to say this is actually I think one of the more impressive emoji. 01:16:17.970 --> 01:16:21.750 So obviously, obviously we have a lot of active debate. 01:16:21.750 --> 01:16:24.390 Sometimes you get like whole countries submitting. 01:16:24.390 --> 01:16:27.300 So literally the government of Finland, as in like their equivalent 01:16:27.300 --> 01:16:30.270 of the State Department, their diplomacy kind of thing, 01:16:30.270 --> 01:16:32.640 submitted a proposal for sauna. 01:16:32.640 --> 01:16:39.580 And these were so creepy and so weird. 01:16:39.580 --> 01:16:42.330 So much is wrong with this. 01:16:42.330 --> 01:16:46.560 But I felt where they were coming from, for like they're naked. 01:16:46.560 --> 01:16:49.050 They have no-- they're club feet. 01:16:49.050 --> 01:16:50.760 And so we decided to help them. 01:16:50.760 --> 01:16:53.350 We're like OK, we see where you're going with this. 01:16:53.350 --> 01:16:57.627 Let's see if we can help you like come up, you know like we had this spoon. 01:16:57.627 --> 01:16:59.460 Like should there be like steam around them. 01:16:59.460 --> 01:17:02.820 Like should they be naked or wearing a towel was like super dicey. 01:17:02.820 --> 01:17:04.950 But we wanted to help them because it was literally 01:17:04.950 --> 01:17:08.580 a foreign government coming in front of Unicode advocating for the sauna emoji 01:17:08.580 --> 01:17:10.180 on behalf of their entire country. 01:17:10.180 --> 01:17:14.760 So then this-- it's evolved into this basically person in steamy room 01:17:14.760 --> 01:17:18.390 which is the most sort of like the PG version of sauna. 01:17:18.390 --> 01:17:19.265 And there's no spoon. 01:17:19.265 --> 01:17:20.098 They're all dressed. 01:17:20.098 --> 01:17:20.790 It's very odd. 01:17:20.790 --> 01:17:24.090 But so you can see the evolution of what it started out. 01:17:24.090 --> 01:17:27.060 What we submitted and what it ended up so. 01:17:27.060 --> 01:17:31.110 There's a lot of evolution throughout the entire process. 01:17:31.110 --> 01:17:34.500 And like companies can submit emoji proposals too. 01:17:34.500 --> 01:17:36.190 So Google actually worked on this one. 01:17:36.190 --> 01:17:36.930 I love this one. 01:17:36.930 --> 01:17:39.420 So just to give you some context, as of 2015, 01:17:39.420 --> 01:17:42.810 there are many ways you could be or have an occupation 01:17:42.810 --> 01:17:45.930 as a male on the emoji keyboard. 01:17:45.930 --> 01:17:49.328 Like for example, you could be a police officer. 01:17:49.328 --> 01:17:50.370 You could be a detective. 01:17:50.370 --> 01:17:52.650 You could be Buckingham Palace guard. 01:17:52.650 --> 01:17:54.180 You could even be Santa Claus. 01:17:54.180 --> 01:17:56.250 Like these are so many jobs that you could have. 01:17:56.250 --> 01:17:58.230 But if you were a woman as of 2015, there 01:17:58.230 --> 01:17:59.970 were four things that you could be. 01:17:59.970 --> 01:18:00.970 You could be a princess. 01:18:00.970 --> 01:18:02.280 You could be a bride. 01:18:02.280 --> 01:18:05.070 You could be a dancer, or you could be a Playboy bunny. 01:18:05.070 --> 01:18:09.240 These were the sum total of all the occupations that we could have. 01:18:09.240 --> 01:18:12.450 So there was sort of this movement at that time, 01:18:12.450 --> 01:18:15.410 there was like this video on YouTube that like went viral. 01:18:15.410 --> 01:18:17.160 There was like a New York Times op-ed that 01:18:17.160 --> 01:18:19.118 was like, where are the women with professions? 01:18:19.118 --> 01:18:24.210 So basically they came up with a set of emoji for professions. 01:18:24.210 --> 01:18:27.700 And what's nice is not did women have these professions, now men have them 01:18:27.700 --> 01:18:28.200 too. 01:18:28.200 --> 01:18:32.310 So of an Emojination emoji, these are some of the ones that we've worked on. 01:18:32.310 --> 01:18:35.250 I think about 130 of the emoji on your keyboard 01:18:35.250 --> 01:18:39.180 probably came through, touched our system in some way, including, 01:18:39.180 --> 01:18:42.150 I have to say microbe or virus. 01:18:42.150 --> 01:18:45.390 I think, I have the opinion that every emoji has its day. 01:18:45.390 --> 01:18:47.305 It might not be like today. 01:18:47.305 --> 01:18:50.430 It might not be next year, but I have to say, virus was not doing anything. 01:18:50.430 --> 01:18:54.550 Then came 2020, and that was like such a good moment for it, along with soap. 01:18:54.550 --> 01:18:55.830 We had also done soap. 01:18:55.830 --> 01:19:00.300 So among the other emoji that we have worked on 01:19:00.300 --> 01:19:03.360 are, sorry, mooncake, llama, teddy bear. 01:19:03.360 --> 01:19:04.230 There were no toys. 01:19:04.230 --> 01:19:05.680 I felt really sad for toys. 01:19:05.680 --> 01:19:07.890 We have giraffe. 01:19:07.890 --> 01:19:08.760 There was hut. 01:19:08.760 --> 01:19:09.480 Bubble tea. 01:19:09.480 --> 01:19:11.850 Bubble tea was very controversial, actually. 01:19:11.850 --> 01:19:16.470 I have to say, we try to slide it in originally with the takeout box 01:19:16.470 --> 01:19:18.973 and the dumplings and people were not having it. 01:19:18.973 --> 01:19:19.890 And I understand that. 01:19:19.890 --> 01:19:21.180 Because there's not a lot. 01:19:21.180 --> 01:19:25.110 Like compared to beer or wine, like bubble tea is not long, 01:19:25.110 --> 01:19:27.540 does not have a long history on this planet. 01:19:27.540 --> 01:19:34.620 But I will say that they submit it again, actually kind of originally 01:19:34.620 --> 01:19:36.420 proposing that it was not just bubble tea, 01:19:36.420 --> 01:19:39.150 but like a black ball and milk and tea. 01:19:39.150 --> 01:19:40.200 It was kind of cool. 01:19:40.200 --> 01:19:43.230 And I have to say there was definitely a generational divide 01:19:43.230 --> 01:19:46.170 between the Asian women who sit in that room and are 01:19:46.170 --> 01:19:48.270 like this absolutely is a thing that we consume 01:19:48.270 --> 01:19:51.180 like almost like every week of our life, and people 01:19:51.180 --> 01:19:54.090 who are a little bit older who are like, that looks like a parfait. 01:19:54.090 --> 01:19:55.798 How do you not know that's not a parfait? 01:19:55.798 --> 01:19:58.230 We're like, we absolutely know it is not a parfait. 01:19:58.230 --> 01:19:59.910 And so it got in, eventually. 01:19:59.910 --> 01:20:01.230 So it does sort of influence. 01:20:01.230 --> 01:20:06.180 It kind of shows who is in the room influences the decisions that 01:20:06.180 --> 01:20:10.740 get made or sometimes in the room, now sometimes more likely in the Zoom. 01:20:10.740 --> 01:20:14.310 I actually had to say Beaver emoji, if you see Beaver emoji, that's 01:20:14.310 --> 01:20:15.870 one of the ones I'm most proud of. 01:20:15.870 --> 01:20:18.240 So that is actually co-authored by a professor 01:20:18.240 --> 01:20:23.760 here at Harvard who is both lesbian and was married to a woman from Canada. 01:20:23.760 --> 01:20:27.570 So it was very important to her to get the Beaver emoji passed. 01:20:27.570 --> 01:20:31.950 And she promised me it would always be the first line of her bio. 01:20:31.950 --> 01:20:34.470 And indeed, if you go to her Twitter handle. 01:20:34.470 --> 01:20:38.760 It's like Joan Donovan, creator of the Beaver emoji, comma, 01:20:38.760 --> 01:20:42.890 is Head of Research at the Shorenstein Center at the Harvard Kennedy School. 01:20:42.890 --> 01:20:45.070 It's pretty impressive. 01:20:45.070 --> 01:20:46.290 And then we did greens. 01:20:46.290 --> 01:20:49.487 Actually greens was really interesting because people, 01:20:49.487 --> 01:20:51.570 this was also like a generational, cultural thing. 01:20:51.570 --> 01:20:53.280 People were like, why do we need greens? 01:20:53.280 --> 01:20:54.060 We have salad. 01:20:54.060 --> 01:20:55.828 And I was like, we're Chinese. 01:20:55.828 --> 01:20:58.620 We don't eat raw greens because like you don't know where it's been 01:20:58.620 --> 01:20:59.460 or if it's clean. 01:20:59.460 --> 01:21:02.310 So we cook our greens so salad is not something that we have. 01:21:02.310 --> 01:21:06.233 So eventually I got my greens and so that was kind of fun. 01:21:06.233 --> 01:21:09.150 And then so these were some of the people who sort of have contributed 01:21:09.150 --> 01:21:12.720 to our little Emojination things, including a number of Native Americans 01:21:12.720 --> 01:21:13.650 who help get feather. 01:21:13.650 --> 01:21:15.000 So why do I care? 01:21:15.000 --> 01:21:16.800 So part of it is because I'm Chinese. 01:21:16.800 --> 01:21:19.133 I grew up speaking Chinese and English at the same time. 01:21:19.133 --> 01:21:22.800 And it's really interesting to see like Chinese and English characters 01:21:22.800 --> 01:21:25.020 in terms of emoji and Chinese together, right. 01:21:25.020 --> 01:21:26.312 So this is fire. 01:21:26.312 --> 01:21:28.770 You have fire characters and now you have the emoji things. 01:21:28.770 --> 01:21:32.370 And it kind of shows that there is a longevity in the human experience 01:21:32.370 --> 01:21:35.670 of something that was designed for 4,000 years ago has the same visual cues 01:21:35.670 --> 01:21:37.350 in the human experiences as now. 01:21:37.350 --> 01:21:42.330 So mouth, tree, moon, sun. 01:21:42.330 --> 01:21:45.250 They can mix and match them, which is super fun. 01:21:45.250 --> 01:21:49.590 So two trees kind of make a forest, oops, sorry. 01:21:49.590 --> 01:21:50.235 Oh well. 01:21:50.235 --> 01:21:59.220 And then the moon and sun together means bright, which I like. 01:21:59.220 --> 01:22:00.100 I like this one. 01:22:00.100 --> 01:22:02.610 So if you stop and you think about this, so this 01:22:02.610 --> 01:22:07.950 is basically a pig under a roof. 01:22:07.950 --> 01:22:09.930 And what does that mean? 01:22:09.930 --> 01:22:11.810 It does not mean farm as you might think. 01:22:11.810 --> 01:22:14.460 It actually means home or family. 01:22:14.460 --> 01:22:18.410 So in the Chinese kind of structure and outlook on the view, 01:22:18.410 --> 01:22:22.370 it's like where you keep your pigs is actually where your home is 01:22:22.370 --> 01:22:24.560 and what your farm is. 01:22:24.560 --> 01:22:27.720 So it gets kind of weird in all kinds of ways. 01:22:27.720 --> 01:22:32.750 So one of my favorite radicals, so this character means woman, me. 01:22:32.750 --> 01:22:38.830 And as I was learning Chinese, you kind of notice like how it shows up. 01:22:38.830 --> 01:22:44.310 So this is a woman underneath a roof and you're like oh it means mom or wife 01:22:44.310 --> 01:22:47.760 or whatever like home. 01:22:47.760 --> 01:22:48.540 It does not. 01:22:48.540 --> 01:22:54.840 It means peace, because things are at home when the woman is or things 01:22:54.840 --> 01:22:58.330 are at peace when the woman is at home underneath a roof, 01:22:58.330 --> 01:23:00.210 which I always thought was little bit odd. 01:23:00.210 --> 01:23:04.900 Then there is also woman plus child. 01:23:04.900 --> 01:23:07.503 So you're like oh, and actually specifically boy child. 01:23:07.503 --> 01:23:09.420 The connotation there is a little bit unclear. 01:23:09.420 --> 01:23:13.710 So you're like a woman plus child, family, mom, whatever. 01:23:13.710 --> 01:23:14.400 It is not. 01:23:14.400 --> 01:23:15.180 It means good. 01:23:15.180 --> 01:23:19.720 So the standard for goodness in ancient China was a woman who had a male child. 01:23:19.720 --> 01:23:23.850 So that kind of just like kind of irked me growing up. 01:23:23.850 --> 01:23:29.400 And then three women together means evil which is very Macbeth. 01:23:29.400 --> 01:23:32.280 This character means greed. 01:23:32.280 --> 01:23:34.620 This character means slave. 01:23:34.620 --> 01:23:37.680 This marriage, let's see I think this one is jealousy 01:23:37.680 --> 01:23:41.100 and this means adultery or betrayal. 01:23:41.100 --> 01:23:44.370 So like definitely not loving the way women 01:23:44.370 --> 01:23:47.490 were portrayed on the emoji keyboard. 01:23:47.490 --> 01:23:49.860 So in case you're wondering, we just came out 01:23:49.860 --> 01:23:54.030 with a kids book called "Hanmoji" that kind of compares emoji and Chinese. 01:23:54.030 --> 01:23:56.610 And I think they sent a whole bunch of books 01:23:56.610 --> 01:24:01.620 so that you guys can do some kind of contests like later on with CS50. 01:24:01.620 --> 01:24:04.530 So but the mixing and matching is really interesting. 01:24:04.530 --> 01:24:09.240 For example, the skin tones are actually the same yellow character 01:24:09.240 --> 01:24:11.410 plus a layer of skin tone on top of that. 01:24:11.410 --> 01:24:13.620 So I kind of took my lessons from Chinese 01:24:13.620 --> 01:24:15.847 in terms of seeing how things can combine. 01:24:15.847 --> 01:24:18.430 So there's something that you should know about, which is ZWJ. 01:24:18.430 --> 01:24:20.610 This is also an invisible emoji character. 01:24:20.610 --> 01:24:22.440 It stands for zero with joiner. 01:24:22.440 --> 01:24:24.720 And it was actually originally created for I 01:24:24.720 --> 01:24:28.950 think Arabic where you would basically kind of force something 01:24:28.950 --> 01:24:32.040 to have be in the beginning of a word or an end of the word 01:24:32.040 --> 01:24:34.710 by kind of having this invisible character. 01:24:34.710 --> 01:24:39.900 So the rainbow flag for example is actually a rainbow plus the white flag. 01:24:39.900 --> 01:24:43.290 And we could have all kinds of fun combinations. 01:24:43.290 --> 01:24:45.750 If you look at polar bear, it actually is, 01:24:45.750 --> 01:24:47.940 if you have an older device where it breaks apart, 01:24:47.940 --> 01:24:51.000 it is bear plus snow which is really cute. 01:24:51.000 --> 01:24:53.880 It was originally, I had bear plus white, 01:24:53.880 --> 01:24:57.550 and then we decided that bear plus snow made a lot more sense. 01:24:57.550 --> 01:25:01.527 So another one, this is new, I think you guys 01:25:01.527 --> 01:25:04.360 should have it if you've updated your phones in the last year or so. 01:25:04.360 --> 01:25:08.862 So mending heart is heart plus band-aid. 01:25:08.862 --> 01:25:09.570 What is this one? 01:25:09.570 --> 01:25:11.610 Oh, this is interesting. 01:25:11.610 --> 01:25:14.278 There was a breastfeeding woman for a long time 01:25:14.278 --> 01:25:16.320 and people felt like there was not gender parity. 01:25:16.320 --> 01:25:19.320 It was actually really interesting, all the people who wrote in and were 01:25:19.320 --> 01:25:22.290 like I want to be a dad showing that I'm holding my baby. 01:25:22.290 --> 01:25:24.270 Why is there only a woman holding my baby? 01:25:24.270 --> 01:25:26.770 So we kind of created a whole set. 01:25:26.770 --> 01:25:29.800 So this is man plus bottle. 01:25:29.800 --> 01:25:31.030 Ta-dah. 01:25:31.030 --> 01:25:32.940 And so this is an-- all of these occupations 01:25:32.940 --> 01:25:37.110 are actually oftentimes a woman plus, like the fried egg 01:25:37.110 --> 01:25:41.160 or like a school or a tractor and that's how you got the occupations. 01:25:41.160 --> 01:25:47.260 If you send an emoji over into an older system, sometimes it'll break apart. 01:25:47.260 --> 01:25:50.790 So one of my kind of favorite kind of contributions in this world 01:25:50.790 --> 01:25:54.300 is interracial couple emoji which we did with Tinder 01:25:54.300 --> 01:25:58.440 which is super fun because then you could have different couples that 01:25:58.440 --> 01:26:00.750 are, and like so many [INAUDIBLE]. 01:26:00.750 --> 01:26:04.300 This is a fun, if you guys ever have to do a [? combinatoric ?] test. 01:26:04.300 --> 01:26:06.390 This is really fun because you have to genders 01:26:06.390 --> 01:26:10.200 plus a third like neutral gender plus two people 01:26:10.200 --> 01:26:15.240 plus five skin tones plus yellow, like how many emoji couples can you come up 01:26:15.240 --> 01:26:16.740 with when you introduce this factor. 01:26:16.740 --> 01:26:20.727 So this is-- and underneath it, it's just a ZWJ sequence, 01:26:20.727 --> 01:26:23.560 it's like two people standing together that are like glued together. 01:26:23.560 --> 01:26:27.150 Now this actually gets interesting from a CS50 perspective because 01:26:27.150 --> 01:26:31.890 in many cases, even though you only see one character underneath the hood 01:26:31.890 --> 01:26:33.750 depending on how your system works, they're 01:26:33.750 --> 01:26:36.360 counting each one of these as an individual character. 01:26:36.360 --> 01:26:39.360 So your string length actually might be five instead of one. 01:26:39.360 --> 01:26:41.820 And this kind of became a problem with things like Twitter 01:26:41.820 --> 01:26:44.160 where things had a hard skin length. 01:26:44.160 --> 01:26:47.130 So gender inclusivity is actually one of the things 01:26:47.130 --> 01:26:51.180 that we've been dealing most with in the last couple of years. 01:26:51.180 --> 01:26:53.670 So it's kind of interesting if you think about both 01:26:53.670 --> 01:26:55.650 what a pictorial language looks like versus 01:26:55.650 --> 01:26:58.410 the abstractness of a spoken language. 01:26:58.410 --> 01:27:02.250 So because we had boy and we had girl. 01:27:02.250 --> 01:27:04.650 But there was no way to say generic child. 01:27:04.650 --> 01:27:07.780 Like if you were, you want to say child, you had to pick a boy or a girl, 01:27:07.780 --> 01:27:11.610 but not a way to say just some little person. 01:27:11.610 --> 01:27:13.890 And that's really key because in English at least 01:27:13.890 --> 01:27:18.040 there is no gender implied by child. 01:27:18.040 --> 01:27:20.100 So how do we mimic that? 01:27:20.100 --> 01:27:24.270 And also is key for something like doctor, right, doctor and teacher. 01:27:24.270 --> 01:27:27.480 Those don't have gender implied, but when 01:27:27.480 --> 01:27:29.760 we have them on the emoji keyboard, you'd 01:27:29.760 --> 01:27:35.150 pick a male teacher or a female doctor or whatnot. 01:27:35.150 --> 01:27:40.240 So there was actually a guy at Adobe who considers himself non-gender binary 01:27:40.240 --> 01:27:44.200 also the man behind the orange heart. 01:27:44.200 --> 01:27:51.650 He fought and got basically the first three non-gender, the non-gender binary 01:27:51.650 --> 01:27:52.150 emoji. 01:27:52.150 --> 01:27:55.430 So child, adult, and the older adults. 01:27:55.430 --> 01:27:56.770 So those are creative. 01:27:56.770 --> 01:27:58.768 And then we started having to propagate them 01:27:58.768 --> 01:28:00.310 through actually all the occupations. 01:28:00.310 --> 01:28:03.530 So these are the gender neutral versions of many of those. 01:28:03.530 --> 01:28:06.160 But then we got into this whole thing where 01:28:06.160 --> 01:28:09.520 every emoji that had a gender originally had to be mirrored. 01:28:09.520 --> 01:28:12.310 So originally we had bearded man, and then we're like, OK, 01:28:12.310 --> 01:28:14.260 well we actually have to get bearded woman. 01:28:14.260 --> 01:28:15.520 So that is on your keyboard. 01:28:15.520 --> 01:28:16.990 There is pregnant woman. 01:28:16.990 --> 01:28:21.130 There is now pregnant man, which is interesting. 01:28:21.130 --> 01:28:24.220 There is woman in a bridal gown. 01:28:24.220 --> 01:28:26.360 There is now man in a bridal gown. 01:28:26.360 --> 01:28:28.360 And then there were ones that actually had to be 01:28:28.360 --> 01:28:31.120 created that were neither man or woman. 01:28:31.120 --> 01:28:32.398 So this is a merperson. 01:28:32.398 --> 01:28:34.940 So there was merman, there's mermaid and there was merperson. 01:28:34.940 --> 01:28:36.773 It was really interesting to figure out, how 01:28:36.773 --> 01:28:38.443 do you draw a gender neutral merperson. 01:28:38.443 --> 01:28:40.360 Like a bunch of them in the beginning actually 01:28:40.360 --> 01:28:43.300 had the arms crossed around the chest. 01:28:43.300 --> 01:28:46.510 Monarch, so there was prince and princess, and now there is monarch. 01:28:46.510 --> 01:28:49.420 And one of my favorite actually is there was Santa Claus 01:28:49.420 --> 01:28:51.530 and there was Mrs. Claus and now there's Mx. 01:28:51.530 --> 01:28:52.030 Claus. 01:28:52.030 --> 01:28:54.490 Like the name of this character literally in Unicode 01:28:54.490 --> 01:28:57.010 is Mx Claus so I feel like it's sort of like a very official 01:28:57.010 --> 01:29:01.720 enshrining of gender non-binaryness in like the world. 01:29:01.720 --> 01:29:02.710 Not everyone loved it. 01:29:02.710 --> 01:29:05.740 New York Post did not love this, like we're 01:29:05.740 --> 01:29:08.650 cutting of into like emoji woke wars. 01:29:08.650 --> 01:29:10.458 So some emoji stats for you. 01:29:10.458 --> 01:29:11.500 This is very fascinating. 01:29:11.500 --> 01:29:13.960 This is sort of like the general distribution. 01:29:13.960 --> 01:29:16.480 By far, the single emoji that you use more 01:29:16.480 --> 01:29:19.330 than anything else is the face with tears of joy, 01:29:19.330 --> 01:29:22.840 about 10% of all emoji sent is that one character. 01:29:22.840 --> 01:29:26.600 And the number two is heart, red heart, and then it kind of goes down. 01:29:26.600 --> 01:29:29.110 So there's a frequency of emoji use. 01:29:29.110 --> 01:29:32.780 This is sort of done by order of magnitude. 01:29:32.780 --> 01:29:35.820 So 1 is 1/2 of 2. 01:29:35.820 --> 01:29:37.760 2 is 1/2 of 1 so duh, duh. 01:29:37.760 --> 01:29:38.760 It's really interesting. 01:29:38.760 --> 01:29:42.180 It's a very, very steep drop off after the first couple in case 01:29:42.180 --> 01:29:46.470 you ever want to go on to the emoji kind of Unicode website, 01:29:46.470 --> 01:29:49.180 you too can see all the frequency things. 01:29:49.180 --> 01:29:50.560 So I think it's really funny. 01:29:50.560 --> 01:29:52.740 So basically if it's green going this way, 01:29:52.740 --> 01:29:56.160 it increased in usage between 2019 and 2021. 01:29:56.160 --> 01:29:57.780 And it's red going this way, it drop. 01:29:57.780 --> 01:30:01.500 And so pleading face, which is a relatively new emoji, just sort of 01:30:01.500 --> 01:30:04.770 shot up on the charts. 01:30:04.770 --> 01:30:08.340 And whereas actually like smiley face with heart eyes 01:30:08.340 --> 01:30:12.100 actually kind of slipt which is interesting. 01:30:12.100 --> 01:30:15.510 So we just closed our emoji proposal around for 2022. 01:30:15.510 --> 01:30:16.830 These were the breakdowns. 01:30:16.830 --> 01:30:20.310 People love submitting smileys and food and beverages, animals and nature. 01:30:20.310 --> 01:30:23.638 I mean, these are very googly colors. 01:30:23.638 --> 01:30:24.930 So what is the future of emoji? 01:30:24.930 --> 01:30:28.650 I will tell you because we just had a meeting two weeks ago 01:30:28.650 --> 01:30:30.480 so I can now publicly talk about it. 01:30:30.480 --> 01:30:32.700 So historically, there was this whole idea 01:30:32.700 --> 01:30:36.990 like Unicode doesn't want to be in the world of like encoding 01:30:36.990 --> 01:30:38.988 glyphs for like devices everywhere. 01:30:38.988 --> 01:30:41.280 There was very controversial when I started doing that, 01:30:41.280 --> 01:30:44.730 because mostly what Unicode used to do was you take an existing language. 01:30:44.730 --> 01:30:48.450 It could be done, you know and then it would just take it and digitize. 01:30:48.450 --> 01:30:51.750 It took languages that existed and just digitized them. 01:30:51.750 --> 01:30:55.950 And then when it kind of wandered into emoji world, suddenly 01:30:55.950 --> 01:31:01.840 it's like deciding what deserves to be like an emoji decides to be digitized. 01:31:01.840 --> 01:31:08.040 So trying to get out of it and they have proposals over time or it's like, oh, 01:31:08.040 --> 01:31:12.240 maybe we should like come up with a way to send pictures back and forth where 01:31:12.240 --> 01:31:15.960 you it's a fixed picture and you like use 01:31:15.960 --> 01:31:20.460 a hash so that we would look at the picture and then go 01:31:20.460 --> 01:31:21.870 do a lookup somewhere. 01:31:21.870 --> 01:31:23.250 That did not go over well. 01:31:23.250 --> 01:31:25.950 Then there was actually a really interesting proposal I kind 01:31:25.950 --> 01:31:29.970 of like, didn't go over well, which is using something called a queue ID which 01:31:29.970 --> 01:31:31.990 is in the Wikipedia world. 01:31:31.990 --> 01:31:38.100 So in Wikipedia world, items all have numbers across the different language 01:31:38.100 --> 01:31:38.610 Wikipedia. 01:31:38.610 --> 01:31:42.790 So Obama, human, Earth, they will have an ID number, 01:31:42.790 --> 01:31:46.890 so that the page in English and the page in German the page in Chinese 01:31:46.890 --> 01:31:48.948 all know that they're pointing to the same thing. 01:31:48.948 --> 01:31:51.240 So the question, so one idea came up, like why don't we 01:31:51.240 --> 01:31:56.280 use the numbering system so we can use like Eiffel tower and see the number 01:31:56.280 --> 01:31:59.370 and then like, oh, people know like oh you're, trying to say Eiffel tower. 01:31:59.370 --> 01:32:00.670 That did not go over well. 01:32:00.670 --> 01:32:04.390 So both of those proposals seem dead as of yet. 01:32:04.390 --> 01:32:07.360 And it's too bad because you'll see what's happening. 01:32:07.360 --> 01:32:08.610 So what's coming in 2022? 01:32:08.610 --> 01:32:11.362 So these are the emoji that I actually sort of thought 01:32:11.362 --> 01:32:14.070 they would be on your phones by now because we're in mid-November 01:32:14.070 --> 01:32:15.700 and they usually update early November. 01:32:15.700 --> 01:32:16.710 So three more hearts. 01:32:16.710 --> 01:32:19.230 People love hearts. 01:32:19.230 --> 01:32:23.430 Wing, blackbird, goose, birds also, purple flowers, jellyfish, 01:32:23.430 --> 01:32:26.130 moose face donkey, donkey was a bit late for the kind 01:32:26.130 --> 01:32:33.520 of elections, ginger, peapod, wireless, khanda, shaking face, folding hand 01:32:33.520 --> 01:32:34.020 fans. 01:32:34.020 --> 01:32:36.645 That one was interesting because when people first proposed it, 01:32:36.645 --> 01:32:40.585 they proposed it as like an electric fan and that didn't-- 01:32:40.585 --> 01:32:42.960 who knows what electric fans will look like in 100 years? 01:32:42.960 --> 01:32:45.168 Because the thing is, once an emoji, always an emoji. 01:32:45.168 --> 01:32:46.170 They never retire. 01:32:46.170 --> 01:32:49.620 So they're always looking for things that have a long visual longevity, 01:32:49.620 --> 01:32:52.390 floppy disk, do not actually do that. 01:32:52.390 --> 01:32:54.840 So there's always like, we don't want another floppy disk. 01:32:54.840 --> 01:32:56.310 And then hair pick is interesting. 01:32:56.310 --> 01:33:02.683 So there was a whole debate about how to convey like Afro African hair, 01:33:02.683 --> 01:33:05.100 like the curly hair that they introduced a couple of years 01:33:05.100 --> 01:33:06.490 ago is supposed to do that. 01:33:06.490 --> 01:33:09.898 And most of the vendors actually have it in a sort of Afro way except for Apple. 01:33:09.898 --> 01:33:11.190 So there's a lot of complaints. 01:33:11.190 --> 01:33:14.010 But hair pick was sort of an interesting way. 01:33:14.010 --> 01:33:17.850 It means both comb but also has sort of an interesting historic connotation, 01:33:17.850 --> 01:33:20.520 and it's been around for about 2,00 years. 01:33:20.520 --> 01:33:22.890 A couple of music things, maracas and flute. 01:33:22.890 --> 01:33:27.440 Beyond 2022, one of the things that's going to die, oops, can I go back? 01:33:27.440 --> 01:33:28.220 No, I can't. 01:33:28.220 --> 01:33:33.530 Oh well, we're going to retire the family emoji. 01:33:33.530 --> 01:33:34.790 They didn't go over so well. 01:33:34.790 --> 01:33:36.110 There were so many of them. 01:33:36.110 --> 01:33:41.540 It's combinatorically if you had all the everything in all the races all, 01:33:41.540 --> 01:33:43.370 the races, all because you wanted to have 01:33:43.370 --> 01:33:45.182 skin tones, because you didn't want imply 01:33:45.182 --> 01:33:46.640 that families can only be one race. 01:33:46.640 --> 01:33:48.470 It was such a ordeal. 01:33:48.470 --> 01:33:52.070 Essentially, we're all like, no one uses them, and there are so many. 01:33:52.070 --> 01:33:54.650 And it's like the fonts like in terms of the load 01:33:54.650 --> 01:33:57.890 is like too large so they're just going to make them all into like basically 01:33:57.890 --> 01:34:01.100 little like bathroom symbol type folks. 01:34:01.100 --> 01:34:03.080 So I think that is, those will disappear. 01:34:03.080 --> 01:34:06.342 What's actually really interesting about the family emoji is they had gay fam. 01:34:06.342 --> 01:34:09.050 When they introduced the family emoji, they had gay family emoji, 01:34:09.050 --> 01:34:11.510 and the Russian government went berserk. 01:34:11.510 --> 01:34:14.510 And actually you can Google this in 2015, you'll see a bunch of articles 01:34:14.510 --> 01:34:18.372 about the Russian government considering it homosexual propaganda to use. 01:34:18.372 --> 01:34:20.330 And there was a big debate about whether or not 01:34:20.330 --> 01:34:21.620 they were going to ban Apple devices. 01:34:21.620 --> 01:34:24.203 And so you can see a lot of the media coverage from that time. 01:34:24.203 --> 01:34:28.820 But I thought it was really interesting how upset a national government can get 01:34:28.820 --> 01:34:32.300 about little pictures on your phone. 01:34:32.300 --> 01:34:36.290 Another thing that's on the agenda as of a couple of weeks ago 01:34:36.290 --> 01:34:39.200 is directionality in terms of emoji. 01:34:39.200 --> 01:34:42.000 So as you know, most emoji kind of just flip one way or another. 01:34:42.000 --> 01:34:45.200 And the reason why it matters is because not all languages 01:34:45.200 --> 01:34:46.560 run in the same direction. 01:34:46.560 --> 01:34:48.170 So for example, Arabic. 01:34:48.170 --> 01:34:53.520 So we're used to left to right, but a lot of languages go right to left. 01:34:53.520 --> 01:34:56.240 So and kind of changes the meaning of emoji. 01:34:56.240 --> 01:34:58.910 For example, right to left, I send this a lot 01:34:58.910 --> 01:35:03.800 to my friends when I'm going flying from the Bay Area to New York. 01:35:03.800 --> 01:35:07.980 If you do it from left to right, however, that is what it looks like. 01:35:07.980 --> 01:35:10.940 So it looks like you're in a Bay Area but the plane is still 01:35:10.940 --> 01:35:13.980 going that kind of up and to the right. 01:35:13.980 --> 01:35:17.360 And then now it looks like you're going from New York to the Bay Area. 01:35:17.360 --> 01:35:21.290 The other place is like, oh, it's a girl, and she's running really fast. 01:35:21.290 --> 01:35:22.250 Right. 01:35:22.250 --> 01:35:26.255 That is right to left in our world, wait left to right, sorry. 01:35:26.255 --> 01:35:28.130 Sorry, that was supposed to be left to right. 01:35:28.130 --> 01:35:32.400 And in here it would be she's like behind like pollution or something 01:35:32.400 --> 01:35:32.900 like that. 01:35:32.900 --> 01:35:34.100 So sorry about-- 01:35:34.100 --> 01:35:36.170 So an example, this is actually in the proposal. 01:35:36.170 --> 01:35:38.690 Like in one case, if it's left or right, you're 01:35:38.690 --> 01:35:40.340 running away from a line of cars. 01:35:40.340 --> 01:35:43.820 And the other one, it's a warning to not run behind car fumes. 01:35:43.820 --> 01:35:48.860 So they are trying to figure out, how do we mirror a bunch of the emoji. 01:35:48.860 --> 01:35:53.680 But the main thing that I think sort of, I don't know when it's going to happen, 01:35:53.680 --> 01:35:55.430 I'm really hopeful it's going to happen is 01:35:55.430 --> 01:35:59.090 trying to come up with a system that supports little stickers in line that 01:35:59.090 --> 01:36:01.610 don't need Unicode. 01:36:01.610 --> 01:36:06.920 So this is like Slack or on Twitch, you can embed little pictures in line, 01:36:06.920 --> 01:36:10.768 and all the vendors have to get together and agree to come up 01:36:10.768 --> 01:36:12.060 with a standard way to do that. 01:36:12.060 --> 01:36:15.410 They'd have not yet come up with that, but that is sort of one of the ways 01:36:15.410 --> 01:36:18.230 that Unicode is like it wants to back away 01:36:18.230 --> 01:36:20.810 from actually being like a global regulator 01:36:20.810 --> 01:36:22.910 for like little colorful glyphs. 01:36:22.910 --> 01:36:27.560 And so if you ever need to reach me in my emoji world, 01:36:27.560 --> 01:36:30.560 you can find me jenny@emojination.org. 01:36:30.560 --> 01:36:35.930 There will be-- it will be actually a while I think before we see 01:36:35.930 --> 01:36:38.057 a next generation of emoji showing up. 01:36:38.057 --> 01:36:40.640 It used to be like every year, they would get new code points. 01:36:40.640 --> 01:36:42.515 It might be a little bit less than every year 01:36:42.515 --> 01:36:47.180 now as they work on things like directionality over time. 01:36:47.180 --> 01:36:49.740 If anyone has questions, you can ask questions. 01:36:49.740 --> 01:36:50.930 You can find me afterwards. 01:36:50.930 --> 01:37:00.257 I think I feel like there's supposed to be some hubbub right now about maybe 01:37:00.257 --> 01:37:01.340 microphones but maybe not. 01:37:01.340 --> 01:37:02.460 But maybe I'm just done. 01:37:02.460 --> 01:37:06.200 And if there are questions or if David is around, I'm happy. 01:37:06.200 --> 01:37:09.200 I'm happy to have to answer any questions that folks have. 01:37:09.200 --> 01:37:10.668 Yes? 01:37:10.668 --> 01:37:11.210 AUDIENCE: Hi. 01:37:11.210 --> 01:37:12.160 Yes. 01:37:12.160 --> 01:37:15.604 I was wondering what were your thoughts on The Emoji Movie. 01:37:15.604 --> 01:37:16.104 JENNIFER 8. 01:37:16.104 --> 01:37:18.870 LEE: So the question is, what are my thoughts on The Emoji Movie. 01:37:18.870 --> 01:37:20.970 You're talking about the Sony animated one? 01:37:20.970 --> 01:37:22.320 Yes. 01:37:22.320 --> 01:37:27.867 My thought on that is it is better than a 6% rating on Rotten Tomatoes 01:37:27.867 --> 01:37:28.950 would lead you to believe. 01:37:28.950 --> 01:37:30.090 So that's my one thought. 01:37:30.090 --> 01:37:36.030 And my next thought is that was a rush job from an animation perspective. 01:37:36.030 --> 01:37:41.880 That was about 18 months, whereas a typical animated movie 01:37:41.880 --> 01:37:43.000 takes four years. 01:37:43.000 --> 01:37:45.960 So in my spare time, I also produce movies and documentaries. 01:37:45.960 --> 01:37:52.545 So one thing that is key to know about movies and animated movies, 01:37:52.545 --> 01:37:53.670 and this is very important. 01:37:53.670 --> 01:37:57.330 They take a very long time, but you can always fix it, 01:37:57.330 --> 01:37:59.430 because you haven't shot anything. 01:37:59.430 --> 01:38:02.917 And a very good example of that is I assume you guys have seen Frozen. 01:38:02.917 --> 01:38:06.000 If you haven't seen-- you seem of the age that you would have seen Frozen. 01:38:06.000 --> 01:38:10.080 I do not understand how huge and a phenomenon or why 01:38:10.080 --> 01:38:11.400 was such a huge phenomenon. 01:38:11.400 --> 01:38:18.480 But they actually did an original cut of Frozen and it-- 01:38:18.480 --> 01:38:21.600 So I don't know if you guys know the Snow Queen thing, 01:38:21.600 --> 01:38:26.490 but she's like super dark and not fun and kind of evil and not someone you 01:38:26.490 --> 01:38:28.080 want to get behind as a character. 01:38:28.080 --> 01:38:31.930 So they actually did sort of a rough cut of that of Frozen. 01:38:31.930 --> 01:38:35.220 And they came out of that with, it is just storyboarding. 01:38:35.220 --> 01:38:36.870 They're like, that is not good. 01:38:36.870 --> 01:38:38.430 And they killed it. 01:38:38.430 --> 01:38:41.670 So they were like, we can't go with this and then 01:38:41.670 --> 01:38:45.880 started from scratch more or less again, starting with a song. 01:38:45.880 --> 01:38:48.180 "Let it Go," which is actually written by a kid 01:38:48.180 --> 01:38:52.410 from my elementary school, Bobby Lopez, or co-written by Bobby Lopez. 01:38:52.410 --> 01:38:54.440 I also-- actually fun fact, I also went, I 01:38:54.440 --> 01:38:57.332 would take the school bus with a Lin-Manuel Miranda. 01:38:57.332 --> 01:38:59.790 So I was a fourth grader when he was like a kindergartener. 01:38:59.790 --> 01:39:02.520 So we had a very musical elementary school in New York City. 01:39:02.520 --> 01:39:06.030 But the thing is, they could fix it because they had enough time 01:39:06.030 --> 01:39:08.490 and have enough money, not like movies where 01:39:08.490 --> 01:39:11.080 you shoot humans, much harder to fix. 01:39:11.080 --> 01:39:13.830 You have the footage that you have, and you can do little pickups, 01:39:13.830 --> 01:39:14.890 but you can't fix it. 01:39:14.890 --> 01:39:18.750 So essentially what happened in that case, I think it's 18 months, 01:39:18.750 --> 01:39:20.400 and it could have gotten better. 01:39:20.400 --> 01:39:23.310 And a lot of the movies that you see with Pixar, like it's very-- 01:39:23.310 --> 01:39:26.820 it's actually sort of emotionally similar to the movie called Inside Out. 01:39:26.820 --> 01:39:28.800 . 01:39:28.800 --> 01:39:30.990 They just had more time, and so it's better, so 01:39:30.990 --> 01:39:35.700 as opposed to 18 months which is not long enough to make an animated movie. 01:39:35.700 --> 01:39:41.040 But the other fun thing is, it was so weird because they sold sponsorships. 01:39:41.040 --> 01:39:46.590 It was like, oh my God, here comes the bots and the malware. 01:39:46.590 --> 01:39:50.020 Let's go into Dropbox and protect ourselves. 01:39:50.020 --> 01:39:55.230 And so I think that it got a lot of bad kind of vibes 01:39:55.230 --> 01:39:57.340 from the press for doing things like that. 01:39:57.340 --> 01:40:00.070 But from a kid's perspective, it's fine. 01:40:00.070 --> 01:40:01.260 I think if-- 01:40:01.260 --> 01:40:05.550 I don't know that I would put it on my top 10 of animated pictures, 01:40:05.550 --> 01:40:08.310 but it's better than 6% on Rotten Tomatoes. 01:40:08.310 --> 01:40:11.340 And then actually if you guys ever care, we have done-- 01:40:11.340 --> 01:40:15.210 I did a documentary about emoji so and all the people 01:40:15.210 --> 01:40:16.710 that helped create emoji. 01:40:16.710 --> 01:40:22.975 And we did a CS50x movie night, I think during the pandemic? 01:40:22.975 --> 01:40:24.100 Was it during the pandemic? 01:40:24.100 --> 01:40:25.440 Everything is sort of like blurred together, 01:40:25.440 --> 01:40:26.732 but it was during the pandemic. 01:40:26.732 --> 01:40:28.440 Yeah. 01:40:28.440 --> 01:40:29.910 More questions? 01:40:29.910 --> 01:40:30.750 Yes? 01:40:30.750 --> 01:40:31.716 AUDIENCE: Hi. 01:40:31.716 --> 01:40:36.510 I wanted to know that you mentioned that one of the criteria for having 01:40:36.510 --> 01:40:38.820 an emoji accepted is that it's popular. 01:40:38.820 --> 01:40:40.380 How do determine whether-- 01:40:40.380 --> 01:40:40.880 JENNIFER 8. 01:40:40.880 --> 01:40:41.960 LEE: Where there's demand, yeah. 01:40:41.960 --> 01:40:43.346 AUDIENCE: Whether there's demand. 01:40:43.346 --> 01:40:44.270 How do you determine demand? 01:40:44.270 --> 01:40:45.200 Is it based on whether or not [INAUDIBLE]?? 01:40:45.200 --> 01:40:45.310 JENNIFER 8. 01:40:45.310 --> 01:40:46.935 LEE: Yeah, that's a very good question. 01:40:46.935 --> 01:40:49.260 Yeah, so the question is one of the proposals-- 01:40:49.260 --> 01:40:53.660 One of our criteria is of getting an emoji accepted 01:40:53.660 --> 01:40:57.300 is to try to demonstrate demand and how do we demonstrate demand? 01:40:57.300 --> 01:41:02.370 And I would say in a pretty clumsy way actually at this point. 01:41:02.370 --> 01:41:06.980 So the main thing that you have in our current proposal process 01:41:06.980 --> 01:41:09.920 is we have a median emoji, which is elephant. 01:41:09.920 --> 01:41:12.853 So elephant is like, you stack ranked all the emoji for popularity, 01:41:12.853 --> 01:41:15.020 elephant is like [CLICKS] right there in the middle. 01:41:15.020 --> 01:41:16.940 And it's also a concept that's universally 01:41:16.940 --> 01:41:19.220 understood across all languages. 01:41:19.220 --> 01:41:24.650 So elephant shows up somewhere between 500 million and 700 million 01:41:24.650 --> 01:41:28.290 in Google search results, like if you type it into a laptop, 01:41:28.290 --> 01:41:32.150 you'll see elephant, 500 million search results. 01:41:32.150 --> 01:41:37.880 And generally, you're trying to-- when you're comparing your term to elephant, 01:41:37.880 --> 01:41:41.780 you want to see very roughly how many Google search results, Bing search 01:41:41.780 --> 01:41:43.310 results, sometimes Instagram. 01:41:43.310 --> 01:41:45.950 So actually something that was really surprising to me 01:41:45.950 --> 01:41:47.660 was someone proposed hummingbird. 01:41:47.660 --> 01:41:53.330 I think hummingbird is a good proposal. 01:41:53.330 --> 01:41:56.840 But if you look at hummingbird, it's only like 21 million 01:41:56.840 --> 01:42:00.320 in terms of the stats, so which I thought was like very surprisingly low. 01:42:00.320 --> 01:42:05.330 So that's one of the main ways that we kind of see like, is it also 01:42:05.330 --> 01:42:07.650 visually used and all of that. 01:42:07.650 --> 01:42:08.900 Yeah. 01:42:08.900 --> 01:42:11.350 Any other questions? 01:42:11.350 --> 01:42:12.610 Are we good? 01:42:12.610 --> 01:42:14.350 I didn't even need my water or anything. 01:42:14.350 --> 01:42:15.760 Oh, can-- I'm going to take a picture. 01:42:15.760 --> 01:42:18.010 I'm going to take a picture for because now you guys are actually 01:42:18.010 --> 01:42:20.930 human and not Muppets, so I'm very, very excited about this. 01:42:20.930 --> 01:42:24.250 So I will send this to my block mates and be like, I just 01:42:24.250 --> 01:42:27.365 lectured at CS50 in Sanders Theatre. 01:42:27.365 --> 01:42:28.990 DAVID J. MALAN: My thanks to Jenny Lee. 01:42:28.990 --> 01:42:29.950 [APPLAUSE] 01:42:29.950 --> 01:42:32.505 Thank you. 01:42:32.505 --> 01:42:34.130 Yeah, you can stay up here if you want. 01:42:34.130 --> 01:42:34.922 Give me one second. 01:42:40.940 --> 01:42:44.710 So if up until now, thought it would be appropriate to toss this up 01:42:44.710 --> 01:42:45.400 on the board. 01:42:45.400 --> 01:42:48.538 If up until now, you've not yet gotten CS50 stress ball on the way out, 01:42:48.538 --> 01:42:49.330 please do grab one. 01:42:49.330 --> 01:42:51.400 We got some extras as well off to the side. 01:42:51.400 --> 01:42:54.340 But I would also keep in mind, back in week 0, 01:42:54.340 --> 01:42:57.940 where again we began, we asked you to categorize yourselves 01:42:57.940 --> 01:43:01.360 as to whether you are among those less comfortable, those more comfortable, 01:43:01.360 --> 01:43:03.160 or those somewhere in between. 01:43:03.160 --> 01:43:07.360 Please know now that you are officially all some-- 01:43:07.360 --> 01:43:10.955 Please know now that you were all officially among those more comfortable 01:43:10.955 --> 01:43:13.330 and indeed even though a couple of more milestones await, 01:43:13.330 --> 01:43:16.960 we cannot wait to see what you accomplish with your final projects. 01:43:16.960 --> 01:43:22.630 In the meantime, as always this is and now this was CS50. 01:43:22.630 --> 01:43:26.008 [APPLAUSE] 01:43:47.207 --> 01:43:50.165 [HARMONICA] 01:43:50.165 --> 01:43:55.430 ALL: (SINGING) Bum, bum, bum, bum, bum, bum, bum, bum, bum, bum, bum, bum, bum, 01:43:55.430 --> 01:43:58.190 bum, bum, bum, bum, bum, bum, bum, bum, bum, bum, bum, bum. 01:43:58.190 --> 01:44:03.510 Mr. Sandman, when I enrolled in CS50. 01:44:03.510 --> 01:44:08.970 I'll say, truth be told, I thought I'd be a real coding hero, 01:44:08.970 --> 01:44:13.410 because I did so well on p-set 07. 01:44:13.410 --> 01:44:15.480 It picked up so fast. 01:44:15.480 --> 01:44:18.630 Turns out the C is harder than scratch. 01:44:18.630 --> 01:44:24.720 Hello, world and goodbye sleep because this is CS50. 01:44:24.720 --> 01:44:27.270 Bum, bum, bum, bum, bum, bum, bum, bum, bum bum, 01:44:27.270 --> 01:44:31.560 bum, bum, bum, bum, bum, bum, bum, bum, bum, bum, bum, bum, bum, bum, bum. 01:44:31.560 --> 01:44:35.470 Mr. Sandman, I was on the [? fall grind, ?] 01:44:35.470 --> 01:44:42.040 trying so hard to not fall behind, attending section and wanting a tutor, 01:44:42.040 --> 01:44:45.320 stuck in the entry point of my computer. 01:44:45.320 --> 01:44:48.240 Sandman, finally getting ahead. 01:44:48.240 --> 01:44:51.520 They would switch us to Python instead. 01:44:51.520 --> 01:44:57.280 Why we spend five weeks on C because this is CS50. 01:44:57.280 --> 01:45:01.690 Bum, bum, bum, bum, bum, bum, bum, bum, bum, bum, bum, bum, bum, bum, bum, bum, 01:45:01.690 --> 01:45:04.210 bum, bum, bum, bum, bum, bum, bum, bum, bum, bum. 01:45:04.210 --> 01:45:08.080 Mr. Sandman, we completed each task. 01:45:08.080 --> 01:45:11.290 JavaScript SQL, CSS and Flask. 01:45:11.290 --> 01:45:14.440 With every language, our minds had to reset. 01:45:14.440 --> 01:45:17.578 Don't get us started on that finance p-set. 01:45:17.578 --> 01:45:20.770 Sandman, now I return. 01:45:20.770 --> 01:45:23.890 My friends asked if I would do it again. 01:45:23.890 --> 01:45:28.350 I replied, obviously, because this was CS, 01:45:28.350 --> 01:45:35.290 no more p-sets because this was CS-fif bum, bum, bum, bum, bum, bum, bum, bum, 01:45:35.290 --> 01:45:36.620 bum, bum, T. 01:45:36.620 --> 01:45:37.820 [APPLAUSE] 01:45:43.520 --> 01:45:46.270 [MUSIC PLAYING]