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


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="hfalzon" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/hfalzon/120/38272_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  hfalzon
                    <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>Yes <a href="http://exercism.io" rel="noopener nofollow ugc">exersim</a> is amazing! It is one of the reasons I can safely say… I love the language of elixir. It is just so refreshing to write. I think you are right in your prognosis it does feel a little more batteries included and having to work through “okay… why was this decision made”</p>
<p>I will step back with the book I have coming later this week and start more at a foundational level in terms of the project organisation.</p>
<p>Also I was being a b it a numpty it seems with auto complete…</p>
<p>I had recompiled everything but I didn’t realise I had yet to include my subfolder in the LSP so it had no clue about Bandit… sigh… haha.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370615" 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/how-to-get-to-grips-with-elixir-tooling-ides/71936/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-370615" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370615"
                     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 #11"></div>
  </section>
</div>
    <div class="postbit" id="370616" data-post-id="370616">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Phoenix was only the second web framework that I <em>really</em> learned in-depth (first was Python’s Django), and it took a few weeks before I felt like I really internalized the main parts.</p>
<p>That’s not to say that Phoenix was really that different at a fundamental level, just that I was so used to doing things the Django way that I had to really bend my brain to see things the Phoenix way. I bet it will take you less time since you probably had more experience, <em>and</em> in a variety of languages, <em>and</em> you’ve made your own frameworks.</p>
<p>For Elixir itself, I got it pretty quickly, but I was already forcing myself to program in a functional style (when possible, preferring pure functions) before I started learning Elixir.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370616" 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/how-to-get-to-grips-with-elixir-tooling-ides/71936/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-370616" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370616"
                     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="370617" data-post-id="370617">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="hfalzon" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/hfalzon/120/38272_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  hfalzon
                    <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">
								<aside class="quote no-group" data-username="arcanemachine" data-post="13" data-topic="71936">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/arcanemachine/48/29109_2.png" class="avatar"> arcanemachine:</div>
<blockquote>
<p>That’s not to say that Phoenix was really that different at a fundamental level, just that I was so used to doing things the Django way that I had to really bend my brain to see things the Phoenix way. I bet it will take you less time since you probably had more experience, <em>and</em> in a variety of languages, <em>and</em> you’ve made your own frameworks</p>
</blockquote>
</aside>
<p>That is so awesome! It is really cool to hear how people can just click with things… It has honestly been taking me a long time to click for me with regards to phoenix and using third party libs in elixir / structuring projects, I wouldn’t say I have more experience though.</p>
<p>I am not sure if I will end up going with phoenix to learn (At least for now, and explore just building things with req / bandit + some templating syntax</p>
<p>But I do appreciate both <a class="mention" href="/u/dogweather" rel="nofollow">@dogweather</a> and yourself <a class="mention" href="/u/arcanemachine" rel="nofollow">@arcanemachine</a> for just talking about your experiences, it is already helped me a ton just in this short time and I feel a little more sure moving forwards.</p>
<p>That is another part of this language that I am very drawn too: the community seems so diverse and open for the most part which is really welcoming.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370617" 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-to-get-to-grips-with-elixir-tooling-ides/71936/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-370617" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370617"
                     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="370625" data-post-id="370625">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>No worries. I kind of enjoy the frustration of learning a framework/language. The satisfaction when everything clicks together is always worth the struggle. <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<p>On the other hand, I hate screwing around with my config just to get the stupid LSP to work…</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370625" 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/how-to-get-to-grips-with-elixir-tooling-ides/71936/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-370625" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370625"
                     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="370639" data-post-id="370639">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Others seem to have helped with the tooling and easing into learning side of things. There is a lot to learn about the “how” and “why” for OTP, but I’ll try to answer your specific questions as best I can…</p>
<aside class="quote no-group" data-username="hfalzon" data-post="3" data-topic="71936">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/hfalzon/48/38272_2.png" class="avatar"> hfalzon:</div>
<blockquote>
<p>Where is <code>Application</code> coming from?</p>
<p>Where does <code>Supervisor</code> come from? (Standard lib, I know but just using it as an example)</p>
</blockquote>
</aside>
<p>Application and Supervisor are modules provided by Elixir’s standard library. Modules don’t need to be imported/required/aliased to reference them or call functions on them. They are available globally within a single namespace.</p>
<p>The <code>use Application</code> bit invokes a compile time macro. It’s a way to inject functions, implement behaviors, generate additional modules, and otherwise minimize boilerplate.</p>
<aside class="quote no-group" data-username="hfalzon" data-post="3" data-topic="71936">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/hfalzon/48/38272_2.png" class="avatar"> hfalzon:</div>
<blockquote>
<p>I am sure it might be really obvious to others… it just feels very “magical” and you do it because that is how you do it…</p>
</blockquote>
</aside>
<p>There are some hard rules about what is done at compile time vs runtime, and that guides most of where libraries instruct you to put things.</p>
<ul>
<li><code>config.exs/dev.exs</code> - compile time configuration must go here, e.g. config that’s used as module attributes (like constants)</li>
<li><code>runtime.exs</code> - dynamic configuration that’s read from the environment, e.g. the <code>PORT</code> environment variable for a http server</li>
<li><code>application.ex</code> - startup functionality and the supervision tree for your specific application. You can define runtime configuration in here if needed, but it’s not conventional</li>
</ul>
<p>Beyond that it comes down to convention, really. The only way to absorb the style and convention is by looking at more libraries and applications.</p>
<p>Starting with Plug to make a minimal server, ala go, is starting in hard mode compared to using the components provided by a full framework like phoenix. It’s great for learning, but will require you to dig deeper into OTP behaviours than is needed to start building applications.</p>
<p>I’d encourage you to get started with existing libraries to get a feel for how they’re configured and composed, then start building something minimal from OTP primitives once you have your footing.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370639" 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/how-to-get-to-grips-with-elixir-tooling-ides/71936/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-370639" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370639"
                     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="370643" data-post-id="370643">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="hfalzon" data-post="3" data-topic="71936">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/hfalzon/48/38272_2.png" class="avatar"> hfalzon:</div>
<blockquote>
<p>think my issue comes from the “magic” feeling that I am getting from everything and there being no discoverability of imports</p>
</blockquote>
</aside>
<p>That was  my <span class="hashtag-raw">#1</span> problem coming from Python where you know exactly whats available on the current scope. Still confuses me sometimes.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370643" 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/how-to-get-to-grips-with-elixir-tooling-ides/71936/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-370643" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370643"
                     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="370668" data-post-id="370668">
  <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">
								<p>I would take the time to really learn how the module system works as you’ll find it’s likely more sane than you think.  It’s not a huge topic but more than I can type out here, but the docs do a good job.</p>
<p>A few points that may be helpful (that expand on <a class="mention" href="/u/sorentwo" rel="nofollow">@sorentwo</a>’s answer):</p>
<p><code>import</code> doesn’t work like it does in many languages.  As touched on by <a class="mention" href="/u/sorentwo" rel="nofollow">@sorentwo</a>, you don’t have to import a module to use it, they are all always available.  <code>import</code> is for importing <em>functions</em> (and macros), and <em>only</em> functions (and macros), you cannot import variables or module attributes.</p>
<p>There is no way to magically affect what is available inside a <code>defmodule</code> <em>from the outside</em>.  The exception is that every module has an implicit <code>import Kernel</code> which contains such important functions/macros as <code>+</code> and <code>def</code>.  <em>This is hard coded into the compiler and there is no way to do this with any other module</em>.  If you see <em>just</em> the following:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule A do
  def foo do
    B.foo()
  end
end
</code></pre>
<p><code>B</code> is a top level module, full stop.  If it’s not in your project it’s either from a library or it’s builtin.</p>
<p>If you see this:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule B do
  def foo do
    foobar()
  end
end
</code></pre>
<p>…that’s a compilation error <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"> Without any <code>import</code>s or <code>use</code>s, there is no way to make a random function call like that work.</p>
<p>As you correctly identified, a wrench is thrown into things as soon as you see a <code>use</code>.  This means there are macros and therefore metaprogramming at play.  It is encouraged to always have a callout block in the documentation to describe what <code>use</code>ing your library will do, so usually you can look to the docs to know what’s up.</p>
<p>It’s very important to at least get comfortable with the ideas of macros because <strong>from a technical standpoint</strong> (not trying to be reductive here, BEAM friends), Elixir’s powerful and well-designed macro system is <em>the</em> thing it’s bringing to the table as a BEAM language.  There are other really good reasons to be here like the community, the syntax, and of course the libraries, but a lot of the best libraries and projects are so good because of macros.  I’m absolutely not trying to discourage you from getting to know Elixir better, but the cool thing is that if you decide it just isn’t for you, there are other great macro-free BEAM languages like Gleam and, of course, Erlang itself!  But I think it’s worth it to stick to Elixir <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" 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="370668" 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/how-to-get-to-grips-with-elixir-tooling-ides/71936/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-370668" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370668"
                     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="370669" data-post-id="370669">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Python <em>does</em> have a good culture around imports and enabling static analysis. But TBH I see the Elixir culture at about 90% of where Python’s at:</p>
<p><strong>Unlike Ruby</strong>, you <em>will</em> see the source of every artifact at the top of the module (.ex file).</p>
<p><strong>But unlike Python</strong>, the Elixir ecosystem makes frequent use of meta-programming and DSLs.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370669" 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/how-to-get-to-grips-with-elixir-tooling-ides/71936/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-370669" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370669"
                     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="370671" data-post-id="370671">
  <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">
								<p>LOL, you said what I said in 83 million fewer words.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370671" 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-to-get-to-grips-with-elixir-tooling-ides/71936/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-370671" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370671"
                     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="370682" data-post-id="370682">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="hfalzon" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/hfalzon/120/38272_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  hfalzon
                    <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>Right now I am finding Plug to be much easier to deal with than Phoenix. I tried phoenix a few months ago, and really couldn’t get it, so ended up just rolling my own in Go with Templ + my own CMS that uses flatfiles back to S3.</p>
<p>Plug with bandit is providing me with some of that feeling at the moment, however I can see what you mean.</p>
<p>The DSL nature of things can feel a little odd to me at the moment. But I will persist as I love the IDEA of the BEAM and the syntax in Elixir is a thing of Beauty.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370682" 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-to-get-to-grips-with-elixir-tooling-ides/71936/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-370682" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370682"
                     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/71936/load_more?page=3">Load more posts (15 remaining)</a>
</div></template></turbo-stream>