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


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="coen.bakker" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/coen.bakker/120/39732_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  coen.bakker
                    <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><a class="mention" href="/u/lostkobrakai" rel="nofollow">@LostKobrakai</a></p>
<p>Thanks for the book tip. I’ve been looking into application layering more because of it, and see how it is applicable to my original question and why it is important.</p>
<p>I also found this article to be valuable.</p>
<aside class="onebox allowlistedgeneric" data-onebox-src="https://aaronrenner.io/2019/09/18/application-layering-a-pattern-for-extensible-elixir-application-design.html">
  <header class="source">

      <a href="https://aaronrenner.io/2019/09/18/application-layering-a-pattern-for-extensible-elixir-application-design.html" target="_blank" rel="noopener nofollow ugc" title="12:00AM - 18 September 2019">Aaron Renner’s Blog – 18 Sep 19</a>
  </header>

  <article class="onebox-body">
    

<h3><a href="https://aaronrenner.io/2019/09/18/application-layering-a-pattern-for-extensible-elixir-application-design.html" target="_blank" rel="noopener nofollow ugc">Application Layering - A Pattern for Extensible Elixir Application Design</a></h3>

  <p>This paper covers building large, maintainable Elixir codebases using Hexagonal Architecture and the Layers pattern.</p>


  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>
 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="314054" 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/how-best-to-write-context-functions-for-more-complex-cases/60838/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-314054" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="314054"
                     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="314093" data-post-id="314093">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I would also recommend the pragmatic <a href="https://pragprog.com/titles/liveview/programming-phoenix-liveview/" rel="noopener nofollow ugc">LiveView book</a> (beta) and the <a href="https://pragprog.com/titles/jgotp/designing-elixir-systems-with-otp/" rel="noopener nofollow ugc">Designing Elixir Systems with OTP</a> and <a href="https://pragprog.com/titles/cdc-elixir/learn-functional-programming-with-elixir/" rel="noopener nofollow ugc">Learn functional programming with Elixir</a>.</p>
<p>Those books help to get the thinking right and you will also see the CRC pattern used repeatedly (Construct, Reduce, Convert) and concepts of the functional core “pipe land” and the boundary layer (“with” land).</p>
<p>I think these books provide some good fundamentals to be aware of which reply help with structuring things.</p>
<p>It’s always good to learn different ways of thinking and structuring the problem, especially for myself having been water boarded in the imperative style and object oriented programming mindset for almost 30 years, functional programming was the necessary step to cleaner, more testable and maintainable systems. When I get a banana it’s <em>just</em> a bannana, not a banana with the gorilla holding it and the jungle too.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="314093" 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/how-best-to-write-context-functions-for-more-complex-cases/60838/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-314093" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="314093"
                     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>