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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I found <a href="https://readreplica.io/functional-arrays-in-elixir-erlang/" rel="noopener nofollow ugc">this post</a> about Erlang arrays quite interesting.<br>
<a href="https://readreplica.io/functional-arrays-in-elixir-erlang/" class="onebox" target="_blank" rel="noopener nofollow ugc">https://readreplica.io/functional-arrays-in-elixir-erlang/</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="286472" data-batch-url="/posts/batch_likers">
                        5
                      </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/931">Post #930</a>
	                </div>
	            </div>
              <div id="likers-container-286472" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="286472"
                     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 #930"></div>
  </section>
</div>
    <div class="postbit" id="287357" data-post-id="287357">
  <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>There are several tutorials and alternatives to build a “Sign in with Metamask” for a dApp (decentralized application) using any modern JS Framework, but very limited content on how to do it using LiveView. In this blog post, I make an introduction to how this sign-in method works under the hood and how we can integrate it with some ease into a LiveView app.</p>
<aside class="onebox allowlistedgeneric" data-onebox-src="https://blog.finiam.com/blog/sign-in-with-metamask-using-liveview">
  <header class="source">
      <img src="https://blog.finiam.com/assets/favicon.svg" class="site-icon" alt="" width="32" height="32">

      <a href="https://blog.finiam.com/blog/sign-in-with-metamask-using-liveview" target="_blank" rel="noopener nofollow ugc">blog.finiam.com</a>
  </header>

  <article class="onebox-body">
    <div class="aspect-image" style="--aspect-ratio:690/460;"><img src="https://cdn.sanity.io/images/5aprln8a/production/2938ded7675670b3678dbd1f84fa4234a842558b-5472x3648.jpg" class="thumbnail" alt="" width="690" height="460"></div>

<h3><a href="https://blog.finiam.com/blog/sign-in-with-metamask-using-liveview" target="_blank" rel="noopener nofollow ugc">Sign in with Metamask using LiveView</a></h3>

  <p>Metamask is an Ethereum crypto wallet, and serves as a gateway to dApps (decentralized Apps). By using a solution such as "Sign in with Metamask" (or any other wallet, as highlighted before) the user doesn't need to worry about an extra "username +...</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="287357" 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/932">Post #931</a>
	                </div>
	            </div>
              <div id="likers-container-287357" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="287357"
                     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 #931"></div>
  </section>
</div>
    <div class="postbit" id="287526" data-post-id="287526">
  <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>When uploading sensitive user files to S3, you better encrypt them or you risk data breaches and fines! This post explains how to encrypt, decrypt, upload, and download files from S3 and how to display them in LiveView.</p>
<p><a href="https://www.peterullrich.com/upload-encrypted-files-to-s3" class="onebox" target="_blank" rel="noopener nofollow ugc">https://www.peterullrich.com/upload-encrypted-files-to-s3</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="287526" data-batch-url="/posts/batch_likers">
                        6
                      </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/933">Post #932</a>
	                </div>
	            </div>
              <div id="likers-container-287526" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="287526"
                     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 #932"></div>
  </section>
</div>
    <div class="postbit" id="287653" data-post-id="287653">
  <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>Hi everyone, new article about how Elixir does not suffer from the thread safety issues often seen in web apps - <a href="https://paraxial.io/blog/data-race" class="inline-onebox" rel="noopener nofollow ugc">How Elixir Solves a Difficult Security Problem</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="287653" 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/934">Post #933</a>
	                </div>
	            </div>
              <div id="likers-container-287653" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="287653"
                     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 #933"></div>
  </section>
</div>
    <div class="postbit" id="289684" data-post-id="289684">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi, my first blog post is a beginner-friendly tutorial that shows you how to implement a full text search in SQLite without any external dependencies:</p>
<aside class="onebox allowlistedgeneric" data-onebox-src="https://tobiasmikula.com/posts/sqlite3-full-text-search-elixir/">
  <header class="source">
      <img src="https://tobiasmikula.com/favicon.ico" class="site-icon" alt="" width="48" height="48">

      <a href="https://tobiasmikula.com/posts/sqlite3-full-text-search-elixir/" target="_blank" rel="noopener nofollow ugc" title="12:12AM - 26 May 2023">tobiasmikula.com – 26 May 23</a>
  </header>

  <article class="onebox-body">
    <div class="aspect-image" style="--aspect-ratio:690/460;"><img src="https://tobiasmikula.com/images/elixir_sqlite_full_text_search.png" class="thumbnail" alt="" width="690" height="460"></div>

<h3><a href="https://tobiasmikula.com/posts/sqlite3-full-text-search-elixir/" target="_blank" rel="noopener nofollow ugc">How to add SQLite3 Full Text Search to existing Ecto tables</a></h3>

  <p>In this blog post we are going to add full text search to an existing table in our Phoenix app.</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="289684" 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/935">Post #934</a>
	                </div>
	            </div>
              <div id="likers-container-289684" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="289684"
                     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 #934"></div>
  </section>
</div>
    <div class="postbit" id="289688" data-post-id="289688">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I read this and enjoyed it, but I think Elixir/Erlang are just as open to the kind of race described here as the Ruby code was, because the equivalent code in Elixir would be two independent processes reading / writing also to shared state, e.g. ETS (or even a third process). The problem isn’t the language (in this case), it <em>is</em> the shared state. You don’t even need <em>true</em> concurrency to provoke these errors, just a certain interleaving of events on the same thread.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="289688" 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/936">Post #935</a>
	                </div>
	            </div>
              <div id="likers-container-289688" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="289688"
                     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 #935"></div>
  </section>
</div>
    <div class="postbit" id="289820" data-post-id="289820">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I wrote an article about ways to handle editing and previewing images in forms that use <code>live_file_input</code>.</p>
<p>Read it here:</p>
<aside class="onebox allowlistedgeneric" data-onebox-src="https://blog.miguelcoba.com/editing-forms-with-live-file-input">
  <header class="source">
      <img src="https://blog.miguelcoba.com/favicon.ico" class="site-icon" alt="" width="256" height="256">

      <a href="https://blog.miguelcoba.com/editing-forms-with-live-file-input" target="_blank" rel="noopener nofollow ugc" title="02:55PM - 23 May 2023">Miguel Cobá – 23 May 23</a>
  </header>

  <article class="onebox-body">
    <div class="aspect-image" style="--aspect-ratio:690/361;"><img src="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/ldDmTgf89gU/upload/a049344733a732496590abcfa6165019.jpeg" class="thumbnail" alt="" width="690" height="460"></div>

<h3><a href="https://blog.miguelcoba.com/editing-forms-with-live-file-input" target="_blank" rel="noopener nofollow ugc">Editing forms with live_file_input</a></h3>

  <p>Imagine you are writing an app to handle products for a marketplace. Each Product has up to 3 images associated with it. When editing a Product, you should be able to remove any of the already associated images and add new images to the Product,...</p>


  </article>

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

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

<p>I’d love to hear if you have alternative ways to handle this use case.</p>
<p>Thanks</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="289820" 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/937">Post #936</a>
	                </div>
	            </div>
              <div id="likers-container-289820" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="289820"
                     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 #936"></div>
  </section>
</div>
    <div class="postbit" id="290202" data-post-id="290202">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Maintaining business logic in the web app (Phoenix Context in most cases) the right way is a must if you don’t want to refactor your project every year or two <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"> In this blog post, I’m presenting my approach to Phoenix Contexts’ maintainability.</p>
<aside class="onebox allowlistedgeneric" data-onebox-src="https://curiosum.com/blog/elixir-phoenix-context-maintainability-guildelines">
  <header class="source">
      <img src="https://cdn.prod.website-files.com/6734a45e36746d73f263268d/6842a2b12a3b755e611fd87b_Frame%20463%201.png" class="site-icon" alt="" width="32" height="32">

      <a href="https://curiosum.com/blog/elixir-phoenix-context-maintainability-guildelines" target="_blank" rel="noopener nofollow ugc">curiosum.com</a>
  </header>

  <article class="onebox-body">
    <div class="aspect-image" style="--aspect-ratio:690/362;"><img src="https://cdn.prod.website-files.com/6780f4139ab3ae7f7313b0f4/6899b4db275395ca2edf4336_context-maintainability-and-guidelines-in-elixir-and-phoenix.avif" class="thumbnail" alt="" width="690" height="362"></div>

<h3><a href="https://curiosum.com/blog/elixir-phoenix-context-maintainability-guildelines" target="_blank" rel="noopener nofollow ugc">Phoenix Context Maintainability: Guidelines and Best Practices | Curiosum</a></h3>

  <p>Master Phoenix Context maintainability with proven guidelines. Boost your Phoenix app architecture and code organization strategies.</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="290202" data-batch-url="/posts/batch_likers">
                        6
                      </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/939">Post #938</a>
	                </div>
	            </div>
              <div id="likers-container-290202" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="290202"
                     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 #938"></div>
  </section>
</div>
    <div class="postbit" id="290892" data-post-id="290892">
  <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>Even if you’re relatively new to the Elixir ecosystem, you have likely come across the concept of <strong>generators</strong>. These generators are very common and you may recognize them from running commands like <code>mix new hello_world</code>, or <code>Phoenix</code> related commands.</p>
<p>In this short post, I give an insight into how you can quickly set up your own generators and why the first Google link/ChatGPT answer is not always the best approach to the problem at hand.</p>
<aside class="onebox allowlistedgeneric" data-onebox-src="https://zediogoviana.github.io/posts/adding-code-generators-to-your-elixir-app/">
  <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/adding-code-generators-to-your-elixir-app/" target="_blank" rel="noopener nofollow ugc" title="12:00AM - 08 June 2023">zediogoviana – 8 Jun 23</a>
  </header>

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

<h3><a href="https://zediogoviana.github.io/posts/adding-code-generators-to-your-elixir-app/" target="_blank" rel="noopener nofollow ugc">8bit-sized #2 | Adding code generators to your Elixir App</a></h3>

  <p>Even if you're relatively new to the Elixir ecosystem, you have likely come across the concept of **generators**. These generators are very common and you may recognize them from running commands like `mix new hello_world`, or `Phoenix` related...</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="290892" 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/941">Post #940</a>
	                </div>
	            </div>
              <div id="likers-container-290892" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="290892"
                     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 #940"></div>
  </section>
</div>
    <div class="postbit" id="291149" data-post-id="291149">
  <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">
								<blockquote>
<p>We also store the encryption <a href="https://en.wikipedia.org/wiki/Salt_(cryptography)" rel="noopener nofollow ugc">salt</a> or <code>encryption_iv</code> , which protects the encrypted file from dictionary attacks.</p>
</blockquote>
<p>The IV is critical but for different reasons, see e.g. <a href="https://knowledge-base.secureflag.com/vulnerabilities/broken_cryptography/reused_iv_key_pair_vulnerability.html" rel="noopener nofollow ugc">Reused IV-Key Pair Vulnerability | SecureFlag Security Knowledge Base</a>. A dictionary attack wouldn’t do much here since you’re generating the key from random bytes <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>
<blockquote>
<p>But if we use the encryption key of the current user for decrypting the file, the result would be gibberish or worst-case, throw an error.</p>
</blockquote>
<p>It would be better to use an authenticated mode (<a href="https://www.erlang.org/doc/man/crypto.html#crypto_one_time_aead-6" rel="nofollow">crypto_one_time_aead/6</a>). That would ensure decryption fails if the wrong key is used, or more importantly, if someone tampers with the encrypted data.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="291149" 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/942">Post #941</a>
	                </div>
	            </div>
              <div id="likers-container-291149" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="291149"
                     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 #941"></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=89">Load more posts (341 remaining)</a>
</div></template></turbo-stream>