Programming Throwdown - Episode 129 - Web3.0: Breaking free from the Client Server Model with Michelle Lee
Episode Date: March 15, 2022Brief Summary: What is Web 3.0? Guest speaker Michelle Lee, Product Lead of Protocol Labs, shares how web 3.0 will revolutionize the Internet and bring trust back into the web. 00:00:25 Int...roduction00:01:36 Michelle Lee’s career 00:03:10 What is human-computer interaction?00:04:55 The Google Sheets user experience00:06:19 Google Checkout, user feedback, and emails00:10:23 Code for America00:13:47 The real power of Open Source00:14:14 Web 3.000:23:04 IPFS network accessibility00:26:14 How does IPFS handle bogus content?00:38:56 Network storage costs00:43:03 Privacy and identification on IPFS00:45:23 Content moderation from the Web 3.0 perspective00:49:48 Audius00:54:20 Protocol Labs and IPFS00:55:26 Working with Protocol Labs01:05:00 Farewells   Resources mentioned in this episode:  Companies:Protocol Labs:Website: https://protocol.ai/Twitter: https://twitter.com/protocollabsLinkedIn: https://www.linkedin.com/company/protocollabs/Youtube: https://www.youtube.com/ProtocolLabsFilecoin: https://filecoin.io/Hackathons @ Protocol Labs: https://hackathons.filecoin.io/Course Learning @ Protocol Labs: https://proto.school/Metamask:https://metamask.io/Fleek:Website: https://fleek.co/Space Storage: https://fleek.co/storage/Estuary:Website: https://estuary.tech/Audius:Website: https://audius.co/   Social Media:Michelle Lee, Product at Protocol LabsTwitter: https://twitter.com/mishmoshLinkedIn: https://www.linkedin.com/in/michellelee3  Sponsor:RollbarWebsite: https://rollbar.com/Freebies: https://try.rollbar.com/pt/ Download the episode hereIf you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/ Reach out to us via email: programmingthrowdown@gmail.com You can also follow Programming Throwdown on Facebook | Apple Podcasts | Spotify | Player.FM  Join the discussion on our DiscordHelp support Programming Throwdown through our Patreon ★ Support this podcast on Patreon ★
Transcript
Discussion (0)
Hey everybody, how's it going out there? Web 3.0, Breaking Free from the Client Server Model with Michelle Lee. 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, you know, we talked in the past episodes
about 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,
you know, what if we all kind of got together?
Could we host a website, you know, just, you know,
with our community, right? 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, 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.
What can I work on? Like, what kind 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
you know 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,
how software is built and developed. Cognition, 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 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 forum? Yes, I was in HCI at Google? What's the connection between that and the Google Forum?
Yes, I was in user experience at Google.
Got it. I see. And so actually, oh, Google Forum. Now it's all coming together. So Google
Forums 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, 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? 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, you know, if my users have to make one more click,
I lose, you know, 20% of the users. Like it's unbelievable how important that is.
Absolutely. And so we 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.
And 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 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, you're, 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. People could do
this at home. So I felt it was wonderful, but a little bit pointless for me to be there as the
intermediary. And I got interested in 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 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,
more human, more easy to use with software. Wow. That is amazing. I, you know, I actually,
I've been in Austin for, um, 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, uh, haven't been able to go to 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 this,
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, yeah, really, really 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 a big change from the past.
Open source software, modular components, very transparent to people and easily reused across states or
municipalities, right? And 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 pull back towards the founding principles of the internet as a you know as an open um and
decentralized way to you know connect knowledge and people across multiple destinations i think
it was uh philosophically you know really aligned yeah that makes a lot of sense i think that uh
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 you know oh if we just, I'm kind of projecting here, but I've heard from a lot of other places, you know, oh, if we, you know, open source, or if we tell people what's going on,
then bad people will exploit what we're doing. You know, that's a, I feel like it's a very
interesting argument to make, you know, and there might be, there's a nugget of truth there,
but I think on the flip side, you know, I feel like it's kind of a pessimistic way of looking at the world, really.
Right. 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 that's kind of the the fallacy there, I think.
And so I think it's really cool to see, you know, government and and other kind of places, you know, moving to places moving to open source models.
And that way, it's like the vast majority of the people who put their eyeballs on that
are looking at it in a benevolent way.
Yeah.
And open source is like, technically speaking, making your code available 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. Like, I guess, you know, 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 building, like 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-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 um uh one-way mathematical
function has passion function and gets um it 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
it's guaranteed you know 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 neighbor down the street. You can get it 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 any single server, you can get it from any peer or through any connection, any pathway of peers. And that makes the network really resilient as well.
Because if you remember, every once in a while, there's a giant AWS outage, Slack doesn't work and GitHub doesn't work and you can't pay your electric bill online.
In a peer-to-peer world, 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. 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 love the idea of, you know, using math to bring
trust back into the web. I think that's really fascinating. This is something that is really
foundational. And a lot of folks say, you know, even just if you're in a community, you know,
a social community, you know, out in the real world, you know, how do you achieve consensus?
And a lot of people understand, you know, kind of voting on issues and all of that. So, you know, how do you achieve consensus? And a lot of people understand, you know, kind
of voting on issues and all of that. So, you know, the idea of sort of democracy and voting and,
you know, rationality really resonates with people. And then this kind of, 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 i's 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 um 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 so crypto, which is 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, you know, 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? that and that's um 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 you know just generally makes a lot more sense
because what we want to do is like create underlying value right we're not doing math or
running cpus for the sake of running cpus we're we're doing 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, you know, which ones are close to you. 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
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. 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. Like in your case, the measurement is, if I remember correctly,
you know, if you have, once you have the piece of paper with your name on it, then you're done.
So you have that sort of measure of, you know, the system is better now. And once you can do that,
then yeah, even doing a whole bunch of chaotic things ends up working really well. So, but
getting down to like the practical part of it, you know, 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. You know, other times it's like you have, you know have kind of all sorts of weird situations on the network.
And so how does something like IPFS handle the web and how complicated?
I mean, we're not on IPv6 yet. So I mean, 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, to a world where that's not required. So today, when you put content onto
the IPFS network, if you're accessing the, that IPFS network through, through an IPFS node,
for example, you download IPFS desktop extension for Chrome,
or you're running a node 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, 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 Web2 and Web3.
There are IPFS nodes that say, hey, I speak both Web2 and Web3.
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 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 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 it 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 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
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, you know, creating a ton of content and just flooding the hash table, which is tons and tons of random or bogus or, you know, content? 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, I got it.
That makes sense.
It's kind of like, it's somewhat a parallel to advertising.
Like there are 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.
There's no, 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, 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 like 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. 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 like futures market where, and people
who like Patrick, who are really into the stock market are probably just laughing at me. So I'm
going to, I'm going to give a really dumb person's overview of this, but you know, you set up a
contract saying, you know, I will deliver, you know, this wheat in 18 months. And then, you know,
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, you know, kind of a big
penalty. You know, and so these sort of features and derivatives are really how things, you know,
become more stable. And so it sounds kind of like that for this. So you, you know, you want a group
of people, let's say you, let's say you, to make it concrete, you have a backup.
We have a backup of the programming throw down, you know, source files, like the raw audio files.
We want to save those in case their house is burned down or something. So we put it on, on Filecoin and a few folks agree to host this, this like, you know, 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 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 were 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.
Fleek is a really great way.
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. The front end is, serves your 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, 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 for let's say a site that
maybe you didn't just put it up now, but it's also, you know, not super popular. What would
that sort of latency look like? Would that be usable? And 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, 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
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-D&D research
development deployment of the protocols themselves. So some of the underlying pieces of IPFS,
for example, libp2p, 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 and really simple performance 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 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 swish 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, you know, if my website makes it on Hacker News, that my server
will blow up, right? And then the second fear is, you know, I put my server as a, you know,
Kubernetes auto scaling group. And so now my website made 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? 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 And just that problem, those problems I talked about, what happens to them in Web 3.0?
So our approach is that the majority of the 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 individual application developers or even smaller companies can do this all for free.
And so you're not going to be hit by these surprise bills. And exactly like you said,
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 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.
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. I mean, I was able to get it to work, but I mean, trying to get my parents or
something on Peernet would have been really, really hard. And it's amazing to see, to see, you know, kind of
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, 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, you know, 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 if like when Brave will kind of open
that up to everybody or how long it's going to be kind of 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, Hey,
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. So 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? 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 computer while you're using Brave and uses that to talk to the IPFS network natively. that make you part of that distributed hash table? Like, can you, there's got to be a way where you can maybe say, you know, don't use all of my bandwidth or, you know, 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 going to consume your whole,
you know, using it through Brave
is not going to consume all of your resources.
If you want to run it,
if you want to run a network or a node,
sorry, that, you know, is incredibly generous,
you can configure that node to do so.
But by default, it doesn't beat 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.
So how do you get a decentralized ID? Oh, it's an Ethereum address. 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 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 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, like never wants bad
child pornography to ever be stored in a JPEG ever again. It's kind of impossible to do that.
So in at the format level, we don't want to, you know, control content, but at the services level,
that's where, you know, if we're actively involved in providing a service, you know, 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, you know, 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 two and web three. 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, well, 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 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 a storage provider can say, hey, I comply with GDPR. So
that's like a feature I offer. If you 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 you're 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.
Sounds awesome.
Yeah, 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.
It's really about finding teams or community peers.
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 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 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, is 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,
does it have the cataloging that Spotify has has like if i if i want to look up
you know a certain type of music like if i want to play rock music or something in my browser
will audius uh 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 yeah and you can explore music so there's
different playlists uh there's some trending topics very very cool um i remember using uh
this thing called gemendo which was you know totally web 2.0 but it was uh the cool thing
about it was it was all um it was all music that was, I don't remember the terminology, but basically it was free to listen to.
But if you wanted to use it commercially, then you'd have to license it.
But everyone who put their music on there were allowing individuals to listen to it for free.
And it was just really liberating.
I mean, you'd hear there's just a bit of everything, you know,
it's like everyone could have a voice and there's actually a Canadian singer
on there. It was really popular. He, he was like a parody or not,
maybe not parodies wasn't parodying anything particular,
but I'm trying to remember the name now, but, but he had a,
he had just some songs that had a really good beat to him.
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. And in Audius, artists get 90 percent of revenue.
Ten percent 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, you know,
check out, you know, these different links.
You will post them in the show notes
and, you know, 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 I think 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 how do people search for content? I mean, obviously, if you have the hashtag or the domain name, then you're set. 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 like aiming to catalog all the
data that's on IPFS.
And then there's also, of course, like all the applications that are aiming to help people discover 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
and want to join Protocol Labs,
do you have 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?
How does that work?
We're 100% remote.
And the founder actually met the first couple employees on IRC.
So don't have an office at all.
Pre-COVID, we'd get together pretty often in person.
And 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 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 web three 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 that, 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,
this is true of working on open
large scale open source software around the world, you know, no matter what project or company it is,
is the ability to influence with or without authority.
Cool, that totally makes sense. I remember, I still feel sometimes like,
you know, when I'm using GitHub on some open source projects, especially ones that are more popular, you know, I'll get an email, someone has a question, I'll kind of shoot off a reply, like, no, it won't work or something, you know, I'm just kind of like on another reply or something. It actually is kind of intimidating. You kind of realize,
people can...
You really open yourselves up
when you do something out there on the web,
on the public GitHub and all of that.
But I think that it also is really humanizing.
It's like sometimes people are in a hurry,
sometimes they're not.
Sometimes I can write really long replies trying to give people insight. And,
and so, um, you know, I think, you know, 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 remember before, uh,
I went to the Valley, some of these people were, um, 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 super outgoing, willing to help, 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, you know, that's something that we look for in folks. Another is, especially if people are coming new to the Web3 space is 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 that um that is motivating to you um so we don't you know many of the roles
don't require prior knowledge, but they do require
like a genuine interest. Cool. And that makes sense. So, so yeah, as we talked about earlier,
you know, if you out there, you know, want to get a website or a web service or, you know,
some type of thing out there, you know, 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 be a part of Protocol Labs or this effort more broadly, just build stuff.
And just 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.
Google Forms was launched over a decade ago and it's evolved a little bit, but it hasn't replaced.
So I think there's also a real 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.
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 yet.
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,
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, Michelle. 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 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, 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, I'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 uh and uh through
audible um i hope everyone has an amazing couple of weeks and we'll see you all on the next episode
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 an attribution uh to uh patrick and i and uh share alike in kind