Local-first, y/n? (Friends)
Our friends Johannes Schickling & James Long join us to discuss the movement of local-first, its pros and cons, the tradeoffs, and the path to the warming waters of mostly local apps.
Join the discussion
Changelog++ members save 11 minutes on this episode because they made the ads disappear. Join today!
Sponsors:
Fly.io – The home of Changelog.com — Deploy your apps close to your users — global Anycast load-balancing, zero-configuration private networking, hardware isolation, and instant WireGuard VPN connections. Push-button deployments that scale to thousands of instances. Check out the speedrun to get started in minutes.
Timescale – Purpose-built performance for AI Build RAG, search, and AI agents on the cloud and with PostgreSQL and purpose-built extensions for AI: pgvector, pgvectorscale, and pgai.
Eight Sleep – Up to $600 off Pod 4 Ultra — Go to eightsleep.com/changelog and use the code CHANGELOG. You can try it for free for 30 days - but we’re confident you will not want to return it (we love ours). Once you experience AI-optimized sleep, you’ll wonder how you ever slept without it. Currently shipping to: United States, Canada, United Kingdom, Europe, and Australia.
WorkOS – AuthKit offers 1,000,000 monthly active users (MAU) free — The world’s best login box, powered by WorkOS + Radix. Learn more and get started at WorkOS.com and AuthKit.com
Featuring:
Johannes Schickling – GitHub, X
James Long – Website, GitHub, X
Jerod Santo – Website, GitHub, LinkedIn, Mastodon, X
Adam Stacoviak – Website, GitHub, LinkedIn, Mastodon, X
Show Notes:
James’ local-first post
Bear - Markdown Notes
livestorejs · GitHub
ElectricSQL | Postgres sync engine
Overtone
Zero Sync
Automerge CRDT
Jazz - Build local-first apps
localfirst.fm
Ink & Switch define “Local-first software”
Something missing or broken? PRs welcome!
839: Prisma ORM: Local First, Typed SQL Queries and Serverless with Søren Bramer Schmidt
Scott and Wes talk with Søren Bramer Schmidt, Founder and CEO of Prisma, about database best practices, including the latest developments in serverless, local-first, and typed SQL solutions.
Show Notes 00:00 Welcome to Syntax!
02:55 Søren’s thoughts on GraphQL
03:53 Brought to you by Sentry.io
06:57 Common database mistakes
08:52 Prisma’s stability and user experience
10:42 Typed SQL and advanced querying Announcing TypedSQL: Make your raw SQL queries type-safe with Prisma ORM
Prisma Optimize
20:47 Serverless challenges and solutions Prisma Accelerate
27:11 Cloudflare’s potential to dethrone AWS
29:13 Prisma and local-first development Prisma & Expo: A Better Path to Local-First Apps | App.js Conf 2024
35:30 Making local-first development mainstream
40:10 Challenges with async
42:43 Søren’s thoughts on Drizzle
43:41 Søren’s favorite database
47:21 The read your writes problem
48:58 Prisma hosted Postgres
51:44 Sick Picks & Shameless Plugs
Sick Picks Søren: Cursor
Shameless Plugs Søren: 1: Prisma Optimize
2: Prisma Postgres (coming soon)
Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads
Wes: X Instagram Tiktok LinkedIn Threads
Scott: X Instagram Tiktok LinkedIn Threads
Randy: X Instagram YouTube Threads
767: Local First and TypeScript’s Missing Library with Johannes Schickling
In this episode, Scott and Wes dive into the world of local-first apps with Johannes Schickling, the mastermind behind Prisma. From databases, WASM for non-JS, to authentication challenges, they explore the ins and outs of crafting apps that prioritize local functionality.
Show Notes 00:00 Welcome to Syntax!
01:10 Brought to you by Sentry.io.
01:28 What is Overtone?
03:45 Can you explain the experience you’re trying to achieve?
06:43 What makes the best music app? Is it local first?
08:03 Is it best to create a local first app from the ground up?
10:31 What are the considerations when making a local first app?
13:04 What database are you using?
Riffle.
16:12 How do you handle authentication?
19:15 Pick the tech based on the problem.
20:40 WASM for Non-JS or heavy lifting tasks.
24:39 How did you get SQLite running in the browser?
27:58 What about WA-SQLite, how does it compare to Riffle?
TLDraw Make-real.
29:24 The backstory of Effect for TypeScript.
34:04 What actually is Effect?
39:32 Consolidating tools.
42:30 What’s a cool aspect of Effect that is often overlooked?
45:47 Building a web server with this.
EffectTS RPC.
48:16 Will this ever get “Bluebirded”?
50:29 What about promises?
Zio World
52:19 Sick Picks + Shameless Plugs.
Sick Picks Johannes: Open Telemetry, Sentry Open Telemetry.
Shameless Plugs Johannes: localfirst.fm.
Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads
Wes: X Instagram Tiktok LinkedIn Threads
Scott:X Instagram Tiktok LinkedIn Threads
Randy: X Instagram YouTube Threads
Use Effect (not useEffect)
Prisma founder Johannes Schickling has been using the Effect library for the last couple years. Today he joins Jerod & Nick to tell us all about this very interesting tool for building robust apps in TypeScript.
Join the discussion
Changelog++ members save 5 minutes on this episode because they made the ads disappear. Join today!
Sponsors:
Convex – Convex is a better type of backend — the full-stack TypeScript development platform that lets you replace your database, server functions, and glue code. Get started at convex.dev
Caisy – Caisy is the headless CMS that gives developers endless possibilities. Learn more at caisy.io
Fastly – Our bandwidth partner. Fastly powers fast, secure, and scalable digital experiences. Move beyond your content delivery network to their powerful edge cloud platform. Learn more at fastly.com
Fly.io – The home of Changelog.com — Deploy your apps and databases close to your users. In minutes you can run your Ruby, Go, Node, Deno, Python, or Elixir app (and databases!) all over the world. No ops required. Learn more at fly.io/changelog and check out the speedrun in their docs.
Featuring:
Johannes Schickling – GitHub, X
Jerod Santo – GitHub, LinkedIn, Mastodon, X
Nick Nisi – Website, GitHub, Mastodon, X
Show Notes:
Friends: What do we want from a web browser?
Welcome to Effect
Effect Days 2024
Something missing or broken? PRs welcome!
Supper Club × ORMs with Nikolas Burk from Prisma
In this supper club episode of Syntax, Wes and Scott talk with Nikolas Burk from Prisma about the role an ORM plays in a tech stack, how Prisma has changed over the years, ways to query data in Prisma, and how migrations work with Prisma.
Hasura - Sponsor With Hasura, you can get a fully managed, production-ready GraphQL API as a service to help you build modern apps faster. You can get started for free in 30 seconds, or if you want to try out the Standard tier for zero cost, use the code “TryHasura” at this link: hasura.info. We’ve also got an amazing selection of GraphQL tutorials at hasura.io/learn.
Storyblok - Sponsor Storyblok is a headless component-based CMS with a real-time visual editor. It offers the flexibility for developers to craft their perfect tech stack, but it also empowers content creators to make changes independently. The result is that every team has the freedom to quickly and easily create the ideal website with limitless extensibility. Other key features include robust Storyblok SDKs and APIs, powerful internationalization options, and an eCommerce-ready platform.
FireHydrant - Sponsor Incidents are hard. Managing them shouldn’t be. FireHydrant makes it easy for anyone in your organization to respond to incidents efficiently and consistently. Intuitive, guided workflows provide turn-by-turn navigation for incident response, while thoughtful prompts and powerful integrations capture all of your incident data to drive useful retros and actionable analytics.
Did we mention that FireHydrant is free? Get started at Firehydrant.com/syntax.
Show Notes 00:35 Welcome
01:30 Guest intro
@NikolasBurk on Twitter
04:56 How has Prisma evolved?
Prisma
Keystone
GraphQL
10:44 What was Prisma V1?
17:04 Is there any GraphQL specific functions in Prismic?
21:26 Sponsor: Hasura
22:26 What role does an ORM play in a tech stack?
29:54 What is Planetscale?
Planetscale
The T3 Stack
32:22 Where does TRPC fit?
tRPC
33:46 Sponsor: Storyblok
35:28 What is an ORM?
Prisma VS Code plugin
42:00 How do migrations work with Prisma?
45:58 Query your data with Prisma client
49:43 Have you looked into alternative JavaScript environments?
55:16 Sponsor: FireHydrant
57:05 Supper Club questions
58:50 SIIIIICK ××× PIIIICKS ×××
××× SIIIIICK ××× PIIIICKS ××× Lichess
Shameless Plugs Prisma blog
Tweet us your tasty treats Scott’s Instagram
LevelUpTutorials Instagram
Wes’ Instagram
Wes’ Twitter
Wes’ Facebook
Scott’s Twitter
Make sure to include @SyntaxFM in your tweets
Type-Safe ORM With Prisma Client & Real Python at PyCon US 2022
<p>Are you using an Object-Relational Mapper (ORM) for your Python projects? What if it could work with SQL or No-SQL databases and be fully type-safe? This week on the show, Robert Craigie talks about Prisma Client Python.</p>
<p>Prisma Client Python is built on top of Prisma, which was created for TypeScript and Node.js. It uses a schema file to declare your application’s data models and relationships in a human-readable form. The schema file allows you to easily switch the database type. </p>
<p>Prisma Client is different from other Python ORMs. It is fully type-safe and can be used with or without async.</p>
<p>We talk about how Robert started the project and what types of challenges he’s faced. He also shares areas of improvement and how to contribute to the project.</p>
<p>We also have a conversation with several Real Python core team members about PyCon US 2022. We will have a booth at the conference where we hope you’ll come and connect with us. The team also shares what to expect from PyCon and what they’re excited about this year.</p>
<div class="alert alert-primary" role="alert">
<p><strong>Course Spotlight:</strong> <a href="https://realpython.com/courses/python-rest-apis-with-fastapi/">Python REST APIs With FastAPI</a></p>
<p>In this course, you’ll learn the main concepts of FastAPI and how to use it to quickly create web APIs that implement best practices by default. By the end of it, you will be able to start creating production-ready web APIs.</p>
</div>
<p>Topics:</p>
<ul>
<li>00:00:00 – Introduction</li>
<li>00:02:15 – Have you worked on other open-source projects?</li>
<li>00:02:59 – What is Prisma?</li>
<li>00:05:00 – What are advantages of using an ORM?</li>
<li>00:06:52 – What problem is Prisma Client solving?</li>
<li>00:08:43 – What was involved in porting the project over?</li>
<li>00:09:55 – Creating a Prisma schema</li>
<li>00:12:09 – Other challenges along the way</li>
<li>00:14:57 – Dangers of not having type safety</li>
<li>00:16:27 – Sponsor: Linear B</li>
<li>00:17:06 – How long have you been working on the project?</li>
<li>00:18:57 – How could someone contribute to the project?</li>
<li>00:21:03 – In what situations does Prisma Client excel?</li>
<li>00:24:21 – What other projects do you currently work on?</li>
<li>00:24:57 – What are you excited about in the world of Python?</li>
<li>00:28:01 – What do you want to learn next?</li>
<li>00:29:52 – Thanks and Goodbye</li>
<li>00:30:14 – Introduction of RP team</li>
<li>00:31:09 – What are we doing at PyCon 2022?</li>
<li>00:35:55 – How to Get the Most Out of PyCon US</li>
<li>00:37:42 – Tutorials at PyCon US 2022</li>
<li>00:40:24 – Video Course Spotlight</li>
<li>00:41:49 – Talks at PyCon US 2022</li>
<li>00:50:16 – Sprints at PyCon US 2022</li>
<li>00:54:38 – Final thoughts</li>
<li>00:57:30 – Thanks and goodbyes</li>
</ul>
<p>Show Links:</p>
<ul>
<li><a href="https://prisma-client-py.readthedocs.io/en/stable/">Prisma Client Python</a></li>
<li><a href="https://www.prisma.io/docs/concepts/components/prisma-schema">Prisma schema (Reference) | Prisma Docs</a></li>
<li><a href="https://www.typescriptlang.org/">TypeScript: JavaScript With Syntax For Types.</a></li>
<li><a href="https://github.com/Microsoft/pyright">pyright: Static type checker for Python</a></li>
<li><a href="https://github.com/RobertCraigie/pyright-python">pyright-python: Python command line wrapper for pyright, a static type checker</a></li>
<li><a href="https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance">Pylance - Visual Studio Marketplace</a></li>
<li><a href="https://www.mkdocs.org/">MkDocs</a></li>
<li><a href="https://www.rust-lang.org/">Rust Programming Language</a></li>
<li><a href="https://github.com/RobertCraigie/prisma-client-py">prisma-client-py: An auto-generated and fully type-safe database client built for autocomplete</a></li>
<li><a href="https://discord.gg/HpFaJbepBH">Prisma Python Discord server</a></li>
<li><a href="https://us.pycon.org/2022/">PyCon 2022 Welcome to PyCon US 2022</a></li>
<li><a href="https://realpython.com/pycon-guide/">How to Get the Most Out of PyCon US – Real Python</a></li>
<li><a href="https://python.nz/KiwiPyCon">KiwiPyCon - New Zealand Python User Group</a></li>
<li><a href="https://www.euroscipy.org/">EuroSciPy</a></li>
<li><a href="https://pycolorado.org/">PyColorado 2019</a></li>
</ul>
<p>Level up your Python skills with our expert-led courses:</p>
<ul>
<li><a href="https://realpython.com/courses/python-rest-apis-with-fastapi/">Python REST APIs With FastAPI</a></li>
<li><a href="https://realpython.com/courses/building-a-django-user-management-system/">Building a Django User Management System</a></li>
<li><a href="https://realpython.com/courses/python-data-types/">Exploring Basic Data Types in Python</a></li>
</ul> <p><a rel="payment" href="https://realpython.com/join">Support the podcast & join our community of Pythonistas</a></p>
Prisma and the GraphQL data layer (Interview)
Johannes Schickling, co-founder and CEO of Prisma, joined the show to catch us up on all things GraphQL — the tech, the possibilities, the community, how Prisma turns your database into a GraphQL API, their new business direction, Prisma Cloud, open source vs enterprise, and the upcoming GraphQL Europe in Berlin on June 15th.
Join the discussion
Changelog++ members support our work, get closer to the metal, and make the ads disappear. Join today!
Sponsors:
Rollbar – We catch our errors before our users do because of Rollbar. Resolve errors in minutes, and deploy your code with confidence. Learn more at rollbar.com/changelog.
DigitalOcean – DigitalOcean is simplicity at scale. Whether your business is running one virtual machine or ten thousand, DigitalOcean gets out of your way so your team can build, deploy, and scale faster and more efficiently. New accounts get $100 in credit to use in your first 60 days.
GoCD – GoCD is an on-premise open source continuous delivery server created by ThoughtWorks that lets you automate and streamline your build-test-release cycle for reliable, continuous delivery of your product.
Fastly – Our bandwidth partner. Fastly powers fast, secure, and scalable digital experiences. Move beyond your content delivery network to their powerful edge cloud platform. Learn more at fastly.com.
Featuring:
Johannes Schickling – GitHub, X
Adam Stacoviak – Website, GitHub, LinkedIn, Mastodon, X
Jerod Santo – Website, GitHub, LinkedIn, Mastodon, X
Show Notes:
The Changelog #255: Why is GraphQL so cool? with Johannes Schickling
Prisma raises $4.5M to build the GraphQL data layer for all databases
Prisma | Open-Source GraphQL ORM for GraphQL Servers
prismagraphql/prisma: ⚡️ Prisma turns your database into a realtime GraphQL API
Quickstart | Prisma Docs
GraphQL Radio
GraphQL Europe 2018
Something missing or broken? PRs welcome!
Why is GraphQL so cool? (Interview)
Johannes Schickling (Founder of Graphcool) joined the show to talk about GraphQL — an application layer query language from Facebook. We talked about what it is, where it makes sense to use it, its role in serverless architectures, getting docs for free via Schemas and Types, and the community that’s rallying around this new way to think about APIs.
Join the discussion
Changelog++ members support our work, get closer to the metal, and make the ads disappear. Join today!
Sponsors:
Linode – Our cloud server of choice. Get one of the fastest, most efficient SSD cloud servers for only $5/mo. Use the code changelog2017 to get 4 months free!
Hired – Get hired. It’s free — in fact, they pay you to get hired. Our listeners get a double hiring bonus of $600.
GoCD – GoCD is an on-premise open source continuous delivery server created by ThoughtWorks that lets you automate and streamline your build-test-release cycle for reliable, continuous delivery of your product.
Microsoft Azure OpenDev – See what’s possible with open source in the cloud. Watch the recorded videos from this live event to see real-world demonstrations of Azure supporting open technologies. Hear from leaders in the open source community. Learn how you can build containerized microservices and improve your open source DevOps pipeline.
Featuring:
Johannes Schickling – GitHub, X
Adam Stacoviak – Website, GitHub, LinkedIn, Mastodon, X
Jerod Santo – Website, GitHub, LinkedIn, Mastodon, X
Show Notes:
Learn GraphQL How to GraphQL
Learn Apollo
Learn Relay
GraphQL Playground
GraphQL.org
Facebook’s announcement post for GraphQL
Graphcool - Serverless GraphQL Backend - Developer platform for building serverless graphql backends
Graphcool hit #1 on HackerNews when it launched
GraphQL Radio - a podcast covering all things GraphQL
GraphQL-Europe - Europe’s first GraphQL conference
Reinventing Authorization: GraphQL Permission Queries
Serverless GraphQL Backend architecture
Why GraphQL is the future
Facebook’s original draft RFC specification for GraphQL
From The GitHub GraphQL API post on the GitHub Engineering blog:
The REST API is responsible for over 60% of the requests made to our database tier. This is partly because, by its nature, hypermedia navigation requires a client to repeatedly communicate with a server so that it can get all the information it needs. Our responses were bloated and filled with all sorts of *_url hints in the JSON responses to help people continue to navigate through the API to get what they needed. Despite all the information we provided, we heard from integrators that our REST API also wasn’t very flexible. It sometimes required two or three separate calls to assemble a complete view of a resource. It seemed like our responses simultaneously sent too much data and didn’t include data that consumers needed.
Something missing or broken? PRs welcome!