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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="brainlid" data-post="8" data-topic="38393">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/brainlid/48/20975_2.png" class="avatar"> brainlid:</div>
<blockquote>
<p>Thanks for the questions! We released an episode that wasn’t an interview, but instead a discussion around “the mental models we use for writing Elixir code” and a related topic of “the ways we think about and approach LiveView”. The goal was two things:</p>
<ol>
<li>Find a place where we could have community engagement.</li>
<li>Direct people to ElixirForum as a place where they could engage with the larger Elixir community.</li>
</ol>
</blockquote>
</aside>
<p>I haven’t had time to listen to the episode itself but from your description it doesn’t sound too dissimilar to what other podcasters are doing - where an episode is recorded and then a link to it is posted as an alert as well as in the hope it might spark a discussion. In that case our standard guidelines may be most appropriate, where you create a “ThinkingElixir Podcast” thread and then post links to each episode in that thread and include any points of discussion you want to raise <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"> (you can link to individual posts in the thread as you can get the URL for a post by clicking on the timestamp in the top right corner of each post).</p>
<p>If you’d like to involve forum members in a more collaborative way (as per my post above) then we could look at what other options might be worth exploring. 1 and 2 in my post in particular could work well - perhaps in a video format (that also works as audio-only). However it’s something that would need to be made clear in the first post of the thread, i.e. that posts made in the thread may be reproduced in a video or discussed in a podcast - but let us know if this is something you want to try as we can help with the details. Perhaps you could have a main thread, and then dedicated threads for big topics that warrant such a collaboration? Again, just let us know if this is something you want to explore.</p>
<p>If you have any other ideas let us know too! <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="207702" 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/thinkingelixir-discussion-mental-models-for-your-elixir-and-liveview-code/38393/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-207702" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="207702"
                     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="207703" data-post-id="207703">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks, my question was more along the lines of: Surface seems to solve the problem of creating small, granular components but you didn’t really acknowledge that - you seemed to imply that it just wasn’t “the LiveView way”, so is there some downside to using Surface in this way that I’m missing or is it perhaps that you just haven’t used Surface recently, or that you haven’t tried it on a “real” project?</p>
<p>I also noted that in your interview with Chris McCord, he expressed support for Surface and seemed to imply that he might adopt some of its approach into LiveView proper in the future.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="207703" 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/thinkingelixir-discussion-mental-models-for-your-elixir-and-liveview-code/38393/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-207703" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="207703"
                     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="207724" data-post-id="207724">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="brainlid" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/brainlid/120/20975_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  brainlid
                    <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, it did sound like Chris McCord liked the approaches being explored by Surface and they might get incorporated into LiveView. That’s super cool!</p>
<p>I have used Surface on a significant project. At the time, surface was <em>very</em> new. It was even pre-release. So after some time (a month or so), I switched it out for regular LiveView and components. Mainly the issues I had were around dependency conflicts. Surface would require master branch of LiveView and that would break things on our production app as it wasn’t fully ready.</p>
<p>I like Surface, but personally I don’t have a need for it at this time. A lot of my “small, granular components” are simple helper functions that render an <code>~E</code> block with a static component. I use TailwindCSS for styling so that’s handled there too. There aren’t that many actual “live” components, but when there are, that API works well enough.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="207724" 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/thinkingelixir-discussion-mental-models-for-your-elixir-and-liveview-code/38393/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-207724" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="207724"
                     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="207914" data-post-id="207914">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>For me, this is one of your most valuable episodes.  Prompted me to go back and listen to the Sasa Jurik interview.  Now my schemas are all organized within their own boundry - a flatter organization that I think will be easier to maintain over time.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="207914" 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/thinkingelixir-discussion-mental-models-for-your-elixir-and-liveview-code/38393/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-207914" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="207914"
                     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="209037" data-post-id="209037">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I finally had time to listen to the episode.</p>
<p>I really liked the workbench metaphor. I try to recapitulate as I understood it:</p>
<ul>
<li>a couple of workbenches each with a set of tools (<em>modules</em>)</li>
<li>on them binders with some sheets of paper (<em>functions</em>)</li>
<li>little pixies running from bench to bench (<em>processes</em>)</li>
<li>carrying blocks of wood (<em>data</em>)</li>
</ul>
<p>The pixie’s duty is to transform the block of wood into something useful, say she wants to create a shiny wooden ball. I think she needs some instructions how to do that.<br>
She gets those from a gremlin (<em>coordinator</em>) sitting on a shiny throne at the boundary of the workshop.</p>
<pre data-code-wrap="elixir"><code class="lang-elixir"># instructions for pixie 4711 issued by gremlin 0815
block_of_wood
|&gt; WoodturningBench.shape_to_ball
|&gt; WoodturningBench.polish
</code></pre>
<p>That’s easy, we can have thousands of pixies doing that in parallel (not really, but they are so fast, that it seems like it) and we can have the fairies of the QA division follow the same instructions. And we know, if they are happy with their result, we’ll be happy with what the pixies do in production.</p>
<p>So everything is good. Until the ogres at management decide, that revenue has to be increased. The orks at marketing have the solution: Lets sell not just shiny balls, but red shiny balls.</p>
<p>The gremlins add</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">...
|&gt; Paintshop.paint(:red)
</code></pre>
<p>to the instructions. Everything still works well and revenue increases as the customers are enthusiastic about the red shiny balls. But not for long. The paint peels of from the balls and customers are furious and demand refunds. So we need a quick solution. Its easy. We just have to add a primer.</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">...
|&gt; Paintshop.add_primer
|&gt; Paintshop.paint(:red)
</code></pre>
<p>But wait, the fairies at QA notice that the shininess has decreased. Someone reads the instructions of the primer. It has to dry for an hour! So now the pixies have to grow some gremlin ears: after they applied the primer they tell another gremlin to wake them after an hour, so that they then can apply the paint. First tests with this approach in <code>:dev</code> are promising, but the QA division is not happy. They are not allowed such long running jobs. The ogres decide to increase revenue even more by reorganizing (dissipate) QA. The product is perfect and shiny, no complaining fairies anymore, so they lived happily ever after with ever growing revenue … <strong>NOT</strong> (some fatal flaw creeped in and the whole workshop got bankrupt.)</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="209037" 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/thinkingelixir-discussion-mental-models-for-your-elixir-and-liveview-code/38393/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-209037" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="209037"
                     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>