<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Juniperspring</title>
    <link>https://juniperspring.org/</link>
    <description>Recent content on Juniperspring</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 13 Jun 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://juniperspring.org/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Honda Civics and the Evil Valet</title>
      <link>https://juniperspring.org/posts/honda-evil-valet/</link>
      <pubDate>Sat, 13 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://juniperspring.org/posts/honda-evil-valet/</guid>
      <description>Status update, three years later</description>
    </item>
    <item>
      <title>Google Calendar, CalDAV, and Home Assistant</title>
      <link>https://juniperspring.org/posts/calendar-setup/</link>
      <pubDate>Thu, 16 May 2024 00:00:00 +0000</pubDate>
      <guid>https://juniperspring.org/posts/calendar-setup/</guid>
      <description>My calendar setup.</description>
    </item>
    <item>
      <title>Introducing juniperspring.org</title>
      <link>https://juniperspring.org/posts/xyz-domains/</link>
      <pubDate>Tue, 02 Apr 2024 00:00:00 +0000</pubDate>
      <guid>https://juniperspring.org/posts/xyz-domains/</guid>
      <description>Moving away from .xyz domains and why I still like them</description>
    </item>
    <item>
      <title>React, Formik, and Events</title>
      <link>https://juniperspring.org/posts/formik-events/</link>
      <pubDate>Sat, 30 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://juniperspring.org/posts/formik-events/</guid>
      <description>Musings on Formik&amp;#39;s API, custom events in React, and why I might leave Formik</description>
    </item>
    <item>
      <title>SSH Fingerprints, Identicons, and AI Face Generation</title>
      <link>https://juniperspring.org/posts/thoughts-on-identicons/</link>
      <pubDate>Sat, 23 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://juniperspring.org/posts/thoughts-on-identicons/</guid>
      <description>&lt;p&gt;While playing around with SSH and Git, I reflected on how SSH&amp;rsquo;s key fingerprints are essentially an early form of identicon:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;The key fingerprint is:
SHA256:xtaA8biLm/Jktn9A/j2sty686uosrRtz0GQIFw6nP2s root@bionic
The key&amp;#39;s randomart image is:
+---[RSA 4096]----+
|o +.  .          |
| B .   =         |
|. o o o o        |
| . +  .o o       |
|  + .o. S .      |
|   + .o+         |
|  E.* .+ o       |
| .oO.+  = =      |
|  oBO++oo*oo     |
+----[SHA256]-----+
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This made me want to write a blog post about how, now that we have GPU-accelerated terminal emulators&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;
and a wide variety of identicon libraries&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;, it would be cool to modularize the SSH key fingerprint generation algorithm.
Imagine defining an executable inside your &lt;code&gt;.ssh/config&lt;/code&gt; file in addition to an existing &lt;code&gt;VisualHostKey=yes&lt;/code&gt; option that,
when invoked, would take a public key on stdin and produce an image file on stdout to be displayed directly in your terminal
emulator.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Cleveland Air Show Sucks</title>
      <link>https://juniperspring.org/posts/cleveland-air-show/</link>
      <pubDate>Sun, 03 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://juniperspring.org/posts/cleveland-air-show/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Don Quixote charging at a windmill&#34; loading=&#34;lazy&#34; src=&#34;https://juniperspring.org/posts/cleveland-air-show/quixote.webp&#34; title=&#34;Don Quixote charging at a windmill&#34;&gt;&lt;/p&gt;
&lt;p&gt;The Cleveland Air Show&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; sucks.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fighter jets kill people; they&amp;rsquo;re not entertainment&lt;/li&gt;
&lt;li&gt;The Cleveland Air Show causes noise pollution&lt;/li&gt;
&lt;li&gt;The Cleveland Air Show causes air pollution&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Labor Day weekend should be a celebration of the labor movement and workers rights, not a jingoistic endorsement of the military-industrial complex.&lt;/strong&gt; Why should people across Greater Cleveland put up with the sound of fighter jets buzzing their homes and workplaces?
It&amp;rsquo;s not just on Labor Day itself, either. The exercises start several days in advance.
And the organizers have the audacity to charge admittance!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exploring DNSSEC</title>
      <link>https://juniperspring.org/posts/dnssec/</link>
      <pubDate>Wed, 07 Jun 2023 00:00:00 +0000</pubDate>
      <guid>https://juniperspring.org/posts/dnssec/</guid>
      <description>A look into the DNS records behind juniperspring.xyz</description>
    </item>
    <item>
      <title>Using the Ethereum Name Service</title>
      <link>https://juniperspring.org/posts/ethereum-name-service/</link>
      <pubDate>Wed, 07 Jun 2023 00:00:00 +0000</pubDate>
      <guid>https://juniperspring.org/posts/ethereum-name-service/</guid>
      <description>Support my work</description>
    </item>
    <item>
      <title>Honda Civic Reverse Engineering</title>
      <link>https://juniperspring.org/posts/honda-reverse-engineering/</link>
      <pubDate>Wed, 31 May 2023 00:00:00 +0000</pubDate>
      <guid>https://juniperspring.org/posts/honda-reverse-engineering/</guid>
      <description>Reverse engineering a 2021 Honda Civic and thoughts on the state of automotive security.</description>
    </item>
    <item>
      <title>Goodbye Gatsby, Hello Hugo</title>
      <link>https://juniperspring.org/posts/using-hugo/</link>
      <pubDate>Tue, 30 May 2023 00:00:00 +0000</pubDate>
      <guid>https://juniperspring.org/posts/using-hugo/</guid>
      <description>Migrating the blog from Gatsby to Hugo</description>
    </item>
    <item>
      <title>Rhodes Tower, Four Dead in Ohio</title>
      <link>https://juniperspring.org/posts/rhodes-tower/</link>
      <pubDate>Mon, 23 Jan 2023 00:00:00 +0000</pubDate>
      <guid>https://juniperspring.org/posts/rhodes-tower/</guid>
      <description>CSU&amp;#39;s etymological connection to the Kent State massacre.</description>
    </item>
    <item>
      <title>Bi-Directional Authentication with TOTP</title>
      <link>https://juniperspring.org/posts/bidirectional-totp/</link>
      <pubDate>Sat, 21 Jan 2023 00:00:00 +0000</pubDate>
      <guid>https://juniperspring.org/posts/bidirectional-totp/</guid>
      <description>Authentication is a two-way street.</description>
    </item>
    <item>
      <title>Digital Organization</title>
      <link>https://juniperspring.org/posts/digital-organization/</link>
      <pubDate>Tue, 01 Nov 2022 00:00:00 +0000</pubDate>
      <guid>https://juniperspring.org/posts/digital-organization/</guid>
      <description>Thoughts on digital minimalism, Linux, and organization.</description>
    </item>
    <item>
      <title>Locked out of Keybase</title>
      <link>https://juniperspring.org/posts/locked-out-of-keybase/</link>
      <pubDate>Thu, 27 Oct 2022 00:00:00 +0000</pubDate>
      <guid>https://juniperspring.org/posts/locked-out-of-keybase/</guid>
      <description>How I locked myself out</description>
    </item>
    <item>
      <title>SSH Comment Injection in OpenWRT</title>
      <link>https://juniperspring.org/posts/ssh-comment-injection/</link>
      <pubDate>Tue, 20 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://juniperspring.org/posts/ssh-comment-injection/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;WRT3200ACM router motherboard&#34; loading=&#34;lazy&#34; src=&#34;https://juniperspring.org/posts/ssh-comment-injection/linksys_wrt3200acm_board_top_complete.jpg&#34; title=&#34;WRT3200ACM router motherboard&#34;&gt;&lt;/p&gt;
&lt;p&gt;OpenWRT is open source router and Wi-Fi access point software. LuCI is the web-based configuration interface for OpenWRT; one of its features is the ability to import SSH keys. Instead of OpenSSH, OpenWRT uses Dropbear, an SSH server implementation optimized for embedded systems&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;OpenSSH 8.2, released Feb. 14th, 2020, added support for new FIDO public key types, such as &amp;ldquo;ecdsa-sk&amp;rdquo; and &amp;ldquo;ed25519-sk&amp;rdquo;&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;. I wanted to see if Dropbear supported these new key types. It was during this time that I discovered a persistent XSS vector in LuCI.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Love Letter to Open Source Ecology</title>
      <link>https://juniperspring.org/posts/love-letter-to-ose/</link>
      <pubDate>Tue, 24 May 2022 00:00:00 +0000</pubDate>
      <guid>https://juniperspring.org/posts/love-letter-to-ose/</guid>
      <description>Exploring the world of open source and distributive enterprise.</description>
    </item>
  </channel>
</rss>
