{"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/684af0a5ed4130e2437f7b80?\" frameBorder=\"0\" width=\"700\" height=\"250\"></iframe>","title":"Herbicide (with Marco Roth)","description":"<p>In this episode of Dead Code, Jared talks with Marco Roth about Herb, a new fault-tolerant parser for HTML and ERB designed to improve the developer experience in the Rails ecosystem. Unlike tools like Deface or Nokogiri, Herb doesn’t auto-correct or mask errors—it parses templates exactly as written, enabling better diagnostics, formatting, and linting for server-rendered views, especially in Hotwire, Turbo, and Stimulus contexts. Built in C for portability and speed, Herb can be used across Ruby, JavaScript, and browsers via WebAssembly. Marco created it after running into limitations with existing tooling while building the Stimulus LSP. Future plans include deeper integration with tools like Ruby LSP and possibly enabling LiveView-style reactive rendering in Rails. Developers can try it today via a VS Code extension or the interactive web playground.</p><p><br></p><p><strong>Links:</strong></p><p><br></p><p><a href=\"https://github.com/spree/deface\" rel=\"noopener noreferrer\" target=\"_blank\">Deface</a></p><p><a href=\"https://github.com/spree/spree\" rel=\"noopener noreferrer\" target=\"_blank\">Spree</a></p><p><a href=\"https://github.com/solidusio/solidus\" rel=\"noopener noreferrer\" target=\"_blank\">Solidus</a></p><p><a href=\"https://nokogiri.org/\" rel=\"noopener noreferrer\" target=\"_blank\">Nokogiri</a></p><p><a href=\"https://github.com/rubocop/rubocop\" rel=\"noopener noreferrer\" target=\"_blank\">RuboCop</a></p><p><a href=\"https://github.com/ruby/prism\" rel=\"noopener noreferrer\" target=\"_blank\">Prism</a></p><p><a href=\"https://github.com/marcoroth/herb\" rel=\"noopener noreferrer\" target=\"_blank\">Herb</a></p><p><a href=\"https://herb-docs.netlify.app/playground\" rel=\"noopener noreferrer\" target=\"_blank\">Herb Playground</a></p><p><a href=\"https://marketplace.visualstudio.com/items?itemName=marcoroth.herb-lsp\" rel=\"noopener noreferrer\" target=\"_blank\">Herb VS Code Extension</a></p><p><a href=\"https://hotwired.dev/\" rel=\"noopener noreferrer\" target=\"_blank\">Hotwire</a></p><p><a href=\"https://turbo.hotwired.dev/\" rel=\"noopener noreferrer\" target=\"_blank\">Turbo</a></p><p><a href=\"https://stimulus.hotwired.dev/\" rel=\"noopener noreferrer\" target=\"_blank\">Stimulus</a></p><p><a href=\"https://docs.stimulusreflex.com/\" rel=\"noopener noreferrer\" target=\"_blank\">StimulusReflex</a></p><p><a href=\"https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html\" rel=\"noopener noreferrer\" target=\"_blank\">Phoenix LiveView</a></p><p><a href=\"https://github.com/Shopify/ruby-lsp\" rel=\"noopener noreferrer\" target=\"_blank\">Ruby LSP</a></p><p><a href=\"https://shows.acast.com/dead-code/episodes/pondering-the-prism-with-kevin-newton\" rel=\"noopener noreferrer\" target=\"_blank\">Episode 10 with Kevin Newton on Prism</a></p><p><a href=\"https://shows.acast.com/dead-code/episodes/brutality-of-behaviour-with-carson-gross\" rel=\"noopener noreferrer\" target=\"_blank\">Episode 38 with Carson Gross on HTMX</a>&nbsp;</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/1_mlpRW8K5BRDU5W0BRWMv9mz3QAUdNJkWjuuaYbrSJs/edit?tab=t.0\" rel=\"noopener noreferrer\" target=\"_blank\">Episode Transcript</a></p>","author_name":"Jared Norman"}