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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="yurko" data-post="4" data-topic="2919">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/yurko/48/2369_2.png" class="avatar"> yurko:</div>
<blockquote>
<p>I’d say any non critical belief that something is good or bad is a bad thing</p>
</blockquote>
</aside>
<aside class="quote no-group" data-username="William Shakespeare">
<div class="title">
<div class="quote-controls"></div>
 William Shakespeare:</div>
<blockquote>
<p>there is nothing either good or bad, but thinking makes it so.<br>
-Hamlet: Act 2, Scene 2</p>
</blockquote>
</aside>
<p><img src="https://forum.elixirforum.com/images/emoji/apple/grinning.png?v=15" title=":grinning:" class="emoji only-emoji" alt=":grinning:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="19054" data-batch-url="/posts/batch_likers">
                        6
                      </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/otp-is-bad/2919/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-19054" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="19054"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-most-liked cat-most-liked" title="One of the top 3 liked posts in this thread!"></div>
  </section>
</div>
    <div class="postbit" id="19065" data-post-id="19065">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Nothing is perfect unless its perfect for the job ahead<br>
<a class="mention" href="/u/qqwy" rel="nofollow">@Qqwy</a> has the best analogy I have ever heard on the subject.</p>
<p>patterns aren`t generally bad. they are pointers to how to get a specific thing done. if something doesnt smell right using a pattern then no problem. We are programmers we of all people should be able to think for our selves as problem solving is 90% of our work.</p>
<p>There is **** that needs to be done and there are a number of ways to shovel it. Don`t be a tool and use the hammer ! And a shovel is good enough for small projects</p>
<p>ps : I am not saying the hammer is bad its awesome for dealing with nails in wooden planks, I<code>m just saying I</code>d prefer a shovel.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="19065" 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/otp-is-bad/2919/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-19065" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="19065"
                     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 #12"></div>
  </section>
</div>
    <div class="postbit" id="19202" data-post-id="19202">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mmport80" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mmport80/120/8995_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mmport80
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks for the enlightenment guys - lots of nice nuggets.</p>
<p>I reckon there’s a lot of scope for Elixir to use macros to simplify concepts or perhaps more importantly use them to enforce things that could otherwise trip people up.</p>
<p>There are quite a few Erlang OTP books on my bookshelf. Distributed computing is tough - but isn’t Elixir in the game of bringing OTP goodness to the masses? : )</p>
<p>I think diving into Lisp macros more and perhaps experimenting with those ideas in Elixir could be fruitful…</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="19202" 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/otp-is-bad/2919/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-19202" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="19202"
                     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 #13"></div>
  </section>
</div>
    <div class="postbit" id="19348" data-post-id="19348">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>This strongly reminds me of philosophy (because it is. Really!).  It’s common for someone to say “I had a thought about the way the Universe works, but then found out someone else already had that theory”.  I’ve done it.  Surely, everyone has?  With patterns and programming, someone with little skill may tackle a problem that they see with an idea that turns out to be a pattern.  They might not know this at the time, but there it is.  Then, at the other end of the scale, we have the philosopher, who is well read and educated in theories.  The pattern expert, who knows many patterns theorised by many computer scientists.</p>
<p>The point is, a pattern is just an idea that someone noted on paper for solving a given task.  The philosophical theory that suggests a reality.  Fact is, other people have probably had the same idea prior and further people will have the same idea without realising it was already a known thing.  However, it fits the requirement and it allows the process to continue, so it is used.</p>
<p>Ultimately, we should not wonder whether patterns are good or bad; only, do they solve the problem at hand?  If we know the pattern before hand or we devise the pattern for a new problem, it makes little difference, since any solution to any problem can be identified as a pattern, and is guaranteed that status if we tackle a future yet similar problem with the same approach.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="19348" 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/otp-is-bad/2919/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-19348" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="19348"
                     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 #14"></div>
  </section>
</div>
    <div class="postbit" id="19364" data-post-id="19364">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I don’t know if Joe Armstrong doesn’t use OTP or not. But his focus is most likely different than yours. He’s interested in language development and providing useful primitives to <em>build stuff like OTP</em>. You are, most likely, interested in building applications that use appropriate abstractions.</p>
<p>I remember back in the day, when I worked in early Rails or PHP projects, I inherited a e-commerce solution from other programmer. I was chosen because I speak Polish, and code comments were in Polish. What no one told me, was that the programmer did write whole e-commerce store in single PHP file, with no database (but files as storage) and there was no single function or object definition inside. It was large if-clause, wrapped in case, wrapped in if, and then used bunch of goto labels to redirect the flow.</p>
<p>I met the guy at some point, told him that his code is crazy and we needed to write it from scratch, because no one could get their heads around his “solution”. Why would you do something like that? - I asked. “It’s because I am really assembly programmer, and that’s what I do best, and I don’t really believe functions, objects or database have any significant value for me”.</p>
<p>So here you go. If you want to write code that will make you proud, take the bare bones and build your own abstractions on top of that, that suit your taste. If you want your code to be understood by other programmers - use the patterns and libraries that they are familiar with.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="19364" data-batch-url="/posts/batch_likers">
                        6
                      </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/otp-is-bad/2919/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-19364" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="19364"
                     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 #15"></div>
  </section>
</div>
    <div class="postbit" id="19392" data-post-id="19392">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Just to reiterate from above, as there are a lot of posts → use <a href="https://github.com/sasa1977/exactor" rel="noopener nofollow ugc">exactor</a>.</p>
<p>If you look at Sasa’s code you will notice a lot of macros just like “Lisp-world”.</p>
<p>If you are new to OTP and the syntax and conventions are a bit overwhelming this can really clean things up.  If you have used OTP enough, you may just dismiss this lib as OTP may then at that point feel simple to you.</p>
<p>Language / framework designers always have to decide on how to balance the needs of people starting out and people that are very well experienced.  Some of Sasa’s libraries fills some gaps.  The Core team is actively working on parts of this..</p>
<p>For example look at the <a href="https://github.com/elixir-lang/gen_stage/issues/10" rel="noopener nofollow ugc">proposal</a> around Experimental.DynamicSupervisor</p>
<pre><code>We have a couple goals by introducing a dynamic supervisor:

- Simplify the API and usage of both Supervisor modules. Most of the documentation     in the Supervisor module is full of conditionals: "if the supervisor type is :simple_one_for_one, it will behave as X, otheriwse as Y." The differences in behaviour with little surrounding context makes supervisors hard to learn, understand and use;
- Provide out-of-the-box supervisor sharding for cases where the supervisor itself may be a scalability concern;
- Provide a built-in registry to avoid developers unecessarily using dependencies like gproc or incorrect dependencies like global;
- Implement the GenStage specification so dynamic supervisors can subscribe to producers and spawn children dynamically based on demand;
</code></pre>
<p>While you are at it, take a look at the <a href="https://github.com/sasa1977/fsm" rel="noopener nofollow ugc">fsm</a> library as well.  Gave me a great option when I did not want to use <a href="http://erlang.org/doc/design_principles/fsm.html" rel="nofollow">gen_fsm</a> but instead being able to use an FSM w/o having to create a process.  Apparently there is a new module <a href="http://erlang.org/doc/design_principles/statem.html" rel="nofollow">gen_statem</a> as well.</p>
<p>Also <a href="https://github.com/sasa1977/con_cache" rel="noopener nofollow ugc">con_cache</a> is cool to though I haven’t had a chance to play with it.</p>
<p>Part of learning Elixir is learning the functional programming building blocks, map, reduce, filter, take, head, tail, and if you really want to “learn Elixir” to do fault-tolerant, distributed work learning the OTP building blocks and the new Elixir Experimental backend libs <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" loading="lazy" width="20" height="20"></p>
<p>So yes indeed, OTP is waay baad 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="19392" 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/otp-is-bad/2919/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-19392" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="19392"
                     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 #16"></div>
  </section>
</div>
    <div class="postbit" id="19635" data-post-id="19635">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="mmport80" data-post="1" data-topic="2919">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mmport80/48/8995_2.png" class="avatar"> mmport80:</div>
<blockquote>
<p>I read a blog post a while ago, by a Lisp guy, who said that programming patterns are bad, because they are used to patch language weaknesses.</p>
</blockquote>
</aside>
<p>I know most people on this forum are fairly nuanced towards OO programming, but I submit that encapsulation in the sense of combining data and methods was flat out a terrible design decision. Ironically, it created brittle and tightly coupled code. As experienced OO programmers repeatedly banged their head against the consequences of this, they created the famous Design Patterns for minimizing the harm of encapsulation: inversion of control, dependency injection, fascades etc., Most books on OO programming style seem geared towards getting this water back in the dam.</p>
<p>Design Patterns became the touchstone of good programming. “Oh you’re a programmer? Have you read Design Patterns?” But as functional programming grew more popular and the limitations of OO programming became more apparent, that started to reverse. Functional programmers began to sneer at patterns as lipstick on a pig. Now patterns are bad. See also: the lisp quote referenced at the start of the thread.</p>
<p>It’s ironic because SICP, which is how most LISP programmers learned their trade, is all about patterns. It’s most the pattern-centric book on programming I’ve ever seen. And if you are going to create objects, then GoF patterns are also really good. OO + GoF &gt;&gt; OO. Patterns are good.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="19635" 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/otp-is-bad/2919/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-19635" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="19635"
                     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 #17"></div>
  </section>
</div>
    <div class="postbit" id="19689" data-post-id="19689">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="JamboJustin" data-post="18" data-topic="2919">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/j/f07891/48.png" class="avatar"> JamboJustin:</div>
<blockquote>
<p>I submit that encapsulation in the sense of combining data and methods was flat out a terrible design decision.</p>
</blockquote>
</aside>
<p>Exactly that. Interestingly, it is not what encapsulation was meant to mean. Thank you, you enabled me to finally find a way to wirte my rant on RPC vs Message Passing in a way that make sense !</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="19689" 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/otp-is-bad/2919/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-19689" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="19689"
                     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 #18"></div>
  </section>
</div>
    <div class="postbit" id="19712" data-post-id="19712">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<blockquote>
<p>Patterns are good.</p>
</blockquote>
<p>Yes… where needed.  Not as a checklist (“oops, forgot to use Abstract Factory, now where can I shoehorn that in?”), not where inappropriate (“hey, let’s make each instance of this class its own Singleton!”), etc… but mainly to make up for deficiencies in the language.  Hence the confusion of, for instance, Java programmers migrating to Ruby:</p>
<ul>
<li>“So how do you do Dependency Injection?”</li>
<li>“You just… inject your dependencies.”</li>
<li>“Uh, right, but, ummm… what frameworks do you use for that?”</li>
<li>“Why would we need a <em>framework</em> to do something so trivial?”</li>
</ul>
<p>Or from any typical OO language to any typical FP language… finding so many of their classical patterns Just Don’t Apply.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="19712" 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/otp-is-bad/2919/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-19712" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="19712"
                     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 #19"></div>
  </section>
</div>
    <div class="postbit" id="19865" data-post-id="19865">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="mmport80" data-post="1" data-topic="2919">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mmport80/48/8995_2.png" class="avatar"> mmport80:</div>
<blockquote>
<p>I imagine, in Lisp-world, patterns are packaged into nice little macros and all is good in the world because Lisp is flexible like that.</p>
</blockquote>
</aside>
<p>Which IMHO led to a form of “not invented here syndrome”, with lots of different macros for various use cases, many of which only cover the author’s specific need and not the more general case.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="19865" 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/otp-is-bad/2919/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-19865" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="19865"
                     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 #20"></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/2919/load_more?page=3">Load more posts (3 remaining)</a>
</div></template></turbo-stream>