<story><title>Switching to Elixir</title><url>https://www.leemeichin.com/posts/switching-to-elixir.html</url></story><parent_chain><item><author>zoogeny</author><text>I have been watching Elixir YouTube videos pretty much every day for the last few weeks. I guess there was an Elixir conference recently and after I watched a couple, YouTube has been sending me a consistent stream of Elixir content.&lt;p&gt;I really want to try out this language. I love the idea of Erlang but the few times I&amp;#x27;ve had to deal with it (an ejabberd chat server was one) I found it to be a bit too quirky. Every video I&amp;#x27;ve seen with Joe Armstrong leads me to believe he was an under-appreciated genius. Isolated processes and message passing (Actors) seem a good candidate for the future of distributed programming (see this recent video from Crockford on his new Misty programming language [1] - notice how the questions were about Elixir&amp;#x2F;Erlang). I love pattern matching and elixir uses this to a high degree.&lt;p&gt;However, I am not 100% sold. Clearly this community punches above its weight, and the BEAM is obviously no slouch and is a brilliant choice for a platform to build upon. But I get concerned looking at the magic of LiveView (and LiveBook). My experience is that if something sounds too good to be true, it often is. A lot of the jargon is also totally unfamiliar to me - things like GenServers and other esoteric kinds of platform specific knowledge. It feels like stepping into a one-way portal, I&amp;#x27;m not sure any knowledge in that universe is transferable.&lt;p&gt;There is a huge risk in niche languages and platforms. Hard to hire for, hard to find libraries for, hard to find blogs&amp;#x2F;tutorials&amp;#x2F;etc. With alternatives like Go having a pretty respectable concurrency story ... it is pretty hard to justify taking the risk on such a small community.&lt;p&gt;But kudos to that community. It is honestly impressive to me what they have achieved. I&amp;#x27;m also very excited to see what happens with their type system implementation.&lt;p&gt;1. &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;www.youtube.com&amp;#x2F;watch?v=R2idkNdKqpQ&quot;&gt;https:&amp;#x2F;&amp;#x2F;www.youtube.com&amp;#x2F;watch?v=R2idkNdKqpQ&lt;/a&gt;</text></item></parent_chain><comment><author>jb3689</author><text>You are overthinking some of it at least when it comes to concurrency. Look at what a process is and how send works. GenServer is a natural generalization of a pattern you’d write a thousand times. Knowledge of actors is transferable. Go has libraries which implement actor abstractions for example. Process mailboxes are just message queues like Go’s channels are. There are differences with respect to how the interpreters work and how processor yields work.&lt;p&gt;Stuff like LiveView though looks like magic because it is magic. There are a lot of moving parts involved in getting it working. It’s the result of work that has been going on for the past decade across multiple communities though. The ideas are mature even if there is a lot of abstraction.&lt;p&gt;Stuff like Riak was well ahead of its time. They basically had the idea of being able to create robust distributed systems much the same way you would a GenServer.</text></comment>
<story><title>Switching to Elixir</title><url>https://www.leemeichin.com/posts/switching-to-elixir.html</url></story><parent_chain><item><author>zoogeny</author><text>I have been watching Elixir YouTube videos pretty much every day for the last few weeks. I guess there was an Elixir conference recently and after I watched a couple, YouTube has been sending me a consistent stream of Elixir content.&lt;p&gt;I really want to try out this language. I love the idea of Erlang but the few times I&amp;#x27;ve had to deal with it (an ejabberd chat server was one) I found it to be a bit too quirky. Every video I&amp;#x27;ve seen with Joe Armstrong leads me to believe he was an under-appreciated genius. Isolated processes and message passing (Actors) seem a good candidate for the future of distributed programming (see this recent video from Crockford on his new Misty programming language [1] - notice how the questions were about Elixir&amp;#x2F;Erlang). I love pattern matching and elixir uses this to a high degree.&lt;p&gt;However, I am not 100% sold. Clearly this community punches above its weight, and the BEAM is obviously no slouch and is a brilliant choice for a platform to build upon. But I get concerned looking at the magic of LiveView (and LiveBook). My experience is that if something sounds too good to be true, it often is. A lot of the jargon is also totally unfamiliar to me - things like GenServers and other esoteric kinds of platform specific knowledge. It feels like stepping into a one-way portal, I&amp;#x27;m not sure any knowledge in that universe is transferable.&lt;p&gt;There is a huge risk in niche languages and platforms. Hard to hire for, hard to find libraries for, hard to find blogs&amp;#x2F;tutorials&amp;#x2F;etc. With alternatives like Go having a pretty respectable concurrency story ... it is pretty hard to justify taking the risk on such a small community.&lt;p&gt;But kudos to that community. It is honestly impressive to me what they have achieved. I&amp;#x27;m also very excited to see what happens with their type system implementation.&lt;p&gt;1. &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;www.youtube.com&amp;#x2F;watch?v=R2idkNdKqpQ&quot;&gt;https:&amp;#x2F;&amp;#x2F;www.youtube.com&amp;#x2F;watch?v=R2idkNdKqpQ&lt;/a&gt;</text></item></parent_chain><comment><author>victorbjorklund</author><text>I actually find the opposite to be true. Elixir is less &amp;quot;magic&amp;quot; once you learn it. I can see and understand what most things are doing and read the code. With javascript? Not so much.&lt;p&gt;On the point of hard to hire and hard to find tutorials. It is true. It is way harder to find for example someone that done what you wanna do in elixir vs javascript. When it comes to libaries it isnt so big problem. There are lots of libraries and so far I havent really encountered any problems. Only thing would be if you interact with an API they might provide a client library for javascript and python (but less common for Go) but not elixir. But honestly it is usually not so hard to use an API with just a http-client.</text></comment>