We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode Episode 129 - Web3.0: Breaking free from the Client Server Model with Michelle Lee

Episode 129 - Web3.0: Breaking free from the Client Server Model with Michelle Lee

2022/3/15
logo of podcast Programming Throwdown

Programming Throwdown

AI Deep Dive AI Chapters Transcript
People
M
Michelle Lee
Topics
Michelle Lee: 我从科技与人的交叉领域开始了我的职业生涯,对软件设计的快速迭代和系统设计产生了浓厚的兴趣,最终专注于人机交互和系统设计。在Google期间,我参与了Google Forms的设计,通过将数据收集方式从共享表格转变为表单,解决了用户在共享表格中编辑冲突的问题。在Code for America的工作经验,让我对利用软件简化政府服务和改善人们生活产生了浓厚的兴趣。开源的真正力量在于多方参与代码审查、审计、复用和改进,从而提高安全性。Web 3.0 的一个核心原则是不信任任何人,并利用数学来重建网络信任。IPFS 使用内容寻址系统,通过对数据进行单向数学函数运算生成一致的内容 ID,确保获取数据的可靠性。IPFS 通过内容寻址系统和点对点网络相结合,实现数据在全球任意节点间的传输,提高网络弹性。IPFS 通过内置垃圾回收机制和节点内存分配来处理冗余内容,用户也可以通过自建节点或付费服务来确保数据持久性。IPFS 和 Filecoin 共享基于 IPFS 的内容寻址系统,但 IPFS 的存储是完全自愿的,而 Filecoin 通过区块链技术和激励机制来确保数据的持久存储。可以使用IPFS构建完全去中心化的Web应用程序,前端资产存储在IPFS上,后端逻辑可以使用智能合约或标准应用程序逻辑。数据代理简化了IPFS和Filecoin节点的交互,为开发者提供易于使用的API。对于大多数应用开发者,IPFS存储服务是免费的,随着数据流行度增加,获取数据的成本会降低。Brave浏览器已经支持IPFS,用户只需在设置中启用即可。IPFS 的隐私保护可以通过在上传数据前进行加密实现,用户可以使用去中心化身份进行登录。IPFS 的内容审核机制分层进行,协议层不控制内容,服务层可以对违规内容进行处理,协议层也允许存储提供商定义其存储策略。学习IPFS和Filecoin的最佳途径是通过proto.school的互动教程和参与hackathons。Audius是一个去中心化的音乐网络,其数据存储在IPFS上,并由节点网络提供服务,对艺术家友好。Protocol Labs致力于研发和部署新的Web技术,IPFS是其早期项目之一,并与其他社区和团队合作改进这些技术。Protocol Labs是一个完全远程办公的公司,在全球多个国家都有员工。学习IPFS和相关技术的资源包括docs.ipfs.io和nftschool.dev,以及IPFS的Discord社区。我致力于构建正确的构建块和文化,以创建一个真正健康的未来网络。 Jason: 我对Web 3.0和去中心化技术很感兴趣,希望了解如何构建更具弹性和安全性的网络应用。 Patrick: 我关注Web 3.0的应用场景和发展前景,特别是如何解决现有Web 2.0架构的不足。

Deep Dive

Chapters
This chapter introduces Web 3.0, contrasting it with the traditional client-server model. It explores the concept of building trust through mathematics and the role of open source in this new paradigm. The discussion also touches upon Michelle Lee's career journey and her involvement in projects like Google Forms and Code for America, highlighting the evolution of her interest in human-computer interaction and decentralized systems.
  • Web 3.0 aims to rebuild trust in the web using mathematics
  • Open source is crucial for Web 3.0's transparency and security
  • Decentralized systems enhance resilience against outages and single points of failure

Shownotes Transcript

Translations:
中文

Programming Throwdown, episode 129. Web 3.0, breaking free from the client-server model with Michelle Li. Take it away, Jason.

Hey, everybody. How's it going out there? Super, super excited to have Michelle Lee, who's the developer advocate and ecosystem growth at Protocol Labs. She is going to tell us all about Web 3.0 and breaking free of this client-server model. So we talked in the past episodes about things like

things like microservices and how to stand up a website and things like that. But all of these things kind of sit in this central location. And so one of the things that I've always wondered is,

What if we all kind of got together? Could we host a website just with our community? And so it's something I've always been really, really fascinated about. Admittedly, I don't know a lot about it, but we have someone who does know a lot about it. And so thanks so much, Michelle, for coming on the show. Thanks, Jason. Thanks, Patrick. Great to be here.

Cool. So before we dive into the topic, why don't you tell us a little bit about, you know, what is your journey that led you to Protocol Labs? And what does that story look like? Sure. My background was always at the intersection of technology and people. So I initially wanted to be an architect. And when I took like an architecture 101 course at university, I

the university lead architect was showing us around some projects and he's like well this project we started 11 years ago and we're breaking ground now and me in my short 18 year old life was like that's two-thirds of my lifetime I can't wait that long what can I work on like what kind of systems can I get involved in creating and designing that are going to happen a little bit faster and so I got drawn to like mechanical engineering product design and eventually software design

because you can iterate like overnight in your dorm room or quickly over the span of a few weeks or months with a small team. So that was what drew me to software in the first place. And then I was always interested in

like what is causing these bugs that are showing up in my browser or my you know at the time it was desktop apps like what's the logic behind that and so learning about computer science eventually learning how memory works for example and like why these characters get skipped or what you know why bugs or outages happen drew me further and further into like the design of systems so I ended up studying human computer interaction working at Google for quite a while

on maps and docs. Inventing Google Forms is kind of one of my claims to fame from that time. Wow, really cool. So wait, let's dive into that a bit. So what is human-computer interaction for folks out there?

Oh, gosh. It is kind of the amalgamation of cognitive science, so how people perceive language and patterns. Computer science, like how software is built and developed. Cognition, like what happens in people's brains. Interaction design, visual design. Really fun interdisciplinary space. Wow, very cool. So would you say the sort of, what's the connection between that and

like the user experience, you know, is that related? Is it about making better user experiences? Absolutely. Yeah. A lot of people who study human computer interaction go on to work in user experience, user research. I think a layer that's been added on since my time in school is, is,

is like understanding what's the relationship between a focus on maximizing the experience for an individual user and understanding its impact on society. For example, if you try to get me my groceries as fast as humanly possible, or try to get me from point A to point B as fast as humanly possible, what are the externalities of that in social networks, social systems, things like that. So yeah, absolutely. It was a really, really fun field to study.

Very cool. And so you studied that and then were you in HCI at Google? What's the connection between that and the Google Forms? Yes, I was in user experience at Google. Got it. I see. And so actually, oh, Google Forms. Now it's all coming together. So Google Forms is the survey type thing where you can send it out, folks can respond. And then I've actually, to be fair, I've never used it, but I think you get some kind of maybe backend where you can see all the responses.

Yeah, it's piped in directly to Google Spreadsheets. And I think that's the magic. And that's where it all began because we were having trouble. Users were reporting problems online.

understanding how the sharing function worked because they were trying to share spreadsheets and get lots of like thousands and thousands of people to contribute data to shared spreadsheets so that people who are managing processes or systems could aggregate all that data and do things with it. Right. And when you hit the sharing button and ask, you know,

25 emergency room doctors to fill in their schedules or 500 university students to add their class data, you end up with editing collisions, people overwrite stuff by accident. And we realized like, instead of making the share button easier to use, why don't we step back and think, well, only one or two people need to understand the whole data structure behind, you know, in this spreadsheet. Most people are just contributing one row.

So we turn it into a form and get input that way, keeps it really clean and lightweight. You don't have to mess around with permissions for the majority of users. And then the people who actually need to manipulate the data once it's in still have the permissions that they need. Wow, that is super cool. And so what was your role there? Were you the one who had the light bulb go off or...?

Yeah, I was the designer sort of beating my head along with some other colleagues. I'm like, how do we make this sharing thing simpler? And then another project I'd worked on, actually my very first project there was getting user feedback for Google checkout transactions, if anyone can remember that, through emails. Yeah, and I think we found like a 70% increase in response rate if you just embed the form elements inside an email rather than asking people to click on it separately.

So we did that as well. We embedded the form for a long time, embedded it inside email, which made things a lot easier for some people, but also was imperfect because email clients all render things a little bit differently. Right, right. Yeah, I've definitely been on the other end of that where I've seen a Google form embedded in email. And sometimes, yeah, there's some wraparound issues and things like that. But to your point, it's so much more convenient. It's amazing, actually, the inertia of a click.

You just see study after study after study about, oh, if I have to make one more click, I lose-- if my users have to make one more click, I lose 20% of the users. It's unbelievable how important that is. Absolutely. And so I worked with the user researcher Andrea Knight and developer Andy Bonds, who now works on the Go team, to build out the first prototype. And yeah. Cool. Cool. So what did you do after Google?

After Google, so I started volunteering with a group called NY Cares. I was living in New York City at the time, and we were helping people with low income file tax returns so that they could gain access to all the tax credits that are available through public programs. And I

I think we got eight hours of training for it through this, you know, for this tax filing program. And then we were like unleashed into these programs or, you know, once a week for two months before the tax filing deadline, we would help families like compile other paperwork, submit their stuff. And then at, you know, after a 25 or 30 minute appointment,

be able to go back to them and say, hey, you've actually, you're going to get a tax refund of $4,000, which is, I mean, if your household income is $14,000 for a year, that's huge, right? But these people were, these families were like waiting in line. Their kids were napping on the floor. They had to wait a really long time to see us.

And at the same time, like, we didn't have any tax expertise, really. We had some light training and we had some software that we weren't afraid to use. And if you can make that software really accessible to lots of people, make it much more approachable, maybe make it mobile friendly, you know, people could do this at home, right? So...

I felt it was like, you know, wonderful, but a little bit pointless for me to be there as the intermediary. And I got interested in, you know, how can I help, how can I work on software that makes government services a lot easier, makes people's lives a lot easier. And I went to South by Southwest in Austin and heard a talk from Jennifer Palka, who was just getting an organization called Code for America off the ground and ended up being so drawn to that, that I, uh,

left my job at Google and went to work at Code for America for a year as a fellow working with local governments to try to make communication and processes more human, more easy to use with software.

Wow, that is amazing. I actually have been in Austin for, let me see, what, maybe two years, almost two years now. And there's never been a South by Southwest because I moved right as the pandemic started. And so I actually haven't been able to go to South by Southwest now that it's right in the backyard. But I'm really looking forward. Do you know if it's coming back this year?

Yes, it is. I think it's a hybrid model. And Protocol Ads is actually going to have a big presence there hosting some fun events. So, yeah. Oh, very cool. All right. Do you remember? I actually forgot what time of year it is. It's been so long since they did one. It's in March, so it's coming up pretty soon. Oh, man. Okay. Very cool. So, yeah, when folks get this podcast in their hands, it'll be very close to South by Southwest.

Cool. That is awesome. So, okay. So what is Code for America? Oh, you said it was, it was a way to help governments become like a little bit more user, user friendly. Yeah. Code for America was founded with the mission of bringing modern web technology to, to government.

And it's been an amazing organization, had a big influence in shaping some of the programs happening at the federal level as well. The 18F Technology Transformation Service, all those programs kind of are part of the same movement. And speaking of Web 3.0, this is Gov 2.0 was the name given to a lot of these programs.

Yeah. And in some cases, it was bringing in amazing tech talent from Silicon Valley. In other cases, it was unleashing and helping break red tape for some of the amazing technologists who are already working for government. But connecting all sides and also connecting to program administration has been really, really exciting.

important movement, I think, in making people's lives easier. Very cool. So when did you start, you know, getting excited about, you know, Web 3.0, about, you know, distributed serving and, you know, Filecoin and IPFS, all these things we're going to talk about. When did you really start getting into that and what sort of sparked that for you? Yeah.

The vast majority of Code for America's work and Gov 2.0 work was done in the open. So big change from the past. Open source software, modular components, very transparent to people and easily reused across states or municipalities.

the open data movement was a big part of that as well. So I think for me, when I started hearing about IPFS and the open web, this movement

pull back towards the founding principles of the internet as a, you know, as an open and decentralized way to, you know, connect knowledge and people across multiple destinations. I think it was philosophically, you know, really aligned. Yeah, that makes a lot of sense. I think that, I mean, you've heard this a lot, Mike, you know, I'm just, I'm kind of projecting here, but I've heard from a lot of other places that

Oh, if we open source or if we tell people what's going on, then bad people will exploit what we're doing. I feel like it's a very interesting argument to make.

And there's a nugget of truth there. But I think on the flip side, I feel like it's kind of a pessimistic way of looking at the world, really, right? There's this idea that if I put something open source, there's going to be more bad people than good people looking at it. I feel like that's kind of the fallacy there, I think. And so I think it's really cool to see government and

and other kind of places, you know, moving to open source models. And that way it's like, you know, the vast majority of the people who put their eyeballs on that are, you know, are looking at it in a benevolent way. Yeah. And open source is like, technically speaking, putting your code, making your code available on,

on the web and putting an open source license on it is making it open source. But I think the real power of open source is when you have multiple parties like reviewing it, auditing it, you know, reusing it and sort of like battle testing it and feeding those improvements back into the main code base. That is the power of open source to make things, you know, available and transparent and even more secure.

Yeah, definitely. Okay, so let's really dive into this. I guess, on the surface, what is Web 3.0? Yeah, I think there's a great transition from what you mentioned, right? Web 3.0, one of the principles of Web 3.0 is assuming that you can't trust anybody on the web, how do you build trust back into the web with math?

So IPFS, which stands for Interplanetary File System, has two basic building blocks. The first is that instead of an arbitrary file name, like you might name this episode podcast.mp4 or whatever, but you might forget and name it podcast5.mp4. You might accidentally download six copies of it and call it podcast.mp4.

podcast-1 or podcast-final or podcast-final-final-final. Yeah, we've definitely done all of that.

Instead, what IPFS does is it takes your data and it runs it through a one-way mathematical function, has a passion function and gets a consistent content ID out of it. So it basically is creating a fingerprint of your data rather than letting you make arbitrary names. And so that means when you ask for content by that fingerprint, you're guaranteed to get it.

And that actually frees up all sorts of different network designs, because now if you're guaranteed to get the data you asked for, you can get it from anyone. You can get it from your, you know, from your neighbor down the street. You can get it from the research university across the globe, right?

This is what enables peer-to-peer networking to pass data around the web. So that peer-to-peer networking is the other big principle behind IPFS. So you combine this content addressing system with peer-to-peer networking where any peer across the globe, you know, join a network, they can join any peer, you know, find any few nodes and then those nodes in turn connect to the rest of the network.

And so instead of getting data from, you know, any single server, you can get it from any peer or through any connection, you know, any pathway of peers. And that makes the network really resilient as well. Because if you remember, you know, every once in a while there's giant AWS outage and then Slack doesn't work and GitHub doesn't work and you can't pay your electric bill online. In a peer-to-peer world, you know,

If that happens, maybe you have a little slowdown, but the content can find its way to you through other paths. Yeah, let's dive into that. So, I mean, you said a lot of really, really interesting stuff there. I love the idea of using math to bring trust back into the web. I think that's really fascinating. This is something that is really foundational. A lot of folks say,

Even just if you're in a community, a social community out in the real world, how do you achieve consensus? And a lot of people understand kind of voting on issues and all of that. So the idea of sort of democracy and voting and rationality really resonates with people. But then you can say, well...

You know, on the surface level, if I do that on the Internet, like if I make a poll on the Internet, what's to stop someone from just writing a bash script that says, you know, four eyes, one to infinity, you know, submit my vote. And then that person now has so much more power than someone else who's clicking by hand. Right.

And so, yeah, it's a really good point. From what I understand, basically the math operations require computers to do work to prove that they are invested in this vote. And so that time ends up being your sort of investment. Is that kind of a way of saying that?

Yeah. And that's so crypto, which is like pretty common in parlance these days, comes from cryptography originally. Right. And so the cryptography, the math that enables all this stuff is, you know, continues to be

critical to how these systems are designed. You talk about computers having to do work. There's two kinds of consensus systems, broadly speaking. So there's proof of work, which you have processors like racing and racing to do the most math to win the next block. That's how Bitcoin is designed. But the current generation of blockchain networks are primarily proof of stake. So how much are you contributing to the network? And that's...

that's how Filecoin is designed. So nodes on the Filecoin network get votes based on how much storage, how much useful storage they provide. And this is much more energy efficient and just generally makes a lot more sense because what we wanna do is like create underlying value, right? We're not doing math or running CPUs for the sake of running CPUs. We're doing math, doing this cryptography,

to enable fully decentralized and secure storage system in this case. Got it. I see. So if you're making, let's say, a YouTube clone or something, then people would get more votes if they created videos that a lot of people wanted. There's a lot of parallels, right? Yeah. Got it. Okay. That makes sense. Cool. And so IPFS is...

where you compute some hash sum or some SHA sum or something of a piece of content. And then there's this distributed key value store that's distributed across the whole universe where the key is the SHA and the value is the content. And so you can go and... That blows my mind, actually, because you have this problem of

There might be a million people who have that piece of content all over the world, and you have to kind of know who those people are and even know which ones are close to you. It seems like a phenomenally difficult problem.

Yeah, I think this these patterns of gossip sub or like decentralized networking are really, really different than some of the procedural stuff we're taught in traditional computer science classes. One of my colleagues, Nicola Greco, did a really fun demo with us at a team offsite a bunch of years ago. He said,

had a room full of people, gave every one of them a little piece of paper with a message and said, hey, just like randomly swap messages until everyone has the piece of paper with their name on it. And it happened so quickly. I think that's the benefit of being able to parallelize all the routing and search. And it was a lot faster than it would have been if we'd like lined everyone up and tried to, you know, organize and sort people through binary sort or something more linear.

Yeah, that makes sense. Yeah. I mean, in math, we have this concept called simulated annealing, where basically you make small changes to something. And if the change is better, you keep it. And if it's not better, if it's worse, then there's a percent chance you keep it. And you slowly decrease that percent chance until you're only keeping things that are better. That's the annealing part. And it works amazingly well. I mean...

If you go to, let's say, the NetworkX library and the Python graph library, and you try and do some NP-complete problems, like you try and do traveling salesmen or one of these things, they'll have an approximation that uses simulated annealing. So it's extremely powerful, but very simple. And I think to your point, it's taking advantage of just...

When you add chaos, as long as you can measure, then adding a lot of chaos actually works really well. In your case, the measurement is, if I remember correctly, once you have the piece of paper with your name on it, then you're done. So you have that sort of measure of the system is better now. And once you can do that, then even doing a whole bunch of chaotic things ends up working really well.

But getting down to the practical part of it, I've done a lot with networking and it's rough. I mean, people have these network translation layers. Some people are behind symmetric NATs and so they can't do much of anything. They can only read. They can't serve anything. Other times it's like you have all sorts of weird situations on the network.

And so how does something like IPFS, you know, handle like the web and how complicated, I mean, we're not on IPv6 yet. So I mean, how do you, how does IPFS, it must be just an insane amount of logic to handle that. And how do you even test something like that, right?

You have to be pragmatic and realize the majority of people still access the web through Web 2.0, but we want to move to a world where that's not required. So today, when you put content onto the IPFS network, if you're accessing that IPFS network through an IPFS node, for example, you download IPFS desktop extension for Chrome, or you're running a node in, you know,

and interacting with it through the command line. If you actually have a node on your computer, which is really easy and fast to get set up, you can get data directly from the IPFS network through this distributed hash table that we just spoke of. But in a lot of cases, I

IPFS is part of a web application or you want to fetch it, and someone who doesn't have those things installed wants to fetch it through a more standard web browser. And in that case, the traffic is routed through any number of gateways. So gateways are sort of like translators between web two and web three.

There are IPFS nodes that say, hey, I speak both Web 2 and Web 3. I speak HTTP and IPFS. So you can ask me for any content ID, append it to like gateway.ipfs.io or Cloudflare runs a really awesome, really efficient gateway as well. And they'll pass the data between HTTP requests and the IPFS network. So you can...

you know, access it through anything. The other big initiative we're doing is we're partnering and collaborating with browsers, both like some of the big browsers of today and also some of the emerging really interesting browsers of tomorrow to build IPFS support directly into the browser. And so your web browser might be able to request data from HTTP, but it would also be able to speak IPFS natively.

Wow, that is so cool. Can you give me an example of what's a browser of tomorrow? I want one of these. Well, Brave Browser is definitely one to look at. And Brave supports a bunch of decentralized. Oh, okay. We've already promoted those. We love Brave.

Very cool. So Brave either does or at some point it will have IPFS support? Has native IPFS support. I think you have to enable it, but has IPFS support. Oh, I see. So there's a setting, you toggle that on, and then you say, I guess there's an IPFS protocol where you pass in the hash? Yeah. So instead of HTTP, just put IPFS colon forward slash forward slash, and it will know how to get that data.

What about like, you know, hashes are these, you know, super long strings that are, you know, really difficult to remember. Is there like a DNS on top of this or something? Oh yeah. There's ENS, there's HNS, Ethereum naming service, Handshake naming service. There are a few naming services that try to put more human legible, you know, names, addresses that you can use as sort of proxies for your IPFS CID. Very cool. And so...

How do you keep somebody from just creating a ton of content and just flooding the hash table with just tons and tons of random or bogus content? I think that can happen on any network, any storage system. And IPFS has some built-in garbage collection. So if data that's less requested over time, the node will just start dropping it when it exceeds its memory allocation.

And so if you want to ensure that the data sticks around, you can run a bunch of nodes and pin it yourself, or you can ask a pinning service, which is kind of like a hosting provider to keep it around. Or you can make storage deals on the Filecoin network to keep it around in that same native IPFS format.

Ah, got it. That makes sense. It's kind of like, it's somewhat a parallel to advertising. Like there's some nodes that are kind of influencers and you would ask those folks to kind of pin your content and that kind of keeps it relevant.

I think that's the design, right? And then if you want to ensure it, you can take other steps. But in terms of data flooding the network, for example, again, it's that because it's so decentralized, because there are so many nodes, it's difficult to force the entire network to pin your data. Right, right. That makes sense. Okay, so what is the difference between IPFS and Filecoin?

Great question. A lot of people want to know that. So IPFS and Filecoin both share this IPFS-based content addressing system. Now, IPFS pinning or storage is fully voluntary on the part of the nodes. Because it's peer-to-peer, there's no centralized entity. There's no way to guarantee that that data is going to stick around. So if you ask me to pin something online,

but I run out of memory, I can go, oh, sorry, I got to drop it. Now, if you want to ensure that, you can pay a pinning service provider. But if you don't want to pay any single company, if you want to make sure it happens fully transparently in a decentralized way, then we can make a storage deal. You can say, hey, I'll pay you this amount if you keep my data around for this amount of time. We'll put it on the blockchain. It's

And I, as the provider, will put down some collateral. And then the chain, the mechanisms of the chain will ask me every 24 hours, hey, do you still have that data? Prove it to me. And if I fail any of those proofs, I'll get penalized. So the whole interaction deal and enforcement happens through the blockchain network. Wow, that is super cool. There was a time when I was really deep diving into auctions.

And I was studying commodity auctions, where in other words, a farmer is raising cattle and it takes so many years to raise the cattle. And so the farmer needs some stability. And so there's this whole futures market where... And people like Patrick, who are really into the stock market, are probably just laughing at me. So I'm going to give a really dumb person's overview of this. But you...

set up a contract saying, you know, I will deliver, you know, this wheat in 18 months.

And then if there's a big storm or something, then you have to try to get the wheat from somewhere else to try to fulfill that contract or you pay kind of a big penalty. And so these sort of features and derivatives are really how things become more stable. And so it sounds kind of like that for this. So you want a group of people, let's say you, to make it concrete, you have a backup. We have a backup of the programming throwdown, source files like the raw files

audio files. We want to save those in case their house is burned down or something. So we put it on Filecoin and a few folks agree to host this encrypted zip file or something for us. And so then they put some collateral and every now and then Filecoin will say, hey, give us a hash of this part of that file. And if they lost the file, they can't do that.

And so the idea is because they've put that collateral on the line, you know, and you've replicated this to enough folks, you can be pretty guaranteed someone's going to hold on to it. Exactly. Yeah. And this is now we're over 14 exabytes of storage. So there's a bunch of storage. This is still a tiny fraction of the world's storage, but it's by far the largest decentralized storage network in the world.

Wow, that is really, really cool. So I'm trying to wrap my head around this. So what's the connection when you're talking about the browser

and IPFS, could someone actually make a website where all the assets are coming from IPFS? Or would someone just be waiting forever for that to load? No, you can do that really easily. You can actually make a fully decentralized web app. So at the front end application layer, you can store those assets on IPFS. And there are gateways that will serve that content to you.

It's kind of like Netlify, but for Web3. You can connect it to any GitHub repo that has your web application and it will automatically deploy it to IPFS. So super, super simple. You actually don't really need to understand IPFS even to get it up and running. And then behind the scenes, you can use smart contract logic or standard application logic or combination most likely for your logic layer.

And then behind the scenes, that data can be stored. We have a layer of tooling called data brokers that deal with all the IPFS and Filecoin nodes for you. And then under the hood, it's stored on these decentralized networks. So you can, I think Uniswap actually is a fully decentralized web application for

Front end is served through IPFS. The backend and the transactions are pushed to blockchain. So there's no single database for it.

Got it. And so I have this, like, albeit kind of pessimistic kind of vision where, you know, you go to a website and, you know, like half the content is there and the other half of the content's like trying to be found from a person who's in Wyoming or something. And like, like in practice, you know, and maybe this gets back to your example with the notes with people's names on it, but like in practice, what's the latency like if you want to look up, I mean, I'm sure it depends on how popular your site is, but

But for, let's say, a site that maybe you didn't just put it up now, but it's also not super popular, what would that sort of latency look like? Would that be usable? So that's why we strongly recommend using one of the data brokers or pinning service providers if you want to serve any production application over IPFS.

Makes sense. So Pinata and Fura are a couple of those pinning service providers. And then there are data brokers like NFT Storage, Web3 Storage, which we can talk about in a moment, and Estuary, which do the kind of the hard work of getting that data propagated across multiple nodes, IPFS and FilePoint nodes across the network. Yeah, I mean, it seems like a good time to dive into that. What is a data broker? ♪

Today's sponsor is Rollbar. Rollbar is the leading platform that enables developers to proactively discover and resolve issues in their code, allowing them to work on continuous code improvement throughout the software development lifecycle.

Rollbar has plans for all situations, from free to large enterprise. With Rollbar, developers deploy better software faster and can quickly recover from critical errors as they happen. We have a special URL at https://try.rollbar.com.pt for programming throwdown.

There you can find two free ebooks, How Debugging is Changing and How Dev Experience Matters, as well as sign up for a free trial of Robar. What is a data broker?

Yeah, so it's really funny. If you take the name protocol labs and the first part protocols, for a long time we were really focused on the R&D, R, R, D, and D research development deployment of the protocols themselves. So some of the underlying pieces of IPFS, for example, lib P2P, which is the peer to peer networking protocol, IPFS, IPLD, which is like the data library underneath.

these were all where we put the vast majority of our time and attention. But to get developers to use this stuff easily, we kind of needed to stitch them together into tooling that was, and really simple performant APIs. So there's now a layer of tools built through collaborations with other parties across the open source community. Some of them come from internal protocol labs teams, but there's now a whole

Rainbow of options for storing your data, to make storing your data super, super easy. And nft.storage,

provides free storage forever for NFTs specifically. If you submit your NFT, you get back nicely formatted metadata that can be used in a smart contract to compose your token. Web3.storage is a very, very similar service, uses a lot of the same backend, but you get up to one terabyte of free storage for your Web3 application. And then for really large scale clients and, you know,

larger scale data management, there's Estuary, which is a similar service, but really optimized for performance. And then there's a few other services, ChainSafe, Fleek, Textile have all created other services that act as data brokers. So they basically take all the pinning interactions, all the deal making that would happen on chain, and they smoosh it into a single API call and let you just call that and forget about the rest.

Got it. I see. And so, you know, one of the things that, so there's two things that, that, you know, frustrate or scare or, you know, intimidate a lot of people about client server, right? One is,

the fear that if my website makes it on Hacker News that my server will blow up. And then the second fear is I put my server as a Kubernetes auto scaling group. And so now my website made it on Hacker News and I have like an $80,000 bill from Amazon. And so I think IPFS and these technologies, the thing that I think is really awesome about them

is that as things get more popular, they also get easier to access. And so,

What does that look like? Like, let's say I have a data broker who I'm paying, I assume regularly to keep this content alive. And then all of a sudden, you know, I make number one on Hacker News and my site blows up. Then, you know, in a sense that kind of makes the data broker's job kind of easier, I guess, because you don't have to worry about pinning. And so how does that affect the cost? And, you know, just that problem, those problems I talked about, what happens to them in Web 3.0?

So our approach is that the

the majority of the, you know, network consumption storage usage is by very, very large, large scale data users. And so for services like NFT.storage, Web3.storage, that's all provided for free. So most like individual application developers or even smaller companies can do this all, all for free. And so there, you know, you're not going to be hit by these surprise bills. And exactly like you said, the more popular data becomes across the, you know,

The more popular something becomes, the more copies there are across the globe. And so the cost to actually get it to an incremental new user is going to be a lot less than having to repeatedly go back to the same server. Got it. So for folks who are bigger, what does the pricing model look like? I'm assuming...

I guess it's like at some point you're paying for requests, but then at some point, you know, you get this law of marginality, right? Because as things get more popular, the requests get cheaper. How does that work?

If you go to the website file.app, so F-I-L-E dot A-P-P, there's some cost comparisons to AWS. And right now, the cost to store is about 1% of 1% the cost of Amazon S3. Wow.

Wow. Wow. That is wild. Super, super cool. I remember this is like seven or eight years ago. I was looking into this kind of stuff and there was something called Peernet.

and it was this java application you would run and it was really clunky like i i mean i was able to get it to work but i mean trying to get my parents or something on peer net would have been really really hard and it's amazing to see to see you know kind of um where how far things have come and how easy they are and this is this is really really exciting so so any folks out there

Actually, we had Guillermo Rauch on the show to talk about Next.js, which is by Vercel, which is a similar setup as Netlify, where you can do like a next push on the command line and your app gets kind of pushed to the web. And so there's, you know, folks have listened to that and have tried building a sample app. Or if you've used Netlify directly and built an app there, you know how easy that is to get your app out there.

And so it sounds like they've made it that easy for Web 3.0. You can push an app pretty easily and you can access it. Do you know when Brave will open that up to everybody or how long it's going to be buried in the settings?

Yeah, so as you said, as you mentioned, it's now super easy for developers to get their apps published on IPFS. And then you mentioned the situation of like getting your parents to use decentralized storage space. So the fleet team has a product called space.storage and it behaves a lot like Dropbox.

You don't have to be a developer to use it. Oh, super cool. Yeah. And that behind the scenes stores on IPFS and FilePoint. So if you're just a personal user, I don't recommend trying to do things on the command line unless you really enjoy that. If you just want something easy and drag and drop familiar to most computer users, space.storage is that to try.

Very cool. Okay, so let's talk about some of the, you know, a little bit less exciting, but still super important kind of questions. Two that come to mind are, you know, how do I protect, like privacy? You know, if I want to put a document in Dropbox, how do I make sure no one else can read my documents? And then other than privacy, you know, how do you deal with bad content?

on IPFS. I'm sure you get these two questions a lot. Yeah, absolutely. I just want to wrap up. I think I didn't quite answer your prior question, which is when is IPFS support going to be available to everyone in Brave? It's available to everyone right now. You just have to go into settings and click enable IPFS. Okay, cool. Yeah, that basically just starts an IPFS node on your

on your computer while you're using Brave and uses that to talk to the IPFS network natively. Cool. Does that make you part of that distributed hash table? There's got to be a way where you can maybe say, don't use all of my bandwidth or you can mute it for a little bit if you have a video call or something. Yeah, yeah, definitely. There is, I think the...

IPFS component is configured to run garbage collection once the cache reaches one gigabyte. So it's not gonna consume your whole, using it through Brave is not gonna consume all of your resources. If you want to run it, if you want to run a network or a node, sorry, that is incredibly generous, you can configure that node to do so, but by default, it doesn't eat all of your resources. - That makes sense.

Oh, yeah. I was saying, how do you have privacy on IPFS? So if I use Dropbox, I can put some form that I've signed in Dropbox and I'm pretty confident no one else will be able to read it. How can I get that same kind of

situation with IPFS. Yeah, so we try to use the same exact parallels. So the space application is encrypted by default. The ChainSafe application is encrypted by default. So web-based end user applications often have encryption built in. So they'll encrypt the data before it puts it on the network.

And then in an application design setting, you'd want to do the same thing. It's just like using AWS, for example. If you want to keep that data private, you would encrypt it using state-of-the-art encryption algorithms and then put it on the network. That makes sense. And then you kind of either, you have to kind of write that password down or you could then use maybe a centralized service like OnePass or something like that to hold the passwords for you. But...

Well, then, yeah, I guess you always need some kind of master password that you have kind of mentally. You can also, with a lot of these end user apps, you can also use a decentralized ID to log in. So I believe with some of these, you can log in with a Metamask ID, which is just kind of an Ethereum wallet address. And that serves as your identification. Wow, man, I'm learning so much today, Michelle. This is awesome. Yeah.

So how do you get a decentralized ID? Oh, it's an Ethereum address. So basically you make an Ethereum account and then that backs as your ID. Yeah, exactly. And so then how do you make an Ethereum account? There's lots of ways, but if you want like a pretty user-friendly one, downloading something called a wallet application, so Metamask, Rainbow, a bunch of these are wallets. They both store, you know, kind of like,

your like nice leather wallet in everyday life. It both holds, it both acts as your identification, but it can also hold funds. Cool. Cool. Yeah. And so I guess the final question that was on my mind was, was just how do you keep bad content off IPFS? Yeah. Really important because, you know, a lot of people have asked this question and we think about content moderation in a couple of layers. So,

At the protocol level, it's kind of like saying, hey, the inventor of JPEGs never wants bad child pornography to ever be stored in a JPEG ever again. It's kind of impossible to do that. So at the format level, we don't want to control content. But at the services level, that's where if we're actively involved in providing a service,

we can and should have an opinion on what data we're going to be passing around. So through like Cloudflare runs an IPFS gateway, for example, and they'll sort of take down notices or add content to denialists if it's reported to be illegal. Similarly, Protocol Labs is IPFS gateway that we host, which is kind of that service between Web 2 and Web 3.0.

You can report abuse and have bad content taken down. And then there's also the decentralized option because everything we do, we kind of try to think, what is the most decentralized way to do it? The Filecoin protocol has a part where before you make a storage deal, you can ask the

provider for, you know, some info about what they'll opt into or opt out of. And there's a team called murmuration labs building some content moderation capabilities into that, where you can, you know, a storage provider can say, Hey, I opt into GDPR. I comply with GDPR. So that's like a feature I offer. Right. Right. Choose to buy storage from me or another provider might say, Hey, I'm located in Canada. And if the Canadian government mandates that you

keep data physically in Canada, you can choose to buy data from me. So building those options into the protocol and allowing many parties to define what good content or bad content or what their storage policies are is how we approach that. That makes sense. Super, super cool. If people want to get started with this, how would you recommend they kind of jump into this?

A couple of really great resources for getting started. The first is a website called proto.school, and that's a series of interactive lessons and tutorials on the nuts and bolts of this technology. And then another really fun pathway is through hackathons. So you might have the impression that

like in a hackathon, you get all crammed into a room for 48 hours and eat pizza and write code. The reality is, yeah, it sounds awesome for some people. It's not everyone's privacy. But hackathons today have a much bigger emphasis on education. They often take place over several weeks. You know, it's really about- Oh, that's actually even better. Yeah, it can be even better. And because of COVID, I think there's, you know, people can access, many of these are virtual. So you can-

participate no matter where in the world you are. And so hackathons.filecoin.io is a website where people can learn about all the active hackathons that are happening now or coming up very soon. There's one called BuildQuest that we're running with ETH Global that's all about applying IPFS, Filecoin, NFT storage, all these cool things to the development and design of games.

Very cool. Yeah. I mean, that's also a great way to meet people who have kind of different levels of experience, different skill sets, and really network and form teams of people you can develop trust with. Yeah, absolutely. Nothing like going through the crucible of a project to really get to know people. And a lot of hackathon participants end up, we have a

a really awesome grants program. So people can apply for grants to continue the work that they started in a hackathon. There are job fairs. So sometimes people use their hackathon projects as sort of like portfolio showcases for, you know, showing that they're interested and capable of building in the decentralized web. Cool. What is the coolest project you've seen built on top of IPFS and Filecoin?

Oh, there are so many. I think a really cool one is Audius, which is a decentralized music network that's really artist-friendly and takes advantage of community enthusiasm. So Audius is a series of...

It's a music distribution platform. It's alternative to things like Spotify and all of the music is stored, all the data stored in IPFS formats and a network of nodes serves it up. Wow. Super cool. So, so if, uh,

Does it have the cataloging that Spotify has? Like if I want to look up a certain type of music, like if I want to play rock music or something in my browser, will Audius have something like that? Actually, how do you spell Audius? Audius is spelled A-U-D-I-U-S. Okay. And the website is audius.co, audius.co.

And you can explore music. So there's different playlists. There's some trending topics. Very, very cool. I remember using this thing called Jamendo, which was totally Web 2.0, but the cool thing about it was it was all music that was

like, uh, I don't remember the terminology, but basically it was free to listen to, but if you wanted to use it commercially, then you would, you would have to, you'd have to, to license it. But, but everyone who put their music on there were, um, were allowing, you know, individuals to listen to it for free. And it was just really liberating. I mean, you'd hear, um, there's just a bit of everything, you know, it's like everyone could have a voice and, um,

There's actually a Canadian singer on there who's really popular. He was like a parody, or maybe not parody. He wasn't parodying anything in particular, but I'm trying to remember the name now, but he had just some songs that had a really good beat to them.

Yeah, and I think, you know, similar to the web, the music industry has seen a ton of consolidation where a few players have outsized power labels, right? Right, right. And in Audius, artists get 90% of revenue, 10% goes to the node operators that actually serve the music. And so up and coming artists can, you know, grow a following without having to, without having to like pass through the gatekeeping of a record label.

Wow, that is super, super cool. Yeah, this is awesome. And so folks out there, check out these different links. We'll post them in the show notes. And try building something out there. I think it's really empowering. I think it's amazing. You could build something that can scale to extraordinary lengths without you getting hit with some massive

AWS bill at the end of the day. And this is, I think, you know, there's a lot of people paying attention to Web3. So it's a good place. We often talk about how the, you know, mobile app stores are just so saturated at this point. But this is, you know, an area that is still new. I mean, it could be really, you know, if you have a really cool idea, it's much more likely for people to see it when you're in this kind of space.

Yeah. And I think, you know, I've experienced this twice, like working in Web3 now and also working in modernizing government tech in a new space. There's room for it. You know, I think it's a great time for people to join because there's lots of problems to solve, lots of enthusiasm. If you're like a warm, smart body, you can definitely find a place to contribute your skills.

Very cool. Is there like a Google for IPFS? You know, like, like how do people search for content? I mean, obviously if you have the hashtag or the domain name, then, then you're set, but

But how do people get discovered when they're producing stuff that's decentralized? That's a great question. I don't think there's a single answer for that yet. But IPFS is often used in... There's a couple of projects aiming to catalog all the data that's on IPFS. And then there's also, of course, all the applications that are aiming to help people discover things.

video or music or specific kinds of content that's stored on IPFS. Very cool. Very, very cool. So let's shift gears a little bit. And why don't you tell us about Protocol Labs, the company? So we know Protocol Labs... Actually, wait, let's move back up a little bit. So what's the relationship between Protocol Labs and IPFS? Do Protocol Labs invent IPFS or are they sort of caretakers? How does that work?

Yeah, both. So Protocol Labs is dedicated to the research, development, and deployment of new web technologies. And IPFS was one of the first projects out of there. LibP2P is another one, Filecoin. But we actually work now with a number of communities and teams all across the web that are not necessarily part of Protocol Labs itself. And that's what makes IPFS and Filecoin and all these technologies even better.

Ah, got it. That makes sense. And so for folks who are super interested in this, you know, and want to join Protocol Labs, do you have like internships or full-time positions? And what are the logistics there? Are you hiring for a particular city? Is it a distributed company or lab? You know, what is, how does that work? We're 100% remote. And the founder actually met the first couple of

employees on IRC. So don't have an office at all. Pre-COVID, we'd get together pretty often in person and it's pending safety measures is starting to come back now, but we kind of do a lot of work asynchronously through Discord or Slack.

GitHub, and then we use video just for as a supplement to that. So it's remote first company, where I think we have people in over a dozen countries all around the world, many different time zones, and we're hiring at all levels. So protocol.ai slash join is is the is

is the website where you can find out about different roles. And we've actually introduced a new program called Launchpad. It's sort of like an apprenticeship or training program for people interested in joining, learning really quickly, and then getting matched to a number of different projects. So that is dedicated to early career folks or people transitioning from Web 2 to Web 3. So for those roles, we're not expecting prior knowledge, just

you know, smart, fast learners, awesome people bringing other skills to the table. And then we teach Web3 development skills in a one month sort of accelerated program. Wow, that is really, really fascinating. Very, very cool. So folks, what is a way for someone to

What is the ideal resume for you? And what's a way that someone out there can, you know, what's your advice for folks who want to get into these programs? That is a really great question. What's an ideal resume? So across the board, we're hiring in lots of different roles, you know, entry level, all the way through senior and principal level. So the expectations are different. But I think some things are consistent across the board. One is...

really great ability to work in the open, to navigate the ambiguity of like having your design decisions happen on GitHub where everyone can see, being able to synthesize ideas and writing really well and communicate and collaborate.

in the open is a big one. And then also to bring other people along with you. So not just to be the smartest person in the room, but communicate it in a way that influences the community. Because especially in some of the projects that have

fully decentralized governance structures like you can't dictate change so i mean it is true of working on open large-scale open source software around the world uh you know no matter what project or company it is is the ability to um influence with or without authority cool that totally makes sense i remember um i still feel sometimes like uh

When I'm using GitHub on some open source projects, especially ones that are more popular, I'll get an email, someone has a question, I'll shoot off a reply like, no, it won't work or something. I'm just on the bus or something. Then I realize, oh man, the whole world saw, okay, let me hit another reply or something. It actually is intimidating. You realize, people can, you really open yourselves up when you do something out

out there on the web uh yeah on the on the public uh you know github and all of that but i think that uh it also is uh really humanizing right it's like sometimes people are in a hurry sometimes they're not you know sometimes i can write you know really long replies trying to give people insight and and so um you know i think you're getting kind of in touch with your sort of humanity or like realizing that they're all real people under the hood is really cool i i remember before uh

I went to the Valley. Some of these people were just like, I didn't know if they were real people or not. You know, like you hear like stories of like, Oh, Jeff Dean, you know, like he writes everything in machine code and he has like all these like, you know, kind of these people are sort of luminaries and they find out at the end of the day, they're just, they're normal people and you can email them. And most of them are super polite and, and super, you know, outgoing, willing to help, which is, which is really cool.

Yeah, I think there's kind of this like uncanny valley, right? I think like new people and then the super experienced, like the best people are the most welcoming. And sometimes there's like a little bit of gatekeeping in the middle, but we don't need that, right? And so I think that's something that we look for in folks. Another is, especially if people are coming new to the Web3 space, it's just like,

Just try it out, you know, come to the interview or come to the conversation, having tried to run a node or, you know, build something with some of the tools we have available or follow some tutorials so that you get, you know, not just a surface level curiosity and interest, but really understand like, what is it about IPFS or Filecoin that, or Web3 in general, that

that is motivating to you. So we don't, you know, many of the roles don't require prior knowledge, but they do require like a genuine interest.

Cool. That makes sense. So, yeah, as we talked about earlier, if you out there want to get a website or a web service or some type of thing out there, it could be a set of files that you want to keep a backup of. You can do all of that right now for free or mostly for free using these technologies. And so I would say for folks who want to

you know, be a part of protocol labs or this effort more broadly, just build stuff and just, you know, you can be a part of it. It's very accessible. We have tons of tutorials on docs.ipfs.io or nftschool.dev. And if you want to get started with those or hop in our IPFS discord, you can find that by searching the web. Lots of people ready to help you out.

Very cool. So, you know, we started this with you saying you wanted to be an architect. And so, you know, we've kind of come full circle. I feel like you're part of architecting the next version of the web. And what is how does that make you feel? It's really interesting. It's really fun. I've also come to realize that stuff on the web lasts longer than it's supposed to go.

Google Forms was launched over a decade ago and it's evolved a little bit but it hasn't been replaced. So I think there's also a real like stewardship or responsibility sense that we're building the right building blocks, building the right culture to create a really healthy web into the future.

That is very, very cool. Well, we will definitely post all of these links. I really encourage folks out there. We get so many emails from people saying, how do I get into the industry, into any of these industries, software more broadly? And our answer has consistently been to build things. But I think, as a lot of folks have pointed out, things like the App Store or Web 2.0 are just very saturated with

And so you can build stuff and show it to your friends. It's very hard to make it to the top of the app store with your app nowadays. And so this is sort of the next frontier. I think that this is a place that has a lot of people putting their eyeballs on it. And there aren't that many big players there.

I mean, it's not as saturated as the App Store where you can't really get noticed. So build stuff for Web 3.0. And as always, if you build anything or when you build things, you know, at us on Twitter, we love to see all the stuff that folks have been building and learning. Definitely keep doing that. If people want to reach, you know, Protocol AI or reach you, Michelle, or, you know, ask questions, where would be a good place for them to do that?

Two places. One is the IPFS Discord. I'm Mosh1812 on there. And the other is I'm MishMosh on Twitter. Oh, very cool. Is that Mosh after the Terminal emulator? It does not come from the Terminal emulator, although that's a fun coincidence. I think it just evolved out of my name, for sure.

Oh, very cool. Well, thank you so much, Michelle, for coming on the show. I personally learned a ton. Patrick, I'm sure, learned a ton. Both of us are super interested in this. I see it pop up on the news and on Hacker News and on LinkedIn all the time. And I'm really fascinated. And I think you really shed a light on all of this different technology.

And we're able to really dive in on how it works under the hood. We talked to everything from hashing to pinning content, really, really fascinating stuff. We have a bunch of links in the show notes. So folks out there, um,

You just go to www.programmingthrowdown.com or maybe go to our IPFS site. I'll have to see if I can build something there. But for now, we'll have to go to our Web 2.0 site and check out our show notes. Michelle, thank you so much for coming on the show. I really, really appreciate it. Thanks for having me, Jason and Patrick. Great to be here and hope to see everyone on the decentralized web.

Cool. All right, everyone. Thanks again for supporting us on Patreon and through Audible. I hope everyone has an amazing couple of weeks and we'll see you all on the next episode. Bye-bye.

Music by Eric Barnmeller. Programming Throwdown is distributed under a Creative Commons Attribution Share Alike 2.0 license. You're free to share, copy, distribute, transmit the work, to remix, adapt the work, but you must provide attribution to Patrick and I and share alike in kind.