{"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/69e27649d2febdbec9b71ae2?\" frameBorder=\"0\" width=\"700\" height=\"250\"></iframe>","title":"Seeds of Devastation (with Kasper Timm Hansen)","description":"<p>In this episode of Dead Code, Kasper Timm Hansen shares how his post–Rails Core work focuses on small, high-impact Ruby gems built around clear “concepts” rather than loose abstractions, helping developers model domains more effectively and avoid bloated ActiveRecord models. He discusses tools like Associated Objects and ActiveJob::Performs, which simplify structuring data and background jobs while reducing boilerplate, and Oaken, a testing approach that blends fixtures and factories into fast, scenario-driven data scripts. Across all his work, Kasper emphasizes keeping code minimal, readable, and easy to maintain, using constraints like line count to guide design. He also touches on his current project, Peak and gem.coop, where he’s exploring improvements to the Ruby ecosystem such as namespaced gems, dependency cooldowns for security, and better ways to manage and trust dependencies, all driven by an experimental mindset aimed at making development more intuitive and efficient.</p><p><br></p><p><strong>Links:</strong></p><p><br></p><p><a href=\"https://kaspth.com/\" rel=\"noopener noreferrer\" target=\"_blank\">Kasper Timm Hansen</a></p><p><a href=\"https://rubyonrails.org/\" rel=\"noopener noreferrer\" target=\"_blank\">Ruby on Rails</a></p><p><a href=\"https://github.com/kaspth/associated_object\" rel=\"noopener noreferrer\" target=\"_blank\">Associated Objects gem</a></p><p><a href=\"https://github.com/kaspth/activejob-performs\" rel=\"noopener noreferrer\" target=\"_blank\">ActiveJob::Performs gem</a></p><p><a href=\"https://github.com/kaspth/oaken\" rel=\"noopener noreferrer\" target=\"_blank\">Oaken</a></p><p><a href=\"https://guides.rubyonrails.org/active_record_basics.html\" rel=\"noopener noreferrer\" target=\"_blank\">Active Record</a></p><p><a href=\"https://guides.rubyonrails.org/active_job_basics.html\" rel=\"noopener noreferrer\" target=\"_blank\">Active Job</a></p><p><a href=\"https://github.com/thoughtbot/factory_bot\" rel=\"noopener noreferrer\" target=\"_blank\">Factory Bot</a></p><p><a href=\"https://guides.rubyonrails.org/testing.html#the-low-down-on-fixtures\" rel=\"noopener noreferrer\" target=\"_blank\">Rails fixtures</a></p><p><a href=\"https://github.com/collectiveidea/delayed_job\" rel=\"noopener noreferrer\" target=\"_blank\">Delayed Job</a></p><p><a href=\"https://ruby-doc.org/core-3.2.2/Object.html#class-Object-label-Singleton+Classes\" rel=\"noopener noreferrer\" target=\"_blank\">Singleton classes in Ruby</a></p><p><a href=\"https://gem.coop/\" rel=\"noopener noreferrer\" target=\"_blank\">gem.coop</a></p><p><a href=\"https://github.com/gem-coop/peak\" rel=\"noopener noreferrer\" target=\"_blank\">Peak (gem.coop project)</a></p><p><a href=\"https://rubygems.org/\" rel=\"noopener noreferrer\" target=\"_blank\">RubyGems</a></p><p><a href=\"https://bundler.io/\" rel=\"noopener noreferrer\" target=\"_blank\">Bundler compact index</a></p><p><a href=\"https://owasp.org/www-project-top-ten/2017/A9_2017-Using_Components_with_Known_Vulnerabilities.html\" rel=\"noopener noreferrer\" target=\"_blank\">Supply chain security (overview)</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/1HPvVwBdMD2mpmZKweOn9njt3hYo7WSVIcxzazZne5Nc/edit?tab=t.0\" rel=\"noopener noreferrer\" target=\"_blank\">Episode Transcript</a></p>","author_name":"Jared Norman"}