{"version":"1.0","type":"rich","provider_name":"Acast","provider_url":"https://acast.com","height":250,"width":700,"html":"<iframe src=\"https://embed.acast.com/$/65de32896569fa0017d17653/67cf42da57424413a46868d4?\" frameBorder=\"0\" width=\"700\" height=\"250\"></iframe>","title":"All Models Are Wrong (with James Gayfer)","description":"<p>In this episode of Dead Code, Jared interviews James Gayfer about data modeling and the challenges of structuring databases effectively. James, who prefers raw SQL over ORMs, explains how many database models merely mirror table structures, leading to inefficient APIs and excessive data fetching. He discusses the concept of complete versus incomplete data models, emphasizing that completeness depends on an application’s needs at a given time. They explore trade-offs between overly simplistic models that require frequent queries and overly complex ones that attempt to replicate real-world relationships in unnecessary detail. James advocates for designing domain models thoughtfully, using patterns like repositories to maintain consistency while keeping data retrieval manageable. Ultimately, he encourages developers to embrace iteration, rethink their models as needed, and accept that all models are wrong, but some are useful.</p><p><br></p><p><strong>Links:</strong></p><p><br></p><p><a href=\"https://jgayfer.com\" rel=\"noopener noreferrer\" target=\"_blank\">James Gayfer’s Blog</a></p><p><a href=\"https://fosstodon.org/@jgayfer\" rel=\"noopener noreferrer\" target=\"_blank\">James Gayfer’s Mastodon profile</a></p><p><a href=\"https://github.com/launchbadge/sqlx\" rel=\"noopener noreferrer\" target=\"_blank\">SQLx library for Rust</a></p><p><a href=\"https://martinfowler.com/eaaCatalog/repository.html\" rel=\"noopener noreferrer\" target=\"_blank\">Repository Pattern</a></p><p><a href=\"https://hanamirb.org\" rel=\"noopener noreferrer\" target=\"_blank\">Hanami Framework</a></p><p><a href=\"https://www.phoenixframework.org/\" rel=\"noopener noreferrer\" target=\"_blank\">Phoenix Framework</a></p><p><a href=\"https://hexdocs.pm/ecto/Ecto.html\" rel=\"noopener noreferrer\" target=\"_blank\">Ecto</a></p><p><a href=\"https://hotwired.dev\" rel=\"noopener noreferrer\" target=\"_blank\">Hotwire</a></p><p><a href=\"https://en.wikipedia.org/wiki/All_models_are_wrong\" rel=\"noopener noreferrer\" target=\"_blank\">All models are wrong, but some are useful</a></p><p><br></p><p><strong>Dead Code Podcast Links:</strong></p><p><br></p><p><a href=\"https://hachyderm.io/@deadcode\" rel=\"noopener noreferrer\" target=\"_blank\">Mastodon</a></p><p><a href=\"https://twitter.com/DeadCodePod\" rel=\"noopener noreferrer\" target=\"_blank\">X</a></p><p><br></p><p><strong>Jared’s Links:</strong></p><p><br></p><p><a href=\"https://supergood.social/@jared\" rel=\"noopener noreferrer\" target=\"_blank\">Mastodon</a></p><p><a href=\"https://twitter.com/jardonamron\" rel=\"noopener noreferrer\" target=\"_blank\">X</a></p><p><a href=\"https://www.twitch.tv/jardonamron\" rel=\"noopener noreferrer\" target=\"_blank\">twitch.tv/jardonamron</a></p><p><a href=\"https://jardo.dev\" rel=\"noopener noreferrer\" target=\"_blank\">Jared’s Newsletter &amp; Website</a></p><p><br></p><p><a href=\"https://docs.google.com/document/d/16UKCzKuVcF4qwnkp6m3JtS97LGw3c9-NxdzUlo8qYrQ/edit?tab=t.0\" rel=\"noopener noreferrer\" target=\"_blank\">Episode Transcript</a></p>","author_name":"Jared Norman"}