<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="89775" data-post-id="89775">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="MartinElvar" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/MartinElvar/120/1799_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  MartinElvar
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Wonder what the status is on JIT project :). <a href="https://twitter.com/francescoc/status/872737190895288320" class="inline-onebox" rel="noopener nofollow ugc">Francesco Cesarini on X: "Looks like the JIT compiler on the beam might become a reality in OTP 21... #erlang #elixirlang #euc17" / X</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="89775" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/where-is-elixir-and-the-actor-model-heading/15239/58">Post #57</a>
	                </div>
	            </div>
              <div id="likers-container-89775" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="89775"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #57"></div>
  </section>
</div>
    <div class="postbit" id="89870" data-post-id="89870">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="tristan" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/tristan/120/12307_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  tristan
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Rebar3 Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="OvermindDL1" data-post="35" data-topic="15239">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Have you seen the horrors that K8s had to do to get Go to work well? They ended up <em>building</em> a strongly typed system on top of it, making the code look absolutely abhorrant and near unreadable (and slowing it down).</p>
</blockquote>
</aside>
<p>^ This! When needing to work on an operator I tried to just use Go but it wasn’t even just Go anymore… and so much has to be generated. Gave up and started working on k8s operator framework for Erlang, much nicer.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="89870" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/where-is-elixir-and-the-actor-model-heading/15239/59">Post #58</a>
	                </div>
	            </div>
              <div id="likers-container-89870" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="89870"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #58"></div>
  </section>
</div>
    <div class="postbit" id="90918" data-post-id="90918">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dimitarvp" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/120/38664_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dimitarvp
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote group-Rebar3" data-username="tristan" data-post="59" data-topic="15239">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/tristan/48/12307_2.png" class="avatar"> tristan:</div>
<blockquote>
<p>Gave up and started working on k8s operator framework for Erlang, much nicer.</p>
</blockquote>
</aside>
<p>Would you please post a link?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="90918" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/where-is-elixir-and-the-actor-model-heading/15239/60">Post #59</a>
	                </div>
	            </div>
              <div id="likers-container-90918" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="90918"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #59"></div>
  </section>
</div>
    <div class="postbit" id="90919" data-post-id="90919">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="tristan" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/tristan/120/12307_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  tristan
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Rebar3 Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Ah yea, the main lib is <a href="https://github.com/tsloughter/kuberl" class="inline-onebox" rel="noopener nofollow ugc">GitHub - tsloughter/kuberl: Erlang Kubernetes client · GitHub</a> which has a watch behaviour <a href="https://github.com/tsloughter/kuberl/blob/master/src/kuberl_watch.erl" class="inline-onebox" rel="noopener nofollow ugc">kuberl/src/kuberl_watch.erl at master · tsloughter/kuberl · GitHub</a></p>
<p>I haven’t done much with it yet but this is the start of an operator using the watch behavior <a href="https://github.com/SpaceTime-IoT/vonnegut_operator" class="inline-onebox" rel="noopener nofollow ugc">GitHub - erleans/vonnegut_operator: Vonnegut Kubernetes operator · GitHub</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="90919" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/where-is-elixir-and-the-actor-model-heading/15239/61">Post #60</a>
	                </div>
	            </div>
              <div id="likers-container-90919" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="90919"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #60"></div>
  </section>
</div>
    <div class="postbit" id="156457" data-post-id="156457">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="AppleKid7" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/AppleKid7/120/35409_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  AppleKid7
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’m new here and I don’t know how people feel about reviving dead threads, so I apologize in advance.</p>
<p>I have gotten to the point of my career where I’ve done a good amount of things… web applications, desktop applications, live video streaming, a decent bit of data science, and most recently distributed systems… I think I have reached a point where, although I still don’t want to do just one thing for the rest of my life. I do want to specialize and become an “expert” in something. I am currently working in Scala and Akka, and I think I would like that something to be distributed systems. That being said, I think different languages/tools offer different pros and cons for different things, BUT it is also definitely true there are some languages/tools that are better suited for certain things than others. For instance, you can compare JavaScript and C++ all day long, but C++ will always be better for computation intensive applications, and JavaScript will probably always be better for building a web application front end. Correct me if I am wrong about anything, and feel free to disagree.</p>
<p>Now to get to my question: I have become interested in Erlang/Elixir in the context of distributed systems/applications. What advantages does it offer over Scala + Akka + Kubernetes (which is, apparently what Tesla is currently using)? I don’t have a specific application in mind for the future and I’m using Scala + Akka at work because it’s what the system I’m working on is written in and I’m still relatively new to it. People around me seem to be extremely interested in Akka streams…</p>
<p>Anyway, thinking ahead, if I were to seriously survey Erlang/Elixir what should I be on the lookout for in terms of picking a tool for a specific problem when it comes to the area of distributed systems and applications? Like if I were to come up with an idea for an open source distributed systems project tomorrow to work on in my spare time, investing in learning a new tool were definitely an option, and I had the freedom to pick whichever technology I wanted, what criteria should I consider when deciding on whether it should be Elixir, Scala + Akka + Kubernetes, or something else?</p>
<p><strong>tl;dr</strong> - relating back to the point OP was making, I’ve more easily come across people on the internet describing where Elixir and Erlang do poorly (computation-intensive apps, graphics programming, etc) than where they’re absolutely <span class="hashtag-raw">#1</span>… Where is Elixir the undisputed champ so if I want to design some App, X, I can more easily decide “Another app Y would probably be better written in something else, but X definitely has features that pretty much require that I use Elixir or Erlang to get to a clean solution because even “similar” tools like Scala + Akka would require a lot of hacks/workarounds”?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="156457" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/where-is-elixir-and-the-actor-model-heading/15239/62">Post #61</a>
	                </div>
	            </div>
              <div id="likers-container-156457" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="156457"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #61"></div>
  </section>
</div>
    <div class="postbit" id="156472" data-post-id="156472">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dimitarvp" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/120/38664_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dimitarvp
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="AppleKid7" data-post="62" data-topic="15239">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/applekid7/48/35409_2.png" class="avatar"> AppleKid7:</div>
<blockquote>
<p>Where is Elixir the undisputed champ</p>
</blockquote>
</aside>
<p>Mostly Erlang’s OTP and Elixir’s additions on top of it – processes, <code>Task</code>s, <code>Agent</code>s, <code>GenServer</code>s, <code>Supervisor</code>s, and all that jazz. The reason OTP is much ahead than Akka and others is that they don’t go all the way to fault-tolerance and lagless operation while OTP (and the BEAM VM itself) is designed so the system keeps a predictable lag even under heavy load. Furthermore, order and deliverability of messages to processes is guaranteed.</p>
<p>There’s no other runtime system like BEAM / OTP that can utilise the actor model so well. It simply does not make mistakes, ever. And where <em>you</em> make mistakes, the system allows for self-healing (if you use OTP’s primitives).</p>
<p>Add on top of that this system can almost transparently do parallel processing while 99% of all other languages and frameworks are just making their first steps, and you can see why the people who heavily use Erlang and Elixir are fans. The runtime is simply light years ahead of everything else in these departments (although as already mentioned, it is not the most performant one). Sure everybody else can spawn threads but that’s extremely error-prone. The actors plus the transparent multiplexing on all CPU cores is proven historically to be the much better programming model.</p>
<hr>
<p>As for drawbacks, you have correctly identified them. I like to think that this community is much more objective than many others because you will not hear people here say “just use Elixir for everything!”. On the contrary, there’s a number of scenarios where it’s not a good fit, as you discovered.</p>
<p>If you need a system that doesn’t make mistakes in its contracts and promises and which can parallelise tasks almost transparently, and is quite adequately fast as a bonus, Erlang/Elixir are your tech. You simply can’t make a mistake using them, and the community periodically adds support for more arcane / corner standards or protocols or data serialisation formats.</p>
<p>If however you need a lot of raw speed, or simply can’t convert your organisation (“we can’t find Elixir devs” seems to be a often-repeated mantra) then just don’t risk it and use either old tech like PHP / Python, or a new and emerging and constantly improving tech like the Rust ecosystem.</p>
<p>Erlang/Elixir are fantastic glue languages that can also do much more in addition to that role. I’d pick them for 80-90% of any random project I might have coming my way. For everything else I’d go for Rust or, if I have no other choice, PHP/Python/Ruby.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="156472" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/where-is-elixir-and-the-actor-model-heading/15239/63">Post #62</a>
	                </div>
	            </div>
              <div id="likers-container-156472" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="156472"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-last-post cat-last-post" title="Last post!"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <span class="all-loaded">— All posts loaded —</span>
</div></template></turbo-stream>