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


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="garrison" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  garrison
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="cevado" data-post="15" data-topic="71280">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cevado/48/40655_2.png" class="avatar"> cevado:</div>
<blockquote>
<p>I don’t like this approach. I’ve worked on systems that derailed pretty bad with a lot of intermediary structs that was terrible to test and terrible to change.</p>
</blockquote>
</aside>
<p>Totally, the point I was making was only that, for a type system, you have to validate the keys in order to “type” the map. If you don’t validate the keys the type system can’t guarantee they’re there, so you’re back to square one.</p>
<p>With that said, another case occurred to me: <em>partial</em> validation. If you wanted to guarantee that a struct has, say, <code>%{"id" =&gt; String.t}</code> but allow <em>any other fields</em>, mixing atom keys and string keys would be pretty gross. I think that’s a pretty good argument for string literal types, actually. Consider making a thread about it!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="367308" 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/in-an-age-of-ai-is-static-typing-even-necessary/71280/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-367308" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="367308"
                     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 #21"></div>
  </section>
</div>
    <div class="postbit" id="367309" data-post-id="367309">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="DidactMacros" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  DidactMacros
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>AI needs to be explainable first, or mishaps could end up being buried too deep.</p>
<p>My humble opinion.</p>
<p>SVM powered typing perhaps?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="367309" 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/in-an-age-of-ai-is-static-typing-even-necessary/71280/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-367309" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="367309"
                     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 #22"></div>
  </section>
</div>
    <div class="postbit" id="367316" data-post-id="367316">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I hope this doesn’t come off as too far off-base to your question - but it got me thinking about language (both natural and context-free).</p>
<p>All languages have tools its users use to signify different qualities of meaning. They’re just tools - sometimes they’re right for the job, sometimes they aren’t.</p>
<p>For example, a non-native English speaker might dislike having to always include an article (a/the) if they come from a language that doesn’t bother. (<em>a cat, the cat, why are you forcing me to care?</em>)</p>
<p>Likewise, English speakers might have trouble with other language systems that use grammatical gender. (<em>why is it <strong>la mano</strong>, again?</em>)</p>
<p>I think of types in a similar way, AI or not, they can be very useful if they’re the right tools for the job.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="367316" 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/in-an-age-of-ai-is-static-typing-even-necessary/71280/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-367316" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="367316"
                     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 #23"></div>
  </section>
</div>
    <div class="postbit" id="367317" data-post-id="367317">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mudasobwa" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mudasobwa/120/5298_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mudasobwa
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Cure</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="plcholder" data-post="16" data-topic="71280">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/plcholder/48/38919_2.png" class="avatar"> plcholder:</div>
<blockquote>
<p>I think you can verify a programs property or parts of it, just off its types &amp; fn types with a strong statically typed language and even more so with a dependently typed language</p>
</blockquote>
</aside>
<p>Well, verification is possible with types being first class citizens (dependent types,) and there is <a href="https://www.idris-lang.org/" rel="noopener nofollow ugc">Idris</a> for that (which is Haskell done right,) save for that it unfortunately cannot reach the production stage (due to very few people working on it.) I personally design complicated solutions in Idris first, prove the stuff, and then translate to Elixir (losing the proof, I know, but hey, I am a good translator :).</p>
<p>Also, there are some languages to explicitly make proofs, like <a href="https://lean-lang.org/" rel="noopener nofollow ugc">Lean</a>, <a href="https://rocq-prover.org/" rel="noopener nofollow ugc">Coq</a>, <a href="https://wiki.portal.chalmers.se/agda/pmwiki.php" rel="noopener nofollow ugc">Agda</a>—this one is too esoteric even for me—etc.</p>
<p>But ADTs without dependent types, with types not being first class citizen, seems to be like AST, built on top of the regex-parser of the <em>compiled</em> code. I know this opinion is not popular, but I truly see no reason in having <em>type</em> checks when I cannot make types to depend on my other code and vice versa. I don’t fear to pass <code>%User{}</code> to where <code>%Product{}</code> is expected and never notice it until this bug crashes prod.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="367317" data-batch-url="/posts/batch_likers">
                        4
                      </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/in-an-age-of-ai-is-static-typing-even-necessary/71280/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-367317" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="367317"
                     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 #24"></div>
  </section>
</div>
    <div class="postbit" id="367318" data-post-id="367318">
  <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="mudasobwa" data-post="25" data-topic="71280">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mudasobwa/48/5298_2.png" class="avatar"> mudasobwa:</div>
<blockquote>
<p>I know this opinion is not popular, but I truly see no reason in having <em>type</em> checks when I cannot make types to depend on my other code and vice versa.</p>
</blockquote>
</aside>
<p>I do agree but with stuff like Dialyzer and the more and more improving Elixir compiler on the scene I’d say that being 20% - 30% there is still better than being 0% there.</p>
<p>And any tool that can help ground the LLM and give it a feedback loop with which it can self-correct, is a net gain.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="367318" data-batch-url="/posts/batch_likers">
                        4
                      </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/in-an-age-of-ai-is-static-typing-even-necessary/71280/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-367318" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="367318"
                     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 #25"></div>
  </section>
</div>
    <div class="postbit" id="367319" data-post-id="367319">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mudasobwa" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mudasobwa/120/5298_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mudasobwa
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Cure</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="dimitarvp" data-post="26" data-topic="71280">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/48/38664_2.png" class="avatar"> dimitarvp:</div>
<blockquote>
<p>any tool that can help ground the LLM</p>
</blockquote>
</aside>
<p>I honestly dunno. That sounds perfectly legit and it still bugs me to my gut. If I were able to figure out what type is there—LLM surely could have it done too. If it could not—it means I have a flaky design which wouldn’t be much improved by <em>restricting</em> types flowing around.</p>
<p>I wrote many AST-like parsers in my life and I’ll tell you what. There are two approaches to accomplish such a task. The one is to explicitly specify the expected income and isomorphically move it into the matching clauses (in the wild assumption you have a comprehensive spec on hand and it’s flattenable to clauses.) Another one would be to start with a single clause, printing the income and raising straight away. That way you got your first matching clause (and the second one which still raises.) In a dozen (hundred) iterations you are all set, and you have your parser on hand. I expect the LLM to act that way. Like, saying “Hey, man, the changes in this commit added new value passing to this function (<code>"admin"</code>) which is extra to previously handled <code>"user"</code> and <code>"guest"</code>.”</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="367319" 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/in-an-age-of-ai-is-static-typing-even-necessary/71280/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-367319" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="367319"
                     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 #26"></div>
  </section>
</div>
    <div class="postbit" id="367320" data-post-id="367320">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="garrison" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  garrison
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="mudasobwa" data-post="27" data-topic="71280">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mudasobwa/48/5298_2.png" class="avatar"> mudasobwa:</div>
<blockquote>
<p>If I were able to figure out what type is there—LLM surely could have it done too.</p>
</blockquote>
</aside>
<p>As humans we often call a function based off of documentation without reading the implementation. The models are likewise generally unable to fit the full codebase of all dependencies in context (often they can’t even fit <em>your</em> codebase in context) and so as it turns out documentation which <em>does</em> fit in context is very helpful to them. The recent Ash AI efforts and what Zach has written about them indicates, to me, that documentation is <em>very important</em> for the models to perform today.</p>
<p>And personally, when writing Elixir the typespecs are the first thing I read on hexdocs when I’m looking up a function. So clearly they are a very useful form of documentation. A type checker is helpful because it checks that those typespecs are actually <em>correct</em>, which catches bugs <em>in the documentation</em>.</p>
<aside class="quote no-group" data-username="mudasobwa" data-post="25" data-topic="71280">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mudasobwa/48/5298_2.png" class="avatar"> mudasobwa:</div>
<blockquote>
<p>I know this opinion is not popular, but I truly see no reason in having <em>type</em> checks when I cannot make types to depend on my other code and vice versa. I don’t fear to pass <code>%User{}</code> to where <code>%Product{}</code> is expected and never notice it until this bug crashes prod.</p>
</blockquote>
</aside>
<p>Agreed.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="367320" data-batch-url="/posts/batch_likers">
                        4
                      </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/in-an-age-of-ai-is-static-typing-even-necessary/71280/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-367320" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="367320"
                     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 #27"></div>
  </section>
</div>
    <div class="postbit" id="367324" data-post-id="367324">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>In a true age of AI, we won’t have the computer writing Elixir or Java or even C or assembly, but instead skipping all the abstraction overhead that was created to make it easier for humans to write code (correct or otherwise) and skipping straight to machine code.  OK, maybe there is a terse sort of machine code-like abstraction to achieve portability.  But the point stands: the AI becomes the abstraction and shouldn’t need intermediate abstraction layers to be successful.  In some sense “static typing” continues to be important because at the lowest level you are allocating some part of computer memory to hold a value of a particular size or to hold a subroutine and you need to know where that starts and ends to access it and use the rest of the memory efficiently, but that’s not static typing as an abstraction which I think is what the poll question is aiming at.</p>
<p>Until that time, LLM coding is about machine/human cooperation in programming which needs to accommodate the human side to be effective.  Therefore, if static typing helps humans write more robust code the need for static typing won’t change just because an LLM is in the loop.  Arguably it becomes more important because, as others have pointed out, it becomes the most explicit expression of intent between human and computer (just as it does between human and human).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="367324" data-batch-url="/posts/batch_likers">
                        4
                      </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/in-an-age-of-ai-is-static-typing-even-necessary/71280/29">Post #28</a>
	                </div>
	            </div>
              <div id="likers-container-367324" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="367324"
                     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 #28"></div>
  </section>
</div>
    <div class="postbit" id="367325" data-post-id="367325">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Interesting, ive tried idris because of the type driven development with idris book, I dropped it because I just did not have the motivation/time to get up to speed with emacs, getting idris2 mode to work properly with vscode felt like a nightmare and also I just didnt get the immediate benefits of writing programs in it like I did with phx, bar the code being succinct.</p>
<p>but now I am interested in your work flow, how do you design programs in idris before you write them in elixir. What sort of benefit does such exercise grant you?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="367325" 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/in-an-age-of-ai-is-static-typing-even-necessary/71280/30">Post #29</a>
	                </div>
	            </div>
              <div id="likers-container-367325" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="367325"
                     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 #29"></div>
  </section>
</div>
    <div class="postbit" id="367333" data-post-id="367333">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="venkatd" data-post="21" data-topic="71280">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/venkatd/48/9419_2.png" class="avatar"> venkatd:</div>
<blockquote>
<p>I think it might matter because sometimes us humans might still need to pop open the hood to inspect what’s going on.</p>
</blockquote>
</aside>
<p>Ya, this is the far more likely case, but I was imagining the future where no one looks at code or even knows how to read it.  Which is of course a bit ridiculous—obviously there are people who still write in assembly.  And in that case then <a class="mention" href="/u/sbuttgereit" rel="nofollow">@sbuttgereit</a>’s point that AI would then just be the abstraction makes far more sense.</p>
<p>I did vote that static types will still be useful (even though I don’t love using them myself).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="367333" 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/in-an-age-of-ai-is-static-typing-even-necessary/71280/31">Post #30</a>
	                </div>
	            </div>
              <div id="likers-container-367333" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="367333"
                     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 #30"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/71280/load_more?page=4">Load more posts (9 remaining)</a>
</div></template></turbo-stream>