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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I didn’t want to bring this up while you were still trying to get things working, but now that you have: are any of the fields that you are sorting on structs? If so, I would recommend looking at: <a href="https://hexdocs.pm/elixir/Enum.html#sort/2-sorting-structs" class="inline-onebox" rel="noopener nofollow ugc">Enum — Elixir v1.20.2</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="354531" 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/sorting-problem-phoenix-liveview-juggles-pub-sub-and-render-medium-difficulty/69031/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-354531" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="354531"
                     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="354532" data-post-id="354532">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="wktdev" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/wktdev/120/17649_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  wktdev
                    <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>I’ll set your reply as the answer but this is extremely confusing to me. This doesn’t feel like conventional web development. The only reason I had any use for handle_info was to set up the pub sub configuration where I kluged together tutorial content until it worked and then retroactively wrote my own write up to give me at least some kind of understanding as to what is happening. I flat out don’t understand the thought process behind most Elixer/Phoenix development beyond what I can reference from the JS world.<br>
I keep wanting to grab some data and just stick it on another piece of data but then I need to go through all these hidden orthogonal passage ways to do what I want to do.</p>
<p>I understand socket.assigns as a tool to store state on but never thought I would need to use “handle_info” to make this 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="354532" 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/sorting-problem-phoenix-liveview-juggles-pub-sub-and-render-medium-difficulty/69031/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-354532" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="354532"
                     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="354539" data-post-id="354539">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>With many of the standard library server behaviours, like GenServer, <code>handle_info/2</code> is the callback used for handling generic messages sent to the process, and LiveView is built upon GenServer. While the <code>Phoenix.LiveView</code> behaviour defines additional callbacks (<code>handle_event/3</code>, <code>handle_params/3</code>, <code>mount/3</code>, etc.), it also includes some of the <code>GenServer</code> behaviour callbacks as well (<code>handle_call/3</code>, <code>terminate/2</code>, etc.).</p>
<p>So, if anything sends your LiveView process a generic message then the way that you can respond to that message is by defining <code>handle_info/2</code>; what’s sending the LiveView process that message could be itself (<code>send(self(), :foo)</code>), or some other process.</p>
<p>I don’t know what you are using for pub sub, I’m assuming Phoenix.PubSub but I’m not certain. With Phoenix.PubSub, the publishing side broadcasts a message <code>Phoenix.PubSub.broadcast(MyPubSub, "foo", :message)</code>, any process can subscribe to that topic <code>Phoenix.PubSub.subscribe(MyPubSub, "foo")</code>. In this example, if a process was subscribed to that topic before the broadcast then in its mailbox will be a message of <code>:message</code>, the way for a <code>Phoenix.LiveView</code> process to handle that message would be to implement something like: <code>def handle_info(:message, socket), do: {:noreply, socket}</code>.</p>
<p>I’m always shocked by how <em>little</em> code I need to write in order to have my LiveViews live update in response to data changing elsewhere in the application.</p>
<p>Assuming I have business/context/domain code (whatever you want to call it) like this:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">def update_testbed(testbed, params) do
  testbed
  |&gt; change_testbed(params)
  |&gt; Repo.update()
end
</code></pre>
<p>And a LiveView along the lines of:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">def mount(%{"id" =&gt; id}, _, socket) do
  {:ok, assign(socket, :testbed, Testbeds.get_testbed!(id))}
end
</code></pre>
<p>Then in order to have the LiveView update itself whenever that testbed is changed, this is the gist of what I’d change:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir"> def update_testbed(testbed, params) do
   testbed
   |&gt; change_testbed(params)
   |&gt; Repo.update()
+  |&gt; case do
+    {:ok, testbed} -&gt;
+      Phoenix.PubSub.broadcast(MyPubSub, "testbeds:#{testbed.id}", {:testbed_updated, testbed})
+      {:ok, testbed}
+
+    other -&gt;
+      other
+   end
 end
</code></pre>
<pre data-code-wrap="elixir"><code class="lang-elixir"> def mount(%{"id" =&gt; id}, _, socket) do
+  if connected?(socket), do:  Phoenix.PubSub.subscribe(MyPubSub, "testbeds:#{id}")
   {:ok, assign(socket, :testbed, Testbeds.get_testbed!(id))}
 end
</code></pre>
<pre data-code-wrap="elixir"><code class="lang-elixir">+def handle_info({:testbed_updated, testbed}, socket) do
+  {:noreply, assign(socket, :testbed, testbed)}
+end
</code></pre>
<p>I think it’s pretty incredible to be able to do that with ~12 lines of code, I would be interested in knowing about any framework/language that makes such a thing easier.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="354539" 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/sorting-problem-phoenix-liveview-juggles-pub-sub-and-render-medium-difficulty/69031/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-354539" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="354539"
                     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="354547" data-post-id="354547">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="wktdev" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/wktdev/120/17649_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  wktdev
                    <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>When a liveview app starts how is its state established (or invoked ) relative to other parts of the app? I’m online looking for answers but I might as well ask while I’m here.</p>
<p>I am asking because the code you helped me with does not start up with a default order. It only establishes order after the  sort_field:  property is manually updated by a user event. Setting  :name to it, it will not be sorted on first render</p>
<p>sort_field: :name,</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="354547" 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/sorting-problem-phoenix-liveview-juggles-pub-sub-and-render-medium-difficulty/69031/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-354547" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="354547"
                     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="354548" data-post-id="354548">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<pre data-code-wrap="elixir"><code class="lang-elixir">  def mount(_params, _session, socket) do
    TestBeds.subscribe()
    Alerts.subscribe()

    sort_direction = :asc
    sort_field = :name

    testbeds = 
      TestBeds.list_testbeds()
      |&gt; Enum.sort_by(fn item -&gt; Map.get(item, sort_field) end, sort_direction)

    {:ok,
     assign(socket,
       testbeds: testbeds,
       sort_direction: sort_direction,
       sort_field: sort_field,
       alerts: Alerts.list_alerts(),
       developer: "None",
       name_warning: ""
     )}
  end
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="354548" 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/sorting-problem-phoenix-liveview-juggles-pub-sub-and-render-medium-difficulty/69031/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-354548" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="354548"
                     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="354549" data-post-id="354549">
  <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">
								<p>If you’re going to update the list in several places, you can define a function to avoid repeating yourself.</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defp update_testbeds(socket) do
  %{sort_field: sort_field, sort_direction: sort_direction} = socket.assigns
  testbeds =
    TestBeds.list_testbeds()
    |&gt; Enum.sort_by(&amp;Map.get(&amp;1, sort_field), sort_direction)

  assign(socket, :testbeds, testbeds)
end
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="354549" 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/sorting-problem-phoenix-liveview-juggles-pub-sub-and-render-medium-difficulty/69031/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-354549" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="354549"
                     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="354550" data-post-id="354550">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="wktdev" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/wktdev/120/17649_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  wktdev
                    <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>I guess I was confused thinking some how <strong>handle_info</strong> had an affect on the initial state.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="354550" 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/sorting-problem-phoenix-liveview-juggles-pub-sub-and-render-medium-difficulty/69031/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-354550" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="354550"
                     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="354551" data-post-id="354551">
  <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">
								<p>The whole LiveView is a state machine on the <code>socket</code>. Callbacks (<code>mount</code>, <code>handle_event</code>, <code>handle_info</code>) take in the <code>socket</code> and return an updated <code>socket</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="354551" 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/sorting-problem-phoenix-liveview-juggles-pub-sub-and-render-medium-difficulty/69031/29">Post #28</a>
	                </div>
	            </div>
              <div id="likers-container-354551" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="354551"
                     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="354553" data-post-id="354553">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>The callbacks that are run at the start of a LiveView are, in order: <code>mount/3</code>, <code>handle_params/3</code>, and <code>render/1</code>. And, that sequence is executed twice: first for the static (“dead”) render, and then for the “connected” render (once the websocket is connected).</p>
<p>The rest of the callbacks are executed in response to other things happening: <code>handle_event/3</code> for an event sent from the client, <code>handle_params/3</code> because of something like <code>push_patch/2</code>, <code>handle_info/2</code> for a generic message being sent to the process, and there are others… If the socket.assigns are updated in any of these callbacks then <code>render/1</code> will be run again.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="354553" 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/sorting-problem-phoenix-liveview-juggles-pub-sub-and-render-medium-difficulty/69031/30">Post #29</a>
	                </div>
	            </div>
              <div id="likers-container-354553" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="354553"
                     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="354641" data-post-id="354641">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="wktdev" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/wktdev/120/17649_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  wktdev
                    <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">
								<blockquote>
<p>With many of the standard library server behaviours, like GenServer, <code>handle_info/2</code> is the callback used for handling generic messages sent to the process, and LiveView is built upon GenServer. While the <code>Phoenix.LiveView</code> behaviour defines additional callbacks (<code>handle_event/3</code> , <code>handle_params/3</code> , <code>mount/3</code> , etc.), it also includes some of the <code>GenServer</code> behaviour callbacks as well (<code>handle_call/3</code> , <code>terminate/2</code> , etc.).</p>
</blockquote>
<p>I am not an Erlang developer so my point of reference is building web apps. Most of everything you said is foreign to the tactile process of web app development.</p>
<p>Phoenix provides a lot of goodies to help you get started quickly and I find myself tolerating it because of this. I am confident that if I was cobbling together this little search feature in react I would have had it done quickly. I’ve been working on this off and on for a week and the thought process still doesn’t make complete sense to me. I’m not productive and I feel stupid.</p>
<p>Regarding your Pub Sub comments.<br>
Wiring up Socket IO to a JS app just seems more clear and the getting started tutorial is easy to read.</p>
<p>If you do a search for <a href="http://socket.io" rel="noopener nofollow ugc">socket.io</a> they have a clear tutorial here:<br>
<a href="https://socket.io/docs/v4/tutorial/introduction" class="inline-onebox" rel="noopener nofollow ugc">Tutorial - Introduction | Socket.IO</a></p>
<p>If you do a search for pub sub in phoenix you get this:</p><aside class="onebox allowlistedgeneric" data-onebox-src="https://phoenix-pubsub.hexdocs.pm/Phoenix.PubSub.html">
  <header class="source">

      <a href="https://phoenix-pubsub.hexdocs.pm/Phoenix.PubSub.html" target="_blank" rel="noopener nofollow ugc">phoenix-pubsub.hexdocs.pm</a>
  </header>

  <article class="onebox-body">
    

<h3><a href="https://phoenix-pubsub.hexdocs.pm/Phoenix.PubSub.html" target="_blank" rel="noopener nofollow ugc">Phoenix.PubSub — Phoenix.PubSub v2.2.0</a></h3>



  </article>

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

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

<p>As a web app developer, this Phoenix “instruction” doesn’t offer any tactile explanation to get me up and running. It feels like an Erlang developer wrote it for other Erlang developers.</p>
<p>I look at Phoenix and Elixir as a hobby. It is probably the superior most wonderful tool for all things web, but it really doesn’t matter if you need to machete through a jungle of jargon and weird orthogonal network concepts to do simple web things.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="354641" 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/sorting-problem-phoenix-liveview-juggles-pub-sub-and-render-medium-difficulty/69031/31">Post #30</a>
	                </div>
	            </div>
              <div id="likers-container-354641" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="354641"
                     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/69031/load_more?page=4">Load more posts (1 remaining)</a>
</div></template></turbo-stream>