<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Dusty Phillips Codes</title>
    <link>https://dusty.phillips.codes/</link>
    <description>Recent content on Dusty Phillips Codes</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 08 Jan 2026 19:33:28 -0400</lastBuildDate>
    <atom:link href="https://dusty.phillips.codes/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Portable Computing Setup</title>
      <link>https://dusty.phillips.codes/2026/01/08/portable-computing-setup/</link>
      <pubDate>Thu, 08 Jan 2026 19:33:28 -0400</pubDate>
      <guid>https://dusty.phillips.codes/2026/01/08/portable-computing-setup/</guid>
      <description>&lt;p&gt;I know from experience that if I use a laptop keyboard for any length of time,&#xA;I will be forced to do &lt;a href=&#34;https://dusty.phillips.codes/2020/02/15/on-voice-coding/&#34;&gt;voice coding&lt;/a&gt; for months&#xA;while the RSI heals.&lt;/p&gt;&#xA;&lt;p&gt;Therefore I don&amp;rsquo;t own a laptop. For the past five years this has meant I&amp;rsquo;m&#xA;chained to my desk if I want to do any coding or computing (though a tablet&#xA;and pencil have been my go-to for non-typing tasks such as easy web&#xA;browsing).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Some Gleam Projects</title>
      <link>https://dusty.phillips.codes/2026/01/05/some-gleam-projects/</link>
      <pubDate>Mon, 05 Jan 2026 06:00:54 -0400</pubDate>
      <guid>https://dusty.phillips.codes/2026/01/05/some-gleam-projects/</guid>
      <description>&lt;p&gt;I spent most of my winter break in my wood shop, working on some tech adjacent&#xA;projects that I will post about later. However, I also spent a fair amount of&#xA;time at my keyboard, working on a handful of gleam projects I wanted to&#xA;introduce here.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m theoretically working on a small full stack application, but as so often&#xA;happens with me, I was sidetracked by developing open source libraries that&#xA;I have no hope of keeping maintained. So these projects are all in support&#xA;of full stack web development on&#xA;&lt;a href=&#34;https://github.com/lustre-labs/lustre&#34;&gt;lustre&lt;/a&gt; and&#xA;&lt;a href=&#34;https://gleam-wisp.github.io/wisp/&#34;&gt;wisp&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My AI-Driven Identity Crisis</title>
      <link>https://dusty.phillips.codes/2025/06/08/my-ai-driven-identity-crisis/</link>
      <pubDate>Sun, 08 Jun 2025 09:09:24 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2025/06/08/my-ai-driven-identity-crisis/</guid>
      <description>&lt;p&gt;I love coding. I love writing. I love writing about coding, as evidenced by&#xA;the archives of this blog and the multiple tech books I have written.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve always prided myself on being able to explain things clearly. I have a&#xA;unique ability to identify the order in which to teach concepts. I have enough&#xA;five star reviews on my books to know that there are plenty of readers out&#xA;there who agree with me.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a Wasm Compiler in Roc - Part 16</title>
      <link>https://dusty.phillips.codes/2024/12/07/build-a-wasm-compiler-in-roc-part-16/</link>
      <pubDate>Sat, 07 Dec 2024 11:43:44 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2024/12/07/build-a-wasm-compiler-in-roc-part-16/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;https://dusty.phillips.codes/roc/&#34;&gt;earlier articles&lt;/a&gt;, we have implemented a&#xA;tokenizer, parser, and transformer to convert WAT syntax to a Wasm AST,&#xA;and got started on the code generation.&lt;/p&gt;&#xA;&lt;p&gt;In this part, we&amp;rsquo;ll finally wrap up code generation and be able&#xA;to compile our hello world sample into something that &lt;code&gt;wasmtime&lt;/code&gt;&#xA;can run.&lt;/p&gt;&#xA;&lt;p&gt;I hope.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a Wasm Compiler in Roc - Part 15</title>
      <link>https://dusty.phillips.codes/2024/12/01/build-a-wasm-compiler-in-roc-part-15/</link>
      <pubDate>Sun, 01 Dec 2024 14:43:44 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2024/12/01/build-a-wasm-compiler-in-roc-part-15/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;https://dusty.phillips.codes/roc/&#34;&gt;earlier articles&lt;/a&gt;, we have implemented a&#xA;tokenizer, parser, and transformer to convert WAT syntax to a Wasm AST,&#xA;and got a good portion of the code generation step in place.&lt;/p&gt;&#xA;&lt;p&gt;Unless there are any unexpected detours, this part will cover more code&#xA;generation and take us through a messy refactor that Roc helpfully makes not so&#xA;messy!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a Wasm Compiler in Roc - Part 14</title>
      <link>https://dusty.phillips.codes/2024/11/23/build-a-wasm-compiler-in-roc-part-14/</link>
      <pubDate>Sat, 23 Nov 2024 14:43:44 -0400</pubDate>
      <guid>https://dusty.phillips.codes/2024/11/23/build-a-wasm-compiler-in-roc-part-14/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;https://dusty.phillips.codes/roc/&#34;&gt;earlier articles&lt;/a&gt;, we have implemented a&#xA;tokenizer, parser, and transformer to convert WAT syntax to a Wasm AST&#xA;and got started on the code generation.&lt;/p&gt;&#xA;&lt;p&gt;This part will continue with code generation. We&amp;rsquo;ll start with the import&#xA;section because it has a couple interesting complications that we need to&#xA;take into account.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-import-section&#34;&gt;The Import Section&lt;/h2&gt;&#xA;&lt;p&gt;Consider this &lt;code&gt;wat&lt;/code&gt; import statement:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;(module&#xA;    (import &amp;#34;wasi_snapshot_preview1&amp;#34; &amp;#34;fd_write&amp;#34; (&#xA;        func $fd_write (param i32 i32 i32 i32) (result i32))&#xA;    )&#xA;)&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If we look at the bytes in the binary representation of this section, it&amp;rsquo;s&#xA;surprisingly long:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a Wasm Compiler in Roc - Part 13</title>
      <link>https://dusty.phillips.codes/2024/11/09/build-a-wasm-compiler-in-roc-part-13/</link>
      <pubDate>Sat, 09 Nov 2024 11:43:44 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2024/11/09/build-a-wasm-compiler-in-roc-part-13/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;https://dusty.phillips.codes/roc/&#34;&gt;earlier articles&lt;/a&gt;, we have implemented a tokenizer, parser, and&#xA;transformer to convert WAT syntax to a Wasm AST, and started building a code&#xA;generator to create bytes from that AST. The structure of the code generator is&#xA;in place already, so our remaining task is to generate all the other sections&#xA;of our input module.&lt;/p&gt;&#xA;&lt;h2 id=&#34;data-section&#34;&gt;Data section&lt;/h2&gt;&#xA;&lt;p&gt;The next section I want to implement is the data section, which is described in&#xA;the Wasm spec&#xA;&lt;a href=&#34;https://webassembly.github.io/spec/core/binary/modules.html#binary-datasec&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a Wasm Compiler in Roc - Part 12</title>
      <link>https://dusty.phillips.codes/2024/11/01/build-a-wasm-compiler-in-roc-part-12/</link>
      <pubDate>Fri, 01 Nov 2024 14:43:44 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2024/11/01/build-a-wasm-compiler-in-roc-part-12/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;https://dusty.phillips.codes/roc/&#34;&gt;earlier articles&lt;/a&gt;, we have implemented a&#xA;tokenizer, parser, and transformer to convert the Web Assembly Text Format to&#xA;an Abstract Syntax Tree that can &lt;em&gt;hopefully&lt;/em&gt; easily compile to Wasm.&lt;/p&gt;&#xA;&lt;p&gt;Truthfully, the next step &lt;em&gt;should&lt;/em&gt; be validation. Validation is the process of&#xA;statically analyzing the syntax tree to catch as many errors as possible. This&#xA;is where things like type checking and borrow checking happen, for example.&lt;/p&gt;&#xA;&lt;p&gt;The wasm spec has an &lt;a href=&#34;https://webassembly.github.io/spec/core/valid/index.html&#34;&gt;in-depth&#xA;description&lt;/a&gt; of what&#xA;validation should look like for a conforming compiler. But we are not building&#xA;a Wasm-conforming compiler. We&amp;rsquo;re barely even building a Wasm-looking compiler!&#xA;The truth is, static analysis gets its own university class and textbook,&#xA;distinct from the complier classes and textbooks, so I think we can be forgiven&#xA;for skipping it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a Wasm Compiler in Roc - Part 11</title>
      <link>https://dusty.phillips.codes/2024/10/29/build-a-wasm-compiler-in-roc-part-11/</link>
      <pubDate>Tue, 29 Oct 2024 13:43:44 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2024/10/29/build-a-wasm-compiler-in-roc-part-11/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;https://dusty.phillips.codes/roc/&#34;&gt;earlier articles&lt;/a&gt;, we implemented a&#xA;tokenizer and parser to convert Wasm&amp;rsquo;s WAT syntax into an S-expression abstract&#xA;syntax tree and&#xA;started to implement a transformer to convert that AST into one more&#xA;suitable for generating Wasm bytecode.&lt;/p&gt;&#xA;&lt;p&gt;This article continues where we left off, building the last piece of the&#xA;transformer. This piece needs to represent arbitrary instructions inside a&#xA;function body, so it&amp;rsquo;s going to take a bit of massaging. But we&amp;rsquo;ll get there!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a Wasm Compiler in Roc - Part 10</title>
      <link>https://dusty.phillips.codes/2024/10/17/build-a-wasm-compiler-in-roc-part-10/</link>
      <pubDate>Thu, 17 Oct 2024 10:15:44 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2024/10/17/build-a-wasm-compiler-in-roc-part-10/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;https://dusty.phillips.codes/roc/&#34;&gt;earlier articles&lt;/a&gt;, we implemented a&#xA;tokenizer and parser to convert Wasm&amp;rsquo;s WAT syntax into an S-expression abstract&#xA;syntax tree and started to implement a transformer to convert that AST into one more&#xA;suitable for generating Wasm bytecode.&lt;/p&gt;&#xA;&lt;p&gt;Now that the boilerplate is in place, this article will continue to implement&#xA;recursive transformer functions, getting into some of the more complicated&#xA;expressions in the &amp;ldquo;hello world&amp;rdquo; WAT example.&lt;/p&gt;&#xA;&lt;p&gt;I should mention that the code in this article gets long and repetitive. I&amp;rsquo;m&#xA;including all the code we&amp;rsquo;ll need for the hello world example, but if you feel&#xA;like it&amp;rsquo;s getting a bit boring, feel free to skim bits of it! I now understand&#xA;why most &amp;ldquo;introduction to compiler&amp;rdquo; articles focus on such a tiny amount of&#xA;syntax! I feel committed now, though, so if you&amp;rsquo;re willing to bear with me,&#xA;we&amp;rsquo;ll see this through to the end.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a Wasm Compiler in Roc - Part 9</title>
      <link>https://dusty.phillips.codes/2024/10/07/build-a-wasm-compiler-in-roc-part-9/</link>
      <pubDate>Mon, 07 Oct 2024 14:43:44 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2024/10/07/build-a-wasm-compiler-in-roc-part-9/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;https://dusty.phillips.codes/roc/&#34;&gt;earlier articles&lt;/a&gt;, we implemented a&#xA;tokenizer and parser to convert Wasm&amp;rsquo;s WAT syntax into an S-expression abstract&#xA;syntax tree, and&#xA;started to implement a transformer to convert that AST into one more&#xA;suitable for generating Wasm bytecode.&lt;/p&gt;&#xA;&lt;p&gt;This article continues where part 8 left off, as we try to expand the parser&#xA;to something more than an empty WAT &lt;code&gt;(module)&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Reminder: You are reading content that took a great deal of effort&#xA;to craft, compose, and debug. If you appreciate this work, consider supporting&#xA;me on &lt;a href=&#34;https://www.patreon.com/dustyphillipscodes&#34;&gt;Patreon&lt;/a&gt; or&#xA;&lt;a href=&#34;https://github.com/sponsors/dusty-phillips&#34;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a Wasm Compiler in Roc - Part 8</title>
      <link>https://dusty.phillips.codes/2024/10/02/build-a-wasm-compiler-in-roc-part-8/</link>
      <pubDate>Wed, 02 Oct 2024 10:43:44 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2024/10/02/build-a-wasm-compiler-in-roc-part-8/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;https://dusty.phillips.codes/roc/&#34;&gt;earlier articles&lt;/a&gt;, we&#xA;implemented a tokenizer for the Wasm text syntax (WAT) and started on&#xA;a parser to convert those tokes to a S-expression AST.&lt;/p&gt;&#xA;&lt;p&gt;In this part, we&amp;rsquo;ll start to create a &lt;em&gt;transformer&lt;/em&gt; to convert that AST to a&#xA;new one that better matches the WASM output we will be crafting. Don&amp;rsquo;t ask me&#xA;how many parts that&amp;rsquo;s going to take!&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Reminder: You are reading content that took a great deal of effort&#xA;to craft, compose, and debug. If you appreciate this work, consider supporting&#xA;me on &lt;a href=&#34;https://www.patreon.com/dustyphillipscodes&#34;&gt;Patreon&lt;/a&gt; or&#xA;&lt;a href=&#34;https://github.com/sponsors/dusty-phillips&#34;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>LazyVim for Ambitious Developers Now Available</title>
      <link>https://dusty.phillips.codes/2024/09/27/lazyvim-for-ambitious-developers-now-available/</link>
      <pubDate>Fri, 27 Sep 2024 11:20:43 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2024/09/27/lazyvim-for-ambitious-developers-now-available/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s been a while since I published the last chapter of LazyVim for Ambitious&#xA;Developers on the &lt;a href=&#34;https://lazyvim-ambitious-devs.phillips.codes/&#34;&gt;website&lt;/a&gt;,&#xA;but I was waiting for the print edition to be available to share it widely. And&#xA;that required waiting (twice) for proofs to be mailed to me.&lt;/p&gt;&#xA;&lt;p&gt;But it&amp;rsquo;s finally here! For a direct link to purchase the print edition, &lt;a href=&#34;https://payhip.com/b/aQirv&#34;&gt;click&#xA;here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m proud of the book contents. I&amp;rsquo;m pretty confident that even seasoned Vim&#xA;power users would pick up one or two tricks they didn&amp;rsquo;t already know. I didn&amp;rsquo;t&#xA;cover &lt;em&gt;everything&lt;/em&gt;, of course. I&amp;rsquo;m sure those same power users can come up with&#xA;tips to make it even better.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a Wasm Compiler in Roc - Part 7</title>
      <link>https://dusty.phillips.codes/2024/09/24/build-a-wasm-compiler-in-roc-part-7/</link>
      <pubDate>Tue, 24 Sep 2024 10:33:44 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2024/09/24/build-a-wasm-compiler-in-roc-part-7/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;https://dusty.phillips.codes/roc/&#34;&gt;earlier articles&lt;/a&gt;, we&#xA;implemented a tokenizer for the Wasm text syntax (WAT). In &lt;a href=&#34;2024/09/14/build-a-wasm-compiler-in-roc-part-6/&#34;&gt;part&#xA;6&lt;/a&gt;, we started building&#xA;a parser. We ended that part on a bit of a down note when I realized&#xA;we were in for yet another refactor. I&amp;rsquo;m in a better mood today and it&amp;rsquo;s&#xA;looking like it won&amp;rsquo;t be so bad, after all!&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Reminder: You are reading content that took a great deal of effort&#xA;to craft, compose, and debug. If you appreciate this work, consider supporting&#xA;me on &lt;a href=&#34;https://www.patreon.com/dustyphillipscodes&#34;&gt;Patreon&lt;/a&gt; or&#xA;&lt;a href=&#34;https://github.com/sponsors/dusty-phillips&#34;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a Wasm Compiler in Roc - Part 6</title>
      <link>https://dusty.phillips.codes/2024/09/14/build-a-wasm-compiler-in-roc-part-6/</link>
      <pubDate>Sat, 14 Sep 2024 18:43:44 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2024/09/14/build-a-wasm-compiler-in-roc-part-6/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;https://dusty.phillips.codes/roc/&#34;&gt;earlier articles&lt;/a&gt;, I introduced this &amp;ldquo;WAT to Wasm compiler in Roc&amp;rdquo;&#xA;project, wrote some Roc code to load an input file, and implemented a tokenizer&#xA;for a &amp;ldquo;hello world&amp;rdquo; of Wat to Wasm compilation. It was&amp;hellip; more work than I&#xA;expected. Four blog posts more work, to be precise! I have no idea where it&amp;rsquo;s&#xA;going to end.&lt;/p&gt;&#xA;&lt;p&gt;But I do know what&amp;rsquo;s next! Parsing.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Reminder: You are reading content that took a great deal of effort&#xA;to craft, compose, and debug. If you appreciate this work, consider supporting&#xA;me on &lt;a href=&#34;https://www.patreon.com/dustyphillipscodes&#34;&gt;Patreon&lt;/a&gt; or&#xA;&lt;a href=&#34;https://github.com/sponsors/dusty-phillips&#34;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a Wasm Compiler in Roc - Part 5</title>
      <link>https://dusty.phillips.codes/2024/09/06/build-a-wasm-compiler-in-roc-part-5/</link>
      <pubDate>Fri, 06 Sep 2024 08:43:44 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2024/09/06/build-a-wasm-compiler-in-roc-part-5/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;https://dusty.phillips.codes/roc/&#34;&gt;earlier articles&lt;/a&gt;, I introduced this compiler project, wrote some&#xA;Roc code to load an input file, and started implementing a tokenizer with error&#xA;handling.&lt;/p&gt;&#xA;&lt;p&gt;I think I need to admit that I have absolutely no clue how to estimate how long&#xA;a blog article is going to be. I thought &amp;ldquo;build a compiler&amp;rdquo; would be one&#xA;article. And then I thought &amp;ldquo;build a tokenizer&amp;rdquo; would be one article. &lt;em&gt;sigh&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;I swear we&amp;rsquo;ll be done with tokenizing at the end of this post. But first we&amp;rsquo;ll&#xA;take a detour to have a look at Roc&amp;rsquo;s very elegant built-in testing syntax.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Reminder: You are reading content that took a great deal of effort&#xA;to craft, compose, and debug. If you appreciate this work, consider supporting&#xA;me on &lt;a href=&#34;https://www.patreon.com/dustyphillipscodes&#34;&gt;Patreon&lt;/a&gt; or&#xA;&lt;a href=&#34;https://github.com/sponsors/dusty-phillips&#34;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Build a Wasm Compiler in Roc - Part 4</title>
      <link>https://dusty.phillips.codes/2024/08/29/build-a-wasm-compiler-in-roc-part-4/</link>
      <pubDate>Thu, 29 Aug 2024 14:43:44 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2024/08/29/build-a-wasm-compiler-in-roc-part-4/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;https://dusty.phillips.codes/roc/&#34;&gt;earlier articles&lt;/a&gt;, I introduced the project, wrote some Roc code to&#xA;load an input file, and started implementing a Tokenizer.&lt;/p&gt;&#xA;&lt;p&gt;This part takes a bit of a detour with a refactor to support rudimentary error&#xA;reporting.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Reminder: You are reading content that took a great deal of effort&#xA;to craft, compose, and debug. If you appreciate this work, consider supporting&#xA;me on &lt;a href=&#34;https://www.patreon.com/dustyphillipscodes&#34;&gt;Patreon&lt;/a&gt; or&#xA;&lt;a href=&#34;https://github.com/sponsors/dusty-phillips&#34;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;handling-errors-during-tokenizing&#34;&gt;Handling Errors during Tokenizing&lt;/h2&gt;&#xA;&lt;p&gt;Before we start adding more tokens to tokenize the &lt;code&gt;Hello World&lt;/code&gt; module, I want&#xA;to beef up our error handling a bit. There are a few reasons I don&amp;rsquo;t like the&#xA;basic &lt;code&gt;dbg nextByte&lt;/code&gt; we are currently using the wildcard arm:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a Wasm Compiler in Roc - Part 3</title>
      <link>https://dusty.phillips.codes/2024/08/22/build-a-wasm-compiler-in-roc-part-3/</link>
      <pubDate>Thu, 22 Aug 2024 09:43:44 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2024/08/22/build-a-wasm-compiler-in-roc-part-3/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;https://dusty.phillips.codes/2024/08/11/build-a-wasm-compiler-in-roc-part-1-introduction/&#34;&gt;part 1&lt;/a&gt; and&#xA;&lt;a href=&#34;https://dusty.phillips.codes/2024/08/15/build-a-wasm-compiler-in-roc-part-2/&#34;&gt;part 2&lt;/a&gt; of this series,&#xA;I introduced the project and we wrote some Roc code to load an input file and save&#xA;the compiled result to a different file.&lt;/p&gt;&#xA;&lt;p&gt;Note: Other articles in this series are collected &lt;a href=&#34;https://dusty.phillips.codes/roc/&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;However, we are a long ways from actually having that compiled result available!&#xA;This article introduces the phases involved in writing a compiler and focus&#xA;on implementing the first phase, known as lexical analysis or tokenizing.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Roc Articles</title>
      <link>https://dusty.phillips.codes/roc/</link>
      <pubDate>Sat, 17 Aug 2024 10:07:04 -0300</pubDate>
      <guid>https://dusty.phillips.codes/roc/</guid>
      <description>&lt;p&gt;Table of contents for my series on building a WASM compiler in &lt;a href=&#34;https://www.roc-lang.org&#34;&gt;Roc&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2024/08/11/build-a-wasm-compiler-in-roc-part-1-introduction/&#34;&gt;Part 1 - Project Introduction (Roc and Wasm)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2024/08/15/build-a-wasm-compiler-in-roc-part-2/&#34;&gt;Part 2 - Arguments and IO in Roc&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2024/08/22/build-a-wasm-compiler-in-roc-part-3/&#34;&gt;Part 3 - Tokenizer boilerplate&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2024/08/29/build-a-wasm-compiler-in-roc-part-4/&#34;&gt;Part 4 - Errors and positions in tokenizer&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2024/09/06/build-a-wasm-compiler-in-roc-part-5/&#34;&gt;Part 5 - Testing and tokenizing&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2024/09/14/build-a-wasm-compiler-in-roc-part-6/&#34;&gt;Part 6 - Introduction to Parsing&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2024/09/24/build-a-wasm-compiler-in-roc-part-7/&#34;&gt;Part 7 - Refactoring with confidence (more parsing)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2024/10/02/build-a-wasm-compiler-in-roc-part-8/&#34;&gt;Part 8 - Introduction to Transforming&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2024/10/07/build-a-wasm-compiler-in-roc-part-9/&#34;&gt;Part 9 - Transforming Memory and Export nodes&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2024/10/17/build-a-wasm-compiler-in-roc-part-10/&#34;&gt;Part 10 - Transforming Data and Import nodes&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2024/10/29/build-a-wasm-compiler-in-roc-part-11/&#34;&gt;Part 11 - Transforming Function nodes&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2024/11/01/build-a-wasm-compiler-in-roc-part-12/&#34;&gt;Part 12 - Introduction to Code Generation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2024/11/09/build-a-wasm-compiler-in-roc-part-13/&#34;&gt;Part 13 - Generating Data and Type sections&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2024/11/23/build-a-wasm-compiler-in-roc-part-14/&#34;&gt;Part 14 - Generating Import section&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2024/12/01/build-a-wasm-compiler-in-roc-part-15/&#34;&gt;Part 15 - Generating Function and code sections&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2024/12/07/build-a-wasm-compiler-in-roc-part-16/&#34;&gt;Part 16 - Generating Exports (and project conclusion)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/dusty-phillips/warloc&#34;&gt;Source Code on GitHub&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Build a Wasm Compiler in Roc - Part 2</title>
      <link>https://dusty.phillips.codes/2024/08/15/build-a-wasm-compiler-in-roc-part-2/</link>
      <pubDate>Thu, 15 Aug 2024 14:43:44 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2024/08/15/build-a-wasm-compiler-in-roc-part-2/</guid>
      <description>&lt;p&gt;My latest hair-brained project is a WAT-to-Wasm compiler written in the Roc&#xA;programming language. I explained my (ir)rationale for the project in &lt;a href=&#34;https://dusty.phillips.codes/2024/08/11/build-a-wasm-compiler-in-roc-part-1-introduction/&#34;&gt;Part&#xA;1&lt;/a&gt; of this&#xA;series, which also included an introduction to the technologies we&amp;rsquo;ll be using.&lt;/p&gt;&#xA;&lt;p&gt;Note: Other articles in this series are collected &lt;a href=&#34;https://dusty.phillips.codes/roc/&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;In this article, we&amp;rsquo;ll get started writing some Roc code. We won&amp;rsquo;t get to&#xA;the point where we are doing anything with WAT or Wasm, yet, but we will&#xA;be able to load an input file and parse some command line arguments.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a Wasm Compiler in Roc - Part 1: Introduction</title>
      <link>https://dusty.phillips.codes/2024/08/11/build-a-wasm-compiler-in-roc-part-1-introduction/</link>
      <pubDate>Sun, 11 Aug 2024 09:47:30 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2024/08/11/build-a-wasm-compiler-in-roc-part-1-introduction/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been curious about the &lt;a href=&#34;https://www.roc-lang.org&#34;&gt;Roc&lt;/a&gt; programming&#xA;language for a while now, but I haven&amp;rsquo;t had/taken the time to really dig into&#xA;it. I&amp;rsquo;ve read through the tutorial several times, but only yesterday did I&#xA;actually sit down and install Roc and implement the tutorial. Today, I woke up&#xA;with the ridiculous idea to build a compiler in the language.&lt;/p&gt;&#xA;&lt;p&gt;A simple compiler, to be clear.&lt;/p&gt;</description>
    </item>
    <item>
      <title>LazyVim for Ambitious Developers</title>
      <link>https://dusty.phillips.codes/2024/04/25/lazyvim-for-ambitious-developers/</link>
      <pubDate>Thu, 25 Apr 2024 15:22:43 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2024/04/25/lazyvim-for-ambitious-developers/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m working on a new book! This one will be published online with plenty of&#xA;begging for support on my&#xA;&lt;a href=&#34;https://www.patreon.com/dustyphillipscodes&#34;&gt;Patreon&lt;/a&gt;. If there is sufficient&#xA;interest, I&amp;rsquo;m planning physical and ebook editions later this year.&lt;/p&gt;&#xA;&lt;p&gt;LazyVim for Ambitious developers is a book for the modal-editor-curious out&#xA;there. Vim and Neovim have a reputation for being hard to learn and configure.&#xA;LazyVim really negates that reputation, but its documentation still assumes&#xA;that you have a lot of prior knowledge with Vim and Neovim.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Extolling the Virtues of Dexie Cloud for Backendless Development</title>
      <link>https://dusty.phillips.codes/2024/03/27/extolling-the-virtues-of-dexie-cloud-for-backendless-development/</link>
      <pubDate>Wed, 27 Mar 2024 08:50:24 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2024/03/27/extolling-the-virtues-of-dexie-cloud-for-backendless-development/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://dexie.org/cloud&#34;&gt;Dexie Cloud&lt;/a&gt; was released publicly today, and I love this&#xA;product so much that I want to lend my voice to the marketing effort.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://dexie.org&#34;&gt;Dexie.js&lt;/a&gt; is an incredible library for interacting with&#xA;IndexedDB in the browser. It wraps the sometimes-obtuse (and oft-buggy)&#xA;IndexedDB APIs with much more developer-friendly interfaces. And it is fully&#xA;reactive; if you change something in the database, your React, Svelte, Vue,&#xA;Angular, or Solid.js (Solid support is weak) app will live update all by&#xA;itself! It&amp;rsquo;s a truly heavenly coding experience.&lt;/p&gt;&#xA;&lt;p&gt;However, web users do not live in a vacuum, and storing things in IndexedDB is&#xA;fraught. The browser may delete that data on a whim, and who among us only has&#xA;one device these days? You might be able to use IndexedDB as a cache, but it&#xA;can&amp;rsquo;t be your source of truth.&lt;/p&gt;&#xA;&lt;p&gt;Until today.&lt;/p&gt;</description>
    </item>
    <item>
      <title>We Rewrote our React App in Svelte in Three Weeks</title>
      <link>https://dusty.phillips.codes/2024/03/20/we-rewrote-our-react-app-in-svelte-in-three-weeks/</link>
      <pubDate>Wed, 20 Mar 2024 08:50:33 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2024/03/20/we-rewrote-our-react-app-in-svelte-in-three-weeks/</guid>
      <description>&lt;p&gt;My wife and I have been working on &lt;a href=&#34;https://www.fablehenge.com&#34;&gt;Fablehenge&lt;/a&gt;—a&#xA;writing app for novelists—for several years. It had been a free time project&#xA;where we&amp;rsquo;d push hard over a few weekends, then let it sit idle for a couple&#xA;months perhaps tinkering in the evenings when we had a bit of time.&lt;/p&gt;&#xA;&lt;p&gt;At the beginning of this year, I decided to take a sabbatical, which was&#xA;&lt;em&gt;supposed&lt;/em&gt; to involve cutting new hiking trails and woodworking. While it has&#xA;done that, I found I&amp;rsquo;ve also been working on Fablehenge (more or less) full&#xA;time.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How Inko Does Safe Concurrency</title>
      <link>https://dusty.phillips.codes/2023/07/06/how-inko-does-safe-concurrency/</link>
      <pubDate>Thu, 06 Jul 2023 11:43:03 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2023/07/06/how-inko-does-safe-concurrency/</guid>
      <description>&lt;p&gt;In my &lt;a href=&#34;https://dusty.phillips.codes/2023/06/26/understanding-inko-memory-management-through-data-structures/&#34;&gt;last article&lt;/a&gt; on Inko, I implemented&#xA;several data structures to demonstrate how Inko&amp;rsquo;s single ownership model works.&lt;/p&gt;&#xA;&lt;p&gt;In this article, I will expose a big lie in that article and also dive into how Inko safely handles concurrency.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-concurrency-is-hard&#34;&gt;Why Concurrency is Hard&lt;/h2&gt;&#xA;&lt;p&gt;Truth be told, concurrency is hard for a lot of reasons, but the one that comes up most often is concurrent memory access.&#xA;If you have two threads of execution running at the same time, and they both read from and/or write to a variable, the&#xA;variable is likely to end up with incorrect or garbage data.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Understanding Inko Memory Management Through Data Structures</title>
      <link>https://dusty.phillips.codes/2023/06/26/understanding-inko-memory-management-through-data-structures/</link>
      <pubDate>Mon, 26 Jun 2023 09:20:26 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2023/06/26/understanding-inko-memory-management-through-data-structures/</guid>
      <description>&lt;p&gt;I briefly described Inko&amp;rsquo;s unique memory management model in my &lt;a href=&#34;https://dusty.phillips.codes/2023/05/30/why-im-excited-about-inko/&#34;&gt;previous article&lt;/a&gt;.&#xA;In this one, I want to go into a little more detail on single ownership and move semantics by implementing a few&#xA;linked lists, and a couple graphs. This is a tutorial about Inko and not about data&#xA;structures, so I am assuming that you have a passing knowledge of the data structures in question (or know how to use&#xA;a search engine to get that passing knowledge).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why I&#39;m Excited About Inko</title>
      <link>https://dusty.phillips.codes/2023/05/30/why-im-excited-about-inko/</link>
      <pubDate>Tue, 30 May 2023 19:24:52 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2023/05/30/why-im-excited-about-inko/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve spent much of my free time (if there is such a thing) over the past few years&#xA;researching various esoteric programming languages for no reason whatsoever. Some of my&#xA;favourites include &lt;a href=&#34;https://dusty.phillips.codes/rescript&#34;&gt;Rescript&lt;/a&gt; and &lt;a href=&#34;https://dusty.phillips.codes/gleam&#34;&gt;Gleam&lt;/a&gt;, which target&#xA;the Javascript and Erlang ecosystems, respectively.&lt;/p&gt;&#xA;&lt;p&gt;But I&amp;rsquo;ve really been looking for something a little more native.&#xA;It seems to me that there is a big gap on the language spectrum, somewhere&#xA;between Rust and Go:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing Inko 0.11 On Macos</title>
      <link>https://dusty.phillips.codes/2023/05/21/installing-inko-0.11-on-macos/</link>
      <pubDate>Sun, 21 May 2023 11:04:41 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2023/05/21/installing-inko-0.11-on-macos/</guid>
      <description>&lt;p&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; I&amp;rsquo;ve updated the &lt;a href=&#34;https://formulae.brew.sh/formula/inko&#34;&gt;Inko Formula&lt;/a&gt; on Homebrew&#xA;to 0.11.0, so you may just want to use &lt;code&gt;brew install inko&lt;/code&gt; instead. That said, There are a few bugfixes&#xA;on Inko that didn&amp;rsquo;t make it to the 0.11.0 release, so you may want to build off the &lt;code&gt;main&lt;/code&gt; branch instead.&lt;/p&gt;&#xA;&lt;p&gt;I have a blog article in progress about why I&amp;rsquo;m super excited about the &lt;a href=&#34;https://inko-lang.org&#34;&gt;Inko Programming Language&lt;/a&gt;.&#xA;It&amp;rsquo;s nowhere near completion, however, and I wanted to share how I got the latest version Inko running on MacOS (Ventura).&lt;/p&gt;</description>
    </item>
    <item>
      <title>How I Reconfigured Neovim From Scratch</title>
      <link>https://dusty.phillips.codes/2023/05/14/how-i-reconfigured-neovim-from-scratch/</link>
      <pubDate>Sun, 14 May 2023 11:45:15 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2023/05/14/how-i-reconfigured-neovim-from-scratch/</guid>
      <description>&lt;p&gt;Throughout my career, I&amp;rsquo;ve at least tried most of the available programming&#xA;editors. More than two decades ago, I heard about the vi-vs-emacs debate, and&#xA;made a pact with myself to use both for at least a year before deciding which I&#xA;preferred.&lt;/p&gt;&#xA;&lt;p&gt;I started with vim, switched to emacs after a year, and decided I preferred&#xA;vim. I joined the sublime-text bandwagon for a year or two in the early 2010s,&#xA;switched back to vim in the middle of the decade, and eventually did the big&#xA;switch to vscode.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Tutorial Introduction to Gleam -- Part 6</title>
      <link>https://dusty.phillips.codes/2022/07/27/a-tutorial-introduction-to-gleam--part-6/</link>
      <pubDate>Wed, 27 Jul 2022 15:47:47 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2022/07/27/a-tutorial-introduction-to-gleam--part-6/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;This is the sixth in a series of articles exploring the&#xA;&lt;a href=&#34;https://gleam.run&#34;&gt;Gleam&lt;/a&gt; programming language. In this one, I&amp;rsquo;m setting aside&#xA;my little password cracking project to look at gleam for frontend development.&lt;/p&gt;&#xA;&lt;p&gt;I love Rescript for frontend development, it&amp;rsquo;s a very practical functional&#xA;programming language, and I&amp;rsquo;ve &lt;a href=&#34;https://dusty.phillips.codes/rescript/&#34;&gt;written a lot&lt;/a&gt; on the topic. So&#xA;this article will also be a bit of a comparison of Gleam and Rescript. This&#xA;isn&amp;rsquo;t really a fair comparison as Rescript is a mature language, and Gleam&amp;rsquo;s&#xA;Javascript support is super brand new. I do not expect Gleam to supersede&#xA;Rescript as my favourite frontend language, but stranger things have happened.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Tutorial Introduction to Gleam -- Part 5</title>
      <link>https://dusty.phillips.codes/2022/07/24/a-tutorial-introduction-to-gleam--part-5/</link>
      <pubDate>Sun, 24 Jul 2022 10:47:47 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2022/07/24/a-tutorial-introduction-to-gleam--part-5/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;This is the fifth in a series of articles exploring the&#xA;&lt;a href=&#34;https://gleam.run&#34;&gt;Gleam&lt;/a&gt; programming language. In the &lt;a href=&#34;https://dusty.phillips.codes/2022/06/05/a-tutorial-introduction-to-gleam-part-4/&#34;&gt;most&#xA;recent&lt;/a&gt; article, we&#xA;started exploring how Gleam interfaces with ERLang&amp;rsquo;s powerful OTP concurrency&#xA;framework to brute force some passwords. However, it was suboptimal, partially&#xA;because I didn&amp;rsquo;t know what I was doing, and partially because I didn&amp;rsquo;t have time&#xA;to go into some of the deeper details. I also had a super valuable tip from the&#xA;Gleam discussion group that I wanted to go into.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Tutorial Introduction to Gleam -- Part 4</title>
      <link>https://dusty.phillips.codes/2022/06/05/a-tutorial-introduction-to-gleam--part-4/</link>
      <pubDate>Sun, 05 Jun 2022 11:47:47 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2022/06/05/a-tutorial-introduction-to-gleam--part-4/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;This is the fourth in a series of articles exploring the&#xA;&lt;a href=&#34;https://gleam.run&#34;&gt;Gleam&lt;/a&gt; programming language. The &lt;a href=&#34;https://dusty.phillips.codes/2022/04/17/a-tutorial-introduction-to-gleam-part-1/&#34;&gt;first&#xA;article&lt;/a&gt; explored some of&#xA;the most basic features of Gleam; just enough to say hello. The&#xA;&lt;a href=&#34;https://dusty.phillips.codes/2022/05/04/a-tutorial-introduction-to-gleam-part-2/&#34;&gt;second&lt;/a&gt; discussed looping&#xA;constructs, namely that gleam doesn&amp;rsquo;t have them.&#xA;The &lt;a href=&#34;https://dusty.phillips.codes/2022/05/23/a-tutorial-introduction-to-gleam-part-3/&#34;&gt;third&lt;/a&gt; was supposed to&#xA;be about parallel programming and OTP, but it ended up being more about looping&#xA;and recursion.&lt;/p&gt;&#xA;&lt;p&gt;So this one is about parallel programming and OTP. Every other programming text&#xA;I&amp;rsquo;ve written leaves concurrency until quite late because most programming&#xA;languages make concurrency hard to get right (My will-never-be-published book&#xA;on Rust took very serious issue with their &amp;ldquo;fearless concurrency&amp;rdquo; claims).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gleam Articles</title>
      <link>https://dusty.phillips.codes/gleam/</link>
      <pubDate>Sun, 05 Jun 2022 10:07:04 -0300</pubDate>
      <guid>https://dusty.phillips.codes/gleam/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve started a tutorial-style series on the &lt;a href=&#34;https://gleam.run/&#34;&gt;Gleam&lt;/a&gt; programming language and wanted to collect them together here.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2022/04/17/a-tutorial-introduction-to-gleam-part-1/&#34;&gt;Part 1: Hello World&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2022/05/04/a-tutorial-introduction-to-gleam-part-2/&#34;&gt;Part 2: Looping Without Loops&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2022/05/23/a-tutorial-introduction-to-gleam-part-3/&#34;&gt;Part 3: Tail Recursion&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2022/06/05/a-tutorial-introduction-to-gleam-part-4/&#34;&gt;Part 4: Parallel with OTP&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2022/07/24/a-tutorial-introduction-to-gleam-part-5/&#34;&gt;Part 5: Better Parallel Processes&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>A Tutorial Introduction to Gleam -- Part 3</title>
      <link>https://dusty.phillips.codes/2022/05/23/a-tutorial-introduction-to-gleam--part-3/</link>
      <pubDate>Mon, 23 May 2022 16:03:47 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2022/05/23/a-tutorial-introduction-to-gleam--part-3/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;This is the third in a series of articles exploring the&#xA;&lt;a href=&#34;https://gleam.run&#34;&gt;Gleam&lt;/a&gt; programming language. The &lt;a href=&#34;https://dusty.phillips.codes/2022/04/17/a-tutorial-introduction-to-gleam-part-1/&#34;&gt;first&#xA;article&lt;/a&gt; explored some of&#xA;the most basic features of Gleam; just enough to say hello. The&#xA;&lt;a href=&#34;https://dusty.phillips.codes/2022/05/04/a-tutorial-introduction-to-gleam-part-2/&#34;&gt;second&lt;/a&gt; discussed looping&#xA;constructs, namely that gleam doesn&amp;rsquo;t have them.&lt;/p&gt;&#xA;&lt;p&gt;This one was &lt;em&gt;supposed to&lt;/em&gt; investigate how Gleam integrates with Erlang&amp;rsquo;s&#xA;famous OTP library for concurrency and fault tolerance. But I got sidetracked&#xA;and ended up doing a second article on recursion and tail recursion instead.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fast, Bare, Rescript React (2022)</title>
      <link>https://dusty.phillips.codes/2022/05/07/fast-bare-rescript-react-2022/</link>
      <pubDate>Sat, 07 May 2022 12:29:47 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2022/05/07/fast-bare-rescript-react-2022/</guid>
      <description>&lt;p&gt;(&lt;a href=&#34;https://dusty.phillips.codes/2021/09/30/fast-bare-rescript-react/&#34;&gt;Original&lt;/a&gt; published September 30,&#xA;2021. Updated May 7, 2022)&lt;/p&gt;&#xA;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;Most of my Rescript series so far has been about combining Rescript with React&#xA;using create-react-app. Now that I understand Rescript better, I&amp;rsquo;m not so sure&#xA;create-react-app is a good fit for it.&lt;/p&gt;&#xA;&lt;p&gt;Mostly because it&amp;rsquo;s slow. Rescript compiles JSX natively, so we shouldn&amp;rsquo;t need&#xA;slow and hard-to-configure webpack. Most of create-react-app is about hiding&#xA;the configuration of webpack from the end-user. I appreciate that. I&amp;rsquo;ve wasted&#xA;more hours on webpack configuration than I care to count. But not having&#xA;webpack is even better than hiding it!&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Tutorial Introduction to Gleam -- Part 2</title>
      <link>https://dusty.phillips.codes/2022/05/04/a-tutorial-introduction-to-gleam--part-2/</link>
      <pubDate>Wed, 04 May 2022 10:03:47 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2022/05/04/a-tutorial-introduction-to-gleam--part-2/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;This is the second in a series of articles exploring the&#xA;&lt;a href=&#34;https://gleam.run&#34;&gt;Gleam&lt;/a&gt; programming language. The &lt;a href=&#34;https://dusty.phillips.codes/2022/04/17/a-tutorial-introduction-to-gleam-part-1/&#34;&gt;first&#xA;article&lt;/a&gt; explored some of&#xA;the most basic features of Gleam; just enough to say hello.&lt;/p&gt;&#xA;&lt;p&gt;Hello is basically the first thing we learn in any language (whether human or&#xA;programming). This article explores looping in Gleam. More specifically,&#xA;it explores the fact that Gleam doesn&amp;rsquo;t have any looping constructs.&lt;/p&gt;&#xA;&lt;p&gt;That&amp;rsquo;s right: none.&lt;/p&gt;&#xA;&lt;!-- toc --&gt;&#xA;&lt;h2 id=&#34;patreon&#34;&gt;Patreon&lt;/h2&gt;&#xA;&lt;p&gt;If you find my content valuable, please do consider sponsoring me on &lt;a href=&#34;https://www.patreon.com/dustyphillipscodes&#34;&gt;Patreon&#xA;account&lt;/a&gt;. I write about what&#xA;interests me, and I usually target tutorial style articles for intermediate to&#xA;advanced developers in a variety of languages.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Tutorial Introduction to Gleam -- Part 1</title>
      <link>https://dusty.phillips.codes/2022/04/17/a-tutorial-introduction-to-gleam--part-1/</link>
      <pubDate>Sun, 17 Apr 2022 10:23:47 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2022/04/17/a-tutorial-introduction-to-gleam--part-1/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://gleam.run/&#34;&gt;Gleam&lt;/a&gt; is a newish programming language that I recently&#xA;&lt;a href=&#34;2022/04/14/some-esoteric-languages/&#34;&gt;stumbled upon&lt;/a&gt;. It is so little-known&#xA;that there aren&amp;rsquo;t really any tutorials available on it (even on the official&#xA;documentation), so I decided to write my own.&lt;/p&gt;&#xA;&lt;p&gt;Gleam transpiles to Javascript and Erlang. I&amp;rsquo;ll be focusing my attention on the&#xA;Erlang side of things, as it is more mature. And to be honest, I don&amp;rsquo;t feel any&#xA;reason to replace Rescript, my &lt;a href=&#34;http://localhost:1313/rescript/&#34;&gt;go-to&lt;/a&gt;&#xA;transpiles-to-Javascript language.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Some Esoteric Languages</title>
      <link>https://dusty.phillips.codes/2022/04/14/some-esoteric-languages/</link>
      <pubDate>Thu, 14 Apr 2022 10:23:47 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2022/04/14/some-esoteric-languages/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;I was basically flat with an illness (yes, &lt;em&gt;that&lt;/em&gt; one) on my back for two weeks&#xA;in March. I could do little more than read articles on my tablet, and for&#xA;reasons I cannot explain, I began chainsmoking the documentation for as many&#xA;little-known languages as I could find.&lt;/p&gt;&#xA;&lt;p&gt;I honestly don&amp;rsquo;t know why. In the fog of illness, it just seemled a fun thing&#xA;to do. I&amp;rsquo;m weird.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rescript, Reason, Typescript, OCAML, Javascript, Help Me Choose!</title>
      <link>https://dusty.phillips.codes/2021/12/18/rescript-reason-typescript-ocaml-javascript-help-me-choose/</link>
      <pubDate>Sat, 18 Dec 2021 13:00:47 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2021/12/18/rescript-reason-typescript-ocaml-javascript-help-me-choose/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve been writing plenty about Rescript this year, although I&amp;rsquo;ve taken a bit of&#xA;a hiatus to focus on developing a couple (Rescript) open source libraries. I&#xA;wanted to get back into blogging to answer one of the most confusing questions&#xA;in the Rescript community: What is ReasonML and how does it relate to Rescript?&lt;/p&gt;&#xA;&lt;p&gt;However, it has grown into something quite a bit bigger. Instead, we&amp;rsquo;ll be talking&#xA;about the relationships between a collection of several interrelated languages,&#xA;and I&amp;rsquo;ll give my opinion on which you should use.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Introducing rescript-dexie</title>
      <link>https://dusty.phillips.codes/2021/10/13/introducing-rescript-dexie/</link>
      <pubDate>Wed, 13 Oct 2021 12:29:47 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2021/10/13/introducing-rescript-dexie/</guid>
      <description>&lt;p&gt;As hinted in some of my &lt;a href=&#34;https://dusty.phillips.codes/rescript&#34;&gt;recent articles&lt;/a&gt; on Rescript, I&amp;rsquo;ve been&#xA;working on bindings to the wonderful &lt;a href=&#34;https://dexie.org&#34;&gt;Dexie&lt;/a&gt; interface to&#xA;IndexedDB. It&amp;rsquo;s finally ready to announce to the world (in a fairly beta format)!&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/dusty-phillips/rescript-dexie&#34;&gt;rescript-dexie&lt;/a&gt; depends on a recent&#xA;version of Rescript and the &lt;a href=&#34;https://github.com/ryyppy/rescript-promise&#34;&gt;rescript-promise&lt;/a&gt;&#xA;library.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s still fairly beta and I haven&amp;rsquo;t covered all the features Dexie packs in&#xA;yet, but the basics are working well. It feels intuitive and gives the right&#xA;mix of sound type safety and easy call sites. Let me know what you think!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fast, Bare, Rescript React</title>
      <link>https://dusty.phillips.codes/2021/09/30/fast-bare-rescript-react/</link>
      <pubDate>Thu, 30 Sep 2021 12:29:47 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2021/09/30/fast-bare-rescript-react/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;(Note: There is &lt;a href=&#34;https://dusty.phillips.codes/2022/05/07/fast-bare-rescript-react-2022/&#34;&gt;a more recent&lt;/a&gt; version&#xA;of this article)&lt;/p&gt;&#xA;&lt;p&gt;Most of my Rescript series so far has been about combining Rescript with React&#xA;using create-react-app. Now that I understand Rescript better, I&amp;rsquo;m not so sure&#xA;create-react-app is a good fit for it.&lt;/p&gt;&#xA;&lt;p&gt;Mostly because it&amp;rsquo;s slow. Rescript compiles JSX natively, so we shouldn&amp;rsquo;t need&#xA;slow and hard-to-configure webpack. Most of create-react-app is about hiding&#xA;the configuration of webpack from the end-user. I appreciate that. I&amp;rsquo;ve wasted&#xA;more hours on webpack configuration than I care to count. But not having&#xA;webpack is even better than hiding it!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Let&#39;s Talk About Functors In Rescript</title>
      <link>https://dusty.phillips.codes/2021/09/18/lets-talk-about-functors-in-rescript/</link>
      <pubDate>Sat, 18 Sep 2021 10:59:47 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2021/09/18/lets-talk-about-functors-in-rescript/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;For basic syntax, functional programming does not feel that different from&#xA;other paradigms. Sure, data and behaviour are separate, so you don&amp;rsquo;t have&#xA;classes or objects or inheritance, but it feels relatively the same. This is&#xA;especially true in Rescript, with the pipe-first syntax almost looking like a&#xA;method lookup (comparable to the &lt;code&gt;self&lt;/code&gt; object in Python).&lt;/p&gt;&#xA;&lt;p&gt;But if you go deeply into a study of functional languages, you start&#xA;encountering bizarre words such as &amp;ldquo;monad&amp;rdquo; and &amp;ldquo;functor&amp;rdquo;. Again, this is less&#xA;true in Rescript, which emphasizes pragmatism over purity. Indeed, if you&#xA;search the rescript documentation for &amp;ldquo;monad&amp;rdquo;, it will come up blank, and if&#xA;you search for &amp;ldquo;Functor&amp;rdquo; you get a fairly short&#xA;&lt;a href=&#34;https://rescript-lang.org/docs/manual/v8.0.0/module#module-functions-functors&#34;&gt;section&lt;/a&gt;&#xA;that almost feels like an afterthought.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fun With Rescript Polymorphic Variants</title>
      <link>https://dusty.phillips.codes/2021/09/06/fun-with-rescript-polymorphic-variants/</link>
      <pubDate>Mon, 06 Sep 2021 09:29:47 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2021/09/06/fun-with-rescript-polymorphic-variants/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;Polymorphic variants in Rescript are strange beasts. They aren&amp;rsquo;t generally that useful&#xA;in pure Rescript programming, but are frequently necessary in binding to Javascript.&lt;/p&gt;&#xA;&lt;p&gt;Polymorphic variants are extremely flexible (too flexible), but one of the most&#xA;common uses is to represent a list of constant strings that a JS binding can&#xA;accept. For example, the ubiquitous &lt;code&gt;on&lt;/code&gt; function used for event handlers&#xA;typically takes a string as its first parameter, as in &lt;code&gt;on(&amp;quot;click&amp;quot;...)&lt;/code&gt;. In&#xA;Rescript, you can prevent typoing that string using Polymorphic variants:&#xA;&lt;code&gt;on(#click)&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Parsing JSON in Rescript</title>
      <link>https://dusty.phillips.codes/2021/08/14/parsing-json-in-rescript/</link>
      <pubDate>Sat, 14 Aug 2021 12:11:47 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2021/08/14/parsing-json-in-rescript/</guid>
      <description>Parsing dynamic content such as JSON in a statically typed language can be rather daunting. This article voices some opinions about schemaless design and migrates some of the messy json parsing code from the standard library to the excellent jzon library.</description>
    </item>
    <item>
      <title>&#34;Correctly&#34; Unit Testing Express With Rescript And Zora</title>
      <link>https://dusty.phillips.codes/2021/08/07/correctly-unit-testing-express-with-rescript-and-zora/</link>
      <pubDate>Sat, 07 Aug 2021 09:29:47 -0400</pubDate>
      <guid>https://dusty.phillips.codes/2021/08/07/correctly-unit-testing-express-with-rescript-and-zora/</guid>
      <description>In a recent article I introduced rescript-zora, a library I wrote for unit testing Rescript code with lightning fast responses. One drawback of zora is that it&amp;rsquo;s very minimal. In this article, I explore some design principles and go on a bit of a rant about the definition of the word &amp;ldquo;unit&amp;rdquo;.</description>
    </item>
    <item>
      <title>Quickly Testing Rescript With Zora</title>
      <link>https://dusty.phillips.codes/2021/08/02/quickly-testing-rescript-with-zora/</link>
      <pubDate>Mon, 02 Aug 2021 13:29:47 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2021/08/02/quickly-testing-rescript-with-zora/</guid>
      <description>I wrote Rescript bindings to the zora test framework and wanted to write about how to actually use them.</description>
    </item>
    <item>
      <title>Syncing RxDB changes to GraphQL Mutations in Rescript</title>
      <link>https://dusty.phillips.codes/2021/06/27/syncing-rxdb-changes-to-graphql-mutations-in-rescript/</link>
      <pubDate>Sun, 27 Jun 2021 12:12:47 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2021/06/27/syncing-rxdb-changes-to-graphql-mutations-in-rescript/</guid>
      <description>Continuing my explorations of RxDB and Rescript, this article hooks up mutations to allow RxDB to automatically sync its offline-enabled changes to the graphql server.</description>
    </item>
    <item>
      <title>Syncing RxDB changes from a graphql server in Rescript</title>
      <link>https://dusty.phillips.codes/2021/06/06/syncing-rxdb-changes-from-a-graphql-server-in-rescript/</link>
      <pubDate>Sun, 06 Jun 2021 08:28:47 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2021/06/06/syncing-rxdb-changes-from-a-graphql-server-in-rescript/</guid>
      <description>I&amp;rsquo;ve become quite comfortable in Rescript over the course of the past few months. So far in this long-running series, I&amp;rsquo;ve implemented an RxDB powered offline-enabled application in Rescript. I&amp;rsquo;ve also written a graphql server using express. In this article, we&amp;rsquo;ll connect the two so that the RxDB frontend can sync with the graphql database.</description>
    </item>
    <item>
      <title>Graphql Endpoints to sync with RxDB in Rescript (Part 2)</title>
      <link>https://dusty.phillips.codes/2021/05/23/graphql-endpoints-to-sync-with-rxdb-in-rescript-part-2/</link>
      <pubDate>Sun, 23 May 2021 14:24:47 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2021/05/23/graphql-endpoints-to-sync-with-rxdb-in-rescript-part-2/</guid>
      <description>In the previous article we implemented the sync read endpoints between our graphql server and our RXDB client. In this one, we&amp;rsquo;ll hook up the mutations.</description>
    </item>
    <item>
      <title>Graphql Endpoints to sync with RxDB in Rescript (Part 1)</title>
      <link>https://dusty.phillips.codes/2021/05/15/graphql-endpoints-to-sync-with-rxdb-in-rescript-part-1/</link>
      <pubDate>Sat, 15 May 2021 13:25:47 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2021/05/15/graphql-endpoints-to-sync-with-rxdb-in-rescript-part-1/</guid>
      <description>Now that our Rescript client and server have the same data model, we can hook up the graphql endpoints to sync the offline rxdb database with the graphql server.</description>
    </item>
    <item>
      <title>Announcing: Python Object-oriented Programming, 4th Edition</title>
      <link>https://dusty.phillips.codes/2021/05/12/announcing-python-object-oriented-programming-4th-edition/</link>
      <pubDate>Wed, 12 May 2021 17:40:25 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2021/05/12/announcing-python-object-oriented-programming-4th-edition/</guid>
      <description>My publisher recently unveiled the fourth edition of &lt;a href=&#34;https://amzn.to/3eO8Rmf&#34;&gt; Python Object-oriented Programming&lt;/a&gt;. This one has a new twist: I didn&amp;rsquo;t write it!</description>
    </item>
    <item>
      <title>Quickly refactoring with Rescript</title>
      <link>https://dusty.phillips.codes/2021/05/08/quickly-refactoring-with-rescript/</link>
      <pubDate>Sat, 08 May 2021 09:29:47 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2021/05/08/quickly-refactoring-with-rescript/</guid>
      <description>Continuing my ongoing series on the Rescript programming language, I discovered I needed to refactor my backend to better suit the graphql queries the frontend has to make to it.</description>
    </item>
    <item>
      <title>A GraphQL Server in Rescript</title>
      <link>https://dusty.phillips.codes/2021/05/02/a-graphql-server-in-rescript/</link>
      <pubDate>Sun, 02 May 2021 16:29:47 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2021/05/02/a-graphql-server-in-rescript/</guid>
      <description>Rescript is a delightful programming language pulling in the best elements of Javascript and functional languages without the worst bits of either. In this article, we create a graphql server in Rescript.</description>
    </item>
    <item>
      <title>Introducing rescript-zora</title>
      <link>https://dusty.phillips.codes/2021/04/18/introducing-rescript-zora/</link>
      <pubDate>Sun, 18 Apr 2021 16:33:35 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2021/04/18/introducing-rescript-zora/</guid>
      <description>&lt;p&gt;Instead of writing a new article on Rescript this weekend, I ended up writing&#xA;an entire project &lt;em&gt;in&lt;/em&gt; Rescript!&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/dusty-phillips/rescript-zora&#34;&gt;rescript-zora&lt;/a&gt; provides&#xA;Rescript bindings to the lightning-fast&#xA;&lt;a href=&#34;https://github.com/lorenzofox3/zora&#34;&gt;zora&lt;/a&gt; unit testing framework.  I chose&#xA;zora because it has excellent SEO for &amp;ldquo;fastest javascript test framework&amp;rdquo;, and&#xA;it deserves it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Accessing RxDB from React Components in Rescript</title>
      <link>https://dusty.phillips.codes/2021/04/17/accessing-rxdb-from-react-components-in-rescript/</link>
      <pubDate>Sat, 17 Apr 2021 09:29:47 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2021/04/17/accessing-rxdb-from-react-components-in-rescript/</guid>
      <description>Now that our RxDB models are complete, we can hook it up to a react app for a complete offline experience.</description>
    </item>
    <item>
      <title>Modeling RxDB in Rescript, Part 3</title>
      <link>https://dusty.phillips.codes/2021/04/09/modeling-rxdb-in-rescript-part-3/</link>
      <pubDate>Fri, 09 Apr 2021 08:38:38 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2021/04/09/modeling-rxdb-in-rescript-part-3/</guid>
      <description>Extending the JS bindings I&amp;rsquo;ve modelled in previous articles, in this add bindings for subscribing to queries, and hook those up to Application state.</description>
    </item>
    <item>
      <title>Modeling RxDB in Rescript, Part 2</title>
      <link>https://dusty.phillips.codes/2021/04/02/modeling-rxdb-in-rescript-part-2/</link>
      <pubDate>Fri, 02 Apr 2021 09:29:47 -0400</pubDate>
      <guid>https://dusty.phillips.codes/2021/04/02/modeling-rxdb-in-rescript-part-2/</guid>
      <description>In an earlier article, I started modelling RxDB calls from rescript with the intent of building an offline-enabled Rescript app. This article continues from that base, modelling collections and queries.</description>
    </item>
    <item>
      <title>Modeling RxDB in Rescript, Part 1</title>
      <link>https://dusty.phillips.codes/2021/03/24/modeling-rxdb-in-rescript-part-1/</link>
      <pubDate>Wed, 24 Mar 2021 09:00:31 -0400</pubDate>
      <guid>https://dusty.phillips.codes/2021/03/24/modeling-rxdb-in-rescript-part-1/</guid>
      <description>I wanted to explore progressive web apps, and I took the opportunity to learn about binding Rescript to existing Javascript libraries.</description>
    </item>
    <item>
      <title>Using Rescript with NodeJs and Express</title>
      <link>https://dusty.phillips.codes/2021/03/16/using-rescript-with-nodejs-and-express/</link>
      <pubDate>Tue, 16 Mar 2021 16:07:27 -0400</pubDate>
      <guid>https://dusty.phillips.codes/2021/03/16/using-rescript-with-nodejs-and-express/</guid>
      <description>As part of my ongoing experiments with &lt;a href=&#34;https://rescript-lang.org/&#34;&gt;Rescript&lt;/a&gt;, I decided to implement a Node app with express.</description>
    </item>
    <item>
      <title>Styling in Rescript with Emotion</title>
      <link>https://dusty.phillips.codes/2021/03/09/styling-in-rescript-with-emotion/</link>
      <pubDate>Tue, 09 Mar 2021 09:50:32 -0400</pubDate>
      <guid>https://dusty.phillips.codes/2021/03/09/styling-in-rescript-with-emotion/</guid>
      <description>In this article, we complete the Recipes single page app we&amp;rsquo;ve been developing in Rescript by styling it with Emotion, a popular framework for styling in React systems.</description>
    </item>
    <item>
      <title>Firing Actions From Rescript React Components</title>
      <link>https://dusty.phillips.codes/2021/03/02/firing-actions-from-rescript-react-components/</link>
      <pubDate>Tue, 02 Mar 2021 09:28:37 -0400</pubDate>
      <guid>https://dusty.phillips.codes/2021/03/02/firing-actions-from-rescript-react-components/</guid>
      <description>Continuing my series on Rescript, this article covers React forms with managed state and dispatching useReducer actions when our state changes.</description>
    </item>
    <item>
      <title>A Couple React Components in Rescript</title>
      <link>https://dusty.phillips.codes/2021/02/22/a-couple-react-components-in-rescript/</link>
      <pubDate>Mon, 22 Feb 2021 10:37:58 -0400</pubDate>
      <guid>https://dusty.phillips.codes/2021/02/22/a-couple-react-components-in-rescript/</guid>
      <description>Continuing my series on Rescript, I add a couple React components to the ongoing app I&amp;rsquo;ve been developing.</description>
    </item>
    <item>
      <title>Dev Setup 2021</title>
      <link>https://dusty.phillips.codes/2021/02/16/dev-setup-2021/</link>
      <pubDate>Tue, 16 Feb 2021 08:28:09 -0400</pubDate>
      <guid>https://dusty.phillips.codes/2021/02/16/dev-setup-2021/</guid>
      <description>&lt;p&gt;When I first encountered the Internet my peers and I thought it was great fun&#xA;to share our dev setups. We were always optimizing and always looking for new&#xA;ways to optimize. Not to mention showing off.&lt;/p&gt;&#xA;&lt;p&gt;I lost interest in this practice because I settled into a system that was&#xA;sufficient for my needs. Also, I didn&amp;rsquo;t have time!&lt;/p&gt;&#xA;&lt;p&gt;But I&amp;rsquo;ve recently made a ton of changes to my workflow that some might be&#xA;interested in, and I happen to have some time as I&amp;rsquo;m between jobs. So I thought&#xA;it might be a good time to share!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Actions and Reducers in Rescript</title>
      <link>https://dusty.phillips.codes/2021/02/09/actions-and-reducers-in-rescript/</link>
      <pubDate>Tue, 09 Feb 2021 09:22:31 -0400</pubDate>
      <guid>https://dusty.phillips.codes/2021/02/09/actions-and-reducers-in-rescript/</guid>
      <description>As a functional language, Rescript maps beautifully to redux-style state management, without all the boilerplate</description>
    </item>
    <item>
      <title>Rescript With React: Routing and Navigation</title>
      <link>https://dusty.phillips.codes/2021/02/03/rescript-with-react-routing-and-navigation/</link>
      <pubDate>Wed, 03 Feb 2021 07:56:02 -0400</pubDate>
      <guid>https://dusty.phillips.codes/2021/02/03/rescript-with-react-routing-and-navigation/</guid>
      <description>Continuing my journey to learn Rescript using a real-world react-app. In this article, we create some new components.</description>
    </item>
    <item>
      <title>Setting Up A Rescript Create-React-App From Scratch</title>
      <link>https://dusty.phillips.codes/2021/01/28/setting-up-a-rescript-create-react-app-from-scratch/</link>
      <pubDate>Thu, 28 Jan 2021 07:18:40 -0400</pubDate>
      <guid>https://dusty.phillips.codes/2021/01/28/setting-up-a-rescript-create-react-app-from-scratch/</guid>
      <description>I recently discovered the &lt;a href=&#34;https://rescript-lang.org/&#34;&gt;Rescript&lt;/a&gt; programming language and am really excited about it. I haven&amp;rsquo;t found many tutorials on the subject, so I&amp;rsquo;m documenting my steps as I go.</description>
    </item>
    <item>
      <title>Ten Years</title>
      <link>https://dusty.phillips.codes/2020/12/21/ten-years/</link>
      <pubDate>Mon, 21 Dec 2020 09:51:47 -0400</pubDate>
      <guid>https://dusty.phillips.codes/2020/12/21/ten-years/</guid>
      <description>&lt;p&gt;2020 has been one of my best years ever.&lt;/p&gt;&#xA;&lt;p&gt;I know, right?&lt;/p&gt;&#xA;&lt;p&gt;Ten years ago, I spent the Christmas season at &amp;ldquo;5 North&amp;rdquo;; Medicine Hat&amp;rsquo;s psychiatric ward. The stay started with placing my signature on a piece of paper asserting that I would not try to kill myself for 24 hours.&lt;/p&gt;&#xA;&lt;p&gt;They asked for three days. I couldn&amp;rsquo;t promise that much time.&lt;/p&gt;&#xA;&lt;p&gt;As near as I can figure, I had been suicidal since I was eight years old. There were two primary reasons that it took two decades to seek and receive treatment.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Perfectionist&#39;s Guide To Doing It Wrong</title>
      <link>https://dusty.phillips.codes/2020/12/06/the-perfectionists-guide-to-doing-it-wrong/</link>
      <pubDate>Sun, 06 Dec 2020 04:01:09 -0400</pubDate>
      <guid>https://dusty.phillips.codes/2020/12/06/the-perfectionists-guide-to-doing-it-wrong/</guid>
      <description>A friend suffering from perfectionism has caused difficult interference in their life. I developed a technique that might be useful to others who have to deal with the negative aspects of perfectionism.</description>
    </item>
    <item>
      <title>Bullet Blog?</title>
      <link>https://dusty.phillips.codes/2020/11/26/bullet-blog/</link>
      <pubDate>Thu, 26 Nov 2020 04:19:11 -0400</pubDate>
      <guid>https://dusty.phillips.codes/2020/11/26/bullet-blog/</guid>
      <description>I am trying a new blogging format hoping that I can post interesting content more often. Looking for feedback on the format.</description>
    </item>
    <item>
      <title>On Voice Coding</title>
      <link>https://dusty.phillips.codes/2020/02/15/on-voice-coding/</link>
      <pubDate>Sat, 15 Feb 2020 04:52:00 -0400</pubDate>
      <guid>https://dusty.phillips.codes/2020/02/15/on-voice-coding/</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;sub&gt;(contains amazon affiliate links)&lt;/sub&gt;&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;I have had repetitive stress injury (RSI) flareups on and off for many years. I’ve kept them under control mostly through use of a &lt;a href=&#34;https://amzn.to/3fDQTl4&#34;&gt;Kinesis Advantage&lt;/a&gt; ergonomic keyboard that I’ve had for fifteen years. However, several months ago, I was diagnosed with carpal tunnel syndrome and instructed to avoid typing if at all possible.&lt;/p&gt;&#xA;&lt;p&gt;I make my living programming and writing. My hobbies are programming and writing.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What happens if a short-seller goes bankrupt?</title>
      <link>https://dusty.phillips.codes/2019/08/11/what-happens-if-a-short-seller-goes-bankrupt/</link>
      <pubDate>Sun, 11 Aug 2019 11:33:44 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2019/08/11/what-happens-if-a-short-seller-goes-bankrupt/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been wondering what to do with this blog for a while. I haven&amp;rsquo;t had time to do the technical deep dives I used to do. But I&amp;rsquo;ve also been reluctant to pivot into different kinds of articles. I&amp;rsquo;ll write more about that in the future (the summary is that I&amp;rsquo;ve been writing fiction instead of code in my free time). For now, however, I&amp;rsquo;ve decided to publish a non-technical shallow dive on something I do not understand very well: stock markets and economics.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Goals Vs Happiness</title>
      <link>https://dusty.phillips.codes/2018/12/16/goals-vs-happiness/</link>
      <pubDate>Sun, 16 Dec 2018 13:30:57 -0400</pubDate>
      <guid>https://dusty.phillips.codes/2018/12/16/goals-vs-happiness/</guid>
      <description>&lt;p&gt;I am not a productivity coach. I don&amp;rsquo;t even like the concept of a productivity coach. I&amp;rsquo;m also not a mental health coach, although I am successfully managing mental illness, and I assure anyone dealing with depression, mania, or anxiety right now,  that you matter. Things can and will get better.&lt;/p&gt;&#xA;&lt;p&gt;I haven&amp;rsquo;t written much about &lt;a href=&#34;https://dusty.phillips.codes/topics/mental-health/&#34;&gt;mental health&lt;/a&gt; since I &lt;a href=&#34;https://dusty.phillips.codes/2018/07/25/im-back/&#34;&gt;rebooted&lt;/a&gt; my blog. Today, I want to talk about how goals affect our state of mind.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Differences Between Writing Fiction and Nonfiction</title>
      <link>https://dusty.phillips.codes/2018/12/10/differences-between-writing-fiction-and-nonfiction/</link>
      <pubDate>Mon, 10 Dec 2018 19:00:54 -0400</pubDate>
      <guid>https://dusty.phillips.codes/2018/12/10/differences-between-writing-fiction-and-nonfiction/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m about halfway into writing my first novel. Though I have plenty of writing &lt;a href=&#34;https://dusty.phillips.codes/books/&#34;&gt;experience&lt;/a&gt;, this is my first real attempt at fiction. I&amp;rsquo;ve been surprised at the difficulty! Some of my skills transfer over; I still know the basic structure of the English language and I put commas in the right places more often than not, for example. But many other things are much different.&lt;/p&gt;&#xA;&lt;p&gt;The hardest change I&amp;rsquo;ve had to make is the order I present information. In a nonfiction book, I try to present everything in a logical order with as much clarity as possible. Each step should lead to the next step in a way that is comfortable and non-intimidating to the reader.&lt;/p&gt;</description>
    </item>
    <item>
      <title>An Order to Learn to Program, Part 6</title>
      <link>https://dusty.phillips.codes/2018/11/17/an-order-to-learn-to-program-part-6/</link>
      <pubDate>Sat, 17 Nov 2018 14:53:29 -0400</pubDate>
      <guid>https://dusty.phillips.codes/2018/11/17/an-order-to-learn-to-program-part-6/</guid>
      <description>&lt;h2 id=&#34;parts-in-this-series&#34;&gt;Parts in this series&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/07/31/an-order-to-learn-to-program-part-1/&#34;&gt;An Order to Learn to Program, Part 1&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/08/10/an-order-to-learn-to-program-part-2/&#34;&gt;An Order to Learn to Program, Part 2&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/08/22/an-order-to-learn-to-program-part-3/&#34;&gt;An Order to Learn to Program, Part 3&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/09/06/an-order-to-learn-to-program-part-4/&#34;&gt;An Order to Learn to Program, Part 4&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/09/19/an-order-to-learn-to-program-part-5/&#34;&gt;An Order to Learn to Program, Part 5&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/11/17/an-order-to-learn-to-program-part-6/&#34;&gt;An Order to Learn to Program, Part 6&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;part-6-local-development&#34;&gt;Part 6: Local Development&lt;/h2&gt;&#xA;&lt;p&gt;This is part 6 in my series on the order to study topics related to programming. This series aims to provide a gentle path to follow as you explore this fascinating field. The goal is not so much to get you a job in the field, but to help you to take on a new hobby.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Announcing: Python 3 Object-oriented Programming, 3rd Edition</title>
      <link>https://dusty.phillips.codes/2018/10/30/announcing-python-3-object-oriented-programming-3rd-edition/</link>
      <pubDate>Tue, 30 Oct 2018 18:46:32 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2018/10/30/announcing-python-3-object-oriented-programming-3rd-edition/</guid>
      <description>&lt;a href=&#34;https://www.packtpub.com/application-development/python-3-object-oriented-programming-third-edition&#34;&gt;&#xA;Python 3 Object-oriented Programming 3rd Edition&lt;br /&gt;&lt;br /&gt;&#xA;&lt;img src=&#34;https://dusty.phillips.codes/images/book_covers/py3oop3.png&#34; /&gt;&#xA;&lt;/a&gt;&#xA;&lt;p&gt;My publisher unveiled the third edition of &lt;a href=&#34;https://www.packtpub.com/application-development/python-3-object-oriented-programming-third-edition&#34;&gt;&#xA;Python 3 Object-oriented Programming&lt;/a&gt; today! This has been the culmination of several months of work.&lt;/p&gt;&#xA;&lt;p&gt;Editing and updating the second edition was a pleasure. It was gratifying to discover that the content has aged well. This was not the case with the first edition; I did extensive restructuring and rewriting before I was satisfied with the second.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Should languages be designed with editor support in mind?</title>
      <link>https://dusty.phillips.codes/2018/10/12/should-languages-be-designed-with-editor-support-in-mind/</link>
      <pubDate>Fri, 12 Oct 2018 11:36:08 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2018/10/12/should-languages-be-designed-with-editor-support-in-mind/</guid>
      <description>&lt;p&gt;One of many things I love about Python is how whitespace is an integral part of the language. Python was the first popular programming language  designed with the idea that &amp;ldquo;code is read much more often than it is written.&amp;rdquo; Forcing authors to indent code in a maintainable fashion seemed a brilliant idea when I first encountered Python fifteen years ago. The lack of braces scattered throughout the code made for easier reading. Somewhat ironically, it also makes the language easier to write: Typing the brace character requires a certain amount of finger gymnastics.&lt;/p&gt;</description>
    </item>
    <item>
      <title>An Order to Learn to Program, Part 5</title>
      <link>https://dusty.phillips.codes/2018/09/19/an-order-to-learn-to-program-part-5/</link>
      <pubDate>Wed, 19 Sep 2018 11:38:28 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2018/09/19/an-order-to-learn-to-program-part-5/</guid>
      <description>&lt;h2 id=&#34;parts-in-this-series&#34;&gt;Parts in this series&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/07/31/an-order-to-learn-to-program-part-1/&#34;&gt;An Order to Learn to Program, Part 1&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/08/10/an-order-to-learn-to-program-part-2/&#34;&gt;An Order to Learn to Program, Part 2&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/08/22/an-order-to-learn-to-program-part-3/&#34;&gt;An Order to Learn to Program, Part 3&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/09/06/an-order-to-learn-to-program-part-4/&#34;&gt;An Order to Learn to Program, Part 4&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/09/19/an-order-to-learn-to-program-part-5/&#34;&gt;An Order to Learn to Program, Part 5&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/11/17/an-order-to-learn-to-program-part-6/&#34;&gt;An Order to Learn to Program, Part 6&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;part-5-beginner-programming-dynamically-typed&#34;&gt;Part 5: Beginner programming, dynamically typed&lt;/h2&gt;&#xA;&lt;p&gt;This is part 5 in my series on the order to study topics related to programming. This series aims to provide a gentle path to follow as you explore this fascinating field.&lt;/p&gt;</description>
    </item>
    <item>
      <title>An Intermediate Guide To RSA</title>
      <link>https://dusty.phillips.codes/2018/09/13/an-intermediate-guide-to-rsa/</link>
      <pubDate>Thu, 13 Sep 2018 12:18:27 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2018/09/13/an-intermediate-guide-to-rsa/</guid>
      <description>&lt;p&gt;The venerable RSA public key encryption algorithm is very elegant. It requires a basic understanding of modular arithmetic, which may sound scary if you haven&amp;rsquo;t studied it. It reduces to taking the remainder after integer long division. The RSA &lt;a href=&#34;https://en.wikipedia.org/wiki/RSA_(cryptosystem)&#34;&gt;Wikipedia article&lt;/a&gt; describes five simple steps to generate the keys. Encryption and decryption are a matter of basic exponentiation. There&amp;rsquo;s no advanced math, and it&amp;rsquo;s easy to understand their example of working with small numbers.&lt;/p&gt;</description>
    </item>
    <item>
      <title>An Order to Learn to Program, Part 4</title>
      <link>https://dusty.phillips.codes/2018/09/06/an-order-to-learn-to-program-part-4/</link>
      <pubDate>Thu, 06 Sep 2018 15:38:28 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2018/09/06/an-order-to-learn-to-program-part-4/</guid>
      <description>&lt;h2 id=&#34;parts-in-this-series&#34;&gt;Parts in this series&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/07/31/an-order-to-learn-to-program-part-1/&#34;&gt;An Order to Learn to Program, Part 1&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/08/10/an-order-to-learn-to-program-part-2/&#34;&gt;An Order to Learn to Program, Part 2&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/08/22/an-order-to-learn-to-program-part-3/&#34;&gt;An Order to Learn to Program, Part 3&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/09/06/an-order-to-learn-to-program-part-4/&#34;&gt;An Order to Learn to Program, Part 4&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/09/19/an-order-to-learn-to-program-part-5/&#34;&gt;An Order to Learn to Program, Part 5&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/11/17/an-order-to-learn-to-program-part-6/&#34;&gt;An Order to Learn to Program, Part 6&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;part-4-binary-bits-and-bytes&#34;&gt;Part 4: Binary, bits, and bytes&lt;/h2&gt;&#xA;&lt;p&gt;This is part 4 of my series on the order to study topics related to programming. This series aims to give people a gentle path to follow in order to be able to dabble in this field. It is oriented toward people who are easily frustrated and therefore give up quickly.&lt;/p&gt;</description>
    </item>
    <item>
      <title>React Redux Firebase With Firestore Tutorial</title>
      <link>https://dusty.phillips.codes/2018/08/25/react-redux-firebase-with-firestore-tutorial/</link>
      <pubDate>Sat, 25 Aug 2018 13:18:27 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2018/08/25/react-redux-firebase-with-firestore-tutorial/</guid>
      <description>&lt;p&gt;Whenever I start a new hobby web project, I just want to jump in and start coding.&lt;/p&gt;&#xA;&lt;p&gt;Instead, I spend many many hours trying to get authentication to work. I&amp;rsquo;ve got half a dozen half-finished &amp;ldquo;boilerplate&amp;rdquo; projects lying around that were supposed to satisfy the desire of, &amp;ldquo;next time, I can use this boilerplate and authentication will just work.&amp;rdquo; It never does.&lt;/p&gt;&#xA;&lt;p&gt;One thing I know I don&amp;rsquo;t want to do is manage my own auth database anymore. It&amp;rsquo;s too risky, and keeping a Django (for example) instance patched and up-to-date is more devops overhead than I&amp;rsquo;m interested in.&lt;/p&gt;</description>
    </item>
    <item>
      <title>An Order to Learn to Program, Part 3</title>
      <link>https://dusty.phillips.codes/2018/08/22/an-order-to-learn-to-program-part-3/</link>
      <pubDate>Wed, 22 Aug 2018 19:25:20 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2018/08/22/an-order-to-learn-to-program-part-3/</guid>
      <description>&lt;h2 id=&#34;parts-in-this-series&#34;&gt;Parts in this series&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/07/31/an-order-to-learn-to-program-part-1/&#34;&gt;An Order to Learn to Program, Part 1&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/08/10/an-order-to-learn-to-program-part-2/&#34;&gt;An Order to Learn to Program, Part 2&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/08/22/an-order-to-learn-to-program-part-3/&#34;&gt;An Order to Learn to Program, Part 3&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/09/06/an-order-to-learn-to-program-part-4/&#34;&gt;An Order to Learn to Program, Part 4&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/09/19/an-order-to-learn-to-program-part-5/&#34;&gt;An Order to Learn to Program, Part 5&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/11/17/an-order-to-learn-to-program-part-6/&#34;&gt;An Order to Learn to Program, Part 6&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;part-3-sql-basics&#34;&gt;Part 3: SQL Basics&lt;/h2&gt;&#xA;&lt;p&gt;It&amp;rsquo;s not common to see SQL as the next language taught after HTML. Most authors would jump to a full-fledged structured programming language like Python or Javascript instead. There are a few reasons that I think SQL is a better next choice. While it&amp;rsquo;s a lot more complicated tool than the formatting languages you&amp;rsquo;ve been working with, SQL is designed for a specific purpose and is therefore not as overwhelming as a general purpose programming language. It also uses an English-like language that might be more familiar than those other languages. In fact, it was originally designed for use by non-programming business people, although it never achieved that goal.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Computer Vision in Three Lines of Code plus a bunch more lines</title>
      <link>https://dusty.phillips.codes/2018/08/15/computer-vision-in-three-lines-of-code-plus-a-bunch-more-lines/</link>
      <pubDate>Wed, 15 Aug 2018 15:37:18 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2018/08/15/computer-vision-in-three-lines-of-code-plus-a-bunch-more-lines/</guid>
      <description>&lt;p&gt;My wife and I both have a tendency to leave the garage door open. You&amp;rsquo;re in and out, grabbing garden tools or supplies, and at the end of the day you enter the house through the back door and forget to check the garage. Luckily, we live in rural Canada, surrounded by wonderful people, where the door could sit open for days without anything &amp;ldquo;disappearing&amp;rdquo;. But it still makes me feel nervous to discover it&amp;rsquo;s been forgotten, if only because it is a waste of heat in the winter (not to mention the chance of blowing full of snow!). I tried a couple ways to solve the problem:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python: Loading pathlib Paths with argparse</title>
      <link>https://dusty.phillips.codes/2018/08/13/python-loading-pathlib-paths-with-argparse/</link>
      <pubDate>Mon, 13 Aug 2018 11:15:16 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2018/08/13/python-loading-pathlib-paths-with-argparse/</guid>
      <description>&lt;p&gt;I really appreciate Python&amp;rsquo;s &lt;a href=&#34;https://docs.python.org/3/library/pathlib.html#module-pathlib&#34;&gt;pathlib&lt;/a&gt; module for managing filesystem stuff. While I don&amp;rsquo;t love the &lt;a href=&#34;https://docs.python.org/3/library/argparse.html&#34;&gt;argparse&lt;/a&gt; module for command line parsing, I don&amp;rsquo;t think it&amp;rsquo;s worse than other available options. I usually choose it for my CLI scripts, since nothing else is good enough to overcome the inertia of using a third party library.&lt;/p&gt;&#xA;&lt;p&gt;Not many people seem to be aware that the two can very easily be combined such that &lt;code&gt;argparse&lt;/code&gt; will return &lt;code&gt;Path&lt;/code&gt; objects instead of strings that need to be adapted after you query them:&lt;/p&gt;</description>
    </item>
    <item>
      <title>An Order to Learn to Program, Part 2</title>
      <link>https://dusty.phillips.codes/2018/08/10/an-order-to-learn-to-program-part-2/</link>
      <pubDate>Fri, 10 Aug 2018 13:03:01 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2018/08/10/an-order-to-learn-to-program-part-2/</guid>
      <description>&lt;h2 id=&#34;parts-in-this-series&#34;&gt;Parts in this series&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/07/31/an-order-to-learn-to-program-part-1/&#34;&gt;An Order to Learn to Program, Part 1&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/08/10/an-order-to-learn-to-program-part-2/&#34;&gt;An Order to Learn to Program, Part 2&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/08/22/an-order-to-learn-to-program-part-3/&#34;&gt;An Order to Learn to Program, Part 3&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/09/06/an-order-to-learn-to-program-part-4/&#34;&gt;An Order to Learn to Program, Part 4&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/09/19/an-order-to-learn-to-program-part-5/&#34;&gt;An Order to Learn to Program, Part 5&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/11/17/an-order-to-learn-to-program-part-6/&#34;&gt;An Order to Learn to Program, Part 6&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;part-2-html&#34;&gt;Part 2: HTML&lt;/h2&gt;&#xA;&lt;p&gt;This is the second in a series on the order to study topics related to programming. There are countless resources out there for learning to code, so many that it becomes overwhelming to decide where to start. The goal of this series is to help you get introduced to the topic as gently as possible. I&amp;rsquo;m not writing the instructional content on each topic, but giving pointers to the resources you need to accomplish each section.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Refund for Contribution?</title>
      <link>https://dusty.phillips.codes/2018/08/05/refund-for-contribution/</link>
      <pubDate>Sun, 05 Aug 2018 11:31:56 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2018/08/05/refund-for-contribution/</guid>
      <description>&lt;p&gt;I accidentally started working on a new personal project for budgeting that I think others might be interested in. I haven&amp;rsquo;t open sourced any projects in quite a few years now, but if I actually finish an iteration of this project, I think I&amp;rsquo;ll probably share it under an open licence.&lt;/p&gt;&#xA;&lt;p&gt;While I&amp;rsquo;ll be running the service locally, it is implemented entirely in Javascript React, and could easily be deployed as a SAAS. I was considering sharing it as a hosted service and charging a small fee for it, a little to cover the hosting costs and a little extra for my time. I&amp;rsquo;m not interested in growing or maintaining a startup, but it would be worthwhile if I could get a couple hundred users each spending a couple bucks a month to support a project they find useful.&lt;/p&gt;</description>
    </item>
    <item>
      <title>An Order to Learn to Program, Part 1</title>
      <link>https://dusty.phillips.codes/2018/07/31/an-order-to-learn-to-program-part-1/</link>
      <pubDate>Tue, 31 Jul 2018 15:14:03 -0300</pubDate>
      <guid>https://dusty.phillips.codes/2018/07/31/an-order-to-learn-to-program-part-1/</guid>
      <description>&lt;h2 id=&#34;parts-in-this-series&#34;&gt;Parts in this series&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/07/31/an-order-to-learn-to-program-part-1/&#34;&gt;An Order to Learn to Program, Part 1&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/08/10/an-order-to-learn-to-program-part-2/&#34;&gt;An Order to Learn to Program, Part 2&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/08/22/an-order-to-learn-to-program-part-3/&#34;&gt;An Order to Learn to Program, Part 3&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/09/06/an-order-to-learn-to-program-part-4/&#34;&gt;An Order to Learn to Program, Part 4&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/09/19/an-order-to-learn-to-program-part-5/&#34;&gt;An Order to Learn to Program, Part 5&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2018/11/17/an-order-to-learn-to-program-part-6/&#34;&gt;An Order to Learn to Program, Part 6&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;part-1&#34;&gt;Part 1&lt;/h2&gt;&#xA;&lt;p&gt;Learning to program is hard. There are a few reasons this is the case:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Programming itself is hard. However, this is less true than most people believe. Programming professionally is pretty difficult. But doing basic cool stuff that makes you feel accomplished is quite easy.&lt;/li&gt;&#xA;&lt;li&gt;There are many &amp;ldquo;specializations&amp;rdquo; in programming. A beginner programmer isn&amp;rsquo;t going to know what all those are, let alone which one they are interested in. You shouldn&amp;rsquo;t have to choose the first programming language you want to learn before you know what programming languages are. You shouldn&amp;rsquo;t have to decide between mobile apps, games, data science, artificial intelligence and various types of web development before you understand the basic programming structures.&lt;/li&gt;&#xA;&lt;li&gt;Setting up all the programs and tools (coders call this the &amp;lsquo;development environment&amp;rsquo;) needed to write software is hard.&lt;/li&gt;&#xA;&lt;li&gt;Everything you need to know seems to depend on knowing all the other things that you need to know. It becomes really tricky to decide what to learn first.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This post is the first in a series intended to address all these points, especially the last two. I want to present easy-to-digest steps that anyone who can use a web browser should be able to follow to learn the basics of coding. The end goal might be to just give you a stab at a new hobby. Or maybe you&amp;rsquo;ll love it and end up with a new career in a lucrative field. Either way, I hope those programmer friends who have been urging you to try programming have recommended this post to you.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hacking Happier</title>
      <link>https://dusty.phillips.codes/2018/07/26/hacking-happier/</link>
      <pubDate>Thu, 26 Jul 2018 00:00:00 +0000</pubDate>
      <guid>https://dusty.phillips.codes/2018/07/26/hacking-happier/</guid>
      <description>&lt;p&gt;Back in 2012, I wrote a book called &lt;em&gt;Hacking Happy&lt;/em&gt;. It was my first self-published work, and I was actually surprised by how well it did without a publisher or marketing behind it. I had plenty of positive feedback including more than one hopefully exaggerated, &amp;ldquo;This book saved my life.&amp;rdquo; Most of the feedback was a bit more sedate, but I received a lot of private messages thanking me for writing it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I&#39;m Back</title>
      <link>https://dusty.phillips.codes/2018/07/25/im-back/</link>
      <pubDate>Wed, 25 Jul 2018 00:00:00 +0000</pubDate>
      <guid>https://dusty.phillips.codes/2018/07/25/im-back/</guid>
      <description>&lt;p&gt;Hi there, I&amp;rsquo;m Dusty. Welcome to my resurrected blog.&lt;/p&gt;&#xA;&lt;p&gt;I started a tech blog in 2007 that I maintained with regular posts for several years. While it was well-regarded at the time, I took it down in late 2016 for several reasons. First and most obviously, I became extremely busy, and simply did not have time to keep up the schedule and quality of my writing. That reduced availability coincided with my taking on a new role with Facebook in late 2013. Working on infrastructure at Facebook scale requires understanding problems and technologies that are only interesting to the largest dozen or so tech companies in the world, and many of them are proprietary. As a result, I ran out of blog topics that would be of interest to the general population. Third, the blog was throwing frequent database errors and I didn&amp;rsquo;t have the time or interest to maintain it. I figured my audience would mostly have abandoned it by that point due to infrequent posting and intermittent availability.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Books</title>
      <link>https://dusty.phillips.codes/books/</link>
      <pubDate>Mon, 23 Jul 2018 10:07:04 -0300</pubDate>
      <guid>https://dusty.phillips.codes/books/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve written a few books over the years:&lt;/p&gt;&#xA;&lt;style&gt;&#xA;table#books, table#books tr, table#books td {&#xA;    border-width: 0;&#xA;    padding: 20px;&#xA;}&#xA;&lt;/style&gt;&#xA;&lt;table id=&#34;books&#34;&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      &lt;a href=&#34;https://lazyvim-ambitious-devs.phillips.codes/&#34;&gt;&#xA;        LazyVim for Ambitious Developers&#xA;      &lt;/a&gt;&#xA;    &lt;/td&gt;&#xA;    &lt;td&gt;&#xA;      Introduces the excellent LazyVim distribution to developers new to modal editing. Published online&#xA;      for free with print and ebook editions also available.&#xA;    &lt;/td&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      &lt;a href=&#34;https://amzn.to/3eO8Rmf&#34;&gt;&#xA;        &lt;img src=&#34;https://static.packt-cdn.com/products/9781801077262/cover/smaller&#34; /&gt;&#xA;      &lt;/a&gt;&#xA;    &lt;/td&gt;&#xA;    &lt;td&gt;&#xA;      Python Object Oriented-Oriented Programming launched my career, both as a programmer and as a writer. I wasn&#39;t able to do the revisions for the fourth edition, and &lt;a href=&#34;https://dusty.phillips.codes/2021/05/12/announcing-python-3-object-oriented-programming-4th-edition&#34;&gt;passed the torch&lt;/a&gt; for this latest version.&#xA;    &lt;/td&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      &lt;a href=&#34;http://shop.oreilly.com/product/0636920032595.do&#34;&gt;&#xA;        &lt;img src=&#34;https://dusty.phillips.codes/images/book_covers/kivy.jpg&#34; /&gt;&#xA;      &lt;/a&gt;&#xA;    &lt;/td&gt;&#xA;    &lt;td&gt;&#xA;      Creating Apps in Kivy covers the exceptional &lt;a href=&#34;https://kivy.org&#34;&gt;Kivy&lt;/a&gt; framework for developing efficient mobile and desktop apps in Python. &lt;em&gt;Note: The book is still relevant, but decidedly outdated.&lt;/em&gt;&#xA;    &lt;/td&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&#xA;      &lt;a href=&#34;https://dusty.phillips.codes/2018/07/26/hacking-happier/&#34;&gt;&#xA;        Hacking Happy&#xA;      &lt;/a&gt;&#xA;    &lt;/td&gt;&#xA;    &lt;td&gt;&#xA;      Hacking Happy was about applying programming and IT concepts to mental health. I&#39;ve taken it off the market for reasons discussed in &lt;a href=&#34;https://dusty.phillips.codes/2018/07/26/hacking-happier/&#34;&gt;this post&lt;/a&gt;.&#xA;    &lt;/td&gt;&#xA;  &lt;/tr&gt;&#xA;&lt;/table&gt;</description>
    </item>
    <item>
      <title>Rescript Articles</title>
      <link>https://dusty.phillips.codes/rescript/</link>
      <pubDate>Mon, 23 Jul 2018 10:07:04 -0300</pubDate>
      <guid>https://dusty.phillips.codes/rescript/</guid>
      <description>&lt;p&gt;My most popular series is my ongoing list of Rescript articles. It&amp;rsquo;s gotten so&#xA;long now that I&amp;rsquo;m tired of updating the table of contents on every article each&#xA;time I add a new one! So I&amp;rsquo;ve extracted it here so you can find everything in&#xA;order in one place:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/01/28/setting-up-a-rescript-create-react-app-from-scratch/&#34;&gt;Setting up a Rescript Create-react-app from scratch&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/02/03/rescript-with-react-routing-and-navigation/&#34;&gt;Rescript With React: Routing and Navigation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/02/09/actions-and-reducers-in-rescript/&#34;&gt;Actions and Reducers in Rescript&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/02/22/a-couple-react-components-in-rescript/&#34;&gt;A Couple React Components in Rescript&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/03/02/firing-actions-from-rescript-react-components/&#34;&gt;Firing Actions from Rescript React Components&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/03/09/styling-in-rescript-with-emotion/&#34;&gt;Styling in Rescript with Emotion&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/03/16/using-rescript-with-nodejs-and-express/&#34;&gt;Using Rescript with NodeJS and Express&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/03/24/modeling-rxdb-in-rescript-part-1/&#34;&gt;Modeling RxDB in Rescript, Part 1&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/04/02/modeling-rxdb-in-rescript-part-2/&#34;&gt;Modeling RxDB in Rescript, Part 2&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/04/09/modeling-rxdb-in-rescript-part-3/&#34;&gt;Modeling RxDB in Rescript, Part 3&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/04/17/accessing-rxdb-from-react-components-in-rescript/&#34;&gt;Accessing RxDB from React Components in Rescript&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/05/02/a-graphql-server-in-rescript/&#34;&gt;A Graphql Server in Rescript&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/05/08/quickly-refactoring-with-rescript/&#34;&gt;Quickly Refactoring With Rescript&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/05/15/graphql-endpoints-to-sync-with-rxdb-in-rescript-part-1/&#34;&gt;Graphql Endpoints to Sync with RxDB in Rescript (Part 1)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/05/23/graphql-endpoints-to-sync-with-rxdb-in-rescript-part-2/&#34;&gt;Graphql Endpoints to Sync with RxDB in Rescript (Part 2)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/06/06/syncing-rxdb-changes-from-a-graphql-server-in-rescript/&#34;&gt;Syncing RxDB Changes from a graphql Server in Rescript&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/06/27/syncing-rxdb-changes-to-graphql-mutations-in-rescript/&#34;&gt;Syncing RxDB Changes to GraphQL Mutations in Rescript&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/08/02/quickly-testing-rescript-with-zora/&#34;&gt;Quickly Testing Rescript with Zora&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/08/07/correctly-unit-testing-express-with-rescript-and-zora/&#34;&gt;&amp;ldquo;Correctly&amp;rdquo; Unit Testing Express with Rescript and Zora&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/08/14/parsing-json-in-rescript/&#34;&gt;Parsing JSON in Rescript&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/09/06/fun-with-rescript-polymorphic-variants/&#34;&gt;Fun with Rescript Polymorphic Variants&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/09/18/lets-talk-about-functors-in-rescript/&#34;&gt;Let&amp;rsquo;s Talk about Functors In Rescript&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/09/30/fast-bare-rescript-react/&#34;&gt;Fast, Bare, Rescript React&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dusty.phillips.codes/2021/11/27/rescript-reason-typescript-ocaml-javascript-help-me-choose/&#34;&gt;Rescript, Reason, Typescript, OCAML, Javascript, Help Me Choose!&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Many of these are meant to be read in order, though my more recent ones are stand-alone.&lt;/p&gt;</description>
    </item>
    <item>
      <title>About Dusty</title>
      <link>https://dusty.phillips.codes/about/</link>
      <pubDate>Mon, 23 Jul 2018 09:50:11 -0300</pubDate>
      <guid>https://dusty.phillips.codes/about/</guid>
      <description>&lt;p&gt;Dusty Phillips is a Canadian software developer and author. He&amp;rsquo;s been&#xA;developing software for well over half his life. He spent most of his career&#xA;writing Python in a wide variety of contexts: freelance consultant, first&#xA;engineer at a 2 person startup, director of engineering at a startup, engineer&#xA;at Facebook, a stint with the United Nations to name a few.&lt;/p&gt;&#xA;&lt;p&gt;He&amp;rsquo;s written a few &lt;a href=&#34;https://dusty.phillips.codes/books&#34;&gt;books&lt;/a&gt; along the way with more to come. He holds a&#xA;bachelor&amp;rsquo;s degree in Computer Science and Information systems from Athabasca&#xA;University and a Masters in Computer Science and Engineering from York&#xA;University.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
