- 20
- 33 451
Local First Podcast
Приєднався 10 гру 2023
A podcast about local-first software development
#19 – Brooklyn Zelenka: UCAN, Beehive, Beelay
The guest of this episode is Brooklyn Zelenka, a local-first researcher and creator of various projects including UCAN and Beehive. This conversation, will go deep on authorization and access control in a decentralized, local-first environment and explore this topic by learning about UCAN and Beehive. Later, the conversation will also diving into Beelay, a new generic sync server implementation developed by Ink & Switch.
00:00 Intro
04:18 UCAN
19:19 Beehive
37:25 Beelay
57:10 Performance benchmarks
01:02:23 The "compute" role in local-first
01:08:20 Outro
Mentioned in podcast
- Brooklyn Zelenka: notes.brooklynzelenka.com / github.com/expede / bsky.app/profile/expede.wtf / types.pl/@expede
- Messaging Layer Security (MLS): messaginglayersecurity.rocks
- Messaging layer security: Encrypting a group chat: ua-cam.com/video/FESp2LHd42U/v-deo.html
- TreeKEM: inria.hal.science/hal-02425247
- Group Messaging for Secure Asynchronous Collaboration by Matthew A. Weidner: mattweidner.com/assets/pdf/acs-dissertation.pdf
- Beehive lab notebook: www.inkandswitch.com/beehive/notebook
- UCAN Working Group: github.com/ucan-wg
- UCAN - Be in control of your auth: Brooklyn Zelenka (Local-First Conf): ua-cam.com/video/_fziCbcKAd4/v-deo.html
- Automerge: automerge.org
- WNFS Working Group: github.com/wnfs-wg
- Robust Composition: Towards a Unified Approach to Access Control and Concurrency Control by Mark Samuel Miller: www.erights.org/talks/thesis/markm-thesis.pdf
- SPKI Certificate Theory: www.rfc-editor.org/rfc/rfc2693
- Edwards-Curve Digital Signature Algorithm (EdDSA): www.rfc-editor.org/rfc/rfc8032
- Comparison of Symmetric Encryption Methods: soatok.blog/2020/07/12/comparison-of-symmetric-encryption-methods
Links:
Website: localfirst.fm
X/Twitter: x.com/localfirstfm
Thank you to www.convex.dev/ and electric-sql.com/ for supporting the podcast
00:00 Intro
04:18 UCAN
19:19 Beehive
37:25 Beelay
57:10 Performance benchmarks
01:02:23 The "compute" role in local-first
01:08:20 Outro
Mentioned in podcast
- Brooklyn Zelenka: notes.brooklynzelenka.com / github.com/expede / bsky.app/profile/expede.wtf / types.pl/@expede
- Messaging Layer Security (MLS): messaginglayersecurity.rocks
- Messaging layer security: Encrypting a group chat: ua-cam.com/video/FESp2LHd42U/v-deo.html
- TreeKEM: inria.hal.science/hal-02425247
- Group Messaging for Secure Asynchronous Collaboration by Matthew A. Weidner: mattweidner.com/assets/pdf/acs-dissertation.pdf
- Beehive lab notebook: www.inkandswitch.com/beehive/notebook
- UCAN Working Group: github.com/ucan-wg
- UCAN - Be in control of your auth: Brooklyn Zelenka (Local-First Conf): ua-cam.com/video/_fziCbcKAd4/v-deo.html
- Automerge: automerge.org
- WNFS Working Group: github.com/wnfs-wg
- Robust Composition: Towards a Unified Approach to Access Control and Concurrency Control by Mark Samuel Miller: www.erights.org/talks/thesis/markm-thesis.pdf
- SPKI Certificate Theory: www.rfc-editor.org/rfc/rfc2693
- Edwards-Curve Digital Signature Algorithm (EdDSA): www.rfc-editor.org/rfc/rfc8032
- Comparison of Symmetric Encryption Methods: soatok.blog/2020/07/12/comparison-of-symmetric-encryption-methods
Links:
Website: localfirst.fm
X/Twitter: x.com/localfirstfm
Thank you to www.convex.dev/ and electric-sql.com/ for supporting the podcast
Переглядів: 380
Відео
Special episode: Apps vs Files with Gordon Brander, Peter van Hardenberg & Jess Martin.
Переглядів 62321 день тому
This is a special episode which was recorded as a Twitter space conversation between Gordon Brander, Peter Van Hardenberg, and Jess Martin. This conversation explores the ideas and trade offs of apps versus files. 00:00 Introduction 02:35 Files vs. Apps 06:51 Interoperability 34:13 Data Ownership 42:44 Decentralized Protocols Mentioned in podcast Gordon Brander: gordonbrander.com Peter van Hard...
#18 - James Arthur: ElectricSQL, read-path syncing, PGLite
Переглядів 1 тис.Місяць тому
The guest of this episode is James Arthur, founder and CEO of Electric SQL, a Postgres-centric sync engine for local-first apps. This conversation will dive deep into how Electric works and explore its design decisions such as read-path syncing and using HTTP as the network layer to improve scalability. Towards the end we are also covering PGLite, a new Postgres in WASM project by Electric. 00:...
#17 - Kyle Simpson: Local-first identity
Переглядів 1,6 тис.2 місяці тому
The guest of this episode is Kyle Simpson, a prolific JavaScript engineer and author of the book You Don’t Know JS. Over the past years, Kyle has been researching user identity and encryption in a local-first context which we explore in depth in this episode. This conversation will dive into the story that led Kyle to local-first including what he calls Web 2.5 and Zero Servers. Editor's Note: ...
#16 - Anselm Eickhoff: Jazz
Переглядів 6772 місяці тому
The guest of this episode is Anselm Eickhoff, creator of Jazz and founder of Garden Computing. This conversation will dive deep into Jazz to learn how it works and which use cases it’s a good fit for by exploring various apps already built on top of Jazz. 00:00 Intro 04:20 Garden Computing 08:05 Jazz 12:39 Jazz early adopters 22:37 Edge use cases 33:41 How Jazz works 51:06 Marketing approach 58...
#15 - Tuomas Artman: Linear, sync engines, rethought startup MVP
Переглядів 2,4 тис.3 місяці тому
The guest of this episode is Tuomas Artman, co-founder and CTO of Linear. Prior to Linear, Tuomas had already built sync engines for over a decade at companies like Groupon and Uber. This conversation will explore how local-first and software quality was crucial for Linear’s success and how the concept of a startup MVP should be rethought. 00:00 Intro 03:39 Sync Engines 11:44 Linear origin stor...
#14 - Matthew Weidner: Architectures for Central Server Collaboration
Переглядів 5754 місяці тому
The guest of this episode is Matthew Weidner, a computer science PhD student at Carnegie Mellon University focussing on distributed systems and local-first software. Matthew has recently published an extensive blog post about architectures for central server collaboration which is explored in depth in this conversation comparing different approaches such as CRDTs and event sourcing. 00:00 Intro...
#13 - Maggie Appleton: Barefoot Developers, AI, end-user programming
Переглядів 1,3 тис.5 місяців тому
The guest of this episode is Maggie Appleton, a designer, anthropologist and developer who has recently explored the world of local-first by giving the closing keynote at the last local-first conf. This conversation will dive into the topics of her talk including home cooked software, the idea behind barefoot developers and how AI complements local-first software development. 00:00 Intro 03:08 ...
#12 - James Pearce: TinyBase
Переглядів 1,1 тис.5 місяців тому
The guest of this episode is James Pearce, the author of Tinybase, a reactive data store library for local-first apps. This conversation will explore how Tinybase works including its custom query system, the various persistence and syncing integrations as well as James’ plans for the future. 00:00 Intro 01:43 Facebook/Meta 05:22 The open source culture at Facebook 10:18 How James got into local...
#11 - Adam Wiggins: Local-first Conf 2024
Переглядів 6596 місяців тому
The guest of this episode is Adam Wiggins, who is the founder of Heroku and one of the co-authors of the local-first essay by Ink & Switch. As Adam is also a co-organizer of the first local-first conference, this conversation will reflect on the event, share our learnings and discuss a couple of key topics such as a new definition of local-first software. 00:00 Intro 03:06 Local-First Conf gene...
#10 - Matt Wonlaw: cr-sqlite, syncing strategies and incremental view maintenance
Переглядів 1,4 тис.7 місяців тому
The guest of this episode is Matt Wonlaw, a prolific local-first tool builder who’s behind projects such as Vlcn, cr-sqlite and Materialite. Most recently Matt also joined Rocicorp to work on their new product. This conversation will go deep on his projects covering CRDTs, SQLite and incremental view maintenance. 00:00 Intro 02:26 Lockheed Martin 05:25 Meta 08:24 CR-SQLite 11:14 Strut.io 16:29 ...
#9 - Dax Raad: Local-First SaaS
Переглядів 7 тис.8 місяців тому
The guest of this episode is Dax Raad, who is using local-first in multiple projects including the serverless deployment tool SST.dev, a healthcare app and an upcoming personal finance app. This conversation will explore how local-first simplifies app development, the UX and data patterns he used on and how self-hosting could empower local-first apps. 00:00 Intro 02:12 Local-first motivation an...
#8 - Pirijan Ketheswaran: Kinopio, Canvas-based tools, being a solo developer
Переглядів 6008 місяців тому
The guest of this episode is Pirijan Ketheswaran, the creator of the Kinopio, a playful, canvas-based tool for thought. He is also the co-creator of the online IDE Glitch. This conversation will go trough his journey as a creative including his time at Fog Creek and later building Kinopio as a solo developer. 0:00 Intro 01:59 Fog Creek / Glitch 11:45 Kinopio 15:53 5 principles of Kinopio 21:12 ...
#7 - James Long: Actual Budget, Hybrid Logical Clocks & Absurd-SQL
Переглядів 1,3 тис.9 місяців тому
The guest of this episode is James Long, the creator of local-first app called Actual Budget and the absurd-sql project which helped to pave the way to bring SQLite back to the browser. This conversation will explore his journey of building Actual Budget including implementing a syncing solution from scratch and expanding from an Electron app to mobile and the web while re-using most of the cod...
#6 - Rasmus Andersson: Playbit, Software Quality, Data Models Tradeoffs
Переглядів 2,8 тис.9 місяців тому
The guest of this episode is Rasmus Anderson, who helped to build many monumental products such as Spotify, Dropbox and Figma and is now working on Playbit, a local-first operating system built from scratch. This extended conversation will go deep on software quality, the tradeoffs of different data models and the importance of the web for modern applications. 00:00 Intro 04:07 Spotify 06:26 Fa...
#5 - Kyle Mathews: Benefits of using a sync engine, personal local-first apps, ElectricSQL
Переглядів 2,4 тис.10 місяців тому
#5 - Kyle Mathews: Benefits of using a sync engine, personal local-first apps, ElectricSQL
#4 - Martin Kleppmann: CRDTs, Automerge, generic syncing servers & Bluesky
Переглядів 1,9 тис.10 місяців тому
#4 - Martin Kleppmann: CRDTs, Automerge, generic syncing servers & Bluesky
#3 - Geoffrey Litt: Malleable software, local state management & Riffle
Переглядів 1 тис.11 місяців тому
#3 - Geoffrey Litt: Malleable software, local state management & Riffle
#2 - Aaron Boodman: From Google Gears to Replicache & Reflect.net
Переглядів 1,7 тис.11 місяців тому
#2 - Aaron Boodman: From Google Gears to Replicache & Reflect.net
The paper Brooke mentions about set reconciliation: arxiv.org/pdf/2402.02668
Amazing development for local environments! Reading the Beehive website, I understand this: - RBAC: Beehive does not rely on predefined roles or hierarchical policies but uses cryptographic delegation and group CRDTs to dynamically manage access. - ABAC: While it shares ABAC’s ability to fine-tune access based on contextual attributes, Beehive's focus is on cryptographic proofs & causal relationships rather than centralized attribute evaluations. It'd be great that they show examples of ABAC-way.
Good idea! You can express ABAC with caps as well, but fewer people are familiar with ABAC so it's a lower priority to demonstrate, but we'll open an issue!
super nice
nice
yall dont realize what youre asking for, we dont want a standard nor enforcement because what follows is totalitarianism. proprietary is good, free market should continuously change everything; the commodity should be skilled devs that can adapt to multiple paradigms. you speak of interop as if it is the goal and it isnt, gated communities bring profits and jobs.
absolute gold
MS office suite : did it does it. What’s missing? Experts. I’m one in one of the apps in the suite. Also missing : insertable controls in each app, that are full editors for the files of the other app. Why aren’t we getting that? Other publishers could also make insertable controls that fully edit their files or other apps files. IT people are the wrong group to vision this maybe? Full stack centric people as well? Definitely language devs. Users don’t have the words as much as the needs. The insert should be a url including drive destined url’s and SQL url’s and even web located url’s. like an href with alternate url if there’s a connectivity problem, cascading down a list.
What if i don't want stuff send out from my device at any given time until i tell it to?
Mc.fly has been shouting this for years already, Run your own infrastructure
Hybrid logical clocks are awesome. They are the key for practical CRDTs in user-facing apps.
p2p does not solve "most cloud things".
what is linear
Oohh, I've been designing my software startup around the concept of local first without knowing a movement like this exists, I'm so glad there's such a goal for many people, the interview is incredible so far, thanks for this!!!
Great interview. Local first identity is a MUST. The current server-centric default of passkeys is troubling, but if we can keep the implementations LOCAL first/only and out of the grubby hands of big tech then it could be great. I wish Kyle the best with his efforts here.
It makes sense all that this gentleman says. Web3 is full of delusional folks who are primarily not conscious about the real workforce behind that ecosystem, and much of it is pretty dark. It's the reality, nothing else. However, some of the technology in there could indeed be significant for the progress of the platform, if used wisely. Of course, there are things like "open-source" projects (more than we'd surely like to admit) that just as web3, they are a trap from the powerful capitals. It's going to become a real art trying to implement local-first solutions if not considering at all the mechanisms of control that are being already imposed over our freedom.
Great, talk, can you pls add the link to SilentJS mentioned by Kyle?
When Kyle speaks about SilentJS, is actually referring to QuiteJS. Link added in description.
Great episode!
Maybe I missed it, but would've liked to hear his long term big picture vision for the computing industry, and his company's place in that. He sorta touched on it with the tall abstractions thing, but not exactly.
Super interesting. Just finished listening and meanwhile trying Jazz for the first time. I can believe it work first try. This is amazing 🎉 Really an awesome piece of tech.
White Susan Jackson John Brown Charles
Local First for the win! I really enjoyed the conversation. Thank you 👍
Brilliantly done, you two! Many thanks!
You achieved that goal. I want to build my app as good as linear(and craft.do) and let my team use it such that they understand how good looks like.
nice content. tuomos camera auto-moving stuff makes it extremely disorientating to watch
Thanks for your comment. We'll make sure to avoid moving/panning cameras in future episodes.
local first comment!
Pagac Fields
good stuff
Great chat🎉 Maggie is one of my favourite people on the internet, she’s just enough outside of my tech bubble to make me know new things, she got me into digital gardening and many other things I wouldn’t have know otherwise
29:09 absolutely agree but.... here in the UK a lot of big organisations, banks etc. have policies that prevent storing data on local storage in case the machine gets stolen etc.
22:39 I tend to work on apps where automatically overwriting someone else's changes is a bit of a 'no no" So whenever i write i set an "updated" date time, before i write i check that the "updated" value I read hasn't changed on the server. I do that by selecting all fields of interest where id = id and updated<>updated, if the dates are out of sync it doesn't matter so much... either way I only get a result if there's a conflict etc. and I just raise a dialog stating "another user...." and listing who made the last update after the read, what the differences are and then let the user choose which values win individually.
13:02 i think the reasoning for this centralization should be considered in the context of economic boom/bust cycles. When times get lean, capital in general tends to centralize and consolidate, with the growth of big tech following the 2008 crash as a good example. In the end it's simply easier to extract revenue from the captive user base of a centralized remotely hosted app, and in our economic system that's the most important thing
I'm building a local first app, but I'm not sure how to monetize if the core code is sent to the client. Is SAAS model still valid? How are others doing this? Please address this in a future conversation if possible. Thank you!
Using javascript/typescript web apps does present this problem; you should look closely at the state of WASM today, there are tons of things happening (adjacent to localfirst) that will result in workloads that can use the browser as a runtime rather than a backend. In this case, it’s similarly “protected” as when running on a desktop, for example, given it’s compiled to a wasm binary. The same “reverse engineering, then obfuscating” cat-chasing-it’s-tail routine may still occur, but that’s the risk all non-SaaS workloads take.
For example, as of last week, you can run a postgresql database in wasm - anywhere! You can write some rust code, compile it to wasm, and distribute it with its data layer - replicating between the user instance and like an edge data layer.
You can monetize sync, backup and collaborative features.
Very interesting conversation! She is very enthusiastic and articulate and a joy to listen to. Recently entered the local-first rabbit-hole by experimenting with automerge. Quite nice, but it feels a bit too magical. Stuff gets synced but you can't take a look at your data, since it's just binary. Ideally I'd like to have a postgres synced.
Thankful for your podcast, Johannes. Always a pleasure to listen to
Very interesting, so nicely done both of you! Thanks
First. 😂 Interesting take, that CRDT are the easy part. Will focus on what to sync much more now.
one of my new favorite podcasts. i find the idea of "local-first" software fascinating
How is lifestore and riffle different from electric sql? I am looking to adopt electric sql and curious about this space.
Nice I can make a shorts in your podcast To increase your channel reach
Great episode! I'm currently also experimenting with local-first and electricSQL sounds like a good fit for me. Automerge felt a bit too "magical" due to its binary protocol.
The tinybase project seems like an interesting idea regarding a performant syncing DB close to the user interface. In fact I believe it's an in memory DB.
we in Hawaii here? Take me with you........
Excellent sharing!
Your questions are absolutely on point!! Amazing podcast🎉
Great podcast. Have followed Dax for a while, but first time seeing the host. The host really knows his stuff and he held the interview very well. Exciting topic too!
Thank you very much!
I'm glad I live in the same timeline as guys like you both, y'all rock, thank you so much for the knowledge shared! ❤
Man I really found this fascinating. I'm someone who cares about the little things, like as soon as I tried Linear for the first time, I was in love, but also slightly confused as to why I was so passionate about a Task tracking app 😅😂Really helps to have these ideas that lived unrealized in the back of my head, put into words. Wonderful job by both of you! This is especially pertinent because I'm building a project tracking web app for work, that sort of has a lot of overlap in terms of structure of the "patient tracking app" that Dax was talking about. Really gonna have to put some time into what optimizations we can make to start transitioning to some local first. I feel like a free "easy win" is optimistic updates since those are way easier to implement, vs an entire caching solution.
Love this conversation lots of interesting takes.
Dax wife and the terminals. Was my first thought when the video was recommended
Raad & Schickling sounds like a surfboard shop. Totally raaaad dude did you see my schickling on the half pipe?