<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://colton.foo</id>
    <title>Colton Padden's Blog</title>
    <updated>2026-10-25T23:03:01.199Z</updated>
    <generator>Nuxt static site generation + Feed for Node.js</generator>
    <author>
        <name>Colton Padden</name>
    </author>
    <link rel="alternate" href="https://colton.foo/"/>
    <link rel="self" href="https://colton.foo/atom.xml"/>
    <subtitle>Colton Padden's Personal Blog</subtitle>
    <logo>https://colton.foo/images/placeholder.png</logo>
    <icon>https://colton.foo/favicon.ico</icon>
    <rights>All rights reserved 2026, Colton Padden</rights>
    <entry>
        <title type="html"><![CDATA[Cosine-similarity for song suggestion on tabs.garden]]></title>
        <id>https://colton.foo/blog/tabs-garden-tab-suggestions/</id>
        <link href="https://colton.foo/blog/tabs-garden-tab-suggestions/"/>
        <updated>2026-06-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A new feature just landed on tabs.garden where a user is suggested similar tabs in the sidebar. This was implemented in a very simple way (spoiler: using JSON files and a rudimentary cosinesimilarity score), but I was very pleased by the result.]]></summary>
        <author>
            <name>Colton Padden</name>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Hiding the Bee Movie transcript with steganography]]></title>
        <id>https://colton.foo/blog/steganography-bee-movie/</id>
        <link href="https://colton.foo/blog/steganography-bee-movie/"/>
        <updated>2026-05-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[You probably didn't realize it, but the static noise visible on the home page of this website is not just noise. It's actually the entire script of the bee movie encoded with a technique called steganography.]]></summary>
        <author>
            <name>Colton Padden</name>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Dagster's AI-powered strategy to scaling documentation]]></title>
        <id>https://allthingsopen.org/articles/scaling-documentation-without-scaling-team-dagster</id>
        <link href="https://allthingsopen.org/articles/scaling-documentation-without-scaling-team-dagster"/>
        <updated>2025-12-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How smart information architecture and AI assistants help a small team answer 16,000 community questions a month.]]></summary>
        <author>
            <name>Colton Padden</name>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Using Codex for education at Dagster Labs]]></title>
        <id>https://developers.openai.com/blog/codex-for-documentation-dagster</id>
        <link href="https://developers.openai.com/blog/codex-for-documentation-dagster"/>
        <updated>2025-10-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How we structure docs so AI tools can reason with them effectively.]]></summary>
        <author>
            <name>Colton Padden</name>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Render three-dimensional models in `NuxtContent` with p5.js]]></title>
        <id>https://colton.foo/blog/nuxt-p5js-3d-models/</id>
        <link href="https://colton.foo/blog/nuxt-p5js-3d-models/"/>
        <updated>2024-12-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Threedimensional models, whether they be of the format .obj or .stl, can be easily rendered in your Nuxt project by using the p5js.org library. Update 2025: the interactive demos on this site now link directly to the standalone p5 experiments. The component API described below still works when embedding the GitHub Pages build of that project.]]></summary>
        <author>
            <name>Colton Padden</name>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Configuring a YubiKey for use with OpenSSH]]></title>
        <id>https://colton.foo/blog/ssh-ed25519-sk-yubikey/</id>
        <link href="https://colton.foo/blog/ssh-ed25519-sk-yubikey/"/>
        <updated>2024-06-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[YubiKey's are a convenient way to introduce a physical form of two factor authentication into ones workflow. They support a variety of protocols, but in this guide we will walk through how to configure a YubiKey for use with OpenSSH via the "new" ed25519sk key type that supports FIDO compliant hardware keys.]]></summary>
        <author>
            <name>Colton Padden</name>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Using pinentry-mac to sign commits from vim-fugitive]]></title>
        <id>https://colton.foo/blog/vim-fugitive-gpg-pinentry/</id>
        <link href="https://colton.foo/blog/vim-fugitive-gpg-pinentry/"/>
        <updated>2024-05-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[In order to sign git commits from within Vim using a plugin like tpope/vimfugitive, it is necessary to configure the gpgagent to use a GUI based pinentryprogram.]]></summary>
        <author>
            <name>Colton Padden</name>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Easily Transcribe Podcasts with Whisper.cpp]]></title>
        <id>https://colton.foo/blog/podcast-transcription-whispercpp/</id>
        <link href="https://colton.foo/blog/podcast-transcription-whispercpp/"/>
        <updated>2024-01-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[If you've ever had the need to transcribe a podcast, lecture, or some other audio recording, it turns out it's surprisingly easy with the extremely impressive whisper.cpp project. This highperformance fork of OpenAI's Whisper can run on all sorts of hardware including my M1 Mac Mini. Let's walk through an example from starttofinish of transcribing an episode of the Alter Everything podcast.]]></summary>
        <author>
            <name>Colton Padden</name>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[How To Add an RSS Feed to a Nuxt Website]]></title>
        <id>https://colton.foo/blog/nuxt-content-rss-feed/</id>
        <link href="https://colton.foo/blog/nuxt-content-rss-feed/"/>
        <link rel="enclosure" href="https://colton.foo/images/nuxt-content-rss-feed.jpg" type="image/jpg"/>
        <updated>2024-01-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[If you are a user of Nuxt Content and you wish to configure an RSS feed for your website, it's a surprisingly straight forward process! In this article, we will walk through the code changes required to host an RSS feed for both a statically generated, and Universal Nuxt application.]]></summary>
        <author>
            <name>Colton Padden</name>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Impressions of Fennel with Hammerspoon]]></title>
        <id>https://colton.foo/blog/fennel-initial-exploration/</id>
        <link href="https://colton.foo/blog/fennel-initial-exploration/"/>
        <link rel="enclosure" href="https://colton.foo/images/dall-e-fennel-hammer.jpeg" type="image/jpeg"/>
        <updated>2023-10-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A while back I read an introductory book on Lisp programming titled, "The Little Schemer". This book opened my mind to new (to me) programming paradigms, and left me with a strong desire to find a way to incorporate Lisp programming into my every day life. It took some time, but I believe I've found what I've been looking for: Fennel.]]></summary>
        <author>
            <name>Colton Padden</name>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Exploring the Digital Ocean `doctl` Utility]]></title>
        <id>https://colton.foo/blog/doctl/</id>
        <link href="https://colton.foo/blog/doctl/"/>
        <updated>2023-01-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I recently had the need to spool up a small ephemeral Linux instance, and wanted to try something new by exploring the Digital Ocean doctl command line utility. This proved to be an extremely easy way to configure, create, connect, and destroy a Linux box, and I foresee myself using this service even more in the future.]]></summary>
        <author>
            <name>Colton Padden</name>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[This Website Has Been Migrated to Nuxt 3 🎉]]></title>
        <id>https://colton.foo/blog/nuxt-v3-migration/</id>
        <link href="https://colton.foo/blog/nuxt-v3-migration/"/>
        <updated>2022-12-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This website has been migrated to the latest version of the Nuxt web framework, and with it comes all of the exciting goodies that the Vue and Nuxt teams have been concocting over the past few years. Not to mention, all of the great plugins in the Vue ecosystem!]]></summary>
        <author>
            <name>Colton Padden</name>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Migrate to TrueNAS Scale from TrueNAS Core]]></title>
        <id>https://colton.foo/blog/migrate-truenas-from-core-to-scale/</id>
        <link href="https://colton.foo/blog/migrate-truenas-from-core-to-scale/"/>
        <updated>2021-12-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[TrueNAS Scale offers a variety of interesting features that are not supported in its TrueNAS Core counterpart. Most notably, because the base operating system is Debian Linux, opposed to FreeBSD, there is native support for Linux containers via Docker, and Kubernetes Pods! This post walks through the steps required to upgrade from TrueNAS Core to TrueNAS Scale.]]></summary>
        <author>
            <name>Colton Padden</name>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Reset IPMI Credentials from the Host OS]]></title>
        <id>https://colton.foo/blog/reset-ipmi-password-from-host-os/</id>
        <link href="https://colton.foo/blog/reset-ipmi-password-from-host-os/"/>
        <updated>2021-12-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[If you ever find yourself locked out of the Intelligent Platform Management Interface (IPMI) of a server, these instructions will guide your through the process of resetting the credentials to their default values from the host operating system.]]></summary>
        <author>
            <name>Colton Padden</name>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Tip: Re-running Bash Commands]]></title>
        <id>https://colton.foo/blog/quick-tip-rerunning-bash-commands/</id>
        <link href="https://colton.foo/blog/quick-tip-rerunning-bash-commands/"/>
        <updated>2021-09-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Do you ever find yourself having to rerun a Bash command? I often find this happening to myself when I neglect to use sudo for a command that requires root privileges.]]></summary>
        <author>
            <name>Colton Padden</name>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Unit Testing in MicroPython with Mocks]]></title>
        <id>https://colton.foo/blog/unit-testing-micropython-with-mocks/</id>
        <link href="https://colton.foo/blog/unit-testing-micropython-with-mocks/"/>
        <updated>2020-02-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Unit testing code for embedded systems can be challenging. While it's possible to leverage emulators, write sideeffect free code, or run tests on the hardware itself, it's often easiest to unit test the code on your personal computer with mocked hardware functionality.]]></summary>
        <author>
            <name>Colton Padden</name>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Create a Persistent Arch Linux Bootable USB with Vagrant]]></title>
        <id>https://colton.foo/blog/persistent-archlinux-usb/</id>
        <link href="https://colton.foo/blog/persistent-archlinux-usb/"/>
        <updated>2020-01-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[When installing a linux distribution, it is common for the instructions to have the user create a bootable USB, boot from the device, and proceed with the installation procedure from that live medium. However, this blog post will outline an alternative approach where a virtual machine created with Vagrant will be used in favor of the live medium.]]></summary>
        <author>
            <name>Colton Padden</name>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Docker Volume Permissions with SELinux]]></title>
        <id>https://colton.foo/blog/docker-selinux-volumes/</id>
        <link href="https://colton.foo/blog/docker-selinux-volumes/"/>
        <updated>2019-12-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Unfamiliar with running Docker on a SELinux enabled system, I found myself running into a bunch of file permission errors while creating volumes.]]></summary>
        <author>
            <name>Colton Padden</name>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Upgrading the Firmware on the PCEngines APU2]]></title>
        <id>https://colton.foo/blog/apu2-firmware-upgrade/</id>
        <link href="https://colton.foo/blog/apu2-firmware-upgrade/"/>
        <updated>2019-12-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I've had a PCEngines APU2 gathering dust for a few years, and have recently decided to dust it off. Since the last time the device has been powered on, there have been many great improvements to the firmware, and it was verymuch due for an upgrade. The following steps outline how the firmware was upgraded on the APU from the alreadyinstalled operating system CentOS.]]></summary>
        <author>
            <name>Colton Padden</name>
        </author>
    </entry>
</feed>