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


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="PJUllrich" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/PJUllrich/120/15944_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  PJUllrich
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Author of Building Table Views with Phoenix LiveView</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks <a class="mention" href="/u/dom" rel="nofollow">@dom</a> for the clarification! You’re right, it’s not a dictionary attack that a salt is protecting against, at least not in this case. I don’t fully understand the impact of reusing salts as described in the article that you linked, but I agree that it isn’t dictionary attacks, so I’ll update that part of the article <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<p>Ah interesting! I didn’t know about this function. I have no experience using it though. What is the AAD that it references? It is another kind of salt maybe?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="291467" 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/elixir-blog-posts/150/943">Post #942</a>
	                </div>
	            </div>
              <div id="likers-container-291467" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="291467"
                     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 #942"></div>
  </section>
</div>
    <div class="postbit" id="291656" data-post-id="291656">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hello ! My toy elixir-hosted elixir-looking language has reached evaluation via AST walking. Nothing too fancy, and I already spotted a lot of design errors, but I find a lot of joy in building this small interpreter from scratch. It also allows me to switch context when I block on something else. The code is quite basic and does not feature any optimizations, so maybe this, or the process, will be interesting to some.</p>
<p>Here is a link : <a href="https://lucassifoni.info/blog/small-lang-elixir-5/" rel="noopener nofollow ugc">Hosting a small language in elixir, pt 5 - evaluation</a></p>
<p>The next step for me will be working on the visual editor. Even if the only use of this language is for a side-project private app I’m building for fun, I really want to try to get to a fun visual&lt;-&gt;text editing parity.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="291656" 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/elixir-blog-posts/150/944">Post #943</a>
	                </div>
	            </div>
              <div id="likers-container-291656" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="291656"
                     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 #943"></div>
  </section>
</div>
    <div class="postbit" id="291800" data-post-id="291800">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>AAD is “additional authenticated data”, it’s data that’s not part of the encrypted payload, but still gets validated. You have to pass the same value when encrypting and decrypting otherwise the decryption fails. It prevents tampering where an attacker doesn’t modify the encrypted payload itself, but rather copy-pastes it in a different context.</p>
<p>A good AAD here could be the file ID. This way if an attacker swaps the contents of two files A and B in S3, the app will try to decrypt the contents of A with B’s ID as AAD or vice versa, and that will fail even if they were encrypted with the same key.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="291800" 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/elixir-blog-posts/150/945">Post #944</a>
	                </div>
	            </div>
              <div id="likers-container-291800" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="291800"
                     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 #944"></div>
  </section>
</div>
    <div class="postbit" id="291812" data-post-id="291812">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="PJUllrich" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/PJUllrich/120/15944_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  PJUllrich
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Author of Building Table Views with Phoenix LiveView</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><strong>Kill your  Phoenix Context</strong></p>
<p>Phoenix Contexts often become a dumping ground for code that doesn’t have an obvious place. Learn how to organize your code using services, queries, and repositories.</p>
<p><a href="https://www.peterullrich.com/phoenix-contexts" class="onebox" target="_blank" rel="noopener nofollow ugc">https://www.peterullrich.com/phoenix-contexts</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="291812" data-batch-url="/posts/batch_likers">
                        8
                      </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/elixir-blog-posts/150/946">Post #945</a>
	                </div>
	            </div>
              <div id="likers-container-291812" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="291812"
                     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 #945"></div>
  </section>
</div>
    <div class="postbit" id="293381" data-post-id="293381">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>In this blog post, I used Livebook to analyse my house’s consumption and production of electricity. There are some interesting plots powered by mostly sunny days in the last 3 months. Hope you enjoy it!</p>
<aside class="onebox allowlistedgeneric" data-onebox-src="https://zediogoviana.github.io/posts/analysing-electricity-consumption-with-livebook/">
  <header class="source">
      <img src="https://zediogoviana.github.io/img/duck.ico" class="site-icon" alt="" width="256" height="256">

      <a href="https://zediogoviana.github.io/posts/analysing-electricity-consumption-with-livebook/" target="_blank" rel="noopener nofollow ugc" title="12:00AM - 01 July 2023">zediogoviana – 1 Jul 23</a>
  </header>

  <article class="onebox-body">
    <div class="aspect-image" style="--aspect-ratio:690/360;"><img src="https://zediogoviana.github.io/img/electricity-analysis-cover.jpg" class="thumbnail" alt="" width="690" height="460"></div>

<h3><a href="https://zediogoviana.github.io/posts/analysing-electricity-consumption-with-livebook/" target="_blank" rel="noopener nofollow ugc">Analysing Electricity Consumption with Livebook</a></h3>

  <p>As the title implies, I wanted to analyse and discover patterns in my house's electricity consumption. Which days consumed the most electricity, and what hours do we have peak consumption? On the other side, we also have some photovoltaic panels that...</p>


  </article>

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

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

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="293381" 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/elixir-blog-posts/150/947">Post #946</a>
	                </div>
	            </div>
              <div id="likers-container-293381" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="293381"
                     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 #946"></div>
  </section>
</div>
    <div class="postbit" id="293510" data-post-id="293510">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>New Blog Post: Inspecting Elixir Dependencies at Runtime for Security. Doing this is a pretty simple one-liner, but knowing how to do it correctly is extremely important.</p>
<aside class="onebox allowlistedgeneric" data-onebox-src="https://paraxial.io/blog/app-audit">
  <header class="source">
      <img src="https://paraxial.io/images/parax_fav.ico" class="site-icon" alt="" width="32" height="32">

      <a href="https://paraxial.io/blog/app-audit" target="_blank" rel="noopener nofollow ugc">paraxial.io</a>
  </header>

  <article class="onebox-body">
    <div class="aspect-image" style="--aspect-ratio:690/459;"><img src="https://paraxial.io/blog/owl.jpg" class="thumbnail" alt="" width="690" height="459"></div>

<h3><a href="https://paraxial.io/blog/app-audit" target="_blank" rel="noopener nofollow ugc">Inspecting Elixir Dependencies at Runtime for Security</a></h3>

  <p>Determine exactly what is running in production.</p>


  </article>

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

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

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="293510" 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/elixir-blog-posts/150/948">Post #947</a>
	                </div>
	            </div>
              <div id="likers-container-293510" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="293510"
                     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 #947"></div>
  </section>
</div>
    <div class="postbit" id="293795" data-post-id="293795">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>New post: <a href="https://johnelmlabs.com/posts/magic-link-auth/" rel="noopener nofollow ugc">How To Add Magic Link Login to phx.gen.auth</a> - The simple, safe, and secure way to extend the tools <code>phx.gen.auth</code> gives you to implement magic link login in your app.</p>
<p>Any and all feedback welcome! Hope you enjoy!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="293795" 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/elixir-blog-posts/150/949">Post #948</a>
	                </div>
	            </div>
              <div id="likers-container-293795" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="293795"
                     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 #948"></div>
  </section>
</div>
    <div class="postbit" id="293879" data-post-id="293879">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hey! I’ve just published a post on rendering SVG sparkline charts using Elixir:</p>
<p><a href="https://alexplescan.com/posts/2023/07/08/easy-svg-sparklines/" class="onebox" target="_blank" rel="noopener nofollow ugc">https://alexplescan.com/posts/2023/07/08/easy-svg-sparklines/</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="293879" data-batch-url="/posts/batch_likers">
                        4
                      </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/elixir-blog-posts/150/950">Post #949</a>
	                </div>
	            </div>
              <div id="likers-container-293879" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="293879"
                     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 #949"></div>
  </section>
</div>
    <div class="postbit" id="293882" data-post-id="293882">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Very nice description of how you can extends <code>phx.gen.auth</code> to do magic links (without any extra dependencies). Thanks for sharing!</p>
<p>The only minor feedback I’d have is to avoid calling back to your web module from your context module <a href="https://github.com/JohnElmLabs/MagicLinkAuth/blob/master/lib/magic_link/accounts.ex#L184" rel="noopener nofollow ugc">here</a>. This creates a cyclical dependency. The original functions that send emails (like <a href="https://github.com/JohnElmLabs/MagicLinkAuth/blob/master/lib/magic_link/accounts.ex#L169-L175" rel="noopener nofollow ugc">this one</a>), in the <code>Accounts</code> context module avoid this by accepting an extra function that generates a full url, given an encoded token. Extending this pattern would be a better choice IMO.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="293882" 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/elixir-blog-posts/150/951">Post #950</a>
	                </div>
	            </div>
              <div id="likers-container-293882" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="293882"
                     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 #950"></div>
  </section>
</div>
    <div class="postbit" id="293966" data-post-id="293966">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I released a new project today. Very simple but fun - a webring for the BEAM community.</p>
<p>I’m happy to add anyone here to it if you’re interested!</p>
<aside class="onebox allowlistedgeneric" data-onebox-src="https://silbernagel.dev/posts/introducing-beamring">
  <header class="source">
      <img src="https://silbernagel.dev/images/favicon-32x32-91bc476c90fb77f98759caaed1867660.png?vsn=d" class="site-icon" alt="" width="32" height="32">

      <a href="https://silbernagel.dev/posts/introducing-beamring" target="_blank" rel="noopener nofollow ugc">silbernagel.dev</a>
  </header>

  <article class="onebox-body">
    

<h3><a href="https://silbernagel.dev/posts/introducing-beamring" target="_blank" rel="noopener nofollow ugc">Introducing Beamring</a></h3>

  <p>A new webring for the BEAM community.</p>


  </article>

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

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

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="293966" 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/elixir-blog-posts/150/952">Post #951</a>
	                </div>
	            </div>
              <div id="likers-container-293966" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="293966"
                     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 #951"></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/150/load_more?page=90">Load more posts (331 remaining)</a>
</div></template></turbo-stream>