{"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/677be49db2b69b369b537ddf?\" frameBorder=\"0\" width=\"700\" height=\"250\"></iframe>","title":"Violent Sleep of Concurrency (with JP Camara)","description":"<p>In this Dead Code episode, host Jared Norman interviews JP Camara, Principal Software Engineer at Wealthbox, about Ruby concurrency. JP explains that Ruby applications are inherently multithreaded, even when developers assume otherwise, highlighting how background threads from libraries like Sidekiq or monitoring tools can introduce concurrency issues. He discusses the Ruby community's progress in thread safety, driven by tools like Puma and Sidekiq, and contrasts Ruby's \"colorless\" concurrency model with JavaScript's explicit async/await syntax, emphasizing Ruby's reduced cognitive overhead. JP also shares his experience contributing to Ruby's M:N thread scheduler for macOS, advocating for developers to rely on vetted concurrency tools like concurrent-ruby and async instead of manually managing threads. He concludes by stressing the importance of avoiding global state, breaking tasks into smaller pieces, and approaching concurrency with a thoughtful mindset.</p><p><br></p><p><strong>Links:</strong></p><p><br></p><p><a href=\"https://www.wealthbox.com/\" rel=\"noopener noreferrer\" target=\"_blank\">Wealthbox</a></p><p><a href=\"https://www.jpcamara.com/\" rel=\"noopener noreferrer\" target=\"_blank\">JP Camara's Blog</a></p><p><a href=\"https://rubyconf.org/\" rel=\"noopener noreferrer\" target=\"_blank\">RubyConf</a></p><p><a href=\"https://sidekiq.org/\" rel=\"noopener noreferrer\" target=\"_blank\">Sidekiq</a></p><p><a href=\"https://puma.io/\" rel=\"noopener noreferrer\" target=\"_blank\">Puma Web Server</a></p><p><a href=\"https://www.honeybadger.io/\" rel=\"noopener noreferrer\" target=\"_blank\">Honeybadger</a></p><p><a href=\"https://newrelic.com/\" rel=\"noopener noreferrer\" target=\"_blank\">New Relic</a></p><p><a href=\"https://www.jpcamara.com/\" rel=\"noopener noreferrer\" target=\"_blank\">JP's Ruby Concurrency Series</a></p><p><a href=\"https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/\" rel=\"noopener noreferrer\" target=\"_blank\">What Color is Your Function?</a></p><p><a href=\"https://github.com/socketry/async\" rel=\"noopener noreferrer\" target=\"_blank\">Async Gem</a></p><p><a href=\"https://github.com/ruby-concurrency/concurrent-ruby\" rel=\"noopener noreferrer\" target=\"_blank\">Concurrent Ruby</a></p><p><a href=\"https://en.wikipedia.org/wiki/The_Violent_Sleep_of_Reason\" rel=\"noopener noreferrer\" target=\"_blank\">Meshuggah – <em>Violent Sleep of Reason</em></a></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><br></p><p><a href=\"https://docs.google.com/document/d/1J0aaMyPj9bP2EoDGNwNEqlIM59y_zyKxZAbBnqSRFgo/edit?usp=sharing\" rel=\"noopener noreferrer\" target=\"_blank\">Episode Transcript</a></p><p><br></p><p><br></p>","author_name":"Jared Norman"}