<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>Joshua Wootonn's blog</title>
        <link>https://joshuawootonn.com</link>
        <description>Writing about building software, creative work, faith, and the decisions shaping my life.</description>
        <lastBuildDate>Mon, 13 Jul 2026 14:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>&amp;copy; Joshua Wootonn 2026</copyright>
        <item>
            <title><![CDATA[The Origin of Type the Word]]></title>
            <link>https://joshuawootonn.com/type-the-word-full-time</link>
            <guid>https://joshuawootonn.com/type-the-word-full-time</guid>
            <pubDate>Mon, 13 Jul 2026 14:00:00 GMT</pubDate>
            <description><![CDATA[How RSI, a split keyboard, and typing through the Psalms led me to build Bible-based typing software for Christian schools.]]></description>
        </item>
        <item>
            <title><![CDATA[How to houseplant]]></title>
            <link>https://joshuawootonn.com/how-to-houseplant</link>
            <guid>https://joshuawootonn.com/how-to-houseplant</guid>
            <pubDate>Wed, 13 Aug 2025 19:15:00 GMT</pubDate>
            <description><![CDATA[A programmer's guide to growing plants indoors.]]></description>
        </item>
        <item>
            <title><![CDATA[Drag to Select]]></title>
            <link>https://joshuawootonn.com/react-drag-to-select</link>
            <guid>https://joshuawootonn.com/react-drag-to-select</guid>
            <pubDate>Tue, 15 Oct 2024 10:15:00 GMT</pubDate>
            <description><![CDATA[Drag selection is the defacto pointer multi-selection. In this guide we'll recreate native-like drag selection in react.]]></description>
        </item>
        <item>
            <title><![CDATA[Interactive dropdown menus with Radix UI]]></title>
            <link>https://joshuawootonn.com/radix-interactive-dropdown</link>
            <guid>https://joshuawootonn.com/radix-interactive-dropdown</guid>
            <pubDate>Fri, 07 Jun 2024 19:15:00 GMT</pubDate>
            <description><![CDATA[Dropdown menus are great until you have interactive content. This guide combines dialogs and dropdown menus for a simple interactive dropdown flow.]]></description>
        </item>
        <item>
            <title><![CDATA[The Virtue in the Workaround]]></title>
            <link>https://joshuawootonn.com/the-virtue-in-the-workaround</link>
            <guid>https://joshuawootonn.com/the-virtue-in-the-workaround</guid>
            <pubDate>Thu, 30 May 2024 19:15:00 GMT</pubDate>
            <description><![CDATA[How embracing workarounds isn't such a bad idea.]]></description>
        </item>
        <item>
            <title><![CDATA[Type the Word]]></title>
            <link>https://joshuawootonn.com/type-the-word</link>
            <guid>https://joshuawootonn.com/type-the-word</guid>
            <pubDate>Mon, 15 Jan 2024 07:15:00 GMT</pubDate>
            <description><![CDATA[I created an app for typing through the Bible. Here is a technical breakdown of all the little details.]]></description>
        </item>
        <item>
            <title><![CDATA[Desire is for the year, discipline is for today]]></title>
            <link>https://joshuawootonn.com/desire-is-for-the-year-discipline-is-for-today</link>
            <guid>https://joshuawootonn.com/desire-is-for-the-year-discipline-is-for-today</guid>
            <pubDate>Fri, 29 Dec 2023 19:15:00 GMT</pubDate>
            <description><![CDATA[How to persist through creative struggle]]></description>
        </item>
        <item>
            <title><![CDATA[Sidebar animation performance]]></title>
            <link>https://joshuawootonn.com/sidebar-animation-performance</link>
            <guid>https://joshuawootonn.com/sidebar-animation-performance</guid>
            <pubDate>Fri, 14 Jul 2023 09:30:00 GMT</pubDate>
            <description><![CDATA[exploring JS vs CSS animation performance by recreating the sidebars of Notion, Linear, and Gitlab]]></description>
        </item>
        <item>
            <title><![CDATA[React treeview component (pt. 3)]]></title>
            <link>https://joshuawootonn.com/react-treeview-component-part-3</link>
            <guid>https://joshuawootonn.com/react-treeview-component-part-3</guid>
            <pubDate>Mon, 10 Apr 2023 07:15:00 GMT</pubDate>
            <description><![CDATA[A bonus post animating our treeview ✨]]></description>
        </item>
        <item>
            <title><![CDATA[React treeview component (pt. 2)]]></title>
            <link>https://joshuawootonn.com/react-treeview-component-part-2</link>
            <guid>https://joshuawootonn.com/react-treeview-component-part-2</guid>
            <pubDate>Wed, 05 Apr 2023 19:15:00 GMT</pubDate>
            <description><![CDATA[What keyboard shortcuts belong on a treeview? What do the ARIA guidelines recommend? Building on a previous post, we answer those questions and make our treeview accessible.]]></description>
        </item>
        <item>
            <title><![CDATA[React roving tabindex]]></title>
            <link>https://joshuawootonn.com/react-roving-tabindex</link>
            <guid>https://joshuawootonn.com/react-roving-tabindex</guid>
            <pubDate>Sun, 19 Mar 2023 19:15:00 GMT</pubDate>
            <description><![CDATA[What is a roving tabindex? When do you need one? How can you create one in React? In this post, we answer those questions and walk through a simple example of a roving tabindex.]]></description>
        </item>
        <item>
            <title><![CDATA[React treeview component (pt. 1)]]></title>
            <link>https://joshuawootonn.com/react-treeview-component</link>
            <guid>https://joshuawootonn.com/react-treeview-component</guid>
            <pubDate>Sun, 26 Feb 2023 19:15:00 GMT</pubDate>
            <description><![CDATA[What is a treeview? How should you structure one? How do you create one in react? In this post, we answer those questions and create a mouse interactive treeview.]]></description>
        </item>
        <item>
            <title><![CDATA[React toggle group component]]></title>
            <link>https://joshuawootonn.com/react-toggle-group-component</link>
            <guid>https://joshuawootonn.com/react-toggle-group-component</guid>
            <pubDate>Fri, 20 Jan 2023 19:15:00 GMT</pubDate>
            <description><![CDATA[The togglegroup is a modern variant of the radiogroup UI pattern. In this post, you’ll learn how to create one that is accessible via a roving tabindex.]]></description>
        </item>
        <item>
            <title><![CDATA[React disclosure component]]></title>
            <link>https://joshuawootonn.com/react-disclosure-component</link>
            <guid>https://joshuawootonn.com/react-disclosure-component</guid>
            <pubDate>Mon, 17 Oct 2022 19:15:00 GMT</pubDate>
            <description><![CDATA[The disclosure is the best UI pattern for answering questions. In this post, you'll learn how to create one with a height animation via framer motion.]]></description>
        </item>
        <item>
            <title><![CDATA[React slider component]]></title>
            <link>https://joshuawootonn.com/react-slider-component</link>
            <guid>https://joshuawootonn.com/react-slider-component</guid>
            <pubDate>Thu, 15 Sep 2022 19:15:00 GMT</pubDate>
            <description><![CDATA[Creating a slider with a range input sometimes just doesn't cut it. In this post, you'll learn how to make one from scratch with framer motion.]]></description>
        </item>
        <item>
            <title><![CDATA[Vercel tabs component]]></title>
            <link>https://joshuawootonn.com/vercel-tabs-component</link>
            <guid>https://joshuawootonn.com/vercel-tabs-component</guid>
            <pubDate>Thu, 04 Aug 2022 10:30:00 GMT</pubDate>
            <description><![CDATA[How to recreate the vercel tabs component with CSS, react transition group, react spring, and Framer motion.]]></description>
        </item>
        <item>
            <title><![CDATA[Removing the toil from my blogging experience]]></title>
            <link>https://joshuawootonn.com/removing-the-toil-from-my-blogging-experience</link>
            <guid>https://joshuawootonn.com/removing-the-toil-from-my-blogging-experience</guid>
            <pubDate>Sun, 19 Dec 2021 10:00:00 GMT</pubDate>
            <description><![CDATA[how I write in Notion, own my own content, and do as little manual work as possible]]></description>
        </item>
        <item>
            <title><![CDATA[The part of productivity that I was missing]]></title>
            <link>https://joshuawootonn.com/the-part-of-productivity-that-I-was-missing</link>
            <guid>https://joshuawootonn.com/the-part-of-productivity-that-I-was-missing</guid>
            <pubDate>Sun, 31 Oct 2021 19:30:00 GMT</pubDate>
            <description><![CDATA[how I finally realized that rest is important and that there is a limit to what I can do]]></description>
        </item>
        <item>
            <title><![CDATA[Avoiding conformity and doing art]]></title>
            <link>https://joshuawootonn.com/avoiding-conformity-and-doing-art</link>
            <guid>https://joshuawootonn.com/avoiding-conformity-and-doing-art</guid>
            <pubDate>Tue, 24 Aug 2021 19:15:00 GMT</pubDate>
            <description><![CDATA[how an extensive software process can impede the real work]]></description>
        </item>
        <item>
            <title><![CDATA[Fear as a motivator]]></title>
            <link>https://joshuawootonn.com/fear-as-a-motivator</link>
            <guid>https://joshuawootonn.com/fear-as-a-motivator</guid>
            <pubDate>Tue, 03 Aug 2021 13:15:00 GMT</pubDate>
            <description><![CDATA[how it's fallen short for me and what I am choosing instead]]></description>
        </item>
        <item>
            <title><![CDATA[Resetting wrong expectations for your job search]]></title>
            <link>https://joshuawootonn.com/resetting-wrong-expectations-in-your-job-search</link>
            <guid>https://joshuawootonn.com/resetting-wrong-expectations-in-your-job-search</guid>
            <pubDate>Sat, 17 Jul 2021 19:15:00 GMT</pubDate>
            <description><![CDATA[and staying human in your job search. How to not become a zombie.]]></description>
        </item>
        <item>
            <title><![CDATA[Software job searching 101: The how-to]]></title>
            <link>https://joshuawootonn.com/software-job-searching-101-the-how-to</link>
            <guid>https://joshuawootonn.com/software-job-searching-101-the-how-to</guid>
            <pubDate>Fri, 02 Jul 2021 19:15:00 GMT</pubDate>
            <description><![CDATA[of all the practical stuff involved in getting interviews, offers, and negotiating well]]></description>
        </item>
        <item>
            <title><![CDATA[Facing the resistance]]></title>
            <link>https://joshuawootonn.com/facing-the-resistance-in-your-job-search</link>
            <guid>https://joshuawootonn.com/facing-the-resistance-in-your-job-search</guid>
            <pubDate>Fri, 25 Jun 2021 19:15:00 GMT</pubDate>
            <description><![CDATA[How to not preoptimize your job search and just apply.]]></description>
        </item>
        <item>
            <title><![CDATA[Cool jobs vs. Not so cool jobs]]></title>
            <link>https://joshuawootonn.com/cool-jobs-vs-not-so-cool-jobs</link>
            <guid>https://joshuawootonn.com/cool-jobs-vs-not-so-cool-jobs</guid>
            <pubDate>Fri, 18 Jun 2021 19:15:00 GMT</pubDate>
            <description><![CDATA[How to identify what is important in your next job and focus on getting there]]></description>
        </item>
        <item>
            <title><![CDATA[Shotgunning vs Sniping job applications]]></title>
            <link>https://joshuawootonn.com/shotgunning-vs-sniping-job-applications</link>
            <guid>https://joshuawootonn.com/shotgunning-vs-sniping-job-applications</guid>
            <pubDate>Thu, 10 Jun 2021 10:30:00 GMT</pubDate>
            <description><![CDATA[I have found two common job searching pit-falls. Here is how they worked for me, and my two cents on how to reach a large number while still differentiating yourself.]]></description>
        </item>
        <item>
            <title><![CDATA[Telling a story vs. Telling the truth]]></title>
            <link>https://joshuawootonn.com/telling-a-story-vs-telling-the-truth</link>
            <guid>https://joshuawootonn.com/telling-a-story-vs-telling-the-truth</guid>
            <pubDate>Fri, 04 Jun 2021 10:30:00 GMT</pubDate>
            <description><![CDATA[Job searching is about telling your story. This is a guide to being honest yet convincing in how you portray your experiences.]]></description>
        </item>
        <item>
            <title><![CDATA[A digital garden. Not a blog]]></title>
            <link>https://joshuawootonn.com/a-digital-garden-not-a-blog</link>
            <guid>https://joshuawootonn.com/a-digital-garden-not-a-blog</guid>
            <pubDate>Mon, 31 May 2021 19:15:00 GMT</pubDate>
            <description><![CDATA[It's not chronological, not on a high cadence, never finished, and will always value transparency over all.]]></description>
        </item>
        <item>
            <title><![CDATA[How to stop lurking]]></title>
            <link>https://joshuawootonn.com/how-to-stop-lurking</link>
            <guid>https://joshuawootonn.com/how-to-stop-lurking</guid>
            <pubDate>Fri, 28 May 2021 13:15:00 GMT</pubDate>
            <description><![CDATA[As a long-time lurker, I have recently discovered why I fall into it and great reasons to stop. The world needs your contribution!]]></description>
        </item>
        <item>
            <title><![CDATA[I Created a Blog]]></title>
            <link>https://joshuawootonn.com/i-created-a-blog</link>
            <guid>https://joshuawootonn.com/i-created-a-blog</guid>
            <pubDate>Fri, 21 May 2021 13:15:00 GMT</pubDate>
            <description><![CDATA[It took a lot for me to settle on creating a frontend engineering and web animation blog. Here is the why and what about of that decision.]]></description>
        </item>
    </channel>
</rss>