{"podcast":{"title":"Elixir Wizards","slug":"elixir-wizards","podcast_index_feed_id":674321,"rss_url":"https://feeds.fireside.fm/smartlogic/rss","website_url":"https://smartlogic.fireside.fm","image_url":"https://media24.fireside.fm/file/fireside-images-2024/podcasts/images/0/03a50f66-dc5e-4da4-ab6e-31895b6d4c9e/cover.jpg?v=3","author":"SmartLogic LLC","episode_count":201,"summary":"Elixir Wizards is an interview-style podcast from SmartLogic featuring conversations with developers, engineers, and industry leaders about the Elixir programming language and the broader software development landscape. Each episode explores how modern systems are built, from distributed architectures and infrastructure to developer workflows, security, and emerging technologies like AI. While rooted in the Elixir ecosystem, the show often branches out to compare approaches across languages, platforms, and disciplines. Whether you’re working in Elixir or just interested in how software is evolving, Elixir Wizards offers practical insights and thoughtful perspectives from the people building today’s systems.","last_synced_at":null,"page_url":"https://stenobird.com/podcast/elixir-wizards"},"episode":{"title":"Creating a Local-First Offline-Enabled LiveView PWA with Tony Dang","slug":"creating-a-local-first-offline-enabled-liveview-pwa-with-tony-dang","published_at":"2024-10-31T10:00:00+00:00","page_url":"https://stenobird.com/podcast/elixir-wizards/creating-a-local-first-offline-enabled-liveview-pwa-with-tony-dang","show_page_url":"https://stenobird.com/podcast/elixir-wizards","url":"https://smartlogic.fireside.fm/s13-e03-local-first-liveview-svelte-pwa","audio_url":"https://aphid.fireside.fm/d/1437767933/03a50f66-dc5e-4da4-ab6e-31895b6d4c9e/d9fc7e4d-0d1a-44d1-8183-0ee2048030a6.mp3","summary":"Tony Dang demonstrates how to build a local-first, offline-ready PWA using Phoenix LiveView, Svelte, and CRDTs. The discussion explores the technical challenges of synchronizing state and managing conflicts in distributed web applications.","meta_description":"Learn how to implement local-first architecture in Phoenix LiveView using CRDTs, Yjs, and Svelte for seamless offline-to-online transitions.","key_points":["Main idea: Local-first architecture uses CRDTs (Conflict-free Replicated Data Types) to ensure seamless data merging when devices reconnect to the network","Practical takeaway: Using battle-tested libraries like Yjs is preferable to implementing custom 'last-write-wins' algorithms to handle complex edge cases","Failure mode: Relying on system clocks for synchronization is unreliable due to clock drift; hybrid logical clocks provide a more consistent ordering of events","Technical insight: Integrating Svelte with Phoenix LiveView via Inertia.js allows for high-performance, client-side reactivity while maintaining a powerful Elixir backend","Tooling recommendation: Essential Elixir packages for modern apps include Oban for background jobs, Joken for JWT handling, and Hammer for rate limiting"],"chapters":[{"start_ms":60000,"title":"Guest Introduction","summary":"Tony Dang shares his transition from mechanical engineering to Elixir development and his early experiences with the community."},{"start_ms":280000,"title":"The Motivation for Offline Support","summary":"The practical need for offline functionality is illustrated through the challenge of maintaining app usability in low-connectivity environments like elevators."},{"start_ms":490000,"title":"Pushing LiveView Boundaries","summary":"A discussion on the technical feat of implementing complex offline capabilities in a technology often viewed as server-centric."},{"start_ms":940000,"title":"Local Databases and State Conflicts","summary":"Exploring the trade-offs of writing to local databases, specifically the increased complexity of managing conflicting states."},{"start_ms":1380000,"title":"CRDTs and Synchronization Algorithms","summary":"An analysis of different synchronization strategies, including the move from custom algorithms to the Yjs library."},{"start_ms":2465000,"title":"The Elixir Ecosystem and Tooling","summary":"Tony shares his preferred stack, including Inertia.js, Oban, Joken, and Hammer, for building robust applications."}],"topics":["Phoenix LiveView","CRDTs","Local-first software","Svelte","Elixir","Progressive Web Apps","Distributed Systems","Yjs"],"duration_seconds":2898,"processing_state":"processed","actions":[{"name":"request_transcript","method":"POST","url":"https://stenobird.com/v1/public/podcasts/elixir-wizards/episodes/creating-a-local-first-offline-enabled-liveview-pwa-with-tony-dang/transcription-requests","description":"Idempotently request low-priority transcript generation for this episode."},{"name":"read_markdown","method":"GET","url":"https://stenobird.com/podcast/elixir-wizards/creating-a-local-first-offline-enabled-liveview-pwa-with-tony-dang.md","description":"Read the agent-friendly Markdown representation of this episode resource."}]}}