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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="garrison" data-post="21" data-topic="73559">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/g/3bc359/48.png" class="avatar"> garrison:</div>
<blockquote>
<p>That is the theme of my post here: resistance to change is normal and healthy, but also sometimes wrong. And it’s actually <em>really hard</em> to tell when it’s wrong.</p>
</blockquote>
</aside>
<p>I suppose we can now exchange roles. IMO with enough experience one can build an intuition that’s right 98% of the time on when resistance to change is wrong.</p>
<p>During my long and colorful consulting and contracting career Postgres has been quite fine for almost everything. No, really, and yes I said it. This is kind of the argument I truly hate but I am forced to admit it’s correct when we use the engineering’s golden rule i.e. use the right tool for the job: “We don’t need Elixir, our app is internal and we’ll never even have 30 concurrent users; Django / Rails / Express.JS is serving us fine”. Same with Postgres. Same with a lot of other stuff in the IT area… sadly.</p>
<p>The part I passionately will hate until my grave however is that this argument gets stretched like the proverbial cheese all the way to the surface of the Moon and is used as an universal defense that’s it’s <em>never the time to move on</em>.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="379604" 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/why-so-serious/73559/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-379604" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="379604"
                     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="379605" data-post-id="379605">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="dimitarvp" data-post="20" data-topic="73559">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/48/38664_2.png" class="avatar"> dimitarvp:</div>
<blockquote>
<p>which is definitely a part of the issue but it’s more like a consequence and not a root cause. A symptom of the sickness, not the actual sickness</p>
</blockquote>
</aside>
<p>I think you are misinterpreting what I said here. Perhaps this is in part because I wrote “skill issue”, which to be clear is a completely unserious zoomer meme. But also, I am not alluding to widespread technical incompetence as you seem to think, but rather a very narrow technical problem: how to test distributed systems.</p>
<p>I will save you the details, but the TLDR is that distributed systems have a reputation for being very hard to test because they are <em>nondeterministic</em> due to the network behavior. Normal (single-threaded) programs do not have this problem. So, if you try to test a distributed database using the same tools that you use for normal software, you end up with a system that is not very resilient.</p>
<p>The above <strong>has led to a reputation of unreliability</strong> for distributed databases.</p>
<p>However, it is actually very easy to fix this: you simply reclaim the deterministic behavior with a simulator. Once you’ve done this, you can go back to writing code as normal. It’s legit magic.</p>
<p>My <em>point</em> was that the general (developer) public is distrustful of distributed databases because systems developed using this superior testing methodology are, presently, somewhat uncommon. This is changing.</p>
<p>There was no deeper meaning.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="379605" 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/why-so-serious/73559/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-379605" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="379605"
                     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="379606" data-post-id="379606">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I am likely grasping at straws here but since you said that you just discovered PBT – which btw <em>hugely</em> surprised me, I’d expect somebody with your level of culture to have known about it for a while – then I’ll just mention it… <a href="https://en.wikipedia.org/wiki/TLA%252B" rel="noopener nofollow ugc">TLA+</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="379606" 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/why-so-serious/73559/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-379606" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="379606"
                     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="379607" data-post-id="379607">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>It’s not that I have just discovered PBT <em>exists</em>, I have known about it for a while. It’s just that I have only just discovered <em>why</em> PBT exists, because I have only recently reached the point in my life where I’m writing code for which it is actually <em>table stakes</em>. Up until that point I had simply, you know… ignored it.</p>
<p>Do you see, now? I did not know any better! <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>For the record, simulation testing is a little different from classical PBT. For one, I can’t figure out how to do shrinking. And (borrowing from the Tigerbeetle team) I have actually been trying to stick to the term “fuzzing” instead because I don’t like acronyms very much. But it’s all the same stuff really, if you squint.</p>
<p>As for TLA+ I am aware of it but that’s all so far. I think formal methods are cool but they can’t prevent bugs in code, whereas simtesting actually <em>can</em> find bugs in the real implementation. Formal methods are probably still useful, though, and at some point I will take the time to learn TLA+.</p>
<aside class="quote no-group" data-username="dimitarvp" data-post="22" data-topic="73559">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/48/38664_2.png" class="avatar"> dimitarvp:</div>
<blockquote>
<p>During my long and colorful consulting and contracting career Postgres has been quite fine for almost everything.</p>
</blockquote>
</aside>
<p>It is fine! This comes up every time, and I will reiterate once again that Postgres Is Fine.</p>
<p>But, like, doesn’t it bother you that distributed consensus has been solved since 1988 and the answer to HA Postgres is “fail over manually”. Doesn’t it bother you that range-based autosharding has existed for 20 years and the answer for Postgres is “shard manually”. Doesn’t it bother you that the database is not properly checksummed and indexes can just randomly get corrupted and start returning the wrong data?</p>
<p>I really would like to move on! Unfortunately there aren’t really any good alternatives.</p>
<p>You know, unless…</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="379607" 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/why-so-serious/73559/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-379607" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="379607"
                     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="379611" data-post-id="379611">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group quote-modified" data-username="garrison" data-post="25" data-topic="73559">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/g/3bc359/48.png" class="avatar"> garrison:</div>
<blockquote>
<p>Doesn’t it bother you that …</p>
</blockquote>
</aside>
<p>It does. See the “I am not Lara Croft” comment. <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>
<p>I’d work on drastically different things than I did all my career if I had the material choice.</p>
<p>That’s the tragedy of the commons most of us are facing.</p>
<aside class="quote no-group" data-username="garrison" data-post="25" data-topic="73559">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/g/3bc359/48.png" class="avatar"> garrison:</div>
<blockquote>
<p>I really would like to move on!</p>
</blockquote>
</aside>
<p>I see what you mean: it’s time to move on from Postgres to something better. Alas, almost nobody can work on interesting stuff like this. Which is why a lot of us are rooting for you.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="379611" 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/why-so-serious/73559/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-379611" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="379611"
                     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="379612" data-post-id="379612">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="dimitarvp" data-post="26" data-topic="73559">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/48/38664_2.png" class="avatar"> dimitarvp:</div>
<blockquote>
<p>Which is why a lot of us are rooting for you.</p>
</blockquote>
</aside>
<p>And of course I deeply appreciate it. Really: <em>thank you</em>, so much.</p>
<p>This is how change happens, at first: slowly, one person at a time. I do wish I could just write code and ignore everything else, but if I don’t spend time writing about things every so often then nobody will ever know or care. And it takes practice just like everything else, so I have to screw it up a few hundred times before I get good at it <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>BTW, I recall seeing a post recently mentioning your SQLite thing, and while I still don’t actually know what it is, please do keep at it! I think SQLite is interesting because unlike most RDBMS it actually takes the right side of all of the tradeoffs for a non-distributed database. And, shamefully, with Litestream or similar it’s probably more resilient than every other RDBMS lol.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="379612" 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/why-so-serious/73559/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-379612" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="379612"
                     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="379623" data-post-id="379623">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I think Elixir does a good job of being both ergonomic and “correct” (assuming this means it delivers great performance without suffering from major drawbacks). It’s not without a few warts but they’re pretty minor overall. It’s a nice marriage of Ruby-inspired syntax with the benefits of the Beam so I don’t really see it as a tradeoff of one versus the other.</p>
<aside class="quote no-group" data-username="dimitarvp" data-post="3" data-topic="73559">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/48/38664_2.png" class="avatar"> dimitarvp:</div>
<blockquote>
<p>because of syntax (superficial and unimportant and not a “reason” at all)</p>
</blockquote>
</aside>
<p>I don’t believe this to be true. I don’t think anyone wants to wade through a bunch of boilerplate or clunky syntax hence the popularity of languages like Ruby and Python. Syntax may become even more important going forward until a day where humans are completely out of loop.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="379623" 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/why-so-serious/73559/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-379623" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="379623"
                     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="379634" data-post-id="379634">
  <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">
								<aside class="quote no-group" data-username="garrison" data-post="25" data-topic="73559">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/g/3bc359/48.png" class="avatar"> garrison:</div>
<blockquote>
<p>As for TLA+ I am aware of it but that’s all so far. I think formal methods are cool but they can’t prevent bugs in code, whereas simtesting actually <em>can</em> find bugs in the real implementation.</p>
</blockquote>
</aside>
<p>As someone who <em>has</em> used it professionally, I think this is reasonable. Even Lamport himself proposed using model-checking - rather than the proof system - to gain confidence in the correctness of TLA specifications.</p>
<p>Having said that, if anyone does get a chance to learn TLA+, I highly recommend it. It does provide a rigorous way to think about state-machines, something we tend to do a lot of in Elixir.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="379634" 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/why-so-serious/73559/29">Post #28</a>
	                </div>
	            </div>
              <div id="likers-container-379634" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="379634"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #28"></div>
  </section>
</div>
    <div class="postbit" id="379639" data-post-id="379639">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="jam" data-post="28" data-topic="73559">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jam/48/36266_2.png" class="avatar"> jam:</div>
<blockquote>
<p>I don’t believe this to be true. I don’t think anyone wants to wade through a bunch of boilerplate or clunky syntax hence the popularity of languages like Ruby and Python.</p>
</blockquote>
</aside>
<p>My point was that syntax is mostly inconsequential. You might be arguing extremes here; I have seen enough Perl back in the day to understand why people said that “Perl is the only language that looks identical before and after RSA encryption” and I am obviously not advocating for Brainfuck. But by and large, syntax is mostly irrelevant. People do get used to it, integrate it as an automatic habit, and move on. Never understood why some people bashed f.ex. LISP or Algol or Ada  as much. Meh. It’s syntax. Unless it’s 5x more verbose than would be rational then it’s OK.</p>
<aside class="quote no-group" data-username="jam" data-post="28" data-topic="73559">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jam/48/36266_2.png" class="avatar"> jam:</div>
<blockquote>
<p>I think Elixir does a good job of being both ergonomic and “correct”</p>
</blockquote>
</aside>
<p>I agree. That was one of my top secondary reasons to stick with it after the honeymoon period (original reason was actual parallelism and a solid runtime).</p>
<p>While I sometimes cringe at “don’t try to catch everything with <code>case</code>, we’ll add arms as needed and in response to production errors”, I can’t deny that this has helped me and many others, many times, to ship faster and with 98% confidence.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="379639" 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/why-so-serious/73559/30">Post #29</a>
	                </div>
	            </div>
              <div id="likers-container-379639" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="379639"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #29"></div>
  </section>
</div>
    <div class="postbit" id="379640" data-post-id="379640">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="garrison" data-post="27" data-topic="73559">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/g/3bc359/48.png" class="avatar"> garrison:</div>
<blockquote>
<p>BTW, I recall seeing a post recently mentioning your SQLite thing, and while I still don’t actually know what it is</p>
</blockquote>
</aside>
<p>A Rust NIF with more features (current and planned) than <code>exqlite</code>, more or less, though in fairness they have some that I don’t just yet (extensions and encryption, which are also planned and quite easy to implement compared to a few other things that gave me a few more white hairs). Most prominent of the current ones are streaming with low-memory footprint and cancellation – don’t ask how many days did the latter one swallow; there’s a balance to be struck between raw speed in SQLite’s VM instruction executor, and ability to cancel before a statement executes. Boy, was that not fun at all to experiment with. But it was super interesting and informative at least.</p>
<p>And please don’t ask how much time it took me to mull over bundled vs. system-installed SQLite. (<em>whispers</em>: “Weeks”.) And the rabbit hole on why is CI failing my test suite when it always passed locally. TL;DR I was hammering SQLite with too many requests in the tests and it “intelligently” told me “out of memory” and boy just finding out that this does <em>not</em> mean it’s out of memory took me days. Sigh. Never claimed I am particularly good but let’s just say that my faith in humanity waned further the day I deciphered the problem and simply made a custom Mix task that ran each test file one by one, sequentially, and that fixed all occasional local and always-present CI problems.</p>
<p>Anyway.</p>
<hr>
<p>btw since you are very interested in this stuff: <a href="https://jepsen.io/analyses/nats-2.12.1" class="inline-onebox" rel="noopener nofollow ugc">Jepsen: NATS 2.12.1</a>. Spotted it today on HN.</p>
<p>Yikes. I considered using persistent NATS for one hobby project next year as I am sick of Kafka but might as well just go for Redpanda (Kafka wire protocol compatible) and move on. Or persistent RabbitMQ queues. Who knows. It’s a Ph.D. activity to even find what you need in this space these days. <img src="https://forum.elixirforum.com/images/emoji/apple/face_with_spiral_eyes.png?v=15" title=":face_with_spiral_eyes:" class="emoji" alt=":face_with_spiral_eyes:" loading="lazy" width="20" height="20"></p>
<p>Any recommendation on a persistent queue with good guarantees without too much sysadmin / devops pain?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="379640" 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/why-so-serious/73559/31">Post #30</a>
	                </div>
	            </div>
              <div id="likers-container-379640" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="379640"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #30"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/73559/load_more?page=4">Load more posts (10 remaining)</a>
</div></template></turbo-stream>