localfirst.fm
All episodes
July 2, 2024

#11 – Adam Wiggins: Local-first Conf 2024

#11 – Adam Wiggins: Local-first Conf 2024
Sponsored byExpoRocicorp
Show notes

Transcript

0:00:00 Intro
0:00:00 You know, in the end, I kind of hope all software will be local-first, but there's
0:00:03 varying degrees to which paying that, being early tax, the pioneer taxes, as you
0:00:09 described it, may be worth it depending on the domain that you're building for.
0:00:13 But of course, over time, that pioneer tax gets less and less.
0:00:16 It's already gotten way less than last year, and probably in the
0:00:19 last six months, it will get less.
0:00:21 It's going to continue going down, and so that makes the trade off.
0:00:25 to think about less and less.
0:00:26 And eventually it just becomes the pragmatic solution to just
0:00:30 say like, Oh, obviously you're going to do things that way.
0:00:32 That's just kind of the best way.
0:00:34 Welcome to the local-first FM podcast.
0:00:37 I'm your host, Johannes Schickling, and I'm a web developer, a
0:00:40 startup founder, and love the craft of software engineering.
0:00:43 For the past few years, I've been on a journey to build a modern, high quality
0:00:47 music app using web technologies.
0:00:50 And in doing so, I've been falling down the rabbit hole of local-first software.
0:00:54 In this episode, I'm speaking to Adam Wiggins, who's the founder of Heroku
0:00:58 and one of the original co-authors of the local-first essay by Ink & Switch.
0:01:03 As Adam is also a co-organizer of the first Local-First Conference, in this
0:01:07 conversation, we reflect on the event, share our learnings, and discuss a
0:01:11 couple of key topics, such as a new definition of local-first software.
0:01:16 Before getting started, also a big thank you to Rosicorp and
0:01:19 Expo for supporting this podcast.
0:01:22 And now my conversation with Adam.
0:01:25 Hey Adam, welcome to the show.
0:01:26 How are you doing?
0:01:27 Hey Johannes, I'm doing really well.
0:01:30 Still kind of glowing with the buzz of a successful conference.
0:01:34 Yeah, I'm super excited to have you on the show.
0:01:37 Uh, and to be fair, this show probably wouldn't exist without you since you've
0:01:41 provided a lot of guidance behind the scenes, given that you've, run this, this
0:01:46 amazing podcast for Metamuse, which has always been a lot of inspiration to me.
0:01:52 And so you've certainly been a bit of a catalyst for me to start this
0:01:55 podcast, but for the audience who's maybe not as familiar with you, would
0:02:00 you mind briefly giving a background and what led you to local-first?
0:02:04 Certainly.
0:02:05 Well, I think a lot of folks might know a company I started called
0:02:09 Heroku, which does web app deployment, very cloud centric, which is sort
0:02:13 of part of the story of what brought me to local-first is going all in
0:02:17 on cloud when that was on its rise.
0:02:21 Since then, I founded a industrial research lab called Ink & Switch, which
0:02:25 I'm guessing listeners of the podcast may often know that that was the place
0:02:30 where we gestated first the research, the kind of CRDT and peer to peer stuff
0:02:35 that led into us forming this position piece, which we eventually decided to
0:02:40 give the label local-first software and indeed has continued to try to
0:02:44 push forward in that, in that field.
0:02:47 And after that, I went to work on a spin out from the research lab called Muse,
0:02:51 which is an infinite canvas for thinking, did that for about four years before
0:02:55 handing it over to my colleague who's still running it, and, we built that
0:02:59 as a fully local-first system, kind of homegrown, and, Yeah, that's, uh, that's
0:03:06 Local-First Conf genesys and recap
0:03:06 Yeah, I feel like there's a lot to unpack and to go deeper, but that is not the
0:03:11 focus for today's episode, since, you and I have not just been collaborating on the
0:03:16 podcast, but also on another undertaking, which is the first Local-First Conference
0:03:23 that we did together in Berlin.
0:03:26 And so this conference kind of came to be as I did last year, when Jeoffrey
0:03:32 Litt was in town, I wanted to meet with Jeoffrey and a whole bunch of other people
0:03:36 and the common theme was local-first.
0:03:38 So I felt like a good way to accommodate all of that is like led to me doing
0:03:44 a local-first meetup in Berlin.
0:03:46 That went so well and had so many people show up and so many interesting
0:03:50 conversations that at a minimum, I was thinking of doing the meetup
0:03:54 again, but I was floating the idea of doing a Local-First Conference,
0:03:59 and taking sort of that next step.
0:04:01 I was floating this idea with you and I was floating this idea with a
0:04:04 few other friends who I organized, the GraphQL conferences in the past.
0:04:08 So one thing led to another.
0:04:10 And, jokingly thinking about starting this conference led to us actually grouping
0:04:16 up, doing the conference together.
0:04:18 And, I think it went absolutely brilliantly.
0:04:22 So, so many interesting folks Giving amazing talks, so many interesting
0:04:27 conversations of in between the talks and people came from all
0:04:32 across the world, from like Hawaii to Australia to Singapore and Bangkok.
0:04:38 And so that went way beyond my expectations, but I suppose only
0:04:43 a few amount of the people who are listening to the podcast maybe had
0:04:47 the chance to actually attend since the tickets were kind of flying
0:04:51 off the shelves pretty quickly.
0:04:52 So would you mind providing a recap of like what the conference, how
0:04:58 that actually went down for, for the few days where it happened?
0:05:01 Yeah, there's a lot to tell there.
0:05:03 Uh, if I can add just slightly to your, to your origin story, uh, there,
0:05:07 I do think it's interesting to note that, you know, you talked about the
0:05:10 meetup that you organized last year and all the energy that came from that.
0:05:14 I mean, I think you and I were, were discussing around that time, you
0:05:18 know, over lunch or something like that, that like we saw this surge in
0:05:22 interest in local-first, well funded companies who are popping up to build
0:05:26 infrastructure, more products who are either using that terminology in their
0:05:30 marketing or building in that, that way.
0:05:32 And this is sort of surprising because the paper itself is five years old.
0:05:37 A lot of the research and technology is closer to a decade old.
0:05:41 Why now in particular?
0:05:43 And I think the answer is ideas just take a long time to disseminate or I'm not
0:05:47 even sure why, but we were just observing this and saying, This is pretty exciting.
0:05:50 And then what should we do to help that?
0:05:52 And I was brainstorming along the lines of like, maybe it's the time to make
0:05:56 a foundation or something like that.
0:05:58 And you, you kind of felt no, and I think your instincts were right.
0:06:02 And ultimately, yeah, you organized the meetup.
0:06:04 That was an incredible amount of turnout and energy there.
0:06:07 You said, I'm going to start a podcast, which you have done and,
0:06:10 and it's going great from what I can, uh, what I can tell as a listener.
0:06:14 And then this beginning of this year, you said, you know, maybe it's the time
0:06:18 for a conference to really try to put it on the map, not just as a kind of an
0:06:22 academic thing, because there have been programming local-first days connected to
0:06:26 academic conferences, but as a thing for builders and a thing for, this is a thing.
0:06:31 This is a technology or a set of ideas about how to build
0:06:35 applications that is real.
0:06:36 It is here now.
0:06:37 You can use it.
0:06:38 It's exciting.
0:06:39 And, you know, meet other people who are, meet the other weirdos
0:06:43 who are interested in this.
0:06:45 I think this very distinctly marked a moment for me where There were
0:06:50 so many people and, most notably a bunch of people who I've never
0:06:55 seen before, who I've never met.
0:06:57 So this kind of like tightly knit group of local-first experts
0:07:02 seems to have like really grown already into a wider audience.
0:07:06 Who, taking those ideas, building apps that I wasn't aware of.
0:07:10 And so this is growing beyond this, this, core group, which I think is a, is a
0:07:16 brilliant sign of success that the ideas are, going to where they need to go.
0:07:21 Yeah, that's a great point.
0:07:21 I think that was part of the thing last year.
0:07:23 It was like, up until that point, if anything ever came along, a
0:07:27 library, a product, an essay that referenced the concept, I'm like,
0:07:33 oh yeah, I know who that is.
0:07:34 I know them from this core community, this small circle of
0:07:37 people who's been interested in it.
0:07:38 And last year, it started to be more and more things popping up where
0:07:42 I just thought, I'm Who is this?
0:07:43 I've never met this person.
0:07:44 That's good.
0:07:45 It's growing beyond its, its origins.
0:07:47 Exactly.
0:07:48 And I think what's also been interesting in the conference, and I'll invite you
0:07:52 to provide a recap to, to that shortly, but it's been so interesting that
0:07:57 like local-first has sort of a diffuse timeline where there's certainly the
0:08:03 very notable point in time where you and Peter and Martin, et cetera, have
0:08:08 like written this, this amazing essay.
0:08:10 But the ideas of local-first, already were out there before that.
0:08:15 They were maybe not as crisply written down.
0:08:17 And so at this conference, we also had people who've been de facto doing
0:08:21 local-first software before the term was like as clearly written down.
0:08:26 And so we brought together all of like those sort of like Real old school,
0:08:30 like OG, local-first people and sort of like the people who just got
0:08:35 attracted by the essay and beyond that.
0:08:37 So, yeah, I'm curious, maybe you can recap, what was the goal for how
0:08:43 we laid out the conference and what did happen over the conference days?
0:08:46 Yeah, so we wanted to make it big enough to feel, well, I guess like a conference,
0:08:52 like an event, like something serious.
0:08:54 This is a community with some gravitas to it, but small enough to still be intimate.
0:08:58 We want to be able to talk to everyone.
0:08:59 And honestly, we really didn't know the level of interest there would be.
0:09:02 As you pointed out, we, we sold out way too quickly.
0:09:05 We had to turn lots of.
0:09:06 Wonderful people away and speaker plus ones and everything like that.
0:09:10 So, so maybe we, we underestimated the interest, which is, I guess, a
0:09:13 good problem to have, but yeah, we had a venue for about 200 people.
0:09:16 Uh, we ended up with 18 speakers, which was a lot to fit into to one day.
0:09:20 Um, although I think the, the rapid fire nature of it also helped create a lot
0:09:24 of energy and keep the signal, the noise or the, density, I guess, of information
0:09:28 high, which I liked quite a bit.
0:09:30 So that was sort of the main day event in a beautiful venue that, you
0:09:33 and, and our other, co conspirator Emma had, had used in the past.
0:09:37 and then we did a second event that was kind of, or a second day that we sort
0:09:40 of added on a little later when we saw the interest, which we call an Expo Day.
0:09:45 This was run by, our friend Peter Van Hardenburg, where basically bringing
0:09:49 all the people who are building infrastructure, that is, say, libraries
0:09:52 or, um, services that provides some kind of framework or, or way to, to
0:09:58 do local-first versus, you know, just sitting down to write your own CRDT
0:10:02 from scratch, and get them to get up, give a demo, help everyone walk through
0:10:06 it on their laptops, get started, and then provide hands on support.
0:10:10 So hopefully going from the speaker day, or the intention anyway is to
0:10:13 go from the speaker day with the talks to get everyone inspired.
0:10:17 and then go into a day that was more about building and making things.
0:10:20 And I think, indeed, that is, that is how it worked out.
0:10:23 And then, the other, I think, awesome thing that happened, in
0:10:26 addition to, the main event is we actually had satellite events.
0:10:30 We had folks who, uh, did things before and after.
0:10:33 One of the more notable ones, I think, was that there was a Future of Coding
0:10:36 meetup that someone organized for the day.
0:10:39 After, I got word, uh, later that a bunch of the folks working on the
0:10:44 identity problem, which is, remains kind of one of the big unsolved problems
0:10:47 of local-first, got together and did like a 12 hour marathon session.
0:10:51 and there's a, uh, a blog post we can maybe link to in the show notes,
0:10:54 which was kind of the output of, what the state of the art is there.
0:10:58 And then I think there was just a ton of follow on, uh, work.
0:11:02 Kind of energy or something like that on, on Twitter.
0:11:04 So there's various threads around people reflecting on the conference, of course.
0:11:09 Paul Butler had a really excellent write up.
0:11:11 Again, maybe we can link that as well.
0:11:12 But also just a lot of people discussing and debating, and I think therefore
0:11:16 surfacing the term for new people.
0:11:18 A lot of folks coming in and being like, wait, what is,
0:11:20 what are we talking about here?
0:11:21 What is this local-first thing?
0:11:23 But people also having good genuine arguments about, like, is this, you
0:11:27 know, is this trend something that is worth paying attention to, what are the
0:11:30 real benefits here, why do you want to do things this way, and so the, just the
0:11:34 sense that, I think, again, part of our goal for the event was help give this
0:11:39 community a center point and put it on the map and further expand the community
0:11:45 beyond this core set of people who've been interested in it for a long time.
0:11:49 And I, at least I feel like it really, accomplished that.
0:11:51 What's your, what's your read on the, uh, you know, looking
0:11:54 back post talk a little bit
0:11:56 yeah, absolutely.
0:11:57 So I found it so fascinating how we tried to create a bit of a
0:12:02 structure of like a conference day, as opposed to an unconference.
0:12:06 It's like certainly a more structured, a more curated experience where people
0:12:11 like need to come to the same place.
0:12:13 It was very important for us that we wanted to make it a, like, more
0:12:16 put the focus on the in person experience, throughout COVID, etc.
0:12:21 I've attended many online only events, etc.
0:12:24 And it's just not the same, like , You can't compare meeting someone, like
0:12:29 going really deep, very quickly on a certain topic, grabbing a coffee with
0:12:33 them, going even deeper and exchanging ideas in a very like organic way.
0:12:37 You can't do that over text chat or over Zoom.
0:12:40 So doing that in person where other people can chime in, this
0:12:45 was certainly the bread and butter.
0:12:46 and so combining that with inviting like people who have deep expertise
0:12:52 so they can give talks, et cetera.
0:12:55 This was the foundation, but where this then led to that it
0:12:58 wasn't just the conference day.
0:13:00 And then we did the, the, the expo day after, but that like kind of
0:13:05 organically and spontaneously, other people contributed whole
0:13:09 satellite events around it.
0:13:10 It really felt like a whole, not just a Local-First Conference
0:13:14 day, but a whole local-first week where we had amazing people coming
0:13:19 from, from all over the world.
0:13:21 And so for me, basically started, even though the conference day was on
0:13:25 Thursday, For me, it started on Monday night when, Steve Ruiz and other people
0:13:30 came in and when we went to a beer garden until midnight every day, and
0:13:34 we're just going deep on, on syncing and CRTs and trade offs, et cetera.
0:13:39 And that, that was amazing.
0:13:40 Um, and so just to see.
0:13:42 The, the energy and like the different sort of paths that people have,
0:13:46 where some of them are building apps, some of them are building tools.
0:13:49 Some of them combine both or tackle it from an entirely different perspective.
0:13:54 this was just a wonderful, uh, coming together of different people.
0:13:59 So this was the core of it for me.
0:14:01 The different people aspect of things was both a goal, a top level goal for me.
0:14:06 Uh, and also my biggest concern about whether it would work.
0:14:10 So basically I saw it as a chance to, you know, we talked about
0:14:13 expanding that core community.
0:14:14 I saw it as something where you had people, especially around the academic
0:14:19 world or connected to Ink and Switch in the research world, or have been working
0:14:23 on this realm of things for a long time, or often come at it, and I put myself
0:14:28 in this category from an ideological perspective, this way of building
0:14:32 represents a way that I think computers can be better for humanity on net.
0:14:37 It's not just about, of course, I love the better developer experience and
0:14:41 the lower operational cost and some of these benefits, but I think that
0:14:44 there is a philosophical aspect to it that is, for me, is the heart of it.
0:14:50 But also, I think, to grow and to be, to go into the real world and to be relevant
0:14:55 in the real world, you need to, in some cases, be more pragmatic than that.
0:14:59 The way the one person put it in a, in a conversation with me is they're
0:15:03 like, I came to this cause it's like a way to save money on my cloud bill.
0:15:06 And it's just like.
0:15:07 Clouds, you know, my cloud bill keeps killing my startups because
0:15:10 it run up a too, too big a cost.
0:15:12 And this is a way to cut that down.
0:15:14 And that sounds so reductive and, almost even offensive.
0:15:17 Maybe if you do come at it from the ideological perspective, but
0:15:19 also that, that makes sense that there are a variety of benefits.
0:15:23 There's a variety of paths of why you would come here.
0:15:25 And so to, you know, I think the big tent approach of there's room for, for
0:15:29 everyone, if we can find common ground.
0:15:32 So we really were trying to bring in that core community, of course, but
0:15:36 also people who are more pragmatic, you know, they're building a company,
0:15:40 they're an engineer, they're a designer, something they want to get some specific
0:15:44 immediate benefit for their business, or they see a commercial opportunity.
0:15:48 For example, we've had a few investors here, you know, I think it's still
0:15:51 pretty early for that, but a few folks who, you know, see that there's, uh,
0:15:55 there's commercial opportunity there.
0:15:57 and the 3rd demographic, if you, if you want to think of the, you know,
0:16:01 the longtime core community, idealism driven folks, and then the builders or
0:16:06 commercial opportunity, pragmatic folks as, as another demographic, a 3rd one,
0:16:11 Actually, it would just be the local-first curious and some of the best conversations
0:16:14 I had, I think, were, uh, with a lot of those folks, many of whom, you know,
0:16:18 basically just said, I'd never heard of this term up until when this conference
0:16:21 was announced, but I, I see there's something going on here and I I wanted to
0:16:24 find out about it and it was great to get all those people together and our goal
0:16:27 was to get all those people together.
0:16:28 But there was also a chance that those people could very much clash.
0:16:32 the, uh, folks who see pragmatic benefits in it, and the folks who come from
0:16:37 a status quo perspective on building applications, and the folks who are
0:16:40 long time members of the community might just not like each other,
0:16:45 get along, or share enough values.
0:16:47 so that was a concern for me, but I think 100% The way it bore out was we have
0:16:53 way more in common than differences.
0:16:55 Yeah, most certainly.
0:16:56 I think we struck a really nice balance there where, it was very approachable
0:17:02 for experienced engineers who've like experienced different kind of
0:17:06 problems building cloud apps and building on different platforms where
0:17:11 they might not be yet all familiar with the ideas of local-first, but I
0:17:15 think they could throughout the stay.
0:17:18 Uh, it really clicked for them how local-first provides an interesting
0:17:22 alternative that addresses a lot of the problems that they have, as well
0:17:26 as for people who are already very deep in local-first of the last couple
0:17:31 of years, where you could learn a lot about different sort of trade offs and
0:17:35 different experience paths of people who went already very deep on certain things.
0:17:39 So I think we struck a really nice balance there.
0:17:42 So the meat of the conference day on Thursday were most notably the talks.
0:17:49 So I'm curious, given that you and I were both responsible in the organizing
0:17:54 team to put together those talks.
0:17:56 I'm super excited how everything, shaped out there.
0:17:59 And, I think we managed to strike a really nice balance on like a spectrum
0:18:04 of, of speakers, some who already, Go super deep on like local-first
0:18:10 technological parts for many years, some are more on the pragmatic end,
0:18:15 might not meet all the ideals of local-first, but reach millions of users.
0:18:19 And I think that's all kind of like nicely converging.
0:18:22 so I'm curious which talks, which speakers stood out most for you and,
0:18:28 Conference highlights
0:18:28 Yeah, well, I suppose it's not surprising that you and I both, since we directly
0:18:32 made the speaker lineup and got to pick all of our favorite people and
0:18:35 put them in an order that we liked, uh, that we would both be probably
0:18:39 pretty, pretty pleased with the outcome.
0:18:41 I guess it's, I guess it's a good sign, that if anyone should
0:18:44 enjoy it, it should be us.
0:18:45 But yeah, I, this is the only time I have ever listened to every single minute of
0:18:50 a talk in the entire day of a conference.
0:18:52 usually there's some point I get a little bored or restless or, yeah,
0:18:56 I just want to stretch my legs or just get, you know, caught up in a
0:18:59 conversation and I, and, and I want to stick with that, but I really, all of
0:19:02 these speakers had such an interesting thing to add to, like you said, that
0:19:06 bigger stew of different perspectives.
0:19:09 We also took the approach of making the time slots really tight, which had
0:19:13 Sometimes I felt bad, I've seen some of the speakers have a little bit of
0:19:15 anxiety about, you know, squeezing their, their content down, but I think it,
0:19:20 it part of was what kept stuff moving and again, the density of the, the
0:19:25 information just meant that like, there wasn't, there wasn't a moment to get
0:19:28 bored, which I, which I really enjoyed.
0:19:30 Yeah, it'd be hard to pick favorites, you know, but if you were going to look at
0:19:34 some of the, you know, the temp polls, of course, we have, you know, our opening,
0:19:38 um, kind of closest thing to a local-first celebrity, which was Martin Kleppmann,
0:19:41 and he dug in on, you know, five years on from writing the initial paper, how would
0:19:46 he You know, what would he add to that?
0:19:48 Or how would he change?
0:19:50 Um, you know, what have we learned in that time?
0:19:52 And he touched on the kind of the definition of local-first,
0:19:55 which I think is a, is an ongoing question for the community.
0:19:59 Uh, we followed that up pretty directly with Tuomas Aertmann from Linear, and I
0:20:03 think this is one of the bigger success.
0:20:05 I mean, Linear is obviously a huge success story in the startup world,
0:20:08 um, but the fact that they, I think he probably kind of built this way from
0:20:11 the get go because he believes this is just the only way to build software.
0:20:16 He jokes about like, when he sits down to ever start a new thing, the first thing
0:20:19 he always does is write a sync engine.
0:20:21 That's what he did here.
0:20:23 Hopefully in the future, we have enough off the shelf stuff that's not necessary
0:20:26 anymore, but you can very directly point to Linear is known for being so
0:20:31 high performance and, uh, that makes it really stand apart from all the other
0:20:36 SaaS alternatives in the industry.
0:20:38 And, yeah, again, you can, you can debate the degree to which of those
0:20:41 local-first principles they fulfill, but in terms of like a very high profile
0:20:45 successful example where we're using local-first in how they built their
0:20:49 product is directly connected to why they are so successful in their business
0:20:53 and how they are differentiated.
0:20:55 So I think that was a powerful one too, to take the, you know, the sort
0:20:58 of community elder combined with, um, you know, a pragmatic example
0:21:01 of how a product can be successful.
0:21:03 And then, yeah, maybe some, you know, two other notable ones to me would be
0:21:08 Aaron Goodman's talk, where he basically announced on stage his next iteration
0:21:12 of the, I guess it's the RepliCache Reflect, and now what he's calling Zero.
0:21:17 He's really been grappling with this space, I think.
0:21:19 I think he was your first guest, if I'm not mistaken, on the
0:21:22 podcast here, or one of the first?
0:21:23 The second one.
0:21:24 Peter was the first one.
0:21:25 Yeah.
0:21:26 Yeah.
0:21:27 He's been grappling with this in the real world, I think.
0:21:29 In the sense of building infrastructure for others,
0:21:32 probably, almost as long as anyone.
0:21:34 And he's been through these iterations and he talked about the partial
0:21:36 sync and gave an amazing demo.
0:21:38 And then the, the, the closing, closing talk was, uh, Maggie Appleton,
0:21:42 who's always amazing, but she gave a talk on barefoot developers, kind
0:21:46 of this concept, bringing together end user programming, which of course
0:21:49 is very near and dear to my heart.
0:21:51 If you know anything about my, my writing and, and, uh, interests.
0:21:55 Putting that together with language models and AI and local-first, and that
0:21:58 all of these things fit together in a, uh, in a way that's very significant.
0:22:02 many, many folks talked about her, her talk as being a highlight of the day.
0:22:06 So those were just a few that, um, seemed quite notable, let's say.
0:22:10 What were some of your favorites?
0:22:12 Yeah, I, I certainly agree with your picks here.
0:22:15 Um, I'm actually the, the ones that you mentioned, I, I'm going to also have some
0:22:21 of those on the, the podcast since there's so many interesting points in there that I
0:22:26 want to, I want to Dive deeper in whether it's like how, Tomas had the foresight
0:22:32 to bet on a sync engine when building a new product and, how that, like, I
0:22:37 think he mentioned it on stage, it's like they, they can basically all focus on
0:22:42 the front end engineering team, and kind of cut their engineering team in half,
0:22:46 keep the company small and thus ship much more quickly and how that's just turning
0:22:52 into a massive competitive advantage.
0:22:54 So I think that's.
0:22:56 You know, underexplored and underappreciated outside
0:22:59 of the local-first bubble.
0:23:01 So, that's something I want to explore more.
0:23:04 And, I think, he also made an interesting point , he has written a great blog post
0:23:09 about how like a typical MVP of a product is no longer enough to really make it in
0:23:14 today's competitive landscape of products.
0:23:18 And how you need to just, the bar is really high for building products
0:23:22 and Linear has now shown where the bar is at and kind of the only way to
0:23:27 get there, I think, is by following the local-first architecture for
0:23:31 productivity and personal apps like that.
0:23:33 So I think it was really inspiring to hear his talk there.
0:23:38 And then, we also heard from, from a bunch of builders who've been building
0:23:42 local-first and local-first technologies already for, at some point, more
0:23:47 than a decade and who at some point learned like, oh, the way how I always
0:23:52 build things is called local-first.
0:23:54 And that's really interesting.
0:23:56 And, then also, uh, from a tool builder's perspective, hearing about the interesting
0:24:01 challenges and design trade offs.
0:24:04 So what Aaron has announced with Ciro on stage was certainly very interesting.
0:24:09 I think it kind of takes a step away from some of the local-first
0:24:13 ideals, but on the other hand, makes it even more approachable.
0:24:18 for people who are more coming from the cloud world and might
0:24:21 be a bit of a gateway drug.
0:24:23 Also bringing more people into the local-first ecosystem.
0:24:26 And, Maggie's talk was like on a whole different level , and this is something
0:24:31 I was really excited about, that this worked out since, she's been, on my
0:24:36 radar for a long, long, long time.
0:24:39 Like when she started out creating those amazing visuals for like Egghead
0:24:43 videos, for Egghead courses, et cetera.
0:24:46 This is where I like always appreciated how thoughtful shegoes about communicating
0:24:53 difficult concepts and how, how much she thinks about those concepts that
0:24:57 she can communicate those to others.
0:24:59 And I think here, she's really taking it to the next level by immersing
0:25:03 herself in the local-first ecosystem that she has not really been directly
0:25:09 part of before but I think she has picked up all the right ideas.
0:25:14 In preparation and connected the dots for herself with other topics that are really
0:25:19 top of mind for her, end user programming, and coining a whole new term in the, in
0:25:24 the process, uh, as Sparefit Developers, which is a topic I want to explore
0:25:29 with her on a, on a future episode.
0:25:31 So certainly, um, some, some brilliant highlights and I think
0:25:36 Martin, also in a very nice way, reframed the state of the local-first
0:25:41 ecosystem, like redefine the goal.
0:25:44 What is local-first software?
0:25:46 what is maybe not local-first software, I think was a brilliant way to start today.
0:25:51 So now that we've covered the different talk highlights from, from
0:25:55 our perspectives, I'm curious, what are some of the core themes, core
0:25:59 learnings that are top of mind for you?
0:26:03 Conference core themes/learnings
0:26:03 Well, certainly we touched on already that bringing together these different people
0:26:06 who came to this, world with different motivations and different backgrounds do
0:26:12 click and gel and share values together.
0:26:14 So I think that was, a happy, a happy learning.
0:26:18 Getting a little more kind of nuts and bolts.
0:26:20 Uh, one of the things that really struck me was just the element of UI performance.
0:26:25 And obviously we're just talking about Linear there, but, we
0:26:27 had some demos specifically.
0:26:28 You showed your app, Overtone, sort of flipping between playlists
0:26:32 and comparing that to Spotify.
0:26:34 then, Aaron showed, yeah, the demo was Zero.
0:26:37 And we also saw there was a third one.
0:26:39 Maybe it was jazz.
0:26:40 In any case.
0:26:41 Yeah.
0:26:42 The thing that struck me seeing these different demos, so completely different
0:26:46 people building in many cases, pretty different products, but all of them
0:26:49 had this feel that was fundamentally different from most of the software
0:26:54 that we use in our daily lives.
0:26:55 And we've talked about.
0:26:57 UIs should be fast or, you know, no spinners or whatever.
0:27:01 And I think the way we wrote that in the original essay, I was thinking
0:27:04 like, okay, I log into Google drive and it spins for five seconds,
0:27:08 like literally 5, 000 milliseconds before I get a paint on the screen.
0:27:12 Okay, we can do better than that.
0:27:14 Maybe we could, you know, get things back in under a thousand milliseconds
0:27:17 or under 500 milliseconds, but all of these demos show Next frame performance.
0:27:22 That's something where it's, there's literally just no delay for in
0:27:26 terms of like human perception and it feels fundamentally different.
0:27:32 And to me, uh, when I think of how much human kind of energy and just
0:27:37 like soul is lost on waiting for software all the time, the idea of a
0:27:43 new generation software that is kind of next frame by default is, Very exciting.
0:27:48 And seeing them side by side, again, that several other, um, many people
0:27:53 building towards this have ended on a thing that has this fundamentally
0:27:57 same feel that is the same as each other, but different from everything
0:28:01 else we know outside of, I don't know, maybe like video games or something.
0:28:05 That was That would, for me, was very powerful.
0:28:08 And I think it's like, was not necessarily a new idea, but just reconfirming
0:28:12 that, seeing that in different contexts, uh, reestablished for me,
0:28:16 like, Hey, this is worthwhile doing.
0:28:18 and it's just every time I, for example, do a search in Notion,
0:28:23 particularly, uh, when you're in this weird middle ground between having
0:28:28 perfect connectivity and offline, this is where like more traditional, kind
0:28:34 Cache driven, web driven, software is like trapped in this middle ground.
0:28:39 like I was just riding on a train two days ago and I was dreading the moment
0:28:44 where I knew I needed to like change my Notion page and I need to navigate there.
0:28:49 And the, uh, I knew this, I had this page open yesterday and I wanted to
0:28:54 navigate it and like, it literally took me 30 seconds until enough packets kind
0:29:00 of flew in and I could navigate there.
0:29:02 And, uh, this can be so different.
0:29:05 And I think it's, uh, the, the different demos in the conference showed that to us.
0:29:10 So UI performance, and also the, the different perspectives from, tool builders
0:29:15 and app builders and people outside of the local-first ecosystem all connecting.
0:29:20 Anything else that, stood out for you as a, as a theme or a new learning?
0:29:24 Well, obviously sync engines were, a frequent topic, that
0:29:28 touched on in many ways.
0:29:29 One thing I was quite struck by is how much similarity in, I guess, architecture,
0:29:36 if that's a word for it, between all of these different presentations,
0:29:39 which included, you obviously have the infrastructure creators like
0:29:43 Jazz and DXOS and ElectricSQL and so forth, where they are very explicitly
0:29:48 and intentionally trying to design a good general purpose sync engine
0:29:52 infrastructure, architecture, API thing.
0:29:55 For lots of apps to use, but also we heard a version of that
0:29:59 from many of the app developers.
0:30:00 So for example, GoodNotes, and they're a really interesting case where a
0:30:03 very successful existing business.
0:30:05 They have like 30 million active users.
0:30:07 They're basically on every iPad in the world, effectively.
0:30:10 and they, you know, they came to local-first because they needed a
0:30:13 solution for essentially merging together rich text changes.
0:30:16 And they're describing how they're, they're using Automerge to do that, but
0:30:20 their core, Architecture, again, is this kind of event log model that then is fed
0:30:26 in and, you know, turned in, reactively rendered, and there's, um, that kind
0:30:32 of event or transaction based system is something you hear repeated again and
0:30:36 again, and indeed that, uh, there are many other kind of concepts in the, call
0:30:41 them the architecture diagrams, whether they actually put a diagram on screen
0:30:44 or not, or just talking about it, you saw that, again, all these builders,
0:30:47 some coming from the app side, some coming from the tool side, basically
0:30:51 arrived at kind of the same solution.
0:30:53 And again, that to me is surprising, but also heartening in the sense that
0:30:57 you give a lot of, different smart and capable people the same set of starting
0:31:01 conditions and problem statements.
0:31:03 And if they arrive at a similar solution, that means that solution
0:31:07 is something General purpose of wide utility, kind of a right solution if
0:31:13 that's, if that's the word for it.
0:31:14 So that was, that was very notable to me.
0:31:17 Indeed, one of the points that Martin made in his opening talk was,
0:31:20 in a few years, he'd like to see about going and getting an internet
0:31:25 standard made for a sync protocol.
0:31:28 And, uh, When he gave that, he's mentioned that to me privately.
0:31:31 And when he mentioned in his talk, I'm kind of like, yeah, I don't know.
0:31:33 Are we really like three years away from that?
0:31:35 Like kind of seems like it's still too early for that.
0:31:38 But then as I saw these architectural similarities across all these kind of
0:31:42 sync engine solutions, I was left with the feeling of like, Oh, actually I do
0:31:47 think we're a lot, I think he's right.
0:31:48 I think we are a lot closer than, than I thought we were.
0:31:50 Yeah, and I, I think this is a, this is the topic that I can't wait to,
0:31:55 to see materialize more into reality.
0:31:58 And I think there's like a longer timeframe there.
0:32:01 Maybe in three years from now, we do the first early drafts
0:32:05 of like a standardization.
0:32:07 Yeah, it's probably start the process in three years, not finish.
0:32:12 Exactly but until, until there's like a 1.
0:32:15 0 of something.
0:32:17 There's like a reference implementation, etc.
0:32:20 That's going to take a longer time and until maybe there are some pieces that
0:32:25 need to actually trickle into browsers or operating systems, that's, uh, even
0:32:30 further down the road, but I think we're certainly reaching a point where
0:32:34 we've explored a bunch of different approaches in the ecosystem where we can
0:32:39 now try to converge on some of those.
0:32:42 And, what you've mentioned before, the kind of impromptu working group around
0:32:48 authentication problems, et cetera, that is a major aspect and there are other
0:32:52 major aspects that need to still be figured out, but it's really amazing to
0:32:56 see how collaborative the entire ecosystem is where, yeah, different vendors and
0:33:02 different individual tool builders, app builders, all come together, share their
0:33:06 experience, and, trying to, to help create like some sort of, convergent technology
0:33:13 into existence, that's really cool to see.
0:33:16 Another way to frame that same, same direction you're going is kind of solve
0:33:21 problems versus unsolved problems.
0:33:23 And so increasingly, I think.
0:33:24 A lot of the stuff in the sync engine side of things, can and should have
0:33:28 many sort of competing solutions out of the marketplace, um, that fit different
0:33:33 styles and, you know, maybe different language ecosystems and things like that.
0:33:37 But in some senses, how to do a sync engine in this way, is mostly figured out.
0:33:44 And actually one of my goals for the, the conference content was that the
0:33:51 term CRDT should not appear too often.
0:33:55 Um, because typically, again, you go to, some of the past events, that
0:33:59 have, have existed with this or attend.
0:34:01 You know, a conference or a meetup or just have a conversation with
0:34:05 someone or anytime the topic comes up on Hacker News and people tend
0:34:10 to be focused around the, yeah, but how do you merge changes together?
0:34:13 And there is still plenty of interesting research being done on the CRDT side
0:34:18 of things, and there will always be need for new data types as we.
0:34:21 expand the different applications that people are applying this to,
0:34:23 but ultimately how to build a basic CRDT and put that into a sync engine
0:34:29 and make that work reliably across different devices and multi user,
0:34:33 basically have that figured out.
0:34:35 It's just now, it's a small matter of engineering now, which is still
0:34:38 a huge challenge, but in the sense of like being a figured out thing.
0:34:44 I think we're, we're basically there.
0:34:46 Whereas there are other things here, and, uh, this was, uh, you know, a
0:34:49 topic for the day, to some extent, is what are the unsolved problems?
0:34:52 Um, that includes things like, uh, schema and, uh, schema migrations, uh,
0:34:57 over time, identity, as I previously mentioned, kind of authentication,
0:35:02 um, and, and permissions generally.
0:35:05 And there's other stuff as well.
0:35:06 but yeah, I think that as a community, a way to kind of collaborate loosely,
0:35:10 even though we're all working on our own projects, is to think in terms of
0:35:14 like, what are the relatively solved problems that we can codify with, I
0:35:18 don't know, writing or, you know, open source libraries or things like that.
0:35:21 We say this, this we basically have settled on the right way to do it.
0:35:26 and there's many implementations of that.
0:35:28 and then other areas where we still need a wide and diverse set of active experiments
0:35:33 to try to figure out how are we going to, how are we going to solve this problem
0:35:37 in a local-first, uh, compatible way.
0:35:39 This is also what stood out to me and talking to speakers, talking to, to
0:35:45 other attendees, is how have they.
0:35:48 who ship products, who shipped apps, how have they navigated the trade off space?
0:35:54 some have like used off the shelf, technologies such as
0:35:58 like AutoMerge, Yjs, etc.
0:36:00 But then you're sort of at the mercy of how far those technologies are along and,
0:36:06 the inherent or current insufficiencies of those technologies are also, hard
0:36:14 to, advance for, for you yourself.
0:36:17 And, uh, I think there's a notable other approach for, for app builders,
0:36:23 which is that they don't yet use one of those off the shelf technologies,
0:36:27 but they've rolled their own.
0:36:29 And, whether that's Good Notes or whether that's Linear, et cetera,
0:36:32 they've all started so early that They were convinced this is the right idea,
0:36:37 this is the right approach, but we don't want to wait five years for the
0:36:41 technologies to be there or to be mature enough, so they built it themselves.
0:36:44 And I think this is something that so many of those local-first apps
0:36:50 have that in common, which is very encouraging for me because, at the
0:36:54 core of it, Those you can make really drastic trade offs, um, that fit your
0:37:00 app use case and your app requirements that might not need all the guarantees
0:37:06 something like AutoMerge can provide.
0:37:07 And this can help you going kind of almost counter intuitively
0:37:12 where, only very few would build their own Ruby on Rails to ship.
0:37:16 A Rails app, but it, in a way you can get away with way stricter
0:37:22 trade offs for your specific apps.
0:37:24 So building your own syncing stack is actually not as much work.
0:37:29 If you, have sort of like a, Like two months from Linear, if you have that
0:37:34 sort of experience and, if you're daring enough that you feel like this
0:37:38 is something that you want to do, but I think that's a, that's a similarity.
0:37:43 And what is most interesting to me about that as well is that the trade off space
0:37:49 is traversed in a very heterogeneous way.
0:37:55 So, depending on how someone has struck some trade offs, they might be way
0:38:01 further along to solve certain problems.
0:38:04 So, if you, for example, follow more of like a event sourced architecture, then
0:38:10 you might have entirely different ways to deal with the schema migration problem.
0:38:15 Uh, for example, if you, implement your own CRDT stack or you have other benefits.
0:38:20 So, and I think this now gives us a pool of experiences where one technology
0:38:26 can learn from the entirely different architectural approach and, uh,
0:38:31 sort of cross pollinate, the ideas.
0:38:33 And so this was really interesting to exchange those ideas and that
0:38:38 was kind of my main takeaway.
0:38:40 Absolutely.
0:38:41 I think, you know, maybe the last takeaway I would probably mention was
0:38:45 just, um, probably some of my favorite conversations there were talking to the
0:38:50 People I put in the local-first curious demographic, sometimes they were, you
0:38:53 know, colleagues with someone who was deeper in that world and this was a chance
0:38:58 for them to better understand this, this weird thing their colleague was into.
0:39:02 In some cases, they just had seen the buzz online and wanted
0:39:06 to, to find out about it.
0:39:07 Yeah, for, for example, the, you know, schema migrations being something that is,
0:39:11 at least the many in the community feel is, is, is largely an unsolved problem.
0:39:17 And then that caused one person I was talking to be like, whoa, whoa, whoa, I
0:39:21 don't want to have anything to do with the technology that, that hasn't solved this.
0:39:25 because you know, this is so, that's such a fundamental thing to, you
0:39:28 know, building an app in the long term and with a data stack you can trust.
0:39:32 Which I thought was a, which I thought was an interesting perspective.
0:39:34 And I was kind of like, don't worry, we'll solve it.
0:39:36 And that didn't necessarily, you know, put their, put them at ease, but it is a,
0:39:40 you know, it was a good illustration of the fact that we are trying to go across
0:39:43 the cusp of the threshold from, you know, academic, big idea, ivory tower into real
0:39:50 world thing you can use, but you know, it's, it's, it is still an intermediary,
0:39:55 intermediary state very much.
0:39:57 Very much bleeding edge.
0:39:59 Another person I talked to said basically that, you know, they were new to it,
0:40:04 but they, the energy that they felt, was really, um, unique and interesting.
0:40:09 And they, made a comparison I, I found very positive, which was to
0:40:13 say they basically hadn't felt the same thing since being part of, or
0:40:16 being around in the React world circa 2013, where kind of, and obviously
0:40:20 there, there was a, a main library that everything centered around, but I
0:40:23 think in general, the idea of reactive.
0:40:25 UIs and reactive rendering as kind of the right solution for, for building
0:40:30 applications of all kinds was, you know, was kind of this fresh,
0:40:35 um, but, but clearly correct idea.
0:40:38 But similarly there, I guess, coming back to the, you know, still a work
0:40:42 in progress, bleeding edge Stuff to figure out if you were part of the
0:40:46 React community back then, things like state management, you would, you
0:40:50 know, you would pick up a library that was supposed to be the, uh, you know,
0:40:53 this is the way the community does it.
0:40:55 This is the state of the art and you use it.
0:40:57 And six months later, that library is deprecated.
0:40:59 And another one is, is now considered the, and you're like, wait a minute, I'm
0:41:02 trying to build an application here and I'm not just sort of on shifting sands.
0:41:05 And that is, you know, that of course is the trade off being, being part of a
0:41:08 community that's still so so young and, and in the process of figuring it out.
0:41:13 But to me, it's what makes it so exciting.
0:41:14 Cause there are so many problems to solve and not only engineering and
0:41:19 technology wise, but design wise, we need whole new UX and UI patterns in
0:41:24 many cases to describe things like.
0:41:26 Sync state, pick a very simple one.
0:41:28 So that being on the frontier in that way is to me, uh, uh, is quite a lot of fun.
0:41:33 Yeah, it was certainly my happy place.
0:41:35 I consider myself to be like a technical pioneer and the conference
0:41:41 had an incredible density of other technical pioneers where it could just
0:41:46 exchange sort of weird battle stories of how you deal with, taming the
0:41:52 browser to, to do what you want and, to make things work cross platform or
0:41:58 certain performance tricks, et cetera.
0:42:00 So it was certainly my, my happy place.
0:42:02 I want to slightly shift gears and talk about another theme that stood
0:42:07 out for me across the different conversations I had, and also across
0:42:12 the different talks that we heard, which was more around centered around
0:42:16 the definition of local-first itself.
0:42:19 And Martin kicked off the day by reiterating, the, the initial
0:42:23 ideals for, for local-first.
0:42:26 And I invite everyone to watch Martin's amazing, keynote talk there as well
0:42:31 to, to hear those, those words for yourself, but I think the ideas were.
0:42:36 Kind of reflecting on the initial essay, how the initial essay laid out,
0:42:41 the, the seven ideals for local-first software, but that was never really
0:42:46 like a strict definition of what is local-first software actually.
0:42:50 And also importantly, what is not local-first software.
0:42:54 So Martin provided, some new ideas about that, which maybe you want to recap
0:42:59 them here, but this also then led to an interesting follow up conversation
0:43:05 of like many of the products that were showed throughout the conference would
0:43:10 not fully qualify as local-first software.
0:43:13 And I think this is, some people feel more passionate about, like,
0:43:17 very strictly, defining, oh, this is local-first software, whereas
0:43:21 this is not local-first software.
0:43:23 And I think there's this interesting trade off and interesting tension for, for us
0:43:28 as a, as a community, as an ecosystem That I would like to see is that we see, um,
0:43:35 that see like an app sort of like on a progression, on a spectrum of like growing
0:43:40 up to become local-first and as a powering technologies such as Automerge, et cetera.
0:43:47 As they mature, it's gonna make it much easier to build fully
0:43:50 compliant local-first software.
0:43:52 But kinda.
0:43:53 grappling with that definition of local, pure local-first software, I'd be
0:43:58 curious whether you have some thoughts on that and want to reflect on it.
0:44:01 Yeah, this is an important question as the community grows up and especially
0:44:05 again, comparing to a community built around a particular open source library
0:44:09 or something like that, you don't have that same definitional thing.
0:44:13 Although even there, you can sometimes have something where a major new
0:44:15 version, it takes the library in a different direction and then people
0:44:19 say, this isn't what I was here for.
0:44:21 This isn't the core of what we're all about.
0:44:24 local-first is unique in that it is, yeah, philosophy and a
0:44:27 set of ideals, that we think.
0:44:29 imagines a better world or a better type of software, but not a specific
0:44:33 implementation or single library.
0:44:36 and we always, you know, that initial definition of the, the goal is data
0:44:40 ownership for people who use computers for creative and productive purposes.
0:44:45 If I'm writing a book, The book belongs to me, and the software should reflect that.
0:44:50 and then the seven ideals are sort of like the, also, in some sense, you could
0:44:53 also describe them as user benefits.
0:44:55 These are things that you get as a result of kind of building in this
0:45:00 way, and that therefore you can, as we conceptualize it then, essentially create
0:45:04 a scorecard, and that implies a spectrum.
0:45:06 If you score a zero out of seven, I think it's fair to say you don't
0:45:10 really count as local-first software.
0:45:12 Uh, you know, try again.
0:45:13 If you score two out of seven, well, you know, it's a start.
0:45:16 That's, that's pretty good.
0:45:17 If you score five or six out of seven, then you're doing great.
0:45:21 I mean, I think to some extent it's almost not even fully achievable in
0:45:26 the real world to, to have truly seven out of seven and also have a, you
0:45:30 know, a product that's widely used.
0:45:32 I think that will change, I think, as we continue to, if we push the, push
0:45:35 the boundaries on this, there is a day when you can imagine that all software,
0:45:39 again, you referenced that earlier, like things built into the operating system,
0:45:43 fundamentally, I think that the, the ultimate utopia for local-first or the
0:45:46 ultimate, again, idealized world that I picture with it is our computers are
0:45:51 fundamentally built in this way and things are built into the operating system or
0:45:55 into a platform like web technologies that is specifically designed to support,
0:46:01 um, this way of software existing.
0:46:04 But until then, you know, we'll take, you know, I think Muse, for
0:46:07 example, we called that local-first software, but we probably scored a
0:46:10 three or a four out of the seven.
0:46:12 And that was because we identified, coming back to that trade offs point you
0:46:15 were making earlier, we identified Here are the things that we think are really
0:46:20 ready for primetime now, where now was a couple of years ago, and, that we can
0:46:24 implement on our team and that sort of benefits our business and our users.
0:46:29 Here's some other ones that we're just going to leave out of scope for now.
0:46:32 That's aspirational for the future, but right at this moment, it's not pragmatic
0:46:37 for us to, for us to pursue that.
0:46:39 So I think this is sort of the, this very interesting striking a fine balance
0:46:43 between being pragmatic and being idealistic, and where being pragmatic
0:46:48 might help you shipping sooner, whereas being idealistic, might take you longer.
0:46:54 But, uh, enables your users with, providing more of the benefits and
0:46:58 ultimately full data ownership.
0:47:00 And I think the, the hardest, ideal to kind of reach right now, which
0:47:04 Martin spelled out, uh, very explicitly is like, if the, the app builders
0:47:10 go out of business, the app still.
0:47:12 can work and, so that the app is not, degraded in functionality.
0:47:17 And I think that takes a lot from a company like Linear, et cetera.
0:47:22 That's probably takes most of the backseat and accomplishing the ideals,
0:47:27 very understandably so, because you building an app, et cetera.
0:47:31 got to, for most people got to pay the bills and this is the hardest
0:47:35 to achieve and, probably also helps the least in the short term in terms
0:47:40 of getting new users, et cetera.
0:47:42 So I hope that we'll reach at some point, from a technological advancement that
0:47:47 this is just so easy, that self hosting becomes so easy, that data ownership,
0:47:52 the operating system all supports that, that we have a generic sync server.
0:47:57 that we get this ideal almost for free by using the right technologies, but
0:48:02 I think right now you need to fight the hardest to achieve that ideal.
0:48:07 Yes, that's right.
0:48:07 And again, that comes into built into the platforms and the operating systems
0:48:11 and the foundational layer, right?
0:48:13 Like you can try to talk users into using, I don't know, end to end
0:48:18 encryption in their email by like generating PGP keys or whatever, but
0:48:24 ultimately, things like the mobile.
0:48:27 Operating system platforms with their secure enclaves and key management
0:48:30 built in and biometrics and secure messaging apps that kind of make all
0:48:36 that easy and make it just, again, part of the foundations where a
0:48:41 regular person can, an app developer can build this reasonably and a
0:48:44 regular person using it can access it.
0:48:47 It requires more than what any individual.
0:48:50 builder or any individual app creator can, can do.
0:48:53 So, so you do your best, uh, with what you have.
0:48:55 Yeah.
0:48:56 So to, yeah, exactly.
0:48:57 So Martin's description, which you should definitely watch the video of
0:49:00 his talk, but is the thing that makes something local-first is that no one can
0:49:06 kind of take your data away from you.
0:49:09 And I think in these, it's hard to separate the data and the app to some
0:49:14 extent, because While there are standard file formats and things like that, the
0:49:17 reality is just that, like, if Notion stops working, but I have an export of a
0:49:22 zip file of a bunch of HTML or however it exports, it's like, well, I kind of have
0:49:28 my data, but not really, I don't, without the functionality of the application and
0:49:32 the way to navigate links and search and add new things, whatever, I kind of have,
0:49:37 I really have lost something, like My corpus of whatever I had in Notion to,
0:49:41 in this example, would be lost to me.
0:49:44 and his description is basically, yeah, the company going out of
0:49:47 business and being acquired and the owner deciding to, you know, do a
0:49:51 hard pivot in some direction that, you know, you know, kicks out a bunch of
0:49:55 the former users and customers, uh, or just simply, yeah, servers going
0:49:59 offline, right, is the short, is the, is the near term version of that.
0:50:03 And that, you know, the classic thing of like, oh, Slack's down, GitHub's
0:50:06 down, or whatever means now I can't work, that, that would not be the case.
0:50:12 So, I really like that as like a much, A really boiled down litmus test that
0:50:17 if you have that, all the other stuff is probably going to tend to come with it.
0:50:22 so I like it as a, again, an aspirational thing.
0:50:25 I think it's a longer term thing.
0:50:26 I think it's a thing where we're all trying to move towards.
0:50:29 You can build in that way today, but again, there are, there are
0:50:31 trade offs to make, especially if you're a commercial business.
0:50:34 Depending on what exact domain you're in and what platform you're on and so forth.
0:50:37 For example, it's probably a lot easier to do that if you're in a, uh, kind
0:50:40 of like a building a native app and then if you're building a web app.
0:50:43 , but I, I think that is a really nice, definition.
0:50:46 Now he also said in his talk, you know, while he is a, a cornerstone person in
0:50:51 this, community, it is a community, right?
0:50:53 No one has, you know, there, there's no, uh, there's no benevolent dictators here.
0:50:57 Or dictators of any kind, I guess, and he, he has a lot of moral
0:51:01 authority, but he can't just say this is, this is what it is.
0:51:04 We all have to decide that for ourselves.
0:51:07 And so, to some extent, I think also this could kick off a discussion about that for
0:51:12 the community have sort of with itself.
0:51:14 And again, I have my opinions.
0:51:16 You have yours.
0:51:16 Martin has his, um, but I think Again, we, we may play key roles in the
0:51:21 community and helping get things started.
0:51:23 But what makes it as a community is we're all defining it together.
0:51:26 So I think to me, it's very healthy to have those discussions and hopefully it
0:51:30 doesn't turn into a purity or a holier than thou discussion, but it does turn
0:51:34 into a practically speaking, what unites us, what are we doing here and how do we
0:51:44 Post-conference perspectives
0:51:44 Exactly, and I think the conference, is a great result and a great milestone
0:51:50 in that spirit, where it attracted people who've been doing local-first
0:51:55 software development for way longer than the essay has been around, brought in
0:52:00 people who found out about the ideas of local-first because of the essay.
0:52:04 And now this community is like growing in a very organic way to
0:52:10 propagate those ideas and kind of figure out the right trade offs.
0:52:13 And ultimately it is still about the benefits for the users and
0:52:18 the benefits for developers.
0:52:19 This is what brings people to the table.
0:52:22 So I'm very excited how all of that is like very organically evolving.
0:52:27 So I'm curious whether.
0:52:29 The conference has somehow changed your own perspective on local-first, since in a
0:52:34 way, when you wrote that essay, I'm, I'm sure there was sort of like an interesting
0:52:38 balance between seeing, Oh, this is achievable and theoretically possible,
0:52:43 but probably also a bit of like a kick in the butt for the developer community
0:52:48 is like, Hey, we can do this differently.
0:52:50 But, I'm not sure whether you would have put down money on that
0:52:53 day when you published it to say like, uh, everything's going to be.
0:52:57 in the future like that.
0:52:59 So I'm curious whether the conference as a very, very concrete point in
0:53:03 time has changed your perspective and outlook on the future of local-first?
0:53:08 It has.
0:53:09 I mean, the, mainly just the energy and it hasn't changed my sense on like,
0:53:14 what the direction should be or, or, Again, coming back to this is, this
0:53:18 is how I would like the world to be.
0:53:20 How I would like the world of technology or software to be.
0:53:24 That has been the same since probably I saw the first experiments, uh, that
0:53:28 Peter was leading back at Ink and Switch circa 2017, and I saw what software could
0:53:33 be like, how fast the data ownership piece, the developer experience, the
0:53:39 simplicity of not needing to run servers were very few, when I saw those, those
0:53:43 first demos, they weren't, they were working software, but they weren't.
0:53:46 You know, production ready.
0:53:47 And I knew that at the time.
0:53:48 And, and when we wrote the essay, we felt we had learned enough that we
0:53:51 could write down these, these ideas in a way that we hope would be compelling.
0:53:56 But absolutely at the time, someone came to me and said, Oh, great.
0:53:59 Should I build my app in this way?
0:54:00 I would be like, probably not.
0:54:02 Uh, and indeed, even today, if someone was asking for pragmatic advice, I
0:54:06 would say, okay, well tell me exactly what domain you're in, exactly what
0:54:11 stage you're in, what kind of users you have, because it remains, you know,
0:54:15 there's a lot of trade offs being so.
0:54:17 so on the bleeding edge, but I think the conference mainly convinced me that
0:54:21 certainly there's more people doing this, actually doing it directly, like
0:54:25 doing it as a day job or a very serious side project, than I thought there's
0:54:30 more interest from the wider world of application developers than I thought.
0:54:34 and that, yeah, maybe, maybe the time is now in the sense of, I'm not sure
0:54:39 what the action is there, I guess.
0:54:42 Um, but if, if, if a person does want to do something in the space and again, the
0:54:45 action we've chosen to take is put on a conference, cause that's what felt right.
0:54:50 And indeed we can, um, you know, discuss the, is there a next year, piece of it.
0:54:54 But, certainly there's something really here.
0:54:58 You can see that it's taking shape.
0:55:00 and if this is something I think you're interested in getting involved in
0:55:04 now is absolutely the perfect time.
0:55:06 That's my, that's my takeaway.
0:55:08 And for me, you know, I was obviously, I've obviously been involved a long time,
0:55:12 but it's basically reignited my interest, you know, in some ways I drifted away
0:55:15 from it in the last few years because I was working on other things and because,
0:55:19 yeah, essentially it hadn't reached this level of maturity either in the
0:55:22 technology or in the kind of the ideas finding their way in the community.
0:55:26 But now I see, uh, the incredible resonance it has.
0:55:29 I say, okay, there's, there's something here.
0:55:31 Yeah, and I want to share one anecdote or memory that's still in my mind
0:55:38 from, I think, a lunch that you and I had in Berlin sometime last
0:55:42 summer, where I think you've asked it even sometimes before then, it's
0:55:47 like, hey, why is no one building a Ruby on Rails for, for local-first?
0:55:51 And so this was at that point, I think was like one and a half
0:55:55 years into building Overtone.
0:55:57 And I've been, working on Riffle together with Jeoffrey, et cetera, but it was so
0:56:01 tailor made for Overtone that, at least from my perspective, I didn't really see
0:56:08 a path how Rffle could turn into a Ruby on Rails that can empower local-first
0:56:16 and also the other technologies in the local-first ecosystem weren't quite
0:56:20 ready and on that trajectory yet.
0:56:22 But I think within the last year, I can really see, A bunch of technologies,
0:56:27 really nicely being on the trajectory of being that Ruby on Rails or pick any
0:56:32 other analogies that like facilitates this, like new way of building.
0:56:37 I can see this much more clearly now than, than ever before.
0:56:40 And so I think finally I get to give you a different answer
0:56:44 than what we had at that lunch.
0:56:46 And I think this is just going to be such a multiplier and there's
0:56:50 different trade offs, different flavors and shapes of Ruby on Rail is.
0:56:54 But I think this will be another inflection point that allows those
0:56:59 local-first curious people, maybe not the pioneers, but the local-first
0:57:03 curious to flip their default to building a new app local-first
0:57:08 without paying the pioneer's tax.
0:57:11 And, maybe we've reached or gotten a lot closer to that point in a year from now.
0:57:16 So I'm very much looking forward to that.
0:57:17 Absolutely.
0:57:18 Yeah.
0:57:18 If you put it in the frame of the crossing the chasm adoption curve.
0:57:22 Which I think a lot of folks have seen, and if not, you can do a web search for
0:57:26 it, but there's the early adopters who are there often because it is novel,
0:57:31 because it's exciting, because there's interesting new stuff that you can't
0:57:35 get, but They're not really there for, yeah, pragmatism is not the The thing
0:57:40 they're there for that literally the novelty and that there's a little bit of
0:57:44 a chasm you have to jump over but then the next big block of people who might
0:57:49 adopt are what they label pragmatists and those are people for whom they have
0:57:54 a pain to solve that is so strong that they are willing to step outside of
0:58:00 the status quo of known good solutions a little bit to find that solution.
0:58:04 That comes back to the, you know, someone asked me to advise them on, should I
0:58:07 build my, my new app local-first today?
0:58:10 And I would want to know a lot of the details because you would, if there's a
0:58:13 very specific problem to solve, this is exactly the case for you with Overtone
0:58:18 and the kind of music ownership, piece of it for the, for the audio files.
0:58:21 That's something that's really.
0:58:23 Good fit.
0:58:24 other things maybe are You know, in the end, I kind of hope all software will
0:58:28 be local-first, but there's varying degrees to which paying that, being
0:58:33 early tax, the pioneer taxes, as you described it, may be worth it depending
0:58:38 on the domain that you're building for.
0:58:39 But of course, over time, that pioneer tax gets less and less.
0:58:42 It's already gotten way less than last year, and probably in the
0:58:45 last six months, it will get less.
0:58:47 It's going to continue going down, and so that makes the trade off.
0:58:51 to think about less and less.
0:58:52 And eventually it just becomes the pragmatic solution to just
0:58:56 say like, Oh, obviously you're going to do things that way.
0:58:58 That's just kind of the best way.
0:59:01 What's next for Adam?
0:59:01 That's awesome.
0:59:02 Adam, what is next for you?
0:59:03 You've been a true pioneer for the entire local-first ecosystem.
0:59:08 You've been working on Muse over the last couple of months.
0:59:12 I've seen you involved in a couple of other interesting projects.
0:59:16 So for, for those of you who follow you closely, what can we expect?
0:59:22 Yeah, well, I'm taking some time this year to just kind of wander a bit, try
0:59:27 some weird projects, work with new people.
0:59:29 Indeed, that's how I ended up, uh, being open to the idea of helping
0:59:34 put on a conference, which is something I'd never done before.
0:59:37 Uh, so when you approached me for that, I, I said, yeah, this, this
0:59:40 fits into my, fits into my theme.
0:59:41 I've always wanted the chance to work.
0:59:43 Directly with you.
0:59:44 And, uh, it's obviously the right time for the community.
0:59:46 And yeah, just an interesting learning experience for me.
0:59:49 Um, yeah, relatedly, got to work with Jeoffrey Litt and Ink and Switch on the
0:59:53 Patchwork project doing universal version control, which to me is a, is an idea
0:59:58 that is built on local-first quite a bit.
1:00:00 I see local-first in some ways as like the first layer, when you have that foundation
1:00:04 of a new kind of computing down, you can build a lot of cool things on top
1:00:07 of that and the, the universal version control steps us in that direction.
1:00:12 and then I'm also at the moment wrapping a project with Elicit, which is an
1:00:16 AI powered kind of literature search tool, so it basically helps scientists,
1:00:21 particularly doing systematic reviews, so that for me has been a chance to get a
1:00:25 real crash course in the language model.
1:00:27 And AI, world of things, working with some really world
1:00:30 class machine learning people.
1:00:32 So, and, and see what that's like to apply to a, to a real world problem.
1:00:37 Uh, and after this, we'll, uh, we'll see.
1:00:39 But I'm, I'm continuing to kind of wander around, do, do interesting small projects.
1:00:43 in terms of, yeah, obviously my interests around everything.
1:00:47 That Ink & Switch ever works on like end user programming and, and, uh, infinite
1:00:51 canvases and local-first, will continue to be the center point for my, for my career.
1:00:56 So I'm always looking for opportunities to push those, those ideas, uh, forward.
1:01:02 And again, coming out of this conference, it's just this feeling that there's
1:01:05 something really happening in local-first and, you know, I want to try to help push
1:01:10 that forward in, in whatever way I can.
1:01:12 What, what exact way that will be, uh, haven't, haven't
1:01:16 Outro
1:01:16 Well, thank you so much for your wandering for over the past couple of decades.
1:01:22 I think this has always served as an incredible well of inspiration to me
1:01:27 and many others, whether it's how you showed how simple software deployment
1:01:33 can be with Heroku, and what has led you to, together with Peter and the
1:01:38 others, frame the ideas and the ideals of local-first and then also ship beautiful
1:01:45 software with Muse and the projects that you've been involved with since.
1:01:50 I can't wait to see where your mind takes you in the future.
1:01:53 So thank you so much for that.
1:01:55 And thank you so much for coming on the show.
1:01:56 Thank you for, for all the, all the lovely words.
1:01:59 And, uh, yeah, thanks for having me.
1:02:00 It's a lot of fun and all looking forward to continuing listening.
1:02:04 Thank you for listening to the local-first FM podcast.
1:02:07 If you've enjoyed this episode and haven't done so already, please subscribe and
1:02:10 leave a review wherever you're listening.
1:02:12 Please also share this episode with others.
1:02:14 Spreading the word about the podcast is a great way to
1:02:17 support it and to keep it going.
1:02:19 A special thanks again to Rocicorp and Expo for supporting this podcast.
1:02:23 See you next time.