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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="JEG2" data-post="20" data-topic="894">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jeg2/48/936_2.png" class="avatar"> JEG2:</div>
<blockquote>
<p>My current solution has a lot less processes than some are recommending here.  <img src="https://forum.elixirforum.com/images/emoji/apple/smile.png?v=15" title=":smile:" class="emoji" alt=":smile:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>I’d be interested in seeing what you wind up 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="5937" 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/thought-experiment-drawing-a-pond-simulation/894/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-5937" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="5937"
                     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="5947" data-post-id="5947">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="JEG2" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/JEG2/120/936_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  JEG2
                    <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 class="user-title">
									<span>Author of Designing Elixir Systems with OTP</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="gregvaughn" data-post="22" data-topic="894">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/gregvaughn/48/954_2.png" class="avatar"> gregvaughn:</div>
<blockquote>
<p>I’d be interested in seeing what you wind up with.</p>
</blockquote>
</aside>
<p>Of course, I am storing all experiments <a href="https://github.com/JEG2/simulations" rel="noopener nofollow ugc">here</a>.</p>
<p>The one we are discussing isn’t up there yet, because I need to push a library I extracted from it after I’m sure about the interface.  It’ll be up soon though and there are more experiments to come.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="5947" 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/thought-experiment-drawing-a-pond-simulation/894/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-5947" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="5947"
                     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="5963" data-post-id="5963">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group quote-modified" data-username="JEG2" data-post="21" data-topic="894" data-full="true">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jeg2/48/936_2.png" class="avatar"> JEG2:</div>
<blockquote>
<aside class="quote no-group" data-username="terakilobyte" data-post="19" data-topic="894">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/terakilobyte/48/1681_2.png" class="avatar"> terakilobyte:</div>
<blockquote>
<p>From the world process pulse an update call where each pad determines if the resident will move.</p>
</blockquote>
</aside>
<p>This is an interesting way to get “ticks” with the multi-process approach.</p>
</blockquote>
</aside>
<p>Hmm…</p>
<p>I wonder what the pros and cons between pulsing from the World process are, vs. using <code>Process.send_after</code> internally on each Lilypad.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="5963" 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/thought-experiment-drawing-a-pond-simulation/894/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-5963" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="5963"
                     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="5997" data-post-id="5997">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="JEG2" data-post="1" data-topic="894">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jeg2/48/936_2.png" class="avatar"> JEG2:</div>
<blockquote>
<p>Draw a 64 lily pads wide by 128 lily pads high pond with 3,000 turtles and 3,000 frogs distributed randomly across them.</p>
</blockquote>
</aside>
<p>There seem to be two independent aspects of “scale” here, the volume of the critter population and area of the living space. The effects of the “occupation” derives from both aspects. I personally am reluctant to assign any responsibility to the lily pads beyond serving as a reference to a location grid.</p>
<aside class="quote no-group" data-username="JEG2" data-post="1" data-topic="894">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jeg2/48/936_2.png" class="avatar"> JEG2:</div>
<blockquote>
<p>If the same type count is less than 30% of the total number of neighbors (up to eight), the critter will try to move to an open pad in a random direction, some random distance between one and five steps away.</p>
</blockquote>
</aside>
<p>This seems to give rise to the concept of a <em>critter neighborhood</em>. The <em>immediate neighborhood</em> (adjoining lily pads) influences the decision to depart. The critter’s travel range determines the area of the critter neighborhood so that it can decide where to depart to.</p>
<p>In essence a critter can know/manage it’s own perception of it’s neighborhood for it’s own purposes. While stationary it only needs to communicate with the other critters in it’s own neighborhood and it can do it all right up to the point where it wants to depart to another location that it selected.</p>
<h2><a name="p-5997-critter-process-1" class="anchor" href="#p-5997-critter-process-1" aria-label="Heading link" rel="nofollow"></a>Critter Process</h2>
<ul>
<li>The critter process receives a <em><strong>new location</strong></em> message (more on this below). The message also contains a list of the new resident critter neighbors (i.e. their process Ids). (1) The critter informs all of its old critter neighbors of its <strong><em>departure</em></strong>. (2) The critter informs all of its new neighbors of its <em><strong>arrival</strong></em> identifying its process id, species and location. (3) The new neighbors respond with a <em><strong>welcome</strong></em> message revealing their species (frog or turtle) and location.</li>
<li>Upon receiving a <em><strong>welcome</strong></em> message the critter process regenerates the list of neighbor critters (and immediate index) to include the resident critter.</li>
<li>Upon receiving an <em><strong>arrival</strong></em> message the critter process responds with a <strong>welcome</strong> message (process id, species, location) and regenerates the list of neighbor critters (and immediate index) to include the arrived critter.</li>
<li>Upon receiving a <strong><em>departure</em></strong> message the critter process regenerates the list of neighbor critters (and immediate index) without the departed critter.</li>
<li>When it’s <em>time-to-move</em> the critter process uses the list of neighbor critters to generate a list of empty locations in the neighborhood and picks one to move to. It dispatches a <em><strong>move</strong></em> message (process id, species, old location, new location) to the <em>critter registry process</em>.</li>
<li>??? (<em><strong>stop</strong></em> message - see below)</li>
</ul>
<h2><a name="p-5997-critter-registry-process-2" class="anchor" href="#p-5997-critter-registry-process-2" aria-label="Heading link" rel="nofollow"></a>Critter Registry Process</h2>
<ul>
<li>Upon receiving a <em><strong>move</strong></em> message the registry verifies that the new location is in fact empty. It may not be if just recently another critter from an overlapping neighborhood moved into that location first. If it turns out that the location is already occupied the registry responds with a <strong><em>stop</em></strong> message. By the time the requesting critter handles the <em>stop</em> message it will likely already have processed the <em>arrival</em> message of the newcomer. So the <em>stop</em> message should simply re-trigger the <em>time-to-move</em> logic to issue another <em>move</em> message.</li>
<li>If the <em><strong>move</strong></em> message refers to an empty location the registry process assembles a list of critter processes that are in the neighborhood range of the location and responds with with a <em><strong>new location</strong></em> message after clearing the critter’s old location and recording it in the new location.</li>
</ul>
<p>Clearly the <strong>Critter Registry Process</strong> is a <em>potential</em> bottleneck, depending on the size of the living area, size of the population and the frequency and volume of move requests which gives rise to a variation:</p>
<h2><a name="p-5997-critter-district-registry-process-3" class="anchor" href="#p-5997-critter-district-registry-process-3" aria-label="Heading link" rel="nofollow"></a>Critter District Registry Process</h2>
<ul>
<li>A district registry serves only part of the entire living area. Some simplifying assumptions: (1) each district covers the same size living area (2) a critter in the center of the district doesn’t have a neighborhood that extends beyond the limits of that district.</li>
<li>A location doesn’t just have coordinates but also a district which serves it. Essentially the critter only communicates with the district of the location it currently resides on, <em>even when it intends to move into an adjoining district</em>.</li>
<li>Multiple (adjoining) districts have to coordinate activities to satisfy move requests, (1) to assemble the list of resident critters for a specific location in one district while the neighborhood overlaps other adjoining districts and possibly (2) to hand off the moving critter from one district to the next. For example, with a square grid a location in the corner of the district has a neighborhood that overlaps four separate districts (at which point a hexagonal grid may be an improvement).</li>
</ul>
<p><a href="http://keekerdc.com/2011/03/hexagon-grids-coordinate-systems-and-distance-calculations/" rel="noopener nofollow ugc">Hexagon grids: coordinate systems and distance calculations</a><br>
<a href="http://www.redblobgames.com/grids/hexagons/" rel="noopener nofollow ugc">Hexagonal Grids</a></p>
<p>PS: Upon further consideration it is probably safer for the registry(ies) to issue leave/join messages (instead of the critter departure/arrival messages) as the registry has likely a more consistent view (in time) of the neighborhood(s). So really the critter is reduced to managing its neighborhood list based on received join/leave messages while stationary only for the purpose of generating a target location map when it comes time to move.</p>
<p>Given that message sequence isn’t deterministic, messages from the “old neighborhood” may arrive after a move just completed or messages from the “new neighborhood” could arrive before a requested move is complete (from the critter’s perspective) - so some safeguards are necessary to properly process late and early messages.</p>
<p>In terms of “drawing” the living area I think a separate (set of) process(es) is called for. For example the registry could in tandem with the new location message send a critter relocation event to an event queue. The drawing process fed by that queue is then responsible for managing the critter display information in such a way that (1) updating the location information is relatively fast and (2)  the collective display information is advantageously sequenced for easy consumption by the display device (updating the display two lily pads per event vs. generating the entire pond in one pass “per display cycle”).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="5997" 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/thought-experiment-drawing-a-pond-simulation/894/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-5997" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="5997"
                     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="6011" data-post-id="6011">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="JEG2" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/JEG2/120/936_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  JEG2
                    <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 class="user-title">
									<span>Author of Designing Elixir Systems with OTP</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="peerreynders" data-post="25" data-topic="894">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/peerreynders/48/5826_2.png" class="avatar"> peerreynders:</div>
<blockquote>
<p>Upon receiving a move message the registry verifies that the new location is in fact empty. It may not be if just recently another critter from an overlapping neighborhood moved into that location first. If it turns out that the location is already occupied the registry responds with a stop message. By the time the requesting critter handles the stop message it will likely already have processed the arrival message of the newcomer. So the stop message should simply re-trigger the time-to-move logic to issue another move message.</p>
</blockquote>
</aside>
<p>I worry a lot about the coordination aspect of this approach.  I personally believe that sometimes a bottleneck <strong>can</strong> be a good thing, because it can give you a single source of truth.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="6011" 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/thought-experiment-drawing-a-pond-simulation/894/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-6011" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="6011"
                     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="6045" data-post-id="6045">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="JEG2" data-post="26" data-topic="894">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jeg2/48/936_2.png" class="avatar"> JEG2:</div>
<blockquote>
<p>I worry a lot about the coordination aspect of this approach.</p>
</blockquote>
</aside>
<p>Not sure I follow - distribution of interacting activities requires coordination - unless we’re falling back onto an essentially single threaded approach.</p>
<p>And in terms of the experiment it can’t happen that - for example - two frogs jump towards the same lily pad and only one can stay?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="6045" 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/thought-experiment-drawing-a-pond-simulation/894/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-6045" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="6045"
                     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="6046" data-post-id="6046">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="JEG2" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/JEG2/120/936_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  JEG2
                    <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 class="user-title">
									<span>Author of Designing Elixir Systems with OTP</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="peerreynders" data-post="27" data-topic="894">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/peerreynders/48/5826_2.png" class="avatar"> peerreynders:</div>
<blockquote>
<p>And in terms of the experiment it can’t happen that - for example - two frogs jump towards the same lily pad and only one can stay?</p>
</blockquote>
</aside>
<p>One version of the simulation that I have seen allows them both to land, but makes critters sharing a pad seek to move.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="6046" 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/thought-experiment-drawing-a-pond-simulation/894/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-6046" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="6046"
                     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="6262" data-post-id="6262">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="JEG2" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/JEG2/120/936_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  JEG2
                    <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 class="user-title">
									<span>Author of Designing Elixir Systems with OTP</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a href="https://github.com/JEG2/simulations/tree/master/turtles_and_frogs" rel="noopener nofollow ugc">My code</a> is now online.  I could simplify the <code>Pond</code> datastructure quite a bit now though, due to changes I’ve made in interprocess communication.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="6262" 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/thought-experiment-drawing-a-pond-simulation/894/29">Post #28</a>
	                </div>
	            </div>
              <div id="likers-container-6262" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="6262"
                     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>