<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Jason Stieb's Writing</title>
    <link>/</link>
    <atom:link href="/rss" rel="self" type="application/rss+xml" />
    <description>Jason Stiebs's Personal Writing</description>
    <language>en</language>
    <copyright>Copyright 2026 Jason Stiebs</copyright>
    <lastBuildDate>Tue, 31 Jan 2023 12:00:00 GMT</lastBuildDate>
    <ttl>60</ttl>

    
      <item>
        <title>How Phoenix LiveView Form Auto-Recovery works.</title>
        <link>https://fly.io/phoenix-files/how-phoenix-liveview-form-auto-recovery-works/</link>
        <guid>https://fly.io/phoenix-files/how-phoenix-liveview-form-auto-recovery-works/</guid>
        <description>
        <![CDATA[

        <p>Phoenix LiveView is a server-side frontend framework and with this great power comes great responsibility on the developer. A very common source of frustration is around Forms, their assigns values and connection resets or deploys. In this post we'll discuss how this all works and how it enables F...

        ]]>
        </description>
        <pubDate>Wed, 13 Mar 2024 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>What if S3 could be a fast, globally synced, Key Value Store? That's Tigris</title>
        <link>https://fly.io/phoenix-files/what-if-s3-could-be-a-fast-globally-synced-key-value-database-that-s-tigris/</link>
        <guid>https://fly.io/phoenix-files/what-if-s3-could-be-a-fast-globally-synced-key-value-database-that-s-tigris/</guid>
        <description>
        <![CDATA[

        <blockquote>
<p>We’re Fly.io and we transmute containers into VMs, running them on our hardware around the world. We have fast booting VM’s, so why not <a href="https://fly.io/docs/speedrun/">take advantage of them</a>?</p>
</blockquote>
<p>That said... building applications that span the globe is a ...

        ]]>
        </description>
        <pubDate>Tue, 20 Feb 2024 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>Not every Dependency is worth it.</title>
        <link>https://fly.io/phoenix-files/not-every-dependency-is-worth-it/</link>
        <guid>https://fly.io/phoenix-files/not-every-dependency-is-worth-it/</guid>
        <description>
        <![CDATA[

        <p>Elixir has been quietly <a href="https://fly.io/phoenix-files/elixir-and-phoenix-can-do-it-all/">building out a truly impressive list of packages</a>, and while a deep resource of packages that solve common or complex problems is good, for some people it's not enough and want more. Which is to be ...

        ]]>
        </description>
        <pubDate>Mon, 22 Jan 2024 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>Using LLama.cpp with Elixir and Rustler</title>
        <link>https://fly.io/phoenix-files/using-llama-cpp-with-elixir-and-rustler/</link>
        <guid>https://fly.io/phoenix-files/using-llama-cpp-with-elixir-and-rustler/</guid>
        <description>
        <![CDATA[

        <p>Recently I started playing with the idea of using LLama.CPP with Elixir as a NIF. Creating C/C++ Nif's in Erlang is kind of a project and you need to be especially careful to not cause memory errors bugs. So I found a Rust Wrapper around LLama.cpp and since I have some <a href="https://fly.io/phoe...

        ]]>
        </description>
        <pubDate>Sun, 5 May 2024 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>Real world TM Machine Learning</title>
        <link>https://fly.io/phoenix-files/real-world-machine-learning-on-fly-gpu/</link>
        <guid>https://fly.io/phoenix-files/real-world-machine-learning-on-fly-gpu/</guid>
        <description>
        <![CDATA[

        <p>We live in truly a time of wonders, every single week a new demo drops with a mind glimpse of what our incredible AI future might be. From generating illustrations, react apps, or very convincing text.</p>
<p>But... if we're being honest those demo's, while incredible, are difficult to even imagin...

        ]]>
        </description>
        <pubDate>Sun, 26 Nov 2023 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>Elixir and Phoenix can do it all</title>
        <link>https://fly.io/phoenix-files/elixir-and-phoenix-can-do-it-all/</link>
        <guid>https://fly.io/phoenix-files/elixir-and-phoenix-can-do-it-all/</guid>
        <description>
        <![CDATA[

        <p>As an Elixir/Phoenix developer going on 10 years it is very easy to take for granted everything that Elixir and Phoenix can do for us. So I wanted to take a step back and list all of the stuff that we get for free when we choose Elixir and Phoenix.</p>
<p>My goal with this post is dump an list of ...

        ]]>
        </description>
        <pubDate>Thu, 26 Oct 2023 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>LLaMa on CPUs</title>
        <link>https://fly.io/phoenix-files/llama-on-a-cpus/</link>
        <guid>https://fly.io/phoenix-files/llama-on-a-cpus/</guid>
        <description>
        <![CDATA[

        <p>Large Language Model (LLM) based AI models are all the rage and running them typically requires a pretty beefy <a href="https://fly.io/gpu">GPU</a> or paying for Open AI API access. At the moment, <a href="https://fly.io/gpu">Fly.io's GPUs</a> aren't publicly available, but I still wanted to join ...

        ]]>
        </description>
        <pubDate>Wed, 11 Oct 2023 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>DIY Lambda</title>
        <link>https://fly.io/phoenix-files/diy-lambda/</link>
        <guid>https://fly.io/phoenix-files/diy-lambda/</guid>
        <description>
        <![CDATA[

        <p>At Fly.io, we make it super easy to spin up new apps and scale them to Machines distributed around the globe. Also, Elixir is <em>uniquely suited</em> to take advantage of this distributed global network. In this post I am going to show you how to use both to:</p>
<ul>
<li>Start a Machine anywhere...

        ]]>
        </description>
        <pubDate>Thu, 21 Sep 2023 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>Streaming uploads with LiveView</title>
        <link>https://fly.io/phoenix-files/streaming-uploads-with-liveview/</link>
        <guid>https://fly.io/phoenix-files/streaming-uploads-with-liveview/</guid>
        <description>
        <![CDATA[

        <p>Time to face reality.  Sending files over the internet via a web browser is not a solved problem. There has been so many bytes spilled on the varied ways of accepting, uploading, streaming, verifying, storing, backing up, and sharing files from a user. It's 2023, and I realize I'm not getting a fl...

        ]]>
        </description>
        <pubDate>Mon, 21 Aug 2023 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>BEAM Clustering made Easy</title>
        <link>https://fly.io/phoenix-files/beam-clustering-made-easy/</link>
        <guid>https://fly.io/phoenix-files/beam-clustering-made-easy/</guid>
        <description>
        <![CDATA[

        <p>hello
One of the reasons Fly.io is so great for Elixir and Phoenix is that we have servers in nearly every region on the globe, and they are all connected via built in WireGuard networking. As an Elixir developer, this is an incredible opportunity because it means we get to use Erlang Distribution...

        ]]>
        </description>
        <pubDate>Mon, 14 Aug 2023 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>Let's search the docs of every Elixir Package!</title>
        <link>https://fly.io/phoenix-files/let-s-search-all-of-elixir-s-packages/</link>
        <guid>https://fly.io/phoenix-files/let-s-search-all-of-elixir-s-packages/</guid>
        <description>
        <![CDATA[

        <p>I love ExDocs, I think they are one of the best parts about the Elixir Ecosystem and I frankly <a href="https://fly.io/phoenix-files/elixir-docs-are-built-different/">cannot shut up about it</a>. My one complaint is that it can sometimes be hard to find <em>exactly</em> what you are looking for us...

        ]]>
        </description>
        <pubDate>Tue, 8 Aug 2023 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>Elixir Docs are Built different</title>
        <link>https://fly.io/phoenix-files/elixir-docs-are-built-different/</link>
        <guid>https://fly.io/phoenix-files/elixir-docs-are-built-different/</guid>
        <description>
        <![CDATA[

        <p>A few common refrains from developers who are new to Elixir are:</p>
<ul>
<li>"Where are the blog posts?"</li>
<li>"Stack Overflow?"</li>
<li>"Google was no help..."</li>
</ul>
<p>And I totally get it, if you come from another language ecosystem, you would be right to prioritize tutorials or blog ...

        ]]>
        </description>
        <pubDate>Thu, 6 Jul 2023 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>for Can do more</title>
        <link>https://fly.io/phoenix-files/for-can-do-more/</link>
        <guid>https://fly.io/phoenix-files/for-can-do-more/</guid>
        <description>
        <![CDATA[

        <p>Here is a standard Elixir example, reading from a file, mapping over it, filtering over it, converting it into a map:</p>
<pre class="athl" style="color: #a5b0c5; background-color: #242b38;"><code class="language-elixir" translate="no" tabindex="0"><div class="line" data-line="1"><span style="colo...

        ]]>
        </description>
        <pubDate>Mon, 26 Jun 2023 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>LiveView is a Process</title>
        <link>https://fly.io/phoenix-files/a-liveview-is-a-process/</link>
        <guid>https://fly.io/phoenix-files/a-liveview-is-a-process/</guid>
        <description>
        <![CDATA[

        <p>LiveView lets users get up to speed quickly by being easy to learn, especially with the familiar mount, render and event handler system that React developers will immediately recognize. But LiveView differs from other front-end frameworks in one very consequential way:</p>
<blockquote>
<p>A LiveVi...

        ]]>
        </description>
        <pubDate>Thu, 15 Jun 2023 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>Speed up your boot times with this one weird dockerfile trick</title>
        <link>https://fly.io/phoenix-files/speed-up-your-boot-times-with-this-one-dockerfile-trick/</link>
        <guid>https://fly.io/phoenix-files/speed-up-your-boot-times-with-this-one-dockerfile-trick/</guid>
        <description>
        <![CDATA[

        <h2>Problem</h2>
<p>You added the <a href="https://github.com/elixir-nx/bumblebee/blob/main/examples/phoenix/speech_to_text.exs">Whisper</a> text to speech transcription to your voice chat app and while it works great... the boot times on your deployment have slowed to a crawl. Or maybe you really lo...

        ]]>
        </description>
        <pubDate>Mon, 5 Jun 2023 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>Server Sent Events, ChatGPT Streaming results, and Req.</title>
        <link>https://fly.io/phoenix-files/streaming-openai-responses/</link>
        <guid>https://fly.io/phoenix-files/streaming-openai-responses/</guid>
        <description>
        <![CDATA[

        <h2>Problem</h2>
<p>You need to work with the ChatGPT Streaming API, and you've never worked with Server Sent Events before.</p>
<h2>Solution</h2>
<p>Add the <em>fantastic</em> Req to your dependencies.</p>
<pre class="athl" style="color: #a5b0c5; background-color: #242b38;"><code class="language-eli...

        ]]>
        </description>
        <pubDate>Wed, 17 May 2023 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>Tensors and Nx, are not just for machine learning.</title>
        <link>https://fly.io/phoenix-files/tensors-and-nx-are-not-just-for-machine-learning/</link>
        <guid>https://fly.io/phoenix-files/tensors-and-nx-are-not-just-for-machine-learning/</guid>
        <description>
        <![CDATA[

        <p>The Elixir community has a sleeping giant brewing with Nx, and not just for Machine Learning. Nx allows you to describe nearly any numerical operation, which can then be run in an optimized environment for such operations. If you read the Nx README it describes itself as:</p>
<blockquote>
<p>Nx is...

        ]]>
        </description>
        <pubDate>Wed, 10 May 2023 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>Minimum Viable ChatGPT Plugin</title>
        <link>https://fly.io/phoenix-files/minimum-viable-chatgpt-plugin/</link>
        <guid>https://fly.io/phoenix-files/minimum-viable-chatgpt-plugin/</guid>
        <description>
        <![CDATA[

        <h3>Problem</h3>
<p>You just got access to the ChatGPT Plugin beta, and you want to hook up your database of knowledge to the AI GPT4, so it can help you and customers navigate your complex world. You've never done that, and all of their docs are in Python...</p>
<h3>Solution</h3>
<p>Phoenix is perfe...

        ]]>
        </description>
        <pubDate>Mon, 24 Apr 2023 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>Elixir and Rust are a good mix</title>
        <link>https://fly.io/phoenix-files/elixir-and-rust-is-a-good-mix/</link>
        <guid>https://fly.io/phoenix-files/elixir-and-rust-is-a-good-mix/</guid>
        <description>
        <![CDATA[

        <h3>Problem</h3>
<p>We need to perform a CPU intensive or system's level programming task and there are just no good solutions in <a href="https://hex.pm">hex.pm</a>, in this example let's pretend there <a href="https://fly.io/phoenix-files/resizing-images-using-elixir/">are no good ways to do image<...

        ]]>
        </description>
        <pubDate>Tue, 11 Apr 2023 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>Crafting your own Static Site Generator using Phoenix</title>
        <link>https://fly.io/phoenix-files/crafting-your-own-static-site-generator-using-phoenix/</link>
        <guid>https://fly.io/phoenix-files/crafting-your-own-static-site-generator-using-phoenix/</guid>
        <description>
        <![CDATA[

        <p>The year is 2023, you have <em>many</em> options for  building a Static Website. From the OG Jekyll to literally hundreds of JavaScript based options to people suggesting you should just craft HTML by hand. All of these solutions are correct and good, and you know what you should use them!</p>
<p>...

        ]]>
        </description>
        <pubDate>Thu, 30 Mar 2023 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>Resizing Images With Elixir</title>
        <link>https://fly.io/phoenix-files/resizing-images-using-elixir/</link>
        <guid>https://fly.io/phoenix-files/resizing-images-using-elixir/</guid>
        <description>
        <![CDATA[

        <p>We accept user uploaded images and later want to use them as in our applications. This leads to many questions:</p>
<ul>
<li>What format will their device upload? Which format do we accept? Which format do we use?</li>
<li>How many bytes is the upload and do we want to pay to serve that?</li>
<li>...

        ]]>
        </description>
        <pubDate>Mon, 13 Mar 2023 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>Single File Elixir Scripts</title>
        <link>https://fly.io/phoenix-files/single-file-elixir-scripts/</link>
        <guid>https://fly.io/phoenix-files/single-file-elixir-scripts/</guid>
        <description>
        <![CDATA[

        <p>Elixir has powerful built in scripting functionality, allowing us to write elixir to a file, say <code>my_script.exs</code> and execute it directly by <code>elixir my_script.exs</code>. The vast majority of production elixir projects should be directly compiled via mix with all available optimizat...

        ]]>
        </description>
        <pubDate>Wed, 8 Mar 2023 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>Phoenix LiveView and SQLite Autocomplete</title>
        <link>https://fly.io/phoenix-files/phoenix-liveview-and-sqlite-autocomplete/</link>
        <guid>https://fly.io/phoenix-files/phoenix-liveview-and-sqlite-autocomplete/</guid>
        <description>
        <![CDATA[

        <p>In our last post we saw an example of how we could use the built-in Full Text Search capability, FTS5, of SQLite3 to create a search index and query it with Ecto. We also know it's fast to query and especially so since it is in memory.</p>
<p>Let's see how easy it is to <em>show</em> those results...

        ]]>
        </description>
        <pubDate>Thu, 16 Feb 2023 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>SQLite3 Full Text Search And Phoenix</title>
        <link>https://fly.io/phoenix-files/sqlite3-full-text-search-with-phoenix/</link>
        <guid>https://fly.io/phoenix-files/sqlite3-full-text-search-with-phoenix/</guid>
        <description>
        <![CDATA[

        <p>Hello</p>
<p>One of the benefits of Sqlite is that you can lightning quick query times because your database is colocated next to your server. Bonus it also comes with built in Full Text search capabilities! But how does this work with Ecto?</p>
<p>In this Series we will walk through</p>
<ul>
<li>...

        ]]>
        </description>
        <pubDate>Tue, 31 Jan 2023 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
      <item>
        <title>Copy to Clipboard with Phoenix LiveView</title>
        <link>https://fly.io/phoenix-files/copy-to-clipboard-with-phoenix-liveview/</link>
        <guid>https://fly.io/phoenix-files/copy-to-clipboard-with-phoenix-liveview/</guid>
        <description>
        <![CDATA[

        <h2>Problem</h2>
<p>When you need to make sure a user copies an important string of text, don't let their mouse and keyboard stand in the way. Give them a button to press so they don't need to manually move a cursor around.</p>
<p>But how might you do this with LiveView? It's not like our servers hav...

        ]]>
        </description>
        <pubDate>Wed, 25 Jan 2023 12:00:00 GMT</pubDate>
        <source url="~">Jason Stiebs's Writing</source>
      </item>
    
  </channel>
</rss>


