1 00:00:00,000 --> 00:00:01,520 All right, let's dive in. 2 00:00:01,520 --> 00:00:05,840 You know that moment, you've got like a huge file, 3 00:00:05,840 --> 00:00:07,880 maybe it's video, photos, whatever, 4 00:00:07,880 --> 00:00:09,520 and you need to get it to someone fast. 5 00:00:09,520 --> 00:00:11,940 Oh yeah, the usual options can be such a headache. 6 00:00:11,940 --> 00:00:15,960 Exactly, email says no, it's too big, cloud storage works, 7 00:00:15,960 --> 00:00:18,020 but then you're uploading, waiting, 8 00:00:18,020 --> 00:00:21,360 and maybe you don't want some third party company 9 00:00:21,360 --> 00:00:23,420 holding onto your stuff, even temporarily. 10 00:00:23,420 --> 00:00:25,560 It's just frustrating sometimes. 11 00:00:25,560 --> 00:00:27,360 Absolutely, and that privacy part, 12 00:00:27,360 --> 00:00:28,480 skipping the middleman server, 13 00:00:28,480 --> 00:00:29,920 that can be a really big deal, 14 00:00:29,920 --> 00:00:31,680 depending on what you're actually sending. 15 00:00:31,680 --> 00:00:33,680 Speed is one thing, but privacy is another. 16 00:00:33,680 --> 00:00:36,160 Totally, so picture this instead. 17 00:00:36,160 --> 00:00:38,280 You go to a website, drag your file onto it, 18 00:00:38,280 --> 00:00:40,200 and bam, it spits out a link. 19 00:00:40,200 --> 00:00:42,260 You send that link, and the other person downloads 20 00:00:42,260 --> 00:00:44,800 the file directly from your computer, from your browser, 21 00:00:44,800 --> 00:00:46,520 no server upload needed. 22 00:00:46,520 --> 00:00:49,320 That's the core idea behind FilePizza, yeah. 23 00:00:49,320 --> 00:00:51,400 It's pretty clever. 24 00:00:51,400 --> 00:00:54,040 It really is, and that's what we're digging into today. 25 00:00:54,040 --> 00:00:55,560 How does this actually work? 26 00:00:55,560 --> 00:00:56,760 So we've been looking directly 27 00:00:56,760 --> 00:00:58,400 at the FilePizza website itself. 28 00:00:58,400 --> 00:00:59,800 You know, there are descriptions. 29 00:00:59,800 --> 00:01:01,520 And also digging into the nitty-gritty 30 00:01:01,520 --> 00:01:04,680 on its GitHub page, the technical notes, and all that. 31 00:01:04,680 --> 00:01:05,280 Right. 32 00:01:05,280 --> 00:01:08,080 And our mission here is basically to unpack it for you. 33 00:01:08,080 --> 00:01:10,680 How does this browser-to-browser thing happen? 34 00:01:10,680 --> 00:01:14,960 Why is it so different from, say, Dropbox or Google Drive? 35 00:01:14,960 --> 00:01:17,200 What are the key features, the upsides, maybe even 36 00:01:17,200 --> 00:01:17,920 the downsides? 37 00:01:17,920 --> 00:01:18,200 Yeah. 38 00:01:18,200 --> 00:01:22,160 We want to make it super clear, even if peer-to-peer or WebRTC 39 00:01:22,160 --> 00:01:24,680 just sound like tech jargon right now. 40 00:01:24,680 --> 00:01:27,320 And you've got to love the origin story snippet they have. 41 00:01:27,320 --> 00:01:31,640 Apparently, it was cooked up by Alex Kern and Naraj Bade 42 00:01:31,640 --> 00:01:34,120 while eating sliver at UC Berkeley. 43 00:01:34,120 --> 00:01:35,400 Pizza fuels innovation, right? 44 00:01:35,400 --> 00:01:35,920 Love it. 45 00:01:35,920 --> 00:01:37,080 Seems like it. 46 00:01:37,080 --> 00:01:39,200 Speaking of the infrastructure side of things, 47 00:01:39,200 --> 00:01:42,080 making digital tools and sharing possible, 48 00:01:42,080 --> 00:01:44,600 this deep dive is supported by Safe Server. 49 00:01:44,600 --> 00:01:46,640 If you're thinking about reliable hosting, 50 00:01:46,640 --> 00:01:48,640 maybe for your own projects or navigating 51 00:01:48,640 --> 00:01:50,600 that whole digital transformation thing, 52 00:01:50,600 --> 00:01:52,600 Safe Server really gets the complexities. 53 00:01:52,600 --> 00:01:54,360 You can find out more about their hosting 54 00:01:54,360 --> 00:01:57,240 and support at www.safeserver.de. 55 00:01:57,240 --> 00:01:58,900 Yeah, they handle the kind of infrastructure that 56 00:01:58,900 --> 00:02:00,520 makes something like FilePizza, which 57 00:02:00,520 --> 00:02:03,800 tries to avoid central servers for the data itself, 58 00:02:03,800 --> 00:02:05,520 even more interesting by comparison. 59 00:02:05,520 --> 00:02:06,280 Good point. 60 00:02:06,280 --> 00:02:09,120 OK, so let's get into that core concept, peer-to-peer, 61 00:02:09,120 --> 00:02:10,760 happening inside the web browser. 62 00:02:10,760 --> 00:02:12,720 OK, so the fundamental thing, like you said, 63 00:02:12,720 --> 00:02:13,960 is simple to state. 64 00:02:13,960 --> 00:02:17,880 You pick a file on your computer using FilePizza. 65 00:02:17,880 --> 00:02:20,680 Instead of that file going up to a server and waiting, 66 00:02:20,680 --> 00:02:22,920 the data just flows directly from your browser 67 00:02:22,920 --> 00:02:25,000 across the internet to the browser 68 00:02:25,000 --> 00:02:26,240 of the person downloading it. 69 00:02:26,240 --> 00:02:29,760 So wait, the file never sits on their server, 70 00:02:29,760 --> 00:02:30,920 not even for a second. 71 00:02:30,920 --> 00:02:31,920 That's the key point. 72 00:02:31,920 --> 00:02:33,400 The website makes it really clear. 73 00:02:33,400 --> 00:02:36,800 It says, and I'm quoting here, because data is never 74 00:02:36,800 --> 00:02:38,800 stored in an intermediary server, 75 00:02:38,800 --> 00:02:42,840 the transfer is fast, private, and secure. 76 00:02:42,840 --> 00:02:47,040 The server has a job, but it's more like a matchmaker. 77 00:02:47,040 --> 00:02:49,160 It helps your browser and the downloader's browser 78 00:02:49,160 --> 00:02:51,200 find each other to start talking. 79 00:02:51,200 --> 00:02:52,760 It doesn't actually hold the file. 80 00:02:52,760 --> 00:02:54,120 OK, cutting out that middle step, 81 00:02:54,120 --> 00:02:55,520 I'm guessing that's where the speed comes in. 82 00:02:55,520 --> 00:02:56,780 That's a big part of it, yeah. 83 00:02:56,780 --> 00:02:58,280 Normally you upload at your speed, 84 00:02:58,280 --> 00:03:00,400 they download at theirs, two steps. 85 00:03:00,400 --> 00:03:03,080 With FilePizza, it's more like one direct pipe. 86 00:03:03,080 --> 00:03:04,640 If your upload speed is decent, they 87 00:03:04,640 --> 00:03:06,520 can start grabbing the file directly from you 88 00:03:06,520 --> 00:03:07,400 almost right away. 89 00:03:07,400 --> 00:03:08,720 It can feel much faster. 90 00:03:08,720 --> 00:03:10,800 In the privacy angle you mentioned earlier, 91 00:03:10,800 --> 00:03:12,600 that's also because it skips the server. 92 00:03:12,600 --> 00:03:13,600 Exactly. 93 00:03:13,600 --> 00:03:16,960 Your file isn't sitting on some company's hard drive somewhere. 94 00:03:16,960 --> 00:03:19,160 It only exists on your machine, and as it 95 00:03:19,160 --> 00:03:21,560 transfers on their recipient's machine, 96 00:03:21,560 --> 00:03:23,920 less chance for it to be accessed or scanned 97 00:03:23,920 --> 00:03:26,200 or kept longer than needed. 98 00:03:26,200 --> 00:03:28,600 The source has really emphasized that this direct method 99 00:03:28,600 --> 00:03:30,560 is private and secure. 100 00:03:30,560 --> 00:03:33,280 OK, this feels like it needs some smart web 101 00:03:33,280 --> 00:03:36,720 tech behind the scenes to make browsers talk directly. 102 00:03:36,720 --> 00:03:39,360 The source has mentioned WebRTC. 103 00:03:39,360 --> 00:03:41,320 Yep, that's the magic ingredient. 104 00:03:41,320 --> 00:03:44,600 WebRTC stands for Web Real-Time Communication. 105 00:03:44,600 --> 00:03:47,480 It's basically a set of tools built into modern browsers 106 00:03:47,480 --> 00:03:50,400 that lets them set up direct peer-to-peer links. 107 00:03:50,400 --> 00:03:52,280 Think video calls, audio chat. 108 00:03:52,280 --> 00:03:55,240 Ah, like how Zoom or Meet can sometimes connect you directly. 109 00:03:55,240 --> 00:03:56,000 Sort of, yeah. 110 00:03:56,000 --> 00:03:58,160 It enables that kind of direct data flow 111 00:03:58,160 --> 00:03:59,680 without needing special plugins. 112 00:03:59,680 --> 00:04:01,600 And FilePizza specifically uses something 113 00:04:01,600 --> 00:04:04,160 called PeerJS, which is like a helper library that 114 00:04:04,160 --> 00:04:07,000 makes using WebRTC a bit easier for developers. 115 00:04:07,000 --> 00:04:10,120 So my browser becomes like a temporary mini server 116 00:04:10,120 --> 00:04:11,240 just for that file. 117 00:04:11,240 --> 00:04:13,240 That's a pretty good way to think about it, yeah. 118 00:04:13,240 --> 00:04:15,760 Once the handshake happens via that initial server, 119 00:04:15,760 --> 00:04:18,120 your browser starts sending the data bits directly. 120 00:04:18,120 --> 00:04:20,680 OK, how does it look from the user side 121 00:04:20,680 --> 00:04:22,200 if I want to send something? 122 00:04:22,200 --> 00:04:24,560 It seems really straightforward from the description. 123 00:04:24,560 --> 00:04:25,360 You go to the site. 124 00:04:25,360 --> 00:04:28,320 You see a spot that says drop to select file. 125 00:04:28,320 --> 00:04:30,840 You drop your file or click to select it. 126 00:04:30,840 --> 00:04:33,000 Then file pizza does its thing and gives you 127 00:04:33,000 --> 00:04:35,640 a unique URL, like a temporary web address. 128 00:04:35,640 --> 00:04:38,680 Did I just copy that link and send it via chat or email 129 00:04:38,680 --> 00:04:39,180 or whatever? 130 00:04:39,180 --> 00:04:39,680 Exactly. 131 00:04:39,680 --> 00:04:41,840 The recipient clicks that link. 132 00:04:41,840 --> 00:04:44,320 Their browser opens it, uses the info in the link 133 00:04:44,320 --> 00:04:47,760 to connect back to your browser through the WebRTC magic, 134 00:04:47,760 --> 00:04:49,480 and the download just starts. 135 00:04:49,480 --> 00:04:50,200 Simple enough. 136 00:04:50,200 --> 00:04:50,760 Yeah. 137 00:04:50,760 --> 00:04:54,160 But there's got to be a catch for this direct connection, 138 00:04:54,160 --> 00:04:54,660 right? 139 00:04:54,660 --> 00:04:57,400 There is one really crucial point, probably 140 00:04:57,400 --> 00:04:59,680 the most important thing to remember when using it, 141 00:04:59,680 --> 00:05:02,280 because your browser is serving the file. 142 00:05:02,280 --> 00:05:03,960 Ah, I see where this is going. 143 00:05:03,960 --> 00:05:04,520 Yeah. 144 00:05:04,520 --> 00:05:06,200 The documentation says the uploader 145 00:05:06,200 --> 00:05:08,240 must leave their browser window open 146 00:05:08,240 --> 00:05:09,640 until the transfer is complete. 147 00:05:09,640 --> 00:05:12,800 If you close that file pizza tab or your whole browser, 148 00:05:12,800 --> 00:05:13,840 Connection breaks? 149 00:05:13,840 --> 00:05:14,580 Connection breaks. 150 00:05:14,580 --> 00:05:15,400 Download stops. 151 00:05:15,400 --> 00:05:16,800 Makes sense, right? 152 00:05:16,800 --> 00:05:18,200 The source is gone? 153 00:05:18,200 --> 00:05:18,880 Totally. 154 00:05:18,880 --> 00:05:22,720 Your computer needs to be online and that browser tab active. 155 00:05:22,720 --> 00:05:25,320 What if I want to send the file to, like, three people? 156 00:05:25,320 --> 00:05:26,440 Can they use the same link? 157 00:05:26,440 --> 00:05:26,940 Yep. 158 00:05:26,940 --> 00:05:30,160 The details confirm multiple people can download my file 159 00:05:30,160 --> 00:05:31,840 at once from that one link. 160 00:05:31,840 --> 00:05:34,600 Your browser just handles multiple outgoing streams. 161 00:05:34,600 --> 00:05:35,880 OK, that's handy. 162 00:05:35,880 --> 00:05:37,680 What about file size limits? 163 00:05:37,680 --> 00:05:40,200 Usually, free services cap you pretty low. 164 00:05:40,200 --> 00:05:42,000 This is one of the most interesting claims. 165 00:05:42,000 --> 00:05:44,320 The site says you can send files as big 166 00:05:44,320 --> 00:05:45,480 as your browser can handle. 167 00:05:45,480 --> 00:05:49,200 Whoa, seriously, not like 2GB or something. 168 00:05:49,200 --> 00:05:49,800 Nope. 169 00:05:49,800 --> 00:05:52,560 It suggests the limit isn't some server restriction 170 00:05:52,560 --> 00:05:54,280 because there isn't one holding the file. 171 00:05:54,280 --> 00:05:55,840 It's more about the practical limits 172 00:05:55,840 --> 00:05:57,320 of your browser, your computer's memory, 173 00:05:57,320 --> 00:05:59,160 maybe your network connection staying stable 174 00:05:59,160 --> 00:06:00,440 for a huge transfer. 175 00:06:00,440 --> 00:06:01,440 It's ambitious. 176 00:06:01,440 --> 00:06:03,240 Yeah, that's a big difference from a 25 177 00:06:03,240 --> 00:06:05,400 Mellaby email attachment limit. 178 00:06:05,400 --> 00:06:08,400 Now, we know the link dies if I close my browser. 179 00:06:08,400 --> 00:06:10,440 But what about security during the transfer? 180 00:06:10,440 --> 00:06:12,800 Is my data flying naked across the internet? 181 00:06:12,800 --> 00:06:13,680 Good question. 182 00:06:13,680 --> 00:06:15,040 Thankfully, no. 183 00:06:15,040 --> 00:06:19,040 The sources explain that WebRTC itself has security built in. 184 00:06:19,040 --> 00:06:20,640 All the communication is automatically 185 00:06:20,640 --> 00:06:24,400 encrypted using public key cryptography because of DTLS. 186 00:06:24,400 --> 00:06:25,480 OK. 187 00:06:25,480 --> 00:06:27,880 DTLS, public key cryptography. 188 00:06:27,880 --> 00:06:29,000 Break that down a bit. 189 00:06:29,000 --> 00:06:35,240 Think of DTLS as SSLTLS, the padlock you see on websites, 190 00:06:35,240 --> 00:06:38,240 but for this kind of real-time data stream. 191 00:06:38,240 --> 00:06:40,920 It's just part of the WebRTC standard. 192 00:06:40,920 --> 00:06:43,520 And public key cryptography is the method, basically. 193 00:06:43,520 --> 00:06:45,880 It scrambles the data using a system 194 00:06:45,880 --> 00:06:49,200 where only the intended recipient has the right key 195 00:06:49,200 --> 00:06:50,240 to unscramble it. 196 00:06:50,240 --> 00:06:52,640 So it's encrypted automatically between the browsers. 197 00:06:52,640 --> 00:06:54,360 Nobody sniffing in the middle can read it. 198 00:06:54,360 --> 00:06:55,040 That's the idea. 199 00:06:55,040 --> 00:06:57,280 It's secured point to point automatically. 200 00:06:57,280 --> 00:06:57,780 Nice. 201 00:06:57,780 --> 00:06:59,400 Is there anything else for security? 202 00:06:59,400 --> 00:07:01,840 If I don't want just anyone with the link grabbing the file. 203 00:07:01,840 --> 00:07:02,120 Yep. 204 00:07:02,120 --> 00:07:03,360 There's an extra layer you can add. 205 00:07:03,360 --> 00:07:05,240 You can optionally add an optional password 206 00:07:05,240 --> 00:07:05,960 to your upload. 207 00:07:05,960 --> 00:07:08,200 So even if someone stumbles upon the URL, 208 00:07:08,200 --> 00:07:10,400 they'd still need the password you set to actually start 209 00:07:10,400 --> 00:07:11,200 the download. 210 00:07:11,200 --> 00:07:12,020 Got it. 211 00:07:12,020 --> 00:07:13,600 So password protection on top. 212 00:07:13,600 --> 00:07:16,760 The GitHub page mentioned a v2 as well with updates. 213 00:07:16,760 --> 00:07:17,640 What changed? 214 00:07:17,640 --> 00:07:18,960 Is it still being worked on? 215 00:07:18,960 --> 00:07:21,320 Yeah, it shows it's not just some old project. 216 00:07:21,320 --> 00:07:23,720 v2 brought some nice upgrades. 217 00:07:23,720 --> 00:07:26,000 First off, a better UI looks more modern. 218 00:07:26,000 --> 00:07:27,860 Dark mode support, that kind of thing. 219 00:07:27,860 --> 00:07:29,720 Much better mobile support too. 220 00:07:29,720 --> 00:07:32,080 Even calls out mobile safari specifically. 221 00:07:32,080 --> 00:07:32,760 Oh, that's good. 222 00:07:32,760 --> 00:07:34,720 Using it on a phone would be useful. 223 00:07:34,720 --> 00:07:35,880 Definitely. 224 00:07:35,880 --> 00:07:37,880 They also mentioned faster handshakes, 225 00:07:37,880 --> 00:07:39,480 meaning the connection between browsers 226 00:07:39,480 --> 00:07:41,280 should establish more quickly. 227 00:07:41,280 --> 00:07:43,480 And for the sender, you can now actually monitor 228 00:07:43,480 --> 00:07:46,240 the download progress and even stop a transfer 229 00:07:46,240 --> 00:07:47,960 if you need to. 230 00:07:47,960 --> 00:07:49,360 Control for the uploader. 231 00:07:49,360 --> 00:07:52,520 What about handling a folder full of files? 232 00:07:52,520 --> 00:07:54,680 That was another big v2 addition. 233 00:07:54,680 --> 00:07:57,280 You can now upload multiple files at once. 234 00:07:57,280 --> 00:08:00,000 And for the downloader, it bundles them all up neatly 235 00:08:00,000 --> 00:08:01,720 into a single zip file. 236 00:08:01,720 --> 00:08:02,840 Much more convenient. 237 00:08:02,840 --> 00:08:05,040 OK, that's way better than sending files one by one. 238 00:08:05,040 --> 00:08:05,540 Totally. 239 00:08:05,540 --> 00:08:07,720 Oh, and they added streaming downloads too, 240 00:08:07,720 --> 00:08:09,880 which could mean for certain file types, 241 00:08:09,880 --> 00:08:11,380 the downloader might be able to start 242 00:08:11,380 --> 00:08:13,680 using the beginning of the file before the whole thing is 243 00:08:13,680 --> 00:08:14,680 finished transferring. 244 00:08:14,680 --> 00:08:17,600 Plus, some back-end tweaks using Redis versability. 245 00:08:17,600 --> 00:08:19,180 All right, so let's pull this back. 246 00:08:19,180 --> 00:08:22,440 We've gone through how it works, the tech, the features. 247 00:08:22,440 --> 00:08:25,680 How does understanding Final Pizza help you listening right 248 00:08:25,680 --> 00:08:26,240 now? 249 00:08:26,240 --> 00:08:28,420 Well, what we've seen is that Final Pizza presents 250 00:08:28,420 --> 00:08:31,100 a really different way to think about sending files. 251 00:08:31,100 --> 00:08:35,160 It uses this peer-to-peer tech, WebRTC, right in the browser, 252 00:08:35,160 --> 00:08:39,520 and cuts out that whole upload to a server first step. 253 00:08:39,520 --> 00:08:40,020 Right. 254 00:08:40,020 --> 00:08:43,400 So that means it can be faster, it's inherently more private, 255 00:08:43,400 --> 00:08:45,880 because your file isn't sitting on someone else's server, 256 00:08:45,880 --> 00:08:48,240 and it's pretty simple to start a transfer. 257 00:08:48,240 --> 00:08:51,780 Seems especially useful for those really big files, 258 00:08:51,780 --> 00:08:54,340 or anytime you're a bit hesitant about using a third party 259 00:08:54,340 --> 00:08:54,840 service. 260 00:08:54,840 --> 00:08:56,680 It really shifts the process, doesn't it? 261 00:08:56,680 --> 00:08:59,320 Put your own device back in the center of the transfer, 262 00:08:59,320 --> 00:09:01,040 instead of just being an endpoint talking 263 00:09:01,040 --> 00:09:02,200 to a big server farm. 264 00:09:02,200 --> 00:09:02,520 Yeah. 265 00:09:02,520 --> 00:09:04,320 It's kind of cool to see the browser itself 266 00:09:04,320 --> 00:09:05,860 doing this heavy lifting. 267 00:09:05,860 --> 00:09:06,560 It really is. 268 00:09:06,560 --> 00:09:08,480 It kind of pushes back against the idea 269 00:09:08,480 --> 00:09:11,780 that everything needs a massive central service behind it. 270 00:09:11,780 --> 00:09:14,280 So if we boil it down, the main takeaway from our deep dive 271 00:09:14,280 --> 00:09:18,560 today is that Fatal Pizza uses peer-to-peer and WebRTC 272 00:09:18,560 --> 00:09:20,720 for a truly different serverless way 273 00:09:20,720 --> 00:09:23,360 to share files directly, browser-to-browser. 274 00:09:23,360 --> 00:09:24,960 It changes the whole flow by skipping 275 00:09:24,960 --> 00:09:26,840 that intermediary server storage. 276 00:09:26,840 --> 00:09:29,100 Yeah, it's a really neat, practical example 277 00:09:29,100 --> 00:09:30,640 of P2P in the browser. 278 00:09:30,640 --> 00:09:31,480 It is. 279 00:09:31,480 --> 00:09:34,240 And here's something to maybe chew on, 280 00:09:34,240 --> 00:09:36,080 based on what we've looked at today. 281 00:09:36,080 --> 00:09:38,600 If we start relying more on direct browser-to-browser 282 00:09:38,600 --> 00:09:41,580 connections like this, instead of always funneling our data 283 00:09:41,580 --> 00:09:44,820 through third-party servers, how could that fundamentally 284 00:09:44,820 --> 00:09:48,360 change how we think about sharing information online? 285 00:09:48,360 --> 00:09:50,840 What new possibilities, or maybe even new challenges, 286 00:09:50,840 --> 00:09:52,920 does that whole direct connection approach 287 00:09:52,920 --> 00:09:55,240 bring up for the future of our digital lives 288 00:09:55,240 --> 00:09:56,560 and who controls our data? 289 00:09:56,560 --> 00:09:58,560 It definitely sparks thoughts about things 290 00:09:58,560 --> 00:10:01,280 like decentralization, maybe more user control, 291 00:10:01,280 --> 00:10:02,080 interesting stuff. 292 00:10:02,080 --> 00:10:03,120 It certainly is. 293 00:10:03,120 --> 00:10:06,120 And remember, this deep dive was supported by SafeServer. 294 00:10:06,120 --> 00:10:08,560 If you need solid hosting, whether it's for deploying apps, 295 00:10:08,560 --> 00:10:11,080 maybe even the signaling server for a P2P tool, 296 00:10:11,080 --> 00:10:13,720 or just navigating your digital strategy, check them out. 297 00:10:13,720 --> 00:10:16,760 You can find more info at www.safeserver.de.