Listen "157: Adding Dialyzer Late in the Game"
Episode Synopsis
Dialyzer is something that eventually everyone hears about in the Elixir community. It's a static code analysis tool that has both fans and detractors, and with good reasons on both sides! We talk with Noah Betzen about how he brought Dialyzer to several mature Elixir projects. He wanted the benefits of finding and fixing bugs and to prevent new problems from being added. He shared tools, strategies and other resources for how to get started without stopping everything to fix all the existing problems. If you've ever tried to add Dialyzer to a project and aborted, then this discussion may give you the courage and the tools to try again!
Show Notes online - http://podcast.thinkingelixir.com/157 (http://podcast.thinkingelixir.com/157)
Elixir Community News
- https://elixir-lang.org/blog/2023/06/19/elixir-v1-15-0-released/ (https://elixir-lang.org/blog/2023/06/19/elixir-v1-15-0-released/?utm_source=thinkingelixir&utm_medium=shownotes) – Elixir 1.15 release blog post
- https://github.com/elixir-lang/elixir/releases/tag/v1.15.0 (https://github.com/elixir-lang/elixir/releases/tag/v1.15.0?utm_source=thinkingelixir&utm_medium=shownotes) – full release notes
- https://twitter.com/josevalim/status/1670879654134050828 (https://twitter.com/josevalim/status/1670879654134050828?utm_source=thinkingelixir&utm_medium=shownotes) – José Valim's tweet about reported compilation time improvements
- https://elixirforum.com/t/elixir-v1-15-0-released/56584 (https://elixirforum.com/t/elixir-v1-15-0-released/56584?utm_source=thinkingelixir&utm_medium=shownotes) – ElixirForum.com post about the release with comments, feedback, and workarounds for issues.
- https://github.com/phoenixframework/phoenix/blob/v1.7.4/CHANGELOG.md (https://github.com/phoenixframework/phoenix/blob/v1.7.4/CHANGELOG.md?utm_source=thinkingelixir&utm_medium=shownotes) – Phoenix 1.7.4 (then up to 1.7.6) was released with a small, but handy fix around deploying with active websockets
- https://survey.stackoverflow.co/2023/ (https://survey.stackoverflow.co/2023/?utm_source=thinkingelixir&utm_medium=shownotes) – StackOverflow Developer Survey results
- https://survey.stackoverflow.co/2023/#technology-most-popular-technologies (https://survey.stackoverflow.co/2023/#technology-most-popular-technologies?utm_source=thinkingelixir&utm_medium=shownotes) – Most popular technologies
- https://survey.stackoverflow.co/2023/#section-top-paying-technologies-top-paying-technologies (https://survey.stackoverflow.co/2023/#section-top-paying-technologies-top-paying-technologies?utm_source=thinkingelixir&utm_medium=shownotes) – Top paying technologies
- https://survey.stackoverflow.co/2023/#section-admired-and-desired-web-frameworks-and-technologies (https://survey.stackoverflow.co/2023/#section-admired-and-desired-web-frameworks-and-technologies?utm_source=thinkingelixir&utm_medium=shownotes) – Phoenix is the most admired web framework and technology
- https://twitter.com/bcardarella/status/1669423297518264320 (https://twitter.com/bcardarella/status/1669423297518264320?utm_source=thinkingelixir&utm_medium=shownotes) – LiveView Native got animated charts working in SwiftCharts
- https://twitter.com/moomerman/status/1670021284900614144 (https://twitter.com/moomerman/status/1670021284900614144?utm_source=thinkingelixir&utm_medium=shownotes) – Apache ECharts with LiveView
- https://huggingface.co/blog/livebook-app-deployment (https://huggingface.co/blog/livebook-app-deployment?utm_source=thinkingelixir&utm_medium=shownotes) – José Valim's has a Livebook blog post on the Hugging Face blog.
- https://twitter.com/thibaut_barrere/status/1670789241436028931 (https://twitter.com/thibaut_barrere/status/1670789241436028931?utm_source=thinkingelixir&utm_medium=shownotes) – Using IEx helpers in Livebook cells - import IEx.Helpers
- https://twitter.com/germsvel/status/1669669754305404928 (https://twitter.com/germsvel/status/1669669754305404928?utm_source=thinkingelixir&utm_medium=shownotes) – German Velasco has created a number of short tip videos that now have a home on ElixirStreams.com
- https://twitter.com/elixirphoenix/status/1670856560480747526 (https://twitter.com/elixirphoenix/status/1670856560480747526?utm_source=thinkingelixir&utm_medium=shownotes) – Adding Bandit to a Phoenix 1.7 project fits in a single tweet
- https://erlef.org/events (https://erlef.org/events?utm_source=thinkingelixir&utm_medium=shownotes) – The EEF (Erlang Ecosystem Foundation) has an "events" page.1
Do you have some Elixir news to share? Tell us at @ThinkingElixir (https://twitter.com/ThinkingElixir) or email at [email protected] (mailto:[email protected])
Discussion Resources
- https://fly.io/phoenix-files/adding-dialyzer-without-the-pain/ (https://fly.io/phoenix-files/adding-dialyzer-without-the-pain/?utm_source=thinkingelixir&utm_medium=shownotes) – Blog post with more resources and code
- https://www.erlang.org/doc/man/dialyzer.html (https://www.erlang.org/doc/man/dialyzer.html?utm_source=thinkingelixir&utm_medium=shownotes) – Dialyzer docs
- https://github.com/jeremyjh/dialyxir (https://github.com/jeremyjh/dialyxir?utm_source=thinkingelixir&utm_medium=shownotes) – Dialyxir project
- https://github.com/jeremyjh/dialyxir/pull/493 (https://github.com/jeremyjh/dialyxir/pull/493?utm_source=thinkingelixir&utm_medium=shownotes) – PR to add new format for ignorefilestrict
- https://elixirforum.com/t/blog-post-adding-dialyzer-without-the-pain/56461 (https://elixirforum.com/t/blog-post-adding-dialyzer-without-the-pain/56461?utm_source=thinkingelixir&utm_medium=shownotes) – Feedback to blog post that we discuss
- https://www.youtube.com/watch?v=4PZE40h13wM (https://www.youtube.com/watch?v=4PZE40h13wM?utm_source=thinkingelixir&utm_medium=shownotes) – Slaying the Type Hydra, or How We Went from 12,000 Dialyzer Errors to None | Jesper Eskilson - Senior Engineer at Klarna
- https://github.com/bamorim/typedectoschema (https://github.com/bamorim/typed_ecto_schema?utm_source=thinkingelixir&utm_medium=shownotes)
- https://podcast.thinkingelixir.com/72 (https://podcast.thinkingelixir.com/72?utm_source=thinkingelixir&utm_medium=shownotes) – Interview about type_check
- https://github.com/Qqwy/elixir-type_check (https://github.com/Qqwy/elixir-type_check?utm_source=thinkingelixir&utm_medium=shownotes)
- https://github.com/lexical-lsp/lexical (https://github.com/lexical-lsp/lexical?utm_source=thinkingelixir&utm_medium=shownotes) – Lexical Language Server
- https://github.com/elixir-tools/next-ls (https://github.com/elixir-tools/next-ls?utm_source=thinkingelixir&utm_medium=shownotes) – Next-LS Language Server
- https://smartlogic.io/podcast/elixir-wizards/s10-e12-jose-guillaume-giuseppe-types-elixir/ (https://smartlogic.io/podcast/elixir-wizards/s10-e12-jose-guillaume-giuseppe-types-elixir/?utm_source=thinkingelixir&utm_medium=shownotes) – José Valim, Guillaume Duboc, and Giuseppe Castagna discussing static types in Elixir
Guest Information
- https://twitter.com/Nezteb (https://twitter.com/Nezteb?utm_source=thinkingelixir&utm_medium=shownotes) – on Twitter
- https://github.com/Nezteb/ (https://github.com/Nezteb/?utm_source=thinkingelixir&utm_medium=shownotes) – on Github
- https://genserver.social/Nezteb/ (https://genserver.social/Nezteb/?utm_source=thinkingelixir&utm_medium=shownotes) – on Fediverse
- https://nezteb.net (https://nezteb.net?utm_source=thinkingelixir&utm_medium=shownotes) – Blog
Find us online
- Message the show - @ThinkingElixir (https://twitter.com/ThinkingElixir)
- Message the show on Fediverse - @[email protected] (https://genserver.social/ThinkingElixir)
- Email the show - [email protected] (mailto:[email protected])
- Mark Ericksen - @brainlid (https://twitter.com/brainlid)
- Mark Ericksen on Fediverse - @[email protected] (https://genserver.social/brainlid)
- David Bernheisel - @bernheisel (https://twitter.com/bernheisel)
- David Bernheisel on Fediverse - @[email protected] (https://genserver.social/dbern)
- Cade Ward - @cadebward (https://twitter.com/cadebward)
- Cade Ward on Fediverse - @[email protected] (https://genserver.social/cadebward)
Show Notes online - http://podcast.thinkingelixir.com/157 (http://podcast.thinkingelixir.com/157)
Elixir Community News
- https://elixir-lang.org/blog/2023/06/19/elixir-v1-15-0-released/ (https://elixir-lang.org/blog/2023/06/19/elixir-v1-15-0-released/?utm_source=thinkingelixir&utm_medium=shownotes) – Elixir 1.15 release blog post
- https://github.com/elixir-lang/elixir/releases/tag/v1.15.0 (https://github.com/elixir-lang/elixir/releases/tag/v1.15.0?utm_source=thinkingelixir&utm_medium=shownotes) – full release notes
- https://twitter.com/josevalim/status/1670879654134050828 (https://twitter.com/josevalim/status/1670879654134050828?utm_source=thinkingelixir&utm_medium=shownotes) – José Valim's tweet about reported compilation time improvements
- https://elixirforum.com/t/elixir-v1-15-0-released/56584 (https://elixirforum.com/t/elixir-v1-15-0-released/56584?utm_source=thinkingelixir&utm_medium=shownotes) – ElixirForum.com post about the release with comments, feedback, and workarounds for issues.
- https://github.com/phoenixframework/phoenix/blob/v1.7.4/CHANGELOG.md (https://github.com/phoenixframework/phoenix/blob/v1.7.4/CHANGELOG.md?utm_source=thinkingelixir&utm_medium=shownotes) – Phoenix 1.7.4 (then up to 1.7.6) was released with a small, but handy fix around deploying with active websockets
- https://survey.stackoverflow.co/2023/ (https://survey.stackoverflow.co/2023/?utm_source=thinkingelixir&utm_medium=shownotes) – StackOverflow Developer Survey results
- https://survey.stackoverflow.co/2023/#technology-most-popular-technologies (https://survey.stackoverflow.co/2023/#technology-most-popular-technologies?utm_source=thinkingelixir&utm_medium=shownotes) – Most popular technologies
- https://survey.stackoverflow.co/2023/#section-top-paying-technologies-top-paying-technologies (https://survey.stackoverflow.co/2023/#section-top-paying-technologies-top-paying-technologies?utm_source=thinkingelixir&utm_medium=shownotes) – Top paying technologies
- https://survey.stackoverflow.co/2023/#section-admired-and-desired-web-frameworks-and-technologies (https://survey.stackoverflow.co/2023/#section-admired-and-desired-web-frameworks-and-technologies?utm_source=thinkingelixir&utm_medium=shownotes) – Phoenix is the most admired web framework and technology
- https://twitter.com/bcardarella/status/1669423297518264320 (https://twitter.com/bcardarella/status/1669423297518264320?utm_source=thinkingelixir&utm_medium=shownotes) – LiveView Native got animated charts working in SwiftCharts
- https://twitter.com/moomerman/status/1670021284900614144 (https://twitter.com/moomerman/status/1670021284900614144?utm_source=thinkingelixir&utm_medium=shownotes) – Apache ECharts with LiveView
- https://huggingface.co/blog/livebook-app-deployment (https://huggingface.co/blog/livebook-app-deployment?utm_source=thinkingelixir&utm_medium=shownotes) – José Valim's has a Livebook blog post on the Hugging Face blog.
- https://twitter.com/thibaut_barrere/status/1670789241436028931 (https://twitter.com/thibaut_barrere/status/1670789241436028931?utm_source=thinkingelixir&utm_medium=shownotes) – Using IEx helpers in Livebook cells - import IEx.Helpers
- https://twitter.com/germsvel/status/1669669754305404928 (https://twitter.com/germsvel/status/1669669754305404928?utm_source=thinkingelixir&utm_medium=shownotes) – German Velasco has created a number of short tip videos that now have a home on ElixirStreams.com
- https://twitter.com/elixirphoenix/status/1670856560480747526 (https://twitter.com/elixirphoenix/status/1670856560480747526?utm_source=thinkingelixir&utm_medium=shownotes) – Adding Bandit to a Phoenix 1.7 project fits in a single tweet
- https://erlef.org/events (https://erlef.org/events?utm_source=thinkingelixir&utm_medium=shownotes) – The EEF (Erlang Ecosystem Foundation) has an "events" page.1
Do you have some Elixir news to share? Tell us at @ThinkingElixir (https://twitter.com/ThinkingElixir) or email at [email protected] (mailto:[email protected])
Discussion Resources
- https://fly.io/phoenix-files/adding-dialyzer-without-the-pain/ (https://fly.io/phoenix-files/adding-dialyzer-without-the-pain/?utm_source=thinkingelixir&utm_medium=shownotes) – Blog post with more resources and code
- https://www.erlang.org/doc/man/dialyzer.html (https://www.erlang.org/doc/man/dialyzer.html?utm_source=thinkingelixir&utm_medium=shownotes) – Dialyzer docs
- https://github.com/jeremyjh/dialyxir (https://github.com/jeremyjh/dialyxir?utm_source=thinkingelixir&utm_medium=shownotes) – Dialyxir project
- https://github.com/jeremyjh/dialyxir/pull/493 (https://github.com/jeremyjh/dialyxir/pull/493?utm_source=thinkingelixir&utm_medium=shownotes) – PR to add new format for ignorefilestrict
- https://elixirforum.com/t/blog-post-adding-dialyzer-without-the-pain/56461 (https://elixirforum.com/t/blog-post-adding-dialyzer-without-the-pain/56461?utm_source=thinkingelixir&utm_medium=shownotes) – Feedback to blog post that we discuss
- https://www.youtube.com/watch?v=4PZE40h13wM (https://www.youtube.com/watch?v=4PZE40h13wM?utm_source=thinkingelixir&utm_medium=shownotes) – Slaying the Type Hydra, or How We Went from 12,000 Dialyzer Errors to None | Jesper Eskilson - Senior Engineer at Klarna
- https://github.com/bamorim/typedectoschema (https://github.com/bamorim/typed_ecto_schema?utm_source=thinkingelixir&utm_medium=shownotes)
- https://podcast.thinkingelixir.com/72 (https://podcast.thinkingelixir.com/72?utm_source=thinkingelixir&utm_medium=shownotes) – Interview about type_check
- https://github.com/Qqwy/elixir-type_check (https://github.com/Qqwy/elixir-type_check?utm_source=thinkingelixir&utm_medium=shownotes)
- https://github.com/lexical-lsp/lexical (https://github.com/lexical-lsp/lexical?utm_source=thinkingelixir&utm_medium=shownotes) – Lexical Language Server
- https://github.com/elixir-tools/next-ls (https://github.com/elixir-tools/next-ls?utm_source=thinkingelixir&utm_medium=shownotes) – Next-LS Language Server
- https://smartlogic.io/podcast/elixir-wizards/s10-e12-jose-guillaume-giuseppe-types-elixir/ (https://smartlogic.io/podcast/elixir-wizards/s10-e12-jose-guillaume-giuseppe-types-elixir/?utm_source=thinkingelixir&utm_medium=shownotes) – José Valim, Guillaume Duboc, and Giuseppe Castagna discussing static types in Elixir
Guest Information
- https://twitter.com/Nezteb (https://twitter.com/Nezteb?utm_source=thinkingelixir&utm_medium=shownotes) – on Twitter
- https://github.com/Nezteb/ (https://github.com/Nezteb/?utm_source=thinkingelixir&utm_medium=shownotes) – on Github
- https://genserver.social/Nezteb/ (https://genserver.social/Nezteb/?utm_source=thinkingelixir&utm_medium=shownotes) – on Fediverse
- https://nezteb.net (https://nezteb.net?utm_source=thinkingelixir&utm_medium=shownotes) – Blog
Find us online
- Message the show - @ThinkingElixir (https://twitter.com/ThinkingElixir)
- Message the show on Fediverse - @[email protected] (https://genserver.social/ThinkingElixir)
- Email the show - [email protected] (mailto:[email protected])
- Mark Ericksen - @brainlid (https://twitter.com/brainlid)
- Mark Ericksen on Fediverse - @[email protected] (https://genserver.social/brainlid)
- David Bernheisel - @bernheisel (https://twitter.com/bernheisel)
- David Bernheisel on Fediverse - @[email protected] (https://genserver.social/dbern)
- Cade Ward - @cadebward (https://twitter.com/cadebward)
- Cade Ward on Fediverse - @[email protected] (https://genserver.social/cadebward)
More episodes of the podcast Thinking Elixir Podcast
283: Erlang Turns 27 and React at Risk
16/12/2025
282: Type Systems and View Transitions
09/12/2025
281: Planning for the Unexpected
02/12/2025
280: Dark Matter Developers
25/11/2025
279: Hot Code Upgrades and Hotter AI Takes
18/11/2025
278: WAL-ing Through Database Changes
11/11/2025
277: Searching Across the Hexiverse
04/11/2025
276: Elixir v1.19 Types and Speed
28/10/2025
275: From Slop to Success?
21/10/2025
274: Protocols, Permissions, and Performance
14/10/2025
ZARZA We are Zarza, the prestigious firm behind major projects in information technology.