1 00:00:00,000 --> 00:00:03,319 You know, in the end, I kind of hope all software will be local-first, but there's 2 00:00:03,329 --> 00:00:09,980 varying degrees to which paying that, being early tax, the pioneer taxes, as you 3 00:00:09,980 --> 00:00:13,273 described it, may be worth it depending on the domain that you're building for. 4 00:00:13,273 --> 00:00:16,013 But of course, over time, that pioneer tax gets less and less. 5 00:00:16,023 --> 00:00:18,996 It's already gotten way less than last year, and probably in the 6 00:00:19,366 --> 00:00:20,996 last six months, it will get less. 7 00:00:21,376 --> 00:00:25,273 It's going to continue going down, and so that makes the trade off. 8 00:00:25,668 --> 00:00:26,838 to think about less and less. 9 00:00:26,838 --> 00:00:30,378 And eventually it just becomes the pragmatic solution to just 10 00:00:30,378 --> 00:00:32,298 say like, Oh, obviously you're going to do things that way. 11 00:00:32,298 --> 00:00:34,298 That's just kind of the best way. 12 00:00:34,858 --> 00:00:36,988 Welcome to the local-first FM podcast. 13 00:00:37,088 --> 00:00:40,068 I'm your host, Johannes Schickling, and I'm a web developer, a 14 00:00:40,068 --> 00:00:43,328 startup founder, and love the craft of software engineering. 15 00:00:43,788 --> 00:00:47,928 For the past few years, I've been on a journey to build a modern, high quality 16 00:00:47,928 --> 00:00:50,028 music app using web technologies. 17 00:00:50,248 --> 00:00:54,328 And in doing so, I've been falling down the rabbit hole of local-first software. 18 00:00:54,738 --> 00:00:58,718 In this episode, I'm speaking to Adam Wiggins, who's the founder of Heroku 19 00:00:58,948 --> 00:01:03,068 and one of the original co-authors of the local-first essay by Ink & Switch. 20 00:01:03,618 --> 00:01:07,668 As Adam is also a co-organizer of the first Local-First Conference, in this 21 00:01:07,668 --> 00:01:11,498 conversation, we reflect on the event, share our learnings, and discuss a 22 00:01:11,498 --> 00:01:15,698 couple of key topics, such as a new definition of local-first software. 23 00:01:16,168 --> 00:01:19,768 Before getting started, also a big thank you to Rosicorp and 24 00:01:19,778 --> 00:01:21,928 Expo for supporting this podcast. 25 00:01:22,298 --> 00:01:24,428 And now my conversation with Adam. 26 00:01:25,151 --> 00:01:26,681 Hey Adam, welcome to the show. 27 00:01:26,691 --> 00:01:27,361 How are you doing? 28 00:01:27,688 --> 00:01:30,018 Hey Johannes, I'm doing really well. 29 00:01:30,028 --> 00:01:34,118 Still kind of glowing with the buzz of a successful conference. 30 00:01:34,998 --> 00:01:37,538 Yeah, I'm super excited to have you on the show. 31 00:01:37,618 --> 00:01:41,528 Uh, and to be fair, this show probably wouldn't exist without you since you've 32 00:01:41,548 --> 00:01:46,291 provided a lot of guidance behind the scenes, given that you've, run this, this 33 00:01:46,321 --> 00:01:52,061 amazing podcast for Metamuse, which has always been a lot of inspiration to me. 34 00:01:52,456 --> 00:01:55,726 And so you've certainly been a bit of a catalyst for me to start this 35 00:01:55,756 --> 00:02:00,196 podcast, but for the audience who's maybe not as familiar with you, would 36 00:02:00,196 --> 00:02:03,996 you mind briefly giving a background and what led you to local-first? 37 00:02:04,373 --> 00:02:04,973 Certainly. 38 00:02:05,373 --> 00:02:09,243 Well, I think a lot of folks might know a company I started called 39 00:02:09,243 --> 00:02:13,783 Heroku, which does web app deployment, very cloud centric, which is sort 40 00:02:13,783 --> 00:02:17,943 of part of the story of what brought me to local-first is going all in 41 00:02:17,953 --> 00:02:20,663 on cloud when that was on its rise. 42 00:02:21,046 --> 00:02:25,716 Since then, I founded a industrial research lab called Ink & Switch, which 43 00:02:25,746 --> 00:02:30,586 I'm guessing listeners of the podcast may often know that that was the place 44 00:02:30,586 --> 00:02:35,406 where we gestated first the research, the kind of CRDT and peer to peer stuff 45 00:02:35,446 --> 00:02:40,226 that led into us forming this position piece, which we eventually decided to 46 00:02:40,236 --> 00:02:44,536 give the label local-first software and indeed has continued to try to 47 00:02:44,596 --> 00:02:46,516 push forward in that, in that field. 48 00:02:47,346 --> 00:02:51,426 And after that, I went to work on a spin out from the research lab called Muse, 49 00:02:51,806 --> 00:02:55,386 which is an infinite canvas for thinking, did that for about four years before 50 00:02:55,396 --> 00:02:59,379 handing it over to my colleague who's still running it, and, we built that 51 00:02:59,419 --> 00:03:04,609 as a fully local-first system, kind of homegrown, and, Yeah, that's, uh, that's 52 00:03:04,609 --> 00:03:06,059 what brought me, brought me to today. 53 00:03:06,636 --> 00:03:11,529 Yeah, I feel like there's a lot to unpack and to go deeper, but that is not the 54 00:03:11,529 --> 00:03:16,769 focus for today's episode, since, you and I have not just been collaborating on the 55 00:03:16,779 --> 00:03:23,479 podcast, but also on another undertaking, which is the first Local-First Conference 56 00:03:23,539 --> 00:03:25,669 that we did together in Berlin. 57 00:03:26,239 --> 00:03:32,188 And so this conference kind of came to be as I did last year, when Jeoffrey 58 00:03:32,188 --> 00:03:36,928 Litt was in town, I wanted to meet with Jeoffrey and a whole bunch of other people 59 00:03:36,928 --> 00:03:38,558 and the common theme was local-first. 60 00:03:38,868 --> 00:03:44,228 So I felt like a good way to accommodate all of that is like led to me doing 61 00:03:44,248 --> 00:03:46,358 a local-first meetup in Berlin. 62 00:03:46,631 --> 00:03:50,261 That went so well and had so many people show up and so many interesting 63 00:03:50,261 --> 00:03:54,231 conversations that at a minimum, I was thinking of doing the meetup 64 00:03:54,291 --> 00:03:59,681 again, but I was floating the idea of doing a Local-First Conference, 65 00:03:59,681 --> 00:04:01,431 and taking sort of that next step. 66 00:04:01,431 --> 00:04:04,741 I was floating this idea with you and I was floating this idea with a 67 00:04:04,741 --> 00:04:08,798 few other friends who I organized, the GraphQL conferences in the past. 68 00:04:08,838 --> 00:04:10,288 So one thing led to another. 69 00:04:10,818 --> 00:04:16,431 And, jokingly thinking about starting this conference led to us actually grouping 70 00:04:16,431 --> 00:04:18,321 up, doing the conference together. 71 00:04:18,761 --> 00:04:22,561 And, I think it went absolutely brilliantly. 72 00:04:22,591 --> 00:04:27,011 So, so many interesting folks Giving amazing talks, so many interesting 73 00:04:27,031 --> 00:04:32,351 conversations of in between the talks and people came from all 74 00:04:32,351 --> 00:04:38,331 across the world, from like Hawaii to Australia to Singapore and Bangkok. 75 00:04:38,341 --> 00:04:43,699 And so that went way beyond my expectations, but I suppose only 76 00:04:43,749 --> 00:04:47,189 a few amount of the people who are listening to the podcast maybe had 77 00:04:47,439 --> 00:04:51,049 the chance to actually attend since the tickets were kind of flying 78 00:04:51,069 --> 00:04:52,519 off the shelves pretty quickly. 79 00:04:52,839 --> 00:04:58,469 So would you mind providing a recap of like what the conference, how 80 00:04:58,469 --> 00:05:00,999 that actually went down for, for the few days where it happened? 81 00:05:01,469 --> 00:05:03,269 Yeah, there's a lot to tell there. 82 00:05:03,639 --> 00:05:07,539 Uh, if I can add just slightly to your, to your origin story, uh, there, 83 00:05:07,819 --> 00:05:10,459 I do think it's interesting to note that, you know, you talked about the 84 00:05:10,459 --> 00:05:14,169 meetup that you organized last year and all the energy that came from that. 85 00:05:14,549 --> 00:05:18,249 I mean, I think you and I were, were discussing around that time, you 86 00:05:18,249 --> 00:05:22,429 know, over lunch or something like that, that like we saw this surge in 87 00:05:22,429 --> 00:05:26,679 interest in local-first, well funded companies who are popping up to build 88 00:05:26,679 --> 00:05:30,479 infrastructure, more products who are either using that terminology in their 89 00:05:30,489 --> 00:05:32,749 marketing or building in that, that way. 90 00:05:32,759 --> 00:05:37,549 And this is sort of surprising because the paper itself is five years old. 91 00:05:37,559 --> 00:05:41,469 A lot of the research and technology is closer to a decade old. 92 00:05:41,949 --> 00:05:43,509 Why now in particular? 93 00:05:43,509 --> 00:05:47,239 And I think the answer is ideas just take a long time to disseminate or I'm not 94 00:05:47,239 --> 00:05:50,883 even sure why, but we were just observing this and saying, This is pretty exciting. 95 00:05:50,893 --> 00:05:52,783 And then what should we do to help that? 96 00:05:52,863 --> 00:05:56,763 And I was brainstorming along the lines of like, maybe it's the time to make 97 00:05:56,773 --> 00:05:58,423 a foundation or something like that. 98 00:05:58,423 --> 00:06:02,093 And you, you kind of felt no, and I think your instincts were right. 99 00:06:02,113 --> 00:06:04,023 And ultimately, yeah, you organized the meetup. 100 00:06:04,373 --> 00:06:07,223 That was an incredible amount of turnout and energy there. 101 00:06:07,533 --> 00:06:10,383 You said, I'm going to start a podcast, which you have done and, 102 00:06:10,383 --> 00:06:14,143 and it's going great from what I can, uh, what I can tell as a listener. 103 00:06:14,473 --> 00:06:18,623 And then this beginning of this year, you said, you know, maybe it's the time 104 00:06:18,623 --> 00:06:22,883 for a conference to really try to put it on the map, not just as a kind of an 105 00:06:22,893 --> 00:06:26,783 academic thing, because there have been programming local-first days connected to 106 00:06:26,783 --> 00:06:31,303 academic conferences, but as a thing for builders and a thing for, this is a thing. 107 00:06:31,753 --> 00:06:35,063 This is a technology or a set of ideas about how to build 108 00:06:35,383 --> 00:06:36,913 applications that is real. 109 00:06:36,913 --> 00:06:37,713 It is here now. 110 00:06:37,713 --> 00:06:38,533 You can use it. 111 00:06:38,843 --> 00:06:39,743 It's exciting. 112 00:06:39,813 --> 00:06:43,703 And, you know, meet other people who are, meet the other weirdos 113 00:06:43,703 --> 00:06:44,763 who are interested in this. 114 00:06:45,296 --> 00:06:50,676 I think this very distinctly marked a moment for me where There were 115 00:06:50,736 --> 00:06:55,386 so many people and, most notably a bunch of people who I've never 116 00:06:55,386 --> 00:06:56,796 seen before, who I've never met. 117 00:06:57,086 --> 00:07:01,966 So this kind of like tightly knit group of local-first experts 118 00:07:02,466 --> 00:07:06,066 seems to have like really grown already into a wider audience. 119 00:07:06,646 --> 00:07:10,946 Who, taking those ideas, building apps that I wasn't aware of. 120 00:07:10,986 --> 00:07:16,116 And so this is growing beyond this, this, core group, which I think is a, is a 121 00:07:16,126 --> 00:07:20,676 brilliant sign of success that the ideas are, going to where they need to go. 122 00:07:21,119 --> 00:07:21,849 Yeah, that's a great point. 123 00:07:21,849 --> 00:07:23,169 I think that was part of the thing last year. 124 00:07:23,169 --> 00:07:27,439 It was like, up until that point, if anything ever came along, a 125 00:07:27,549 --> 00:07:32,939 library, a product, an essay that referenced the concept, I'm like, 126 00:07:33,079 --> 00:07:34,079 oh yeah, I know who that is. 127 00:07:34,149 --> 00:07:37,519 I know them from this core community, this small circle of 128 00:07:37,519 --> 00:07:38,769 people who's been interested in it. 129 00:07:38,779 --> 00:07:42,169 And last year, it started to be more and more things popping up where 130 00:07:42,229 --> 00:07:43,784 I just thought, I'm Who is this? 131 00:07:43,784 --> 00:07:44,594 I've never met this person. 132 00:07:44,604 --> 00:07:45,224 That's good. 133 00:07:45,444 --> 00:07:47,794 It's growing beyond its, its origins. 134 00:07:47,916 --> 00:07:48,496 Exactly. 135 00:07:48,526 --> 00:07:52,686 And I think what's also been interesting in the conference, and I'll invite you 136 00:07:52,686 --> 00:07:57,966 to provide a recap to, to that shortly, but it's been so interesting that 137 00:07:57,986 --> 00:08:03,899 like local-first has sort of a diffuse timeline where there's certainly the 138 00:08:03,919 --> 00:08:08,559 very notable point in time where you and Peter and Martin, et cetera, have 139 00:08:08,559 --> 00:08:10,389 like written this, this amazing essay. 140 00:08:10,759 --> 00:08:14,966 But the ideas of local-first, already were out there before that. 141 00:08:15,106 --> 00:08:17,776 They were maybe not as crisply written down. 142 00:08:17,776 --> 00:08:21,596 And so at this conference, we also had people who've been de facto doing 143 00:08:21,596 --> 00:08:26,396 local-first software before the term was like as clearly written down. 144 00:08:26,656 --> 00:08:30,894 And so we brought together all of like those sort of like Real old school, 145 00:08:30,894 --> 00:08:35,344 like OG, local-first people and sort of like the people who just got 146 00:08:35,344 --> 00:08:37,394 attracted by the essay and beyond that. 147 00:08:37,834 --> 00:08:43,194 So, yeah, I'm curious, maybe you can recap, what was the goal for how 148 00:08:43,194 --> 00:08:46,184 we laid out the conference and what did happen over the conference days? 149 00:08:46,566 --> 00:08:52,546 Yeah, so we wanted to make it big enough to feel, well, I guess like a conference, 150 00:08:52,546 --> 00:08:54,576 like an event, like something serious. 151 00:08:54,596 --> 00:08:58,156 This is a community with some gravitas to it, but small enough to still be intimate. 152 00:08:58,176 --> 00:08:59,346 We want to be able to talk to everyone. 153 00:08:59,596 --> 00:09:02,776 And honestly, we really didn't know the level of interest there would be. 154 00:09:02,796 --> 00:09:05,036 As you pointed out, we, we sold out way too quickly. 155 00:09:05,036 --> 00:09:06,156 We had to turn lots of. 156 00:09:06,461 --> 00:09:09,751 Wonderful people away and speaker plus ones and everything like that. 157 00:09:10,121 --> 00:09:13,341 So, so maybe we, we underestimated the interest, which is, I guess, a 158 00:09:13,341 --> 00:09:15,851 good problem to have, but yeah, we had a venue for about 200 people. 159 00:09:16,301 --> 00:09:20,411 Uh, we ended up with 18 speakers, which was a lot to fit into to one day. 160 00:09:20,791 --> 00:09:24,901 Um, although I think the, the rapid fire nature of it also helped create a lot 161 00:09:24,901 --> 00:09:28,961 of energy and keep the signal, the noise or the, density, I guess, of information 162 00:09:28,971 --> 00:09:30,431 high, which I liked quite a bit. 163 00:09:30,648 --> 00:09:33,721 So that was sort of the main day event in a beautiful venue that, you 164 00:09:33,721 --> 00:09:37,071 and, and our other, co conspirator Emma had, had used in the past. 165 00:09:37,341 --> 00:09:40,861 and then we did a second event that was kind of, or a second day that we sort 166 00:09:40,861 --> 00:09:45,181 of added on a little later when we saw the interest, which we call an Expo Day. 167 00:09:45,501 --> 00:09:49,411 This was run by, our friend Peter Van Hardenburg, where basically bringing 168 00:09:49,421 --> 00:09:52,861 all the people who are building infrastructure, that is, say, libraries 169 00:09:52,901 --> 00:09:58,906 or, um, services that provides some kind of framework or, or way to, to 170 00:09:58,906 --> 00:10:02,116 do local-first versus, you know, just sitting down to write your own CRDT 171 00:10:02,126 --> 00:10:06,189 from scratch, and get them to get up, give a demo, help everyone walk through 172 00:10:06,189 --> 00:10:10,069 it on their laptops, get started, and then provide hands on support. 173 00:10:10,069 --> 00:10:13,699 So hopefully going from the speaker day, or the intention anyway is to 174 00:10:13,709 --> 00:10:16,609 go from the speaker day with the talks to get everyone inspired. 175 00:10:17,023 --> 00:10:20,453 and then go into a day that was more about building and making things. 176 00:10:20,503 --> 00:10:22,946 And I think, indeed, that is, that is how it worked out. 177 00:10:23,266 --> 00:10:26,833 And then, the other, I think, awesome thing that happened, in 178 00:10:26,833 --> 00:10:30,779 addition to, the main event is we actually had satellite events. 179 00:10:30,779 --> 00:10:33,779 We had folks who, uh, did things before and after. 180 00:10:33,779 --> 00:10:36,649 One of the more notable ones, I think, was that there was a Future of Coding 181 00:10:36,959 --> 00:10:39,039 meetup that someone organized for the day. 182 00:10:39,689 --> 00:10:44,284 After, I got word, uh, later that a bunch of the folks working on the 183 00:10:44,284 --> 00:10:47,504 identity problem, which is, remains kind of one of the big unsolved problems 184 00:10:47,504 --> 00:10:51,334 of local-first, got together and did like a 12 hour marathon session. 185 00:10:51,634 --> 00:10:54,674 and there's a, uh, a blog post we can maybe link to in the show notes, 186 00:10:54,674 --> 00:10:58,304 which was kind of the output of, what the state of the art is there. 187 00:10:58,654 --> 00:11:02,084 And then I think there was just a ton of follow on, uh, work. 188 00:11:02,224 --> 00:11:04,304 Kind of energy or something like that on, on Twitter. 189 00:11:04,904 --> 00:11:08,934 So there's various threads around people reflecting on the conference, of course. 190 00:11:09,264 --> 00:11:11,064 Paul Butler had a really excellent write up. 191 00:11:11,064 --> 00:11:12,554 Again, maybe we can link that as well. 192 00:11:12,894 --> 00:11:16,974 But also just a lot of people discussing and debating, and I think therefore 193 00:11:16,974 --> 00:11:18,464 surfacing the term for new people. 194 00:11:18,464 --> 00:11:20,204 A lot of folks coming in and being like, wait, what is, 195 00:11:20,424 --> 00:11:21,424 what are we talking about here? 196 00:11:21,604 --> 00:11:22,744 What is this local-first thing? 197 00:11:23,114 --> 00:11:27,114 But people also having good genuine arguments about, like, is this, you 198 00:11:27,114 --> 00:11:30,364 know, is this trend something that is worth paying attention to, what are the 199 00:11:30,374 --> 00:11:34,721 real benefits here, why do you want to do things this way, and so the, just the 200 00:11:34,721 --> 00:11:39,649 sense that, I think, again, part of our goal for the event was help give this 201 00:11:39,809 --> 00:11:45,109 community a center point and put it on the map and further expand the community 202 00:11:45,109 --> 00:11:49,359 beyond this core set of people who've been interested in it for a long time. 203 00:11:49,359 --> 00:11:51,902 And I, at least I feel like it really, accomplished that. 204 00:11:51,932 --> 00:11:54,772 What's your, what's your read on the, uh, you know, looking 205 00:11:54,772 --> 00:11:55,752 back post talk a little bit 206 00:11:56,237 --> 00:11:57,277 yeah, absolutely. 207 00:11:57,307 --> 00:12:02,477 So I found it so fascinating how we tried to create a bit of a 208 00:12:02,487 --> 00:12:06,627 structure of like a conference day, as opposed to an unconference. 209 00:12:06,637 --> 00:12:11,437 It's like certainly a more structured, a more curated experience where people 210 00:12:11,617 --> 00:12:13,167 like need to come to the same place. 211 00:12:13,167 --> 00:12:16,557 It was very important for us that we wanted to make it a, like, more 212 00:12:16,727 --> 00:12:21,407 put the focus on the in person experience, throughout COVID, etc. 213 00:12:21,407 --> 00:12:24,787 I've attended many online only events, etc. 214 00:12:24,787 --> 00:12:29,107 And it's just not the same, like , You can't compare meeting someone, like 215 00:12:29,157 --> 00:12:33,067 going really deep, very quickly on a certain topic, grabbing a coffee with 216 00:12:33,067 --> 00:12:37,817 them, going even deeper and exchanging ideas in a very like organic way. 217 00:12:37,967 --> 00:12:40,807 You can't do that over text chat or over Zoom. 218 00:12:40,807 --> 00:12:45,167 So doing that in person where other people can chime in, this 219 00:12:45,167 --> 00:12:46,547 was certainly the bread and butter. 220 00:12:46,917 --> 00:12:52,102 and so combining that with inviting like people who have deep expertise 221 00:12:52,552 --> 00:12:54,942 so they can give talks, et cetera. 222 00:12:55,162 --> 00:12:58,842 This was the foundation, but where this then led to that it 223 00:12:58,852 --> 00:13:00,412 wasn't just the conference day. 224 00:13:00,412 --> 00:13:04,952 And then we did the, the, the expo day after, but that like kind of 225 00:13:05,142 --> 00:13:09,462 organically and spontaneously, other people contributed whole 226 00:13:09,542 --> 00:13:10,952 satellite events around it. 227 00:13:10,962 --> 00:13:14,242 It really felt like a whole, not just a Local-First Conference 228 00:13:14,282 --> 00:13:19,332 day, but a whole local-first week where we had amazing people coming 229 00:13:19,332 --> 00:13:20,812 from, from all over the world. 230 00:13:21,172 --> 00:13:25,002 And so for me, basically started, even though the conference day was on 231 00:13:25,012 --> 00:13:30,547 Thursday, For me, it started on Monday night when, Steve Ruiz and other people 232 00:13:30,687 --> 00:13:34,717 came in and when we went to a beer garden until midnight every day, and 233 00:13:34,717 --> 00:13:39,007 we're just going deep on, on syncing and CRTs and trade offs, et cetera. 234 00:13:39,017 --> 00:13:40,067 And that, that was amazing. 235 00:13:40,127 --> 00:13:42,307 Um, and so just to see. 236 00:13:42,542 --> 00:13:46,472 The, the energy and like the different sort of paths that people have, 237 00:13:46,692 --> 00:13:49,862 where some of them are building apps, some of them are building tools. 238 00:13:49,872 --> 00:13:54,472 Some of them combine both or tackle it from an entirely different perspective. 239 00:13:54,902 --> 00:13:59,382 this was just a wonderful, uh, coming together of different people. 240 00:13:59,422 --> 00:14:00,792 So this was the core of it for me. 241 00:14:01,079 --> 00:14:06,276 The different people aspect of things was both a goal, a top level goal for me. 242 00:14:06,316 --> 00:14:10,546 Uh, and also my biggest concern about whether it would work. 243 00:14:10,926 --> 00:14:13,366 So basically I saw it as a chance to, you know, we talked about 244 00:14:13,366 --> 00:14:14,766 expanding that core community. 245 00:14:14,766 --> 00:14:19,656 I saw it as something where you had people, especially around the academic 246 00:14:19,656 --> 00:14:23,606 world or connected to Ink and Switch in the research world, or have been working 247 00:14:23,606 --> 00:14:28,516 on this realm of things for a long time, or often come at it, and I put myself 248 00:14:28,516 --> 00:14:32,686 in this category from an ideological perspective, this way of building 249 00:14:32,696 --> 00:14:37,586 represents a way that I think computers can be better for humanity on net. 250 00:14:37,856 --> 00:14:41,416 It's not just about, of course, I love the better developer experience and 251 00:14:41,416 --> 00:14:44,536 the lower operational cost and some of these benefits, but I think that 252 00:14:44,826 --> 00:14:49,969 there is a philosophical aspect to it that is, for me, is the heart of it. 253 00:14:50,329 --> 00:14:55,724 But also, I think, to grow and to be, to go into the real world and to be relevant 254 00:14:55,944 --> 00:14:59,814 in the real world, you need to, in some cases, be more pragmatic than that. 255 00:14:59,824 --> 00:15:03,104 The way the one person put it in a, in a conversation with me is they're 256 00:15:03,104 --> 00:15:06,164 like, I came to this cause it's like a way to save money on my cloud bill. 257 00:15:06,494 --> 00:15:07,184 And it's just like. 258 00:15:07,589 --> 00:15:10,639 Clouds, you know, my cloud bill keeps killing my startups because 259 00:15:10,639 --> 00:15:12,739 it run up a too, too big a cost. 260 00:15:12,739 --> 00:15:14,009 And this is a way to cut that down. 261 00:15:14,009 --> 00:15:17,516 And that sounds so reductive and, almost even offensive. 262 00:15:17,526 --> 00:15:19,936 Maybe if you do come at it from the ideological perspective, but 263 00:15:19,936 --> 00:15:23,086 also that, that makes sense that there are a variety of benefits. 264 00:15:23,086 --> 00:15:25,726 There's a variety of paths of why you would come here. 265 00:15:25,756 --> 00:15:29,876 And so to, you know, I think the big tent approach of there's room for, for 266 00:15:29,876 --> 00:15:32,136 everyone, if we can find common ground. 267 00:15:32,156 --> 00:15:36,671 So we really were trying to bring in that core community, of course, but 268 00:15:36,681 --> 00:15:40,851 also people who are more pragmatic, you know, they're building a company, 269 00:15:40,851 --> 00:15:44,211 they're an engineer, they're a designer, something they want to get some specific 270 00:15:44,251 --> 00:15:48,051 immediate benefit for their business, or they see a commercial opportunity. 271 00:15:48,051 --> 00:15:51,251 For example, we've had a few investors here, you know, I think it's still 272 00:15:51,251 --> 00:15:55,666 pretty early for that, but a few folks who, you know, see that there's, uh, 273 00:15:55,676 --> 00:15:57,016 there's commercial opportunity there. 274 00:15:57,299 --> 00:16:01,669 and the 3rd demographic, if you, if you want to think of the, you know, 275 00:16:01,749 --> 00:16:06,479 the longtime core community, idealism driven folks, and then the builders or 276 00:16:06,479 --> 00:16:10,869 commercial opportunity, pragmatic folks as, as another demographic, a 3rd one, 277 00:16:11,044 --> 00:16:14,744 Actually, it would just be the local-first curious and some of the best conversations 278 00:16:14,744 --> 00:16:18,344 I had, I think, were, uh, with a lot of those folks, many of whom, you know, 279 00:16:18,434 --> 00:16:21,484 basically just said, I'd never heard of this term up until when this conference 280 00:16:21,484 --> 00:16:24,537 was announced, but I, I see there's something going on here and I I wanted to 281 00:16:24,547 --> 00:16:27,507 find out about it and it was great to get all those people together and our goal 282 00:16:27,507 --> 00:16:28,797 was to get all those people together. 283 00:16:28,797 --> 00:16:32,027 But there was also a chance that those people could very much clash. 284 00:16:32,289 --> 00:16:37,009 the, uh, folks who see pragmatic benefits in it, and the folks who come from 285 00:16:37,009 --> 00:16:40,859 a status quo perspective on building applications, and the folks who are 286 00:16:40,859 --> 00:16:45,789 long time members of the community might just not like each other, 287 00:16:45,839 --> 00:16:47,459 get along, or share enough values. 288 00:16:47,699 --> 00:16:53,494 so that was a concern for me, but I think 100% The way it bore out was we have 289 00:16:53,534 --> 00:16:55,244 way more in common than differences. 290 00:16:55,544 --> 00:16:56,614 Yeah, most certainly. 291 00:16:56,654 --> 00:17:02,011 I think we struck a really nice balance there where, it was very approachable 292 00:17:02,111 --> 00:17:06,634 for experienced engineers who've like experienced different kind of 293 00:17:06,664 --> 00:17:11,464 problems building cloud apps and building on different platforms where 294 00:17:11,464 --> 00:17:15,804 they might not be yet all familiar with the ideas of local-first, but I 295 00:17:15,814 --> 00:17:17,774 think they could throughout the stay. 296 00:17:18,084 --> 00:17:22,654 Uh, it really clicked for them how local-first provides an interesting 297 00:17:22,654 --> 00:17:26,764 alternative that addresses a lot of the problems that they have, as well 298 00:17:26,764 --> 00:17:31,714 as for people who are already very deep in local-first of the last couple 299 00:17:31,714 --> 00:17:35,341 of years, where you could learn a lot about different sort of trade offs and 300 00:17:35,341 --> 00:17:39,931 different experience paths of people who went already very deep on certain things. 301 00:17:39,981 --> 00:17:42,051 So I think we struck a really nice balance there. 302 00:17:42,666 --> 00:17:49,076 So the meat of the conference day on Thursday were most notably the talks. 303 00:17:49,396 --> 00:17:54,386 So I'm curious, given that you and I were both responsible in the organizing 304 00:17:54,406 --> 00:17:56,266 team to put together those talks. 305 00:17:56,326 --> 00:17:59,516 I'm super excited how everything, shaped out there. 306 00:17:59,556 --> 00:18:03,956 And, I think we managed to strike a really nice balance on like a spectrum 307 00:18:04,336 --> 00:18:10,196 of, of speakers, some who already, Go super deep on like local-first 308 00:18:10,216 --> 00:18:15,096 technological parts for many years, some are more on the pragmatic end, 309 00:18:15,136 --> 00:18:19,666 might not meet all the ideals of local-first, but reach millions of users. 310 00:18:19,666 --> 00:18:21,916 And I think that's all kind of like nicely converging. 311 00:18:22,336 --> 00:18:26,596 so I'm curious which talks, which speakers stood out most for you and, 312 00:18:26,656 --> 00:18:28,196 what are you still thinking about there? 313 00:18:28,402 --> 00:18:32,502 Yeah, well, I suppose it's not surprising that you and I both, since we directly 314 00:18:32,592 --> 00:18:35,612 made the speaker lineup and got to pick all of our favorite people and 315 00:18:35,612 --> 00:18:39,712 put them in an order that we liked, uh, that we would both be probably 316 00:18:39,712 --> 00:18:41,242 pretty, pretty pleased with the outcome. 317 00:18:41,286 --> 00:18:44,249 I guess it's, I guess it's a good sign, that if anyone should 318 00:18:44,249 --> 00:18:45,269 enjoy it, it should be us. 319 00:18:45,269 --> 00:18:50,094 But yeah, I, this is the only time I have ever listened to every single minute of 320 00:18:50,094 --> 00:18:52,824 a talk in the entire day of a conference. 321 00:18:52,851 --> 00:18:56,441 usually there's some point I get a little bored or restless or, yeah, 322 00:18:56,441 --> 00:18:59,261 I just want to stretch my legs or just get, you know, caught up in a 323 00:18:59,261 --> 00:19:02,764 conversation and I, and, and I want to stick with that, but I really, all of 324 00:19:02,764 --> 00:19:06,954 these speakers had such an interesting thing to add to, like you said, that 325 00:19:06,954 --> 00:19:08,974 bigger stew of different perspectives. 326 00:19:09,154 --> 00:19:13,254 We also took the approach of making the time slots really tight, which had 327 00:19:13,412 --> 00:19:15,972 Sometimes I felt bad, I've seen some of the speakers have a little bit of 328 00:19:15,972 --> 00:19:20,042 anxiety about, you know, squeezing their, their content down, but I think it, 329 00:19:20,162 --> 00:19:25,262 it part of was what kept stuff moving and again, the density of the, the 330 00:19:25,262 --> 00:19:28,322 information just meant that like, there wasn't, there wasn't a moment to get 331 00:19:28,322 --> 00:19:30,462 bored, which I, which I really enjoyed. 332 00:19:30,707 --> 00:19:34,447 Yeah, it'd be hard to pick favorites, you know, but if you were going to look at 333 00:19:34,447 --> 00:19:37,747 some of the, you know, the temp polls, of course, we have, you know, our opening, 334 00:19:38,157 --> 00:19:41,767 um, kind of closest thing to a local-first celebrity, which was Martin Kleppmann, 335 00:19:41,767 --> 00:19:46,487 and he dug in on, you know, five years on from writing the initial paper, how would 336 00:19:46,497 --> 00:19:48,682 he You know, what would he add to that? 337 00:19:48,682 --> 00:19:50,042 Or how would he change? 338 00:19:50,322 --> 00:19:52,792 Um, you know, what have we learned in that time? 339 00:19:52,792 --> 00:19:55,332 And he touched on the kind of the definition of local-first, 340 00:19:55,352 --> 00:19:58,752 which I think is a, is an ongoing question for the community. 341 00:19:59,652 --> 00:20:03,762 Uh, we followed that up pretty directly with Tuomas Aertmann from Linear, and I 342 00:20:03,772 --> 00:20:05,582 think this is one of the bigger success. 343 00:20:05,872 --> 00:20:08,632 I mean, Linear is obviously a huge success story in the startup world, 344 00:20:08,972 --> 00:20:11,767 um, but the fact that they, I think he probably kind of built this way from 345 00:20:11,767 --> 00:20:15,557 the get go because he believes this is just the only way to build software. 346 00:20:16,067 --> 00:20:19,567 He jokes about like, when he sits down to ever start a new thing, the first thing 347 00:20:19,567 --> 00:20:21,057 he always does is write a sync engine. 348 00:20:21,687 --> 00:20:23,077 That's what he did here. 349 00:20:23,277 --> 00:20:26,947 Hopefully in the future, we have enough off the shelf stuff that's not necessary 350 00:20:26,947 --> 00:20:31,387 anymore, but you can very directly point to Linear is known for being so 351 00:20:31,397 --> 00:20:36,137 high performance and, uh, that makes it really stand apart from all the other 352 00:20:36,437 --> 00:20:38,407 SaaS alternatives in the industry. 353 00:20:38,867 --> 00:20:41,997 And, yeah, again, you can, you can debate the degree to which of those 354 00:20:41,997 --> 00:20:45,587 local-first principles they fulfill, but in terms of like a very high profile 355 00:20:45,587 --> 00:20:49,567 successful example where we're using local-first in how they built their 356 00:20:49,567 --> 00:20:53,847 product is directly connected to why they are so successful in their business 357 00:20:53,867 --> 00:20:55,057 and how they are differentiated. 358 00:20:55,467 --> 00:20:58,477 So I think that was a powerful one too, to take the, you know, the sort 359 00:20:58,477 --> 00:21:01,894 of community elder combined with, um, you know, a pragmatic example 360 00:21:01,894 --> 00:21:03,544 of how a product can be successful. 361 00:21:03,609 --> 00:21:08,499 And then, yeah, maybe some, you know, two other notable ones to me would be 362 00:21:08,499 --> 00:21:12,979 Aaron Goodman's talk, where he basically announced on stage his next iteration 363 00:21:12,989 --> 00:21:16,509 of the, I guess it's the RepliCache Reflect, and now what he's calling Zero. 364 00:21:17,019 --> 00:21:19,559 He's really been grappling with this space, I think. 365 00:21:19,739 --> 00:21:22,139 I think he was your first guest, if I'm not mistaken, on the 366 00:21:22,139 --> 00:21:23,539 podcast here, or one of the first? 367 00:21:23,819 --> 00:21:24,559 The second one. 368 00:21:24,679 --> 00:21:25,759 Peter was the first one. 369 00:21:25,779 --> 00:21:26,179 Yeah. 370 00:21:26,562 --> 00:21:26,812 Yeah. 371 00:21:27,029 --> 00:21:29,439 He's been grappling with this in the real world, I think. 372 00:21:29,644 --> 00:21:32,104 In the sense of building infrastructure for others, 373 00:21:32,247 --> 00:21:34,237 probably, almost as long as anyone. 374 00:21:34,237 --> 00:21:36,667 And he's been through these iterations and he talked about the partial 375 00:21:36,677 --> 00:21:38,187 sync and gave an amazing demo. 376 00:21:38,671 --> 00:21:42,611 And then the, the, the closing, closing talk was, uh, Maggie Appleton, 377 00:21:42,611 --> 00:21:46,891 who's always amazing, but she gave a talk on barefoot developers, kind 378 00:21:46,891 --> 00:21:49,661 of this concept, bringing together end user programming, which of course 379 00:21:49,661 --> 00:21:51,421 is very near and dear to my heart. 380 00:21:51,421 --> 00:21:54,781 If you know anything about my, my writing and, and, uh, interests. 381 00:21:55,066 --> 00:21:58,586 Putting that together with language models and AI and local-first, and that 382 00:21:58,596 --> 00:22:02,346 all of these things fit together in a, uh, in a way that's very significant. 383 00:22:02,782 --> 00:22:06,122 many, many folks talked about her, her talk as being a highlight of the day. 384 00:22:06,122 --> 00:22:09,972 So those were just a few that, um, seemed quite notable, let's say. 385 00:22:10,742 --> 00:22:11,922 What were some of your favorites? 386 00:22:12,402 --> 00:22:15,592 Yeah, I, I certainly agree with your picks here. 387 00:22:15,992 --> 00:22:21,672 Um, I'm actually the, the ones that you mentioned, I, I'm going to also have some 388 00:22:21,672 --> 00:22:26,952 of those on the, the podcast since there's so many interesting points in there that I 389 00:22:26,952 --> 00:22:31,977 want to, I want to Dive deeper in whether it's like how, Tomas had the foresight 390 00:22:32,217 --> 00:22:37,557 to bet on a sync engine when building a new product and, how that, like, I 391 00:22:37,567 --> 00:22:42,017 think he mentioned it on stage, it's like they, they can basically all focus on 392 00:22:42,017 --> 00:22:46,467 the front end engineering team, and kind of cut their engineering team in half, 393 00:22:46,507 --> 00:22:52,277 keep the company small and thus ship much more quickly and how that's just turning 394 00:22:52,287 --> 00:22:54,577 into a massive competitive advantage. 395 00:22:54,837 --> 00:22:55,767 So I think that's. 396 00:22:56,123 --> 00:22:59,562 You know, underexplored and underappreciated outside 397 00:22:59,562 --> 00:23:01,152 of the local-first bubble. 398 00:23:01,602 --> 00:23:04,342 So, that's something I want to explore more. 399 00:23:04,422 --> 00:23:08,992 And, I think, he also made an interesting point , he has written a great blog post 400 00:23:09,032 --> 00:23:14,932 about how like a typical MVP of a product is no longer enough to really make it in 401 00:23:14,932 --> 00:23:17,372 today's competitive landscape of products. 402 00:23:18,002 --> 00:23:22,442 And how you need to just, the bar is really high for building products 403 00:23:22,452 --> 00:23:27,642 and Linear has now shown where the bar is at and kind of the only way to 404 00:23:27,642 --> 00:23:31,886 get there, I think, is by following the local-first architecture for 405 00:23:31,886 --> 00:23:33,896 productivity and personal apps like that. 406 00:23:33,896 --> 00:23:37,316 So I think it was really inspiring to hear his talk there. 407 00:23:38,046 --> 00:23:42,606 And then, we also heard from, from a bunch of builders who've been building 408 00:23:42,606 --> 00:23:47,389 local-first and local-first technologies already for, at some point, more 409 00:23:47,389 --> 00:23:52,496 than a decade and who at some point learned like, oh, the way how I always 410 00:23:52,596 --> 00:23:54,936 build things is called local-first. 411 00:23:54,956 --> 00:23:56,106 And that's really interesting. 412 00:23:56,336 --> 00:24:01,776 And, then also, uh, from a tool builder's perspective, hearing about the interesting 413 00:24:01,776 --> 00:24:03,626 challenges and design trade offs. 414 00:24:04,126 --> 00:24:09,376 So what Aaron has announced with Ciro on stage was certainly very interesting. 415 00:24:09,436 --> 00:24:13,726 I think it kind of takes a step away from some of the local-first 416 00:24:13,746 --> 00:24:18,096 ideals, but on the other hand, makes it even more approachable. 417 00:24:18,381 --> 00:24:21,271 for people who are more coming from the cloud world and might 418 00:24:21,271 --> 00:24:23,021 be a bit of a gateway drug. 419 00:24:23,031 --> 00:24:26,561 Also bringing more people into the local-first ecosystem. 420 00:24:26,864 --> 00:24:31,774 And, Maggie's talk was like on a whole different level , and this is something 421 00:24:31,774 --> 00:24:36,949 I was really excited about, that this worked out since, she's been, on my 422 00:24:36,949 --> 00:24:39,009 radar for a long, long, long time. 423 00:24:39,009 --> 00:24:43,809 Like when she started out creating those amazing visuals for like Egghead 424 00:24:43,809 --> 00:24:46,099 videos, for Egghead courses, et cetera. 425 00:24:46,519 --> 00:24:52,689 This is where I like always appreciated how thoughtful shegoes about communicating 426 00:24:53,082 --> 00:24:57,272 difficult concepts and how, how much she thinks about those concepts that 427 00:24:57,272 --> 00:24:58,746 she can communicate those to others. 428 00:24:59,322 --> 00:25:03,372 And I think here, she's really taking it to the next level by immersing 429 00:25:03,402 --> 00:25:09,102 herself in the local-first ecosystem that she has not really been directly 430 00:25:09,262 --> 00:25:14,100 part of before but I think she has picked up all the right ideas. 431 00:25:14,154 --> 00:25:19,066 In preparation and connected the dots for herself with other topics that are really 432 00:25:19,066 --> 00:25:24,266 top of mind for her, end user programming, and coining a whole new term in the, in 433 00:25:24,266 --> 00:25:29,476 the process, uh, as Sparefit Developers, which is a topic I want to explore 434 00:25:29,476 --> 00:25:31,286 with her on a, on a future episode. 435 00:25:31,642 --> 00:25:35,992 So certainly, um, some, some brilliant highlights and I think 436 00:25:36,012 --> 00:25:41,616 Martin, also in a very nice way, reframed the state of the local-first 437 00:25:41,636 --> 00:25:44,736 ecosystem, like redefine the goal. 438 00:25:44,746 --> 00:25:46,196 What is local-first software? 439 00:25:46,222 --> 00:25:51,212 what is maybe not local-first software, I think was a brilliant way to start today. 440 00:25:51,522 --> 00:25:55,432 So now that we've covered the different talk highlights from, from 441 00:25:55,432 --> 00:25:59,842 our perspectives, I'm curious, what are some of the core themes, core 442 00:25:59,842 --> 00:26:02,522 learnings that are top of mind for you? 443 00:26:03,001 --> 00:26:06,651 Well, certainly we touched on already that bringing together these different people 444 00:26:06,651 --> 00:26:12,211 who came to this, world with different motivations and different backgrounds do 445 00:26:12,401 --> 00:26:14,681 click and gel and share values together. 446 00:26:14,681 --> 00:26:18,121 So I think that was, a happy, a happy learning. 447 00:26:18,384 --> 00:26:20,354 Getting a little more kind of nuts and bolts. 448 00:26:20,384 --> 00:26:25,244 Uh, one of the things that really struck me was just the element of UI performance. 449 00:26:25,254 --> 00:26:27,324 And obviously we're just talking about Linear there, but, we 450 00:26:27,324 --> 00:26:28,674 had some demos specifically. 451 00:26:28,674 --> 00:26:32,514 You showed your app, Overtone, sort of flipping between playlists 452 00:26:32,514 --> 00:26:34,014 and comparing that to Spotify. 453 00:26:34,297 --> 00:26:36,984 then, Aaron showed, yeah, the demo was Zero. 454 00:26:37,014 --> 00:26:39,344 And we also saw there was a third one. 455 00:26:39,354 --> 00:26:40,184 Maybe it was jazz. 456 00:26:40,494 --> 00:26:41,424 In any case. 457 00:26:41,924 --> 00:26:42,354 Yeah. 458 00:26:42,574 --> 00:26:46,804 The thing that struck me seeing these different demos, so completely different 459 00:26:46,804 --> 00:26:49,834 people building in many cases, pretty different products, but all of them 460 00:26:49,834 --> 00:26:54,034 had this feel that was fundamentally different from most of the software 461 00:26:54,204 --> 00:26:55,464 that we use in our daily lives. 462 00:26:55,934 --> 00:26:57,244 And we've talked about. 463 00:26:57,809 --> 00:27:01,199 UIs should be fast or, you know, no spinners or whatever. 464 00:27:01,199 --> 00:27:04,279 And I think the way we wrote that in the original essay, I was thinking 465 00:27:04,279 --> 00:27:07,999 like, okay, I log into Google drive and it spins for five seconds, 466 00:27:08,059 --> 00:27:11,949 like literally 5, 000 milliseconds before I get a paint on the screen. 467 00:27:12,579 --> 00:27:14,009 Okay, we can do better than that. 468 00:27:14,059 --> 00:27:17,549 Maybe we could, you know, get things back in under a thousand milliseconds 469 00:27:17,999 --> 00:27:22,814 or under 500 milliseconds, but all of these demos show Next frame performance. 470 00:27:22,874 --> 00:27:26,514 That's something where it's, there's literally just no delay for in 471 00:27:26,514 --> 00:27:32,134 terms of like human perception and it feels fundamentally different. 472 00:27:32,774 --> 00:27:37,764 And to me, uh, when I think of how much human kind of energy and just 473 00:27:37,984 --> 00:27:43,074 like soul is lost on waiting for software all the time, the idea of a 474 00:27:43,074 --> 00:27:48,289 new generation software that is kind of next frame by default is, Very exciting. 475 00:27:48,569 --> 00:27:53,889 And seeing them side by side, again, that several other, um, many people 476 00:27:53,889 --> 00:27:57,479 building towards this have ended on a thing that has this fundamentally 477 00:27:57,479 --> 00:28:01,879 same feel that is the same as each other, but different from everything 478 00:28:01,879 --> 00:28:04,929 else we know outside of, I don't know, maybe like video games or something. 479 00:28:05,239 --> 00:28:07,644 That was That would, for me, was very powerful. 480 00:28:08,011 --> 00:28:12,661 And I think it's like, was not necessarily a new idea, but just reconfirming 481 00:28:12,671 --> 00:28:16,731 that, seeing that in different contexts, uh, reestablished for me, 482 00:28:16,731 --> 00:28:18,491 like, Hey, this is worthwhile doing. 483 00:28:18,891 --> 00:28:23,691 and it's just every time I, for example, do a search in Notion, 484 00:28:23,761 --> 00:28:28,491 particularly, uh, when you're in this weird middle ground between having 485 00:28:28,521 --> 00:28:34,495 perfect connectivity and offline, this is where like more traditional, kind 486 00:28:34,984 --> 00:28:39,934 Cache driven, web driven, software is like trapped in this middle ground. 487 00:28:39,984 --> 00:28:44,744 like I was just riding on a train two days ago and I was dreading the moment 488 00:28:44,754 --> 00:28:49,414 where I knew I needed to like change my Notion page and I need to navigate there. 489 00:28:49,824 --> 00:28:54,784 And the, uh, I knew this, I had this page open yesterday and I wanted to 490 00:28:54,784 --> 00:29:00,194 navigate it and like, it literally took me 30 seconds until enough packets kind 491 00:29:00,194 --> 00:29:02,164 of flew in and I could navigate there. 492 00:29:02,694 --> 00:29:05,414 And, uh, this can be so different. 493 00:29:05,424 --> 00:29:09,694 And I think it's, uh, the, the different demos in the conference showed that to us. 494 00:29:10,314 --> 00:29:15,681 So UI performance, and also the, the different perspectives from, tool builders 495 00:29:15,691 --> 00:29:19,751 and app builders and people outside of the local-first ecosystem all connecting. 496 00:29:20,221 --> 00:29:24,327 Anything else that, stood out for you as a, as a theme or a new learning? 497 00:29:24,956 --> 00:29:28,257 Well, obviously sync engines were, a frequent topic, that 498 00:29:28,347 --> 00:29:29,457 touched on in many ways. 499 00:29:29,827 --> 00:29:36,377 One thing I was quite struck by is how much similarity in, I guess, architecture, 500 00:29:36,387 --> 00:29:39,947 if that's a word for it, between all of these different presentations, 501 00:29:39,947 --> 00:29:43,297 which included, you obviously have the infrastructure creators like 502 00:29:43,417 --> 00:29:48,567 Jazz and DXOS and ElectricSQL and so forth, where they are very explicitly 503 00:29:48,567 --> 00:29:52,917 and intentionally trying to design a good general purpose sync engine 504 00:29:52,927 --> 00:29:55,567 infrastructure, architecture, API thing. 505 00:29:55,877 --> 00:29:59,057 For lots of apps to use, but also we heard a version of that 506 00:29:59,057 --> 00:30:00,627 from many of the app developers. 507 00:30:00,627 --> 00:30:03,757 So for example, GoodNotes, and they're a really interesting case where a 508 00:30:03,757 --> 00:30:05,437 very successful existing business. 509 00:30:05,437 --> 00:30:07,077 They have like 30 million active users. 510 00:30:07,077 --> 00:30:09,957 They're basically on every iPad in the world, effectively. 511 00:30:10,357 --> 00:30:13,217 and they, you know, they came to local-first because they needed a 512 00:30:13,217 --> 00:30:16,537 solution for essentially merging together rich text changes. 513 00:30:16,937 --> 00:30:20,867 And they're describing how they're, they're using Automerge to do that, but 514 00:30:20,867 --> 00:30:26,982 their core, Architecture, again, is this kind of event log model that then is fed 515 00:30:26,982 --> 00:30:32,172 in and, you know, turned in, reactively rendered, and there's, um, that kind 516 00:30:32,172 --> 00:30:36,552 of event or transaction based system is something you hear repeated again and 517 00:30:36,552 --> 00:30:41,302 again, and indeed that, uh, there are many other kind of concepts in the, call 518 00:30:41,302 --> 00:30:44,122 them the architecture diagrams, whether they actually put a diagram on screen 519 00:30:44,122 --> 00:30:47,862 or not, or just talking about it, you saw that, again, all these builders, 520 00:30:47,872 --> 00:30:51,070 some coming from the app side, some coming from the tool side, basically 521 00:30:51,080 --> 00:30:52,950 arrived at kind of the same solution. 522 00:30:53,260 --> 00:30:57,350 And again, that to me is surprising, but also heartening in the sense that 523 00:30:57,610 --> 00:31:01,714 you give a lot of, different smart and capable people the same set of starting 524 00:31:01,724 --> 00:31:03,834 conditions and problem statements. 525 00:31:03,864 --> 00:31:07,234 And if they arrive at a similar solution, that means that solution 526 00:31:07,234 --> 00:31:13,374 is something General purpose of wide utility, kind of a right solution if 527 00:31:13,374 --> 00:31:14,784 that's, if that's the word for it. 528 00:31:14,844 --> 00:31:17,314 So that was, that was very notable to me. 529 00:31:17,624 --> 00:31:20,584 Indeed, one of the points that Martin made in his opening talk was, 530 00:31:20,964 --> 00:31:24,914 in a few years, he'd like to see about going and getting an internet 531 00:31:25,024 --> 00:31:27,594 standard made for a sync protocol. 532 00:31:28,094 --> 00:31:31,364 And, uh, When he gave that, he's mentioned that to me privately. 533 00:31:31,374 --> 00:31:33,654 And when he mentioned in his talk, I'm kind of like, yeah, I don't know. 534 00:31:33,654 --> 00:31:35,664 Are we really like three years away from that? 535 00:31:35,704 --> 00:31:38,504 Like kind of seems like it's still too early for that. 536 00:31:38,504 --> 00:31:42,654 But then as I saw these architectural similarities across all these kind of 537 00:31:42,724 --> 00:31:47,154 sync engine solutions, I was left with the feeling of like, Oh, actually I do 538 00:31:47,154 --> 00:31:48,304 think we're a lot, I think he's right. 539 00:31:48,304 --> 00:31:50,604 I think we are a lot closer than, than I thought we were. 540 00:31:50,912 --> 00:31:55,822 Yeah, and I, I think this is a, this is the topic that I can't wait to, 541 00:31:55,862 --> 00:31:58,702 to see materialize more into reality. 542 00:31:58,702 --> 00:32:01,532 And I think there's like a longer timeframe there. 543 00:32:01,542 --> 00:32:05,762 Maybe in three years from now, we do the first early drafts 544 00:32:05,922 --> 00:32:07,482 of like a standardization. 545 00:32:07,752 --> 00:32:10,997 Yeah, it's probably start the process in three years, not finish. 546 00:32:12,200 --> 00:32:15,560 Exactly but until, until there's like a 1. 547 00:32:15,810 --> 00:32:17,830 0 of something. 548 00:32:17,830 --> 00:32:20,072 There's like a reference implementation, etc. 549 00:32:20,292 --> 00:32:25,412 That's going to take a longer time and until maybe there are some pieces that 550 00:32:25,412 --> 00:32:30,592 need to actually trickle into browsers or operating systems, that's, uh, even 551 00:32:30,592 --> 00:32:34,582 further down the road, but I think we're certainly reaching a point where 552 00:32:34,872 --> 00:32:39,392 we've explored a bunch of different approaches in the ecosystem where we can 553 00:32:39,392 --> 00:32:41,892 now try to converge on some of those. 554 00:32:42,432 --> 00:32:48,492 And, what you've mentioned before, the kind of impromptu working group around 555 00:32:48,512 --> 00:32:52,622 authentication problems, et cetera, that is a major aspect and there are other 556 00:32:52,622 --> 00:32:56,842 major aspects that need to still be figured out, but it's really amazing to 557 00:32:56,842 --> 00:33:02,252 see how collaborative the entire ecosystem is where, yeah, different vendors and 558 00:33:02,252 --> 00:33:06,889 different individual tool builders, app builders, all come together, share their 559 00:33:06,899 --> 00:33:13,699 experience, and, trying to, to help create like some sort of, convergent technology 560 00:33:13,699 --> 00:33:15,949 into existence, that's really cool to see. 561 00:33:16,222 --> 00:33:20,992 Another way to frame that same, same direction you're going is kind of solve 562 00:33:21,002 --> 00:33:22,762 problems versus unsolved problems. 563 00:33:23,082 --> 00:33:24,662 And so increasingly, I think. 564 00:33:24,952 --> 00:33:28,824 A lot of the stuff in the sync engine side of things, can and should have 565 00:33:28,824 --> 00:33:33,594 many sort of competing solutions out of the marketplace, um, that fit different 566 00:33:33,964 --> 00:33:37,394 styles and, you know, maybe different language ecosystems and things like that. 567 00:33:37,944 --> 00:33:44,529 But in some senses, how to do a sync engine in this way, is mostly figured out. 568 00:33:44,979 --> 00:33:50,792 And actually one of my goals for the, the conference content was that the 569 00:33:51,062 --> 00:33:55,142 term CRDT should not appear too often. 570 00:33:55,702 --> 00:33:59,449 Um, because typically, again, you go to, some of the past events, that 571 00:33:59,449 --> 00:34:01,529 have, have existed with this or attend. 572 00:34:01,839 --> 00:34:05,459 You know, a conference or a meetup or just have a conversation with 573 00:34:05,459 --> 00:34:10,129 someone or anytime the topic comes up on Hacker News and people tend 574 00:34:10,129 --> 00:34:12,889 to be focused around the, yeah, but how do you merge changes together? 575 00:34:13,409 --> 00:34:18,249 And there is still plenty of interesting research being done on the CRDT side 576 00:34:18,249 --> 00:34:21,109 of things, and there will always be need for new data types as we. 577 00:34:21,342 --> 00:34:23,857 expand the different applications that people are applying this to, 578 00:34:23,857 --> 00:34:28,947 but ultimately how to build a basic CRDT and put that into a sync engine 579 00:34:29,187 --> 00:34:32,897 and make that work reliably across different devices and multi user, 580 00:34:33,507 --> 00:34:35,077 basically have that figured out. 581 00:34:35,077 --> 00:34:38,527 It's just now, it's a small matter of engineering now, which is still 582 00:34:38,567 --> 00:34:43,677 a huge challenge, but in the sense of like being a figured out thing. 583 00:34:44,187 --> 00:34:45,837 I think we're, we're basically there. 584 00:34:46,067 --> 00:34:49,527 Whereas there are other things here, and, uh, this was, uh, you know, a 585 00:34:49,527 --> 00:34:52,167 topic for the day, to some extent, is what are the unsolved problems? 586 00:34:52,567 --> 00:34:57,897 Um, that includes things like, uh, schema and, uh, schema migrations, uh, 587 00:34:57,897 --> 00:35:01,494 over time, identity, as I previously mentioned, kind of authentication, 588 00:35:02,104 --> 00:35:04,414 um, and, and permissions generally. 589 00:35:05,064 --> 00:35:06,244 And there's other stuff as well. 590 00:35:06,421 --> 00:35:10,551 but yeah, I think that as a community, a way to kind of collaborate loosely, 591 00:35:10,551 --> 00:35:14,261 even though we're all working on our own projects, is to think in terms of 592 00:35:14,261 --> 00:35:18,461 like, what are the relatively solved problems that we can codify with, I 593 00:35:18,461 --> 00:35:21,781 don't know, writing or, you know, open source libraries or things like that. 594 00:35:21,781 --> 00:35:25,681 We say this, this we basically have settled on the right way to do it. 595 00:35:26,081 --> 00:35:28,176 and there's many implementations of that. 596 00:35:28,386 --> 00:35:33,696 and then other areas where we still need a wide and diverse set of active experiments 597 00:35:33,696 --> 00:35:37,226 to try to figure out how are we going to, how are we going to solve this problem 598 00:35:37,226 --> 00:35:39,636 in a local-first, uh, compatible way. 599 00:35:39,962 --> 00:35:45,352 This is also what stood out to me and talking to speakers, talking to, to 600 00:35:45,352 --> 00:35:48,512 other attendees, is how have they. 601 00:35:48,744 --> 00:35:54,064 who ship products, who shipped apps, how have they navigated the trade off space? 602 00:35:54,454 --> 00:35:58,554 some have like used off the shelf, technologies such as 603 00:35:58,564 --> 00:36:00,614 like AutoMerge, Yjs, etc. 604 00:36:00,874 --> 00:36:06,584 But then you're sort of at the mercy of how far those technologies are along and, 605 00:36:06,627 --> 00:36:14,237 the inherent or current insufficiencies of those technologies are also, hard 606 00:36:14,307 --> 00:36:17,207 to, advance for, for you yourself. 607 00:36:17,677 --> 00:36:23,157 And, uh, I think there's a notable other approach for, for app builders, 608 00:36:23,457 --> 00:36:27,397 which is that they don't yet use one of those off the shelf technologies, 609 00:36:27,787 --> 00:36:29,027 but they've rolled their own. 610 00:36:29,107 --> 00:36:32,714 And, whether that's Good Notes or whether that's Linear, et cetera, 611 00:36:32,974 --> 00:36:37,367 they've all started so early that They were convinced this is the right idea, 612 00:36:37,367 --> 00:36:41,217 this is the right approach, but we don't want to wait five years for the 613 00:36:41,247 --> 00:36:44,707 technologies to be there or to be mature enough, so they built it themselves. 614 00:36:44,717 --> 00:36:49,867 And I think this is something that so many of those local-first apps 615 00:36:50,237 --> 00:36:54,734 have that in common, which is very encouraging for me because, at the 616 00:36:54,734 --> 00:37:00,934 core of it, Those you can make really drastic trade offs, um, that fit your 617 00:37:00,984 --> 00:37:06,034 app use case and your app requirements that might not need all the guarantees 618 00:37:06,044 --> 00:37:07,834 something like AutoMerge can provide. 619 00:37:07,834 --> 00:37:11,944 And this can help you going kind of almost counter intuitively 620 00:37:12,144 --> 00:37:16,567 where, only very few would build their own Ruby on Rails to ship. 621 00:37:16,777 --> 00:37:22,457 A Rails app, but it, in a way you can get away with way stricter 622 00:37:22,517 --> 00:37:24,587 trade offs for your specific apps. 623 00:37:24,607 --> 00:37:29,507 So building your own syncing stack is actually not as much work. 624 00:37:29,557 --> 00:37:34,206 If you, have sort of like a, Like two months from Linear, if you have that 625 00:37:34,206 --> 00:37:38,946 sort of experience and, if you're daring enough that you feel like this 626 00:37:38,946 --> 00:37:43,056 is something that you want to do, but I think that's a, that's a similarity. 627 00:37:43,526 --> 00:37:49,336 And what is most interesting to me about that as well is that the trade off space 628 00:37:49,436 --> 00:37:54,968 is traversed in a very heterogeneous way. 629 00:37:55,058 --> 00:38:01,798 So, depending on how someone has struck some trade offs, they might be way 630 00:38:01,798 --> 00:38:03,908 further along to solve certain problems. 631 00:38:04,158 --> 00:38:10,149 So, if you, for example, follow more of like a event sourced architecture, then 632 00:38:10,159 --> 00:38:14,849 you might have entirely different ways to deal with the schema migration problem. 633 00:38:15,219 --> 00:38:20,666 Uh, for example, if you, implement your own CRDT stack or you have other benefits. 634 00:38:20,986 --> 00:38:26,426 So, and I think this now gives us a pool of experiences where one technology 635 00:38:26,426 --> 00:38:31,046 can learn from the entirely different architectural approach and, uh, 636 00:38:31,126 --> 00:38:33,459 sort of cross pollinate, the ideas. 637 00:38:33,919 --> 00:38:38,709 And so this was really interesting to exchange those ideas and that 638 00:38:38,769 --> 00:38:40,109 was kind of my main takeaway. 639 00:38:40,336 --> 00:38:41,066 Absolutely. 640 00:38:41,766 --> 00:38:45,016 I think, you know, maybe the last takeaway I would probably mention was 641 00:38:45,026 --> 00:38:49,446 just, um, probably some of my favorite conversations there were talking to the 642 00:38:50,056 --> 00:38:53,986 People I put in the local-first curious demographic, sometimes they were, you 643 00:38:53,986 --> 00:38:58,296 know, colleagues with someone who was deeper in that world and this was a chance 644 00:38:58,306 --> 00:39:02,336 for them to better understand this, this weird thing their colleague was into. 645 00:39:02,636 --> 00:39:06,016 In some cases, they just had seen the buzz online and wanted 646 00:39:06,016 --> 00:39:07,326 to, to find out about it. 647 00:39:07,511 --> 00:39:11,541 Yeah, for, for example, the, you know, schema migrations being something that is, 648 00:39:11,778 --> 00:39:16,958 at least the many in the community feel is, is, is largely an unsolved problem. 649 00:39:17,218 --> 00:39:21,378 And then that caused one person I was talking to be like, whoa, whoa, whoa, I 650 00:39:21,378 --> 00:39:24,948 don't want to have anything to do with the technology that, that hasn't solved this. 651 00:39:25,154 --> 00:39:28,424 because you know, this is so, that's such a fundamental thing to, you 652 00:39:28,424 --> 00:39:31,744 know, building an app in the long term and with a data stack you can trust. 653 00:39:32,119 --> 00:39:34,779 Which I thought was a, which I thought was an interesting perspective. 654 00:39:34,989 --> 00:39:36,399 And I was kind of like, don't worry, we'll solve it. 655 00:39:36,659 --> 00:39:40,589 And that didn't necessarily, you know, put their, put them at ease, but it is a, 656 00:39:40,609 --> 00:39:43,939 you know, it was a good illustration of the fact that we are trying to go across 657 00:39:43,939 --> 00:39:50,699 the cusp of the threshold from, you know, academic, big idea, ivory tower into real 658 00:39:50,699 --> 00:39:55,513 world thing you can use, but you know, it's, it's, it is still an intermediary, 659 00:39:55,743 --> 00:39:57,413 intermediary state very much. 660 00:39:57,748 --> 00:39:58,858 Very much bleeding edge. 661 00:39:59,348 --> 00:40:04,298 Another person I talked to said basically that, you know, they were new to it, 662 00:40:04,308 --> 00:40:09,328 but they, the energy that they felt, was really, um, unique and interesting. 663 00:40:09,398 --> 00:40:13,134 And they, made a comparison I, I found very positive, which was to 664 00:40:13,134 --> 00:40:16,434 say they basically hadn't felt the same thing since being part of, or 665 00:40:16,444 --> 00:40:20,864 being around in the React world circa 2013, where kind of, and obviously 666 00:40:20,864 --> 00:40:23,764 there, there was a, a main library that everything centered around, but I 667 00:40:23,764 --> 00:40:25,574 think in general, the idea of reactive. 668 00:40:25,824 --> 00:40:30,978 UIs and reactive rendering as kind of the right solution for, for building 669 00:40:30,978 --> 00:40:35,018 applications of all kinds was, you know, was kind of this fresh, 670 00:40:35,318 --> 00:40:38,568 um, but, but clearly correct idea. 671 00:40:38,788 --> 00:40:42,298 But similarly there, I guess, coming back to the, you know, still a work 672 00:40:42,298 --> 00:40:46,028 in progress, bleeding edge Stuff to figure out if you were part of the 673 00:40:46,028 --> 00:40:50,228 React community back then, things like state management, you would, you 674 00:40:50,228 --> 00:40:53,548 know, you would pick up a library that was supposed to be the, uh, you know, 675 00:40:53,738 --> 00:40:55,288 this is the way the community does it. 676 00:40:55,288 --> 00:40:57,168 This is the state of the art and you use it. 677 00:40:57,168 --> 00:40:59,288 And six months later, that library is deprecated. 678 00:40:59,288 --> 00:41:02,538 And another one is, is now considered the, and you're like, wait a minute, I'm 679 00:41:02,538 --> 00:41:05,748 trying to build an application here and I'm not just sort of on shifting sands. 680 00:41:05,958 --> 00:41:08,958 And that is, you know, that of course is the trade off being, being part of a 681 00:41:08,958 --> 00:41:13,234 community that's still so so young and, and in the process of figuring it out. 682 00:41:13,234 --> 00:41:14,904 But to me, it's what makes it so exciting. 683 00:41:14,914 --> 00:41:19,304 Cause there are so many problems to solve and not only engineering and 684 00:41:19,304 --> 00:41:24,454 technology wise, but design wise, we need whole new UX and UI patterns in 685 00:41:24,454 --> 00:41:26,264 many cases to describe things like. 686 00:41:26,614 --> 00:41:28,454 Sync state, pick a very simple one. 687 00:41:28,814 --> 00:41:33,124 So that being on the frontier in that way is to me, uh, uh, is quite a lot of fun. 688 00:41:33,794 --> 00:41:35,774 Yeah, it was certainly my happy place. 689 00:41:35,814 --> 00:41:41,554 I consider myself to be like a technical pioneer and the conference 690 00:41:41,554 --> 00:41:46,394 had an incredible density of other technical pioneers where it could just 691 00:41:46,594 --> 00:41:52,413 exchange sort of weird battle stories of how you deal with, taming the 692 00:41:52,423 --> 00:41:58,043 browser to, to do what you want and, to make things work cross platform or 693 00:41:58,043 --> 00:42:00,403 certain performance tricks, et cetera. 694 00:42:00,403 --> 00:42:02,503 So it was certainly my, my happy place. 695 00:42:02,999 --> 00:42:07,709 I want to slightly shift gears and talk about another theme that stood 696 00:42:07,709 --> 00:42:12,029 out for me across the different conversations I had, and also across 697 00:42:12,069 --> 00:42:16,213 the different talks that we heard, which was more around centered around 698 00:42:16,233 --> 00:42:18,993 the definition of local-first itself. 699 00:42:19,033 --> 00:42:23,719 And Martin kicked off the day by reiterating, the, the initial 700 00:42:23,729 --> 00:42:26,129 ideals for, for local-first. 701 00:42:26,149 --> 00:42:31,646 And I invite everyone to watch Martin's amazing, keynote talk there as well 702 00:42:31,666 --> 00:42:36,236 to, to hear those, those words for yourself, but I think the ideas were. 703 00:42:36,436 --> 00:42:41,776 Kind of reflecting on the initial essay, how the initial essay laid out, 704 00:42:41,926 --> 00:42:46,166 the, the seven ideals for local-first software, but that was never really 705 00:42:46,166 --> 00:42:50,636 like a strict definition of what is local-first software actually. 706 00:42:50,856 --> 00:42:54,151 And also importantly, what is not local-first software. 707 00:42:54,191 --> 00:42:59,814 So Martin provided, some new ideas about that, which maybe you want to recap 708 00:42:59,814 --> 00:43:04,734 them here, but this also then led to an interesting follow up conversation 709 00:43:05,084 --> 00:43:10,364 of like many of the products that were showed throughout the conference would 710 00:43:10,374 --> 00:43:13,204 not fully qualify as local-first software. 711 00:43:13,504 --> 00:43:17,554 And I think this is, some people feel more passionate about, like, 712 00:43:17,964 --> 00:43:21,611 very strictly, defining, oh, this is local-first software, whereas 713 00:43:21,651 --> 00:43:23,191 this is not local-first software. 714 00:43:23,641 --> 00:43:28,451 And I think there's this interesting trade off and interesting tension for, for us 715 00:43:28,521 --> 00:43:35,421 as a, as a community, as an ecosystem That I would like to see is that we see, um, 716 00:43:35,691 --> 00:43:40,401 that see like an app sort of like on a progression, on a spectrum of like growing 717 00:43:40,401 --> 00:43:46,761 up to become local-first and as a powering technologies such as Automerge, et cetera. 718 00:43:47,061 --> 00:43:50,791 As they mature, it's gonna make it much easier to build fully 719 00:43:50,791 --> 00:43:52,561 compliant local-first software. 720 00:43:52,861 --> 00:43:53,521 But kinda. 721 00:43:53,731 --> 00:43:58,401 grappling with that definition of local, pure local-first software, I'd be 722 00:43:58,401 --> 00:44:01,301 curious whether you have some thoughts on that and want to reflect on it. 723 00:44:01,479 --> 00:44:05,639 Yeah, this is an important question as the community grows up and especially 724 00:44:05,639 --> 00:44:09,939 again, comparing to a community built around a particular open source library 725 00:44:09,939 --> 00:44:13,079 or something like that, you don't have that same definitional thing. 726 00:44:13,089 --> 00:44:15,869 Although even there, you can sometimes have something where a major new 727 00:44:15,869 --> 00:44:19,519 version, it takes the library in a different direction and then people 728 00:44:19,519 --> 00:44:21,549 say, this isn't what I was here for. 729 00:44:21,549 --> 00:44:23,799 This isn't the core of what we're all about. 730 00:44:24,269 --> 00:44:27,369 local-first is unique in that it is, yeah, philosophy and a 731 00:44:27,369 --> 00:44:29,313 set of ideals, that we think. 732 00:44:29,613 --> 00:44:33,563 imagines a better world or a better type of software, but not a specific 733 00:44:33,823 --> 00:44:35,883 implementation or single library. 734 00:44:36,163 --> 00:44:40,043 and we always, you know, that initial definition of the, the goal is data 735 00:44:40,043 --> 00:44:44,583 ownership for people who use computers for creative and productive purposes. 736 00:44:45,123 --> 00:44:49,918 If I'm writing a book, The book belongs to me, and the software should reflect that. 737 00:44:50,121 --> 00:44:53,641 and then the seven ideals are sort of like the, also, in some sense, you could 738 00:44:53,641 --> 00:44:55,601 also describe them as user benefits. 739 00:44:55,901 --> 00:45:00,201 These are things that you get as a result of kind of building in this 740 00:45:00,551 --> 00:45:04,451 way, and that therefore you can, as we conceptualize it then, essentially create 741 00:45:04,451 --> 00:45:06,731 a scorecard, and that implies a spectrum. 742 00:45:06,791 --> 00:45:10,121 If you score a zero out of seven, I think it's fair to say you don't 743 00:45:10,181 --> 00:45:11,691 really count as local-first software. 744 00:45:12,061 --> 00:45:13,201 Uh, you know, try again. 745 00:45:13,201 --> 00:45:15,891 If you score two out of seven, well, you know, it's a start. 746 00:45:16,151 --> 00:45:17,171 That's, that's pretty good. 747 00:45:17,591 --> 00:45:21,481 If you score five or six out of seven, then you're doing great. 748 00:45:21,491 --> 00:45:26,601 I mean, I think to some extent it's almost not even fully achievable in 749 00:45:26,601 --> 00:45:30,621 the real world to, to have truly seven out of seven and also have a, you 750 00:45:30,621 --> 00:45:32,491 know, a product that's widely used. 751 00:45:32,641 --> 00:45:35,941 I think that will change, I think, as we continue to, if we push the, push 752 00:45:35,941 --> 00:45:39,481 the boundaries on this, there is a day when you can imagine that all software, 753 00:45:39,701 --> 00:45:42,811 again, you referenced that earlier, like things built into the operating system, 754 00:45:43,131 --> 00:45:46,971 fundamentally, I think that the, the ultimate utopia for local-first or the 755 00:45:46,971 --> 00:45:51,951 ultimate, again, idealized world that I picture with it is our computers are 756 00:45:51,951 --> 00:45:55,691 fundamentally built in this way and things are built into the operating system or 757 00:45:55,691 --> 00:46:00,981 into a platform like web technologies that is specifically designed to support, 758 00:46:01,301 --> 00:46:04,081 um, this way of software existing. 759 00:46:04,101 --> 00:46:07,191 But until then, you know, we'll take, you know, I think Muse, for 760 00:46:07,191 --> 00:46:10,471 example, we called that local-first software, but we probably scored a 761 00:46:10,631 --> 00:46:12,361 three or a four out of the seven. 762 00:46:12,651 --> 00:46:15,961 And that was because we identified, coming back to that trade offs point you 763 00:46:15,961 --> 00:46:20,111 were making earlier, we identified Here are the things that we think are really 764 00:46:20,111 --> 00:46:24,691 ready for primetime now, where now was a couple of years ago, and, that we can 765 00:46:24,691 --> 00:46:29,111 implement on our team and that sort of benefits our business and our users. 766 00:46:29,331 --> 00:46:32,621 Here's some other ones that we're just going to leave out of scope for now. 767 00:46:32,631 --> 00:46:37,081 That's aspirational for the future, but right at this moment, it's not pragmatic 768 00:46:37,081 --> 00:46:39,061 for us to, for us to pursue that. 769 00:46:39,271 --> 00:46:43,331 So I think this is sort of the, this very interesting striking a fine balance 770 00:46:43,351 --> 00:46:48,631 between being pragmatic and being idealistic, and where being pragmatic 771 00:46:48,671 --> 00:46:53,914 might help you shipping sooner, whereas being idealistic, might take you longer. 772 00:46:54,134 --> 00:46:58,879 But, uh, enables your users with, providing more of the benefits and 773 00:46:58,889 --> 00:47:00,789 ultimately full data ownership. 774 00:47:00,789 --> 00:47:04,923 And I think the, the hardest, ideal to kind of reach right now, which 775 00:47:04,933 --> 00:47:09,913 Martin spelled out, uh, very explicitly is like, if the, the app builders 776 00:47:10,053 --> 00:47:12,243 go out of business, the app still. 777 00:47:12,428 --> 00:47:17,188 can work and, so that the app is not, degraded in functionality. 778 00:47:17,498 --> 00:47:22,058 And I think that takes a lot from a company like Linear, et cetera. 779 00:47:22,068 --> 00:47:27,088 That's probably takes most of the backseat and accomplishing the ideals, 780 00:47:27,088 --> 00:47:31,138 very understandably so, because you building an app, et cetera. 781 00:47:31,414 --> 00:47:35,214 got to, for most people got to pay the bills and this is the hardest 782 00:47:35,214 --> 00:47:40,816 to achieve and, probably also helps the least in the short term in terms 783 00:47:40,816 --> 00:47:42,346 of getting new users, et cetera. 784 00:47:42,366 --> 00:47:47,773 So I hope that we'll reach at some point, from a technological advancement that 785 00:47:47,773 --> 00:47:52,503 this is just so easy, that self hosting becomes so easy, that data ownership, 786 00:47:52,743 --> 00:47:56,993 the operating system all supports that, that we have a generic sync server. 787 00:47:57,263 --> 00:48:02,333 that we get this ideal almost for free by using the right technologies, but 788 00:48:02,333 --> 00:48:06,753 I think right now you need to fight the hardest to achieve that ideal. 789 00:48:07,106 --> 00:48:07,866 Yes, that's right. 790 00:48:07,866 --> 00:48:11,486 And again, that comes into built into the platforms and the operating systems 791 00:48:11,486 --> 00:48:13,726 and the foundational layer, right? 792 00:48:13,766 --> 00:48:18,646 Like you can try to talk users into using, I don't know, end to end 793 00:48:18,656 --> 00:48:24,146 encryption in their email by like generating PGP keys or whatever, but 794 00:48:24,166 --> 00:48:26,886 ultimately, things like the mobile. 795 00:48:27,171 --> 00:48:30,971 Operating system platforms with their secure enclaves and key management 796 00:48:30,981 --> 00:48:36,271 built in and biometrics and secure messaging apps that kind of make all 797 00:48:36,271 --> 00:48:41,051 that easy and make it just, again, part of the foundations where a 798 00:48:41,061 --> 00:48:44,821 regular person can, an app developer can build this reasonably and a 799 00:48:44,821 --> 00:48:46,911 regular person using it can access it. 800 00:48:47,211 --> 00:48:50,421 It requires more than what any individual. 801 00:48:50,606 --> 00:48:53,276 builder or any individual app creator can, can do. 802 00:48:53,276 --> 00:48:55,936 So, so you do your best, uh, with what you have. 803 00:48:55,946 --> 00:48:56,186 Yeah. 804 00:48:56,186 --> 00:48:57,726 So to, yeah, exactly. 805 00:48:57,726 --> 00:49:00,806 So Martin's description, which you should definitely watch the video of 806 00:49:00,806 --> 00:49:06,826 his talk, but is the thing that makes something local-first is that no one can 807 00:49:06,836 --> 00:49:09,336 kind of take your data away from you. 808 00:49:09,676 --> 00:49:14,426 And I think in these, it's hard to separate the data and the app to some 809 00:49:14,426 --> 00:49:17,726 extent, because While there are standard file formats and things like that, the 810 00:49:17,726 --> 00:49:22,536 reality is just that, like, if Notion stops working, but I have an export of a 811 00:49:22,536 --> 00:49:28,976 zip file of a bunch of HTML or however it exports, it's like, well, I kind of have 812 00:49:28,976 --> 00:49:32,736 my data, but not really, I don't, without the functionality of the application and 813 00:49:32,736 --> 00:49:36,926 the way to navigate links and search and add new things, whatever, I kind of have, 814 00:49:37,136 --> 00:49:41,336 I really have lost something, like My corpus of whatever I had in Notion to, 815 00:49:41,676 --> 00:49:43,816 in this example, would be lost to me. 816 00:49:44,243 --> 00:49:47,583 and his description is basically, yeah, the company going out of 817 00:49:47,583 --> 00:49:51,523 business and being acquired and the owner deciding to, you know, do a 818 00:49:51,523 --> 00:49:54,994 hard pivot in some direction that, you know, you know, kicks out a bunch of 819 00:49:55,004 --> 00:49:59,804 the former users and customers, uh, or just simply, yeah, servers going 820 00:49:59,804 --> 00:50:03,144 offline, right, is the short, is the, is the near term version of that. 821 00:50:03,464 --> 00:50:06,424 And that, you know, the classic thing of like, oh, Slack's down, GitHub's 822 00:50:06,434 --> 00:50:12,024 down, or whatever means now I can't work, that, that would not be the case. 823 00:50:12,224 --> 00:50:17,079 So, I really like that as like a much, A really boiled down litmus test that 824 00:50:17,079 --> 00:50:22,359 if you have that, all the other stuff is probably going to tend to come with it. 825 00:50:22,649 --> 00:50:25,009 so I like it as a, again, an aspirational thing. 826 00:50:25,009 --> 00:50:26,359 I think it's a longer term thing. 827 00:50:26,359 --> 00:50:28,999 I think it's a thing where we're all trying to move towards. 828 00:50:29,089 --> 00:50:31,649 You can build in that way today, but again, there are, there are 829 00:50:31,649 --> 00:50:34,449 trade offs to make, especially if you're a commercial business. 830 00:50:34,779 --> 00:50:37,589 Depending on what exact domain you're in and what platform you're on and so forth. 831 00:50:37,649 --> 00:50:40,669 For example, it's probably a lot easier to do that if you're in a, uh, kind 832 00:50:40,669 --> 00:50:43,359 of like a building a native app and then if you're building a web app. 833 00:50:43,689 --> 00:50:46,339 , but I, I think that is a really nice, definition. 834 00:50:46,339 --> 00:50:51,669 Now he also said in his talk, you know, while he is a, a cornerstone person in 835 00:50:51,669 --> 00:50:53,663 this, community, it is a community, right? 836 00:50:53,673 --> 00:50:57,523 No one has, you know, there, there's no, uh, there's no benevolent dictators here. 837 00:50:57,728 --> 00:51:01,631 Or dictators of any kind, I guess, and he, he has a lot of moral 838 00:51:01,641 --> 00:51:04,441 authority, but he can't just say this is, this is what it is. 839 00:51:04,441 --> 00:51:07,291 We all have to decide that for ourselves. 840 00:51:07,291 --> 00:51:12,201 And so, to some extent, I think also this could kick off a discussion about that for 841 00:51:12,201 --> 00:51:14,631 the community have sort of with itself. 842 00:51:14,911 --> 00:51:16,091 And again, I have my opinions. 843 00:51:16,091 --> 00:51:16,741 You have yours. 844 00:51:16,761 --> 00:51:21,771 Martin has his, um, but I think Again, we, we may play key roles in the 845 00:51:21,791 --> 00:51:23,291 community and helping get things started. 846 00:51:23,291 --> 00:51:26,341 But what makes it as a community is we're all defining it together. 847 00:51:26,341 --> 00:51:30,281 So I think to me, it's very healthy to have those discussions and hopefully it 848 00:51:30,281 --> 00:51:34,631 doesn't turn into a purity or a holier than thou discussion, but it does turn 849 00:51:34,631 --> 00:51:39,481 into a practically speaking, what unites us, what are we doing here and how do we 850 00:51:39,481 --> 00:51:44,051 agree on, you know, what the kind of what our goals are and our values together. 851 00:51:44,453 --> 00:51:50,233 Exactly, and I think the conference, is a great result and a great milestone 852 00:51:50,263 --> 00:51:55,673 in that spirit, where it attracted people who've been doing local-first 853 00:51:55,693 --> 00:52:00,203 software development for way longer than the essay has been around, brought in 854 00:52:00,203 --> 00:52:04,343 people who found out about the ideas of local-first because of the essay. 855 00:52:04,703 --> 00:52:09,683 And now this community is like growing in a very organic way to 856 00:52:10,003 --> 00:52:13,853 propagate those ideas and kind of figure out the right trade offs. 857 00:52:13,853 --> 00:52:18,553 And ultimately it is still about the benefits for the users and 858 00:52:18,553 --> 00:52:19,823 the benefits for developers. 859 00:52:19,873 --> 00:52:22,033 This is what brings people to the table. 860 00:52:22,383 --> 00:52:26,583 So I'm very excited how all of that is like very organically evolving. 861 00:52:27,043 --> 00:52:28,633 So I'm curious whether. 862 00:52:29,123 --> 00:52:34,803 The conference has somehow changed your own perspective on local-first, since in a 863 00:52:34,803 --> 00:52:38,946 way, when you wrote that essay, I'm, I'm sure there was sort of like an interesting 864 00:52:38,956 --> 00:52:43,426 balance between seeing, Oh, this is achievable and theoretically possible, 865 00:52:43,746 --> 00:52:48,076 but probably also a bit of like a kick in the butt for the developer community 866 00:52:48,076 --> 00:52:49,816 is like, Hey, we can do this differently. 867 00:52:50,156 --> 00:52:53,386 But, I'm not sure whether you would have put down money on that 868 00:52:53,386 --> 00:52:56,866 day when you published it to say like, uh, everything's going to be. 869 00:52:57,121 --> 00:52:58,771 in the future like that. 870 00:52:59,061 --> 00:53:03,801 So I'm curious whether the conference as a very, very concrete point in 871 00:53:03,811 --> 00:53:08,131 time has changed your perspective and outlook on the future of local-first? 872 00:53:08,518 --> 00:53:09,028 It has. 873 00:53:09,028 --> 00:53:14,094 I mean, the, mainly just the energy and it hasn't changed my sense on like, 874 00:53:14,104 --> 00:53:18,516 what the direction should be or, or, Again, coming back to this is, this 875 00:53:18,526 --> 00:53:20,486 is how I would like the world to be. 876 00:53:20,896 --> 00:53:23,376 How I would like the world of technology or software to be. 877 00:53:24,016 --> 00:53:28,236 That has been the same since probably I saw the first experiments, uh, that 878 00:53:28,236 --> 00:53:33,826 Peter was leading back at Ink and Switch circa 2017, and I saw what software could 879 00:53:33,836 --> 00:53:39,246 be like, how fast the data ownership piece, the developer experience, the 880 00:53:39,246 --> 00:53:43,323 simplicity of not needing to run servers were very few, when I saw those, those 881 00:53:43,323 --> 00:53:46,283 first demos, they weren't, they were working software, but they weren't. 882 00:53:46,558 --> 00:53:47,518 You know, production ready. 883 00:53:47,518 --> 00:53:48,538 And I knew that at the time. 884 00:53:48,538 --> 00:53:51,608 And, and when we wrote the essay, we felt we had learned enough that we 885 00:53:51,608 --> 00:53:55,811 could write down these, these ideas in a way that we hope would be compelling. 886 00:53:56,461 --> 00:53:59,311 But absolutely at the time, someone came to me and said, Oh, great. 887 00:53:59,311 --> 00:54:00,431 Should I build my app in this way? 888 00:54:00,601 --> 00:54:02,461 I would be like, probably not. 889 00:54:02,871 --> 00:54:06,821 Uh, and indeed, even today, if someone was asking for pragmatic advice, I 890 00:54:06,821 --> 00:54:11,461 would say, okay, well tell me exactly what domain you're in, exactly what 891 00:54:11,461 --> 00:54:15,561 stage you're in, what kind of users you have, because it remains, you know, 892 00:54:15,561 --> 00:54:17,131 there's a lot of trade offs being so. 893 00:54:17,388 --> 00:54:21,431 so on the bleeding edge, but I think the conference mainly convinced me that 894 00:54:21,441 --> 00:54:25,521 certainly there's more people doing this, actually doing it directly, like 895 00:54:25,521 --> 00:54:30,284 doing it as a day job or a very serious side project, than I thought there's 896 00:54:30,304 --> 00:54:34,134 more interest from the wider world of application developers than I thought. 897 00:54:34,364 --> 00:54:39,784 and that, yeah, maybe, maybe the time is now in the sense of, I'm not sure 898 00:54:39,784 --> 00:54:41,734 what the action is there, I guess. 899 00:54:42,064 --> 00:54:45,634 Um, but if, if, if a person does want to do something in the space and again, the 900 00:54:45,634 --> 00:54:50,384 action we've chosen to take is put on a conference, cause that's what felt right. 901 00:54:50,384 --> 00:54:54,931 And indeed we can, um, you know, discuss the, is there a next year, piece of it. 902 00:54:54,941 --> 00:54:58,108 But, certainly there's something really here. 903 00:54:58,588 --> 00:55:00,338 You can see that it's taking shape. 904 00:55:00,548 --> 00:55:04,288 and if this is something I think you're interested in getting involved in 905 00:55:04,408 --> 00:55:06,748 now is absolutely the perfect time. 906 00:55:06,818 --> 00:55:08,568 That's my, that's my takeaway. 907 00:55:08,598 --> 00:55:12,268 And for me, you know, I was obviously, I've obviously been involved a long time, 908 00:55:12,268 --> 00:55:15,848 but it's basically reignited my interest, you know, in some ways I drifted away 909 00:55:15,848 --> 00:55:18,908 from it in the last few years because I was working on other things and because, 910 00:55:19,358 --> 00:55:22,353 yeah, essentially it hadn't reached this level of maturity either in the 911 00:55:22,353 --> 00:55:26,223 technology or in the kind of the ideas finding their way in the community. 912 00:55:26,223 --> 00:55:29,443 But now I see, uh, the incredible resonance it has. 913 00:55:29,463 --> 00:55:31,293 I say, okay, there's, there's something here. 914 00:55:31,804 --> 00:55:38,154 Yeah, and I want to share one anecdote or memory that's still in my mind 915 00:55:38,164 --> 00:55:42,794 from, I think, a lunch that you and I had in Berlin sometime last 916 00:55:42,834 --> 00:55:47,824 summer, where I think you've asked it even sometimes before then, it's 917 00:55:47,824 --> 00:55:51,829 like, hey, why is no one building a Ruby on Rails for, for local-first? 918 00:55:51,849 --> 00:55:55,199 And so this was at that point, I think was like one and a half 919 00:55:55,209 --> 00:55:57,579 years into building Overtone. 920 00:55:57,609 --> 00:56:01,973 And I've been, working on Riffle together with Jeoffrey, et cetera, but it was so 921 00:56:01,973 --> 00:56:08,484 tailor made for Overtone that, at least from my perspective, I didn't really see 922 00:56:08,484 --> 00:56:15,919 a path how Rffle could turn into a Ruby on Rails that can empower local-first 923 00:56:16,139 --> 00:56:20,389 and also the other technologies in the local-first ecosystem weren't quite 924 00:56:20,399 --> 00:56:22,379 ready and on that trajectory yet. 925 00:56:22,709 --> 00:56:27,424 But I think within the last year, I can really see, A bunch of technologies, 926 00:56:27,481 --> 00:56:32,371 really nicely being on the trajectory of being that Ruby on Rails or pick any 927 00:56:32,681 --> 00:56:37,361 other analogies that like facilitates this, like new way of building. 928 00:56:37,451 --> 00:56:40,931 I can see this much more clearly now than, than ever before. 929 00:56:40,951 --> 00:56:44,711 And so I think finally I get to give you a different answer 930 00:56:44,721 --> 00:56:46,651 than what we had at that lunch. 931 00:56:46,741 --> 00:56:50,041 And I think this is just going to be such a multiplier and there's 932 00:56:50,041 --> 00:56:54,451 different trade offs, different flavors and shapes of Ruby on Rail is. 933 00:56:54,951 --> 00:56:59,258 But I think this will be another inflection point that allows those 934 00:56:59,388 --> 00:57:03,088 local-first curious people, maybe not the pioneers, but the local-first 935 00:57:03,108 --> 00:57:08,038 curious to flip their default to building a new app local-first 936 00:57:08,228 --> 00:57:11,218 without paying the pioneer's tax. 937 00:57:11,698 --> 00:57:15,788 And, maybe we've reached or gotten a lot closer to that point in a year from now. 938 00:57:16,068 --> 00:57:17,578 So I'm very much looking forward to that. 939 00:57:17,974 --> 00:57:18,494 Absolutely. 940 00:57:18,494 --> 00:57:18,644 Yeah. 941 00:57:18,644 --> 00:57:22,314 If you put it in the frame of the crossing the chasm adoption curve. 942 00:57:22,934 --> 00:57:26,814 Which I think a lot of folks have seen, and if not, you can do a web search for 943 00:57:26,814 --> 00:57:31,254 it, but there's the early adopters who are there often because it is novel, 944 00:57:31,484 --> 00:57:35,094 because it's exciting, because there's interesting new stuff that you can't 945 00:57:35,094 --> 00:57:40,084 get, but They're not really there for, yeah, pragmatism is not the The thing 946 00:57:40,094 --> 00:57:44,814 they're there for that literally the novelty and that there's a little bit of 947 00:57:44,814 --> 00:57:49,094 a chasm you have to jump over but then the next big block of people who might 948 00:57:49,474 --> 00:57:54,494 adopt are what they label pragmatists and those are people for whom they have 949 00:57:54,494 --> 00:58:00,089 a pain to solve that is so strong that they are willing to step outside of 950 00:58:00,089 --> 00:58:04,659 the status quo of known good solutions a little bit to find that solution. 951 00:58:04,659 --> 00:58:07,949 That comes back to the, you know, someone asked me to advise them on, should I 952 00:58:07,949 --> 00:58:10,579 build my, my new app local-first today? 953 00:58:10,579 --> 00:58:13,869 And I would want to know a lot of the details because you would, if there's a 954 00:58:13,869 --> 00:58:17,859 very specific problem to solve, this is exactly the case for you with Overtone 955 00:58:18,149 --> 00:58:21,709 and the kind of music ownership, piece of it for the, for the audio files. 956 00:58:21,959 --> 00:58:23,309 That's something that's really. 957 00:58:23,499 --> 00:58:24,089 Good fit. 958 00:58:24,376 --> 00:58:28,326 other things maybe are You know, in the end, I kind of hope all software will 959 00:58:28,326 --> 00:58:33,156 be local-first, but there's varying degrees to which paying that, being 960 00:58:33,166 --> 00:58:38,239 early tax, the pioneer taxes, as you described it, may be worth it depending 961 00:58:38,239 --> 00:58:39,429 on the domain that you're building for. 962 00:58:39,429 --> 00:58:42,169 But of course, over time, that pioneer tax gets less and less. 963 00:58:42,179 --> 00:58:45,153 It's already gotten way less than last year, and probably in the 964 00:58:45,523 --> 00:58:47,153 last six months, it will get less. 965 00:58:47,533 --> 00:58:51,429 It's going to continue going down, and so that makes the trade off. 966 00:58:51,824 --> 00:58:52,994 to think about less and less. 967 00:58:52,994 --> 00:58:56,534 And eventually it just becomes the pragmatic solution to just 968 00:58:56,534 --> 00:58:58,454 say like, Oh, obviously you're going to do things that way. 969 00:58:58,454 --> 00:59:00,454 That's just kind of the best way. 970 00:59:01,058 --> 00:59:01,758 That's awesome. 971 00:59:02,308 --> 00:59:03,818 Adam, what is next for you? 972 00:59:03,838 --> 00:59:08,758 You've been a true pioneer for the entire local-first ecosystem. 973 00:59:08,768 --> 00:59:11,998 You've been working on Muse over the last couple of months. 974 00:59:12,278 --> 00:59:16,298 I've seen you involved in a couple of other interesting projects. 975 00:59:16,838 --> 00:59:21,888 So for, for those of you who follow you closely, what can we expect? 976 00:59:22,396 --> 00:59:27,906 Yeah, well, I'm taking some time this year to just kind of wander a bit, try 977 00:59:27,906 --> 00:59:29,716 some weird projects, work with new people. 978 00:59:29,726 --> 00:59:34,456 Indeed, that's how I ended up, uh, being open to the idea of helping 979 00:59:34,456 --> 00:59:36,846 put on a conference, which is something I'd never done before. 980 00:59:37,196 --> 00:59:40,136 Uh, so when you approached me for that, I, I said, yeah, this, this 981 00:59:40,136 --> 00:59:41,766 fits into my, fits into my theme. 982 00:59:41,786 --> 00:59:42,906 I've always wanted the chance to work. 983 00:59:43,271 --> 00:59:44,081 Directly with you. 984 00:59:44,081 --> 00:59:46,641 And, uh, it's obviously the right time for the community. 985 00:59:46,641 --> 00:59:49,081 And yeah, just an interesting learning experience for me. 986 00:59:49,751 --> 00:59:53,861 Um, yeah, relatedly, got to work with Jeoffrey Litt and Ink and Switch on the 987 00:59:53,861 --> 00:59:58,304 Patchwork project doing universal version control, which to me is a, is an idea 988 00:59:58,304 --> 01:00:00,434 that is built on local-first quite a bit. 989 01:00:00,434 --> 01:00:04,284 I see local-first in some ways as like the first layer, when you have that foundation 990 01:00:04,494 --> 01:00:07,844 of a new kind of computing down, you can build a lot of cool things on top 991 01:00:07,844 --> 01:00:12,024 of that and the, the universal version control steps us in that direction. 992 01:00:12,283 --> 01:00:16,843 and then I'm also at the moment wrapping a project with Elicit, which is an 993 01:00:16,853 --> 01:00:21,293 AI powered kind of literature search tool, so it basically helps scientists, 994 01:00:21,293 --> 01:00:25,263 particularly doing systematic reviews, so that for me has been a chance to get a 995 01:00:25,263 --> 01:00:27,393 real crash course in the language model. 996 01:00:27,748 --> 01:00:30,688 And AI, world of things, working with some really world 997 01:00:30,688 --> 01:00:32,408 class machine learning people. 998 01:00:32,958 --> 01:00:37,038 So, and, and see what that's like to apply to a, to a real world problem. 999 01:00:37,528 --> 01:00:39,668 Uh, and after this, we'll, uh, we'll see. 1000 01:00:39,668 --> 01:00:43,818 But I'm, I'm continuing to kind of wander around, do, do interesting small projects. 1001 01:00:43,964 --> 01:00:46,974 in terms of, yeah, obviously my interests around everything. 1002 01:00:47,309 --> 01:00:51,589 That Ink & Switch ever works on like end user programming and, and, uh, infinite 1003 01:00:51,589 --> 01:00:56,866 canvases and local-first, will continue to be the center point for my, for my career. 1004 01:00:56,866 --> 01:01:02,036 So I'm always looking for opportunities to push those, those ideas, uh, forward. 1005 01:01:02,036 --> 01:01:05,906 And again, coming out of this conference, it's just this feeling that there's 1006 01:01:05,906 --> 01:01:10,966 something really happening in local-first and, you know, I want to try to help push 1007 01:01:10,966 --> 01:01:12,826 that forward in, in whatever way I can. 1008 01:01:12,836 --> 01:01:15,496 What, what exact way that will be, uh, haven't, haven't 1009 01:01:15,496 --> 01:01:16,556 quite figured that out yet. 1010 01:01:16,728 --> 01:01:22,618 Well, thank you so much for your wandering for over the past couple of decades. 1011 01:01:22,668 --> 01:01:27,958 I think this has always served as an incredible well of inspiration to me 1012 01:01:27,988 --> 01:01:33,338 and many others, whether it's how you showed how simple software deployment 1013 01:01:33,338 --> 01:01:38,775 can be with Heroku, and what has led you to, together with Peter and the 1014 01:01:38,775 --> 01:01:45,015 others, frame the ideas and the ideals of local-first and then also ship beautiful 1015 01:01:45,030 --> 01:01:50,140 software with Muse and the projects that you've been involved with since. 1016 01:01:50,210 --> 01:01:53,640 I can't wait to see where your mind takes you in the future. 1017 01:01:53,700 --> 01:01:55,020 So thank you so much for that. 1018 01:01:55,020 --> 01:01:56,720 And thank you so much for coming on the show. 1019 01:01:56,927 --> 01:01:59,347 Thank you for, for all the, all the lovely words. 1020 01:01:59,377 --> 01:02:00,937 And, uh, yeah, thanks for having me. 1021 01:02:00,957 --> 01:02:03,867 It's a lot of fun and all looking forward to continuing listening. 1022 01:02:04,466 --> 01:02:06,876 Thank you for listening to the local-first FM podcast. 1023 01:02:07,106 --> 01:02:10,616 If you've enjoyed this episode and haven't done so already, please subscribe and 1024 01:02:10,616 --> 01:02:12,176 leave a review wherever you're listening. 1025 01:02:12,546 --> 01:02:14,546 Please also share this episode with others. 1026 01:02:14,846 --> 01:02:17,646 Spreading the word about the podcast is a great way to 1027 01:02:17,646 --> 01:02:19,246 support it and to keep it going. 1028 01:02:19,716 --> 01:02:23,726 A special thanks again to Rocicorp and Expo for supporting this podcast. 1029 01:02:23,896 --> 01:02:24,686 See you next time.