1 00:00:00,000 --> 00:00:03,120 2 00:00:03,120 --> 00:00:04,450 SPEAKER: This is CS50. 3 00:00:04,450 --> 00:00:08,087 4 00:00:08,087 --> 00:00:09,170 DAVID MALAN: Hello, world. 5 00:00:09,170 --> 00:00:11,800 This is episode two of the CS50 podcast. 6 00:00:11,800 --> 00:00:13,720 My name is David Malan, and I'm here with-- 7 00:00:13,720 --> 00:00:15,120 COLTON OGDEN: Colton Ogden. 8 00:00:15,120 --> 00:00:18,910 You know, in the last couple episodes-- just to get us kicked off here-- 9 00:00:18,910 --> 00:00:20,380 we've had this theme of robocalls. 10 00:00:20,380 --> 00:00:24,087 And recently I haven't been receiving any robocalls-- at least not as much. 11 00:00:24,087 --> 00:00:24,670 How about you? 12 00:00:24,670 --> 00:00:25,628 DAVID MALAN: I'm sorry. 13 00:00:25,628 --> 00:00:27,370 Yeah, I've stopped calling you. 14 00:00:27,370 --> 00:00:28,420 I haven't actually. 15 00:00:28,420 --> 00:00:33,580 After our scintillating segment on episode 0 of CS50 podcast, 16 00:00:33,580 --> 00:00:38,578 I actually installed an app that's theoretically filters out some calls. 17 00:00:38,578 --> 00:00:40,370 I don't know if it's actually been working, 18 00:00:40,370 --> 00:00:43,200 but I have gotten zero robocalls in at least the past week which 19 00:00:43,200 --> 00:00:44,117 was pretty remarkable. 20 00:00:44,117 --> 00:00:45,700 COLTON OGDEN: What is the app? 21 00:00:45,700 --> 00:00:48,280 DAVID MALAN: It's something from my carrier. 22 00:00:48,280 --> 00:00:50,920 You just download it from the app store and it just works. 23 00:00:50,920 --> 00:00:54,070 But apparently iOS-- the operating system running on iPhones-- 24 00:00:54,070 --> 00:00:56,500 has some kind of support for these third party 25 00:00:56,500 --> 00:00:59,350 apps so that your calls get temporarily routed to the app. 26 00:00:59,350 --> 00:01:02,875 It then decides yay or nay, this is spam, and then lets it through or not. 27 00:01:02,875 --> 00:01:05,500 COLTON OGDEN: So this is kind of similar to that Google service 28 00:01:05,500 --> 00:01:07,780 they provided where you would have a-- 29 00:01:07,780 --> 00:01:10,510 you would have Google basically act as a broker between you 30 00:01:10,510 --> 00:01:12,250 and someone trying to contact you. 31 00:01:12,250 --> 00:01:13,208 DAVID MALAN: I suppose. 32 00:01:13,208 --> 00:01:14,380 This is client side, though. 33 00:01:14,380 --> 00:01:16,152 This is local to your phone, I believe. 34 00:01:16,152 --> 00:01:17,860 So it's your phone making these judgments 35 00:01:17,860 --> 00:01:20,560 even though the phone app contacts a server 36 00:01:20,560 --> 00:01:23,140 to find out the latest blacklist of phone numbers 37 00:01:23,140 --> 00:01:24,880 that are known to be spam callers. 38 00:01:24,880 --> 00:01:25,210 COLTON OGDEN: OK. 39 00:01:25,210 --> 00:01:26,210 So a little more secure. 40 00:01:26,210 --> 00:01:29,832 You're not putting things necessarily all on the hands of somebody else, 41 00:01:29,832 --> 00:01:32,290 but it's still solving the problem in kind of the same way. 42 00:01:32,290 --> 00:01:32,590 Kind of a-- 43 00:01:32,590 --> 00:01:33,700 DAVID MALAN: Reducing it at least. 44 00:01:33,700 --> 00:01:34,810 COLTON OGDEN: --level of indirection. 45 00:01:34,810 --> 00:01:35,590 DAVID MALAN: Yeah, indeed. 46 00:01:35,590 --> 00:01:37,450 And as I've said before, I mean, frankly, I 47 00:01:37,450 --> 00:01:39,700 could filter out 90% plus of my robocalls 48 00:01:39,700 --> 00:01:44,050 by just ignoring anyone who has the same first six digits as my phone number 49 00:01:44,050 --> 00:01:47,260 because this is, again, a sort of scheme that people use to trick you 50 00:01:47,260 --> 00:01:48,767 into thinking a neighbor is calling. 51 00:01:48,767 --> 00:01:49,600 COLTON OGDEN: Right. 52 00:01:49,600 --> 00:01:51,300 DAVID MALAN: And for those unfamiliar, robocall 53 00:01:51,300 --> 00:01:54,010 is typically a phone call generated programmatically these days 54 00:01:54,010 --> 00:01:56,890 by software or by some kind of computational process 55 00:01:56,890 --> 00:01:58,680 that's actually calling you automatically 56 00:01:58,680 --> 00:02:01,180 as opposed to it being a human on the other end of the line. 57 00:02:01,180 --> 00:02:03,388 COLTON OGDEN: Or David writing a script in front of-- 58 00:02:03,388 --> 00:02:05,880 DAVID MALAN: I told you I'd stop and I did. 59 00:02:05,880 --> 00:02:08,380 COLTON OGDEN: Away from the robocalls, because we definitely 60 00:02:08,380 --> 00:02:11,050 touched on that a lot in the last couple of weeks, 61 00:02:11,050 --> 00:02:14,830 one other thing that we have touched a lot on and is still coming to haunt us 62 00:02:14,830 --> 00:02:19,270 is news regarding Facebook and the sort of security faux 63 00:02:19,270 --> 00:02:22,063 pas they've been committing in the recent past. 64 00:02:22,063 --> 00:02:23,980 DAVID MALAN: That's a very nice way of putting 65 00:02:23,980 --> 00:02:26,220 it-- the Facebook-- the faux pas. 66 00:02:26,220 --> 00:02:28,270 COLTON OGDEN: Faux pas. 67 00:02:28,270 --> 00:02:30,292 The thing that they recently did was that-- 68 00:02:30,292 --> 00:02:32,750 and there's a couple of things we have here on our docket-- 69 00:02:32,750 --> 00:02:36,460 but one of the things that we'll start with is the plain text ordeal. 70 00:02:36,460 --> 00:02:43,187 And they'd claimed, supposedly, they had 10,000 or 100,000 plain text passwords, 71 00:02:43,187 --> 00:02:45,520 but it turns out they actually had a few more than that. 72 00:02:45,520 --> 00:02:47,590 DAVID MALAN: Oh, it was like 11,000 or 12,000? 73 00:02:47,590 --> 00:02:48,760 COLTON OGDEN: No, it was millions. 74 00:02:48,760 --> 00:02:51,000 DAVID MALAN: Millions of passwords stored in plain text? 75 00:02:51,000 --> 00:02:51,400 COLTON OGDEN: Millions. 76 00:02:51,400 --> 00:02:52,570 Instagram and Facebook. 77 00:02:52,570 --> 00:02:53,320 DAVID MALAN: Jeez. 78 00:02:53,320 --> 00:02:55,002 That's a lot of passwords. 79 00:02:55,002 --> 00:02:56,710 And you'll recall that this is apparently 80 00:02:56,710 --> 00:02:59,800 the result, as best people can glean, of some kind of logging 81 00:02:59,800 --> 00:03:03,700 process or something like that where it's not an attack per se. 82 00:03:03,700 --> 00:03:06,910 It was just some poor internal process that 83 00:03:06,910 --> 00:03:10,660 was writing these things in the plain text to log files. 84 00:03:10,660 --> 00:03:12,460 But of course, I gather from the articles 85 00:03:12,460 --> 00:03:14,293 that I've seen, that this has been happening 86 00:03:14,293 --> 00:03:16,638 maybe since like 2012 in some cases. 87 00:03:16,638 --> 00:03:19,180 And I think the risk there-- because correct me if I'm wrong, 88 00:03:19,180 --> 00:03:21,880 they haven't required all such users to change their passwords, 89 00:03:21,880 --> 00:03:22,630 at least not yet-- 90 00:03:22,630 --> 00:03:23,838 COLTON OGDEN: That's correct. 91 00:03:23,838 --> 00:03:26,320 DAVID MALAN: So they're notifying folks, but even then, 92 00:03:26,320 --> 00:03:29,500 if this data were sitting on servers for that many years, 93 00:03:29,500 --> 00:03:32,710 you can't help but wonder how many humans may have had access. 94 00:03:32,710 --> 00:03:35,987 And even if they didn't use the information at the time, 95 00:03:35,987 --> 00:03:38,570 maybe they did, maybe they only accessed one person's account. 96 00:03:38,570 --> 00:03:39,853 It's really hard to know. 97 00:03:39,853 --> 00:03:41,770 So how do you think about situations like this 98 00:03:41,770 --> 00:03:45,280 where you know your password may have been exposed but not necessarily? 99 00:03:45,280 --> 00:03:47,780 COLTON OGDEN: I think the safest route is just to change it. 100 00:03:47,780 --> 00:03:52,060 I mean, it depends on how private and how valuable that information 101 00:03:52,060 --> 00:03:52,600 is to you. 102 00:03:52,600 --> 00:03:53,800 How much you're willing to-- 103 00:03:53,800 --> 00:03:57,607 you know, it's a cost benefit analysis type of deal. 104 00:03:57,607 --> 00:03:59,690 And I think when it comes to personal information, 105 00:03:59,690 --> 00:04:03,730 I don't think it's necessarily ever bad to be too safe, right? 106 00:04:03,730 --> 00:04:04,480 DAVID MALAN: Yeah. 107 00:04:04,480 --> 00:04:04,980 That's fair. 108 00:04:04,980 --> 00:04:08,110 Well, and I think especially if you're already practicing best practices 109 00:04:08,110 --> 00:04:11,350 and not using, in the first place, the same password on multiple sites 110 00:04:11,350 --> 00:04:14,980 because I could imagine someone being reluctant to change their password 111 00:04:14,980 --> 00:04:16,120 if they use it everywhere. 112 00:04:16,120 --> 00:04:19,610 Now, that alone we discuss in CS50 is not a good thing, 113 00:04:19,610 --> 00:04:21,850 but I do think there's some realities out there where 114 00:04:21,850 --> 00:04:23,350 people might be feeling some tensions like, 115 00:04:23,350 --> 00:04:24,870 oh, I don't want to do this again. 116 00:04:24,870 --> 00:04:25,780 COLTON OGDEN: And there are certainly tools 117 00:04:25,780 --> 00:04:28,510 that help mitigate this problem, too-- password managers, which 118 00:04:28,510 --> 00:04:30,190 I don't know if we've talked about on the podcast, 119 00:04:30,190 --> 00:04:32,810 but certainly in certain lectures we talked about it before. 120 00:04:32,810 --> 00:04:33,060 DAVID MALAN: Yeah. 121 00:04:33,060 --> 00:04:34,768 We've encouraged this, and we've provided 122 00:04:34,768 --> 00:04:38,440 CS50 students here at Harvard, for instance, with access to such programs 123 00:04:38,440 --> 00:04:39,230 for free. 124 00:04:39,230 --> 00:04:40,780 1Password is a popular option. 125 00:04:40,780 --> 00:04:42,640 Last Pass is a popular option. 126 00:04:42,640 --> 00:04:45,640 Now, buyer beware, literally, because there have certainly 127 00:04:45,640 --> 00:04:48,400 been cases where password managers have themselves 128 00:04:48,400 --> 00:04:51,760 been flawed which is sort of tragic if the whole point of this 129 00:04:51,760 --> 00:04:54,160 is to protect you, but humans make mistakes. 130 00:04:54,160 --> 00:04:56,290 Humans write software, and so that's inevitable. 131 00:04:56,290 --> 00:04:58,270 But the idea of a password manager, of course, 132 00:04:58,270 --> 00:05:01,540 is that at least now you can have longer, harder to guess passwords, 133 00:05:01,540 --> 00:05:05,350 and trust your software to store it for you rather than your own human brain 134 00:05:05,350 --> 00:05:07,770 and, god forbid, the post it note on your monitor. 135 00:05:07,770 --> 00:05:08,000 COLTON OGDEN: True. 136 00:05:08,000 --> 00:05:08,500 Yeah. 137 00:05:08,500 --> 00:05:11,230 One of the features that most password managers, including 138 00:05:11,230 --> 00:05:15,880 ones that we've advocated, employ is the generation of very hard to guess 139 00:05:15,880 --> 00:05:16,380 passwords. 140 00:05:16,380 --> 00:05:16,446 DAVID MALAN: Yes. 141 00:05:16,446 --> 00:05:17,500 I use that all the time. 142 00:05:17,500 --> 00:05:20,110 I mean, I don't know 99% of my passwords these days 143 00:05:20,110 --> 00:05:22,360 because I let the software generate it pseudorandomly, 144 00:05:22,360 --> 00:05:23,610 and then I use that to log in. 145 00:05:23,610 --> 00:05:25,443 But there's, of course, a risk there, right? 146 00:05:25,443 --> 00:05:28,190 Like most of these programs have master passwords so to speak, 147 00:05:28,190 --> 00:05:32,530 whereby all of your passwords, however many dozens or hundreds you have, 148 00:05:32,530 --> 00:05:35,083 are protected by one master password. 149 00:05:35,083 --> 00:05:37,750 And I think the presumption is that that master password is just 150 00:05:37,750 --> 00:05:41,350 much longer, much harder to guess, but it's only one really long phrase 151 00:05:41,350 --> 00:05:42,970 that you the human have to remember. 152 00:05:42,970 --> 00:05:43,270 COLTON OGDEN: Right. 153 00:05:43,270 --> 00:05:44,812 It's still a single point of failure. 154 00:05:44,812 --> 00:05:47,320 If that gets compromises, if someone gets access to that, 155 00:05:47,320 --> 00:05:50,980 they get access to every single password that you have stored in that database. 156 00:05:50,980 --> 00:05:52,300 DAVID MALAN: Honestly, or if you just forget it. 157 00:05:52,300 --> 00:05:53,860 I mean, there's definitely been occasions 158 00:05:53,860 --> 00:05:55,860 where-- not in the case of my password manager-- 159 00:05:55,860 --> 00:05:59,010 some accounts I just don't use for very long and the memory fades. 160 00:05:59,010 --> 00:06:01,330 So even then, these tools do encourage you, though, 161 00:06:01,330 --> 00:06:05,165 to store some kind of backup codes, or recovery codes as they're often called, 162 00:06:05,165 --> 00:06:07,540 literally the kind of thing you might print on a printout 163 00:06:07,540 --> 00:06:10,660 and then store in a vault or safe, under your mattress-- 164 00:06:10,660 --> 00:06:12,797 just somewhere separate from the tool itself. 165 00:06:12,797 --> 00:06:13,630 COLTON OGDEN: Right. 166 00:06:13,630 --> 00:06:16,542 Yeah, it's hard to be 100% safe, but certainly it's a step, I think, 167 00:06:16,542 --> 00:06:17,500 in the right direction. 168 00:06:17,500 --> 00:06:19,922 Definitely a step above Post It notes. 169 00:06:19,922 --> 00:06:21,130 I think we can agree on that. 170 00:06:21,130 --> 00:06:21,838 DAVID MALAN: Yes. 171 00:06:21,838 --> 00:06:25,280 I don't use the Post It notes anymore. 172 00:06:25,280 --> 00:06:27,940 COLTON OGDEN: Another thing off of the heels of that, 173 00:06:27,940 --> 00:06:31,690 and that was off of a topic we talked about last week, 174 00:06:31,690 --> 00:06:33,580 it turns out Facebook was actually asking 175 00:06:33,580 --> 00:06:36,310 for people to provide them not their Facebook 176 00:06:36,310 --> 00:06:38,570 password, but their email password. 177 00:06:38,570 --> 00:06:40,570 Their actual, completely separate from Facebook, 178 00:06:40,570 --> 00:06:43,930 email password to log in so Facebook could act as a sort of broker for them 179 00:06:43,930 --> 00:06:45,430 and log in and verify their account. 180 00:06:45,430 --> 00:06:45,760 DAVID MALAN: Indeed. 181 00:06:45,760 --> 00:06:48,620 And I think we already concluded last episode that that's not really 182 00:06:48,620 --> 00:06:49,370 the best practice. 183 00:06:49,370 --> 00:06:49,900 COLTON OGDEN: Not a good move. 184 00:06:49,900 --> 00:06:52,870 Facebook actually also admitted that that was a bad move. 185 00:06:52,870 --> 00:06:57,170 DAVID MALAN: But fortunately nothing came of it and all is well. 186 00:06:57,170 --> 00:06:58,000 COLTON OGDEN: Yeah. 187 00:06:58,000 --> 00:07:02,980 No, actually it turns out that Facebook "accidentally" imported-- 188 00:07:02,980 --> 00:07:05,370 I think it was about 15,000-- 189 00:07:05,370 --> 00:07:06,580 might be more than that-- 190 00:07:06,580 --> 00:07:07,120 [INAUDIBLE] 191 00:07:07,120 --> 00:07:09,787 DAVID MALAN: Well, next week it's going to be 15 million, right? 192 00:07:09,787 --> 00:07:11,530 COLTON OGDEN: Sorry, I misspoke. 193 00:07:11,530 --> 00:07:14,780 1.5 million folks' email contacts. 194 00:07:14,780 --> 00:07:16,003 DAVID MALAN: That's a lot. 195 00:07:16,003 --> 00:07:17,920 COLTON OGDEN: And this was this was supposedly 196 00:07:17,920 --> 00:07:23,050 an accident as part of their upload process for this actual brokership. 197 00:07:23,050 --> 00:07:26,350 But it's-- are we really that surprised? 198 00:07:26,350 --> 00:07:28,840 DAVID MALAN: I mean, here, too, humans make mistakes. 199 00:07:28,840 --> 00:07:29,800 Humans write software. 200 00:07:29,800 --> 00:07:32,920 And so even if this weren't deliberate, these things do happen. 201 00:07:32,920 --> 00:07:35,110 But to be honest, I will-- so in that case, 202 00:07:35,110 --> 00:07:38,350 the email vector is the fundamental problem. 203 00:07:38,350 --> 00:07:41,290 Logging into someone's email account, thereby 204 00:07:41,290 --> 00:07:44,500 giving them access to contacts, whether it was Gmail or Yahoo or the like-- 205 00:07:44,500 --> 00:07:47,418 I mean, that is just-- that alone should never have happened. 206 00:07:47,418 --> 00:07:49,210 But it's gotten me thinking-- and you and I 207 00:07:49,210 --> 00:07:51,280 were talking before the podcast today, too-- 208 00:07:51,280 --> 00:07:54,310 about how the permissions model in software 209 00:07:54,310 --> 00:07:57,370 these days really isn't making this problem any better. 210 00:07:57,370 --> 00:08:00,460 So for instance, in iOS-- the operating system for iPhones-- 211 00:08:00,460 --> 00:08:03,310 there is in Swift and in Objective C a function, 212 00:08:03,310 --> 00:08:07,270 essentially, that you kindly looked up that allows you to request access 213 00:08:07,270 --> 00:08:09,730 as an application to a user's contacts. 214 00:08:09,730 --> 00:08:12,610 And my concern, at least, the deeper I've dived into this, 215 00:08:12,610 --> 00:08:14,410 is that it's all or nothing. 216 00:08:14,410 --> 00:08:16,465 It's all of the contacts or none of them. 217 00:08:16,465 --> 00:08:19,090 There's no fine grain permissions, which makes me very nervous, 218 00:08:19,090 --> 00:08:22,215 because if you have dozens, hundreds, thousands of contacts in your address 219 00:08:22,215 --> 00:08:26,230 book and maybe you want to call someone via WhatsApp, or via Skype, 220 00:08:26,230 --> 00:08:29,650 or you want to use some game that uses your social network, 221 00:08:29,650 --> 00:08:33,760 you can't, it seems, provide granular access to those contacts saying, 222 00:08:33,760 --> 00:08:36,309 OK, here's Colton's name and phone number 223 00:08:36,309 --> 00:08:39,460 and email address because I need you to know that in order to talk to him. 224 00:08:39,460 --> 00:08:43,450 But instead, it just opens up the possibility that all of your contacts 225 00:08:43,450 --> 00:08:44,900 get uploaded to that third party. 226 00:08:44,900 --> 00:08:47,650 And honestly, that's the sort of cat that once it's out of the bag 227 00:08:47,650 --> 00:08:51,098 is not going back in because if they store those contacts in their database, 228 00:08:51,098 --> 00:08:52,390 you're never getting them back. 229 00:08:52,390 --> 00:08:55,300 COLTON OGDEN: It's kind of like a drinking from the fire hose analogy. 230 00:08:55,300 --> 00:08:56,050 DAVID MALAN: Yeah. 231 00:08:56,050 --> 00:08:57,890 I mean, that's really worrisome. 232 00:08:57,890 --> 00:09:02,440 I think until consumers and users start demanding finer grained control 233 00:09:02,440 --> 00:09:04,110 over the data, things might not change. 234 00:09:04,110 --> 00:09:06,610 And so here, too, I'm surprised that Apple especially, who's 235 00:09:06,610 --> 00:09:10,810 been more mindful perhaps than some other companies of privacy, 236 00:09:10,810 --> 00:09:13,600 still have this all or nothing approach, right? 237 00:09:13,600 --> 00:09:18,435 I technically would imagine seeing a generic OS specific prompt allowing 238 00:09:18,435 --> 00:09:19,810 me to browse through my contacts. 239 00:09:19,810 --> 00:09:23,590 I select one or two or more contacts-- you among them, for instance-- 240 00:09:23,590 --> 00:09:28,210 and then I would expect the API call to only pass along that subset of my data 241 00:09:28,210 --> 00:09:29,200 to the application. 242 00:09:29,200 --> 00:09:32,470 But instead, I'm pretty sure, as best we could tell from the documentation, 243 00:09:32,470 --> 00:09:35,560 it's getting unfettered read write access to those contacts. 244 00:09:35,560 --> 00:09:37,810 COLTON OGDEN: And I mean, my first thought 245 00:09:37,810 --> 00:09:42,280 about that is it's so much easier just to click yes. 246 00:09:42,280 --> 00:09:46,340 When Facebook or Apple says this app wants to use your contacts, 247 00:09:46,340 --> 00:09:48,130 you allow permission. 248 00:09:48,130 --> 00:09:52,150 Rather than in the model you proposed is certainly more secure, more fine 249 00:09:52,150 --> 00:09:54,810 grained, but requires more effort on the end user's part. 250 00:09:54,810 --> 00:09:56,110 DAVID MALAN: Yeah, absolutely. 251 00:09:56,110 --> 00:09:58,960 And you know, you got me thinking that there's an opportunity here, 252 00:09:58,960 --> 00:10:01,510 really, for what some municipalities in the US 253 00:10:01,510 --> 00:10:04,030 have started doing with governmental elections 254 00:10:04,030 --> 00:10:06,550 where you don't just necessarily have a ballot, 255 00:10:06,550 --> 00:10:10,030 but you might have access to a one page cheat sheet for the candidates 256 00:10:10,030 --> 00:10:12,010 where each of the candidates has been allowed-- 257 00:10:12,010 --> 00:10:14,230 as I've seen in Boston, for instance-- 258 00:10:14,230 --> 00:10:18,552 to give a one or more sentence description of maybe their platform 259 00:10:18,552 --> 00:10:21,760 or something about them so that you can at least understand the implications. 260 00:10:21,760 --> 00:10:24,130 And more importantly, when there's ballot questions 261 00:10:24,130 --> 00:10:27,550 on the referendum like legal questions, policy questions, 262 00:10:27,550 --> 00:10:31,990 for the local municipality, they often will 263 00:10:31,990 --> 00:10:34,600 explain or have a third party, an advocacy group, 264 00:10:34,600 --> 00:10:38,380 explain both the pros and the cons in, ideally, some neutral way 265 00:10:38,380 --> 00:10:41,440 so that the humans like we can vote on those issues 266 00:10:41,440 --> 00:10:44,020 and still have some appreciation for the implication. 267 00:10:44,020 --> 00:10:46,690 But instead, the analog here would be like asking someone 268 00:10:46,690 --> 00:10:50,410 to vote on a governmental question and just saying yes or no, that's it. 269 00:10:50,410 --> 00:10:53,750 There is no fine grained disclosure of the implications. 270 00:10:53,750 --> 00:10:57,010 So it would be nice, too, if Android and Apple really adopted the habit 271 00:10:57,010 --> 00:11:00,460 or forced companies who wanted to distribute software on those platforms 272 00:11:00,460 --> 00:11:03,220 to say what does it mean if I click yes. 273 00:11:03,220 --> 00:11:05,500 And maybe have a third party group or community 274 00:11:05,500 --> 00:11:08,868 of third parties responsible for writing that language, not necessarily 275 00:11:08,868 --> 00:11:09,910 the companies themselves. 276 00:11:09,910 --> 00:11:12,310 COLTON OGDEN: That's true, yeah, because on Facebook when you approve apps 277 00:11:12,310 --> 00:11:14,680 you can see what it has access to, but not necessarily 278 00:11:14,680 --> 00:11:15,763 for what intended purpose. 279 00:11:15,763 --> 00:11:16,847 DAVID MALAN: Yeah, indeed. 280 00:11:16,847 --> 00:11:17,680 And that's fair. 281 00:11:17,680 --> 00:11:21,497 In the web context, companies that use OAuth, a very popular protocol 282 00:11:21,497 --> 00:11:22,330 for authentication-- 283 00:11:22,330 --> 00:11:23,860 GitHub, for instance, among them-- 284 00:11:23,860 --> 00:11:26,440 does give you a bit more detail as to what's being asked. 285 00:11:26,440 --> 00:11:29,580 This company is asking for your email address and your name and so forth. 286 00:11:29,580 --> 00:11:31,330 But even then, unfortunately, it tends not 287 00:11:31,330 --> 00:11:34,570 to be fine grained opt in or out for the user. 288 00:11:34,570 --> 00:11:37,540 If you don't say yes to everything that's listed there, 289 00:11:37,540 --> 00:11:39,160 you just don't proceed further. 290 00:11:39,160 --> 00:11:39,400 COLTON OGDEN: Yeah. 291 00:11:39,400 --> 00:11:41,590 Presumably because they need all those pieces of information 292 00:11:41,590 --> 00:11:43,680 to give you the service you're requesting which is tough. 293 00:11:43,680 --> 00:11:44,220 DAVID MALAN: Or want. 294 00:11:44,220 --> 00:11:46,220 I mean, they probably make a calculated decision 295 00:11:46,220 --> 00:11:49,240 that we don't really need this field, but it would be useful to have. 296 00:11:49,240 --> 00:11:52,140 We might as well get it when the user consents in the first place. 297 00:11:52,140 --> 00:11:54,057 COLTON OGDEN: And they figure maybe most users 298 00:11:54,057 --> 00:11:56,978 aren't going to sort of balk too hard at having to give up 299 00:11:56,978 --> 00:11:58,270 one extra piece of information. 300 00:11:58,270 --> 00:11:58,510 DAVID MALAN: Yeah. 301 00:11:58,510 --> 00:12:00,310 But that's a slippery slope, certainly. 302 00:12:00,310 --> 00:12:00,820 COLTON OGDEN: Oh, yeah. 303 00:12:00,820 --> 00:12:01,410 Absolutely. 304 00:12:01,410 --> 00:12:04,030 And it kind of ties into the idea we talked about last week 305 00:12:04,030 --> 00:12:08,320 of you leave one little piece of trust at the door 306 00:12:08,320 --> 00:12:11,050 and you made the analogy that you look back 307 00:12:11,050 --> 00:12:13,432 and the breadcrumb trail is just vast. 308 00:12:13,432 --> 00:12:16,390 DAVID MALAN: Oh and I've absolutely clicked Yes on those things myself. 309 00:12:16,390 --> 00:12:20,950 And even though now I'm much more mindful, 2019, of what I click 310 00:12:20,950 --> 00:12:24,610 and what apps I allow access to my contacts, the cat's out of the bag 311 00:12:24,610 --> 00:12:27,100 and somewhere out there is a lot of that data already. 312 00:12:27,100 --> 00:12:27,510 COLTON OGDEN: Yeah. 313 00:12:27,510 --> 00:12:28,927 It's a tough trade off, certainly. 314 00:12:28,927 --> 00:12:31,750 I do think a lot of it does come down to accessibility. 315 00:12:31,750 --> 00:12:36,340 I think it's preying on the how much easier it is for people just 316 00:12:36,340 --> 00:12:39,968 to click a button versus actually consider the problem that they're 317 00:12:39,968 --> 00:12:40,510 getting into. 318 00:12:40,510 --> 00:12:42,718 DAVID MALAN: But to be fair, not necessarily preying. 319 00:12:42,718 --> 00:12:46,600 If the only API call I have is access contacts or not, I as a developer, 320 00:12:46,600 --> 00:12:47,940 I'm going to use that API call. 321 00:12:47,940 --> 00:12:48,732 COLTON OGDEN: Yeah. 322 00:12:48,732 --> 00:12:50,200 True. 323 00:12:50,200 --> 00:12:52,380 I guess away from that topic, away from Facebook-- 324 00:12:52,380 --> 00:12:53,660 because we've been picking on Facebook a lot. 325 00:12:53,660 --> 00:12:56,702 In the last few weeks, we've been picking on Facebook consistently-- week 326 00:12:56,702 --> 00:12:57,490 by week by week. 327 00:12:57,490 --> 00:13:00,190 And it may just be a rough period for them. 328 00:13:00,190 --> 00:13:03,390 Away from Facebook, there was another thing, interestingly, 329 00:13:03,390 --> 00:13:05,890 that I thought was actually a good move on Microsoft's part. 330 00:13:05,890 --> 00:13:09,820 So Microsoft recently turned down-- 331 00:13:09,820 --> 00:13:13,930 let me just confirm 100% which institution it was. 332 00:13:13,930 --> 00:13:14,430 OK. 333 00:13:14,430 --> 00:13:15,920 So it was California. 334 00:13:15,920 --> 00:13:19,150 In California, there was a law enforcement agency 335 00:13:19,150 --> 00:13:23,290 who asked Microsoft to install essentially facial recognition 336 00:13:23,290 --> 00:13:29,620 software in their cars such that they would be able to identify, presumably, 337 00:13:29,620 --> 00:13:33,790 prospective criminals or existing criminals. 338 00:13:33,790 --> 00:13:38,620 And they rejected it outright because it turns out the data sets were not 339 00:13:38,620 --> 00:13:40,660 trained very well on these algorithms. 340 00:13:40,660 --> 00:13:41,410 DAVID MALAN: Yeah. 341 00:13:41,410 --> 00:13:43,577 This is an issue in computer science more generally, 342 00:13:43,577 --> 00:13:45,580 especially if demographically it is skewed 343 00:13:45,580 --> 00:13:48,430 toward male figures or white figures. 344 00:13:48,430 --> 00:13:50,980 The data sets you might be using to actually train 345 00:13:50,980 --> 00:13:53,045 your data in a machine learning sense might 346 00:13:53,045 --> 00:13:56,170 be people who look like you because they might be people who work with you, 347 00:13:56,170 --> 00:13:56,890 for instance. 348 00:13:56,890 --> 00:13:58,900 And so, frankly, to their credit, I think 349 00:13:58,900 --> 00:14:01,360 Microsoft seems to be acknowledging this proactively 350 00:14:01,360 --> 00:14:03,640 and mindfully so that the software is not 351 00:14:03,640 --> 00:14:06,880 deployed in a way where it might mistake one person for another 352 00:14:06,880 --> 00:14:09,190 until that data set is trained further. 353 00:14:09,190 --> 00:14:12,560 With that said, I do think this is still worrisome unto itself. 354 00:14:12,560 --> 00:14:14,770 Even without bias, I'm not sure I just want 355 00:14:14,770 --> 00:14:18,550 every car on the street that drives by me and you and everyone 356 00:14:18,550 --> 00:14:20,970 to be able to detect who that person is. 357 00:14:20,970 --> 00:14:24,770 That seems to be a very slippery slope as well in terms of people's privacy 358 00:14:24,770 --> 00:14:25,433 and so forth. 359 00:14:25,433 --> 00:14:27,850 But I do think these are the right questions for companies 360 00:14:27,850 --> 00:14:28,640 now to be asking. 361 00:14:28,640 --> 00:14:31,150 And Google's been mired in a bit of this lately 362 00:14:31,150 --> 00:14:33,250 with their artificial intelligence panel. 363 00:14:33,250 --> 00:14:36,940 They wanted to have a panel of independent individuals weighing 364 00:14:36,940 --> 00:14:39,157 in yay or nay on what kinds of initiatives 365 00:14:39,157 --> 00:14:41,740 Google should pursue when it comes to artificial intelligence. 366 00:14:41,740 --> 00:14:44,950 Sounds like Microsoft is exercising here some of that same judgment. 367 00:14:44,950 --> 00:14:48,130 But you know, it's one thing, I think, for these big companies 368 00:14:48,130 --> 00:14:51,700 to have the luxury of saying no to certain business. 369 00:14:51,700 --> 00:14:55,630 Frankly, I can't help but worry that as AI and as facial recognition 370 00:14:55,630 --> 00:14:59,110 becomes more accessible, as it becomes more API based so that anyone 371 00:14:59,110 --> 00:15:03,160 can use it, I wonder and worry that we'll lose the ability 372 00:15:03,160 --> 00:15:05,410 to say yay or nay in quite these same ways 373 00:15:05,410 --> 00:15:08,300 if it's just so accessible to anyone who wants to deploy it. 374 00:15:08,300 --> 00:15:09,092 COLTON OGDEN: Yeah. 375 00:15:09,092 --> 00:15:11,280 A lot of this technology is very frightening. 376 00:15:11,280 --> 00:15:16,130 And Microsoft is definitely being very considerate in their judgment 377 00:15:16,130 --> 00:15:17,690 and thinking very far ahead. 378 00:15:17,690 --> 00:15:19,520 One of the things sort of related to this-- 379 00:15:19,520 --> 00:15:23,210 not necessarily completely related to this incident in particular-- 380 00:15:23,210 --> 00:15:25,190 is the deep faking. 381 00:15:25,190 --> 00:15:26,842 Are you familiar with this where-- 382 00:15:26,842 --> 00:15:27,800 DAVID MALAN: The video. 383 00:15:27,800 --> 00:15:28,592 COLTON OGDEN: Yeah. 384 00:15:28,592 --> 00:15:29,657 People can be faked. 385 00:15:29,657 --> 00:15:31,490 Algorithmically, machine learning algorithms 386 00:15:31,490 --> 00:15:36,050 can train themselves to generate video that 387 00:15:36,050 --> 00:15:40,340 looks like somebody speaking when in reality it was actually their face, 388 00:15:40,340 --> 00:15:43,790 but being programmatically adjusted to be speaking somebody else's words. 389 00:15:43,790 --> 00:15:45,710 DAVID MALAN: And it certainly works even more easily with words 390 00:15:45,710 --> 00:15:47,990 alone, when you don't have to mimic their movements. 391 00:15:47,990 --> 00:15:50,240 COLTON OGDEN: Yeah, they're gesticulations. 392 00:15:50,240 --> 00:15:55,050 There was a thought that I had recently about things like CCTV. 393 00:15:55,050 --> 00:15:57,850 You know, a lot law enforcement relies a lot on CCTV footage. 394 00:15:57,850 --> 00:16:00,350 DAVID MALAN: Closed circuit television for those unfamiliar. 395 00:16:00,350 --> 00:16:01,183 COLTON OGDEN: Right. 396 00:16:01,183 --> 00:16:04,520 So if they see a suspect, or if there's a crime scene-- 397 00:16:04,520 --> 00:16:07,730 let's say it's at some restaurant or some hotel-- 398 00:16:07,730 --> 00:16:14,270 and they have CCTV video footage of the same person sort of at the scene 399 00:16:14,270 --> 00:16:18,590 at the same time as maybe the same events took place. 400 00:16:18,590 --> 00:16:21,260 That helps them pinpoint down that that might be a suspect. 401 00:16:21,260 --> 00:16:21,500 Now-- 402 00:16:21,500 --> 00:16:23,270 DAVID MALAN: That's like every Law and Order episode in fact. 403 00:16:23,270 --> 00:16:24,103 COLTON OGDEN: Right. 404 00:16:24,103 --> 00:16:24,610 Exactly. 405 00:16:24,610 --> 00:16:27,800 But the thing with deep faking is that it 406 00:16:27,800 --> 00:16:30,230 could be all too real that these sorts of videos 407 00:16:30,230 --> 00:16:34,720 get edited to actually put not the actual actors in there. 408 00:16:34,720 --> 00:16:35,970 DAVID MALAN: Yeah, absolutely. 409 00:16:35,970 --> 00:16:38,420 And I think right now most people, ourselves included, 410 00:16:38,420 --> 00:16:40,568 can notice something's a little off here. 411 00:16:40,568 --> 00:16:42,860 But honestly, the software is only going to get better. 412 00:16:42,860 --> 00:16:44,568 The hardware is only going to get faster. 413 00:16:44,568 --> 00:16:45,170 So I agree. 414 00:16:45,170 --> 00:16:47,330 I think this is becoming more and more real. 415 00:16:47,330 --> 00:16:50,450 And it literally is a computational way of putting words 416 00:16:50,450 --> 00:16:51,530 in someone else's mouth. 417 00:16:51,530 --> 00:16:54,380 One of the first proof of concepts I think a few years ago now 418 00:16:54,380 --> 00:16:57,627 was having President Obama say things that he hadn't actually said. 419 00:16:57,627 --> 00:16:58,460 And it was striking. 420 00:16:58,460 --> 00:16:59,810 And it wasn't quite right. 421 00:16:59,810 --> 00:17:01,640 You could tell it seemed a little robotic. 422 00:17:01,640 --> 00:17:03,740 But it was the beginning of something quite scary. 423 00:17:03,740 --> 00:17:06,560 And I at least most recently saw the graduate students 424 00:17:06,560 --> 00:17:09,770 who had published the work on them dancing and transposing 425 00:17:09,770 --> 00:17:14,180 one human's dance movements onto another even though that second person wasn't 426 00:17:14,180 --> 00:17:15,140 actually dancing. 427 00:17:15,140 --> 00:17:16,050 They appeared to be. 428 00:17:16,050 --> 00:17:16,319 COLTON OGDEN: Yeah. 429 00:17:16,319 --> 00:17:17,256 It's very frightening. 430 00:17:17,256 --> 00:17:19,339 It makes me wonder how we're going to actually get 431 00:17:19,339 --> 00:17:22,880 better at detecting the real versus the fake when it comes to this, 432 00:17:22,880 --> 00:17:25,460 or whether we're going to have to sort of leave 433 00:17:25,460 --> 00:17:29,097 the realm of video footage as evidence altogether if it gets too realistic. 434 00:17:29,097 --> 00:17:29,930 DAVID MALAN: Indeed. 435 00:17:29,930 --> 00:17:33,650 For future CS50 podcasts I don't even need to be here. 436 00:17:33,650 --> 00:17:36,557 I'll just say astute things digitally. 437 00:17:36,557 --> 00:17:39,140 COLTON OGDEN: I'm going to have to get the David J Malan voice 438 00:17:39,140 --> 00:17:41,135 algorithm implemented. 439 00:17:41,135 --> 00:17:43,760 DAVID MALAN: Well, fun fact, on Mac OS and probably on Windows, 440 00:17:43,760 --> 00:17:44,900 there are commands where you can actually 441 00:17:44,900 --> 00:17:46,720 have your computer say things already. 442 00:17:46,720 --> 00:17:49,940 Now, they tend to be fairly synthesized robotic voices, 443 00:17:49,940 --> 00:17:52,880 but that's a fun little program to play with. 444 00:17:52,880 --> 00:17:55,130 In Mac OS, if you have a terminal window open, 445 00:17:55,130 --> 00:17:58,370 you can type the command say, S-A-Y, and then a phrase 446 00:17:58,370 --> 00:17:59,870 and indeed, it should say that. 447 00:17:59,870 --> 00:18:02,120 COLTON OGDEN: Have you ever aliased anybody's computer 448 00:18:02,120 --> 00:18:03,840 to say something at a particular time? 449 00:18:03,840 --> 00:18:06,360 DAVID MALAN: I don't know what you're talking about. 450 00:18:06,360 --> 00:18:10,100 But if I were to, I might-- when they leave their keyboard unattended-- 451 00:18:10,100 --> 00:18:14,840 create what's called an alias in Linux or Mac OS whereby one command actually 452 00:18:14,840 --> 00:18:19,850 gets substituted for another and so a funny thing might be to do every time 453 00:18:19,850 --> 00:18:25,970 the person types L-S to have preemptively alias L-S to be say-- 454 00:18:25,970 --> 00:18:30,140 where the computer then says something mildly funny-- 455 00:18:30,140 --> 00:18:33,230 and then proceeds to show the directory listing for them. 456 00:18:33,230 --> 00:18:36,133 That would certainly be theoretically possible. 457 00:18:36,133 --> 00:18:37,550 COLTON OGDEN: Away from Microsoft. 458 00:18:37,550 --> 00:18:41,810 So here's something actually completely on the surface unrelated to what 459 00:18:41,810 --> 00:18:45,193 we might have been, at least in the tech realm, been talking about. 460 00:18:45,193 --> 00:18:47,360 But there's been this interesting study in Scotland. 461 00:18:47,360 --> 00:18:55,360 So in Scotland, as of 2008, they started to employ a checklist for surgeries, 462 00:18:55,360 --> 00:18:58,430 and it was a World Health Organization sponsored checklist. 463 00:18:58,430 --> 00:19:00,450 And it was basically just a set of steps before, 464 00:19:00,450 --> 00:19:04,420 during, and after incisions, which just basically is a bunch of sanity checks 465 00:19:04,420 --> 00:19:06,710 done with the anesthesiologist, marking incisions, 466 00:19:06,710 --> 00:19:09,260 where they're supposed to be made, having 467 00:19:09,260 --> 00:19:12,800 the nurse ask questions of the patient as they finish their surgery. 468 00:19:12,800 --> 00:19:16,820 And startlingly, it looks like post surgical deaths, 469 00:19:16,820 --> 00:19:21,770 as of the beginning of that up until now in 2008, they fell by one third-- 470 00:19:21,770 --> 00:19:23,308 33%-- well, roughly 33%. 471 00:19:23,308 --> 00:19:25,100 DAVID MALAN: Really just making sure people 472 00:19:25,100 --> 00:19:26,933 were doing what they should have been doing, 473 00:19:26,933 --> 00:19:29,018 but providing a protocol, if you will, for such. 474 00:19:29,018 --> 00:19:29,810 COLTON OGDEN: Yeah. 475 00:19:29,810 --> 00:19:30,050 DAVID MALAN: Yeah. 476 00:19:30,050 --> 00:19:30,717 I mean I think-- 477 00:19:30,717 --> 00:19:34,730 I'm no expert-- but I believe this is what the airline industry has actually 478 00:19:34,730 --> 00:19:35,900 done for some time. 479 00:19:35,900 --> 00:19:39,030 No matter how many times the pilot and co-pilot have flown a plane, 480 00:19:39,030 --> 00:19:41,030 my understanding is that they're indeed supposed 481 00:19:41,030 --> 00:19:44,660 to take out that the flight checklist and actually check off verbally 482 00:19:44,660 --> 00:19:48,283 or physically every little step that should be checked before taking off. 483 00:19:48,283 --> 00:19:49,700 COLTON OGDEN: I certainly hope so. 484 00:19:49,700 --> 00:19:50,540 Fingers crossed. 485 00:19:50,540 --> 00:19:53,040 DAVID MALAN: Well, you would hope so, but there, too, right? 486 00:19:53,040 --> 00:19:55,310 If someone's been flying for five, 10, 20, 30 years, 487 00:19:55,310 --> 00:19:57,830 perhaps you might assume that they know what they're doing. 488 00:19:57,830 --> 00:20:00,163 But you don't want to miss that little thing, certainly. 489 00:20:00,163 --> 00:20:02,210 So I think the real takeaway for me is that this 490 00:20:02,210 --> 00:20:04,970 is seems a wonderful adoption of a technique that's 491 00:20:04,970 --> 00:20:06,290 being used in other industries. 492 00:20:06,290 --> 00:20:10,630 And even us, in our much safer realm of an office, 493 00:20:10,630 --> 00:20:17,610 use programs like Asana or GitHub or Trello or a bunch of other websites 494 00:20:17,610 --> 00:20:21,040 or web based tools that provide, really, checklists or [? con ?] [? bond ?] 495 00:20:21,040 --> 00:20:24,640 boards or project boards so to speak where it's really just lists to help 496 00:20:24,640 --> 00:20:27,480 you keep track of things you and other people are working on. 497 00:20:27,480 --> 00:20:27,840 COLTON OGDEN: Right. 498 00:20:27,840 --> 00:20:31,000 And I think it applies very well to things like software development where 499 00:20:31,000 --> 00:20:34,787 you have the typical paradigm of software development, 500 00:20:34,787 --> 00:20:37,120 at least as it's taught in university a lot of the time, 501 00:20:37,120 --> 00:20:40,510 is start with a project spec up top, work your way down 502 00:20:40,510 --> 00:20:43,630 until you have individually solvable tiny pieces. 503 00:20:43,630 --> 00:20:46,780 Those seem to fit well into the model of tasks and the to do list. 504 00:20:46,780 --> 00:20:51,100 So it seems like in technology this is a very appropriate way of modeling 505 00:20:51,100 --> 00:20:52,250 how you build things. 506 00:20:52,250 --> 00:20:53,500 DAVID MALAN: Yeah, absolutely. 507 00:20:53,500 --> 00:20:55,690 And the interesting thing there I think is that there really 508 00:20:55,690 --> 00:20:56,890 are different mental models. 509 00:20:56,890 --> 00:21:00,610 Like I for instance, I'm a fan of the checklist model, something 510 00:21:00,610 --> 00:21:02,740 like Asana.com which we've used for a few years. 511 00:21:02,740 --> 00:21:04,570 Some of our TFs are now at the company. 512 00:21:04,570 --> 00:21:06,690 And it's just kind of the way my mind operates. 513 00:21:06,690 --> 00:21:09,190 It's how I would operate if I were still using paper pencil. 514 00:21:09,190 --> 00:21:11,800 But I know a lot of other people prefer more project boards 515 00:21:11,800 --> 00:21:14,530 where you have everything in column format, 516 00:21:14,530 --> 00:21:17,440 and as you work on something you move things from left column 517 00:21:17,440 --> 00:21:19,460 to middle column to right column and so forth. 518 00:21:19,460 --> 00:21:21,828 And I tend to prefer the sort of top down approach, 519 00:21:21,828 --> 00:21:23,870 but other people seem to prefer the side to side. 520 00:21:23,870 --> 00:21:25,870 So it's an interesting software design question. 521 00:21:25,870 --> 00:21:32,440 COLTON OGDEN: Maybe it's people that are more visually spatially 522 00:21:32,440 --> 00:21:36,730 learning-- or not learners, but I guess workers and developers-- 523 00:21:36,730 --> 00:21:40,088 maybe that just resounds better for them versus a checklist model. 524 00:21:40,088 --> 00:21:42,130 Everybody's brain works a little bit differently, 525 00:21:42,130 --> 00:21:44,380 but there's certainly a breadth of options. 526 00:21:44,380 --> 00:21:46,360 DAVID MALAN: Well, and the project boards really allow for more states, 527 00:21:46,360 --> 00:21:47,230 so to speak, right? 528 00:21:47,230 --> 00:21:51,940 Like something like a checklist in Asana, or even in Notes, 529 00:21:51,940 --> 00:21:54,880 the sticky program in Mac OS where you can check things off. 530 00:21:54,880 --> 00:21:57,370 That's on or off-- like done or not done-- 531 00:21:57,370 --> 00:22:00,430 whereas the boards allow you to proceed to an intermediate state, 532 00:22:00,430 --> 00:22:03,260 another intermediate state, and then finally the final state. 533 00:22:03,260 --> 00:22:05,217 So I do see a use case there, certainly. 534 00:22:05,217 --> 00:22:07,300 So sometimes just checking things on and off makes 535 00:22:07,300 --> 00:22:10,300 perfect sense for protocols like checking that everything's gone well 536 00:22:10,300 --> 00:22:13,342 with surgeries, checking that everything is ready to go with an airplane. 537 00:22:13,342 --> 00:22:16,390 But for projects, you might actually want to say, well, we've begun, 538 00:22:16,390 --> 00:22:17,870 but we're blocked on this issue. 539 00:22:17,870 --> 00:22:20,390 This is in progress, but there are these bugs still. 540 00:22:20,390 --> 00:22:23,170 So I think that mental model makes sense in other use cases. 541 00:22:23,170 --> 00:22:24,160 COLTON OGDEN: Sure. 542 00:22:24,160 --> 00:22:26,770 Yeah, no, it's definitely cool to see that something 543 00:22:26,770 --> 00:22:28,660 that simple was able to reduce-- 544 00:22:28,660 --> 00:22:29,740 that's an amazing thing-- 545 00:22:29,740 --> 00:22:31,860 33%-- one third-- 546 00:22:31,860 --> 00:22:33,610 with something as serious as deaths. 547 00:22:33,610 --> 00:22:34,480 DAVID MALAN: Yeah, it's a little worrisome 548 00:22:34,480 --> 00:22:36,630 that they weren't having checklists beforehand. 549 00:22:36,630 --> 00:22:36,910 COLTON OGDEN: Yeah. 550 00:22:36,910 --> 00:22:37,990 Makes you wonder a little bit. 551 00:22:37,990 --> 00:22:39,580 DAVID MALAN: But when n is large, so to speak, 552 00:22:39,580 --> 00:22:41,530 whether it's patients or data sets or the like, 553 00:22:41,530 --> 00:22:43,405 you really do start to notice those patterns. 554 00:22:43,405 --> 00:22:46,030 And so when you turn knobs, so to speak, and try 555 00:22:46,030 --> 00:22:48,760 interventions and really do experiments, can you really 556 00:22:48,760 --> 00:22:50,710 see the impact of those results. 557 00:22:50,710 --> 00:22:52,120 COLTON OGDEN: Indeed. 558 00:22:52,120 --> 00:22:55,208 So earlier we talked well about Microsoft, so let's-- 559 00:22:55,208 --> 00:22:57,250 the theme of this podcast is that we don't always 560 00:22:57,250 --> 00:22:59,200 have the most optimistic things to talk about, 561 00:22:59,200 --> 00:23:01,480 so why don't we turn the knob in sort of the opposite direction. 562 00:23:01,480 --> 00:23:03,070 DAVID MALAN: Well, no one writes articles that say, 563 00:23:03,070 --> 00:23:04,560 everything was well this week. 564 00:23:04,560 --> 00:23:05,390 COLTON OGDEN: Yeah. 565 00:23:05,390 --> 00:23:07,450 Not necessarily. 566 00:23:07,450 --> 00:23:10,870 Microsoft did well with their facial recognition decision, 567 00:23:10,870 --> 00:23:14,090 but it turns out that they had a security vulnerability. 568 00:23:14,090 --> 00:23:19,270 So they have a service called Microsoft Tiles which is no longer in use 569 00:23:19,270 --> 00:23:23,110 is my understanding, but was temporarily in a state of flux. 570 00:23:23,110 --> 00:23:25,360 So you might be able to speak on sort of the low level 571 00:23:25,360 --> 00:23:28,270 details is a little bit better, but my understanding of this 572 00:23:28,270 --> 00:23:31,870 is they had a CNAME record, which is a canonical name record, which 573 00:23:31,870 --> 00:23:36,828 allows them to essentially point one URL, one subdomain URL to another URL 574 00:23:36,828 --> 00:23:39,370 and make it seem-- it's basically like the alias in terminal. 575 00:23:39,370 --> 00:23:41,110 DAVID MALAN: Yeah, so you don't have to hard code an IP address. 576 00:23:41,110 --> 00:23:43,480 It can resolve, so to speak, to another domain name. 577 00:23:43,480 --> 00:23:44,397 COLTON OGDEN: Exactly. 578 00:23:44,397 --> 00:23:49,810 And they had an Azure domain that was CNAMEd to some other Azure domain that 579 00:23:49,810 --> 00:23:52,270 was actually serving the Tiles information-- 580 00:23:52,270 --> 00:23:56,590 the Tiles being those sort of square widgets that was really famous with 581 00:23:56,590 --> 00:23:59,920 Windows 8 where you can see services, icons, 582 00:23:59,920 --> 00:24:01,990 and do different things in emails-- 583 00:24:01,990 --> 00:24:05,860 and it turns out that they were vulnerable to a subdomain takeover 584 00:24:05,860 --> 00:24:10,150 attack because the subdomain they were CNAMEd to was actually-- 585 00:24:10,150 --> 00:24:11,508 they lost ownership of it. 586 00:24:11,508 --> 00:24:14,800 DAVID MALAN: Yeah, no, I mean this is a risk anytime you start playing with DNS 587 00:24:14,800 --> 00:24:17,907 and you rely on a third party to implement some service of yours. 588 00:24:17,907 --> 00:24:19,990 And this happens all the time, frankly, with a lot 589 00:24:19,990 --> 00:24:21,760 of Cloud based services, some of which we 590 00:24:21,760 --> 00:24:25,120 ourselves have used, whereby you might want to use your own domain-- 591 00:24:25,120 --> 00:24:29,170 for instance CS50.io-- and you might want to use a subdomain therein-- 592 00:24:29,170 --> 00:24:35,050 like foo.CS50.io-- but have foo.CS50.io resolve to some third party service 593 00:24:35,050 --> 00:24:39,540 where they has white labeled their product for you. 594 00:24:39,540 --> 00:24:44,080 So you go to foo.CS50.io and you see CS50's version of that application. 595 00:24:44,080 --> 00:24:45,550 And if you go to bar-- 596 00:24:45,550 --> 00:24:50,140 well, if you go to bar.example.com see someone else's use 597 00:24:50,140 --> 00:24:51,220 of that same service. 598 00:24:51,220 --> 00:24:53,080 So DNS enables for this, but of course you 599 00:24:53,080 --> 00:24:57,160 have to trust that the underlying host is not going to change ownership, 600 00:24:57,160 --> 00:24:58,900 become malicious, or so forth. 601 00:24:58,900 --> 00:25:03,180 And so generally speaking, putting third parties within your domain or subdomain 602 00:25:03,180 --> 00:25:05,848 is not the safest practice, as it sounds like they gleaned. 603 00:25:05,848 --> 00:25:06,640 COLTON OGDEN: Yeah. 604 00:25:06,640 --> 00:25:07,492 They were able to-- 605 00:25:07,492 --> 00:25:08,950 the people that wrote the article-- 606 00:25:08,950 --> 00:25:13,450 this was golem.de which is a German website-- 607 00:25:13,450 --> 00:25:18,040 German newsgroup-- they actually bought the domain and were able to push 608 00:25:18,040 --> 00:25:22,110 arbitrary content to these Windows Tiles services which is pretty-- 609 00:25:22,110 --> 00:25:23,860 I mean, you can imagine if a bad actor got 610 00:25:23,860 --> 00:25:26,260 involved the types of phishing attacks they'd 611 00:25:26,260 --> 00:25:27,910 be capable of orchestrating with this. 612 00:25:27,910 --> 00:25:28,720 DAVID MALAN: Yeah, absolutely. 613 00:25:28,720 --> 00:25:30,670 And I don't doubt that there are folks out there who 614 00:25:30,670 --> 00:25:33,212 have little scripts running just checking when certain domain 615 00:25:33,212 --> 00:25:36,490 names expire, for instance, so that they can snatch them up and actually 616 00:25:36,490 --> 00:25:37,300 repurpose them. 617 00:25:37,300 --> 00:25:39,820 And this has happened even with source code libraries 618 00:25:39,820 --> 00:25:42,580 out there where someone has turned over the keys, 619 00:25:42,580 --> 00:25:44,740 so to speak, to a popular open source library, 620 00:25:44,740 --> 00:25:48,910 and that second person has maybe injected some advertising into it, 621 00:25:48,910 --> 00:25:50,380 or even some malicious code. 622 00:25:50,380 --> 00:25:53,255 And if you have all of these other unsuspecting folks on the internet 623 00:25:53,255 --> 00:25:55,240 depending on that third party library, they 624 00:25:55,240 --> 00:25:58,115 might not even realize the next time they do an update of the library 625 00:25:58,115 --> 00:26:01,250 that someone else is taking it over and its intent has now changed. 626 00:26:01,250 --> 00:26:03,460 So I mean, we talk about this a lot in CS50, 627 00:26:03,460 --> 00:26:07,990 the whole system of trust on which computing these days is built. 628 00:26:07,990 --> 00:26:11,380 There are a lot of threats that you might underappreciate until it actually 629 00:26:11,380 --> 00:26:12,070 happens to you. 630 00:26:12,070 --> 00:26:14,320 COLTON OGDEN: Trust was the theme of the last episode. 631 00:26:14,320 --> 00:26:16,820 DAVID MALAN: Indeed, and it seems we can't get away from it. 632 00:26:16,820 --> 00:26:18,340 But of course, this is where all the articles 633 00:26:18,340 --> 00:26:21,430 are being written each week because there's a lot of threats out there. 634 00:26:21,430 --> 00:26:21,820 COLTON OGDEN: Yeah. 635 00:26:21,820 --> 00:26:23,230 No, it's great that people are-- and this 636 00:26:23,230 --> 00:26:25,360 was a good actor it looks like by the sound of the article. 637 00:26:25,360 --> 00:26:26,110 They bought the domain. 638 00:26:26,110 --> 00:26:27,430 They didn't orchestrate any attacks. 639 00:26:27,430 --> 00:26:28,060 They made it clear. 640 00:26:28,060 --> 00:26:29,852 They actually contacted Microsoft about it. 641 00:26:29,852 --> 00:26:33,280 Microsoft did not respond, though they did delete the record. 642 00:26:33,280 --> 00:26:35,530 So it's nice to know that people are looking out 643 00:26:35,530 --> 00:26:37,900 for all good intents and purposes. 644 00:26:37,900 --> 00:26:40,590 Maybe not as proportional as the bad actors-- 645 00:26:40,590 --> 00:26:42,970 it's hard to say I would imagine. 646 00:26:42,970 --> 00:26:44,170 DAVID MALAN: Absolutely. 647 00:26:44,170 --> 00:26:46,150 COLTON OGDEN: But it's good to see. 648 00:26:46,150 --> 00:26:50,677 And I guess we'll end the podcast on a bit of lighter news. 649 00:26:50,677 --> 00:26:51,760 DAVID MALAN: I don't know. 650 00:26:51,760 --> 00:26:54,210 I think this was the best article this week. 651 00:26:54,210 --> 00:26:56,540 COLTON OGDEN: It's a good article. 652 00:26:56,540 --> 00:26:58,300 But we do a lot of tech. 653 00:26:58,300 --> 00:26:59,290 I'm into games. 654 00:26:59,290 --> 00:27:01,930 There's been some cool game stuff going on recently. 655 00:27:01,930 --> 00:27:05,800 So one of the things that you actually noticed before stream was actually 656 00:27:05,800 --> 00:27:09,430 that Infocom, a company that was famous for producing a lot of text adventures 657 00:27:09,430 --> 00:27:12,520 in the '80s, they actually open sourced a lot of their classic titles. 658 00:27:12,520 --> 00:27:13,270 DAVID MALAN: Yeah. 659 00:27:13,270 --> 00:27:16,187 Or at least, I think to clarify, a lot of the source code is available 660 00:27:16,187 --> 00:27:18,175 and someone open sourced it. 661 00:27:18,175 --> 00:27:20,800 I think it remains to be seen just how long it will stay alive. 662 00:27:20,800 --> 00:27:22,985 These games, to be fair, are decades old now 663 00:27:22,985 --> 00:27:26,110 and it's more of a historical interest, I think, than a commercial interest 664 00:27:26,110 --> 00:27:27,190 that people might have. 665 00:27:27,190 --> 00:27:31,690 But yeah, I remember as a kid in the 1980s growing up with-- we did 666 00:27:31,690 --> 00:27:36,400 have graphics and monitors, but not all games used graphics on those monitors. 667 00:27:36,400 --> 00:27:38,740 And so Hitchhiker's Guide to the Galaxy, which 668 00:27:38,740 --> 00:27:41,930 folks might know by author Douglas Adams is a wonderful book 669 00:27:41,930 --> 00:27:43,790 and a series about the same. 670 00:27:43,790 --> 00:27:47,620 There was a text based adventure game whereby you type in commands 671 00:27:47,620 --> 00:27:51,337 and navigate a text based world where you only know where you are 672 00:27:51,337 --> 00:27:53,170 and what you're looking at and where you can 673 00:27:53,170 --> 00:27:56,910 go based on the feedback you're getting textually from the program. 674 00:27:56,910 --> 00:27:59,890 And there was another one called Zork which was very similar in spirit 675 00:27:59,890 --> 00:28:02,177 and it had a map not unlike the two dimensional worlds 676 00:28:02,177 --> 00:28:05,260 you talk about in your games class where you can go up, down, left, right, 677 00:28:05,260 --> 00:28:10,720 and so to speak virtually, but you can only do so by saying walk right 678 00:28:10,720 --> 00:28:13,760 or walk left or open door or the like. 679 00:28:13,760 --> 00:28:16,750 And the fun thing, I think, about it back in my day 680 00:28:16,750 --> 00:28:20,290 was it really did leave things to the imagination. 681 00:28:20,290 --> 00:28:22,870 And oh my god was it probably easier to make these games 682 00:28:22,870 --> 00:28:24,670 because you can still have the storyline, 683 00:28:24,670 --> 00:28:28,235 you can still create the world, but you don't have to render any of that. 684 00:28:28,235 --> 00:28:29,860 You can leave it to folks' mind's eyes. 685 00:28:29,860 --> 00:28:32,680 So it's fascinating to look at some of these things written 686 00:28:32,680 --> 00:28:34,700 in a language called ZIL-- 687 00:28:34,700 --> 00:28:37,868 Zork implementation language-- which seems to actually be list based, 688 00:28:37,868 --> 00:28:39,160 which is a functional language. 689 00:28:39,160 --> 00:28:40,680 Though it's actually-- I was reading-- 690 00:28:40,680 --> 00:28:42,280 I was going down the rabbit hole and reading 691 00:28:42,280 --> 00:28:45,250 some of the history-- it's actually based on another language, in fact. 692 00:28:45,250 --> 00:28:48,250 But it's a fascinating way, if you poke around the repositories 693 00:28:48,250 --> 00:28:52,810 online, of representing two dimensional non-graphical worlds. 694 00:28:52,810 --> 00:28:56,663 So if you Google Infocom open source games, 695 00:28:56,663 --> 00:28:59,830 odds are it will lead you to the GitHub repository or any number of articles 696 00:28:59,830 --> 00:29:00,700 about the same. 697 00:29:00,700 --> 00:29:01,010 COLTON OGDEN: Yeah. 698 00:29:01,010 --> 00:29:01,793 GitHub is amazing. 699 00:29:01,793 --> 00:29:04,210 I mean, there are there are a lot of other games on GitHub 700 00:29:04,210 --> 00:29:06,780 that are not officially released by the company, 701 00:29:06,780 --> 00:29:09,593 as people have reverse engineered games like Pokemon, for example. 702 00:29:09,593 --> 00:29:11,260 Amazing to read through a lot of these-- 703 00:29:11,260 --> 00:29:11,350 DAVID MALAN: Pokemon. 704 00:29:11,350 --> 00:29:12,340 That's your generation. 705 00:29:12,340 --> 00:29:13,132 COLTON OGDEN: Yeah. 706 00:29:13,132 --> 00:29:14,830 No, it's good stuff, though. 707 00:29:14,830 --> 00:29:17,540 We actually have a Pokemon p-set in the games course, too. 708 00:29:17,540 --> 00:29:18,040 Yeah. 709 00:29:18,040 --> 00:29:20,950 No, it's very cool just how nice GitHub is 710 00:29:20,950 --> 00:29:23,908 in terms of making it accessible to a lot of things that are things-- 711 00:29:23,908 --> 00:29:26,950 I would say a lot of it you kind of have to learn through trial and error 712 00:29:26,950 --> 00:29:27,863 a lot of the times. 713 00:29:27,863 --> 00:29:31,030 A lot of companies, especially in the '80s, didn't really release their game 714 00:29:31,030 --> 00:29:31,757 code-- and '90s-- 715 00:29:31,757 --> 00:29:33,340 didn't really release their game code. 716 00:29:33,340 --> 00:29:36,370 Only in the 2000s and 2010s did game programming really 717 00:29:36,370 --> 00:29:37,495 start to become accessible. 718 00:29:37,495 --> 00:29:38,828 DAVID MALAN: That's interesting. 719 00:29:38,828 --> 00:29:40,940 Yeah, no, I mean, it's quite the thing to pick up. 720 00:29:40,940 --> 00:29:42,790 So hopefully that will engender all the more interest 721 00:29:42,790 --> 00:29:45,610 among aspiring programmers to actually contribute to those kinds of things. 722 00:29:45,610 --> 00:29:48,193 COLTON OGDEN: In more recent news, the PS5 was also announced. 723 00:29:48,193 --> 00:29:49,120 DAVID MALAN: The PS5. 724 00:29:49,120 --> 00:29:50,470 COLTON OGDEN: Which is pretty cool. 725 00:29:50,470 --> 00:29:51,340 DAVID MALAN: PlayStation 5. 726 00:29:51,340 --> 00:29:52,390 COLTON OGDEN: Yeah, PlayStation 5. 727 00:29:52,390 --> 00:29:55,557 And they're actually going to have built in ray tracing as part of their GPU 728 00:29:55,557 --> 00:29:58,600 which is pretty fascinating, where basically the camera shoots a ray of-- 729 00:29:58,600 --> 00:30:02,140 not light, but a ray to basically look for the nearest object in space 730 00:30:02,140 --> 00:30:04,092 and calculate for every pixel on your screen. 731 00:30:04,092 --> 00:30:05,800 And they're going to be in AK resolution, 732 00:30:05,800 --> 00:30:07,688 so that's a lot of ray tracing. 733 00:30:07,688 --> 00:30:08,730 But they're going to be-- 734 00:30:08,730 --> 00:30:10,230 it's going to be pretty interesting. 735 00:30:10,230 --> 00:30:13,445 I don't think I've seen a GPU yet that has built in ray tracing, 736 00:30:13,445 --> 00:30:15,250 so that might be the first generation. 737 00:30:15,250 --> 00:30:17,000 DAVID MALAN: That sounds very complicated. 738 00:30:17,000 --> 00:30:18,283 I'm going to play Zork this weekend. 739 00:30:18,283 --> 00:30:19,690 COLTON OGDEN: [LAUGHS] But no, it's cool. 740 00:30:19,690 --> 00:30:21,148 It's a nice little dichotomy there. 741 00:30:21,148 --> 00:30:23,590 But I think that's all the topics we have this week. 742 00:30:23,590 --> 00:30:25,810 I mean, we covered the gamut, really, with a lot 743 00:30:25,810 --> 00:30:26,680 of the things we talked about. 744 00:30:26,680 --> 00:30:28,000 DAVID MALAN: From the sad to the happy. 745 00:30:28,000 --> 00:30:29,890 So we'll be curious to see what comes up again this coming week. 746 00:30:29,890 --> 00:30:31,473 COLTON OGDEN: From the old to the new. 747 00:30:31,473 --> 00:30:32,770 DAVID MALAN: There we go, too. 748 00:30:32,770 --> 00:30:33,230 COLTON OGDEN: So good. 749 00:30:33,230 --> 00:30:34,690 So thanks everybody for tuning in. 750 00:30:34,690 --> 00:30:35,773 DAVID MALAN: Yeah, indeed. 751 00:30:35,773 --> 00:30:38,420 This was episode two of the CS50 podcast with David Malan and-- 752 00:30:38,420 --> 00:30:39,430 COLTON OGDEN: And Colton Ogden. 753 00:30:39,430 --> 00:30:40,840 DAVID MALAN: Thanks for tuning in and we'll talk to you soon. 754 00:30:40,840 --> 00:30:42,710 COLTON OGDEN: Bye bye.