<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>James Fenn</title>
        <link>https://jfenn.me/</link>
        <description>Writer of bad puns and slightly better software. This website contains information about my adventures in programming, current projects, and me.</description>
        <lastBuildDate>Fri, 19 Sep 2025 02:31:06 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>James Fenn</title>
            <url>https://jfenn.me/images/headers/snowytrees.jpg</url>
            <link>https://jfenn.me/</link>
        </image>
        <copyright>James Fenn</copyright>
        <atom:link href="https://jfenn.me/blog/feed.xml" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Continuous Integration with Travis CI for Android]]></title>
            <link>https://jfenn.me/blog/2018-11-14-continuous-integration</link>
            <guid>https://jfenn.me/blog/2018-11-14-continuous-integration</guid>
            <pubDate>Wed, 14 Nov 2018 00:00:00 GMT</pubDate>
            <description><![CDATA[An in-depth tutorial explaining how to set up Travis CI to deploy signed builds to Google Play. Among other things.]]></description>
            <content:encoded><![CDATA[An in-depth tutorial explaining how to set up Travis CI to deploy signed builds to Google Play. Among other things.]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Introduction to Android: Contexts, Intents, and the Activity lifecycle]]></title>
            <link>https://jfenn.me/blog/2019-03-18-introduction-to-android</link>
            <guid>https://jfenn.me/blog/2019-03-18-introduction-to-android</guid>
            <pubDate>Mon, 18 Mar 2019 00:00:00 GMT</pubDate>
            <description><![CDATA[A basic overview of the main components of an Android app and how they interact with each other and the Android system.]]></description>
            <content:encoded><![CDATA[A basic overview of the main components of an Android app and how they interact with each other and the Android system.]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Minecraft Data Pack Programming: Introduction]]></title>
            <link>https://jfenn.me/blog/2022-06-14-minecraft-data-packs</link>
            <guid>https://jfenn.me/blog/2022-06-14-minecraft-data-packs</guid>
            <pubDate>Tue, 14 Jun 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[A beginner-friendly series for teaching programming concepts with Minecraft data packs.]]></description>
            <content:encoded><![CDATA[A beginner-friendly series for teaching programming concepts with Minecraft data packs.]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Minecraft Data Pack Programming: Command Syntax]]></title>
            <link>https://jfenn.me/blog/2022-06-15-minecraft-data-packs</link>
            <guid>https://jfenn.me/blog/2022-06-15-minecraft-data-packs</guid>
            <pubDate>Wed, 15 Jun 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[A beginner-friendly series for teaching programming concepts with Minecraft data packs.]]></description>
            <content:encoded><![CDATA[A beginner-friendly series for teaching programming concepts with Minecraft data packs.]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Exceptional Traveler]]></title>
            <link>https://jfenn.me/blog/2018-09-25-exceptional-traveler</link>
            <guid>https://jfenn.me/blog/2018-09-25-exceptional-traveler</guid>
            <pubDate>Tue, 25 Sep 2018 00:00:00 GMT</pubDate>
            <description><![CDATA[I explain how and why (sort of) I wrote an implementation of the Traveling Salesperson Problem using Exceptional Programming standards.]]></description>
            <content:encoded><![CDATA[I explain how and why (sort of) I wrote an implementation of the Traveling Salesperson Problem using Exceptional Programming standards.]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[JavaScript: Productivity over Proof]]></title>
            <link>https://jfenn.me/blog/2019-08-02-javascript-proofs</link>
            <guid>https://jfenn.me/blog/2019-08-02-javascript-proofs</guid>
            <pubDate>Fri, 02 Aug 2019 00:00:00 GMT</pubDate>
            <description><![CDATA[In the vast majority everyday software, nobody writes a mathematical proof of every piece of functionality. Dynamically typed languages exist for a reason, and this is not it.]]></description>
            <content:encoded><![CDATA[In the vast majority everyday software, nobody writes a mathematical proof of every piece of functionality. Dynamically typed languages exist for a reason, and this is not it.]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Audio Automation: using Java's MIDI APIs with Kotlin Flow]]></title>
            <link>https://jfenn.me/blog/2021-01-31-audio-automation</link>
            <guid>https://jfenn.me/blog/2021-01-31-audio-automation</guid>
            <pubDate>Sun, 31 Jan 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[An explanation of the development process behind a MIDI library using the Kotlin Flow API.]]></description>
            <content:encoded><![CDATA[An explanation of the development process behind a MIDI library using the Kotlin Flow API.]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Animating SVG Icons on the Web]]></title>
            <link>https://jfenn.me/blog/2020-05-09-animating-svg-icons</link>
            <guid>https://jfenn.me/blog/2020-05-09-animating-svg-icons</guid>
            <pubDate>Sat, 09 May 2020 00:00:00 GMT</pubDate>
            <description><![CDATA[A small breakdown of the process I used to create a couple interactive icons for a web project.]]></description>
            <content:encoded><![CDATA[A small breakdown of the process I used to create a couple interactive icons for a web project.]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Dynamic Backgrounds in Unicorn Utterances' Preview Images]]></title>
            <link>https://jfenn.me/blog/2022-05-31-unicorn-utterances-preview-images</link>
            <guid>https://jfenn.me/blog/2022-05-31-unicorn-utterances-preview-images</guid>
            <pubDate>Tue, 31 May 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[An explanation of some CSS tricks and techniques I used to make a neat contribution to the Unicorn Utterances blog site.]]></description>
            <content:encoded><![CDATA[An explanation of some CSS tricks and techniques I used to make a neat contribution to the Unicorn Utterances blog site.]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What have I been up to?]]></title>
            <link>https://jfenn.me/blog/2023-10-23-whibut</link>
            <guid>https://jfenn.me/blog/2023-10-23-whibut</guid>
            <pubDate>Mon, 23 Oct 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[A summary of some of the various projects I've been working on this year.]]></description>
            <content:encoded><![CDATA[A summary of some of the various projects I've been working on this year.]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Entity Component System: The Perfect Solution to Reusable Code?]]></title>
            <link>https://jfenn.me/blog/2024-09-01-entity-component-system</link>
            <guid>https://jfenn.me/blog/2024-09-01-entity-component-system</guid>
            <pubDate>Sun, 01 Sep 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[ECS presents a lot of advantages for all kinds of games. What makes it so special?]]></description>
            <content:encoded><![CDATA[ECS presents a lot of advantages for all kinds of games. What makes it so special?]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Self-Hosting Music Distribution]]></title>
            <link>https://jfenn.me/blog/2024-02-10-self-hosting-music-distribution</link>
            <guid>https://jfenn.me/blog/2024-02-10-self-hosting-music-distribution</guid>
            <pubDate>Sat, 10 Feb 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Considering alternatives to modern music distribution with small platforms and self-hosted sites!]]></description>
            <content:encoded><![CDATA[Considering alternatives to modern music distribution with small platforms and self-hosted sites!]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Minecraft Data Pack Programming: Scoreboard Usage]]></title>
            <link>https://jfenn.me/blog/2022-08-20-minecraft-data-packs</link>
            <guid>https://jfenn.me/blog/2022-08-20-minecraft-data-packs</guid>
            <pubDate>Sat, 20 Aug 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[A beginner-friendly series for teaching programming concepts with Minecraft data packs.]]></description>
            <content:encoded><![CDATA[A beginner-friendly series for teaching programming concepts with Minecraft data packs.]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Declarativ: an experimental React-like HTML framework]]></title>
            <link>https://jfenn.me/blog/2021-08-17-declarativ-templating</link>
            <guid>https://jfenn.me/blog/2021-08-17-declarativ-templating</guid>
            <pubDate>Tue, 17 Aug 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[A breakdown of the concepts used in Declarativ, a lightweight JavaScript HTML templating library.]]></description>
            <content:encoded><![CDATA[A breakdown of the concepts used in Declarativ, a lightweight JavaScript HTML templating library.]]></content:encoded>
        </item>
    </channel>
</rss>