<!DOCTYPE html>
<html lang="en" class="antialiased font-sans font-normal">
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		




<title>Home - Aaron Bushnell</title>

<!-- Primary Meta Tags -->
<meta name="title" content="Home - Aaron Bushnell">
<meta name="description" content="Born and raised in the midwest and notorious golden retriever hoarder.">

<!-- Mastodon / Fediverse -->
<meta name="fediverse:creator" content="@aaronbushnell@mastodon.social">

<!-- Open Graph / Facebook -->
<meta property="og:type" content="website">
<meta property="og:url" content="https://aaronmbushnell.com//feed">
<meta property="og:title" content="Home - Aaron Bushnell">
<meta property="og:description" content="Born and raised in the midwest and notorious golden retriever hoarder.">
<meta property="og:image" content="https://aaronmbushnell.com/og/og-image.png">

<!-- Twitter -->
<meta property="twitter:card" content="summary_large_image">
<meta property="twitter:url" content="https://aaronmbushnell.com//feed">
<meta property="twitter:title" content="Home - Aaron Bushnell">
<meta property="twitter:description" content="Born and raised in the midwest and notorious golden retriever hoarder.">
<meta property="twitter:image" content="https://aaronmbushnell.com/og/og-image.png">

<!-- See also -->
<meta content="https://featherhour.com" property="og:see_also">
<meta content="https://letterboxd.com/aaronbushnell" property="og:see_also">
<meta content="https://mastodon.social/@aaronbushnell" property="og:see_also">
<meta content="https://bsky.app/profile/aaronmbushnell.com" property="og:see_also">
<meta content="https://github.com/aaronbushnell" property="og:see_also">
<meta content="https://x.com/aaronbushnell" property="og:see_also">


		<style>[x-cloak] { display: none !important; }</style>
		<link rel="preconnect" href="https://fonts.googleapis.com">
		<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
		<link href="https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300..900;1,300..900&display=swap" rel="stylesheet">
		<link rel="preload" as="style" href="https://aaronmbushnell.com/build/assets/app-s9aPBRIA.css" /><link rel="modulepreload" as="script" href="https://aaronmbushnell.com/build/assets/app-ZZadWRm1.js" /><link rel="stylesheet" href="https://aaronmbushnell.com/build/assets/app-s9aPBRIA.css" /><script type="module" src="https://aaronmbushnell.com/build/assets/app-ZZadWRm1.js"></script>
		
	</head>
	<body>
		<a
	href="#main-content"
	class="sr-only focus:not-sr-only focus:absolute focus:px-3 focus:py-1.5 text-white focus:bg-zinc-950 focus:m-3 focus:rounded"
>
	Skip to main content
</a>

		<header class="container pt-4 flex items-center justify-between" x-data="{ show: false }">
	<a href="/" class="block size-[60px] rounded-full overflow-hidden">
		<img src="/avatar.webp" alt="Aaron Bushnell" height="60" width="60">
	</a>

	<div class="flex gap-10">
		
			<a
				href="/about"
				class="flex items-center gap-1.5"
				target="_self"
			>
				About
				
			</a>
		
			<a
				href="https://featherhour.com"
				class="flex items-center gap-1.5"
				target="_blank"
			>
				Apps
				
					<svg class="size-3.5 opacity-50" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" data-slot="icon"> <path fill-rule="evenodd" d="M4.25 5.5a.75.75 0 0 0-.75.75v8.5c0 .414.336.75.75.75h8.5a.75.75 0 0 0 .75-.75v-4a.75.75 0 0 1 1.5 0v4A2.25 2.25 0 0 1 12.75 17h-8.5A2.25 2.25 0 0 1 2 14.75v-8.5A2.25 2.25 0 0 1 4.25 4h5a.75.75 0 0 1 0 1.5h-5Z" clip-rule="evenodd"/> <path fill-rule="evenodd" d="M6.194 12.753a.75.75 0 0 0 1.06.053L16.5 4.44v2.81a.75.75 0 0 0 1.5 0v-4.5a.75.75 0 0 0-.75-.75h-4.5a.75.75 0 0 0 0 1.5h2.553l-9.056 8.194a.75.75 0 0 0-.053 1.06Z" clip-rule="evenodd"/> </svg>
				
			</a>
		
	</div>
</header>


		<main id="main-content" class="mb-32">
			
	<!-- blocks/blog_listing -->
	<section class="container">
	
	<div
		role="presentation"
		class="mt-16 lg:mt-28"
	></div>


<div class="space-y-7">
		<h1 class="sr-only">Latest posts</h1>

		
			<article class="space-y-2">
	<time datetime="2025-12-31" class="block text-sm text-zinc-500 dark:text-zinc-400">
		December 31, 2025
	</time>

	<h2 class="h4 text-pretty text-zinc-800 dark:text-zinc-100">
		<a href="/fix-the-papercuts" class="block underline hover:no-underline">
			Fix the papercuts
		</a>
	</h2>

	<p class="text-zinc-700 dark:text-zinc-300">A 2026 theme: Taking 10 minutes to fix the tiny, but annoying, problems of everyday life.</p>
</article>

		
			<article class="space-y-2">
	<time datetime="2025-12-18" class="block text-sm text-zinc-500 dark:text-zinc-400">
		December 18, 2025
	</time>

	<h2 class="h4 text-pretty text-zinc-800 dark:text-zinc-100">
		<a href="/best-of-2025" class="block underline hover:no-underline">
			Best of 2025
		</a>
	</h2>

	<p class="text-zinc-700 dark:text-zinc-300">The music, movies, recipes, and technology (not necessarily released this year) that made my 2025 better!</p>
</article>

		
			<article class="space-y-2">
	<time datetime="2025-09-15" class="block text-sm text-zinc-500 dark:text-zinc-400">
		September 15, 2025
	</time>

	<h2 class="h4 text-pretty text-zinc-800 dark:text-zinc-100">
		<a href="/cicolator-2" class="block underline hover:no-underline">
			Cicolator 2.0
		</a>
	</h2>

	<p class="text-zinc-700 dark:text-zinc-300">An all new design featuring barcode scanning, favorites, and prompt-based estimates using on-device Apple Intelligence models! A big update for iOS 26, iPadOS 26, and macOS Tahoe!</p>
</article>

		
			<article class="space-y-2">
	<time datetime="2025-05-28" class="block text-sm text-zinc-500 dark:text-zinc-400">
		May 28, 2025
	</time>

	<h2 class="h4 text-pretty text-zinc-800 dark:text-zinc-100">
		<a href="/development-is-communication" class="block underline hover:no-underline">
			Development is Communication
		</a>
	</h2>

	<p class="text-zinc-700 dark:text-zinc-300">Exactly how much of being a programmer is writing code?</p>
</article>

		
			<article class="space-y-2">
	<time datetime="2025-04-03" class="block text-sm text-zinc-500 dark:text-zinc-400">
		April 3, 2025
	</time>

	<h2 class="h4 text-pretty text-zinc-800 dark:text-zinc-100">
		<a href="/the-ship-of-theseus" class="block underline hover:no-underline">
			The Ship of Theseus
		</a>
	</h2>

	<p class="text-zinc-700 dark:text-zinc-300">Generative AI and how the creation of art is more than just the sum of its parts.</p>
</article>

		
			<article class="space-y-2">
	<time datetime="2025-04-01" class="block text-sm text-zinc-500 dark:text-zinc-400">
		April 1, 2025
	</time>

	<h2 class="h4 text-pretty text-zinc-800 dark:text-zinc-100">
		<a href="/low-maintenance-by-design" class="block underline hover:no-underline">
			Low-maintenance by design
		</a>
	</h2>

	<p class="text-zinc-700 dark:text-zinc-300">Sometimes removing the preamble and production is the best way to start—and maintain—your creative goals.</p>
</article>

		
			<article class="space-y-2">
	<time datetime="2025-02-19" class="block text-sm text-zinc-500 dark:text-zinc-400">
		February 19, 2025
	</time>

	<h2 class="h4 text-pretty text-zinc-800 dark:text-zinc-100">
		<a href="/introducing-pickaday" class="block underline hover:no-underline">
			Introducing Pickaday
		</a>
	</h2>

	<p class="text-zinc-700 dark:text-zinc-300">The easiest way for you, your family, friends, fantasy football league, D&D group, neighborhood, or whoever to vote on event dates together!</p>
</article>

		
			<article class="space-y-2">
	<time datetime="2025-01-04" class="block text-sm text-zinc-500 dark:text-zinc-400">
		January 4, 2025
	</time>

	<h2 class="h4 text-pretty text-zinc-800 dark:text-zinc-100">
		<a href="/the-three-secrets-to-becoming-a-great-programmer" class="block underline hover:no-underline">
			The three secrets to becoming a great programmer
		</a>
	</h2>

	<p class="text-zinc-700 dark:text-zinc-300">Whether you're just starting to program or you're looking to further improve your skills these will drastically put you ahead.</p>
</article>

		
			<article class="space-y-2">
	<time datetime="2024-12-30" class="block text-sm text-zinc-500 dark:text-zinc-400">
		December 30, 2024
	</time>

	<h2 class="h4 text-pretty text-zinc-800 dark:text-zinc-100">
		<a href="/best-of-2024" class="block underline hover:no-underline">
			Best of 2024
		</a>
	</h2>

	<p class="text-zinc-700 dark:text-zinc-300">Some of my favorite things from this past year and other things that stuck with me.</p>
</article>

		
			<article class="space-y-2">
	<time datetime="2024-09-13" class="block text-sm text-zinc-500 dark:text-zinc-400">
		September 13, 2024
	</time>

	<h2 class="h4 text-pretty text-zinc-800 dark:text-zinc-100">
		<a href="/password-protecting-entries-in-statamic" class="block underline hover:no-underline">
			Password protect all entries in a Statamic Collection
		</a>
	</h2>

	<p class="text-zinc-700 dark:text-zinc-300">A simple Collection setup to enable password protection across your Statamic entries.</p>
</article>

		
			<article class="space-y-2">
	<time datetime="2023-09-18" class="block text-sm text-zinc-500 dark:text-zinc-400">
		September 18, 2023
	</time>

	<h2 class="h4 text-pretty text-zinc-800 dark:text-zinc-100">
		<a href="/introducing-cicolator" class="block underline hover:no-underline">
			Introducing Cicolator
		</a>
	</h2>

	<p class="text-zinc-700 dark:text-zinc-300">My first iOS, iPadOS, and macOS app that makes calorie tracking and meal portioning simple!</p>
</article>

		
			<article class="space-y-2">
	<time datetime="2023-09-01" class="block text-sm text-zinc-500 dark:text-zinc-400">
		September 1, 2023
	</time>

	<h2 class="h4 text-pretty text-zinc-800 dark:text-zinc-100">
		<a href="/craft-cms-entry-query-scopes-with-yii-behaviors" class="block underline hover:no-underline">
			Craft CMS entry query scopes with Yii behaviors
		</a>
	</h2>

	<p class="text-zinc-700 dark:text-zinc-300">Use Yii's behavior model to create reusable scopes for your element queries.</p>
</article>

		
			<article class="space-y-2">
	<time datetime="2023-08-28" class="block text-sm text-zinc-500 dark:text-zinc-400">
		August 28, 2023
	</time>

	<h2 class="h4 text-pretty text-zinc-800 dark:text-zinc-100">
		<a href="/keep-your-stack-short" class="block underline hover:no-underline">
			Keep your stack short
		</a>
	</h2>

	<p class="text-zinc-700 dark:text-zinc-300">Reducing your tech stack's complexity to save your sanity a year later.</p>
</article>

		
			<article class="space-y-2">
	<time datetime="2023-05-01" class="block text-sm text-zinc-500 dark:text-zinc-400">
		May 1, 2023
	</time>

	<h2 class="h4 text-pretty text-zinc-800 dark:text-zinc-100">
		<a href="/hot-reloading-content-in-craft-cms-live-preview" class="block underline hover:no-underline">
			Hot reloading content in Craft CMS's Live Preview
		</a>
	</h2>

	<p class="text-zinc-700 dark:text-zinc-300">Speed up your content authoring and ditch full-page refreshes for HMR-style updates.</p>
</article>

		
			<article class="space-y-2">
	<time datetime="2023-02-05" class="block text-sm text-zinc-500 dark:text-zinc-400">
		February 5, 2023
	</time>

	<h2 class="h4 text-pretty text-zinc-800 dark:text-zinc-100">
		<a href="/a-flock-and-a-hard-place" class="block underline hover:no-underline">
			A flock and a hard place
		</a>
	</h2>

	<p class="text-zinc-700 dark:text-zinc-300">How does Mastodon attract a more diverse audience of users?</p>
</article>

		
			<article class="space-y-2">
	<time datetime="2020-08-16" class="block text-sm text-zinc-500 dark:text-zinc-400">
		August 16, 2020
	</time>

	<h2 class="h4 text-pretty text-zinc-800 dark:text-zinc-100">
		<a href="/how-ive-dealt-with-rsi-and-programming-full-time" class="block underline hover:no-underline">
			How I've dealt with RSI and programming full-time
		</a>
	</h2>

	<p class="text-zinc-700 dark:text-zinc-300">In May 2020 I began experiencing RSI pain. These are some changes I made to alleviate the pain and get back to programming.</p>
</article>

		
			<article class="space-y-2">
	<time datetime="2020-08-13" class="block text-sm text-zinc-500 dark:text-zinc-400">
		August 13, 2020
	</time>

	<h2 class="h4 text-pretty text-zinc-800 dark:text-zinc-100">
		<a href="/running-gatsby-js-sites-with-craft-cms" class="block underline hover:no-underline">
			Running Gatsby.js Sites with Craft CMS
		</a>
	</h2>

	<p class="text-zinc-700 dark:text-zinc-300">The advantages and disadvantages of using Gatsby.js and Craft CMS in production. Includes alternative solutions for the more cautious developer.</p>
</article>

		
			<article class="space-y-2">
	<time datetime="2019-12-31" class="block text-sm text-zinc-500 dark:text-zinc-400">
		December 31, 2019
	</time>

	<h2 class="h4 text-pretty text-zinc-800 dark:text-zinc-100">
		<a href="/best-of-2019" class="block underline hover:no-underline">
			Best of 2019
		</a>
	</h2>

	<p class="text-zinc-700 dark:text-zinc-300">Some quick picks of my favorite things from 2019.</p>
</article>

		
			<article class="space-y-2">
	<time datetime="2015-06-03" class="block text-sm text-zinc-500 dark:text-zinc-400">
		June 3, 2015
	</time>

	<h2 class="h4 text-pretty text-zinc-800 dark:text-zinc-100">
		<a href="/the-code-keyboard" class="block underline hover:no-underline">
			The CODE Keyboard
		</a>
	</h2>

	<p class="text-zinc-700 dark:text-zinc-300">When I was looking for a new keyboard I decided I wanted to get a mechanical one. They're a bit on the expensive side, but the feel, durability and soothing clicky-ness helped me justify it.</p>
</article>

		
			<article class="space-y-2">
	<time datetime="2015-02-25" class="block text-sm text-zinc-500 dark:text-zinc-400">
		February 25, 2015
	</time>

	<h2 class="h4 text-pretty text-zinc-800 dark:text-zinc-100">
		<a href="/code-paralysis" class="block underline hover:no-underline">
			Code Paralysis
		</a>
	</h2>

	<p class="text-zinc-700 dark:text-zinc-300">Sometimes I feel like I'm overthinking things. Because I'm afraid I'm going to do the wrong things. And then I get stuck. I get code paralysis.</p>
</article>

		
			<article class="space-y-2">
	<time datetime="2013-09-24" class="block text-sm text-zinc-500 dark:text-zinc-400">
		September 24, 2013
	</time>

	<h2 class="h4 text-pretty text-zinc-800 dark:text-zinc-100">
		<a href="/using-fewer-tools" class="block underline hover:no-underline">
			Using fewer tools
		</a>
	</h2>

	<p class="text-zinc-700 dark:text-zinc-300">Intentionally using a smaller number of tools to get things done.</p>
</article>

		
			<article class="space-y-2">
	<time datetime="2012-01-15" class="block text-sm text-zinc-500 dark:text-zinc-400">
		January 15, 2012
	</time>

	<h2 class="h4 text-pretty text-zinc-800 dark:text-zinc-100">
		<a href="/great-ux-patterns-in-games" class="block underline hover:no-underline">
			Great UX patterns in games
		</a>
	</h2>

	<p class="text-zinc-700 dark:text-zinc-300">How EarthBound creates a better gaming experience by removing tedious actions.</p>
</article>

		
	</div>


	<div
		role="presentation"
		class="mb-16 lg:mb-28"
	></div>


</section>




		</main>

		<span class="nocache" data-nocache="8234b0706c1e65bbe83f2e0ebaf3ebb99969d90d086eb60790efb5563e93416fe546b722"></span>




	<script>(function() {
    function createMap() {
        var map = {};
        var els = document.getElementsByClassName('nocache');
        for (var i = 0; i < els.length; i++) {
            var section = els[i].getAttribute('data-nocache');
            map[section] = els[i];
        }
        return map;
    }

    function replaceElement(el, html) {
        const tmp = document.createElement('div');
        const fragment = document.createDocumentFragment();

        tmp.setHTMLUnsafe(html);

        while (tmp.firstChild) {
            fragment.appendChild(tmp.firstChild);
        }

        el.replaceWith(fragment);
    }

    var map = createMap();

    fetch('/!/nocache', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({
            url: window.location.href.split('#')[0],
            sections: Object.keys(map)
        })
    })
    .then((response) => response.json())
    .then((data) => {
        map = createMap();

        const regions = data.regions;
        for (var key in regions) {
            if (map[key]) replaceElement(map[key], regions[key]);
        }

        document.dispatchEvent(new CustomEvent('statamic:nocache.replaced', { detail: data }));
    });
})();</script></body>
</html>
