<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>rpaisley.com</title><link>https://rpaisley.com/</link><description>Recent content on rpaisley.com</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 06 Jan 2026 20:37:23 -0500</lastBuildDate><atom:link href="https://rpaisley.com/index.xml" rel="self" type="application/rss+xml"/><item><title>ZFS Snapshotting With Incremental Send/Receive</title><link>https://rpaisley.com/posts/2025/11/zfs/</link><pubDate>Mon, 17 Nov 2025 14:34:23 +0000</pubDate><guid>https://rpaisley.com/posts/2025/11/zfs/</guid><description>&lt;h1 id="zfs-snapshotting-with-incremental-sendrecieve">ZFS Snapshotting With Incremental Send/Recieve&lt;/h1>
&lt;p>This serves as a note to myself on the process of creating a ZFS snapshot
and sending the incremental from the last snapshot it to my backup
server. It maybe useful for others by substituting &lt;code>d=cachecove/zwift&lt;/code>
with your ZFS pool / dataset name.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>ds&lt;span style="color:#f92672">=&lt;/span>cachecove/zwift
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>set -x
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>from&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span>&lt;span style="color:#66d9ef">$(&lt;/span>ssh gore zfs list -H -t snapshot -o name -s creation &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$ds&lt;span style="color:#e6db74">&amp;#34;&lt;/span> | tail -n 1&lt;span style="color:#66d9ef">)&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>d&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span>&lt;span style="color:#66d9ef">$(&lt;/span>date -Imin&lt;span style="color:#66d9ef">)&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zfs snapshot &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$ds&lt;span style="color:#e6db74">@&lt;/span>$d&lt;span style="color:#e6db74">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>printf &lt;span style="color:#e6db74">&amp;#34;Sending from %s to %s\n&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$from&lt;span style="color:#e6db74">&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$ds&lt;span style="color:#e6db74">@&lt;/span>$d&lt;span style="color:#e6db74">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zfs send -i &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$from&lt;span style="color:#e6db74">&amp;#34;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$ds&lt;span style="color:#e6db74">@&lt;/span>$d&lt;span style="color:#e6db74">&amp;#34;&lt;/span> | ssh gore zfs receive &lt;span style="color:#e6db74">&amp;#34;&lt;/span>$ds&lt;span style="color:#e6db74">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Sticky Watts</title><link>https://rpaisley.com/posts/2025/11/sticky-watts/</link><pubDate>Tue, 11 Nov 2025 02:07:27 +0000</pubDate><guid>https://rpaisley.com/posts/2025/11/sticky-watts/</guid><description>&lt;h1 id="sticky-watts">Sticky Watts&lt;/h1>
&lt;p>On Friday November, 7th, 2025 Fury Rhinos raced in a club ladder 5v5
race against SISU Kohota. I&amp;rsquo;m a member of Fury Rhinos, this was my third
race. I finished 7th place and should have earned 4 points for our team
but I was disqualified for &amp;ldquo;Sticky Watts.&amp;rdquo;&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://ladder.cycleracing.club/rider/result/11394">Ladder Result&lt;/a> (Login Required)&lt;/li>
&lt;/ul>
&lt;p>Below you&amp;rsquo;ll find a description of sticky watts followed by my defense. I
did not cheat and it annoys me to have a disqualification on my record
that implies such.&lt;/p></description></item><item><title>Zwift Checklist</title><link>https://rpaisley.com/posts/2025/11/zwift-checklist/</link><pubDate>Mon, 03 Nov 2025 20:12:01 +0000</pubDate><guid>https://rpaisley.com/posts/2025/11/zwift-checklist/</guid><description>&lt;h1 id="zwift-checklist">Zwift Checklist&lt;/h1>
&lt;p>General list of things I&amp;rsquo;m likely to forget to do and regret it mid-ride
or mid-race.&lt;/p>
&lt;p>My fan switch is next to the trainer, or it would be on the checklist
as well.&lt;/p>
&lt;h2 id="pre-ride">Pre-Ride&lt;/h2>
&lt;ul>
&lt;li>Kit / Socks&lt;/li>
&lt;li>Heart Rate Strap&lt;/li>
&lt;li>Water Bottle(s)&lt;/li>
&lt;li>Food / Gels / Snacks&lt;/li>
&lt;li>Towel&lt;/li>
&lt;li>Sweatbands (head/wrist)&lt;/li>
&lt;li>Ensure Heat is off&lt;/li>
&lt;li>Lube the chain?&lt;/li>
&lt;li>Turn on Trainer&lt;/li>
&lt;li>If recording, start&lt;/li>
&lt;/ul>
&lt;h2 id="5-10-minute-warning">5-10 Minute Warning&lt;/h2>
&lt;ul>
&lt;li>Join Discord as necessary&lt;/li>
&lt;li>Swap Bike / Wheels / Jersey / Update Name&lt;/li>
&lt;li>Join Event&lt;/li>
&lt;li>Restroom&lt;/li>
&lt;li>Ice pack in jersey pocket if high intensity&lt;/li>
&lt;li>Eat a gel&lt;/li>
&lt;/ul>
&lt;h2 id="post-ride">Post Ride&lt;/h2>
&lt;ul>
&lt;li>Stop recording&lt;/li>
&lt;li>Trim Video&lt;/li>
&lt;li>Upload&lt;/li>
&lt;li>Turn off Fans / Trainer&lt;/li>
&lt;/ul></description></item><item><title>Zwift ZRL</title><link>https://rpaisley.com/posts/2025/09/zwift-zrl/</link><pubDate>Tue, 30 Sep 2025 01:06:59 +0000</pubDate><guid>https://rpaisley.com/posts/2025/09/zwift-zrl/</guid><description>&lt;h1 id="zwift-racing-league">Zwift Racing League&lt;/h1>
&lt;p>For the first time I recorded my Zwift Racing League race in the hopes
to get feedback and get better at it.&lt;/p>
&lt;p>&lt;a href="https://youtu.be/awDSfnwL6OA">ZRL Round 1 Stage 2 on Fine and Sandy Olive Division 1 (C) Fiery Rhinos&lt;/a>&lt;/p>
&lt;p>I&amp;rsquo;ll share some of the feedback I get from that race here eventually.&lt;/p></description></item><item><title>ffmpeg</title><link>https://rpaisley.com/posts/2025/09/ffmpeg/</link><pubDate>Tue, 30 Sep 2025 00:53:41 +0000</pubDate><guid>https://rpaisley.com/posts/2025/09/ffmpeg/</guid><description>&lt;h1 id="ffmpeg-commonly-used-commands">ffmpeg Commonly Used Commands&lt;/h1>
&lt;h2 id="trimming-files-without-re-encoding">Trimming Files Without Re-encoding&lt;/h2>
&lt;p>The following steps is how I trim recorded Zwift rides and/or races. I
aim to eliminate the setup at the beginning and the teardown at
the end without having to re-encode the video as that&amp;rsquo;s an expensive
process. Using the nearest key frame allows skipping the re-encode and
I do it in two separate steps to avoid math caused by the initial seek
changing the end time of the video.&lt;/p></description></item><item><title>OpenBSD Update Procedure</title><link>https://rpaisley.com/posts/2025/06/whistler/</link><pubDate>Fri, 20 Jun 2025 12:40:54 +0000</pubDate><guid>https://rpaisley.com/posts/2025/06/whistler/</guid><description>&lt;h1 id="openbsd-update-procedure">OpenBSD Update Procedure&lt;/h1>
&lt;p>This is a brief overview of how I upgrade to the latest OpenBSD
release. Mostly for my own documentation purposes.&lt;/p>
&lt;h2 id="prepare">Prepare&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>Backup existing configuration files to avoid things like &lt;code>sshd&lt;/code> host key changes&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>tar -czf /home/whistler-20250620.tar.gz /etc /home/rpaisley /root /var
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Make a note of which ethernet interfaces map to which devices&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-console" data-lang="console">&lt;span style="display:flex;">&lt;span>$ ifconfig -a
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>re0: flags=808843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,AUTOCONF4&amp;gt; mtu 1500
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> lladdr 88:c9:b3:bf:0d:16
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> index 1 priority 0 llprio 3
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> groups: outside egress
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> media: Ethernet autoselect (1000baseT full-duplex,rxpause,txpause)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> status: active
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> inet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>re1: flags=8843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&amp;gt; mtu 1500
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> lladdr 88:c9:b3:bf:0d:17
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> index 2 priority 0 llprio 3
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> media: Ethernet autoselect (1000baseT full-duplex,rxpause,txpause)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> status: active
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> inet 10.1.1.254 netmask 0xffffff00 broadcast 10.1.1.255
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>re2: flags=8843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&amp;gt; mtu 1500
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> lladdr 88:c9:b3:bf:0d:18
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> index 3 priority 0 llprio 3
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> media: Ethernet autoselect (1000baseT full-duplex)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> status: active
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> inet 10.1.3.254 netmask 0xffffff00 broadcast 10.1.3.255
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>re3: flags=8843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&amp;gt; mtu 1500
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> lladdr 88:c9:b3:bf:0d:19
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> index 4 priority 0 llprio 3
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> media: Ethernet autoselect (1000baseT full-duplex)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> status: active
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> inet 10.1.2.254 netmask 0xffffff00 broadcast 10.1.2.255
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>re4: flags=808843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,AUTOCONF4&amp;gt; mtu 1500
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> lladdr 00:e0:4c:68:14:f7
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> index 5 priority 0 llprio 3
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> groups: outside
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> media: Ethernet autoselect (1000baseT full-duplex)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> status: active
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> inet 67.241.21.20 netmask 0xfffffc00 broadcast 67.241.23.255
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>re5: flags=808843&amp;lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,AUTOCONF4&amp;gt; mtu 1500
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> lladdr 00:e0:4c:68:14:f8
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> index 6 priority 0 llprio 3
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> media: Ethernet autoselect (none)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> status: no carrier
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Save list of installed packages&lt;/p></description></item><item><title>Prometheus</title><link>https://rpaisley.com/posts/2025/06/prometheus/</link><pubDate>Tue, 17 Jun 2025 22:44:47 +0000</pubDate><guid>https://rpaisley.com/posts/2025/06/prometheus/</guid><description>&lt;h1 id="prometheus">Prometheus&lt;/h1>
&lt;p>After following &lt;a href="https://idroot.us/install-prometheus-fedora-41/"> FedoraRHEL Based How To Install Prometheus on Fedora
41 &lt;/a> I needed to do the
following as my Fedora installation&amp;rsquo;s SELinux policy denied the service
exec permission:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>sudo restorecon -R /usr/local/bin
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The SELinux context should be:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span>unconfined_u:object_r:bin_t:s0
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Flex Switch Adoption</title><link>https://rpaisley.com/posts/2025/05/flex-switch-adoption/</link><pubDate>Fri, 23 May 2025 20:50:00 +0000</pubDate><guid>https://rpaisley.com/posts/2025/05/flex-switch-adoption/</guid><description>&lt;h1 id="usw-flex-46w">USW-Flex (46W)&lt;/h1>
&lt;p>In order to adopt the USW-Flex from outside the layer two segement the
Unifi network controller exists on, the switch must be able to resolve
&lt;code>unifi&lt;/code> and connect to port &lt;code>8080&lt;/code> via TCP to the IP address &lt;code>unifi&lt;/code>
resolves to.&lt;/p>
&lt;p>In my environment this required giving the switch a gateway and a DNS
server which I generally do not provide to my camera network.&lt;/p></description></item><item><title>Attic Cameras</title><link>https://rpaisley.com/posts/2025/05/attic-cameras/</link><pubDate>Sun, 18 May 2025 15:08:09 +0000</pubDate><guid>https://rpaisley.com/posts/2025/05/attic-cameras/</guid><description>&lt;h1 id="camera-power-draw-table-for-future-reference">Camera Power Draw Table for Future Reference&lt;/h1>
&lt;ul>
&lt;li>Power is Maximum Power Draw in Watts (W)&lt;/li>
&lt;li>Viewing Angles are listed after lens correction in degrees&lt;/li>
&lt;/ul>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Camera&lt;/th>
 &lt;th style="text-align: right">Count&lt;/th>
 &lt;th style="text-align: right">Power&lt;/th>
 &lt;th style="text-align: right">Horizontal&lt;/th>
 &lt;th style="text-align: right">Vertical&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>UVC-G3-Bullet&lt;/td>
 &lt;td style="text-align: right">1&lt;/td>
 &lt;td style="text-align: right">4&lt;/td>
 &lt;td style="text-align: right">72&lt;/td>
 &lt;td style="text-align: right">42.9&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>UVC-G3-Dome&lt;/td>
 &lt;td style="text-align: right">1&lt;/td>
 &lt;td style="text-align: right">4&lt;/td>
 &lt;td style="text-align: right">87.8&lt;/td>
 &lt;td style="text-align: right">55.4&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>UVC-G3-Flex&lt;/td>
 &lt;td style="text-align: right">2&lt;/td>
 &lt;td style="text-align: right">4&lt;/td>
 &lt;td style="text-align: right">80&lt;/td>
 &lt;td style="text-align: right">46&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>UVC-G4-Bullet&lt;/td>
 &lt;td style="text-align: right">1&lt;/td>
 &lt;td style="text-align: right">4&lt;/td>
 &lt;td style="text-align: right">86&lt;/td>
 &lt;td style="text-align: right">60&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>UVC-G6-Bullet&lt;/td>
 &lt;td style="text-align: right">2&lt;/td>
 &lt;td style="text-align: right">9.9&lt;/td>
 &lt;td style="text-align: right">109.9&lt;/td>
 &lt;td style="text-align: right">56.7&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>UVC-G6-Turret&lt;/td>
 &lt;td style="text-align: right">2&lt;/td>
 &lt;td style="text-align: right">12.5&lt;/td>
 &lt;td style="text-align: right">109.9&lt;/td>
 &lt;td style="text-align: right">56.7&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table></description></item><item><title>Firewall</title><link>https://rpaisley.com/posts/2024/12/firewall/</link><pubDate>Mon, 16 Dec 2024 21:42:58 +0000</pubDate><guid>https://rpaisley.com/posts/2024/12/firewall/</guid><description>&lt;h2 id="openbsd-76-installation-process">OpenBSD 7.6 Installation Process&lt;/h2>
&lt;ol>
&lt;li>Download the &lt;code>install7.6.iso&lt;/code> file linked from the &lt;a href="https://www.openbsd.org/faq/faq4.html#Download">download&lt;/a> section of the &lt;a href="https://www.openbsd.org">OpenBSD&lt;/a> website&lt;/li>
&lt;li>Place ISO into ISO partition of a &lt;a href="https://www.ventoy.net/en/index.html">Ventoy&lt;/a> USB stick&lt;/li>
&lt;li>Boot from the USB stick and begin the installation process&lt;/li>
&lt;/ol>
&lt;h3 id="installer-questions--answers">Installer Questions / Answers&lt;/h3>
&lt;p>The following is how I configure a nearly minimal firewall suitable for
home use. It assumes the internal LAN IP address is &lt;code>10.67.33.254/24&lt;/code>
with &lt;code>re0&lt;/code> being the interface with external connectivity and &lt;code>re1&lt;/code>
being the internal LAN.&lt;/p></description></item><item><title>Clonezilla</title><link>https://rpaisley.com/posts/2024/10/clonezilla/</link><pubDate>Tue, 22 Oct 2024 00:58:34 +0000</pubDate><guid>https://rpaisley.com/posts/2024/10/clonezilla/</guid><description>&lt;h2 id="tips">Tips&lt;/h2>
&lt;p>When cloning filesystems, &lt;code>clonezilla&lt;/code> is good at only storing the
occupied blocks of each partition&amp;rsquo;s filesystem. If you &lt;em>might&lt;/em> ever need
to restore to a smaller disk, spend the up front time to:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Boot to a Live Disk.&lt;/p>
&lt;p>In my case an Ubuntu 22.04 LTS netboot was used. The tools were
already installed and netbooting was already present.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Figure out how much space is actually in use:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>df -h
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Resize the filesystem close to that number (not so close that the
machine is unusable from no free space)&lt;/p></description></item><item><title>IPv6</title><link>https://rpaisley.com/posts/2024/10/ipv6/</link><pubDate>Wed, 09 Oct 2024 20:41:24 +0000</pubDate><guid>https://rpaisley.com/posts/2024/10/ipv6/</guid><description>&lt;h1 id="starlink-debugging">Starlink Debugging&lt;/h1>
&lt;p>Today at work was one of those days where the day was spent trying
to ascertain why an &lt;a href="https://en.wikipedia.org/wiki/IPsec">IPsec&lt;/a>
tunnel wouldn&amp;rsquo;t work between two TP-Link Omada VPN routers. They
worked when directly connected to one another but not across the
&lt;a href="https://www.starlink.com/">Starlink&lt;/a>s. The only differences
in their configurations was a dynamic DNS IP address provided by
&lt;a href="https://www.noip.com/">no-ip&lt;/a> for Starlink and hard coded IP addresses
for the direct connections.&lt;/p>
&lt;p>After far too long than I&amp;rsquo;d like to admit, I noticed via the Starlink
dashboard that one of the terminals had two IP addresses listed: The
IPv4 address that no-ip was returning, and an IPv6 address. Once the
terminal with multiple IP addresses was rebooted, everything worked
perfectly again. The theory is that the one terminal was configured via
a small wireless router so we could align the starlink terminals with
the Starlink app got either the IPv6 or both the IPv4 and IPv6 addresses
and it stuck with it while it was powered on.&lt;/p></description></item><item><title>About</title><link>https://rpaisley.com/about/</link><pubDate>Mon, 30 Sep 2024 19:50:00 +0000</pubDate><guid>https://rpaisley.com/about/</guid><description>&lt;p>Rob Paisley&amp;rsquo;s the author of this site. I&amp;rsquo;m currently employed as a
Software Engineer at &lt;a href="https://northpointdefense.com/">North Point Defense&lt;/a>&lt;/p>
&lt;p>Links to various sites where I&amp;rsquo;m active:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/paisleyrob">GitHub&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://gitlab.com/paisleyrob">GitLab&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://stackoverflow.com/users/118691/rob-paisley">Stack Overflow&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.strava.com/athletes/2216187">Strava&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://superuser.com/users/273796/rob-paisley">Super User&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.zwift.com/athlete/426ed777-d354-432b-a046-c6adb9e1b735">Zwift&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The source code for this site is available on
&lt;a href="https://gitlab.com/paisleyrob/rpaisley.com">GitLab&lt;/a>.&lt;/p></description></item><item><title>This Site's Hugo Setup</title><link>https://rpaisley.com/posts/2024/09/hugo-setup/</link><pubDate>Mon, 30 Sep 2024 18:17:55 +0000</pubDate><guid>https://rpaisley.com/posts/2024/09/hugo-setup/</guid><description>&lt;h1 id="this-sites-hugo-setup">This Site&amp;rsquo;s Hugo Setup&lt;/h1>
&lt;p>The initial configuration with
&lt;a href="https://1bl4z3r.github.io/hermit-V2/en/">hermit-v2&lt;/a> is
straightforward. My goal was a simple site without a JavaScript
requirement which this achieves. Be sure to use the suggested
&lt;code>hugo.toml.example&lt;/code> or you&amp;rsquo;ll run into the following error message:&lt;/p>
&lt;pre tabindex="0">&lt;code>Error: error building site: render: failed to render pages: render of &amp;#34;section&amp;#34; failed: &amp;#34;/w/themes/hermit-v2/layouts/_default/list.html:39:50&amp;#34;: execute of template failed: template: _default/list.html:39:50: executing &amp;#34;main&amp;#34; at &amp;lt;.Site.Params.dateformShort&amp;gt;: invalid value; expected string
&lt;/code>&lt;/pre>&lt;h2 id="fixing-i18n-issues">Fixing i18n Issues&lt;/h2>
&lt;p>The &lt;a href="https://1bl4z3r.github.io/hermit-V2/en/">hermit-v2&lt;/a> theme uses
English as it&amp;rsquo;s default rendering if &lt;code>i18n&lt;/code> isn&amp;rsquo;t setup properly.&lt;/p></description></item></channel></rss>