<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Taylor</title>
    <description>Taylor is an easy to use game engine using mruby as the scripting language. It&apos;s aimed at people who love ruby or just want an easy way to make cross platform games.</description>
    <link>https://taylormadetech.dev/</link>
    <atom:link href="https://taylormadetech.dev/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Sun, 02 Aug 2026 00:57:19 +0000</pubDate>
    <lastBuildDate>Sun, 02 Aug 2026 00:57:19 +0000</lastBuildDate>
    <generator>Jekyll v4.4.1</generator>
    
      <item>
        <title>Taylor Monthly - July 2026</title>
        <description>&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt; &lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Count&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Releases&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Commits&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;6&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Contributors&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;2&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://github.com/HellRok/Taylor/pulls?q=is%3Apr+is%3Amerged+closed%3A2026-07-01..2026-08-01&quot;&gt;Pull requests merged&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;2&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://github.com/HellRok/Taylor/issues?q=is%3Aissue%20state%3Aclosed%20closed%3A2026-07-01..2026-08-01&quot;&gt;Issues closed&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;1&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2&gt;At a Glance&lt;/h2&gt;

&lt;ul&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#my-mental-health&quot;&gt;My Mental Health&lt;/a&gt;
      &lt;/strong&gt;
      Life is currently difficult
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#windows-issues&quot;&gt;Windows Issues&lt;/a&gt;
      &lt;/strong&gt;
      Fixing the console issue on Windows
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#path-issues&quot;&gt;Path Issues&lt;/a&gt;
      &lt;/strong&gt;
      Working on fixing the current working directory feature
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#taylor-v0-5-0-progress&quot;&gt;Taylor v0.5.0 Progress&lt;/a&gt;
      &lt;/strong&gt;
      Where the new release is at
    &lt;/li&gt;
  
&lt;/ul&gt;

&lt;h2 id=&quot;my-mental-health&quot;&gt;My Mental Health&lt;/h2&gt;

&lt;p&gt;If you follow my &lt;a href=&quot;https://sean.taylormadetech.dev&quot;&gt;personal blog&lt;/a&gt; you will have seen that things have been
pretty hard for me. This has meant pulling back on the amount of serious work I
can do, including working on Taylor.&lt;/p&gt;

&lt;p&gt;The plan was to have v0.5.0 released already but I haven’t been able to commit
many hours to the last couple of tough challenges I want to get done before
releasing.&lt;/p&gt;

&lt;p&gt;I’m not sure how much longer the current stressors are going to be affecting me
but I am prioritising myself and getting through this situation. I will still
try to fit in some Taylor development as I really want v0.5.0 released but I
will  not sacrifice my health to do so.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This means I will put no deadlines or promises for a release date.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I appreciate your understanding on this.&lt;/p&gt;

&lt;h2 id=&quot;windows-issues&quot;&gt;Windows Issues&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/HellRok/Taylor/pull/87&quot;&gt;Pull request&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While I was preparing for Taylor’s v0.5.0 release I started building up a proper
checklist to make sure things weren’t broken or there were no regressions. This
has already payed off as it discovered that Taylor’s development experience was
broken on Windows and has been since v0.4.0.&lt;/p&gt;

&lt;p&gt;This came about due to unknown changes but it was related to how I wanted to
package Taylor as both a CLI tool and GUI which it seems Windows has issues
with.&lt;/p&gt;

&lt;p&gt;A new config option was added for toggling the behaviour of showing a console on
Windows. This is set to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;true&lt;/code&gt; for Taylor CLI but should probably be set to
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;false&lt;/code&gt; (the default value) when you export your games. You shouldn’t have to
change anything about your config to get this fix, just upgrade to v0.5.0 when
it releases.&lt;/p&gt;

&lt;h2 id=&quot;path-issues&quot;&gt;Path Issues&lt;/h2&gt;

&lt;p&gt;I discovered this issue when testing on Windows but it seems it applies to all
systems. This is some functionality I added during the v0.4.0 development but I
now think is an anti-feature.&lt;/p&gt;

&lt;p&gt;When running your game internally we would &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Dir.chdir&lt;/code&gt; to the location of the
executable. I thought this was helpful because it means you don’t need to think
about the current working directory when loading in your assets but has caused
issues when you want to do something like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;../taylor&lt;/code&gt; to launch your project or
game. This causes it to not respect your actual current working directory and
makes it unable to find &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;game.rb&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;On Linux and OSX I didn’t notice this because I always just put &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;taylor&lt;/code&gt;
somewhere in my &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$PATH&lt;/code&gt; and it resolves correctly. On Windows though it was
changing the directory to where the actual executable was still, even though on
Linux and OSX it stayed in the current directory.&lt;/p&gt;

&lt;p&gt;This is still a work in progress.&lt;/p&gt;

&lt;h2 id=&quot;taylor-v050-progress&quot;&gt;Taylor v0.5.0 Progress&lt;/h2&gt;

&lt;p&gt;I think this is reasonably close. The last issue I’m aware of is the path issue
described above.&lt;/p&gt;

&lt;p&gt;There may be more issues that come out of the release checklist and I’m trying
to delay this release to include as many positive changes as possible. I want to
make v0.5.0 a release that brings Taylor up to the standards I expect. I feel
there has been some slips in quality since v0.4.0 but that was somewhat expected
with how massive that release was.&lt;/p&gt;

&lt;p&gt;If you’re interested if following the release, see the &lt;a href=&quot;https://github.com/HellRok/Taylor/pull/84&quot;&gt;pull
request&lt;/a&gt;.&lt;/p&gt;
</description>
        <pubDate>Sat, 01 Aug 2026 00:00:00 +0000</pubDate>
        <link>https://taylormadetech.dev/2026/08/01/taylor-monthly-july.html</link>
        <guid isPermaLink="true">https://taylormadetech.dev/2026/08/01/taylor-monthly-july.html</guid>
        
        
      </item>
    
      <item>
        <title>Taylor Monthly - June 2026</title>
        <description>&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt; &lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Count&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Releases&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Commits&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;10&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Contributors&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;2&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://github.com/HellRok/Taylor/pulls?q=is%3Apr+is%3Amerged+closed%3A2026-06-01..2026-07-01&quot;&gt;Pull requests merged&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;7&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://github.com/HellRok/Taylor/issues?q=is%3Aissue%20state%3Aclosed%20closed%3A2026-06-01..2026-07-01&quot;&gt;Issues closed&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;1&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2&gt;At a Glance&lt;/h2&gt;

&lt;ul&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#emscripten-upgrade&quot;&gt;Emscripten Upgrade&lt;/a&gt;
      &lt;/strong&gt;
      4.0.13 -&amp;gt; v6.0.0
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#argv-rework-for-the-cli&quot;&gt;ARGV Rework for the CLI&lt;/a&gt;
      &lt;/strong&gt;
      You can now use -- to split args from the CLI to your game
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#improved-developer-experience&quot;&gt;Improved Developer Experience&lt;/a&gt;
      &lt;/strong&gt;
      You should be able to use Docker from within Docker now
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#updated-documentation-for-development&quot;&gt;Updated Documentation for Development&lt;/a&gt;
      &lt;/strong&gt;
      How to properly set up your machine for developing Taylor
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#block-stacker-example-game&quot;&gt;Block Stacker Example Game&lt;/a&gt;
      &lt;/strong&gt;
      I start in earnest on the block stacker example game
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#taylor-v0-5-0-progress&quot;&gt;Taylor v0.5.0 Progress&lt;/a&gt;
      &lt;/strong&gt;
      Where the new release is at
    &lt;/li&gt;
  
&lt;/ul&gt;

&lt;h2 id=&quot;emscripten-upgrade&quot;&gt;Emscripten Upgrade&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/HellRok/Taylor/pull/77/changes&quot;&gt;Pull Request&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://emscripten.org/&quot;&gt;Emscripten&lt;/a&gt; has been upgraded two major versions from 4.0.13 all the way to
6.0.0. Thankfully it just boiled down to including &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;emscripten.h&lt;/code&gt; in a few more
places.&lt;/p&gt;

&lt;h2 id=&quot;argv-rework-for-the-cli&quot;&gt;ARGV Rework for the CLI&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/HellRok/Taylor/pull/78&quot;&gt;Pull Request&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Taylor CLI was missing some a pretty useful bit of functionality that makes
it a lot clearer which arguments are for Taylor and which are for your game.&lt;/p&gt;

&lt;p&gt;Given the following script:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# args.rb&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Arguments: &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;ARGV&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;When you run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;taylor args.rb -- --version&lt;/code&gt; what would you expect? I bet it’s not:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ taylor args.rb -- --version
trace (most recent call last):
        [3] /app/taylor/output.rb:569
        [2] /app/taylor/output.rb:320:in call
        [1] /app/taylor/output.rb:326:in initialize
/app/taylor/output.rb:387:in setup_options: unknown option: , version (RuntimeError)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;In v0.5.0 you can run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;taylor args.rb -- --version&lt;/code&gt; to disambiguate who the
arguments are for. Anything before the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--&lt;/code&gt; is for the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;taylor&lt;/code&gt; command and
everything after is for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;args.rb&lt;/code&gt;. For example:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ taylor-dev args.rb -- --version
Arguments: [&quot;--version&quot;]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Thanks to &lt;a href=&quot;https://github.com/azimux&quot;&gt;azimux&lt;/a&gt; for implementing this feature! It’s still so amazing to me
that there are people out there interested in Taylor.&lt;/p&gt;

&lt;h2 id=&quot;improved-developer-experience&quot;&gt;Improved Developer Experience&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/HellRok/Taylor/pull/81&quot;&gt;Pull Request&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Having someone else work on Taylor made me take the developer experience a lot
more seriously. I’d kind of neglected the development Docker setup since I don’t
use it much myself.&lt;/p&gt;

&lt;p&gt;I’ve now got the full CI suite able to run locally inside of Docker to make
getting a full development environment set up a lot easier. This means that you
can do development on OSX as well, and maybe even Windows if you set up Docker
Desktop or WSL.&lt;/p&gt;

&lt;p&gt;There’s definitely still some issues. I’ve noticed on Fedora sometimes it’ll
stop having permission to access &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/var/run/docker.sock&lt;/code&gt;. I’m not sure what’s
happening there and may investigate later if other people have issues.&lt;/p&gt;

&lt;h2 id=&quot;updated-documentation-for-development&quot;&gt;Updated Documentation for Development&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/HellRok/Taylor/pull/83&quot;&gt;Pull Request&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Given the big push to make local development easier for people I decided it was
time to rewrite the documentation and split them out from the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;README.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I also decided to remove the documentation around setting up a local build
environment. This was done in favour of pushing people to the easier to maintain
Docker environment. If people are still keen though, they can look into
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Dockerfile.dev&lt;/code&gt; and figure out what they need. It’s honestly not very hard to
get set up on Linux but would be very difficult on Windows or OSX.&lt;/p&gt;

&lt;h2 id=&quot;block-stacker-example-game&quot;&gt;Block Stacker Example Game&lt;/h2&gt;

&lt;p&gt;I’ve finally started in earnest on a new example game, this time the focus will
be on stacking blocks and clearing lines!&lt;/p&gt;

&lt;p&gt;I’m very excited about this project as I’ve wanted to build this sort of game
for a while but have felt intimidated I might not structure it well enough for
the crazy shenanigans I plan on doing with it. If I let that sort of thing hold
me back though Taylor would never exist, so I bit the bullet and started work.
It’s early days but I’m already pretty happy with it.&lt;/p&gt;

&lt;div class=&quot;post--video&quot;&gt;
  &lt;video aria-describedby=&quot;block-stacker-video-description&quot; controls=&quot;&quot; id=&quot;block-stacker-video&quot; preload=&quot;metadata&quot; src=&quot;https://sean.taylormadetech.dev/data/weekly-brain-dump-29/block_stacker.webm&quot;&gt;
    If your browser doesn&apos;t support the video tag, you can
    &lt;a href=&quot;https://sean.taylormadetech.dev/data/weekly-brain-dump-29/block_stacker.webm&quot;&gt;download the video&lt;/a&gt;.
  &lt;/video&gt;
  &lt;div id=&quot;block-stacker-video-description&quot; class=&quot;post--video--description&quot;&gt;
    &lt;p&gt;
  An orange &apos;L&apos; piece is shown spinning around and moving over a light gray
  grid. There is debug information on the left hand side of the screen.
&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;h2 id=&quot;taylor-v050-progress&quot;&gt;Taylor v0.5.0 Progress&lt;/h2&gt;

&lt;p&gt;I spoke about this in my last monthly update but it’s still not live. It turned
out there was more I wanted to get into this release. Also with the discovery of
some missed test migrations that meant I had broken important functions after
the mruby upgrade I decided to take it a bit slower.&lt;/p&gt;

&lt;p&gt;One of the big things I want to do is &lt;a href=&quot;https://github.com/HellRok/Taylor/issues/73&quot;&gt;come up with a release
checklist&lt;/a&gt;. I’ve been thinking on it a bit more the past few
days because I want to start the release process as I do believe it’s ready.
I’ve been using the prerelease locally for a while and haven’t hit any
unexpected issues.&lt;/p&gt;

&lt;p&gt;If you’re interested if following the release, see the &lt;a href=&quot;https://github.com/HellRok/Taylor/pull/84&quot;&gt;pull
request&lt;/a&gt;.&lt;/p&gt;

</description>
        <pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate>
        <link>https://taylormadetech.dev/2026/07/01/taylor-monthly-june.html</link>
        <guid isPermaLink="true">https://taylormadetech.dev/2026/07/01/taylor-monthly-june.html</guid>
        
        
      </item>
    
      <item>
        <title>Taylor Monthly - May 2026</title>
        <description>&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt; &lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Count&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Releases&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;2&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Commits&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;19&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Contributors&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;1&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://github.com/HellRok/Taylor/pulls?q=is%3Apr+is%3Amerged+closed%3A2026-05-01..2026-06-01&quot;&gt;Pull requests merged&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;3&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://github.com/HellRok/Taylor/issues?q=is%3Aissue%20state%3Aclosed%20closed%3A2026-05-01..2026-06-01&quot;&gt;Issues closed&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;3&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2&gt;At a Glance&lt;/h2&gt;

&lt;ul&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#taylor-v0-4-2-and-v0-4-3-released&quot;&gt;Taylor v0.4.2 and v0.4.3 Released&lt;/a&gt;
      &lt;/strong&gt;
      I put out two small releases to fix some bugs
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#mruby-4-0-0-upgrade&quot;&gt;mruby 4.0.0 Upgrade&lt;/a&gt;
      &lt;/strong&gt;
      A hard fought battle to upgrade mruby
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#raylib-6-0-upgrade&quot;&gt;Raylib 6.0 Upgrade&lt;/a&gt;
      &lt;/strong&gt;
      A much simpler upgrade
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#taylor-squasher-progress&quot;&gt;Taylor Squasher Progress&lt;/a&gt;
      &lt;/strong&gt;
      Finally just sat down and built a prototype
    &lt;/li&gt;
  
&lt;/ul&gt;

&lt;h2 id=&quot;taylor-v042-and-v043-released&quot;&gt;Taylor v0.4.2 and v0.4.3 Released&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;/2026/05/27/taylor-v0.4.2-released.html&quot;&gt;Taylor v0.4.2&lt;/a&gt; and
&lt;a href=&quot;/2026/05/31/taylor-v0.4.3-released.html&quot;&gt;Taylor v0.4.3&lt;/a&gt; have been released.
These contain a handful of small fixes.&lt;/p&gt;

&lt;h3 id=&quot;changelogs&quot;&gt;Changelogs&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Taylor v0.4.2
    &lt;ul&gt;
      &lt;li&gt;Lock the MRuby version used in the export docker image&lt;/li&gt;
      &lt;li&gt;Refactor &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;talyor-config.json&lt;/code&gt; handling&lt;/li&gt;
      &lt;li&gt;Update the Dockerfile.dev for Debian 13&lt;/li&gt;
      &lt;li&gt;Fix OSX exports&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Taylor v0.4.3
    &lt;ul&gt;
      &lt;li&gt;Properly use Taylor::Config through the entire export process&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;mruby-400-upgrade&quot;&gt;mruby 4.0.0 Upgrade&lt;/h2&gt;

&lt;p&gt;This was a hard fought battle but I managed to conquer &lt;a href=&quot;https://mruby.org/&quot;&gt;mruby&lt;/a&gt; and bring it up
to 4.0.0. There are three main reasons for this.&lt;/p&gt;

&lt;h3 id=&quot;1-mruby-400-loads-mgems-in-a-different-order&quot;&gt;1. mruby 4.0.0 Loads mGems in a Different Order&lt;/h3&gt;

&lt;p&gt;The ordering of mgems has changed in the build config. Now custom mgems are
loaded before internal core mgems. This broke the following two mgems for very
different reasons.&lt;/p&gt;

&lt;h3 id=&quot;2-mruby-require&quot;&gt;2. mruby-require&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/HellRok/mruby-require&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mruby-require&lt;/code&gt;&lt;/a&gt; is an extremely powerful mgem that lets you use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;require&lt;/code&gt; and
properly structure your project into many neatly organised files. It actually
also allows you to compile other mgems into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.so&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.dll&lt;/code&gt; files so you can
programmatically require them after mruby is built. That’s the functionality
that broke.&lt;/p&gt;

&lt;p&gt;I ended up having to fork the mgem and remove that functionality. This has the
bonus of making the code for the mgem much more maintainable as that was causing
the build to be complicated.&lt;/p&gt;

&lt;h3 id=&quot;3-neospec&quot;&gt;3. Neospec&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/HellRok/neospec&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;neospec&lt;/code&gt;&lt;/a&gt; is my gem/mgem. It’s a testing framework that helps me keep
Taylor working correctly as I develop it.&lt;/p&gt;

&lt;p&gt;I forgot that I rely on the core mgem &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mruby-env&lt;/code&gt; and that meant it was built in
the wrong order. This meant when Taylor loaded up the code tries to use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ENV&lt;/code&gt;
before it’s available. Thankfully a pretty easy fix once I figured out what was
going on.&lt;/p&gt;

&lt;h2 id=&quot;raylib-60-upgrade&quot;&gt;Raylib 6.0 Upgrade&lt;/h2&gt;

&lt;p&gt;This has gone a lot easier than the &lt;a href=&quot;https://mruby.org/&quot;&gt;mruby&lt;/a&gt; upgrade. This brings extremely
minimal changes to your experience using Taylor. What’s interesting is that this
opens up a lot more possibilities on the backend for porting to different
systems.&lt;/p&gt;

&lt;h2 id=&quot;taylor-squasher-progress&quot;&gt;Taylor Squasher Progress&lt;/h2&gt;

&lt;p&gt;I sat down one night and decided to do something a little silly to get myself
unstuck on this project. I kept worrying about “how to do it perfectly” and
overthinking every step. So I sat down with my laptop, put a chill video on in
the background, and just gave myself permission to write bad code to achieve the
simplest possible result.&lt;/p&gt;

&lt;p&gt;This is something I can get a little hung up on when developing something open
source. I get in my head that every commit has to be a perfect example of great
code instead of reality. There’s every chance I’ll re-write the git history
before opening it up but history has often shown I’m too lazy for that, so
you’ll probably be able to dig and see what I did.&lt;/p&gt;

&lt;p&gt;I am happy to report that I did get a basic prototype working with the &lt;a href=&quot;https://github.com/HellRok/taylor-examples/tree/main/jumpy_alien&quot;&gt;Jumpy
Alien&lt;/a&gt; example project!&lt;/p&gt;

&lt;p&gt;The interesting thing to note is that it includes every &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.rb&lt;/code&gt; file that’s in
your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;load_path&lt;/code&gt; according to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;taylor-config.json&lt;/code&gt; file. So you’ll see in
&lt;a href=&quot;https://playground.taylormadetech.dev/#version=v0.4.3&amp;amp;code=MoRQqggsASCiBKB9AYgSQDK2AAgLzYG8AobbAIgEMAHKgegGMB7AWysYDsBTdgFwGdaAMwoATTokYBXHmTwA+bAFoFxUmvXZ6AGwp8+2ZKM4B5aSWwUePAE6JrnI9ewAuehS1aARhXoBrADQuPACWzOJanII8ROZigtjB7MEh7sEAXpwAFABknlqMfgCU5qQAAm4e3n542HkFviXYpSFhiBFRNQAMAHQAjABMAKzm3CIxpHHYklQillliWjwUxerNoeGRPEr4C0vjauXuXj6+3RVaCfFrre1bADz4nSPsY7GR2CLWFADuz2Oj+w02AAvv4iJQaAwWGwuLwBABzChhWipbiyXAKZSERpA7S6fQAcSRnHMeL02AgWmC3EalhsdgcYiczlR7ECzjYfGSwQ47IAbpx8vRkgBPdnTRA8TgADx4kns7JEjG+7ElMrlCpcAAtkp5GNL2XwllLAdgACoYLA1VQaeH2bjOQjTR2dQJKlWO3rAxrexoE+AQABqqDNAE0asN1ABZCAADRQEHQ6EQgdg6GMAGEQ+H8AAWRoAKTAUYACjVFP1uv1TZNEtzUhkcU0jXMaiyqQKm6VWW27ZwaUDSpzuRwaoHOPQeIxrP0ANq9AAcruwAGZOp0ALpdgVC0VjidTmez5ebrs6nh66U1eAHijseERbpcb6ZJukaWOoeMLkhDjdK8ANTYLmgQip+w6-uw3QitgQEgW+2DfMEIg8FqnoAGyBFqnDBPCWo8BhYJAqQTD5PKjoZowZHWM4zgAELoBAAByADSRHEVIPBUlwFFUVINH0egYCwE2Ky2twnBfFKaqyvKnB8I0AKNJM8ISVJ4hSrJ9gKUCIQRMw1DXvJ-H0PJ3R6ZwBlUHwmRkN0KJ6Jw-AMFqFBfJOkl8N0VD3mQgRchkjr9LmxRdhKmkapwNQWVZ5nBBEiCCNOmQWpgwCzt2VLcBus7ONMG6FN0ghUlQiBatO6QcEsHgigAhOZjAyZFXbuqqEVydF8WWdQcUJUl1gpZa6WZdS7A5c4rUFUVJVlRVaRVUcdUNU1cmKS8NbvAAVpIrCIFQ2l8JwIgAPxNlGUiHd5B1HcdmTnZIh20ZgyBmoU2AAD7vdgLGcCKV3yYdJ2ZD9YHOMAJYQBmsBiaQSnqJM0yzFKmS7MsTZuIdzbGiSQLfNh7AuKknbEU0O4FKK0Gwfg-pBtm2AAFQfIKewIaUZPCjwf0wfgMbxsgibJqm6ZZmGlyk4K5Oc5TCi8wmSYpmmmbZqa6jBPE227ftAM3QhZTsxT3PYEWpa69gwCmVw3QUJIIg8ogBnsBQqnWN5Ogipkzga1QMMaHDxFfj+PIEwB+BsxLHMiqz56Xv+NQByOUGAcBUe6vqlOhxBQeU3BTYAuofsTO8nw-OjuhRaULYmrj+OEx2OP++F6pyd0xcvqbmccI6HfsAhoXV9wLhiKICE3pOd4PpwT6cG3JPvuB34J-+7Ek2BTTd9By-EUhKFoau-Sb0C2G4fhjorvvpukfxvHUbR8CwAAIgfGicdxnDX1fzjGAGTEErAT-qKhYIfguB6FPr3FuXxfhAgLgcaOadW5i3NhJWi99YB0TAASNarx4bvF8PFLQXZK5RXwBNRkTYkGW2trbRqDsnaSVdhQd2pDLBah9nnbAAIYHqFBOCagdAmCsA4NwZyiJkRVF8HaKQLx0SYhUBfHQ5IiRhFJAo-QdETiSMkOtdQdJbA+FMnoacQR1h7XxEddk7V7AbXiHWFIVJGyDhaOIKgZiRBdCbKpLg6kVpWPzutZS7xPGSTmD4+uACupWSMnwEyZkYrUBsnZByh1nLiM0S8LyPl4R+WwAFN+2Bgo+1IKEOhnV9I9SCd4wQ1gWCZFnAhY8gQTyNOadgJprSWltM6R07p7TeldNaRuf+2AGl9J6f08ZYzJmjOmSeQZ9SJkzKmQs5ZSzGlzJJiMlZiztlbN2WsoZmzVk7KOXsnZ6ziKHOOVc05Nz9nzJOQ865jzOnnKBJc25TzPnLNeRod5zz-lfLGT89QfzAVgo+bMg5vRAjQuwLC+FMLEVwqRQi5FaLUUYpRVi9FwK1Czn3vkwIBLiVEtJYS8lJKKVkspTS6ldL8m4tILOAA7IEVl2B2WcrZdyjlPKuW8oFfyoVfKRWCsZcMhcgRJXYGlbKqV8qZUKrlYqlVyq1VKo1aq8Vs51Wqs1bqg1+qjV6q1Qcw1JrzWWuNVamV2qbX2utY6i1Sq7VOodc6j17qFyus9W6v1vqA3erNf6r1Ia3U+tDYGsNgaI3RsjfGqVsao3JoTZ6pNqaM3huDSmuNuaLXprzZmmN2ai2lutQWnNlaM0VrLVW8tJbC2NpTTWpttbZUtrrZ2+1Ha22tp7a2gdtqmwFS7JY4hCQDKqWWmOrB1ipgzDmCjZmaNHEmJcY5NxIcmaLAoLOgJ8Ru5NkYIIQQySaiZGuM41xDN8khWwAAUlvU2cck5pxzk6EobAx7T1OTWXunB8RW6jqbvYCBPxXwk27l3BekFRKzthutLhageEQn4dCIRcJaCiM4LQUYiA+D0HtOwWgnhpBTnYDIpQcjZ7YHsAAR0kMEew5A+FQkEbCZyfBXL2BECRsjHAyAxDJISYkKj8TYFgC8c2RHGjCewHRfjPcgSJG0DbKKtEFNWA4CrCwVhbD2EcEEeSPBEDIQseqdk3d2TnHETp2sSQ7HpCyFKI0pmRDOECBFDz2AoOBFyEKXwhSDguZM8haKxm3OswiuF2UOmyjdxqIekm8dILmR1MAgGNQVxxaaDZk4NQ6h+FZklXg+GnM1FzAuXO2i1DsM4f4kmKHWMCJhMIhExJcMvHw4R-sFH5BUexDR+jjHmOobY61zD2HOsiG60RvjWmKNCdUdgJR9c5OSZENJ3rtI9MMkM84Aj05OAWK+OwQO2n90JAc8EBsWRDv2BdEFiuTBmP4Hu2Eg4JWTO5JqL0dcXZ7Bj3vBEIyQOJ5TxnsRD8q5lyrwGK6BC29UKn3XFhHCeECL5KXEMy+5FsCURvs4dAqACTQDNDTUMQzAEZdAcBQIL9Eh5IJx-CncGAdOWsCKRApGFs1FW7RDbW2HT0UUxDiDxEQtucdM4ewNguc8-I1T9UjoyA3jl35BCUHsCjyWMDyez5xck2h2uUCjpcz9ARzRpHu81zLiPhjx0zLLez2p74EBfAze91EoQWjHO6ogh06UBjyRueKb58SAXUmevC80+RsXCFJfIWl8HkzCveQJ+V+QEAjGZBDK1zr8ej4Dem2N7Dx0gw-tDNINblHdv0cnw5c7kmrv3ee5JkFt6BAzYW0ntob8UVvR+OwWoSYX2okxK8l92y9kzHOV8NwLgXOqDBGlIKcyPBBDZNyZ+L7ZWMh9xH+8CKe0YNB0yBFJ7x+fv4C+90MIug5Ln-VAf9QL7DxzlZoD3X4Ok6ZAvV-wvSea3T9ZodUPfIA5CVCN6WgfJQoIZUoAAvXbObAP-BA28JA+3fCEAq-JzboTAngaA2A4df9Q-eIRGRdVGJ7WXTnUPBbbocgquDQIPHPWguPBgj7MoGwO8c7dgbIeghdZGSgkgwuQDSBdnMHR8IDQcag+XUXKQpglPVgv8IDJsd7E-HgmLEzbuWyc2I7MgILNQ9eGCRQfAP7J4IEW-VuQ3DQMgXQ+wDXSDU-TuHJF7ZxJwpTDQF-NQSwyBaw9Qd7ZaPgPPdwx0Y-bQgIqcfDDvQPLgs7BOPg+QhDYfEQ33OXWqUdU7DQ-AQwMQUwHgCHH3ChXveUewXgcPMIAowfWrGrerZIjQJrSEFrDDERDrNJEQSjLEG0EmOTVbMTRRapLRMYHRXbfRAGIxZwJxUxDdczLSEkS7WxG7exDgpoSY9dQGdxIECpEJGdIfOdLY6SHYjQOJKgcfeUAxXqbqayafJJJyAQCyDJXyfyJzT0BcILYpVSUpS47ofY8QKpGpOpDZfoYlYEolEE-JMEoE0EqE8E6EyEmE+EuExEiE5E2E-obVAYAlDEmFOErEuFHE-EzEgk7Ewkkk4kskvE0kik8k3Emkokqkik9Euk2kyk5k6kpk9klkjktkzknk4kxk3k+k1kwUrk4UgUoU8UkUiUtE4dS-EDcdd4yeSIw4pIuddgpdHdS-Nda9LdVGYQpmA9dwo9E9M9fAC9VY69RmSrN6R9RcZ9A8N9AE4iD9RQL9Y039BCdCdcT9XMG9W0oELcXYy7RI4LOUsDSHIELXJLTw+DDhRDBrYiBotDdjNrLDDrZfKgeSDo6jWeHo0TEiZbEsYIDMnSNQXRPbJkWuUaSzIs+SGYyKfkcOUUOdBY27PwiwLKdgR0JILQJ+DgRAUiKkLkZwzonhIEPsr2I6SULUAYvCR0EcxoJ7HsfAVkLsdM+SGoWcN-B03MVHJQXoQYAATg3ADKYP1k5n3FfSPEUEqz-UHD7IHOCCHIJnwHvKokHKDi7HHJ2gzJm1QhnK1BqC-NYEnL-KkDwg8TUm2LlL1JUkgoOOgt0giUMnwBvGiTONiSQquMSVnzuK6geKySeMCjhVeKbAVM+Nih+MSmqWYFqXqV6H3PRIYqhSYropYo2XosGEYs4uYu4tYt4vYrYouQ4q4pEp4tEr4vEoEv4qEsEreWErEoUokqhRXGkreW1XUoOQ0vqQPNUt+XkqUoMqkskpkt0pBX0qMsUossMpMuMrktkr0vsrMscrxXMpsssrcusrss4plOA1mJqAVOnQQuqLqMmD4BcRVD2hrNXJrIyQei1DbNIC3KPFNh3Kb2IkyFOzcUZkUBXGZVeOWmCAQhPPUDYXjJSLVKEMHDXK8islqg+EYA+jXPek1xrNgnFl3HPMZl1OgTKrUDVjXhiu6AUXyKvDuGIvMOIjCp+FVDXNZiAp-KnP-LOCOGqzqPi0Gq4zVi2H6qHEGsECYyNFjjGsUEGCeHRmwj8ESmnH7LfMfKDgUnIR7xbk4FI3hFM3YCSlyjXJuq0R4A3DjmqrOCkWiEDIAw+DEKqsGocHoAAqVEaprOauSzHTDMyEjJrKCyQzgVXy8mhviuyAmkgTen6qKJQTQQwRgveCxvkibFIxPUkhqH6GwAAGJ8kfMV9BR9Bj1sAIgkhuB6BI5NjkLsBBhfSFxmbhbsB7jXTsBEQqAmxgDQ5kbgCXTMhabBB6bGZ+ggt8Dz0zTQydaXTZbCCtbP1VbJA6anBNavDSAWb+gVw2aMzJa8KjSf0TNDZMg7bRa3ogJZa2q1bJJA9AbipLB7ZDI4b3omr6lTYC8kDi8aM54HbJ4k5-brBTdE6N5TZq9IDd5rc0dj5Md8Cq81BccaJ8c+JyJBJmI2JM6v1pBX534K7-RYBYAmJTY4Do70Dwc4747oc1zY4gIU606+6YIgJv1klEAxQa6a9EJs686HdsBC6a6S6G6BIGIq6i7SAGceIy7Cc757426irVqKb4gYaJxfArrbAHynySz1BzwagqavI7wRRjofd3osavosbuhGABRrAdBrIX6RpuA8DU4rxfQ7zVQr6s5zgxZzwYzaictEzxtmj2tkR3sszBsczltej8zxM7CPsyyDMKyDtXDmzrtbtCFXCNimDd9r9sBPTxDv8QcULO6i9p4ErsBod4c07K9Eds7PQLc56G9PScdy7S7mcK7idSdycAxKcE90s3cAZT56c67GcV7aJWcgRSqQr3gVN7AwheAKGjsqY4VfKtD3CahuzHqJIrYbY7ZaFnYGEmF3stG50x9mG0LrBzip9sLHI58F9fpIrV8tB19N9CK8lSgaGnMvDJhotQ4IjGoHqwawjDSgRZd5QCZQDZR1CE4xZMmzGeCYiwDaHb978+BH8L9CmsmEt8AkqP9ktECf82rUCGnHxlaViincDrdjb276mWHJ4R6UD-8+m8D68tgXS8nwCRn87uniDQbSDwaS5pDhngzSAfDwMIpAgtdkmeDrbEEe9Sb0FMESYY6u62GS9QiwD14DRsBV5tnF5J6rc+H2msnckl4F7RnPwcCMgM6aNl6d6P417WIi6t6mdRH1G74W7wEVnYyhjgq-giAkNSBEGmiOMBADJEh7ZuBJB5tyN0GujiJhsmMooxsUWUyuM3IjocWBMltxMowKBEgowsW+i1FFNGgVMtA1MXARcFtTQCHGR6aJiIszMjNZRLN3DrMjhbN5iyGlin9XMk9PNldNmQi-NCtAtgN5W3F8BE9YXVhYnJb1RA7zH8AozVh14W9Mt8Bssuw8tqh8A1WuxImMgKsqtdiVTEWQQwQSX0NUXaBkkQh7w+BMX2BsW+QqIdpxA08+sMQBt8XUnOBg9RtmsfWyXuNKWo3BMiA5NgAnIA34Q+BGWQ3mXsBAxw2whY9tNVZ2BVMxAuWK2e4dt6RCGBWdW6yxWeCJXKgThSH6xZWdXvMvNlWeDvN-N6hZTNXwtNXTHNCjWsifMUmmDzX5H3cstA9bXfACsAtHWqpwCstqw5nyqBD5hl0ugDDpgA7Bx13+yjgjoahhAtBMZ+r7pLp7AIgy4gZn234idYAXoXH3XeruEvXk3kzMN-XEh83g3Q2y3xBt5VIZB+tOjTZCWk3GiU3QPc3wOg39GoOOXWgM2aXyQc2rBMPC3JBi3S3cPOAAB1ZCOD6V3tpzTIMepyF0QIHQTwQUFXMNyj7JbjiNuclQcgWQUEedATwgET1qMTggYEJ7ZjrYF8t0kGpg9jwUGoFTghQcdT7JyCC89-fFZcOT4qg4PjsIGoEz5Y0oVqJQ58s2DDwN0j2iCjiN+t+PZvIV9zQeZUVUKNpXWUFXRQBw4ifPPp-T+nRTtq06wISL4W08TRn3VqZajwAPQcCUKNmoIjvNgtrFxz6Dlz7u3Sdz6XVLxTXzzHMgACQLiMkI7XEL-oA8gz8LoCaL5r2Lzwn3aYRLi4KolUy7Nxmrjxrxqqa4nC2gefdgRfQJtfKwUJnJZ44CEiy7czpsMgJmggC9czzr309cQqAYl4YEe9QTA9-U+dngp-UV1012gw8rG-KqO-BwMp+wM7ggnTWpx0oEP-FcT0z9V5rp7AGArW+AuTtqoHoCP-U6773A-AmZ-04+hZqBDQNZl8UodTodhOaDU75HigDjns1pQoILRHzIcz1HyCdHhOQn6DqLzoPHwPKzqNsMsKUqOn4MmBBGI9lqLz6z-gpGCz4rug9guBuMta5DID1DkDzjNN3jDNhD7MkmZgRgEQSQEHett4eIPr1CifIqIbnx5JAQMbib5fIJkJrfObiJnd3JA-GJy5hd0gNJ6wDJu5nTnah3j8xoYp270px-PJrwiZ6pkt+05Kqq9w-uwZlLLONpn77O7pp+UPv8AZ1A9eA22b75qHv7og9QE8v2SYcqH+06aMC6SeK57oDjngb4XrW6GPxOQICv4P6v377IbIM6fP7yIPv6Yv0v7gcvowqvowtq6vqH+FlXzQKkPwHWW+7+ySF++v7AT9-6DdW6T9p6H916AflI7QIBBodQIomx6hUOx2BxqgN2D2NfooRoW3gmHaq984I6U0Q4Lty6q-rVyW6wSQD7W-44PwTrlf47qNxANUxASqvqvEGz4T9VyQfEujUHEYCQNGi7IPiCwgFgtK6GYFiIpAfYWd144A-AJAKegk4yc0As1rAJUZcB4BhOPATC1NDH8N2-VCgaPzIGD8f+wZavsGQJ5NgNmTYLZlbwKYlUv+rPbnuqSWCntGgP-CqsujEiZ8i4ENNQPQIkHwMEIiDOXgsAEBUI7Gd4OhNYDxbyJxMEAWxowDpZ78L2umekKMUMTMgDIRoSSIgCJ4uBmAD0IBBYIp4uA0KXWJboPxbJLFGgpQUwVKFsDmcug3QV1gcGsFch6Adgyjr4PzCrBHBM2HwaYW6BnVVgng8wdENaR7NkEzgVBIcxv6pJduM2QIUAlOKeMzIuQ+gMN18YCBM4AoNoIwEYBUAv68IAitgHM6OhRA20MwTkJsHBDzO3vCgfkPOKRCShOvWgIkC8HCBTI+GKRCIAEAUDEA64XoLUPqGNCLAIgFoVKBmyRCQhEbH2KUC9g9CzIfQ7XrcUGG8BJIIw8QJEIECHQIgk4aYZ0ErCMA6hvHaDk0KWEPQVhYwwYusLCCbD3sOwryHsJnylDDhwwnwKcPGECBPg1Q64bmDmEPDKOTw5YZOTWGdD3BQ8VCD8O6B-CbizkIYccOBFvD0kUID6kxgMiQRrhtw+4YEAWHNCXhCI8YR8M4CiD4yPAkJOZxvpNAshtIood0CSFUjWh9sdoXSJv4UCuR0HGoDyNeGIjoO7gr2MKNCHLlnhvIiUZR3cEBFuR8o8UbSKW6rAURWoGURG1FFqiaR7wzUbQJSIH9GE3ODRNkL5FBD3B7I94ZyLNEC0TRx3I0BCLtFdYihtoy0RyPaHoipwctHrqaMP6RCfYaw-qJkBDGONuB7wfnqsHdFtCghXPOYNGPiDmcL6EYuzvCB9gYwooYHe8I0DxgDxnACQ6wF2BLECj1AhYgmMWPaFlj+Rxo6vDXAOzjDCEGoyUW62dGhUnIdIjMcR3vAUjoO2YsuDkkzEFimxJYssboC8F0izO7YtQFWKsG1jBwRQmcfgAbGIQmxkQ1sUaJFFri5xgYtQOwTpElk-Y+0YIHyGTGD8xRhopwfuKaDlifBjMCuG2KVEHjJg14hMbYPXEeCpxiQkUU+JXHGixB8QMMclBDGyZhxW4ysU2IoE2th+G-ecU2K9hdhkJ0Eose9kMa+JEJRY7US1AcCoQBe-wADsL14SQh5BHNWgNpAnzqCaM8gxXlFHV7oUSypQU3nCGtBVEWJCpfQPgGk7mAWJxxbieJz4keD2h7E4SWcLEmD8LhggTXrwEyBfYwmQULWu4NYn8BZws4BSUn04DHkPo70bIrdwNyaTt8WkhkcPi7FaAZJCpVGiwk2GlAuJs4FxKhH+qfR8AqASdPrjYaOTWEKYkcRZIuJWQbIXkxSbZIEnqSgpWknSS5PNCYVXOGgBUo6CsleSemGgYybkgXI+TpJd+dodZNQgDjYRtkooQ5JYTOS9J0-X0QbnCkLCkRb494JlL6GVTHhtks4UVKcm6T8AwAcYWLgamwiGhg4+Fh6zkHy8KJBGCSDRMwa4Me85gdIRghqAt1AwRUJyDDVsjTSCQ2Se9odDEiWcXqkgN6okCShiSyg9AEosIgsbxQ+JXGKQFoBmx95MYN+dwIdD4lKCaEKg52KdIIRSTBQMk5JNMHcFPTd+qgmoFoOoS6DVBEOX6doP+n783YFovwG0WtFAIMpn07fsoL0FOBQ4f0+xgHQ+l+SxAr1d6vtNDi4ydp+MxgPsHMkySjp1gUovJ1yzHSDG2MimXTJ4C4BMgz4brBJE2GUzqZFjaeOzK4CIy-JwgjUsiO2m7SPqDVHid1yaBEyxZSUO7tYFUh1VjAngTaAeGAAuJTIQNX6hIBVkHhWR3YCGZjJdixji6TMpMYIREECyZJwZLmcInp6qx4gK0psDRxeDKgwyVFYkHYGTFAhkAt3OINbEWAo1WYMskmXfkMhd53o8+MUA0PcAv9Eas8FbgQCjnAhHQq3C8Ry04DAhDuCZboJtEYCJBbIAAHQozJTcQYLf5hXXvgQB4ALEJui3WCLDs-el5OcJXj3jipjJFuODB2OAm+SKZ+QB6REPKiK9rp-c8dDYBf5Wyzgo83PmoBdnugp5-eF+p9GbBDyrp-ZUef1OIlIsRedAEaSAlTJhAxpJMZDsS2A4TZnIwgMQBIGkCZsT5LGUXufJQY4ZWQgmO+d6zF5PySM3owYq-ITYjZT5D85BgfJwx4YCMRGX+YmwAVJlH5wCrDNkIgX-z750CoBVNmqoIKiWSCpBr6ymxoMCOImZRKQD5b7Z3s7IVkOyHjHsg2i1ZYsuyFAXR4G2KRVwU5mVHYw2wjo8DsqMobUwI8YMVwmDNWBLkVsPCykKNH4UHB4x5RL9uolhnZCxFZQNopIvUayLnw7g6qooucCFliysUnRB2U-BkKj0EDW6k+UdBhBUI8vD2I6PMG2wjopctQPNRArTkwKu8UxeVBEAewvYi1JxZFQzI+xveeoawEyDKggN1y+AN7moBOasNwyGgaHGXj3Ko5eGO8U+MI3eb51PQ8S7ouXKwGV0gWCEEFmow0VgB4AJYTAKJCfgRKPJUS9QDErTqelnSwEUWkMmnqfc68qS+pYzEXAiMb4Fc1eoxByUkw8l3S2iCWEKXFKRImjRoBn0ZHvBIG95C6ghNICWLbA1itxDtX8WBKH6VsdgM-Vfrv0F6IDL+j-T-p8AAGrIYBheH1DJdOxMYo9nwJXQHBTlQspYF4R2pEI8AJCdhfmLLkeA7qsys+l2HjHmzj2wswcG0UBW3KnsgNR5XcoPFlA6FRGPglCtMlkzxBizcRd-JeD2yDggNBgaCoYGnKGBARFQqsDhW9YEiYhW0dOHWXBKaq1AHIATR+BE14gJNNIWTSOZXL1Y35TxTtK1DeLx0z2I7N0F0aWRhEyKg9G7CsXUhdWWMVsCQmwwSAf6v0jst0DwQeB3BJKgeNwrCCR5Ns9C7RWoHeyfgAiGErgf+yF7bzSJu8nvGi3paqhsOR8gln-IwXvyYFl88QJxHQUodkFvrdFraqxZUtFsWbZbHSwZZMsUiOrNsD6sg6iqrsDHBxFiuhlpceYNqhztyzjz5c1A-bFwI6Os5PwvM5AEsG7Eq5qBguEhTgKF1XDRcz4y4J3EZ07w+Y3YdVMBgcDzEQdE10-ZNdl1TV-h01pATNQdkzFBsfOLAzPLYQHVFqFl1XcpeWtzAm4941a1rqQDrUtq+Ajam-ooTbXBr2AKavLmcwK6atk8LBIdQVz85Z4c846k7mjxq6lry1FeZcFWrZQLrsAdarfjdIHw+Sn61nWaDn0aBhL4sCakroQgHU5quw661lun02XbKI5UbL6HT2AHWAX6VRHuY6PSJ6tMiOTbIkYDyIFE42+OeUNEhdhAJRwmAvDdOFJr8wwA6AM0FY0ti2yyimqipT6ERl9j82KG4LGhp04Ybci0gbDU2AzAkaCNTAGznxusD4ayNEACjVRqBAvqmZ6XAdaRzkWXKe5avYyExNkk8B+hBwvXgEwN5TcN8xvIigeXQgW93g2hCpv4Wu7YASm93cps-lNCvcmwH3L7i6Qj47wo+DmzICpTqWvMU+-3H2JMrMnXLeBAAv9eaLp4myygy6znuFqaCga+ebPRoMJvw2CrBN-leIB+p-5waZ56gRLaRo0XGBUATEC0D-EQDQBmI+9fOKgN438axNEmvUs0HY1BwEVNygAT3ODJzy3Z2gBwE4D+ZZKZGVHaACGBEiNBmBQIMgAWG-Iihi5IitEE-EjLuFbI421gJNvYDTaS56U1Rf+roIEqgNTPCQWUFi1x4iVbG7gvEUxUyDGsO8v1lar9ZAa7V0vDBsfMdWeqsFKZV1dfJkBEA35Z8oBZGuw7+qPVUCl7eh2Y1Yc-VaY2Dk5EzbZs5Noa47uGpISRbsO0aphXGrKAPjoOiACHTTIy4kdO1TnMIDRxEBwc9VpAdTirjpZmCnA5nc9XJyChpVSACwzot3msYYyXp9CdHaENHIaBnQsbXqZR1-5UAPYJYt6FzvhhecpOfOiNv-y85C7fx1gEXetviH1iMdWO2TSDpTX47qOtHJyCTu5pY9OO5AKMKJOp29lFOnoHck-EZ2Cct+rO1GVlKCEzjRdh4qgBLrTHTAhd7QkXU-Ek6860xrUD3UEIV1cDlRL4qXarvakw6Q2OXSjoTuJ09q9d2PFXLADpqTh9AJul2skiCjCMmwVuwok9Vt2gzFReop3aQB51M63dgu5sYMS91Ngfd5ejHf7qr0vAg9agPxScGs41BN1260XPHr7XiJgNx6srtIt8DnqS1jDMtQI2Fqtz71jeWtT7mw6rqap8QBfe4NiJzsciJgbjc+Ae1qActAmojbhpE25bUE5GyjdRuKJUyTpSakNSGwU2IaplaWrZZ+sy0-r-l7eqNhMog0v0oNimGDaLky2KaH986ILZbPiFy66RmO7XfkWi0iSHd4OqA4CpD07j+dWOxA3GPf2i5+eCW-jcloP39V0timL9SAKBB76hl+WwrQVoJAlaytKAgeRoFIMsrT9kmuFqvoa0cAmtIB4Feyrh6NB2t3wKeV1s0CZKEBfWgbWaCG1gHKdEB1AwwMAkq6EDBK0Pa0BkN7a2RGBrbeStQ0nbIIZK1FaeOsDnjLxKRCvb2LzY+w0xMNceHdkzGNI+gSKwfn7pl0trzDGOyw-eGsPMbAgigHoL0HsPGHXDrkdw6YfA6BAxR+jZ7pv3z2Gy2dLsceuZzbItqn4mQG3dEbt1pjwxzhtqmEeESFQ8QrATIMuF8PpTTVCDL1thntVAgWaEAEQG4lQhRQvJ2AeyAKFdlOBokiEKKG4AJj3d4oMEO+YAgCU+Y3I55KkJ4C+AGGzIRAAACSOg7gY1RJM0aVBqCYgb844rfKe2A7yJD7SiSpoKF8AAdmCzY4oNSOqD9jY2Q41dtGnLH1jmCvefJFoC-asWpx1jLcfOG3bHjn2642NhePALM2LNYwBmQJjTALAM9V2b8D4Nf0ATmQJpckvwKOhalnmZIBEBVyLaqAMEVbfoRiAs0iOQJp6Tkgaql9NAd4etYwjxODEFIQMnkBCZpBEAWaBIJyJLWwiaAZNcvBzEYiqTEhaMrYO8G4jPT8RJabkODpZq+Cmd1IktBqsSJhrdAiA4JpYArO7HsnWgopnmBwGSDTgzgZs+wFUnkg8r1IMQLft9LlrSbL9dG9tTfskBgyjT3MiPerqxYFFia+zFlRkJpPYB74kQRnDcz5M+rsALi+XkQEmA+rzAtJ+k3UYsBy9fq0tJxIMY3Szdq2UUEM8NSFMcnvgugX3C8EkjX9C4O6GoOCYVMaR1g+wFmqGD5PsFuadwvIfCEYDrlsIWErfoiv2DgmEESoRoIWb5OtxwOpZ+EOWcrP6BqzH2LfvIRkH9UzQjCfIAJALWWB+ozAIvtUm+CHR4N5gOiDObnNhyMW+QaoTUDIA+rBMHNeuCzVdNShJwIJ90EP37y1Aw8RiLABmGwBRzzAXp36vFGZ00bp5CLfxBScYALyHp4J19aUfBAhYgdF8owO9rVBGgKjTBLRMkGepgLggHHcgBvryJM0UdnAWQE2dIBUca4ZAAk0wsxgUBLNRgWuvBxQufZALnEGoHBa33TwfcZANVsJy-5mh0LyQBeimZDMvYv8BggwzzkzL1VFI0oDMpOAvRvbOInXcRIVEiJ-z3Atkai2wh4sHh+LxF7jZMVuAiXGoYlrQAUb6BDAkVSkUoOBfyJiAoLMFsgGRZ4BM12CyF0maQAJDniB4GFqKK5AFDAnXV+Fsy+4KvY2BcIzsW9ndMq2rABL0gUi5hvIvfAfcb-fvW5bqHpnH+48t9QeLQvWWCT0DUy1xZ8tyXoDNynoDcMGB+HzQ6FkM6jASD6A9G4-NxH8WYBO1TOtwZy-nGkt8WImKVuKDcE2BKXEAKltS0UZis5X1g3NTYLUAnAsB1ynQSq0RavmCW1SPhrK3ResvMXJW+WR8k-3csRXBrsMaq+ppCvt6wrHlkQE1Y46Shn+9cc7QmS9Z-nSWk2DrKyGAvwcY2iHGjKUGwhGARAkFwjNBeJb85nAq2hCzKycyDXYrBMGyzGsczYWCYL8pK-co7LqLVtYiv2BNZ+sMXXI+gEMzKF4srC2L0F6QJxcItLXEbF6U5ayC2viAKAyRkUMwD1BaApLmNwBlBG7i43EA+N2pqTZkvk2zll4Km-jfKV02arpys8iKGZuZBab3Fsmw8tKhjpubZoOUv0Hvhs2Vr+KjnkLeWjbX8bIt2YmLc0v+Ibr-Le63pcesGWXrb1xK4RcsvNHyABJuy1FCJNA30b0-JvlrGjNeW6DZQQRdraVUqKDxUN8gAxZbDWB+AM9VEThc5vS0BrwNjG-TY5uNkpYXN5aC1ap5f9vr5AaJKZ0jNrF1ySEMxX5cSBUAb5AdpoALd4HpXegRm2izlcZO+3YbV2HrO+0WscJlrWNpVZzegjN9A4AoY6FTaitf9NMrt+ICGcWVD91+exjOzPytvrFtWu1xVaItGuxDc741gu1FCLspmcLpGETQRfMu1ZK7DNmu39C4CIgQgDdpu0PZKOyDDrxmf85-PjHnXQLqwW62IHVvyRNbz1nhcPraLvXY1SF4G9Hd+uIXgT8Y8u6UAkX0aNM6K+607edEu3frgp5i9OFYu6IUbLmcuwjfpsArzSG6JqxHYlsXo4HcpYW6LfFubzXgqtu6w9fYs32tV9EP+yZaPaDX9bcV2yxQHsuz2-7n97+0IsId33lF08KO+hfitHBgDcwOh3-bBU5287ztye2VavTRni7HHAeOwXaIZ2YHNVuB1qQQfh2GM4lvh1lZful8AA5PZbEcExn+43dszhbxhdRy7gweq+uS7xf2eHapXw4AeHxAP1H9lrgiP1qOMmE7tR9YNA+XuyPWgLjxB4o9UvGPOg49rBzEBwcX28HT18gC9aYfjCma3cMh1ZZ+tG2qHJt2oLQ4zvmOZF4w9RVE8GIQ34ytj3MbKa2CWAGTBToY+47JsAqrmPjyQEo6ysQAXgMdvq0I8Yv6AXH3DjJzk-gcD3Wk3QSMIA-QsJZZrEj8p7A54dVOFHNT1S4oAGAqO2HnADR1FC0e0YtESQe8MCYMcRB2nEiWRV088smMBHk15x+Y2LtrmfyKTvwCM5kdjOg+0oap7U6CdEAQnR0MJ1rdvvEPKKY6OJwbd+vG337qT82+k+2eZOf7RDjpxioAeQ25nCzs8-FCKfnOgXP8qRx454dK1I+Ez8S4MGZT8Ol7FTlF-rVGZ3PVLC4QJ7vYu2-mD7x1losiDhkhZT7sCNWy84IdfsCQ2Qh+45gyBfW5nf1xYuVhwttFP7CikFyy86kQu8nXLkB4yZYsHhkbHFnu+bekcrXQVuzza+i9UuR2qrZNpV2g9lt42UoGD5W9g-PvPONb+DiJzwuFeDESH3PL5xQ8YvUOZa8CtJ4K4YfMvmH8PP2Ko46McPdbi9+RbItHsBPsXkLw53GbkfrFRHvWThysMueKudnYbmxaq7UuBvZnFD6F0s50erP4Q6znUJs4zvGOnE+gMx6Cssct7g3CT+Z-Y-cjz4nH9R69E4hjcXolX8blV6Jd8eZB-HJLsgVpaNeX39LTLpRdE9ifA3yH5bu18k-5dOvsh6ii1+C5YcHPR37top1sBDOLuG3pQUFeM9beTOCjdThp2QFjuhvTOxdtp5O86nKvfBQwfO9ZcGf6BhnSLzV7Is3fKW230z5Se1dTeaPI3GbvRxuMMenvOnzb3wX07LfkAO7xzlM6c9vbiI13G7m54S8yCKAg3gvYJz28ZdmvCHM7kQEzQ+dykbXo7353y8dcAvnXL1zD7k5sdQvNHjGRYMCYnfyvl7Wr2Yt0C6aJuZ1b7nF-TcY+RQpmGOeD8ynY-7WgQKGI62hypc4ZqqJ9+7ThrPsMuTX4TsgC9c0XyQ2XPLjl8-a5dYX6jMVT+-beEWO253WKmKuoqU9eQDcrIPRR2QnvWWYbTFxkwq9vYQPZXa7wGjjcTfk3kHu1LRdVW5sQAqZjCDz4DRluRE5berxW5g41f03AanN7m7zd3tPPe3199D1+xM9WuuHw7+J4bcof2W0FaTmZTZ3Wmv8Jy104Gu4lUVGeQXJn3XeZ5de0Rwbz4XsoYu+XGLed5QIxUHGii7XPWBixAEV65WzkWvvXpgOGa3S9BLli6q9z9bqPMZZrOFtcs58GqA1zeibtq86JfsHvmnJ7gF5CpuWZWJvoH3s-lYsDsBGAU3xOvN688bUomibgT-GXqduIyA9i38o4u5WIQUzD-Nd4N+BrweVvHr9C+t7l7MZ47riT+9t94G7f535AR7314ArJn9AD-CwIiESAffvyk5Ib7wHg83fh8L92ewxYB+Hva3G6EH4NTVIrgrPP1tRRSyH4OAuAbiaYOd7MiLervW78S5j5fOGvZPV901wp54UpeH6eHzL2O8TpyvfXA1YssZ8GpmfdFNX16-p++Bk-yAZ-Ep3svOXY1LNRiMxZjBy-m2H6ANQag-T5syWNlS35n6peUkG++LD9Y8BuGWg6i+Aw-LIM4GubOBo5zgXOtqAJfweCA0OHcgSlXjTPDygQaer0BAgpL56uYP7DJ3N-qbLfvQa35EVt-2+PYTvl327+cBQ9Pf3vm4WnRXC5h2UQfkP7CeAgR+DXKHjn326S9DKYqTNU+pdX6g3Umv91fnz86SdC-P7eXu9vdLmICLQbILurwZ-Wpi+KvEv3dRoGq-k2Gv9f98sOUE6teG-B+qK2N6fWsOQ303-QMd6-SHK+E7Zvn2k8Bo1-z6dfvLyeLFfWWdHX6Rr1P-P5r+TvyzvrPR7Jt5eqbBX5f5N4O+U-x+v9Lf2s539beFve1A6iNS-YS4GV4XeWivtTz26cHCinUIAWZD7+F9JP4-KZ2Ht5kAZ-q+Rz+V-rf5ruj-jq47WE8qS4HW5LkaCH29xjaqQc-qpJ6XWMvA3AOYaHmQBd6navWwqet2Jy62umnsCbb6UvAC4bqHalHpdqUEL3qFcoHsZgJA7RLmojqEUKPqTqIXLCgEoK4IEC5gc+l3hkA67DRYQ+zfvY52ey1g556YkDmjYi+Crig6i4OrPB5kAIWCIEYmEXjI5GBz+Im6mB6oBYEceVgXQSU2OASzZ9MHnnTzrsJgSoEl+jzjpa0B9AbwGMBrcE36JO9rpwEi+X9mHjX6W6gwE96I-gAiCBdgUaDmBYgSep2BsoJIGNyU6jIGBAcgcBCKB5ACoHWO+wEA4MW2kDCATCYpszQhB97rA6i4FQRwC-kjALdD0qcvtvZ4BXbirb+BcngZaBBkgBpiKY1fvBKhBWXsk4RBLltNaXU61uYJo+NMhNRlA3AWaaDBdBAIH7qQgSkHIQ56nmoZBueGwJSB16rkGrg8gYUGrW0wQYbhWl9CV4jeJQeYCeuhJklzDB6-HQ6i4sEmoFTWd-BuwRuA8OAFHQWAVMHn0MwVcG-U33llat2ZAP1TsOjwd0JOwNqi8F0Ebwf04huDwe-xfBKZsd5bASzr8GSO9-vTauWFwc7A-U6Pst6+B2ljQG9BxLP0ErB5GEzSZaowYL6z2imPCHkYnejwEDBfAbrqZqyQdtSiBw6ukESBs2gcHj684MuCT6rchbiKB9+lj6COYZo+yc00gFyC1sXNCGYTBefA9AF8xrE3J6cMgf5qlB6For4Fea7rBof+jdjgHP+B4uCH9UIZrKFRQs1nLwCgbiB-5K+qoWoB92moa9z7keQa1wgeKAU5DpMT-C-xGh-+iaEdBe1sh5+B5IZz7yeVIXwFPBjjsdD0hBHmeYLYzIQfoxhO6pUoGs6wdyGpBfIWVwCh+wdkHSBooYUYlhkoS-77eUUDaGHenEIqFRQyoYyYuhpAG6FzsHoUSi6h5gHd4C+FAuXZ9210JFY72SIT9YGhnfkGEIh8EjdBP+nfi3Z+WEIe3aMm1YXaFFWG-vTQqhTIb3aW27of7wtygwF6EdhpAF2G-WSoOwBqOWwD2Ebh6obPzdO5oUOEK+foXby4WqAmOFx41AidBTh3ls6KWh8QASZw054ebZ9h2sAOGdBPoYr5RWz4X+CvhpocF4aQg4YJ71E+9kQHFQyoGULiql9HeB7Q0MnKq0uUnqbDxetAeOYig9NJ0bEmMECGblG6Xt84d2qETWEEw1oTaremjxhnaWmV+qaaxBt+qK7ShIbjBD92JEeXbIAXwPCDhGHuM4D9BjjKxo+hOFnwBIQy+Gs53gxSDpyOiwvlH6ZA-EU7BCRtEKJFr6CcOBxQRjUNtbN277q-4m2SQMSLte+1EkBcYegY0CqRgkW1gaRbIUVB1gXGDtbaGH5O8HOO1EbNaJASvuRG4hfFsxHEh0EdTaZAq2Lu73edRkxguERjLNYZA1SA242R6kc4CrY6Iq4Twe6rqt6T2MENsKgUL3rN41kfEQJGJRyUR4o5ReELyrIBEUa0aUMQqmXBKRlgepoJRdkUlHEgKUUdighFYaYHYQMEHfREmjAJ4AtgnWgVFqRTUclHngOsgNERAFUYybYYMLHVGOBDUYVEjRLUaMCThOAQZFdBZql17chtACMZCAi0SdaHyOEbRLy89EgYD7R-AMWzYM8zJlLYYTYF8CPkxLKgDVsYDtK63GsgFogRAhHE9S0a+RI+TU2rQc1GfC5+uqbGmSnDCouiSMt8L4A2GK1GgYGEpdiZSJUc95lRa5DUAwxSMf+TlRCMUjJjRfURNHjoMMYsr-8kqnOiZSK0SdA1AtUDDGJALYLGYWCbkDdh5A4gHBwewpQOqrsAhUN2QzycEYByEBPADtHQWe0cNGYYDxiGx0upAHRIg4jUXCDFs-QdjF+SosWRypM9LJjBkAT0VK6Hmb0VMDsAn0foABRv0UGwUAAMf0FBY+sbDyZS2am2qKxgqmdi64owheIGGWPAlAsxzgEOCba5GD7Dky6IjtrRB3pqQHYcNsbTH2xDMU7HMxTkKzGRaUbJ7G1SSMgdoH61sTTF2x4gA7GMxzseHGuxccRzHyxMklpEcafsRiwBxicXeDBxjsUzGIALsfVquRHANEwxxfkshqJY7sRBHwS2ceZBsGmbi-T4AtULnFZwXMS3HmRj5Dyrdx8-m3FgqP3uGFku20btHsmtkcDqZckHOLHemJ0VLHnRJZNDo2mRbGDR1SbxhvEaA90arHqxL0ZrE9470TrGZY+sYKqGxAMTjr2cWLKbHfRTMubFIy-em2qI6tpkXF0xKcaHHlx6cYC7Wc0cSBJIyQ8TZyvxt+u-ElxqcWHHqarsUAk1xACX5LiIdVPazqGL4c3GbxgCW3E6RlMUAlPg8UFloQxfkv3HORQCR15VxUECW4POE8X+a7R2EFoAZkImgvFZ8jILrEzy59rrGzSTEPNLq0PAEtJkAcABAD3waUMADZIZAPoTYAtUPgAiJ+wIr6sJmWMvJzSC0twnxUZAPfCoA4MIxChgwiaIm4AEibIBDmI5rlrjmG+NOBTm3EJIDSgp0OYAyJegGz4-mk8YLFy8fgGiz58C8ZLFRQ50I4myx+fI0DPQZoL9ikxSMr7wV8-iXXHuELMg4nqsgfHOzhJj8XXH9ht0IgBvQGcP2HBJMkv3ZHQYSWOyrk-YTUDRJ3cuGGfsnevUDCRn7LYlUJgsZLhaxlATvq4gy2CLZGgRROYBlkRgvhouAR4g-yKgkCNeweAGZsdx-8mwm0k3sQEWGEBaohKiplArcF0kRAQyRQkEB20eca3GFAbIjVJYFpGHl+thD3jV+TMiwELu9Jpsmgx5dvrEbmNCfkDZyPoQxazWdCVyCtCDbvrEmBxyYwAOBMgmSEQWFIeQBFEqXlKCJhLfpJE94I4nKBUAn9rcY1AdSTwBb8ADqQCHJcTJNKGR3Yd66kOTEU9RqkZAKjCPJJ-j9YfJUULD4oht7KOArux8XUE1WtxoCqTJCbkFHrRgdoSlPUEyQ-xU2ljHF49BUYQZbvJtQXrYZe6gck5ApBpoCm-J+ACClgp-fo+YX6Vps2DQpGUba7QMLKSL79m0gminkATNAghYp8PrimMmWsX5ErWRKQMndJLbnpHiAdKfNEXoRKdSmDJoYTMlCeCEfzHfGWEcZgLxeEa8lkABEQyb-kwJodB6A7Xtya+4q7hRG2uSYb5GRBM0fRoKakKU0C3RMKb9bZRyMQBR5RGZAK4tRGMV4qzUagXybfCFZuuR0+BKYq4tRRqqlEkhM4VsA-ODFlGlP2xHi1FExyysgFUcuYv2BK+owC4REYXtgBRJprhDB7LRXWGAq9YsMfSI5poaRWld21QDIQxpFROzHdAMhKxryKLaasK6q2Ceuyf87kVFAzRs1tpCQ66ackb3xoMZzEnekoM+7bu67sSC+BlCQfbfGisYsmxsuEQylrJ-QfKmQIXyfa5emd2gC6KxrIWabkeeodZ5bAjQekjVBl6T8Bru1se+nNBrQa3B48a0bBHhhzybpaMplIWyFMBSxPSFsBOFremMR96f7FYsj6WxHmm4KYKkgxwqT+IFxsOmclbAxdrN5uwyYbizLp0sfwD2RT6ZbHWBmrPB4cgjcVnEHih4TZ76AkkQOokZAmGRkrxlGWhnexIOpzzGBibv2r8ZUcV-zMZBGTPbYAKeBxl3++gZXbkZxSQ5GZx5kO5x0ZmcaSFnpiXnQFQZPrjYl72fMRcb7yICZIDHpV1rPBgZtAdfH5spHF+nfA16RynsZd6ZEHGZauplzyaHES+nQ2b6fJCVBcNg1S2Za7sZnDpPmU0GbpAGYTQmp9KaslaZVmVlwhs0GZ9Zepo7nBl-JmXAxFixaTi5nWmbmbaYYZQaRXDbxSsc6LiZLTn87VATYRXaY2CmbRCxZ8ms-E0ZoWNqnNWbbs4D1ZC2BpnRZXPrVlYsGKc5YDS5qbQDYRVSdJ5qA0xtgCzG5AE0ajA04GsaQKGwfzFTxK8T8YfGc2XYmeAQsTPHOQisacZlJ62dPFCRN2vxl2qK2YgprZtADQmXJO2Qfa7R4SU4nqhV2UQG7RFScfExA6AHcKdm94ENScAO4DUBvZdQuBy0QTEMYBMQQ2mBk1ATEJwDfgvFjVk54DGhZkGmwNm+ZUmHhPqZ+hAYphkF6DjBzp6ijwDYkWZUoG5CtQiOdoIfmJIN25q24OZDlhUE4DDnJAcOah4I5hFl+YcA+1Fm74AfBrRDIAOgPCC0QA2vfCoITEB9DYAHOc4Bc5TsLRBgATEMgCZgYAMAAPwdwYkDzy1QtwBQmTzGYSCMmOOrlO0XEHkhkA2ibynGY3EtokOBSOcrko5T1AabmAKRjvxGyYclIZJCTwACB4RBOQEpecxOdQik5CuaCae5SkFwBQ5E4JTn+59AGLhlMdOR7jDIYGSOh+51OcHmh5LmONljU8XtrFsJViccpXGq2asbp5p2axjnGVEkxJPGZEkNJbGb0SdlOqOeUXlHGNuTEYF5lqhJDWquGWLGl5z2t8bGZNeYZl3G5RlnlOqf5khGzmtAETGdGGEeaJWpIFl3mjYf5vMk94J9k3nEsf5pameytLjPnzZ7efXm+qIbNPkrGB6ddrGZG+Z8YieH8kIApWu+RnkUuonp-JnWi+ZvlEBlLkfZ-2x+adn75MClNg0u1qUvnbRN+bAoSel+Xvmn5B+YrHkBi+UQDR5vFsOlaI6RPplkACxtOCDZmFAvFyYZoJhQuCH1hkCZA8UsFLuCZFPgAKkyohZppSS+k7QJQcwY0AXoAVMAQwEFcFEw3oJBe5I8eWBOQXm8PkvcR7Q5gjOYYFNBWQXNgzCvgUDcvxMlDIQPsFeBYFbiI+hMFdCXYDKgjQO7RhYMBKIUsFbspESCAhUEhHTgjQOUpi40OFeBPiuSGnQwQWhU5iB+TzBQUZAGuYapRMjBV1Dpi-BY0AWQNQG5J0I3xHBRZA09EYXHYofg3guFPsBZBhktUG2TxSTQAqRPwPBY6A8FlhZtbFG3BpRQlWqBRMKbCCtCIGT4AAeiJcF9LvnT+UEwkkWNgjQJEiuSNBT8Sq5iSk0DAEehcYVuFmOKrapFxRfSKmgyEDjQ+AOoknY8qiuTKCv0M5qBDxy6gDObdAuNMx7JAjRWmZXgEcsKzSg7Rdzqnx5IMhBTwG9lZZ4JQILFCtwPhTXR+Fdku5Ib0pJgULBFMSKEW2KJMHpYBslgEHCOgahQbgaFN6C4U6FpxdoUz0BRWcWlFphfvgH0JMOwjcIjGlkXUApqfBG-msBUdHjS5IAgVlI6OfZiP2qBe5LeY2+JsKYFE6HQg4FzrG9jJFPchZBEhYMSgTLF9hRwUeFVBSiVToOtPQVmF+BbIX6YEhasCkF2dKnwuFGUpsXhiVhVUppFD6AQXyQzBQSXw8pAFIVuIMhXhQMl4hfwYKFShWuali6gEcVsMJxZUXnFwpVcXI4nBSUWF+HheYV9QfBWEXhITDNgB2FU6HkXOFlxVKUMFCpZPDzFvhSCX+FKxaoQxIGxehRbF4RT3KRF1FNEV8AsRSSVCFCRRAF4FKRRjhpFvwswqvFJxDkX2FqpYYVFFEpa4VSlOtJUXPK6Rd0UNF71GIADFH0K0U3MIxTbxuyoZb0XhlzRYMUiAgQMMUIQH0ZlgTF69vsUN2psHMWQICxfHSQlqkJ+ABFNdEEVrFowpSWbWqxbsWJA+xc4QClL4EKV+lIpW2Vilu8DcUaluJbPBBYKpEJ4vF6gFZDvFvMUQC+gFUB9nuADIHNn4AP0Hbxr4Ppm4oy46xqFDzlXAMExxAjOJixmKy5SfJvQ4dPtQRA8cmnae2quE9oA52AGo6rcR5ZnJqO2csTTgAUAHABIAaAGlB4EugIgBRyt0LeU+wp5foCyABgPADGAUYNgClaMANnKkA65YuVLx4gDKAB5OGqACQAMAAgAoAQ0BpJdQ1vucCMasMB+ELKCoeQAQp-CS4CZAJFSRWQVX6BcENlWgDOX-ynXPJJdQvgVUY1GSvg0ZTZLRnibtGhJl0a6APRr7hzZ-Rm4guIHtjBAjGYxtSBeQUxjMZzG7FYsazZD+bAVj5GxhXnbGPBXsZv55eQoIogxxs7Bt5k+ZcYaVkIIenIZjeV9pGV2+YVlt58+YfKYm2AP8biOJxPo6K5EheCZm5+ReKXNKJhXQy7kIQDrnImE2hSAdkGJs6bYmjldoKcV7DgTCOipJukhEApuQCa2VdJsu6SuzJiqaHgiZiKZcmDTrybyg-JnKZbAuZpyZSg1QRKY6i0ps5VclApvKbCm4gEqYW2rJi7A-RwWVqbORupkQCo5-ye1WrpwqaJEqKQad1nsRFFvaapCTss6aum5kVFAignpvRFLlfpu8ABmNtCtjBmjJkiAleyoZ1YuOMZqZBK+CZoVVYppREyA9JeVuzkVVRUDVWSg+ZoGbYARZrlUlm+QJ2b0AMtN2bvMNZoinNalsl7nzyjZiL4tmuVW2ZrO91V2ZVm6Zo0DSpehuGF6JIoKOZDKOgEYnWAU5qMbIRxBvJhLm7OqQGnOG5luYIsH4XuZOQ0rkhCgmJ5pjBpcF5sABXmN5hLH0R95hcAvqz5kpBI535l+ajyQAA&quot;&gt;the playground&lt;/a&gt; that it also includes the files from
under &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test/&lt;/code&gt; even though they aren’t used.&lt;/p&gt;

&lt;p&gt;Obviously this is just a prototype and weird things like this are to be expected
for now. I’m not entirely sure how I want to handle things like that. I’m not
convinced I’d be able to implement a tree shaking algorithm or anything fancy
like that. But maybe just a simple &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;export-ignore&lt;/code&gt; option?&lt;/p&gt;

</description>
        <pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate>
        <link>https://taylormadetech.dev/2026/06/01/taylor-monthly-may.html</link>
        <guid isPermaLink="true">https://taylormadetech.dev/2026/06/01/taylor-monthly-may.html</guid>
        
        
      </item>
    
      <item>
        <title>Taylor v0.4.3 Released</title>
        <description>&lt;p&gt;This is another minor release that fixes a bug in the export process that caused
assets not being exported correctly.&lt;/p&gt;

&lt;p&gt;You may see some warnings when you run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;taylor export&lt;/code&gt; letting you know that
you’re using a deprecated key in your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;taylor-config.json&lt;/code&gt;. The old values will
continue to be supported for the foreseeable future but may be removed in a
future release.&lt;/p&gt;

&lt;p&gt;The following keys are deprecated:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;export-directory&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;export-targets&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;load-paths&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;copy-paths&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In favour of:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;export_directory&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;export_targets&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;load_paths&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;copy_paths&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/HellRok/Taylor/releases/tag/v0.4.3&quot;&gt;Download Taylor v0.4.3
now!&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;changelog&quot;&gt;Changelog&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Properly use Taylor::Config through the entire export process&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Sun, 31 May 2026 00:00:00 +0000</pubDate>
        <link>https://taylormadetech.dev/2026/05/31/taylor-v0.4.3-released.html</link>
        <guid isPermaLink="true">https://taylormadetech.dev/2026/05/31/taylor-v0.4.3-released.html</guid>
        
        
      </item>
    
      <item>
        <title>Taylor v0.4.2 Released</title>
        <description>&lt;p&gt;This is a very minor release that fixes a couple of bugs and tweaks some of the
development experience.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/HellRok/Taylor/releases/tag/v0.4.2&quot;&gt;Download Taylor v0.4.2
now!&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;changelog&quot;&gt;Changelog&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Lock the MRuby version used in the export docker image&lt;/li&gt;
  &lt;li&gt;Refactor &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;talyor-config.json&lt;/code&gt; handling&lt;/li&gt;
  &lt;li&gt;Update the Dockerfile.dev for Debian 13&lt;/li&gt;
  &lt;li&gt;Fix OSX exports&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Wed, 27 May 2026 00:00:00 +0000</pubDate>
        <link>https://taylormadetech.dev/2026/05/27/taylor-v0.4.2-released.html</link>
        <guid isPermaLink="true">https://taylormadetech.dev/2026/05/27/taylor-v0.4.2-released.html</guid>
        
        
      </item>
    
      <item>
        <title>Taylor Monthly - April 2026</title>
        <description>&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt; &lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Count&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Releases&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Commits&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;9&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Contributors&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;1&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://github.com/HellRok/Taylor/pulls?q=is%3Apr+is%3Amerged+closed%3A2026-04-01..2026-05-01&quot;&gt;Pull requests merged&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://github.com/HellRok/Taylor/issues?q=is%3Aissue%20state%3Aclosed%20closed%3A2026-04-01..2026-05-01&quot;&gt;Issues closed&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;0&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2&gt;At a Glance&lt;/h2&gt;

&lt;ul&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#taylor-s-five-year-anniversary&quot;&gt;Taylor&apos;s Five Year Anniversary&lt;/a&gt;
      &lt;/strong&gt;
      It&apos;s been five whole years since I started Taylor
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#refactored-taylor-s-config-handling&quot;&gt;Refactored Taylor&apos;s Config handling&lt;/a&gt;
      &lt;/strong&gt;
      Noticed this area was really bad and cleaned it up
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#taylor-export-woes&quot;&gt;Taylor Export Woes&lt;/a&gt;
      &lt;/strong&gt;
      Found an issue with my exports
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#taylor-squasher&quot;&gt;Taylor Squasher&lt;/a&gt;
      &lt;/strong&gt;
      Brainstorming around implemntation
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#taylor-has-a-community-site&quot;&gt;Taylor Has a Community Site&lt;/a&gt;
      &lt;/strong&gt;
      It finally happened!
    &lt;/li&gt;
  
&lt;/ul&gt;

&lt;h2 id=&quot;taylors-five-year-anniversary&quot;&gt;Taylor’s Five Year Anniversary&lt;/h2&gt;

&lt;p&gt;I wrote a whole &lt;a href=&quot;https://taylormadetech.dev/2026/04/09/taylor-five-year-anniversary.html&quot;&gt;blog post&lt;/a&gt; so go check it out!&lt;/p&gt;

&lt;p&gt;I’m just so blown away at how far I’ve come with Taylor. It even lead to me getting
my current job!&lt;/p&gt;

&lt;h2 id=&quot;refactored-taylors-config-handling&quot;&gt;Refactored Taylor’s Config handling&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/HellRok/Taylor/issues/62&quot;&gt;An issue&lt;/a&gt; was raised because I have a discrepancy between the
documentation and the code. In the code &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;taylor-config.json&lt;/code&gt; is the file used
for configuring all your Taylor needs. In the documentation I call it
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;taylor_config.json&lt;/code&gt;. An easy fix right? Just rename the documentation? Well
yes, that did fix it.&lt;/p&gt;

&lt;p&gt;I looked closer at the code though because I briefly considered supporting both
as a politeness. I did not end up doing that but I did notice how awful the
configuration handling is inside Taylor. So I took some time and completely
refactored the configuration handling and created the
&lt;a href=&quot;https://github.com/HellRok/Taylor/blob/main/src/ruby/taylor/config.rb&quot;&gt;Taylor::Config&lt;/a&gt; class to help out. This has reduced the amount
of magic strings across the codebase and now lets developers easily use this
configuration for themselves if they wanted.&lt;/p&gt;

&lt;h2 id=&quot;taylor-export-woes&quot;&gt;Taylor Export Woes&lt;/h2&gt;

&lt;p&gt;The build for my previous config change broke on the web test suite. I thought
this was really strange and was able to reproduce it locally. It just boots up,
runs the C++ code portion of Taylor, then does nothing, and exits.&lt;/p&gt;

&lt;p&gt;This took a decent chunk of debugging, lots of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;puts&lt;/code&gt; statements, and even going
back commits. But the strangest thing was the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mrb&lt;/code&gt; state didn’t claim to have
an exception when running the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mrb_load_irep&lt;/code&gt; method to load the test suite.&lt;/p&gt;

&lt;p&gt;Interestingly going back to earlier commits &lt;em&gt;didn’t&lt;/em&gt; fix this and it started
happening on my Linux builds too. This made me realise the actual cause. It was
because I was using the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;master&lt;/code&gt; branch of MRuby in the export Docker image but
I was locking it to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;3.4.0&lt;/code&gt; tag when I compile &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;libmruby.a&lt;/code&gt;. So the most
recent commits to MRuby seem to have changed how the bytecode is generated and
loaded. This meant the older &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;3.4.0&lt;/code&gt; version of MRuby couldn’t load and run it.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/HellRok/Taylor/commit/cd10abef25408d8f004f26d5c916fc1d5a239d9b&quot;&gt;The fix&lt;/a&gt; isn’t that interesting, it’s mostly just me locking the MRuby
version so this doesn’t happen again.&lt;/p&gt;

&lt;h2 id=&quot;taylor-squasher&quot;&gt;Taylor Squasher&lt;/h2&gt;

&lt;p&gt;I’ve decided to pick this project back up and give it a serious attempt. I do
believe there’s some huge value to be had here. Right now I’ve mostly just sat
down and thought about what I want to tackle and how I want to tackle it.&lt;/p&gt;

&lt;p&gt;I think I have some decent ideas that’ll let me implement &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;require_relative&lt;/code&gt;
too, but that’ll take a little experimenting before I’m confident.&lt;/p&gt;

&lt;h2 id=&quot;taylor-has-a-community-site&quot;&gt;Taylor Has a Community Site&lt;/h2&gt;

&lt;p&gt;You read that right, Taylor officially has a community site! I did the big
announcement &lt;a href=&quot;https://taylormadetech.dev/2026/04/15/taylor-has-a-community-site.html&quot;&gt;over on this blog post&lt;/a&gt; if you want the details, or
you can &lt;a href=&quot;https://www.rubyforum.org/tag/taylor/63/l/latest&quot;&gt;just go check it out&lt;/a&gt;!&lt;/p&gt;

</description>
        <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
        <link>https://taylormadetech.dev/2026/05/01/taylor-monthly-april.html</link>
        <guid isPermaLink="true">https://taylormadetech.dev/2026/05/01/taylor-monthly-april.html</guid>
        
        
      </item>
    
      <item>
        <title>Taylor has a Community Site!</title>
        <description>&lt;h2&gt;At a Glance&lt;/h2&gt;

&lt;ul&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#intro&quot;&gt;Intro&lt;/a&gt;
      &lt;/strong&gt;
      
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#what-does-this-mean&quot;&gt;What Does this Mean&lt;/a&gt;
      &lt;/strong&gt;
      
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#how-do-i-participate&quot;&gt;How do I Participate&lt;/a&gt;
      &lt;/strong&gt;
      
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#outro&quot;&gt;Outro&lt;/a&gt;
      &lt;/strong&gt;
      
    &lt;/li&gt;
  
&lt;/ul&gt;

&lt;h2 id=&quot;intro&quot;&gt;Intro&lt;/h2&gt;

&lt;p&gt;After much hinting, faffing about, and being worried about having to be a
community manager a golden opportunity fell into my lap! &lt;a href=&quot;https://www.rubyforum.org/u/javier.cervantes/summary&quot;&gt;Javier&lt;/a&gt; reached out to
me to discuss bringing the Taylor community to the &lt;a href=&quot;https://www.rubyforum.org/&quot;&gt;Ruby User Forum&lt;/a&gt;. I
was weary initially because this is a ridiculously kind gesture, but after a bit
of digging and a video call this actually is just an incredibly kind offer.&lt;/p&gt;

&lt;p&gt;You can see the &lt;a href=&quot;https://www.rubyforum.org/t/ruby-users-forum-open-source/254&quot;&gt;announcement&lt;/a&gt; on the forum too! There’s quite a few FOSS Ruby
projects that agreed to this and I think it’s going to be great.&lt;/p&gt;

&lt;h2 id=&quot;what-does-this-mean&quot;&gt;What Does this Mean&lt;/h2&gt;

&lt;p&gt;You now have a place to discuss Taylor, ask me questions, get help, show off
your cool projects, etc. I’ll be an active member there and I will be posting
the fun projects I’m working on. If I’m looking for feedback on a proposed
feature I’ll be posting there too. Basically, anything Taylor is fair game.&lt;/p&gt;

&lt;h2 id=&quot;how-do-i-participate&quot;&gt;How Do I Participate&lt;/h2&gt;

&lt;p&gt;That’s an excellent question! It’s really easy, all you need to do is:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Head on over to the forum and &lt;a href=&quot;https://www.rubyforum.org/signup&quot;&gt;sign up&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;When you create a topic, be sure to tag it &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;taylor&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Add the relevant category too&lt;/li&gt;
&lt;/ol&gt;

&lt;figure class=&quot;post--image&quot;&gt;
  &lt;a class=&quot;post--image-link&quot; href=&quot;https://sean.taylormadetech.dev/data/taylor/community-site/new-post.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img alt=&quot;The Ruby Users Forum new topic box with the &apos;tag&apos; field highlighted
showing that &apos;taylor&apos; has been selected.&quot; src=&quot;https://sean.taylormadetech.dev/data/taylor/community-site/new-post.png&quot; title=&quot;The Ruby Users Forum new topic box with the &apos;tag&apos; field highlighted
showing that &apos;taylor&apos; has been selected.&quot; /&gt;
  &lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;That’s it! It’s just that easy. If you want, you can also tag &lt;a href=&quot;https://www.rubyforum.org/u/sean/summary&quot;&gt;@Sean&lt;/a&gt; as
that’s me on the forum.&lt;/p&gt;

&lt;h2 id=&quot;outro&quot;&gt;Outro&lt;/h2&gt;

&lt;p&gt;This is a huge deal for me, someone across the world took notice of Taylor and
reached out to me to offer this amazing joint venture. This also means I don’t
have to be a community manager as the thought of that scares me a lot.&lt;/p&gt;

&lt;p&gt;I look forward to seeing you there and am extremely excited to see the projects
people have been working on!&lt;/p&gt;

&lt;p&gt;So please, head on over to the &lt;a href=&quot;https://www.rubyforum.org/&quot;&gt;forum&lt;/a&gt;, all you need is an email or a GitHub
account and the community as already welcoming and friendly.&lt;/p&gt;

</description>
        <pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate>
        <link>https://taylormadetech.dev/2026/04/15/taylor-has-a-community-site.html</link>
        <guid isPermaLink="true">https://taylormadetech.dev/2026/04/15/taylor-has-a-community-site.html</guid>
        
        
      </item>
    
      <item>
        <title>Taylor&apos;s Five Year Anniversary</title>
        <description>&lt;h2 id=&quot;intro&quot;&gt;Intro&lt;/h2&gt;

&lt;p&gt;This is going to be a long rambling post about the past five years of Taylor. Be
prepared for it not to be well edited and for my thoughts to jump around a bit.
I thought about making this a video but life has not been kind recently so this
is what I have the energy for. So please sit back and enjoy my ravings.&lt;/p&gt;

&lt;h2&gt;At a Glance&lt;/h2&gt;

&lt;ul&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#five-years-ago-today&quot;&gt;Five Years ago Today&lt;/a&gt;
      &lt;/strong&gt;
      Where it all started
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#major-refactor-mistakes&quot;&gt;Major Refactor Mistakes&lt;/a&gt;
      &lt;/strong&gt;
      What I did wrong with the refactor
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#taylor-squash&quot;&gt;Taylor Squash&lt;/a&gt;
      &lt;/strong&gt;
      Changes to how Taylor concatenates your project into one file
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#exporting&quot;&gt;Exporting&lt;/a&gt;
      &lt;/strong&gt;
      Options to overhaul exporting
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#dependency-management&quot;&gt;Dependency Management&lt;/a&gt;
      &lt;/strong&gt;
      Thoughts on how to use gems with Taylor
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#future-plans&quot;&gt;Future Plans&lt;/a&gt;
      &lt;/strong&gt;
      What&apos;s to come
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#outro&quot;&gt;Outro&lt;/a&gt;
      &lt;/strong&gt;
      Cheers 🍻
    &lt;/li&gt;
  
&lt;/ul&gt;

&lt;h2 id=&quot;five-years-ago-today&quot;&gt;Five Years ago Today&lt;/h2&gt;

&lt;pre&gt;&lt;code class=&quot;language-git&quot;&gt;commit 0d9def80e734eb3df48469d4a4a4a8ebb964f42c
Author: Sean Earle &amp;lt;sean.r.earle@gmail.com&amp;gt;
Date:   Fri Apr 9 22:02:11 2021 +0930
▎
▎   Initial commit
▎
▎   Got basic mruby integration but terrible structure and not very DRY
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This was the first ever commit to the &lt;a href=&quot;https://github.com/HellRok/Taylor&quot;&gt;Taylor repository&lt;/a&gt; so I
treat it as the birthday for Taylor. I figure I’d cover some of my gripes,
lessons learnt, and future plans.&lt;/p&gt;

&lt;p&gt;As a fun fact, this is the list of implemented Ruby methods in the very first commit:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;init_window&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;set_target_fps&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;window_should_close?&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;begin_drawing&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;end_drawing&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;draw_fps&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;clear_background&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;draw_rectangle&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;get_frame_time&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;Colour&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;new&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;Colour&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;#red&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;Colour&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;#red=&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;Colour&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;#green&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;Colour&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;#green=&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;Colour&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;#blue&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;Colour&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;#blue=&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;Colour&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;#alpha&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;Colour&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;#alpha=&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;major-refactor-mistakes&quot;&gt;Major Refactor Mistakes&lt;/h2&gt;

&lt;p&gt;The major refactor took about 2.5 years and the way I went about it was (in my
opinion) all wrong. Sadly I only realised that about 2 years into the process!&lt;/p&gt;

&lt;p&gt;After working on Taylor for a while, I finally decided to give all the methods a
refactor to be my vision of what Taylor should be like to use, instead of just
being a one to one copy of Raylib. This meant that it was going to be a much
more “Ruby like” experience with classes and keyword arguments. This was also
raised as the issue &lt;a href=&quot;https://github.com/HellRok/Taylor/issues/11&quot;&gt;Top-level namespace is overloaded&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I did sit down and write out a version of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;example.rb&lt;/code&gt; you see on the front
page to try and figure out how I wanted this to look. After a little bit of
back and forth with a trusted friend I had made up my mind about how I wanted to
structure everything.&lt;/p&gt;

&lt;p&gt;The mistake came when I decided to just start rewriting all the C++ code into
the new shape. I realised I could have taken a much shorter path of adding a
layer of Ruby on top to obfuscate the lower C++ code and slowly chip away at
rewriting the C++ code later. This would have let me get the release out a lot
earlier and have people using it and able to give me feedback.&lt;/p&gt;

&lt;p&gt;In terms of code, my proposed refactor would have initially just looked like
this:&lt;/p&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Window&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;width: &lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;800&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;height: &lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;480&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;title: &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Taylor Game&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;init_window&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Other than that though, I’m happy with how it all turned out. I think the new
design is significantly better and helped me find quite a few nasty bugs hiding
in the C++ layer thanks to my usage of pointers and my understanding of memory
management.&lt;/p&gt;

&lt;h2 id=&quot;taylor-squash&quot;&gt;Taylor Squash&lt;/h2&gt;

&lt;p&gt;I wrote about this in the &lt;a href=&quot;2026/02/01/taylor-monthly-january.html#began-redesigning-taylor-squash&quot;&gt;first Taylor Monthly&lt;/a&gt; but to
summarise. Currently when you run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;taylor squash&lt;/code&gt; what it does is concatenate
all the ruby files in the order they’re required. This can lead to a variables
scope being a lot larger than in development.&lt;/p&gt;

&lt;p&gt;I’d like to replace it with something a lot smarter that uses lambdas to keep
the scopes from polluting each other. It still won’t be perfect but I think
it’ll be good enough to not affect most games and applications. I also believe
it could be useful for “compiling” standard Ruby applications for easy
distribution.&lt;/p&gt;

&lt;p&gt;If you know anything about me it’s that I think way too much about how to
distribute the things I develop. It’s one of the reasons I love web development
so much and also a major reason Taylor exists. I could rant about this all day
but will instead leave it there.&lt;/p&gt;

&lt;p&gt;You can see a prototype of my proposed squash redesign &lt;a href=&quot;https://playground.taylormadetech.dev/#version=v0.4.1&amp;amp;code=MQQg9ArgzgTmBGBLAdmApsgbgAhheAngFBEDKAigKoCCpAEgKIBKA+gGICSAMg6dgLzYA3kWzYARADNEMKABcWMNAEcIMtOIEA+bAFodIsWIDGAGwCGUKNjYz5oo2IAmaSdihpTkgHTHzp0wdHMQAHCDlrcVtZOXEgowwneMSHAF8AGgdxD2MAe2QnRRU1JU1+HX1heLNLa1I0PIL451d3Tx8-AOajMIiJesanOODsFMcx7AyiVJIaq2xSVUsACzQYBxc3Dy9vFAArBrl43JhEAHMUfyLVdQFsAGk15E9vAFs0OWXcpwAKAC4lDclABKEiOR4wZ6mbybFBoFjvT7ff6AkpoYHYJy5bAAH2kpjQOO6iDciwgKzW3nxaCg3mWlhYAGs0AQAPw-amgkZiCFQt7fCAElhoAAeDSq3KMZIpMCpiAJUAA2tSALq+fyBSUzEaeDzdMQnc6XUzXNHqgIc+Xo7oTMQTFIbVrbHzUqDxCg0ejMdjcXi4nHCbWjJopaVQVay-aHEio25SOwKWOlEjReTmwJEJNoCQ5fKFLNxMgNPPpoA&quot;&gt;in your browser&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;exporting&quot;&gt;Exporting&lt;/h2&gt;

&lt;p&gt;Right now if you run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;taylor export&lt;/code&gt; it’ll actually run a bunch of Docker
commands. If you run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;taylor export --dry-run&lt;/code&gt; in a standard Taylor project
you’ll see these commands.&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;docker run &lt;span class=&quot;nt&quot;&gt;--mount&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;bind&lt;/span&gt;,source&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/home/sean/Syncthing/code/taylor-org/examples/jumpy_alien,target&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/app/game &lt;span class=&quot;nt&quot;&gt;--mount&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;bind&lt;/span&gt;,source&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/home/sean/Syncthing/code/taylor-org/examples/jumpy_alien/exports,target&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/app/game/exports &lt;span class=&quot;nt&quot;&gt;--env&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;USER_ID&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-u&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;USER&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--env&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;GROUP_ID&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-g&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;USER&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt; hellrok/taylor:linux-v0.4.1
docker run &lt;span class=&quot;nt&quot;&gt;--mount&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;bind&lt;/span&gt;,source&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/home/sean/Syncthing/code/taylor-org/examples/jumpy_alien,target&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/app/game &lt;span class=&quot;nt&quot;&gt;--mount&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;bind&lt;/span&gt;,source&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/home/sean/Syncthing/code/taylor-org/examples/jumpy_alien/exports,target&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/app/game/exports &lt;span class=&quot;nt&quot;&gt;--env&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;USER_ID&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-u&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;USER&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--env&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;GROUP_ID&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-g&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;USER&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt; hellrok/taylor:windows-v0.4.1
docker run &lt;span class=&quot;nt&quot;&gt;--mount&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;bind&lt;/span&gt;,source&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/home/sean/Syncthing/code/taylor-org/examples/jumpy_alien,target&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/app/game &lt;span class=&quot;nt&quot;&gt;--mount&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;bind&lt;/span&gt;,source&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/home/sean/Syncthing/code/taylor-org/examples/jumpy_alien/exports,target&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/app/game/exports &lt;span class=&quot;nt&quot;&gt;--env&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;USER_ID&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-u&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;USER&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--env&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;GROUP_ID&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-g&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;USER&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--env&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;EXPORT&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;osx/intel hellrok/taylor:osx-v0.4.1
docker run &lt;span class=&quot;nt&quot;&gt;--mount&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;bind&lt;/span&gt;,source&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/home/sean/Syncthing/code/taylor-org/examples/jumpy_alien,target&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/app/game &lt;span class=&quot;nt&quot;&gt;--mount&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;bind&lt;/span&gt;,source&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/home/sean/Syncthing/code/taylor-org/examples/jumpy_alien/exports,target&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/app/game/exports &lt;span class=&quot;nt&quot;&gt;--env&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;USER_ID&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-u&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;USER&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--env&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;GROUP_ID&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-g&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;USER&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--env&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;EXPORT&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;osx/apple hellrok/taylor:osx-v0.4.1
docker run &lt;span class=&quot;nt&quot;&gt;--mount&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;bind&lt;/span&gt;,source&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/home/sean/Syncthing/code/taylor-org/examples/jumpy_alien,target&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/app/game &lt;span class=&quot;nt&quot;&gt;--mount&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;bind&lt;/span&gt;,source&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/home/sean/Syncthing/code/taylor-org/examples/jumpy_alien/exports,target&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/app/game/exports &lt;span class=&quot;nt&quot;&gt;--env&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;USER_ID&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-u&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;USER&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--env&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;GROUP_ID&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-g&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;USER&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt; hellrok/taylor:web-v0.4.1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;As you can see that’s 5 Docker images that are very kindly hosted over on
&lt;a href=&quot;https://hub.docker.com/r/hellrok/taylor/tags&quot;&gt;Docker Hub&lt;/a&gt;. In total this is about 2~GB of images per version of
Taylor. This will only get larger the more platforms I support as each platform
is one Docker image (more or less). I’m very skeptical of how long they’ll let
me keep hosting this and transferring this much data without charging me or
cutting me off.&lt;/p&gt;

&lt;p&gt;I also don’t love that it means every developer using Taylor needs to have
Docker installed and correctly configured so they can export their games. I
think on modern ARM based Macs this has a fairly large performance penalty
because all the Docker images are for AMD64 based CPUs. I also haven’t tried
this on Windows in a long time, but I’m hoping it still works there.&lt;/p&gt;

&lt;p&gt;The OSX Docker image is based on &lt;a href=&quot;https://github.com/tpoechtrager/osxcross&quot;&gt;OSXCross&lt;/a&gt; and I’m so thankful this
project exists or I wouldn’t support OSX at all. It is a bit of an extra
maintenance headache though as the setup for OSXCross is a bit of a pain.&lt;/p&gt;

&lt;p&gt;The story of the Android Docker image is quite similar but even dodgier as I’m
pretty sure I’m not supposed to accept the EULA for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ndk&lt;/code&gt;. I just don’t want
users to have to do anything other than run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;taylor export&lt;/code&gt; when they want to
export their games.&lt;/p&gt;

&lt;p&gt;I straight up don’t support iOS because there’s no way to compile an app for it
from Linux.&lt;/p&gt;

&lt;p&gt;The theme here is walled gardens are extremely annoying for me as a developer
who wants to create an easy developer experience for cross-platform deployments.&lt;/p&gt;

&lt;p&gt;I’m sure you can tell from the above paragraphs that I don’t love this setup.
I’m strongly considering refactoring the whole thing to be much simpler. The
main reason for all this complexity is because when you export your game, you’re
actually compiling Taylor with your game’s code instead of the &lt;a href=&quot;https://github.com/HellRok/Taylor/tree/main/cli-tool&quot;&gt;Taylor CLI
tooling&lt;/a&gt; which actually is just a Taylor application.&lt;/p&gt;

&lt;p&gt;I’ve got a few alternatives in mind but I’m really not sure what I prefer or
what I’ll seek out.&lt;/p&gt;

&lt;h3 id=&quot;zig&quot;&gt;Zig&lt;/h3&gt;

&lt;p&gt;One option is to use &lt;a href=&quot;https://ziglang.org/&quot;&gt;Zig&lt;/a&gt; as my C++ compiler instead of GCC/Clang/OSXCross/emscripten.
This is apparently able to cross compile but I’m skeptical it’ll be as magic as
it would need to be to handle building Taylor. I suspect it’d get me about 80% of
the way there but then require heaps of fiddly nonsense to get the last 20% and
even then, it’d still require Docker (probably).&lt;/p&gt;

&lt;p&gt;Alternatively, you could probably use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mrbc&lt;/code&gt; and Zig to compile a library Taylor could
dynamically load. I think this would be much more likely.&lt;/p&gt;

&lt;h3 id=&quot;tinycc&quot;&gt;TinyCC&lt;/h3&gt;

&lt;p&gt;I recently remembered &lt;a href=&quot;https://bellard.org/tcc/&quot;&gt;TinyCC&lt;/a&gt; and think it could be used inside Taylor via
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;libtcc&lt;/code&gt;. This is very interesting but I suspect it’s not the most supported
compiler and I will run into a lot of issues supporting it myself. Also I think
it might not target the platforms I need like WASM or OSX.&lt;/p&gt;

&lt;p&gt;As above it’d still require &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mrbc&lt;/code&gt; to generate &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;game.h&lt;/code&gt; before compiling it.&lt;/p&gt;

&lt;h3 id=&quot;mrbc&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mrbc&lt;/code&gt;&lt;/h3&gt;

&lt;p&gt;You’ve probably seen me mention this a bunch during this blog post already. This
is the CLI tool that comes with MRuby that takes your Ruby file and turns it
into bytecode for MRuby. Taylor uses this to convert your squashed game into a
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;game.h&lt;/code&gt; file to compile into the engine. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mrbc&lt;/code&gt; also supports outputting a
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;game.mrb&lt;/code&gt; file that is basically the same as the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;game.h&lt;/code&gt; but can be loaded via
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;require &apos;game&apos;&lt;/code&gt; by MRuby.&lt;/p&gt;

&lt;p&gt;Because this is built with MRuby, I believe I could include it into Taylor
itself so we can keep the single binary, drop Docker, and still let you export
games. The big problems I have with this approach is that your game is no longer
just a single binary and your assets. You now have to ship it with the
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;game.mrb&lt;/code&gt; file. I worry this will lead to much easier reverse engineering of
games similar to what happens with Godot or Unity.&lt;/p&gt;

&lt;p&gt;This also doesn’t solve the issues of having to prepare the assets for
emscripten for the web export. There are absolutely workarounds I could
implement but I worry they would feel second rate.&lt;/p&gt;

&lt;p&gt;This would greatly simplify what &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;taylor export&lt;/code&gt; needs to do on your local
machine. Instead of needing to compile the entirety of Taylor all it would need
to do would be to zip up the different platforms with your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;game.mrb&lt;/code&gt;. I believe
this is similar to how Godot handles it’s exporting with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pck&lt;/code&gt; files.&lt;/p&gt;

&lt;h3 id=&quot;run-a-build-server&quot;&gt;Run a Build Server&lt;/h3&gt;

&lt;p&gt;This one is quite interesting because it alleviates a lot of setup for end
users. It’s super simple for new developers. Sadly, it’d cost me money, be a lot
of development, and would surely be attacked as a source of free CPU/RAM.&lt;/p&gt;

&lt;p&gt;I also think people shouldn’t just trust me to not inject evil things into their
executable. Obviously I would build this in a way that people could self host
their own build servers but that’s a lot more work. The nice thing is it’d be
built to leverage the Docker images used by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;taylor export&lt;/code&gt; so there’s still
that option.&lt;/p&gt;

&lt;p&gt;I just have very little interest in hardening a server to the point that
malicious actors can’t give me a bad day and stop people from building their
games.&lt;/p&gt;

&lt;h2 id=&quot;dependency-management&quot;&gt;Dependency Management&lt;/h2&gt;

&lt;p&gt;This is something I’ve spent a lot of time thinking about but have not put any
energy into getting working yet. I think it’ll be the big thing that sets Taylor
apart from other MRuby based game engines like &lt;a href=&quot;https://dragonruby.org/&quot;&gt;DragonRuby&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;SIDE NOTE: DragonRuby is a super cool project you should check out. It’s got a
lot of support and a large community. It may work better for you than Taylor
depending on how you like to code. I’ve chatted with Amir in the past and
he’s a nice person. He’s also ported DragonRuby to cool platforms like the
Nintendo Switch.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’ve had a few thoughts about how to handle this, so I’ll lay them out below.&lt;/p&gt;

&lt;h3 id=&quot;build-my-own-package-manager&quot;&gt;Build My Own Package Manager&lt;/h3&gt;

&lt;p&gt;Building my own package manager sounds like a fun project and that entices me a
lot. Obviously this would be a huge amount of work and I genuinely don’t think
I’d do a great job given my lack of experience in this field. Especially when
there are so many options out there already doing an excellent job.&lt;/p&gt;

&lt;p&gt;So I could just…&lt;/p&gt;

&lt;h3 id=&quot;use-bundler&quot;&gt;Use Bundler&lt;/h3&gt;

&lt;p&gt;Using bundler is an incredibly enticing option as it’s already made, has all the
infrastructure, and everyone already knows how to use it. The tricky part would
be figuring out what path to include into Taylor and how to wire it into the
Docker image.&lt;/p&gt;

&lt;p&gt;This is the option I’ve considered the most and the one I think would probably
be the most likely to be built. The nice thing is I could build this in
isolation to test it without having to modify Taylor at all. So it would be a
fun side project.&lt;/p&gt;

&lt;p&gt;Although I could just have…&lt;/p&gt;

&lt;h3 id=&quot;user-defined-mruby-configurations&quot;&gt;User Defined MRuby Configurations&lt;/h3&gt;

&lt;p&gt;MRuby actually has it’s own package management in the way of gems defined in the
build configuration. One of the main reasons I want to support this is because
Taylor actually has a great base for building distributable Ruby applications
that aren’t games. Things like simple CLI tools or tiny web servers. I think it
would add a lot to how useful Taylor is if you could compile it &lt;em&gt;without&lt;/em&gt; Raylib
attached. This would make the binaries a lot smaller (I think) but would require
a fair bit of work to make happen.&lt;/p&gt;

&lt;p&gt;This has the issue that I’d have to distribute MRuby as a separate file
alongside Taylor because it would have to be a dynamically loaded library. I’d
also have to figure out how to let people compile their own MRuby configurations
easily and that sounds very hard.&lt;/p&gt;

&lt;p&gt;Especially since people can clone Taylor, edit the &lt;a href=&quot;https://github.com/HellRok/Taylor/blob/main/scripts/mruby/taylor.gembox&quot;&gt;taylor.gembox&lt;/a&gt;
file, and compile it themselves. They would have to build the Docker images too
but that’s also not very hard, just time consuming.&lt;/p&gt;

&lt;p&gt;I do think this could be worth pursuing as it would allow developers to write
performance critical code in C/C++/Rust/etc and easily integrate it into Taylor. I don’t
believe this is a functionality any other MRuby game engine provides. I know
Godot does via their GDNative extensions though!&lt;/p&gt;

&lt;h2 id=&quot;future-plans&quot;&gt;Future Plans&lt;/h2&gt;

&lt;p&gt;I’ve got plans for the future of Taylor, so here they are in the order I expect
to do them.&lt;/p&gt;

&lt;h3 id=&quot;make-games&quot;&gt;Make Games&lt;/h3&gt;

&lt;p&gt;This is the big one! I started Taylor five years ago because I wanted to
make games with Ruby and I didn’t like any of the options I found at the time.
So I made the mistake of building my own game engine thinking I would be making
games with it in no time!&lt;/p&gt;

&lt;p&gt;Here we are five years later and I’ve actually produced a few small games using
Taylor as I’ve been building it, but I want to build something bigger to really
put Taylor through its paces and find its pain points.&lt;/p&gt;

&lt;h3 id=&quot;v100&quot;&gt;v1.0.0&lt;/h3&gt;

&lt;p&gt;Once I’ve built a decent sized game I will consider that proof that Taylor is
finally ready for its v1.0.0 release. The release of v0.4.0 I consider a bit of
a technical preview for v1.0.0. What this means is you shouldn’t expect any
major changes to what’s there now, at most there will be new additions. I’m
doing my best to not introduce any breaking changes.&lt;/p&gt;

&lt;p&gt;If I do they are documented &lt;a href=&quot;/documentation/#migrations&quot;&gt;under migrations&lt;/a&gt; as I
feel that is essential for a serious project that respects the developers using
it. I may have issues with the leadership of Rails but their upgrade process and
documentation is actually amazing and the level I aspire to. When I look at
picking up a major framework or library migration documentation is something I
specifically check for.&lt;/p&gt;

&lt;h3 id=&quot;3d&quot;&gt;3D&lt;/h3&gt;

&lt;p&gt;Yes, the third dimension! I’ve been asked about this a few times and I do plan
to support 3D as Raylib will make this pretty easy. I’m not planning on doing
any work for it until I’ve gotten Taylor to v1.0.0 though. I’m mostly delaying
this because it will be a lot of work that will be quite mundane. I also have
zero experience with 3D and worry about doing it wrong and not realising. I
already feel this way about my shader implementation as I’ve never used it
because I don’t know how to write shaders.&lt;/p&gt;

&lt;h3 id=&quot;and-more&quot;&gt;And More&lt;/h3&gt;

&lt;p&gt;There’s plenty more I’d like to do, as alluded to above I definitely want to
rework some internal systems and make developers lives easier. There’s also
virtual reality support in Raylib and that could be cool to implement even if I
don’t own a VR headset.&lt;/p&gt;

&lt;p&gt;Honestly, I’m not sure where the future will take Taylor but I’m excited to find
out.&lt;/p&gt;

&lt;h2 id=&quot;outro&quot;&gt;Outro&lt;/h2&gt;

&lt;p&gt;That’s about all I can think to ramble about right now, I’m sure I’ll find more
down the line and I’ll be sure to post about them when I do!&lt;/p&gt;

&lt;p&gt;I am amazed at how far I have taken Taylor and am loving working on and with
Taylor! I don’t see myself stopping work on Taylor any time soon as I am having
too much fun and have too many plans.&lt;/p&gt;

&lt;p&gt;Thank you for reading and thank you for being interested in my little project I
started all those years ago just sitting on my couch with my secondhand Lenovo
Helix Ultrabook and a couple beers.&lt;/p&gt;

&lt;p&gt;Cheers 🍻&lt;/p&gt;

</description>
        <pubDate>Thu, 09 Apr 2026 00:00:00 +0000</pubDate>
        <link>https://taylormadetech.dev/2026/04/09/taylor-five-year-anniversary.html</link>
        <guid isPermaLink="true">https://taylormadetech.dev/2026/04/09/taylor-five-year-anniversary.html</guid>
        
        
      </item>
    
      <item>
        <title>Taylor Monthly - March 2026</title>
        <description>&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt; &lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Count&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Releases&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Commits&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;26&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Contributors&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;1&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://github.com/HellRok/Taylor/pulls?q=is%3Apr+is%3Amerged+closed%3A2026-03-01..2026-04-01&quot;&gt;Pull requests merged&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://github.com/HellRok/Taylor/issues?q=is%3Aissue%20state%3Aclosed%20closed%3A2026-03-01..2026-04-01&quot;&gt;Issues closed&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;0&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2&gt;At a Glance&lt;/h2&gt;

&lt;ul&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#jumpy-alien&quot;&gt;Jumpy Alien&lt;/a&gt;
      &lt;/strong&gt;
      
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#community-site&quot;&gt;Community Site&lt;/a&gt;
      &lt;/strong&gt;
      
    &lt;/li&gt;
  
&lt;/ul&gt;

&lt;h2 id=&quot;jumpy-alien&quot;&gt;Jumpy Alien&lt;/h2&gt;

&lt;p&gt;I spent some time this month and finished polishing off the &lt;a href=&quot;https://github.com/HellRok/taylor-examples&quot;&gt;Jumpy
Alien&lt;/a&gt; example!&lt;/p&gt;

&lt;p&gt;The final touches ended up being:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Hitboxes for sky and ground&lt;/li&gt;
  &lt;li&gt;Sound effects&lt;/li&gt;
  &lt;li&gt;Background music&lt;/li&gt;
  &lt;li&gt;Settings menu&lt;/li&gt;
  &lt;li&gt;Volume settings&lt;/li&gt;
  &lt;li&gt;Logo&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;play-the-game&quot;&gt;Play the Game!&lt;/h3&gt;

&lt;figure class=&quot;post--embed&quot;&gt;
  &lt;iframe width=&quot;360&quot; height=&quot;600&quot; src=&quot;https://playground.taylormadetech.dev/v0.4.1/#code=MQAgygLghgThIHMoFsCmA6GAjAUKAggCaEgQAWqIADlOSOgPQBuqAdoQPYwgDOHIAd0oBjKKxCooPAJYAbAJ4gYqAI4BXactJlNJGnEWzpWGLGmoe6HABIAXCAA8DkACJGLdlxc484aHHpmNk4YBgg5VGQoKkxcYVkpHhAAFQioqhwQEEJUADMQaVZpcKgjAC9UAAppKIRUWwAaXmkK2wBKTKyQAAEaqDqQAF4C2tROrO6ZCqHmis7gnyyc-PDZVAB9YQ41VghxkEre0fQBaUI6Bh6p1DaQACoDo-6MCmkEMnhLyZab%2BfZF7J5UgRHjrKioGDrGAcAT7J51E5nC5XH5-QgA5a8bYwYQbXJcaqEDpdEAADxmZxAAFJgWtQeDIdDYSTFMNCSBLqsLGCIVCYegIBx1rk2uhcrIOFx9gAlVDCaCsBBrdCsVACSqk%2Bzkh7fCpNeT2RQ665NU7nMj2XWoJqvd4QS3XYkSf6dTFc4UEs5OrJcmYASWOdVVpggVTN5AdPxtqDeH0jFW9tIwhFMAgAhJV9lk%2BnVLTnrVmsWocfUiyWPTBCYmnQtXUCgxDaHjochCTxE91w2QKYRLLlNDwIOhrnDbR8e5YR-t0v7A2xG6HKl3LV37ii9SAx-aelu11aOvszpZJMIyIjyOtCjlyQBvEAAHyZ%2BvvhaZ6BPZ9OF6vqFvD7OTSki%2BJIkjsdJJGcKqoEg4QsAA-IWJLpOgKZQOmmYgZhIzPHmowNIhIF8MWuL2ER5b4pWXr4VhIE5IOhS0NIHCsPYsrymISoYKq6qamSe4miABqCfxUaCEiFrrtam4xna8a-DRWSJiSCyYQAvvs6nTtEaI4AsoAAKLsIEHghGEaTRLEPigJAsDwIw0RUAwyAcDksg8AwyhkbiljYDgzmEGoawgLKXkWJ03TdPiuxJMMN7qRM8IWDMcXhd0XLpDFIApQlyBqDIwjJfFPSTNs7CZSldb5DwqCyLkYrMRAlRRRATTXPYABM7UdpFDU8AA2n1zWtT8AC6I0PvewwAGINVB6pDbMpaOjplW8DVdX5pUNDkN1%2Bb9dtZDjfek0gAGzxzVttBkDWLpLEC1W1QK5lUDwl3kMNrTdel0T9X1B0fagY0TcMqRrMh3EYSB%2Bb2JtB1tNRhE-KRqIkjd6KrQ9dW5flb1kE0TAcLIahoO0cLdNj0jCH9V1HSdACyeWUxd-0gATRMk6zhPE-Jzro3dVXrcOpWELj%2BNcyT3VEWV1PkLTwxgMLzNXWL7Olmz3No7p-wGUZ9lUI5-k1e5nnYt5lnWf4dkMA5TkuUb1tqIQTHrFErDPDAlnxIkID4I7TF02I7udLQECQlAwjeXw3C2FEg68uraBNDHjPCOsCdSbYUuEGn4tjKthTFNIpQo105NSKGkLpzMAAM6AABxwhTqdV8MtcACxwlnOeqzMACM6DVwCEyxxX3fczXBT5GAuKqrYtgACL6QAQgAqgA4kPPRYOHADWCDQjs2dNzMIWmxY6BN5UbjWzw1UQO5VAcDIsEbBKHAxBwCAIC4Kvc-YUCEAAFZ5VDEfFOY80AHhJN0eIlMd4nwsGfScwsr72Vvqge%2BDBCgV1yOHDYWd3KwOEDvdY1dq790-t-X%2BHMAHALjtnLu6cOzAOQFQBBoVkGH1QTfO%2B7lsEQlwbidYBCGAPTlBAUh1d2roEoT-Tmqt-5AJAagBhwsIE8wmDwLYWhhin2IufLO3DEgYL4bsAReDhHC3cimd%2Bki24yK-nI9Oii6GgMsYfdRHYchXXYUgoWXDr7GMwfwmAgj8FWIYFsVg-YYBRHCMxSR0jZHUNLLQ5RqiPFMJWvzEAagqCECbOongcJt7EP3mopu6AW4gDSfQl24D06bxgUYYhVTc4zFqW4xhuc4QsJiNUzpKj3HsHUZ3bRGABlKLqd01WcJvHkDaT3YYgyMkjMaVkWsOSqAJHkOsUpe8D4jKbiU3e5SPGVO2VAeQ2TARVUFFQPZpzDlgPyicspzz6n5WHPcm5mJLnyEqFnRMXcKKAuFqKf5vygR5IKaGN5ByKkp3QDCpsUL8jpwrICjB4RFSJlENVNaEAcUIH2AICg4gY7lwhIWMucdK49JJGStgIBk6vMwuTBpDKuhMopVnGlMzub7BUrzDE90MHqKxUSwoCAUl4qkJQO%2BxLSXkpZSPal7K1X0qWfIwVjKVWsspjSpu6iZjrO5fqvl7KBVoFNVyjZt0ugotDEUm5VAYDSCYKi1aKzhnZzNcPKlWrx7GjUWazZtyalTLcca-1PRNUmp1DGrl4bMQgoJEC-Y%2BKFXC2Vcy2wRCd40oLbmilfSaVlr1XmrRXAxhWvGSWll8yyA0qbUK-49r0R6RAIZEgesDZ2zcg7J2QpXbu3Nn4WygQbaG0HVo%2BcnsEi33ADPWtIBF6rzXjMfSAA5AAamKDBp4r7rvXnI3BbkebdByFgNQCBLzRP4LFIqMDizKF2DMIoshwo8DINsWQ2d4hP0oMMc91VwpQD9iOwOdRuDDE-aKgWj0755LhBB4dLtoMQhmL7YdAc3YwbmqhyDGH8MQnQP8x57zEVspFRjQWaHnajpgzMboDGoOkZgAhtaj1r23vvfiFjvG72FHxFxzG6BhCvrYPAYYL6YBvr2HRx6kn5PScGJUbiwiV0dhUwpj9aotPzjRdxuqTqqiuWgF41AN7hMPsKnM6zfGRMcAvhCOoaYQAAHksCAPEWAGguIJOlQkRwHz4jinQLYyRsdZnM1Sd2Mi-JTZKgWagJrJTdVULMi6Lp6TKFUyHnyCejemEADqV5%2BRZeFKYNAUJUWYRmgl5YEHZBDiy5DdlQn%2BMuZnHee8O9UDyHxqUNQqBgIKRcMAG8A35CqXsFNz1RNUCqW8DRVS6BAEcEKFfAAOqwFw8MCJbAlMWewABhQm2I57z3wNKAA0mvaU%2Bkd0I0wo-Z%2BTEWIgF3eIrg7U%2Bq92rk0AAzO1Ear3EatBAO1QemFEzCpTWK5TEowPQJ-X%2BgDKPgOkBgKN4z4nAPVQQiScrngBASax3BCaVxf2BUx0BnSXae1Tv1rbVy7k52qksr4GyAQ%2B2iJXe5KIhQXZsDUOO3nVsbZbFYcxaT7lcE5HWNsIcvkvZLqmgA1Anm1B7CyCHRkkgcjR1ELIWQ%2Byk7hFq2sXIimckFxKOUKoAAyLAEpiE6dKOb3eMw3ccGIXCK3r88gyZALXXu7UACsxmzMpZqpZwPNRg%2B25AAAWmGKlpppvvetOz5PHoQf1g2-gA4VuxmsuM%2B1t23W1tWcy8fqqaKDBFcbBVxLy2LPHL17l034XrBResDUAwG9RLmLt8nfz7vjfME-tgCo4fuvBSsEsv5QKlAl6L%2BYqtZqvj9F9gakY9BmCBusFVLsqg0hSQ1QFBAXIci2o9GasIn4UCI2hlJBI97hct8kmUBAYs4gaUv4n%2BT83%2B4g0g%2BQQBH%2BYIoB8SrAm81wMwzUrmUgxYVQUBEAr%2BEw7%2BIBH2zEMwP28of2fUNKX%2BcB6A5IAA1AcIcGQZ9oiOaGnotAwTtByNDoduynQWPooNQZULQbAfQbuKnswVuLcJcF1PsCNMZr%2BiwDAMTl0HTNsNVORgIWPqSOgFgBgkIGwHBPwXgcvqSE0N0FwQYSANQcYaocvl2LcM7s7oWIoXlBgCYegPIBoVoagDoXoWAS4UYc4TwT0M4aIcZgWiovIVkDIRCFTrYSAA4coW6hYNVIQLobEfULYAADL6RTTJDpY5LFokjTzzpRZMZkb-KVD5otI7yJh-4AH54wJe77KbBe4qJZ71G7yNFm4qIzChx47QLZ77ISZe7GYj5L7rCx7rCpaJgQGbgcCyFhGlzOHHbYgzAXYnYwBzyPb4AACapBlhMiuuRgqoyxl2p2tgS8aR%2BAZ2d2QqF6Ox%2BhQWqxRxqxc8aRfoa8AAEskBsdsZwbsSrgcdjisVdrYF8W2nzDlhUfniEUkUMZvv3hXtAs4fCV0Mge1oWDgRDlkCYfYDgTAfofsDkRGrHqljXImMMQkkSfHmluXgViSGSXCTSSKkzjXtLhwLLtPhzmQHPoQAvqPsvr5DgOrkkAHIUHTGLp0IKSABvryYeKwPEI7JQHPFKUvpvAblCEblhrYKGIOJeIQJbsAUnCYUnH0bvJvJiA7kXE7pUFqRImcI0KQMAXaViU0K7u7pUTStaTqV0RYDaeiOyjgV6R-pvBMCYTMCYbcd4eQHAqqEusMMDkGT0MacQr7q6TSk-ogcMG3A3MpO2oyVXszpPqyQ3vLk5FACLmgIPjyUvtzhKcKawKKYPqtB6ZSMMJSmWWKfnEUI7iXMGTsnsrCTMLWfWWoIqbCRdGid6TqfYLYBRnSRifaR-vYC4AAAo7I-yFhYnBTiIcRrB9Qw4g6R5A4gCg6HkADs1cUhqMWU1AOyHmmkaO2K0qoIdJA5pZdZYuI5vJY5mETZhAU5iqj5fZvJc5OBi5YAD5ioPAa5b2lhrEW5ioO5e5IAbcwOh5x5TQZ5F5XQtwd4-5EFt5TS6gxQgFS%2BL5Ip75pxo5EM452ptpLKhFEis545C5rgAAihoBAFBSBBuWxAqJxLuYeZHoDiDohRhfiVeQUVzoTpQEVIjvkGILsnSesBEXIfsCQZwb2YxVauBQgE%2BbCXOd0PRcRT-l0CNOgPJVTn1nSfeCAHSegMpVTjJQ6n8jeYHqYKwPoTMJrjkDrkONxFlIWGdsWFHOgJTPgcMIFTAFHNdpkfgCvGkckIWBJRgLlu%2BsMGvCgFxGqBpPjtpTwGmK5WIB5dNFrj5XNP5ZhBFcFaFeIOFUFVwNFVNLFfFYlSuhJvFqHmBVKhBUOYRiSI5WCZiDvroognvvVLsIfrwgwCfmfmCJftfkSnfgDPYAAJwABsr%2BfylhVpwBwKPwSBs0aAqByg21H%2BWB32v2MA-2hYfBwOq11cTB1wLB10bBXUc5N1B5D1PwdlMkHwYh7BkhMeSWi4ExcIM5o5sW95XVOlRly%2BENpchltlsW%2BwlVXAIVUSFIclrAClsJSlMxkRAVdVaxtgS5nmfo26yQZNa86wbx%2BA26881xqOIEKNRNi8jVcVCV2ZYJ2Bbl%2BhzuiWsK5mlJBJmISJWQpOnA5O8Qkg3Aixp2IAgJJx0oWxpWbxfoyQ%2Bkm8KJqYHWXQLgAAUsTFQPIHtvgEYGwJxSSBuSYVfAbawsbawKbeYPttWE0mDZ%2BaLVcLlTDflmhHCAjaORXgVe5WAXzUiQsEyb2rXo5JzhYCWW2YPuPnzlHQLvOBzl7eWeLr5BbBPsnVPsWS3srrrgut7F5drrrsHESoblribq0cQpbknkXiHlxuacXBUJUC6f7m6b0bXfAsMH7gHtAoXsXjXOgBHtHh2lxhSa1lSYPQ3cPenoCNPS0Wbv0XnlMWlHPSHo4GXhPatGHf8BHZ3pEoWT3pggXW3lnROknSyWycWX3gPkPrZZfZLkfXnU3rPsoNyU-bgKvkFEqcZYNQ1LviWPvuNYEkfu5NNYNrNVfrIDfotYtJaGmS-lxjiWGb-hgjURgbiWAbUWg5YQgXtSBgdZIDwGgYcDgWddgyGcMIQYKJdWpSBBYXcVQTQcw94auMIY9dYS9RwUw34WYWw4ET9fAFw19aIbwwDbvTkvZfsCkSoSw24RANoawLoew%2BQYYQEbsaw%2Bo-QTw7YfYUoU4bsa4Zocox4ao14eQUNlo3cf4bo2PkEdIxGlCXMfZSANEfI-EegkkZUCkc8ZkdkcERUfsElWZcRsUR7KUeUXAlUZgzAOAZAYmSQtns0XCMk%2B0WsCQMMN0auhMMkwMWbjCbyaMUDVUOMULYVtMbMeGeQbLbBvLccUTSCT8XcX8YUACU04qecZcQzXk-MbsfU48UCS8e8Z8Urd8fw78fsR08MycS010OGlkAWpCRUaEcUyMR7Q48vh7VrWhDrT6PqeuTBfObgWAfiYDQLXHtPSSfsIpVPQns4yLQyVkIpfvZ2nmcyXXifeyaIpyZ-ZWWPvyTWa%2BUOeKYukkP-fASSIUHKTkCyhRdKfsKqcoNXSyj%2BXqR-gaZYUaT3aaUCC3ZaT%2BXaSBU0E6R4-3V3Uwz%2BV6TRb6dS8AQGXblM0VdQAQ60xGToMQtGZlHGUWj3cmZ3amQ1M-tMBmVmYszmeHZ85HTfUWb3q%2BQ-YC3ybgNndfd87fe-enWLswLnOsGaHUKrqq1fVLhq-KzPtqxWRit-Tzh3gWZqzPv8-Pja7-evrCdvkA8NRwmNY1OA5NVA%2BfnNXAwtffkjI-iK8tI2cATg3AfsNUQkwXtGyGevfg3ifsOmSAMgYdWQ8dRgVQ6m7g7QxdVdRyxo4I3wds09Z9RUE9X9a9bU-Qf4RW8I7GKIyISI3W4mJhbJdU-jSSF49o0oyo2o84Zo5Wzo84fo3YZhAO3Y0OxYyOyY74SY4I5W047RrkWs9CSSO4540Y%2BRp5IkckUYwE1kcLUCHkV0GE0UZhlEzsmUQWnE--gm%2BvRk6k1zQmT3Zk50Tk7jv03USvbvIU1%2Bk80CPc2U5UBU9PZMfkLI6W-QUM%2BFV08CRMw22Pu04cUh08acT01ccpDcfB2Poh409h6Mx8QswidMxAP8XM806h5zZvCs1Ma4xswkls4iS85m7NKid%2BUc9BfodiUm%2By1hZc8lsSa3KSTjQ8zPRuxGh7W8wydK%2BiDrLK2a6fRyVycq9WRC%2BALlWC8szp7urnFCzKXCwqYi8qci5XWqWi5qROQBOi-qSyoaSysk-i-kISz8NtXSySw6WSzBc6ZS0pIm3S7Sz6e6Yyzk8AfGds6GcJ5R3cZGdywkTMHy%2Bysk4KwPUw8g2K0ee1KCe57khB%2BJ2HsF2QwyPy4B8Qt%2B9k5m6UASlMfI8oGsPKr4-4%2BkYE-DlKwfTK6-T88WbhdDRnbq6rN7cCzp51cSjwPpyABKUZ6rOVoQIa-sGaZ2RaV5xwLkLkHfPYIeQkJobIIuenE4rnPYKngAHxXkuAuAgCqRNB5JneXdxRNAS1fYXdZSqTBfdCbfbcYIzA-d3w0r7c1QzDA8gdMNg8xufYEHFv8VNAA8YKYXQLVKxoTCvcw0zCTePlDlzzzfcxQtflYTEuNowj96aVE8OmuCp4W1cUnM8XbmoBw8gAI-wDUEHlNDs8gAHlI9YVXmvfAe3c0p5IY-yx6fkV49oAE9UU0TE%2B2DC-k%2B8fMUuCUE0%2BW109wV8XtTLWHks%2BCOc-6-nmFjYVFcC9FTOM5JDWbnevNQTUmJTVsAzUX6wPwOhtQ6ZlnWYio%2BuBTaHDpwC8PCA7VyijPKqRUiraSsfubX6EnUtTM9bd3xldENccJbZvkOUPxl0PEEEQ3V3XVsYA8PiF8Psq6-UEl80EfViM1sSOF%2BFg89LNyecdZB7PqjdBg-%2BcCdsvR%2Bt9QAHdNBB-BfN%2BVDpzt9gH2DW3D9c-98xfo%2B2Ue0TDy8B2cf1%2BYhw3QIz-g1lNC8PKI2b8McT2H32vmtp1Q2gjDcYoGsYLafexY-dVik5I0stmDen-tn25ret3-vxrn9nCGuY9i%2BD64%2B5xFuhrQniSDB6LkA4dKHVGgFV5x9fu24PcoWGcRp4nuy6QohE1vYXxA0JqO7oWAe7ICryGKPJGUU1S3AcBmEV7o9wIF6tXuxAwNKQIuaNxOUo3C-h1T-7DlbAEvVAEAMv7S8QIYA1wAzHyhQDUAMAlnvYF7htwgciA07vgLvDXt0BHGC%2BEwPHhkCQIeA97neEIFUBiBKcUgXOQoGyDhB4xUnjoPyj0DUYTSa1BsBYG-8T%2BOPDgYAO-48C1QBzEAPwJcD6Qtu4WYQaIPj4YIOod1OckgI0GoCucN7RQVYNu5zl1BKArQWUSBRRDCwBgkIRihoGZxwUgvCwfChF4xFQW5FKXi4Ooo%2BkpyDRBXl0BAquAl4u8GAdxQ14IUBKQlPLqeUN6Xk7wGdfCqB3yDtCg6rLUuqVT8o3gCakVVGtVWWKE0GqTVDmiBDCYpVQ8g5MXL1S6D9UuM8lGGrjRqYkhGG0CUoe6xJCmVzKV5e8FZRsqjl3Gyw1aNJw7Cf89WLA-mvVlLhJpmBTgocKvyuChobhzwu4XCm2FtEd%2BAtTeMzTRphV88qwxSnByZrjDiapNcmpTWpq016a%2BHRmiSGZoTD2aBXHoSHS%2BGC1oO1JX2iTgqyS0WuMtLpiRyBITMVaatDWo3CwFf8lul-LZo8O5j6tPhWzKwcyLpFtZOO3QHYe7QKwYi4CodRTg6jdQeovUOSOIYN0TAYpTwHEKoINz76j1z26KagSYMlH7BpRnJRUHKO0pNBU84eJUUYJlFajJUxKJoJ0nLKYFQmrVcIWOjvgSpCw8o66vIPQyRNFkTI0FJKMEbmjpMooL2KwkqCHle4Ltffr135wx1j%2BU3B%2BonVNbR1BcDAJAGgGjF9cHWCuLXIXSNYCkdOfQ8uvrms6otjcrnHuvXWtxN0Oyhcd-u3SC7pMBWfdFMrPRLEp5W4o9KPKJ2BqVN6xyeURhnkpLL0c8O8AXim03op5S8YeXEdliU6%2BB8yudfrk3nPpF1%2BSarGMcfRTHxiMq1sM2iq0zHex0qaAcFt7EdpsArOocGzgWNsDFw2A2LfQknBYDu5igNjOXg8hwJoEk46PJ8coCTg6AIAWADgJo0zjQA4U%2BwCmhkTADJRCw%2B8CxvYBvB4DDyBg3uGb0F77ANiu6NWpsRmDj0FC%2BAAABrrBGqaRNIusF3T6Q0inmM7ChJmAdwSQetFeHTCXIzBU80ifLitwJZv8nc-Kf8djjPFGAWANKc8TVRZTgTDxhHPiZnwYa9w64qFMhDzwmA3j-cd4mHkQQYaHkWhTDT8d%2BPJDDV2I8FTKuqAIi8Rx2gjNuPqEtACNqChkgiMuBAC9xVq0YVtuIOslHYSRCtImmcVpp3Y5yWQDDqWCcndMV4GtOHGBPnAhgNgb4sKAxyYn5AGwQU9YCFIiwgRvobCL1n4nimvQ-WdvGUaYHlAQhLAVARUK71LDtQ24Z1efo%2BOAJoEuiz0J6GsExRAT9IYAPqKxg3EjQ%2BoD4kaKKHFDSAHkv6d1GUAahe55AaYAUEKBCktpSe0U0qToiTDIR3QoKGqXVIalO0mptgV7q1LFBGBOpXAFoL1LNz9TBpY0j-GgXREkhMQfSMEIe3WYzt923jI9n4xPYdcz21OO7INgPYJFQilQR6QaFsBgAlyFxfSF10j7Qpiu7YkCFmiuDsTCwPKFlMXG4k0RugMk4QHeJcJmE0qStZCckFQkPBM8BEWGTVFkkQBXCrIGIlhJwn4A8JBEoiSRLInr04ZCMxQJdzphEzcJ%2BEwicRNIloz4y2YfICdKunnSFI2M28XjMRnDAqJNEgiFkGdGMYMB0TPpMF3N4stcGlBWTNTLxlYzVJP4igixlHYGSVZxQNSYLNsbeF-CFEkCMKllnPM8RwM%2BVKDPuGVoKUUM-ptAmF4hSfaOkhSJ31H5uzY2NEIqYIH1TeJ6WmEenlpJAFYQ9Jo7dyV0CEiVshsossSOaHsCg5w54RERvHPaiJzZujk5Dk9nnhpzPJ52ZDp5iVrbo14%2BkNOUlx3g8t45BEUUHP1k7QJVZ6hLLPniSrRUN0h0roJiB3hyBweaOdiTMCWlG4WqaAl0ZLPvb9yrof0yvMp2ryqcu8M4zBAmNQDrinaSYw-up1XFoBh8TyRWGrh047jV0EpKoVRkPhHiw4EcBIlwHRYN0aAPjTFs%2BzzhHTmJ5Y1iX6SvnGJausOECJFMKTDSwpD8iKYFO-njT7Zk06IMAzNjJTbemCfZGcjKjkZcpS1aHIVMLD5hypYMCyF-OdS5AWwlQLYSBD6hKS%2B%2BhCsPEQoIXEKyFpCihSQqoXkLqF55cOfgtoWMKaFzCyhSwqYWsK6FBEBhWwp4UcL2F-C3hX33BxcK%2BFgisRaIokW0LhFNEbhZIvEUCK5FHC6RVhFkUKK1F8ijRUpOUWYRVFmi9RYooUXaK8FBivRaYsUVGLNhJiqxfosMX0LrFZimxbwosVdAAcTQXuG4o8WWTPF7irxb4p8X%2BLvFgSvxUEoCV%2BLnFWQXck0FTnQ4olsSmJfEuiWJK4lSShJckrSWpKMlYOehSeXQq5KQAOS-JXkoKXFKilpSwpeUpKUVKyllSk8uEpAB9Q64TQRpSAGaWtKml7SlpR0raWdKel3SvpV0oGW9K6lDSwZf0t6WjKJl4yqZWMr6XDKZlky%2BZdMoWXLKhl9CxZespWUbKll0yuZZsr2XbKtl6y3ZQcv2WHLTlXS45WcpOXXKrlsytZecpuUPLDllyp5a8seU7L7l7y25W8pmUvKvlPyn5X8u%2BX-KQVdyrhcCohUAqWlQKqFZCpuUwrQVsKzZQirhWoqFlKKpFYioOUYqsVaK7FZ8rxWEr0VBKzFUSo%2BXgrSVlKnZbXy%2B4hSKQxwQUHtLvltycklw90q-J8ZIzF60AFlRGnQYgRdebIDerVmvmJE1wBU24DSAKmFgRJ-2e6sIRZ5CLeVZs7LIPSAXOzXBmJE5vyosF79cyU8qcXKzXkLzN5R89gCvOnEriTVwQLTMoDYAWqjVvza1SMi0R2rWAWnZ%2Bna0tVH8-mmnF1i5DXySldhEaS3nohAY%2BtIFkDB3tAyd7zVb8eUpBhGxQZRtoCOqpQPE0AIFs4CeDITmmxJAZss2pDchnmyaRZroeRbBSSWzlllteCVjPRuJDz61teG%2BlEyUI12JCF22rbTtlI1k6YhwRWQWdt4XUJmNh2datQsuxYartJ24kGwtOxAiDrrG87TwlHInUGyp17ajtsEzgQ8zwieNOQh42dwxFLpZ0trrdIyJnst1WXMWdaIUFjpomj7ONhmtqJvsmiH7ADn2Jq5dE-21Yqrv2Ozysd%2B8YxEGjC1g57q5iwZQZk01o7rF6O1a%2Bgp5Og04cLieHRZgRzg1EcoNWHEZq8XI6waEu3hBDVhvmZ4ba5s3CEsxy3byEe2Cnc2RBruK7NuO2tJii1GOYd8y1xlRSK2OxHQBbmtJKToDJxGdDsgnHGjeOJ64Gqvms8lcR-Wdajlxu24jKnuKXQ9pp4bqzNDpxM6YRYWRMeFh%2BUs6YQUW6paOBi0c5YtnOOLQsb%2BvjKrcn5XnYlk0FJYezPsdpDuh7ixkP97SdLdzZF1Obsz9Z2a4YGmvw3kEy5PLVLn5vfX7JMuhaGGTl2xyZlCwJskVCGIk0zzlxPq51QwmEBuqPVuALcUuj3lKakgKm7LRYxPkniNS1ad8eix5rnNwpBQFiV5yq2lgg%2B-KcZDMGa3CtdgorbHIHxpTKBNJnEBBINuVC8DMIvEFCkZMskICaIFklCoeS3AdRxJ4c%2BpnnNI44bxmWxcOaFoSL2BDJzPGZrPFJHEatiRvGLn-hgDY1eSMwPeXPBK1uq9NY%2BMbXFPs6-kWUF2q7Uvm22U8XAsoUOPIBgFaqO%2BgcziMHPG3xzDyQkNuDNoUhzayENk2SPkqkGuydtt8PbVXKN5XkPt%2BFGlP7Wu1pUMqd29gKpogkWcnthQmXq9qnJ46vtBECoS4DYrFBAdTm5iLBRG3aTNVXQCbZDvsCCVkdsO8SBDoW3JykdpcrluXN21IUMdcOcSq1SkqZCI%2BhXUNSNXDU29Upx%2BaNYG2d4hsEFPUbrZGz-mnMoezEGPrSujYFqSGR1KoOnxlWw8sZA23isqFYYVsHdDPKtsIWwbcMZ1za%2B3XUIwBNtDgruoOR2s93iMO2kjTCHXwdSsqBNjzJhh9u9qvCJgNOsfEnoLy1aBRWI65nHtNlAga53QIPaDvz0J7Z%2BjfHoCnp2Z8jMIzW43XxPY2sAr408GtAdgdHjJa9iMhen1swiD8CILgJvcoGZ0bka9QWkAN7J700Rmtu0ngOHI3L17AU4yKfcF29lpQM9n2QUbRtI2Yhsd7pVfcCOzG%2BU1Qsu%2BdLMJu0ZUyq8EhHOJsnGSb0txqtcTatdUWMHVanJ1WuJgWEBi6BWxTQZ23HPJyt4cSOBfM1IcrEit8g6fVs85zAX5Iqt%2BTXACnBhAF%2B05QMqvrAALnUP8uKc9DAXnwIF6u9yFyGynwLEGlkuuMFxQU5MKpGC5sKyRwVcLOoUSxJYwYYPMHocTB1gywfoPsGuDnBng2wd4McG%2BDjB4ZRHmiUiG3FnBsQ9NtEMSGZD0huQ%2BIfkNSGFDyhpQ6ockPqHZDKhjQ1kq4XaGtDmhtQwYb0OGHFDxhsw0YYsOmHOowhyw-oasP2G7Djhkw04fMMOGTDUkkAK1Ii5IHsc%2BYXaRgdz35A2V0BjYKKs6IKzuVUAFA-kBH2CrHgheMIyQAeDu9qQJB23ZWtwUkh5VsAu%2BOHLurZG24a4MSbX2iPCaN92BdVTxywhW14uInPVROJU7JiMtb%2B55M-qk3NGN5F%2BcED5DiC7zv9ZG72EuQ6mhSughm2zrxINLDHp9pmu%2BdeJxnwzlZEBxrW3ULC8T7An6OcgkmOxGAZArO2QaoJJAJI%2BkQycgAfHeCUDsodRphrxI6QbjSCUxmYH1FlV9RJBh5VPL3EjzLUxoNKJWQTOeOp5MySq4vv3m2PSBdjfErY4TB2OfYaURxw2icbIBnHuwwwOE6wgRNIn4DC4YKUAtKNUGmVB078lgcSmjVcDaCSagQbgVUJiDYksg6MFQWRB0FaB6g62EyMuLe4Hx4QxyfoXsnI8nJ3k9ya5O6HBTMink3ybFMCn%2BTQpyUyKeFMqLRTEp8U1KcVMynpTcp2UzovlNKmFT3J4HKqZ0XDKDT9Cw01wuWp6m8FmplU8qbVNmnNhFp601aY1PqnzTTp20y6bZNumIldpx0zafdM%2BnPTHp%2BpV6edN%2BnAzAZgHGGaDOumQz4Z3kzSu8N3z6V50RlQEc333QaAAgfvF0eAXGEpj5GPKGQE53PGY5rxtOZUDcpJG08wOE8qQd2nSACIHhiefVuCP8Ncz6QDzJwAfBZnxsb2YY6u1%2BNrhM8mEevhzICK5nF0Q4ckM4DEkfzq96ZzM8MaxmonwQ2cU49sHeDAdEt0e%2BYrmZ-QQF4A69LM32AHATnHAaeA8vGVPBygSEFETYFCbBOfZikg8rnF1mczNSszt5nYBAHGiyZDzQWT86Ufz2-mPw2QfgPeC7PeafDGqq2sMeC7DnNwOsn8efA-Dt0lpqYW4FMWbkLxl468Uo-XJGN8avBDTdqCAFADEXY1bkOPm4LYBO1hA1yTCEgASlc8ijdcEi0xYIOUWGL4MhtbJidmcMDgN6Qi%2BKuC67g2QFDdVR2oYudsmClQAS7kCwwPAJChYUi8DmoC9mCDhYFnusAJmVB2oKlgPqQcEYMXBGsl6lPce6OrTaAGGNhB2bAvDHuzeCmOSDtG0U7XZZIMfsMfVnUETLMAKbVmZ8IxysgFkrsAjrjDSRW2ac5ZhnOw4uTt0bkgKwduo4dM1tQJR7M9m3Qxyi%2BWEJyxzviu8Q-LrDby75Y8v%2BFNL0c1y7HIjAVW8YYVxHVuAivpynix25yecViv1Xc5TVueFnIyv1nNz-s1M-kEvPVcbzoJ8E7FJ3bFAZgeFywAcL6z1zrK9cmRLIQSAvQqc80%2B1fXIQnAnbzZue80Ry9z55PxBXFLdfrS1v155a43856pzqOriyJqyfTvIU27if9S6fvf0zGOnjOtSx2zVAaYbNa4D7KOLTMDur9a-dw2x3TlZoi8QI8POyyfzswgWTobIV7cIEIcmNXvJ6RDbV8W23i6K5R5eHodq8nIcKOVxwIw1tK0Wi2tNaLlb3HjO16P0cgJ8xgBtEEZomzWxs4buV3W8D8eB%2B3qfhjVBsXeuuuLR7yBD%2BlZMk%2BxlY%2BcN317XwT66hpYRzWpqCGtNi3SnyLXHUbdfpXNYW3OoZHfd7Ozy2w0L3Kg%2BLoemtgX3YLhyC9fuxGbWutsG2Q9OJR6tX3%2BqR6ALZe%2B2%2BDedmFhB%2B6JFnV9nr3eyMLK6FuThZojZWwdIEXiPXooJTaY7ZVgXXHMTbQFHqmjRbcnYkSPUE7NEVbR1aQ2tWY57V9G6lZ3RVzvbQ5nMhPWOuNHV5r%2Bjefdby0SlCtuY48fmMq3jIk4ExllNAueRJx39kx7o0nAf2lbDxZYrsj9c0S9yWy-yaVGMipsE6SYn0hfdxFQwbjT9i9g8cvhXs-CzVtXW7acS3mHxFhEwd-evdSJrxWj297c90bPtzwhj5l57frg3GWgJjGlkE3efBP2A0A5AFyGUX%2BS8gnYKiTKx5P7zHGVziJtcxJG-u-oRYtgE6audvRkBZq4IF2iUi4DG4lKCFq-JlFZMR3H7XO3blNvePw7zJguo8oEJquhXA%2BK2qK0CRitxWaIRd5DkuRXjSglyGRI3nOTwcuXwdZCoSPkaYKFH9L4cubRQ-TtCOSDNDtG8h3ofhymH2HFh2w44f%2BS9hwRD%2B59k2AUAr115K5AA-MAkB1634mABg6mtmUsaFlB8HNfgtfi1Ze65azwFWu8S7KWDhXT22bMTAnHbKqppMCnvT2dks9zCCNY0eDWYtTDHu4rHcelx39We4DS2fMuRP6%2B3QYe26r5rNme2WzcJ0ffY65mtm0TrZk49ZEL7A60CZJxY3X2wg0Hxj3kKY-SAoWss6FqeCHawutyhN8DiB4g%2BQfY5JgC%2B2FsoApurR-7kIQB31Z8dNg%2B5C85XLIVXvLzO5RTEpy6pHt8T9792p-fg%2Ba0OgF9nW3VfqpOtH1wx68jAAuK8zghxAeSGpGJDJw4Bxa-Id%2BGwCXBkPbqwu2ySAHyMObigawRcrbSNo%2BwNxLennJgzYRsYsQggEQGIB0eKACEOAHDExBkQnOrIIANeH93IAiB2qIAZyJ2QvlYKMqSgMZ2IBIB3wDt3AfwD-yxc2ogppAfgHElPBWBrn5OYl%2BKlJcbByXwwRQhi49izDMAeQTyEg6Ck%2BAwmyGDIDMNRcsu8hCdFe0K9UypVdOdghYX5WDvzhQ7G8XwPPDyCzN5ASxPvGi4wQwOcAmIPvJ0FACIv4AyLmpM5E-OUWg81AWAzIFlKUATX45zNjVkoACApA6a9gBCGaJ3QbmwwWl2KCdfRSk8AIUAJsSWJmY3Bn8SmIgA4BJQKAyB69fOi8di0CRzskC-sGDdLEss0qcNwgEjcIBo3SQWN-0zCbvMtY6MKYskCuQSgiaK5WgBRGQAaEmQ1UFSlkCXiNuyM99N%2BIxZcB95vARsVdKABVehh5QFziWmRqAwnDrtF82qWdhAAzZOgmrz83IFCHJVKcpbnwNC5cxSUrnybrd40YXmWQgAA&quot;&gt;&lt;/iframe&gt;

&lt;/figure&gt;

&lt;h2 id=&quot;community-site&quot;&gt;Community Site&lt;/h2&gt;

&lt;p&gt;Now that I got &lt;a href=&quot;https://github.com/wardencommunity/warden&quot;&gt;warden&lt;/a&gt; working with &lt;a href=&quot;https://hanamirb.org/&quot;&gt;Hanami&lt;/a&gt; I’ve decided to go back to my
&lt;a href=&quot;https://rubyonrails.org/&quot;&gt;Rails&lt;/a&gt; implementation of the community site. While I’ve enjoyed Hanami I’m
looking to have a high velocity with this so sticking with tooling I know is
going to be better. I will absolutely revisit Hanami later as I liked a lot of
the decisions they’ve made and found it a great experience.&lt;/p&gt;

&lt;p&gt;Going back to an old codebase always means I get to do one of my favourite
things, upgrading libraries! I’m not even kidding, I get a lot of pleasure out
of bumping &lt;a href=&quot;https://www.ruby-lang.org/en/libraries/&quot;&gt;gems&lt;/a&gt; and doing Rails upgrades. So now it’s running on Rails 8.1.&lt;/p&gt;

&lt;p&gt;I decided to take it a step further though and rewrite the entirety of the &lt;a href=&quot;https://github.com/ruby/erb&quot;&gt;erb
templates&lt;/a&gt; I was using into &lt;a href=&quot;https://www.phlex.fun/&quot;&gt;Phlex&lt;/a&gt;. I find using Phlex a much nicer
experience than writing erb templates.&lt;/p&gt;

&lt;p&gt;I’ve rewritten the live updating mechanism. I was tempted to switch away from
&lt;a href=&quot;https://htmx.org/&quot;&gt;htmx&lt;/a&gt; but decided to stick with it in the end but needed a better architecture.
The biggest issue was actually how I figured out &lt;em&gt;what&lt;/em&gt; had updated. I was just
asking each type of record I cared about if they had been updated. It kind of
worked but it didn’t handle the case of things being deleted and it required
quite a few different database queries to figure out.&lt;/p&gt;

&lt;p&gt;The new architecture now has a model for all the updates in the system that I
care about. When you update a post it creates an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Update&lt;/code&gt; record that says a
post was updated. When you delete a post it creates an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Update&lt;/code&gt; record that says
a post was deleted. This has cleaned up that whole code path a lot.&lt;/p&gt;

&lt;p&gt;I’ve also finally committed to styling the page and wanted to share a sneak
preview, it’s not the most exciting but I think it’s consistent with everything
else I’ve been doing and think it’s easy to use.&lt;/p&gt;

&lt;figure class=&quot;post--image&quot;&gt;
  &lt;a class=&quot;post--image-link&quot; href=&quot;https://sean.taylormadetech.dev/data/weekly-brain-dump-16/community.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img alt=&quot;A registration webpage for the Taylor Community site.

Everything has thick borders, there&apos;s a field for name, password, password
confirmation, and a &apos;I&apos;ll behave&apos; checkbox.&quot; src=&quot;https://sean.taylormadetech.dev/data/weekly-brain-dump-16/community.png&quot; title=&quot;A registration webpage for the Taylor Community site.

Everything has thick borders, there&apos;s a field for name, password, password
confirmation, and a &apos;I&apos;ll behave&apos; checkbox.&quot; /&gt;
  &lt;/a&gt;
&lt;/figure&gt;

</description>
        <pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate>
        <link>https://taylormadetech.dev/2026/04/01/taylor-monthly-march.html</link>
        <guid isPermaLink="true">https://taylormadetech.dev/2026/04/01/taylor-monthly-march.html</guid>
        
        
      </item>
    
      <item>
        <title>Taylor Monthly - February 2026</title>
        <description>&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt; &lt;/th&gt;
      &lt;th style=&quot;text-align: center&quot;&gt;Count&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Releases&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://github.com/HellRok/Taylor/commits/main/?since=2026-02-01&amp;amp;until=2026-03-01&quot;&gt;Commits&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;1&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Contributors&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;1&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://github.com/HellRok/Taylor/pulls?q=is%3Apr+is%3Amerged+closed%3A2026-02-01..2026-03-01&quot;&gt;Pull requests merged&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;1&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://github.com/HellRok/Taylor/issues?q=is%3Aissue%20state%3Aclosed%20closed%3A2026-02-01..2026-03-01&quot;&gt;Issues closed&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: center&quot;&gt;1&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2&gt;At a Glance&lt;/h2&gt;

&lt;ul&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#a-wild-email-appears&quot;&gt;A Wild Email Appears&lt;/a&gt;
      &lt;/strong&gt;
      
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#jumpy-alien&quot;&gt;Jumpy Alien&lt;/a&gt;
      &lt;/strong&gt;
      
    &lt;/li&gt;
  
    &lt;li&gt;
      &lt;strong&gt;
        &lt;a href=&quot;#community-site&quot;&gt;Community Site&lt;/a&gt;
      &lt;/strong&gt;
      
    &lt;/li&gt;
  
&lt;/ul&gt;

&lt;h2 id=&quot;a-wild-email-appears&quot;&gt;A Wild Email Appears&lt;/h2&gt;

&lt;p&gt;I received an email about Taylor! Someone noticed a bug on the &lt;a href=&quot;https://playground.taylormadetech.dev/&quot;&gt;playground&lt;/a&gt; and
reported it. This small act by them made me feel like I’m actually making a
difference with this project.&lt;/p&gt;

&lt;figure class=&quot;post--image&quot;&gt;
  &lt;a class=&quot;post--image-link&quot; href=&quot;https://sean.taylormadetech.dev/data/weekly-brain-dump-9/taylor-playground-bug.png&quot; target=&quot;_blank&quot;&gt;
    &lt;img alt=&quot;The Taylor playground showing the benchmark.rb example.

There is a red circle highlighting some missing y calls on a Vector2 object.

The error in the console says &apos;undefined method `abs` for Vector2&apos;.

The frozen game shows the background drawn off centre.
&quot; src=&quot;https://sean.taylormadetech.dev/data/weekly-brain-dump-9/taylor-playground-bug.png&quot; title=&quot;The Taylor playground showing the benchmark.rb example.

There is a red circle highlighting some missing y calls on a Vector2 object.

The error in the console says &apos;undefined method `abs` for Vector2&apos;.

The frozen game shows the background drawn off centre.
&quot; /&gt;
  &lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;The thing that makes me chuckle about this bug report is that they’re focussing
on the missing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;y&lt;/code&gt; call on the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Vector2&lt;/code&gt; but mention nothing about the clearly
broken background drawing.&lt;/p&gt;

&lt;p&gt;I’m very thankful for this report though, I have fixed both of these issues but
I’m still not sure how to tackle keeping regressions like this from happening
automatically.&lt;/p&gt;

&lt;h2 id=&quot;jumpy-alien&quot;&gt;Jumpy Alien&lt;/h2&gt;

&lt;p&gt;I got &lt;a href=&quot;https://github.com/HellRok/taylor-examples/tree/main/jumpy_alien&quot;&gt;Jumpy Alien&lt;/a&gt; updated for &lt;a href=&quot;https://taylormadetech.dev&quot;&gt;Taylor&lt;/a&gt; v0.4.1. This was mostly
the change around &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Texture2D#draw&lt;/code&gt; no longer defaulting the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;origin&lt;/code&gt; to the
centre of the image and instead puts it back at &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Vector2[0, 0]&lt;/code&gt; to make it work
like nearly every other &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#draw&lt;/code&gt; function.&lt;/p&gt;

&lt;p&gt;I did some gameplay improvements too.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The pipes now spawn at random heights&lt;/li&gt;
  &lt;li&gt;Player gravity tweaked&lt;/li&gt;
  &lt;li&gt;Pipe movement speed tweaked&lt;/li&gt;
  &lt;li&gt;Exit button now works&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;post--video&quot;&gt;
  &lt;video aria-describedby=&quot;jumpy-alien-video-description&quot; controls=&quot;&quot; id=&quot;jumpy-alien-video&quot; preload=&quot;metadata&quot; src=&quot;https://sean.taylormadetech.dev/data/weekly-brain-dump-10/jumpy_alien.webm&quot;&gt;
    If your browser doesn&apos;t support the video tag, you can
    &lt;a href=&quot;https://sean.taylormadetech.dev/data/weekly-brain-dump-10/jumpy_alien.webm&quot;&gt;download the video&lt;/a&gt;.
  &lt;/video&gt;
  &lt;div id=&quot;jumpy-alien-video-description&quot; class=&quot;post--video--description&quot;&gt;
    &lt;p&gt;
  The main menu is shown before going into play the game. Once playing the
  player gets a score of three before crashing into a pipe and seeing the end
  screen showing their high score of 3.
&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;h2 id=&quot;community-site&quot;&gt;Community Site&lt;/h2&gt;

&lt;p&gt;Now that I got &lt;a href=&quot;https://github.com/wardencommunity/warden&quot;&gt;warden&lt;/a&gt; working with &lt;a href=&quot;https://hanamirb.org/&quot;&gt;Hanami&lt;/a&gt; I’ve decided to go back to my
&lt;a href=&quot;https://rubyonrails.org/&quot;&gt;Rails&lt;/a&gt; implementation of the community site. While I’ve enjoyed Hanami I’m
looking to have a high velocity with this so sticking with tooling I know is
going to be better. I will absolutely revisit Hanami later as I liked a lot of
the decisions they’ve made and found it a great experience.&lt;/p&gt;

&lt;p&gt;Going back to an old codebase always means I get to do one of my favourite
things, upgrading libraries! I’m not even kidding, I get a lot of pleasure out
of bumping &lt;a href=&quot;https://www.ruby-lang.org/en/libraries/&quot;&gt;gems&lt;/a&gt; and doing Rails upgrades. So now it’s running on Rails 8.1.&lt;/p&gt;

&lt;p&gt;I decided to take it a step further though and rewrite the entirety of the &lt;a href=&quot;https://github.com/ruby/erb&quot;&gt;erb
templates&lt;/a&gt; I was using into &lt;a href=&quot;https://www.phlex.fun/&quot;&gt;Phlex&lt;/a&gt;. I find using Phlex a much nicer
experience than writing erb templates.&lt;/p&gt;

</description>
        <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
        <link>https://taylormadetech.dev/2026/03/01/taylor-monthly-february.html</link>
        <guid isPermaLink="true">https://taylormadetech.dev/2026/03/01/taylor-monthly-february.html</guid>
        
        
      </item>
    
  </channel>
</rss>
