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


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jswny" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jswny/120/18428_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jswny
                    <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 totally agree with you. The code I ended up with after some refactoring looks similar to yours, although I handle all of the error messages in the <code>handle_</code> functions instead of defining them all in one place. I’m not sure if I’m entirely content with my code so far but the suggestions in this thread have helped me simplify and refactor a lot and I’m certainly happier with my code than I was before. Here it is for reference:</p>
<pre><code>def insert(database, table, row) do
  get_path(database, table)
  |&gt; File.read()
  |&gt; handle_file_read(database, table, row)
end

defp get_path(database, table) do
  Path.join([Application.get_env(:simplexdb, :root_dir), database, table &lt;&gt; ".json"])
end

defp handle_file_read({:ok, content}, database, table, row) do
  Logger.info "Successfully opened file for table #{table} in database #{database}!"
  handle_decode(Poison.decode(content), database, table, row)
end
defp handle_file_read({:error, reason}, database, table, _row) do
  Logger.error "Could not open file for table #{table} in database #{database} because of #{reason}!"
  raise "File read error!"
end

defp handle_decode({:ok, content}, database, table, row) do
  Logger.info "Successfully decoded JSON file for table #{table} in database #{database}!"
  verify_key(content, database, table, row)
end
defp handle_decode({:error, {:invalid, reason}}, database, table, _row) do
  Logger.error "Could not decode JSON in file for table #{table} in database #{database} because #{reason}!"
  raise "Invalid JSON error!"
end
defp handle_decode({:error, :invalid}, database, table, row), do: handle_decode({:error, "it was invalid"}, database, table, row)

defp verify_key(content, database, table, row) do
  if Map.has_key?(content, "rows") &amp;&amp; is_list(content["rows"]) do
    handle_encode(content, database, table, Poison.encode(row))
  else
    Logger.error "Invalid data key in JSON for #{table} in database #{database}!"
    raise "Invalid JSON error!"
  end
end

defp handle_encode(content, database, table, {:ok, row_content}) do
  Logger.info "Successfully encoded row table #{table} in database #{database}!"
  insert_data(content, database, table, row_content)
end
defp handle_encode(_content, database, table, {:error, reason}) do
  Logger.error "Could not encode JSON in file for table #{table} in database #{database} because of #{reason}!"
  raise "Invalid JSON error!"
end

defp insert_data(content, database, table, row_content) do
  final_content = content
    |&gt; Map.update!("rows", fn rows -&gt; rows ++ [row_content] end)
    |&gt; Poison.encode!()

  get_path(database, table)
  |&gt; File.write(final_content)
  |&gt; handle_file_write(database, table)
end

defp handle_file_write(:ok, database, table) do
  Logger.info "Successfully inserted new row in table #{table} in database #{database}!"
  table
end
defp handle_file_write({:error, reason}, database, table) do
  Logger.error "Could not write to file for table #{table} in database #{database} because of #{reason}!"
  raise "File write error!"
end
</code></pre>
<p>The idea here was to get relatively granular error messages for the end user which would allow users to easily decipher what is wrong and fix it themselves.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="43014" 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/advice-on-how-to-avoid-go-like-error-handling-patterns-in-elixir/7145/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-43014" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="43014"
                     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="44090" data-post-id="44090">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I don’t understand why “with” was not given as the standard, end all, be all answer.  It’s really good, and not many languages have a such a convenience.  You are hurting yourself by not using it all the time!</p>
<p>Rust is about the only language I know of with such a convenience.  Haskell has something similar, but it is not half as user friendly as it is in elixir.  Untested code:</p>
<pre><code>defmodule Foo do
  def insert(file, data) do

    with {:ok, content} &lt;- File.read(file) |&gt; (fn {:ok, res} -&gt; {:ok, res}; e -&gt; {:file_read_error, e} end).(),
         {:ok, decoded_content} &lt;- Poison.decode(content) |&gt; (fn {:ok, res} -&gt; {:ok, res}; e -&gt; {:decode_error, e} end).(),
         {:ok, encoded_data} &lt;- Poison.encode(data) |&gt; (fn {:ok, res} -&gt; {:ok, res}; e -&gt; {:encode_error, e} end).(),
         final_data &lt;- Map.update(decoded_content, "data", encoded_data),
         {:ok, decoded_final_data} &lt;- Poison.encode(final_data) |&gt; (fn {:ok, res} -&gt; {:ok, res}; e -&gt; {:final_encode_error, e} end).(),
         :ok &lt;- File.write(file, decoded_final_data) |&gt; (fn :ok -&gt; :ok; e -&gt; {:file_write_error, e} end).()

    do :ok
    else
      {:file_read_error, _e} -&gt; IO.puts("Failed to read file"); :fail
      {:decode_error, _e} -&gt; IO.puts("Failed to decode data"); :fail
      # ... etc. ...
      e -&gt; IO.puts("Unknown error"); IO.inspect(e); :fail
    end
  end
end
</code></pre>
<p>And if you define a to_error function this becomes very, very concise:</p>
<pre><code>defmodule Foo do

  def to_error({:ok, res}, _err) do {:ok, res} end
  def to_error(:ok, _err) do :ok end
  def to_error(res, err) do {err, res} end

  def insert(file, data) do

    with {:ok, content} &lt;- File.read(file) |&gt; to_error(:file_read_error),
         {:ok, decoded_content} &lt;- Poison.decode(content) |&gt; to_error(:decode_error),
         {:ok, encoded_data} &lt;- Poison.encode(data) |&gt; to_error(:encode_error),
         final_data &lt;- Map.update(decoded_content, "data", encoded_data),
         {:ok, decoded_final_data} &lt;- Poison.encode(final_data) |&gt; to_error(:final_encode_error),
         :ok &lt;- File.write(file, decoded_final_data) |&gt; to_error(:file_write_error)

    do :ok
    else
      {:file_read_error, _e} -&gt; IO.puts("Failed to read file"); :fail
      {:decode_error, _e} -&gt; IO.puts("Failed to decode data"); :fail
      # ... etc. ...
      e -&gt; IO.puts("Unknown error"); IO.inspect(e); :fail
    end
  end
end
</code></pre>
<p>If there is a good argument against “with”, I’d love to hear it.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="44090" 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/advice-on-how-to-avoid-go-like-error-handling-patterns-in-elixir/7145/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-44090" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="44090"
                     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="44127" data-post-id="44127">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="mindreader" data-post="13" data-topic="7145">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mindreader/48/19278_2.png" class="avatar"> mindreader:</div>
<blockquote>
<p>If there is a good argument against “with”, I’d love to hear it.</p>
</blockquote>
</aside>
<p>What I hate are the commas, I’d prefer this syntax for your last example:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">with do
  {:ok, content} &lt;- File.read(file) |&gt; to_error(:file_read_error)
  {:ok, decoded_content} &lt;- Poison.decode(content) |&gt; to_error(:decode_error)
  {:ok, encoded_data} &lt;- Poison.encode(data) |&gt; to_error(:encode_error)
  final_data = Map.update(decoded_content, "data", encoded_data)
  {:ok, decoded_final_data} &lt;- Poison.encode(final_data) |&gt; to_error(:final_encode_error)
  :ok &lt;- File.write(file, decoded_final_data) |&gt; to_error(:file_write_error)
  :ok
else
  {:file_read_error, _e} -&gt; IO.puts("Failed to read file"); :fail
  {:decode_error, _e} -&gt; IO.puts("Failed to decode data"); :fail
  # ... etc. ...
  e -&gt; IO.puts("Unknown error"); IO.inspect(e); :fail
end
</code></pre>
<p>And it is entirely doable with a macro as-it-is-right-now, which also confuses me why <code>with</code> is a special form at all.  There are libraries that do this style for note.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="44127" 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/advice-on-how-to-avoid-go-like-error-handling-patterns-in-elixir/7145/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-44127" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="44127"
                     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="44316" data-post-id="44316">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I am using Railway Programming pattern to better handle error handling. This is a great source that explains the concept: <a href="http://www.zohaib.me/railway-programming-pattern-in-elixir/" class="inline-onebox" rel="noopener nofollow ugc">Railway Oriented Programming in Elixir</a></p>
<p>To implement it, I forked the OK library (<a href="https://github.com/CrowdHailer/OK" class="inline-onebox" rel="noopener nofollow ugc">GitHub - CrowdHailer/OK: Elegant error/exception handling in Elixir, with result monads. · GitHub</a>) to include the macros described on the article (map, tee, try_catch) and some others for added quality of life: <strong>found</strong> to handle functions that can return a resource or nil (I convert those to <code>{:ok, resource}</code> or <code>{:error, :not_found}</code> and <strong>tag_error</strong> to convert errors in the format <code>{:error, reason}</code> to <code>{:error, {:tag1, :tag2, reason}}</code> (<code>:tag1</code> and <code>:tag2</code> are arguments for the tag_error macro).</p>
<p>Using this approach, my code looks like this:</p>
<blockquote>
<p>def update_job_offer(%JobOffer{} = job_offer, %{} = job_offer_params) do<br>
job_offer<br>
|&gt;     (try_catch JobOffer.changeset(job_offer_params, :update))<br>
~&gt;&gt; (tag_error Repo.update, :changeset, :job_offer)<br>
~&gt;&gt; Search.execute<br>
~&gt;&gt; update_job_offer_candidates_search_list()<br>
~&gt;&gt; JobOffer.add_filtered_candidates<br>
~&gt;&gt; JobOffer.add_aggregates_count<br>
end</p>
</blockquote>
<p>and after the last call, you can use a case do to handle all possible outcomes of each function call.</p>
<p>By using this approach, the functions don’t need to handle failures from previous calls, so you just handle the happy path (for input arguments).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="44316" 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/advice-on-how-to-avoid-go-like-error-handling-patterns-in-elixir/7145/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-44316" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="44316"
                     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="44424" data-post-id="44424">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jswny" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jswny/120/18428_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jswny
                    <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>You make a great case. To be honest, I haven’t read much about the <code>with</code> statement throughout my journey learning Elixir nor have I seen it used very frequently. For this reason, I don’t believe I was as aware of it as I should have been. However, it seems like the exact construct I need. In fact, I found <a href="https://elixir-lang.org/getting-started/mix-otp/docs-tests-and-with.html" rel="nofollow">this link</a> in the getting started guide about using <code>with</code> to refactor exactly this kind of scenario. Cheers for the advice!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="44424" 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/advice-on-how-to-avoid-go-like-error-handling-patterns-in-elixir/7145/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-44424" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="44424"
                     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="44425" data-post-id="44425">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jswny" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jswny/120/18428_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jswny
                    <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>This looks <strong>way</strong> more clean than the regular <code>with</code> construct. I am relatively new to the language so I don’t know too much about the syntax but I can understand why the normal version is there because it is consistent with <code>if</code> and <code>case</code> and things like that. However, using a huge block of code like this in the same way that you use a small expression in an <code>if</code> statement is just not very nice. Thanks for you input!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="44425" 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/advice-on-how-to-avoid-go-like-error-handling-patterns-in-elixir/7145/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-44425" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="44425"
                     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="44452" data-post-id="44452">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Crowdhailer" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Crowdhailer/120/2438_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Crowdhailer
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Raxx</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group quote-modified" data-username="OvermindDL1" data-post="14" data-topic="7145">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>{:ok, content} &lt;- File.read(file) |&gt; to_error(:file_read_error),</p>
</blockquote>
</aside>
<p>Just checking, but your example seams to be full of commas. I think they should be removed?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="44452" 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/advice-on-how-to-avoid-go-like-error-handling-patterns-in-elixir/7145/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-44452" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="44452"
                     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="44460" data-post-id="44460">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="Crowdhailer" data-post="18" data-topic="7145">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/crowdhailer/48/2438_2.png" class="avatar"> Crowdhailer:</div>
<blockquote>
<p>Just checking, but your example seams to be full of commas. I think they should be removed?</p>
</blockquote>
</aside>
<p>Indeed, fixed!  ^.^</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="44460" 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/advice-on-how-to-avoid-go-like-error-handling-patterns-in-elixir/7145/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-44460" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="44460"
                     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>