July 29th, 2026 ×
The Open Web's second chance (w/ Dan Abramov)
Transcript
Guest 0
Like, in terms of apps, you know, from users' perspective, it's it works exactly as today's web. You Node, you could imagine something like Reddit, or NetProto, or something like Stack Overflow, or something like GitHub. There is a project called Tangled. You can imagine something like lost.fm, but really any kind of social thing where you create something. Right? Like, you you create content in some formats, but the difference is that it lives in your folder. Right? Like, it's like, everybody gets a folder, and your stuff just goes into that folder, and then apps kinda sync it. So apps kind of become consumers, and the source of truth is actually in your folder.
Wes Bos
Welcome to Syntax. Today, we have Dan Abramov on, and you probably know Dan Abramov from his work on React.
Wes Bos
His he worked at Blue Sky for a while.
Wes Bos
He's still doing quite a bit of React stuff. It's interesting. But we have him on today to talk about, app protocol or app proto. You may have heard of app proto as, like, the protocol that is behind Blue Sky.
Wes Bos
And we did an episode on it probably two years ago when, like, blue maybe even three years ago when, like, that that first blue sky sort of hump came out. And it was it's a really interesting protocol, and it can be used for so much more stuff. And I feel like it's kind of underrated. I know Dan feels like it's kinda underrated and really interesting. So we're gonna talk about the technical bits behind all of it, what you can use it for. And, he even says it's, maybe Wes 2.1 or web three, but the good It's kinda just like, welcome, Dan. Thanks for coming on.
Guest 0
Hey. Thank you for inviting me.
Wes Bos
Yeah. Give us the the scoop of, who you are and what you do. I know I know probably know you, but just in case people aren't familiar think people I I don't think people know me anymore.
Wes Bos
No?
Guest 0
I've I've been kind of out of the loop.
Guest 0
Yeah. But, yeah, I've been, I guess, I was involved with React for a bunch of years. I used to work on the React team at Facebook slash Meta.
Guest 0
And, yeah, then later and I did some other open source stuff like React app,
Wes Bos
and Redux. Redux. Yeah.
Guest 0
Yeah. And then, I worked at Blue Sky for a couple of Yarn, and then I just kinda had a sabbatical. And now I'm starting at, at Vercel,
Scott Tolinski
on the Next. Js team. Wow. So when did the Vercel transition happen?
Guest 0
Just literally a couple weeks ago.
Wes Bos
That's cool. Can before we get into that protocol, can we ask you what you're working on there? Because I'm sure people are dying to know. Well, I I'm on the Next. Js team. So just, making it better. Cranking on that right on.
Wes Bos
Alright. So app protocol, what is it, and and why should we care about why this is so interesting?
Guest 0
I don't know. There's so much pressure in this question. Like, I'm like, I don't know if I can condense it. Like, to me, I think it it fixes a lot of stuff. Like, you know, like, you know, like in The Matrix ESLint the movie, like, there's this, Wes, like, have you ever felt that, like, something is wrong with the world? And it's kinda like this, but for the Internet. Right? Like, Internet especially, like, if you grew up with the Internet, I think you kind of maybe remember it as this, maybe more lighthearted thing where, you know, like, you you, like, create a website. You, like, post something to it. Like, you can link to each other. It's very permissionless.
Guest 0
It's very much kind of, like, there's a spirit of, like, open you know, openness and, Node, like, walled gardens.
Guest 0
And then with time, in a sense, it's gotten more social, right, like, social networks and so on. So Mhmm. Like, we've gotten, like, shared spaces.
Guest 0
But then these shared spaces, they feel like Internet inside of Internet, like, you know, different walled gardens, like Facebook or Twitter, where we're gonna put our stuff there. You know? Like, I I put, like, my answers on Stack Overflow or my issues on GitHub or, like, my, like, posts on Reddit or somewhere else.
Guest 0
But then with time, these platforms, they kind of, you know, they fatten up with, like, everyone's content, and then they start doing you know, they're, like, shutting down alternative clients, Scott showing, like, ads everywhere, trying to milk, you know, everything that and, like, we can't really, like, walk away from them because then we're gonna erase everything that we created there.
Guest 0
So in a sense, it's kinda like we put our stuff into somebody else's box, and then this box is just, you know, it's not on the open web anymore. It's kind of there's like a ghost of it on the open Wes. You know? Like, the Yeah. Mhmm. The projections, like, the HTML that you can hit through the servers.
Guest 0
But, like, in a sense, it's like it's it's locked somewhere somewhere else.
Guest 0
And the big thing about that product is it's kind of like a data layer for the web JS how I like to think about it. Mhmm. So it's kind of like, what if the JSON that we usually put into, like, other products ESLint their boxes, what if the JSON just, you know, hung on the web? Like, the JSON was part of the web, kind of like in the personal sites era, but, you know, you still can use apps, of course. So, like, apps are kind of the consumption and production model, but it lives sort of, like, in everybody's like, it's it's like if everybody had a Dropbox folder that all apps can kind of interact with, and then you can always leave an app, but your stuff is still gonna be in that folder. And so other apps can kind of, you know, present it differently or even, like, write through it differently, and different apps can see each other's content and and kind of interoperate.
Guest 0
So it's yeah. I think of it as, like, people centric kind of part of the web that that is missing to, you know, that is necessary to fix these, like, network effects where we get locked into platforms.
Wes Bos
Man, I I wish like, people always say the Internet is forever, and, like, anything you put on the Internet will will always be around and, like, show me my Myspace photos or, like, show me like, there's so much of the Internet that simply just goes away because something gets shut down and you no longer have have access to it. Right? Like, my photo bucket got deleted, a while ago because they want they're trying to, like, squeeze you to pay for my pictures of my bike from twenty years ago. No. I'm not doing that. You know? Fine. Then you can just delete delete all that data.
Wes Bos
So app proto is like, people are I think they kind of coincide it with Blue Sky, and let's say, like, oh, that's just what Blue Sky runs on. But but the whole idea with it is that you will be able to host your app proto wherever you want. You could self host it, or you could use, like, an ex some other Vercel, like Blue Sky would be one of them.
Wes Bos
And then other applications would then consume each of them. Is is that a a fair way to put it?
Guest 0
You could say this, but I think, like, the relationship between Blue Sky and the protocol is kind of interesting because, yeah, like, people think it's it's a Blue Sky thing, and, you know, Blue Sky is this, you know, they think it's it's, like, left to Twitter or whatever. Right? Yeah. But it's really like blue sky is a proof of concept of that shows, like, you can build an app on the protocol. So the protocol itself, it has no relation to social media. Right? It it's not a microblogging protocol.
Guest 0
It is lit literally a JSON, like, a JSON layer for the Wes, like, JSON storage layer that JS, attached to every user.
Guest 0
So it's identity for the web and JSON storage for the web is how I think about it. And then Blue Sky app is like a proof of concept that you can build an app using this architecture, and it, you know, it it works.
Guest 0
And in terms of, like, hosting, I think the tricky thing there is really, like, the way I would again, the way I would describe with Prado is that, maybe I just start by describing it first and then come back to your question because I think that that actually, like, clarifies it a little bit.
Guest 0
So, you know, like, you have a Google account. Right? Like, you maybe you have, like, a lot of sites that you log in to, but you only have, like, maybe several Google accounts.
Guest 0
Right? Because, maybe you have, like, separate identities for, like, work stuff and personal stuff or or maybe, like, even a couple different identities for personal stuff. But, really, you don't want to have, like, 400, like, password payers and so on. Like, it makes sense to manage them from, kind of a single identity piece, and a lot of us use Google for that. And And so with Prado, kind of, you know, the first thing that it introduces is it really upstreams that concept into web itself.
Guest 0
So the idea is that identity should actually be a legible concept in the web, So you should have a web account. And, you know, you don't have to be logged in all the time, of course, or you can have multiple.
Guest 0
But, ideally, we upstream this so that you don't depend on Google.
Guest 0
And so, you know, it could be hosted by Google, but you should be able to switch it to another provider or to host it yourself on your own server. But, basically, like, the the thing that you log in to apps with, that should be something that, you know, that is, like, under your control, and that is a web standard.
Wes Bos
So this is kind of the first idea. Is that, like, the idea of, like, owning your own domain, or is it does it go even further than that? It goes further than that. So if Prado uses domains as handles,
Guest 0
So this is a part of this. Your identity has a handle.
Guest 0
Mhmm. But it's not tied to a domain because you want to change handles over time. Like, that's pretty common. Right? Like, people want to be able to change their, or, like, you could lose a domain. Right? Like, you don't want to lose your identity.
Guest 0
So it's like a layer above domains.
Guest 0
There's, like, a identifier that's associated with you, and then there's, like, a JSON document that says three things.
Guest 0
One is, like, what your current username is, which is a, you know, a domain, but they can change over time, kind of like your passport. So, like, it says who you Yarn, like, what's your name, you know, what what is what is your handle.
Guest 0
The second thing it says JS, where is your data stored? So what is your current hosting? And that is the Node concept. Right? Like, in today's web, we don't really have a concept of per user hosting. Right? So, like, I only have a hosting if I host the website.
Guest 0
Whereas here, it's, again, kind of more like Google account or Google Drive. It's like everybody who gets, you know, a web account has some hosting, and it could be provided by, like, a big company, but you could switch it over time to, you know, run into yourself or with the community and so on. It's just like a web standard.
Guest 0
So everybody gets a hosting Wes some JSON can be stored.
Guest 0
And the third thing is just your public key so that the things that you do can be verified. And so this is your identity in NetProto. It's these three things.
Wes Bos
Okay. Okay.
Scott Tolinski
And if you want to see all of the errors in your application, you'll want to check out Sentry at sentry.io/syntax.
Scott Tolinski
You don't want a production application out there that, well, you have no visibility into in case something is blowing up, and you might not even know it. So head on to .io/syntax.
Scott Tolinski
Again, we've been using this tool for a long time, and it totally rules. Alright.
Wes Bos
ESLint, like, obviously, microblogging is is one use case.
Wes Bos
But, like, what else could you use it for? Like, literally, any piece of content that you put on could could be done with AppProto?
Guest 0
Yeah. Yeah. So, you can kind of imagine like, in terms of apps, you know, from users' perspective, it's it works exactly as today's web.
Guest 0
Right? So, you know, you could imagine something like Reddit on AppProto or something like Stack Overflow or something like GitHub. There is a project called Tangled, that is, kind of like GitHub on adproto.
Guest 0
Mhmm. You could imagine something like Last FM, where, you know, you send, like, your music Scott, and then it displays, like, aggregation.
Guest 0
But really any kind of social thing where you create something. Right? Like, you you create content in some formats and that but the difference is that it lives in your folder. Right? Like, it's like Yeah. Everybody gets a folder, and your stuff just goes into that folder, and then apps kinda sync it.
Guest 0
So apps kind of become consumers, and the source of truth is actually in your folder.
Wes Bos
Okay. Okay. So if I wanted to build Dan ITR, which is a new social network, and I wanna own my my own, I wanna own all of my content, you would be creating an app. And then is the idea that it it goes off and it just consumes them all, or I sign in with my AppProto to your to your new application and then all of a sudden I'd be able to to create content on there? Yeah. It works like normal app. So just like you can sign in with, like, with a Google account,
Guest 0
you can sign in with a Prodtor account.
Guest 0
Mhmm.
Guest 0
And or, like I I I Node. Frodo JS, like, a technical term.
Guest 0
But the the network is, is called the atmosphere.
Guest 0
Kind of like blogosphere, but atmosphere because at right? Yeah. At atmosphere.
Guest 0
And it's kinda like you know? It's like this cloud where that is shared between all apps.
Scott Tolinski
Mhmm. Right? So So how does something get onto that stream? How does something get onto that protocol?
Guest 0
Yeah. So the the key separation is really between hosting and apps.
Guest 0
Right? So apps are these, like, user facing thing. So this this doesn't change. You just, you know, you just use an app. Use the Blue Sky app or, you know, Tangled or like, for Git, you know, for Git repos or there's, like, a bunch of login like, macro blogging apps, like Leaflet, Offprint, Pocket.
Guest 0
So these are all you know, they work like normal sites. You just log in to them. You have an account. You can, like, write something to publish.
Guest 0
But these apps, like, the way they work is they're kind of like CMSs in a sense. Mhmm. Because when you write something on Leaflet, it actually creates a file in your folder on your hosting.
Guest 0
Mhmm. So it knows where your accounts, you know, folder is, and you just put some JSON there.
Guest 0
And it's the same, like, if I follow you on Blue Sky, I'm actually creating a JSON like, the app will create a JSON file in the blue sky follows subfolder of my folder on my hosting.
Guest 0
So, like, every every action you do you know, when I when, like, you like my post, you're actually creating a JSON file in your folder under blue sky likes that, has a link to a post in my blue sky posts folder in my repo. It's kinda like a web of JSON with links. And so this is this is, like, what happens on the hosting layer is it's like the source of truth for, like, everybody's stuff that we created that is, like, available publicly, you know, with no permission, it's just it's just like, you can just you can just, like, grab it as as JSON and explore it. And then, all apps listen to events from all hosts.
Guest 0
So this is how you actually update your database. Right? Because, like, apps, you know, you don't want to go to a thousand hostings to, like, calculate the number of flags. Like, that would be stupid. And and if we're in warp, right, it's too slow.
Guest 0
So what happens is that, actually, all events are being streamed into all apps, like, through WebSocket.
Guest 0
And on your WebSocket listener in the app, it just puts it into your database.
Guest 0
So you just filter out, you know, stuff that is the data that is relevant to your app. You Node, like, the Blue Sky server listens to Blue Sky events about Blue Sky records, and, like, Tangled Vercel listens to events about Tangled records.
Guest 0
And some of them may actually, like you know, they may also care about something else. Right? Like, Tangled could decide to listen to Blue Sky follows and put the Blue Sky social graph into its own database and then show me what my, you know, friends are pushing to to Tangled.
Wes Bos
So it's kinda like they they all can see each other's And it's at that app level where you would implement, like, an algorithm or, spam protection or or any of that stuff that that people would like. Because I think people coincide, like, at protocol with the people that are like, remember the good old RSS days where you just had a list in chronological order? You know, you see that on Instagram as well. People are like, just go back to photos and show me the people who I follow. And people say that, but I I think that what the data shows of people actually doing you probably Node. You worked for Facebook. People Right. Like to consume the algorithm a bit more. That's why every single app now has a a for you page.
Guest 0
Yeah. Yeah. And in that sense, I think, like, I really like RSS as an analogy because, you know, there's like, in a sense, like, RSS gives a sense of ownership over content. Right? Like, I publish like, the source of truth is really, like, on my site or in my like, in that part, you don't have to have a site. Like, the hosting is kind of, like, a behind the scenes. Like, it's kind of more like Dropbox per user.
Guest 0
But it's really, you know, like, it's it's the source of truth for my stuff JS just this JSON that lives somewhere, like, wherever my hosting is.
Guest 0
And then apps are downstream from that, and it's a that's a CSS and Google Reader.
Guest 0
Right? So, like, sources of truth is like like RSS. It's like hosting.
Guest 0
But then there are apps like Google Reader that can aggregate it into their own databases, do, like, algorithms, do recommendations, do global search, and so on. And so in that sense, like, app Scott is really like a normal app. The only difference is that the database is not the source of truth. It's like it's where stuff gets synced.
Guest 0
So it's really like between the database and the, you know, the client, it's a normal, it's a normal web app. But the database itself is actually where the data is flowing from the open Wes. Kind of like, you know, the Google back end actually subscribes to all RSS feeds, and they just you Node, they they used to go there as as, like, a stream.
Scott Tolinski
Yeah. So that tracks those every in that same regard, is everything on our protocol public?
Guest 0
Right now, yes. So it's it's currently focused on public data consumption, so in aggregation.
Guest 0
So everything that they put there is public.
Guest 0
There's actually, like, a really nice tool called p d s dot l s, personal data server, p d JS, and then dot l s like Unix Wes, you know, list files.
Guest 0
And you can go to that tool, and you can input any handle, and you can literally see, you know, kind of, like, index of a server. Like, you can see all the folders. So you can see what's in your hosting for your user, like your kind of JSON records.
Guest 0
So that is all public for everyone.
Guest 0
They're working to, like, extend the protocol for, kinda protected or, like, closed, you know, like, closed to like, not closed accounts exactly, but kind of, like You think, like, DMs or something. Right? Not exactly like DMs. DMs is, like, p two e is the best thing for that. So which is, like, a completely different Bos. But, you know, there are already good protocols for that.
Guest 0
But they're working on, like, extension of protocol for things like closed groups or, you know, forums that are closed and so on. Mhmm. But it's it's like a separate thing that is still being worked on. It's it's like it's not out yet. Yeah. Let's talk about that JSON a little bit more because, like,
Wes Bos
the, like, tech guy in me wants to be like, yes. We have a standard, and it is the same, and you can everybody publishes on this beautiful standard, and it works. And and then you look back at at the past. I'm thinking about, like, Jabber or XMPP.
Wes Bos
This used to be a standard way to chat, and you could have different servers, and you could chat with everybody. And everybody had their own I'm apps, and you could chat because it all worked on the Jabber protocol.
Wes Bos
And then very slowly, they all got rid of that because they wanted to do, like, reactions, and they wanted to do images, and they wanted to do inline videos. They wanted to have groups and filtering and all of the stuff, and our podcast as well. Like, most people listen to the podcast now on Spotify, and it's in the Spotify, they give you an RSS feed, but it's not done via RSS because they wanted to integrate video into it. And the the RSS spec didn't didn't support that for the for the longest time. And it just seems like every single time we have one of these standards, we eventually just drift away from it because you want to do things that is past that. So the is there some sort of schema that can help morph what the actual data looks like?
Guest 0
Yeah. So the product itself, it's app agnostic.
Guest 0
So it doesn't, you know, it doesn't try to spec what I think is, like, a mistake a lot of these things do is, like, try to specify what a post is or, like, what a comment is.
Guest 0
And so, like, it product doesn't try to do any of that. It gives you, like, a language for schema definitions.
Guest 0
So instead of specifying, like, you know, trying to get everyone to agree, like, how many characters there should be in a post, instead, it lets every app developer define their own types.
Guest 0
So you can say, like, you know, my blue sky like, blue sky says, like, a post is an object with, like, a text field that's at most 300 Unicode, like, segments or whatever, and, like, you know, like, a language field and created that date time field. And it's kinda like TypeScript definitions.
Guest 0
They're written in JSON, so it's it's not exactly TypeScript.
Guest 0
But there's, like, you know, there's tools for the or, like, LLMs are actually really good at writing this JSON now. It's called lexicon, like, this this format.
Guest 0
But this lexicon definitions, there's, like, tooling that CodeGens, TypeScript TypeScript, parsing utilities.
Guest 0
So for any format that you define, you get, like, a fully typed, you know, blue sky post or tangled repo or, like, leaflet blog or whatever, you know, object that that that is, like, fully typed and can parse the JSON.
Guest 0
Yeah. And so and all the, like, in the user's folders or repositories, as they're technically called, all data is broken down into folders that are, again, like, per type.
Guest 0
So each application can define their own types, and then, that means that, you know, like, blue sky post can be different from some other app post, and, you know, they they can just keep using completely different data formats, kind of like file formats, right, and extensions. Like, you can just define your own for your app. Make your own. It's also interesting to say, like, some apps decide actually to standardize on the same one. So there's, like, an example where multiple blogging apps in the atmosphere decided that they want to keep, their social graph unified so that they're you know, they have, like, a reader. Each of them has, like, a reader page, kind of like Google Reader. And they were like, it'll be cool if you could follow a blog from the other app, right, that but it still shows up for you in the reader.
Guest 0
Mhmm. And so they kinda standardized on okay. Let's use the same lexicon for, the publication itself so that we can have, like, a brand color, for example, like a theme there, the publication name, the author, and so on. And let's also standardize for subscriptions, so how you follow each other is the same data format, and posts or, like, you know, declarations. Like, here's here's a post.
Guest 0
And so this is like, now they all kind of can show, you know, can show or, like, link to post from each other, like, aggregate posts from each other. And you can actually even if you don't use any of those blogging platforms, you can, like, use tools that integrate with your SSG or whatever you use for your blog and also publish records in that format, and then it will they will also show up in these apps, which is kind of cool. Like, it's and it's kinda like a standard, but it's grassroots. It's just, like, three developers came together to, like, unify their data model, and then, like, other apps Wes starting to use that.
Scott Tolinski
And and where do people find out about those particular patterns showing up? Is it is it all buried away in Discord chats and, repos somewhere? Is there because I I mean, on the at protocol at proto.com, there's a lot of stuff. But, where where are where are people finding these standards to, or, I guess, shared standards, I suppose.
Guest 0
Yeah. So this thing that I called lexicons, I mean, a lot of it is just on Blue Sky. There's a pretty active Eduardo community JS you might have guessed.
Guest 0
So if you go on Blue Sky, search for Eduardo, like, a few posts, and if you if you use there's a very good feed called for you. So you can it's actually better than the built in, feed called discover that's, like, on Blue Sky.
Guest 0
So if you if you set up this, feed called for you, it's super responsive to likes. So if you like, if you post about it prior, you'll start getting, you know, a lot of community discussions from, like, people who are active in the community. Yeah.
Guest 0
But there's also, like there's actually a site called, UFOs, you know, like, unknown unknown flying objects.
Guest 0
If you Google, UFO lexicons, you will find that site. And it has, like, a graph because it listens to all events on the network.
Guest 0
So it shows, new lexicons that are trending because it watches all the record creations. So you can see, oh, you know, like, like, currently, like, what's Scott, there's any sorta progress.
Guest 0
So this is like a an active lexicon today. And any sort of JS like a blue sky client with its own some kind of, like, gamify gamified, like like, you know, I I'm I'm not actually sure what the feature JS. But, essentially, it means that, like, there's been a lot of record creations for this data type this week or, like, today. Okay.
Guest 0
So that's another way you can find out that, like, something's happening.
Wes Bos
Okay. So, like, the the top things that are happening right now in the entire graph of app protocol is a blue sky like, number one. Right? Second one, a standard document. Third, certified profile.
Wes Bos
Pozmo streak, study Scott, teal play, flashes post.
Wes Bos
That's kinda interesting. You can see what everything that's going on, but these are all just made up. Right? Like, blue sky had to make up the the like. Yeah. You can you can make a Wes Bosch.
Wes Bos
Explosion.
Guest 0
Node. Yeah. Yeah. Whatever.
Scott Tolinski
I I think, like, people would often get the wrong idea about blue sky because, like you said, they they have these assumptions about it. But, like, the fact that you can just kind of create your own algo, you know, or subscribe to a better for you. Is that's such a killer feature of having something like this, a protocol like this.
Wes Bos
What about, like, like, media or data or things that need to be attached to it. Right? Like, obviously, we can do likes and we can post, like, a blog post or whatever there as text. But, like like, one of my biggest beefs with Blue Sky is that there's a 100 meg upload limit to my video.
Wes Bos
Would I just be able to, like, host my own video somewhere and then bypass that 100 meg limit? Or, like, how how do how does media photos, videos get attached to these documents?
Guest 0
Yeah. I think I mean, you know, like, one thing about it, Prado, is that it's you can take as much of it as you want or as little as you want. Right? Like, nobody Yeah. Forbids you from you know, you could use it just as identity layer, but, like, all the actual stuff lives in your database.
Guest 0
So this is kinda like, okay. This, you know, this doesn't this this isn't, like, in the spirit of, like, full ESLint product, but it you know, it's like a step.
Guest 0
And there are things that don't, like, protected data that, like, aren't even a part of the protocol yet. So, like, you would have to store it separately, like, in your database or whatever.
Guest 0
And so this is kinda similar. So there's there's a built in thing in the product for media, with the which is, blobs.
Guest 0
So in your repository or, like, alongside with your repository on your hosting, you can store these, like, binary things. Right? Like like like images or videos and so on.
Guest 0
And the, the records, your JSON can reference them by the hash.
Guest 0
And so in that sense, they're, like, a native.
Guest 0
Right? But, again, it's it depends on your hosting. So, like, your host might not be happy with, like, storing gigabytes just for your Vercel because it's much bigger than JSON. Right? Yeah.
Guest 0
So I think this depends. Like, one way is, like, maybe some hosts would allow you know, specific, like, video oriented things, like, would allow larger storage. Maybe it's, like, a paid thing, but I, you know, I don't know the business models of, like, storing videos. So I I can't say how this usually works.
Guest 0
Another option is you just like, I think you just store it somewhere separately, and then your record is just you know, it has, like, HTTP link or some kind of ID.
Guest 0
And, like, maybe that is, like, not on the protocol, or maybe there's some extension of the product or some other thing that is, so there's there's a project called Stream Place that is, like, at the product Twitch.
Guest 0
And I think they've been they've added support for VOTS.
Guest 0
So I think they've been thinking about it. I I just don't know what's the latest on this, but,
Wes Bos
the author of Stream Play is definitely, like, wrote something, like, on their profile about it. That's interesting. It I'm I'm out looking at all of this stuff, and I I think it's always a great idea. And we all on this podcast, we always come back to, like, what about, like, regular people? You know? Because, like, I you look at that video. Like, I don't think regular people are gonna pay
Guest 0
to host their video. Right? You just on Facebook or Twitter or whatever, you just upload it for for free. So clear. I'm I'm not saying that if Prado somehow increases the costs. Right? It's the same like, I'm I'm just saying if you want to host a lot of people's videos, whether you use a Prado or not, you better figure out how you're gonna do it. Expensive. Yeah. Yeah. Yeah. It does. It it's so fun because it feels like this is such an old web kind of idea, but with exceedingly
Scott Tolinski
modern tech, and, like, a modern viewpoint on it. So in that regard, like, it does even to go back to the RSS conversation, it does give me those same vibes and feelings, and it feels like more people who embraced things like RSS should be embracing at proto.
Wes Bos
Do you have any opinions on if this is like, how this interacts with AI or how it intersects with AI? Like, is this good, for this type of thing?
Guest 0
Wes, I mean, I think it's, like, I think it's it's it works great with AI. But for I don't know if, like, Blue Sky users are super happy about it because the you know, there's a lot of, like, anti AI people there. But I think it's, it's kind of like an application web without the need for APIs.
Guest 0
So, you know, if you're building, like like, a GitHub or, you know, you're, like, provide this, like, Wes Npm, maybe, like, you know, if like, maybe it doesn't have all the features or like, then you shut it down or, like, you know, developers at Twitter like, it I don't know. It's like, when I look at this, there was, like, an announcement that Twitter API is now, like, cheaper. And I'm like, why do you guys agree for pay for you Node? It's it's so ridiculous that we've gotten to the point that, like like, we're hostages on the you Node, it's it's it's so embarrassing.
Wes Bos
Here because we had a we literally had a call a couple weeks ago where we're talking about building something to to, like, track Scott.
Wes Bos
And we're like, yeah. The Twitter might be a little expensive. It might be a little expensive to get data about our own posts. Yeah. Yeah. You know? Like, why is this a conversation we're even having?
Guest 0
Yeah. Yeah. So so in that sense, you know, the like, with the product, like, the product was the API.
Guest 0
So if you want to get some data from you know, if you want to get my, like, Blue Sky data, you don't ask the blue sure. You could go to the Blue Sky API server, but the point of it is you don't need to do that. You can just go to my hosting and literally download my repo. And my repo is just, you know like, that's that's that's where my files are.
Guest 0
And the thing is, like, if you want, you can download the entire network. It's gonna be terabytes, but you can like, there's, you know, there's a person who's working on a public archive, so you can quickly access the current version of, like you know, aggregate it from, like, all hostings.
Guest 0
It's called Hubble.
Guest 0
That's that's like this, like, read only archive, that's, like, up to date, and and you can query anyone's data without Node to their hosting.
Guest 0
So that thing is currently being, like you know, it's ingesting, like, all the, you know, all the historical data, like, everybody's everybody's content. And it's like it's gonna be, like, terabytes. But you can actually download the whole thing and, like, crunch the numbers on it or, like, analyze it. Like, you can it's it's kinda like you can download the entire Internet as JSON, put it into your database, and run queries across products.
Guest 0
Right? Like, you you can make, like, a SQL query products and, like, do joins between them. Like, it's Yeah. It's pretty crazy. That's it. That's it. For AI. You Node? Like, AI loves that stuff because it's Yeah. There's a single way to query. Like, agents can, you know, cross correlate things and so on.
Wes Bos
And according to the protocol, I should be able to delete a piece of content in mine, and that will send off a signal, and it you should ripple through, and those things should be deleted as Wes.
Guest 0
Yeah. So it's kind of like if Prodio is very scrape it's kinda like scrape first philosophy where you can't really prevent people from scraping, so you might as well embrace it. And the Blue Sky app itself is a scraper.
Guest 0
Right? It scrapes the everyone's JSON. Mhmm. So everybody's, like, unequal like, NSA is probably also scraping, you know, the entire atmosphere, but that's kind of the deal JS if you put something public, it's equally public to everyone, and nobody can, like, you know, put like, nobody else can, like, start chain charging rent for the stuff you declared as public, but everybody can scrape it immediately.
Guest 0
And so for this reason, like, if you delete something at your host, like, the deletion, is also broadcasted, and the well behaving apps are supposed to, you know, also or, like, you know, there's also, like, legal things. Like, you probably wanna delete, you know, or, you know, I think you you're gonna, like, violate g p GDPR and so on.
Guest 0
Yeah. But, of course, somebody who is, you know, who is not being nice, they can, you know, not honor this deletion. Just like today, somebody who's not nice can, like, screenshot your Twitter pages, like, whenever you post or whatever.
Wes Bos
How is different than, like, Mastodon Wes, like I'm I'm not even sure I totally understand how Mastodon works. You know? I have my threads that are posted out to Mastodon instances, but some people reply, and I'm I'm not able to reply to them because I don't know where they are.
Wes Bos
But, like, this this is not the same thing as Mastodon. Right?
Guest 0
Yeah. It's pretty different.
Guest 0
So the way to think the way I like to think about Mastodon is Mastodon is kind of like it's kind of like WordPress.
Guest 0
So it's it's kind of like you know, it's an it's like a mini Twitter that they can install on your server, and that server is does the entire thing. Right? Like, it's it's like a like a hosted Twitter. So you just you just spun out the copy of the app.
Guest 0
And so you can imagine there's, like, you know, like, if you if there's a copy running at, like, instance1.com, you sign up there. Your account is there. Like, that is that is the Twitter you signed up for. Right? And then, like, if there's another instance, it's completely independent hosting, completely independent app. And, like, if if your friend makes an account there, it's it's like a different service. Like, they have nothing to do with each other. It's just somebody else's app who JS, like, administered by whoever is running it.
Guest 0
And then the problem JS, like, okay. First problem is, like, your your identity is actually inside that app. Right? Like, if if somebody removes that server from the Internet, like, you're, you know, your account like, your identity was there.
Guest 0
So it's it's kind of, like, it's not really like a network. Like, I think of it as similar as to, kinda like kingdoms in, like, ancient China or, like, you know, like, fiefdoms Wes, like, you belong to this clan or whatever. Like, there is, you know, there JS, like, part of the map that is that is, like, your instance.
Guest 0
And then maybe if if your friend lives somewhere else, like, these instances have to talk to each other. Right? Because if I follow you, but you're in another instance, what happens is this there's, like, copies of Twitter Scott sending, like, emails to each other in a sense. Right? Like, they like, activity pub is kind of like like a mailbox, abstraction Wes you like, these instances start messaging each other and Sanity, actually, like, Wes has posted, and, like, this instance was interested in, you know, in somebody here follows him, so I'm gonna send, like, really all Wes posts here. So you have this, like, n squared divided by two connections between instances where they, like, send stuff to each other that, you may have missed. But it's very fragmented because like, even if you try to, like, patch it with, like, loading stuff from other instances or, like Yeah. You know, assemble it, like, Node it's kind of you know, it's it's many apps that are disconnected that try to sync to each other via email JS like my my kind of mental Node.
Guest 0
And every and you're tied to a specific one. And, like, for example, if admins of one instance decide to have beef with admins of another instance, they may just stop sending messages to each other, and then you're not gonna not gonna get your friend's posts.
Guest 0
Right? Because, like, your friend is on another instance, which is super weird. Right? Like, it's Yeah. Yeah. I just found that that disconnect to be super
Scott Tolinski
odd trying to, like, pick which instance I was going to join, where my account lives. It was, like, immediately like, this is what's supposed to upsurf, usurf Twitter, like, this this experience? Like, no one's gonna no one's gonna latch on to this, where, I think blue sky people can be unaware of the protocol behind it and still get a Twitter like experience out of it, which is one of the the pros of that
Guest 0
design. Yeah. Yeah. That's that's like, the the paper that they pnpm you know, with the first version of the protocol is called usable decentralized social media. So that was very much a constraint that, you know, behind the scenes, you know, there's this, like, credible exit. There's this, like, app agnostic hosting that, like, can change at any time.
Guest 0
But from the user perspective, you interact through apps, and developers can build other apps, you know, either have better, like, projections of the entire Internet, but filter down to some specific type of content.
Guest 0
But, like, from the user perspective, it feels like the same Wes, except that you have you know, you can see stuff from other apps. Like, the boundaries between apps dissolve a little bit and, like, stuff from one app can appear in another app, if that makes sense to, like, developers of both.
Scott Tolinski
Yeah. Yeah. And and, I mean, I the anytime you hear the word decentralized or any of that, like, you instantly go to crypto, I mean, are there lessons from crypto here? Is there any any connection at all?
Guest 0
Well, I like to think of a product JS, like, Wes three, the good parts.
Guest 0
But the good parts, you know, not not not a lot.
Guest 0
I think the, like, the closer like, it's, you know, it's crypto in the sense of cryptography.
Guest 0
So the lessons are it's kinda like one failure or, like, maybe not failure of CSS. But if you want to scale a network that JS, you know, like, all these, like, hosts and the data flows to the apps, you want to have intermediate Node. Like, you want to have this kinda retransmitters, like relays, which makes it easier to, like as an app developer, like, I just want to listen to one WebSocket that tells me about everything that's relevant to my app so I can just feed it into my database. You know? Like, I want it to be simple. I don't want to think about crawling or subscribing or whatever. I like, I just want to listen to one WebSocket.
Guest 0
So that is you know, some somebody can run a service like this. So, like, Blue Sky runs one. There's a bunch of independent ones.
Guest 0
But how do you trust that it's not, you know, it's not lying about the content that's flowing through it? And so the solution is kinda the same as in Git. Right? In Git, you can sign commits.
Guest 0
So, the signature travels with the like, the the data itself contains enough information that you can verify that it was actually signed by the person who's, like, public key you know.
Guest 0
So that is how, like, the some lessons TypeScript like, cryptography is really that the content like, the event stream is signed.
Guest 0
But in that sense, it's closer in lineage to, maybe Git or, you know, like, I don't know, BitTorrent or, like, some of those other things that are not about blockchain.
Guest 0
And the only thing that is may because, like, in I think, like, people try to build social stuff on blockchain, but it's super inefficient because there's a bottleneck of, like, every ride JS, like, an append to a single kinda shared queue.
Guest 0
Yeah. But this this is only this only makes sense when you have a when you have requirement that, well, first, like, everything is append only. So if you put some bad stuff there, like, it's gonna be there forever.
Guest 0
Another problem is that it's, well, it's very inefficient.
Guest 0
And the I think the big insight for for our developers was that, actually, you don't need global ordering on the event log.
Guest 0
And if you drop the global ordering constraint, like, everything is in a single queue, it actually becomes just the web.
Guest 0
So the shape of it, Prado, is really, like is decentralized, but it's decentralized in the sense that the web is. Like, when you use a browser, you don't really think about, oh, they're like, I'm accessing a decentralized network. You just click on links.
Guest 0
Yeah. Because this is kinda similar, like, in in that shape. It's a good way to put it.
Wes Bos
Does any of this stuff have anything built like, JS it good or bad for abuse? Because, like, we've seen the bots on all of the social networks. And even to use OpenAI, to, like, codex or whatever, you have to upload a photo of your license. You know? And, like, I I feel like there's more stuff going that way.
Wes Bos
Some will say because of, governments wanting to track you, and and some will say simply just because we cannot stop these bots anymore, and it's getting to a absolutely brutal, brutal point where everything is obnoxious. I just logged on to my Blue Sky right now, and I can see seven or eight kinda obviously AI stuff. So is there anything in this that will, like, help us be able to detect that type of thing? Because I I would think that it would be harder to detect spam and and bots on these types of things when you don't have all of the clues of what browser did they use, how long did they hover Vercel, you know, all of those little fingerprints that these social networks are using to try to detect if you are maliciously posting.
Guest 0
Yeah. That's an interesting question. I'm not sure about you're right, like, in terms of, like, the browser.
Guest 0
I guess, like, at the app level, you you still know that, actually.
Wes Bos
Rather than Yeah. Where it's authored, I guess, you do know. Yes.
Wes Bos
But Yeah. So, like Theoretically, you could post from you don't have to post from the app, do you? Could you just create the document
Guest 0
in, like, a text file? But that's also quite a signal. Like, you know, it doesn't give you a lot, but it is it is a signal that, like, you're not using the main app, right, which is like, okay. Like, you're not doing that.
Guest 0
But I think, like, in some ways, it's it's, like, it's it's kind of I think, like, there's maybe pros and cons because, in some sense, you can pull analysis between apps.
Guest 0
Right? Like, you can look at the okay. What is this, like, identity doing across different apps? And if, you know, there could be kind of community run or, you know, things that are kinda like, just like Node one cool thing about these, like, open social apps is that, you're able to share infrastructure between them because everything flows in the same format.
Guest 0
You can have, you know, shared moderation tooling, shared detection systems, shared caches JS, like, whatever the happens, shared indexes, and so on. So I think that that is, like, maybe the other side of this is that, if, you know, if one app builds, like, some kind of, you know, detection thing for weird patterns of, like, data insert or, like, resources, other apps can agree to also, like, share that or or use that.
Wes Bos
So may maybe that is that is maybe the flu the flip side of that. It can can work really well, and it also can backfire. I run a, Git repo called burner email addresses, which is just a list of domain names that are known, like throwaway emails. And I use it to filter out, like, sign ups and whatnot. And a couple times, somebody's legitimate domain name has made it onto this ESLint, and I've ruined a couple people's afternoons, I'll tell you that, by their email sneaking onto these. You know? Like, some it it gets merged. They download the list, and all of a sudden, somebody can't sign up. Like, an entire school can't sign up for the service anymore.
Wes Bos
Yeah. And I was like, I don't know. I should I wanna be in charge of this anymore. Right. Yeah. But, also, I I I do. Like, there's something to say about, like, a whole community coming behind someone saying, like, Wes. This domain name or this account is known for for high quality posts, and they are not. There's a lot of signals to say that they're good. I don't know what the answer is to any of this stuff. I think I think that's actually, like, another thing that is being tried. I think, like, Tango has a vouching system where you can vouch for another user,
Guest 0
like, as a protocol record, and then, you know, any app can also interpret that. So maybe we will see more kind of vouching in in user land and apps about like, agreeing about the format, like, the lexicon for those vouchers. So we'll we'll see. I don't I don't know what's gonna happen, but I think open just leaves more opportunities to collaborate and post.
Wes Bos
The the even the the follow lists on Blue Sky were huge for that. Just like this here's a list of people that I follow, and I trust these people. And I just click follow the whole thing because I Yeah. I trust the Vercel. Therefore, I trust the people on this list.
Guest 0
Yeah.
Scott Tolinski
Yeah.
Scott Tolinski
So we heard heard a lot about the protocol, but, like, let's talk about some of the work on the protocol. Like, what are some of the cooler things you've seen done?
Guest 0
Yeah. So that's that's kind of what I wanted to talk about is, so because you can define your own formats for data, it actually leads to some interesting, like, interesting things happening that, like, don't really happen in in, like, closed ecosystems.
Guest 0
So one example I I mentioned before is, you know, there were three different blogging platforms on this product. One is called Leaflet, another Offprint, and another, what is it, pocket.
Guest 0
And so they kinda teamed up. You Node? Let's let's use the same format, and then each, you know, stuff from each app will appear in another app. And so this is all standard site. So they, they published it as a format. They called it standard site.
Guest 0
And, this, you know, this this let, like, post appear in different places.
Guest 0
But then other developers started using this format as well. So there's, like, integrations for, like, your blog to appear in the atmosphere.
Guest 0
But, like, if you start undeploy publishing standard site records under your account, then any app that listens, you know, like these blogging apps will see a post. But people also started building, like, more stuff around it.
Guest 0
So somebody built an app called standard reader, which is an aggregator of all standard site records, and it kinda shows, like, you know, what's what standard site, articles are popular, like, in your network. Like, if you log in, like, which of them are being shared by your, like, Blue Sky follows and so on. So it's kinda like Node had to coordinate.
Guest 0
You Node? Like, you you can just, like, build an app and just an existing data on the network.
Guest 0
And then another cool thing was, Blue Sky added, like, a special embed card.
Guest 0
If you share a post or, like, a link that has a standard site record associated with it, it's gonna get, like, a special visual treatment that uses your brand color of your publication.
Guest 0
So it's got, like, a special embed.
Guest 0
That's cool. And, again, like, I think that's like, it's interesting here that Blue Sky app did not need to, like, ask someone's permission to do this. It's just that this data already exists in the open web, so they just started ingesting it and using it in their app.
Guest 0
And I think that that I think that that's, like, one interesting example.
Guest 0
Another example I like is, do you know Last. Fm?
Scott Tolinski
Yep. Yeah. Yeah.
Scott Tolinski
I was on last.fm from, like, day one forever, ever ago.
Guest 0
So there's, there's a, like, a version of that called teal FM, teal as in color, except that the app doesn't actually exist yet.
Guest 0
So it's like a few people's, like, hobby project. So they, you know, they they're like I think there's some private beta might maybe, but the app itself is just like a landing page.
Guest 0
However, they published their lexicon on GitHub.
Guest 0
So there's a lexicon for TLFM play that just represents, like, one scroll, right, like, one play of a track. Like, as the artist name, the track name, and so on. Mhmm. And so people started building tools that, you know, sync your Spotify or Apple Music or whatever, and so and write your TLFM play records to your repo.
Guest 0
And as a result of that, the data for a lot of people is already there. Like, I'm posting TLFM records, when I listen to on Spotify.
Guest 0
And so people started building like, there are third party TLFM apps that show what everybody's like, there's already, like, 6,000,000, I think, like, place across, like, everybody, and they're showing, like, which are, like, popular artists, like, who's listening to what.
Guest 0
But the TelefM doesn't even exist.
Guest 0
Yeah. So, like, it's just it's just kinda weird. Right?
Wes Bos
Yeah.
Wes Bos
Man, it's just somebody created a a schema standard, and people started
Guest 0
pushing out data. And then, like, where JS that data? That data can be stored anywhere. Right? Like, it can be hosted on your own server. Hosting. Yeah. So, like, for example, like, in product hosting, it's a bit weird. Right? Like, when you sign up on Blue Sky, you kinda think of Blue Sky as one thing, but it's really two completely unrelated things.
Guest 0
It's the Blue Sky app and the Blue Sky hosting.
Guest 0
And it's just because they need to bootstrap this whole thing. Right? Because you don't have, like, a Prado. Nobody has a Prado account.
Guest 0
So by default, when you sign up on Blue Sky, you get Blue Sky you're, like, use Blue Sky app, but your at Prado hosting is Blue Sky hosting initially.
Guest 0
And, you know, as a user, you don't care about it. It's just, like, behind the scenes, you get a folder, and Blue Sky is your host. But you can change that to some other host. So I changed it to Euro Sky.
Guest 0
It's it's like a, you know, European based, hosting. Or I could host, you know, I could host it on CloudFlare by myself Okay. Or, like, somewhere else. So it's it's whatever. It's just whatever speaks the, the HTTP and WebSocket, like, a protocol format.
Guest 0
But the point is, like, I still use the Blue Sky app. It's just my hosting like, my JSON lives in a different place, but the Blue Sky app is my kind of entry point into, you know, the prism through which I look at everybody's JSON.
Guest 0
But there are, like, other apps that display content from, you know, blue sky, like, blue sky content and and so on. So it's really kinda two separate things, like the hosting and the apps. And you can always change your hosting, and data from all apps lives in that folder. And you can put that folder, like, somewhere else. Cool.
Scott Tolinski
Yeah. That rolls. Okay.
Scott Tolinski
I I, went from not knowing very much about this, if I'm being entirely honest. I thought it was just the protocol behind blue sky and other things to, having 18 tabs open and ready to, dive in a bit more. So thanks, Dan.
Scott Tolinski
Yeah.
Guest 0
Thank you.
Scott Tolinski
Yeah. So now is the part of the show. If you don't have anything else where we can get into sick picks and shameless plugs, Dan, it's been way way too long, since we've wanted to have you on this show. So this JS probably, if if you don't know, we do a sick pick and a shameless plug where you can pick anything that's cool in your life, something that you're just really enjoying. Could be anything, podcast or, physical objects or anything that's giving you joy. And then, just a shameless plug. Plug whatever you want.
Guest 0
Yeah. I haven't prepared. I forgot that this is a thing.
Guest 0
For sick picks, I'll choose I've been I I've been listening to some jazz lately, and, like, I used to think that I hate jazz.
Guest 0
And I think I think, like, mostly, I still hate it. Like, I I I don't like most of it, but I I really got into Thelonious Monk and especially especially, like, his solo piano. Like, there's, like, a solo piano album and solo monk, I think.
Guest 0
But, like, they're actually really good. Like, I'm I'm really enjoying them. So,
Wes Bos
that that will be my what is it? Sick pick? Or Your sick pick. Yeah. Check out your t his his teal FM.
Wes Bos
And, yeah.
Scott Tolinski
Got some solo monk on there. Yeah.
Wes Bos
Cool. And the plug, what would you like to plug to the audience? Like my own thing?
Scott Tolinski
Yeah. Yeah. Anything you want. Yeah. Something you're working on. Something you, want other people to check out. Well, I'm gonna okay. So this is this,
Guest 0
because I'm I'm I'm doing my job. But no. Like, actually Yeah. We're gonna release next 16.3 soon. I hope soon, but there's, like, there's a preview for it.
Guest 0
And it's actually, like you know, I like, I I like next programming model, but, like, I'm I'm a very frustrated user of next because it's been, like, you know, hellish, slow, and kinda buggy in a lot of places and so on. And so the team is, like, working super hard to fix it.
Guest 0
But one thing in and there's so there's a couple of things that I'm, like, excited about this release. One is that the dev server is not as memory hungry anymore.
Guest 0
And because they just added, like, cache eviction to disk.
Guest 0
So it's like for some cases, like, 20 gigabytes goes down to, like, two gigabytes. Oh, man. It's like 90% improvement, which is Wow. Kinda wild for, like, longer dev sessions.
Guest 0
The other thing that I'm excited about is a new feature called instant navigations.
Guest 0
And that is there's something like opt in, but there's, like, a skill that helps you opt into it. But, essentially, it lets you assert that, it doesn't let you Node, you have to be intentional about anything that blocks the page from loading and, like, it's not instant. And so it kinda forces you to like, if you if you follow its suggestions and, you know, fix the code or, like, let your agent fix your code, then it guarantees that navigations between pages in the Next. Js server app feel like a spa. So they're kind of ESLint, you know, clients, like shells that feel immediate. There's, like, a bunch of features, like, we're building around that.
Wes Bos
But yeah. Cool. Is that is that have to do with where you put your suspense boundaries, or is it a bit more next specific?
Guest 0
Okay. It's essentially it it just forces you to kinda push things down enough to let it generate a reusable shell shell.
Guest 0
Yeah. So that it can just it's it's kinda like in the Scott, you know, the part of the route before you first use Node whatever.
Guest 0
Right? It's it's like this generic thing that doesn't know what it's loading yet.
Guest 0
So that is what, like, next extracts automatically as as long as you push suspense a bit down or you, like, slap or use cache on the content so it can kinda show it immediately and cache it on the client.
Scott Tolinski
Beautiful. Check.
Wes Bos
Or you can say that you're okay with blocking and then, you know, it's it's like a slower load, but you're intentionally Yeah. In some cases, you would be okay with it. Man, I'm stoked that you are working on Next because, yeah, I've got some qualms. I'm a big Next fan, but I've got qualms. And I'm stoked that you're gonna kick down the door and, I think, fix some of these things. If you ever wanna come back and and talk, react, and whatever, I'm sure, people would enjoy that as well.
Wes Bos
Cool. Thanks so much for coming on. Appreciate your time, and, we'll catch you later.
Guest 0
Thank you for having me. Thanks, Dan. Peace.