<story><title>Elixir 1.17 released: set-theoretic types in patterns, durations, OTP 27</title><url>https://elixir-lang.org/blog/2024/06/12/elixir-v1-17-0-released/</url></story><parent_chain><item><author>elbasti</author><text>I love elixir. I use it for basically everything. And LiveBook has become my go-to place to start building toy software.&lt;p&gt;I just can&amp;#x27;t do liveview. I have a very hard time grokking it, and it has a lot of footguns. (ex: if you need to remember to perform auth checks both doing a `pipe_through` in a router &lt;i&gt;and&lt;/i&gt; using the `on_mount` callback in a LiveView, see [0].)&lt;p&gt;In fact, the fact that the above sentence has zero meaning to a new-to-phoenix-and-liveview dev is proof enough to me that liveview should &lt;i&gt;not&lt;/i&gt; be the default way of doing things.&lt;p&gt;It creates a very steep learning curve where, crucially &lt;i&gt;none is required&lt;/i&gt;. elixir&amp;#x2F;phoenix are &lt;i&gt;easy&lt;/i&gt;.&lt;p&gt;I would even say that the correct learning order for a new-to-elixir&amp;#x2F;phoenix dev should be:&lt;p&gt;- Phoenix with deadviews (MVC style).&lt;p&gt;- &amp;quot;Elixir in action&amp;quot; to learn the basics of OTP. This book is was both easy and utterly eye-opening to me and changed the way I code basically everything.&lt;p&gt;- Then, and only then, LiveView.&lt;p&gt;[0]: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;hexdocs.pm&amp;#x2F;phoenix_live_view&amp;#x2F;security-model.html#live_session-and-live_redirect&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;hexdocs.pm&amp;#x2F;phoenix_live_view&amp;#x2F;security-model.html#liv...&lt;/a&gt;</text></item><item><author>mike1o1</author><text>I&amp;#x27;ve been using Elixir as a backend for a side project (with a Remix frontend) and it&amp;#x27;s been really pleasant and productive to work with on the backend. I appreciate how productive LiveView can be, but for my specific case I needed to handle poor network connections and LiveView was (as expected) a poor experience.&lt;p&gt;I wish Elixir was able to decouple itself from LiveView in a sense in the minds of developers. Even without LiveView and realtime&amp;#x2F;channels, just using Elixir as a backend for a simple API has been really fun.</text></item></parent_chain><comment><author>josevalim</author><text>Thanks for the link. This is my fault because the sentence is ambiguous. Where it tries to explain that &amp;quot;you need to remember to perform auth checks both&amp;quot;, it rather means that you need to protect controller routes and LiveView routes the same way, but for a single LiveView, you don&amp;#x27;t need to do both. I will try to clarify it!&lt;p&gt;If you have other footguns in mind, feel to shot me an email at jose dot valim on gmail!</text></comment>
<story><title>Elixir 1.17 released: set-theoretic types in patterns, durations, OTP 27</title><url>https://elixir-lang.org/blog/2024/06/12/elixir-v1-17-0-released/</url></story><parent_chain><item><author>elbasti</author><text>I love elixir. I use it for basically everything. And LiveBook has become my go-to place to start building toy software.&lt;p&gt;I just can&amp;#x27;t do liveview. I have a very hard time grokking it, and it has a lot of footguns. (ex: if you need to remember to perform auth checks both doing a `pipe_through` in a router &lt;i&gt;and&lt;/i&gt; using the `on_mount` callback in a LiveView, see [0].)&lt;p&gt;In fact, the fact that the above sentence has zero meaning to a new-to-phoenix-and-liveview dev is proof enough to me that liveview should &lt;i&gt;not&lt;/i&gt; be the default way of doing things.&lt;p&gt;It creates a very steep learning curve where, crucially &lt;i&gt;none is required&lt;/i&gt;. elixir&amp;#x2F;phoenix are &lt;i&gt;easy&lt;/i&gt;.&lt;p&gt;I would even say that the correct learning order for a new-to-elixir&amp;#x2F;phoenix dev should be:&lt;p&gt;- Phoenix with deadviews (MVC style).&lt;p&gt;- &amp;quot;Elixir in action&amp;quot; to learn the basics of OTP. This book is was both easy and utterly eye-opening to me and changed the way I code basically everything.&lt;p&gt;- Then, and only then, LiveView.&lt;p&gt;[0]: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;hexdocs.pm&amp;#x2F;phoenix_live_view&amp;#x2F;security-model.html#live_session-and-live_redirect&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;hexdocs.pm&amp;#x2F;phoenix_live_view&amp;#x2F;security-model.html#liv...&lt;/a&gt;</text></item><item><author>mike1o1</author><text>I&amp;#x27;ve been using Elixir as a backend for a side project (with a Remix frontend) and it&amp;#x27;s been really pleasant and productive to work with on the backend. I appreciate how productive LiveView can be, but for my specific case I needed to handle poor network connections and LiveView was (as expected) a poor experience.&lt;p&gt;I wish Elixir was able to decouple itself from LiveView in a sense in the minds of developers. Even without LiveView and realtime&amp;#x2F;channels, just using Elixir as a backend for a simple API has been really fun.</text></item></parent_chain><comment><author>birdfood</author><text>I&amp;#x27;ve been having a similar experience trying to build an app with liveview. I&amp;#x27;ve been simultaneously building the same app with Phoenix + LiveView and Dream (OCaml) + HTMX. With the OCaml stack I&amp;#x27;m finding it really easy to follow the data flow through the whole app thanks to the compiler. With the Phoenix app I&amp;#x27;m struggling to internalise how all the code fits together and having to navigate the code base off searching for strings alone (vscode editor tooling seems to just not work for me?). I&amp;#x27;m also struggling to grasp how state is stored in a liveview and it isn&amp;#x27;t helped that a lot of the resources I&amp;#x27;ve found online are now out of date. Going with a simpler approach of MVC sounds promising - I do want to get to the point where I&amp;#x27;m actually taking advantage of the BEAM (I&amp;#x27;m aiming for long running processes + user interactivity + maybe multi-user editing).&lt;p&gt;I&amp;#x27;d be keen to hear your development workflow for building an MVC style app, what you use for the front end, and how you go about refactoring, e.g. when editing a struct which is stored in the DB and shown in a view is when I particularly feel like I&amp;#x27;m flying blind.</text></comment>