Listen "53: SOLID Elixir with Ilya Averyanov"
Episode Synopsis
We talk with Ilya Averyanov about how the SOLID principles, typically associated with OOP, can apply to Elixir. We talk about Ilya's blog post where he applied these principles to his Github project and how that helped in PR discussions. We also talk about testing, architecture, and more.
Show Notes online - http://podcast.thinkingelixir.com/53 (http://podcast.thinkingelixir.com/53)
Elixir Community News
- https://github.com/phoenixframework/phoenixliveview/pull/1490 (https://github.com/phoenixframework/phoenix_live_view/pull/1490) – Phoenix LiveView live_session PR coming up
- https://github.com/phoenixframework/phoenixliveview/pull/1474 (https://github.com/phoenixframework/phoenix_live_view/pull/1474) – Phoenix LiveView internal rewrite of JS
- https://github.com/phoenixframework/phoenix/pull/4337 (related, where explanation lives) (https://github.com/phoenixframework/phoenix/pull/4337 (related, where explanation lives)) – PR for "comprehensive rewrite of the Phoenix asset pipeline"
- https://www.youtube.com/watch?v=vdhK0QPN61E (https://www.youtube.com/watch?v=vdhK0QPN61E) – Elixir Roundtable 3 - discussion with Chris McCord about the pipeline changes
- https://elixirforum.com/t/elixir-gotchas-and-common-issues-wiki/40261 (https://elixirforum.com/t/elixir-gotchas-and-common-issues-wiki/40261) – Elixir Gotchas and Common Issues Wiki
- https://twitter.com/FrancisChabouis/status/1404342105053466627 (https://twitter.com/FrancisChabouis/status/1404342105053466627) – French Government is using Elixir and Phoenix
- https://github.com/etalab/transport-site (https://github.com/etalab/transport-site) – French government project
- https://twitter.com/hmans/status/1402723032850997257 (https://twitter.com/hmans/status/1402723032850997257) – WebComponents and LiveView example as 3D WebGL
- https://twitter.com/PeterLodewijk/status/1404462934030487553 (https://twitter.com/PeterLodewijk/status/1404462934030487553) – Hera Platform announced, sensor network running Erlang on GRiSP boards
- https://www.info.ucl.ac.be/~pvr/Kalbusch22701600Verpoten611015002021.pdf (https://www.info.ucl.ac.be/~pvr/Kalbusch_22701600_Verpoten_61101500_2021.pdf) – Details in the paper on how it works
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://dev.to/savonarola/why-solid-may-be-useful-for-you-in-elixir-58me (https://dev.to/savonarola/why-solid-may-be-useful-for-you-in-elixir-58me)
- https://en.wikipedia.org/wiki/SOLID (https://en.wikipedia.org/wiki/SOLID)
- https://hexdocs.pm/gen_stage/GenStage.html#module-usage-guidelines (https://hexdocs.pm/gen_stage/GenStage.html#module-usage-guidelines)
- https://www.theerlangelist.com/article/spawnornot (https://www.theerlangelist.com/article/spawn_or_not)
- http://erlang.org/doc/man/xref.html (http://erlang.org/doc/man/xref.html)
- https://github.com/sasa1977/boundary (https://github.com/sasa1977/boundary)
- https://github.com/funbox/clean_mixer (https://github.com/funbox/clean_mixer)
- https://github.com/funbox/smppex (https://github.com/funbox/smppex)
- https://github.com/savonarola/smppex_telemetry (https://github.com/savonarola/smppex_telemetry)
- https://github.com/beam-telemetry/telemetry (https://github.com/beam-telemetry/telemetry)
- https://en.wikipedia.org/wiki/Chain-of-responsibility_pattern (https://en.wikipedia.org/wiki/Chain-of-responsibility_pattern)
- https://docs.oracle.com/en/java/javase/15/language/sealed-classes-and-interfaces.html (https://docs.oracle.com/en/java/javase/15/language/sealed-classes-and-interfaces.html)
- http://blog.plataformatec.com.br/2015/10/mocks-and-explicit-contracts/ (http://blog.plataformatec.com.br/2015/10/mocks-and-explicit-contracts/)
- https://gameprogrammingpatterns.com/ (https://gameprogrammingpatterns.com/)
- http://blog.plataformatec.com.br/2015/10/mocks-and-explicit-contracts/ (http://blog.plataformatec.com.br/2015/10/mocks-and-explicit-contracts/)
- https://www.amazon.com/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164 (https://www.amazon.com/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164) – Clean Architecture
- https://www.archunit.org/ (https://www.archunit.org/) – Testing architecture
Guest Information
- https://twitter.com/motonarola (https://twitter.com/motonarola) – on Twitter
- https://github.com/savonarola/ (https://github.com/savonarola/) – on Github
Find us online
- Message the show - @ThinkingElixir (https://twitter.com/ThinkingElixir)
- Email the show - [email protected] (mailto:[email protected])
- Mark Ericksen - @brainlid (https://twitter.com/brainlid)
- David Bernheisel - @bernheisel (https://twitter.com/bernheisel)
- Cade Ward - @cadebward (https://twitter.com/cadebward)
Show Notes online - http://podcast.thinkingelixir.com/53 (http://podcast.thinkingelixir.com/53)
Elixir Community News
- https://github.com/phoenixframework/phoenixliveview/pull/1490 (https://github.com/phoenixframework/phoenix_live_view/pull/1490) – Phoenix LiveView live_session PR coming up
- https://github.com/phoenixframework/phoenixliveview/pull/1474 (https://github.com/phoenixframework/phoenix_live_view/pull/1474) – Phoenix LiveView internal rewrite of JS
- https://github.com/phoenixframework/phoenix/pull/4337 (related, where explanation lives) (https://github.com/phoenixframework/phoenix/pull/4337 (related, where explanation lives)) – PR for "comprehensive rewrite of the Phoenix asset pipeline"
- https://www.youtube.com/watch?v=vdhK0QPN61E (https://www.youtube.com/watch?v=vdhK0QPN61E) – Elixir Roundtable 3 - discussion with Chris McCord about the pipeline changes
- https://elixirforum.com/t/elixir-gotchas-and-common-issues-wiki/40261 (https://elixirforum.com/t/elixir-gotchas-and-common-issues-wiki/40261) – Elixir Gotchas and Common Issues Wiki
- https://twitter.com/FrancisChabouis/status/1404342105053466627 (https://twitter.com/FrancisChabouis/status/1404342105053466627) – French Government is using Elixir and Phoenix
- https://github.com/etalab/transport-site (https://github.com/etalab/transport-site) – French government project
- https://twitter.com/hmans/status/1402723032850997257 (https://twitter.com/hmans/status/1402723032850997257) – WebComponents and LiveView example as 3D WebGL
- https://twitter.com/PeterLodewijk/status/1404462934030487553 (https://twitter.com/PeterLodewijk/status/1404462934030487553) – Hera Platform announced, sensor network running Erlang on GRiSP boards
- https://www.info.ucl.ac.be/~pvr/Kalbusch22701600Verpoten611015002021.pdf (https://www.info.ucl.ac.be/~pvr/Kalbusch_22701600_Verpoten_61101500_2021.pdf) – Details in the paper on how it works
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://dev.to/savonarola/why-solid-may-be-useful-for-you-in-elixir-58me (https://dev.to/savonarola/why-solid-may-be-useful-for-you-in-elixir-58me)
- https://en.wikipedia.org/wiki/SOLID (https://en.wikipedia.org/wiki/SOLID)
- https://hexdocs.pm/gen_stage/GenStage.html#module-usage-guidelines (https://hexdocs.pm/gen_stage/GenStage.html#module-usage-guidelines)
- https://www.theerlangelist.com/article/spawnornot (https://www.theerlangelist.com/article/spawn_or_not)
- http://erlang.org/doc/man/xref.html (http://erlang.org/doc/man/xref.html)
- https://github.com/sasa1977/boundary (https://github.com/sasa1977/boundary)
- https://github.com/funbox/clean_mixer (https://github.com/funbox/clean_mixer)
- https://github.com/funbox/smppex (https://github.com/funbox/smppex)
- https://github.com/savonarola/smppex_telemetry (https://github.com/savonarola/smppex_telemetry)
- https://github.com/beam-telemetry/telemetry (https://github.com/beam-telemetry/telemetry)
- https://en.wikipedia.org/wiki/Chain-of-responsibility_pattern (https://en.wikipedia.org/wiki/Chain-of-responsibility_pattern)
- https://docs.oracle.com/en/java/javase/15/language/sealed-classes-and-interfaces.html (https://docs.oracle.com/en/java/javase/15/language/sealed-classes-and-interfaces.html)
- http://blog.plataformatec.com.br/2015/10/mocks-and-explicit-contracts/ (http://blog.plataformatec.com.br/2015/10/mocks-and-explicit-contracts/)
- https://gameprogrammingpatterns.com/ (https://gameprogrammingpatterns.com/)
- http://blog.plataformatec.com.br/2015/10/mocks-and-explicit-contracts/ (http://blog.plataformatec.com.br/2015/10/mocks-and-explicit-contracts/)
- https://www.amazon.com/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164 (https://www.amazon.com/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164) – Clean Architecture
- https://www.archunit.org/ (https://www.archunit.org/) – Testing architecture
Guest Information
- https://twitter.com/motonarola (https://twitter.com/motonarola) – on Twitter
- https://github.com/savonarola/ (https://github.com/savonarola/) – on Github
Find us online
- Message the show - @ThinkingElixir (https://twitter.com/ThinkingElixir)
- Email the show - [email protected] (mailto:[email protected])
- Mark Ericksen - @brainlid (https://twitter.com/brainlid)
- David Bernheisel - @bernheisel (https://twitter.com/bernheisel)
- Cade Ward - @cadebward (https://twitter.com/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.