<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Neil Hanlon</title><link>https://thepotato.tech/posts/</link><description>Recent content in Posts on Neil Hanlon</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Sat, 01 Aug 2026 20:40:00 -0400</lastBuildDate><atom:link href="https://thepotato.tech/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>I Violated the Geneva Conventions by Implementing Kerberos in TypeScript</title><link>https://thepotato.tech/posts/kerberos-in-typescript/</link><pubDate>Sat, 01 Aug 2026 20:40:00 -0400</pubDate><guid>https://thepotato.tech/posts/kerberos-in-typescript/</guid><description>&lt;p>A couple weeks ago I shipped a &lt;a href="https://thepotato.tech/posts/what-does-fedora-want-from-me-today/">swamp&lt;/a> workflow
that tells me what Fedora wants from me on a given day. Three models fan out
in parallel, pull bugs and builds and package state, and one command writes a
markdown snapshot I can diff against last week&amp;rsquo;s. It&amp;rsquo;s the workflow I wanted,
and it runs every time I have the spoons for it.&lt;/p>
&lt;p>Two of the three models are pure &lt;code>fetch&lt;/code>, and carry no external dependencies. The third isn&amp;rsquo;t.
The FASJSON service speaks &lt;em>only&lt;/em> Kerberos/GSSAPI: every endpoint requires
&lt;code>WWW-Authenticate: Negotiate&lt;/code>, and there&amp;rsquo;s no password or token fallback of any
kind. The standard answer (the one every integration I&amp;rsquo;ve ever seen uses) is to
shell out: &lt;code>kinit&lt;/code>, then &lt;code>curl --negotiate&lt;/code>, and now your model depends on a
subprocess, an ambient credential cache, and whether the machine happens to have
krb5-workstation installed.&lt;/p></description></item><item><title>What Does Fedora Want From Me Today?</title><link>https://thepotato.tech/posts/what-does-fedora-want-from-me-today/</link><pubDate>Tue, 14 Jul 2026 13:54:48 -0400</pubDate><guid>https://thepotato.tech/posts/what-does-fedora-want-from-me-today/</guid><description>&lt;p>I began contributing as a packager with Fedora a few years ago, in concert with
my participation in founding and bootstrapping Rocky Linux from the ground up.
That alone deserves a blog post series I may write some day&amp;hellip; but more to the
point&amp;hellip; I haven&amp;rsquo;t done a great job of maintaining my packages. There&amp;rsquo;s a host
of reasons I could get into for why, but particularly in light of having a
newborn and therefore much more limited time and energy than I ever thought was
possible, optimizing my workflows and maximizing my impact (and reducing
ownership of things where needed) are the most powerful knobs I can use to make
the greatest difference not just in Fedora but across all the things I involve
myself with.&lt;/p></description></item><item><title>I Put My Son in a Swamp</title><link>https://thepotato.tech/posts/i-put-my-son-in-a-swamp/</link><pubDate>Sat, 11 Jul 2026 00:45:00 -0400</pubDate><guid>https://thepotato.tech/posts/i-put-my-son-in-a-swamp/</guid><description>&lt;p>My son is a typed resource now. He has a &lt;code>sync&lt;/code> method that pulls the last seven
days of his life into a versioned snapshot, a stack of reports that summarize how
he slept and ate, and — I did think about this — a delete that&amp;rsquo;s careful to be
idempotent, because deleting the same diaper twice shouldn&amp;rsquo;t be an error.&lt;/p>
&lt;p>I did not set out to put a baby in a swamp. It followed, the way these things do,
from having already put everything else in one.&lt;/p></description></item><item><title>The WiFi Certificate That Didn't Exist an Hour Ago</title><link>https://thepotato.tech/posts/the-wifi-cert-that-didnt-exist-an-hour-ago/</link><pubDate>Fri, 10 Jul 2026 18:30:00 -0400</pubDate><guid>https://thepotato.tech/posts/the-wifi-cert-that-didnt-exist-an-hour-ago/</guid><description>&lt;p>My laptop is on WiFi right now on a certificate that didn&amp;rsquo;t exist an hour ago. I
made the keypair, my own CA signed it, the private key went into my secret store,
and the machine authenticated onto the 802.1X network and pulled a DHCP lease —
all through code I&amp;rsquo;d finished writing about twenty minutes earlier. I want to
talk about the boring part that made it safe, because the boring part is the only
part I&amp;rsquo;d defend.&lt;/p></description></item><item><title>Joining ResolveX as a Technical Advisor: Infrastructure and Crisis Response</title><link>https://thepotato.tech/posts/joining-resolvex-technical-advisor-crisis-response/</link><pubDate>Fri, 08 Aug 2025 10:17:20 -0400</pubDate><guid>https://thepotato.tech/posts/joining-resolvex-technical-advisor-crisis-response/</guid><description>&lt;p>I&amp;rsquo;m excited to share that I&amp;rsquo;ve joined &lt;a href="https://resolvex.com">ResolveX&lt;/a> as a technical advisor. ResolveX
builds software and data solutions for crisis call centers—988 suicide
prevention lines, domestic violence hotlines, and other critical mental health
resources.&lt;/p>
&lt;h2 id="why-this-matters">Why This Matters&lt;/h2>
&lt;p>Mental health crisis response has significant gaps that technology can help address. ResolveX builds tools to make crisis counselors more effective and help researchers understand patterns that could prevent crises.&lt;/p>
&lt;p>They serve 988 operators—resource-constrained nonprofits handling life-or-death situations. The technical requirements are unique: rock-solid reliability, security for sensitive mental health data, and cost-effectiveness for organizations that measure impact in lives saved.&lt;/p></description></item><item><title>Smarthome Soldering Iron with Home Assistant and ESPHome (also: web GUIs for Pinecil)</title><link>https://thepotato.tech/posts/smarthome-soldering-iron-pinecil-homeassistant-esphome/</link><pubDate>Tue, 28 Mar 2023 19:01:25 -0400</pubDate><guid>https://thepotato.tech/posts/smarthome-soldering-iron-pinecil-homeassistant-esphome/</guid><description>&lt;p>About a year ago, &lt;a href="https://hachyderm.io/@wesdottoday">wesdottoday&lt;/a> told me to
buy a Pinecil and, once they came back in stock before the holidays.. I did just
that&amp;hellip; Fast forward a couple months and I&amp;rsquo;ve got a
&lt;a href="https://copr.fedorainfracloud.org/coprs/neil/blisp/">copr&lt;/a> for flashing the
Pinecil&amp;rsquo;s firmware (IronOS), and am spending my weekends playing around with
Bluetooth Low Energy (BLE) and Home Assistant to automatically turn on my fan
when I start tinkering at my desk, lest my lungs die from the fumes.&lt;/p></description></item></channel></rss>