 So, what is a file? I think the most straightforward definition is that a file is like some sequence of bytes and like maybe it lives on a disk somewhere. It's like a file is like stuff you see, it's like an image file or a video file or something. But in this talk, I'm going to argue that a file, files actually have nothing to do with disks. A file is actually just anything that fulfills this interface. A file is anything I can open, read, write, and close. And like, if I come up to you and ask to read some bytes from you, and you can listen to my request, as far as I'm concerned, you're a file. You could get those bytes from anywhere. You could get them from the internet, you could make them up, you could randomly generate them, you could get them from a disk. But as long as you can listen to these requests, you're a file. So we're going to take, in this talk, we're going to take this definition and we're going to look at four synthetic file systems that basically they take this loose definition of what a file is and they really stretch it to the limit. So the first fake file system I'm going to go over is grabFS. So grabFS is a screenshot file system. So you can see we have the grabFS root here and every folder here represents an application that's open on my Mac. So here we have the Safari folder and here we have an image. And this image is how Safari looks right now. And if I change how Safari looks, then the image changes. So this is kind of interesting because this TIFF file, like, doesn't actually exist on any disk. It's just synthesized when we open it up to be whatever the window looks like. So this is kind of interesting. So what if we want to take a screenshot? We just copy the file to the desktop and we have a screenshot. But the interesting thing about this being a file is that we can use a lot of the file tools that we already know about to work with it. So for example, I have this little one-liner here. This is going to just take snapshots of what Safari looks like every second. So I can scroll down here and you can see we're just getting the snapshots here. And that was literally, you know, one line of bash scripts because everything's a file. We can just work, we already know how to work with files. So that's kind of interesting. And I showed you it, I showed you this file system in Finder, but I can also work with it here in the command line. And if I'm in this folder, I guess I might as well start an HTTP server. And now I can open this up. I can go to Safari. So what is this screenshot going to be? So it's a little behind. I guess we should refresh it. All right. So that's pretty cool. So that's the screenshot file system. The next demo I'm going to give is BTFS, which is not the Bluetooth file system. It is the BitTorrent file system. And what this lets me do is it lets me mount a torrent file to my computer. So here I have a new Buntu disk image torrent file. So this, I'll just mount it here. I haven't mounted. So this torrent file would let me download this two gigabyte Linux disk image. But I've just mounted it to my computer without downloading it. And I can just mount the disk image. And this will take a second. There we go. And here we go. So we have this two gigabyte ISO file. And we didn't actually need to download it. We just opened it up. And I can open this file here. And it works fine. So all the Linux tools, the file browser, the ISO monitor, the text editor, they all just transparently work with this file that actually lives on the internet. We didn't have to download two gigabytes of data to be able to work with the data. It's just transparently brought to my computer in the background as the individual blocks are asked for by these different programs. All right. So the next fake file system I want to talk about is the YouTube file system. So let me just mount this. And by the way, these file systems were not written by me. They were written by various other people. And I'll send some links out about them later. So the YouTube file system starts out as blank. But what I'm going to do is I'm going to make a YouTube search. I like subway maps, so let's make subway maps. So the way the YouTube file system works is if you make a folder, that folder is a search query. And inside the folder are all the results returned by the search query on YouTube as MP4 files. So we can open up one of these, 1990. So again, we have this interesting mechanic where we're working with files that aren't on my disk, and we are only getting the pieces of the video files in this case that we actually, that the video player is actually looking for. Now my last demo is the Git file system. So here I have this Git repository. There's not a lot here, but there's one commit, one file. And the Git file system lets me mount an arbitrary Git repository from GitHub to a folder on my computer. So I'll mount it now. And I get a view into the current state of the repository. And I get a view into the history, which isn't very interesting. But the cool thing about the Git file system is it's not read-only. I can actually also write to it. I'll go back to my slides. So we went through these fake file systems. And what's interesting, I think, about these is that you get to reuse all the tools that you already had on your computer, because all the tools on your computer know how to work with files. And they don't need to know where those files are coming from. They don't need to know that they're coming from the network. They don't need to know that they're being synthesized on the fly from the Mac graphic subsystem. They all just work for free. And I think this is a really interesting way to interact with your programs. So for example, we were able to work with these folders, both graphically and in terminal. There's a ton of effort people spend making interfaces to list various types of things. If you just represent those things as files, you already have the tools to list them and work with them and rename them and copy them and delete them. So if you're interested in this sort of interface, I recommend that you look at the Plan 9 operating system, which was done by a lot of the same people who did the Go programming language. They really took this idea to the extreme. And a lot of the applications in Plan 9, their plug-in API is a synthetic file system. So you can write plug-ins in any programming language and just manipulate these control files. And you basically have a plug-in to manipulate this application. So thanks.