<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>TCFJR</title>
    <link>/</link>
    <description>TCFJR</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    

    
    <lastBuildDate>Sun, 08 Mar 2026 15:44:03 +0000</lastBuildDate>
    
    <atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>About</title>
      <link>/about/</link>
      <pubDate>Sat, 02 Nov 2024 00:00:00 +0000</pubDate>
      
      <guid>/about/</guid>
      <description>

&lt;script src=&#34;https://kit.fontawesome.com/73dada724c.js&#34; crossorigin=&#34;anonymous&#34;&gt;&lt;/script&gt;


&lt;p&gt;A site of my random ramblings.  I&amp;rsquo;m a retired 45-year veteran of the
engineering software trenches, with stints at the Jet Propulsion Lab,
a small appraisal research firm, and 35 years with MSC Software, one of the
leading providers of computer-aided engineering tools.&lt;/p&gt;
&lt;p&gt;I bought a new 2005 Yamaha FJR1300A motorcycle in August, 2004, and used the handle
tcfjr on the FJR1300 forum. (I lived in a town called Temple City at the time, and one
of the top contributors to the forum used a handle with his city followed by &amp;lsquo;fjr&amp;rsquo; so
I wanted to emulate it.) I still have that bike - 20+ years later and now with 140,000+ miles,
and it&amp;rsquo;s still running strong.&lt;/p&gt;
&lt;p&gt;








&lt;i class=&#34;fa-brands fa-bluesky&#34; title=&#34;&#34; style=&#34;color: #4277FC&#34;&gt;&lt;/i&gt;


Find me on &lt;a href=&#34;https://bsky.app/profile/tcfjr.ie&#34; title=&#34;Bluesky link&#34;&gt;Bluesky&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;








&lt;i class=&#34;fa-brands fa-mastodon&#34; title=&#34;&#34; style=&#34;color: #5a48dd&#34;&gt;&lt;/i&gt;


Find me on &lt;a href=&#34;https://tilde.zone/@tcfjr&#34; title=&#34;Mastodon link&#34;&gt;Mastodon&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Laptop Keymapping</title>
      <link>/posts/laptop-keymapping/</link>
      <pubDate>Sun, 08 Mar 2026 15:44:03 +0000</pubDate>
      
      <guid>/posts/laptop-keymapping/</guid>
      <description>&lt;p&gt;I recently transitioned from an Asus X515 laptop to an Asus TUF F16 laptop, and overall
the process has been better than I expected.  You&amp;rsquo;ll always have the usual hiccups -
installing the necessary apps and tools, configuring everything - but there haven&amp;rsquo;t
been any big issues so far.&lt;/p&gt;
&lt;p&gt;One minor thing that became a little bit of a bother was the placement of the DEL
key on the TUF.  The X515 has it in the &amp;lsquo;usual&amp;rsquo; place on the top row just
to the right of the F keys.  The TUF moves it to the top row above the NUM PAD.&lt;/p&gt;
&lt;p&gt;After one too many times hitting the wrong key, I decided to take matters into my
own hands.  I installed AutoHotKey on the TUF, and put in a mapping so that F12 is
now the DEL key.  For now, the DEL key continues to be the DEL key.  Frankly, I
can&amp;rsquo;t remember the last time I needed to press the F12 key, but if it ever comes
up I&amp;rsquo;ll add a second AHK mapping so that the DEL key acts as the F12 key, and
vice versa.&lt;/p&gt;
&lt;p&gt;The joys of modern technology.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Bluesky</title>
      <link>/posts/bluesky/</link>
      <pubDate>Mon, 02 Mar 2026 11:29:32 +0000</pubDate>
      
      <guid>/posts/bluesky/</guid>
      <description>&lt;p&gt;Here&amp;rsquo;s a few notes about my on-going journey with social networks.&lt;/p&gt;
&lt;p&gt;The benefits of social media serives never outweighed the costs for
me, so I&amp;rsquo;ve never had a Insta, Snap, or whatever the site-of-the-day
is.  I signed up for a Facebook account back in the early, early days,
but within a few days I knew it just a harvesting tool and deleted my
account.
&lt;img src=&#34;https://tcfjr.com/images/bluesky-logo.png&#34; alt=&#34;Bluesky&#34;&gt;&lt;/p&gt;
&lt;p&gt;I also never had an account on Twitter, even before the takeover and
name change.  I&amp;rsquo;d occassionally get sent to a Twitter post after
a generic search, but never saw the value of having an account.
It drove home that old saying: &amp;ldquo;If a corporation provides a free
service, you are the product&amp;rdquo;.  And the shift to X was a crap-show
from the beginning, and only gets worse day-to-day.&lt;/p&gt;
&lt;p&gt;When Mastodon became a thing, I signed up to see if it was going
to be useful.  I popped in and out over a few months, but never
became what you&amp;rsquo;d call &amp;ldquo;active&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;When Bluesky followed, I signed up there too.  The user base seemed
more to my liking, so I&amp;rsquo;ve stuck around since.  Again, rare posts,
occassional comments, but mostly just lurking a few times a week
to see what&amp;rsquo;s what.&lt;/p&gt;
&lt;p&gt;When Bluesky was updated to allow domain-based user names for
authentication, I moved my bsky.app account over to my primary
personal domain, and have been using that for a while now.&lt;/p&gt;
&lt;p&gt;With the recent turmoil in the U.S. there&amp;rsquo;s been increased interest
in setting up an AT server outside the U.S.&amp;rsquo;s control.  Since I&amp;rsquo;m
now based in Ireland, I registered my interest in Eurosky, an EU-based
AT/Bluesky server that was in in alpha at the time.&lt;/p&gt;
&lt;p&gt;Last week, I got an email saying they were almost ready and wanted
confirmation of my interest, which I sent in right way.  Yesterday,
I got the formal invite code, and registered for a new Bsky account
on their service.&lt;/p&gt;
&lt;p&gt;As with the main Bluesky server, you can also choose a domain-based
user name on Eurosky.  I have a couple of EU-based domains - on .ie
and one .eu - so I registered my .ie domain as my new Eurosky user
name.  The process of setting up domain authentication is straightforward,
and notably secure.&lt;/p&gt;
&lt;p&gt;Domain authenticated usernames give your account the non-bot
legitimacy that other humans like to see.&lt;/p&gt;
&lt;p&gt;I added Bluesky to my pinned tab group on Helium, and plan to visit
most days.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Hugo tweak</title>
      <link>/posts/hugo_tweak/</link>
      <pubDate>Mon, 23 Feb 2026 10:10:58 +0000</pubDate>
      
      <guid>/posts/hugo_tweak/</guid>
      <description>&lt;p&gt;Here&amp;rsquo;s a tweak I made to my Hugo workflow to default the draft
setting to false, instead of the default of true.&lt;/p&gt;
&lt;p&gt;I use a small bash script (&lt;code&gt;hpost.sh&lt;/code&gt;) to create new Hugo posts for each of
the three blogs I&amp;rsquo;m currently using.  The script handles the
command line argument that selects the blog, with the default
being the primary.  It does some validation checks, then runs
&lt;code&gt;hugo new&lt;/code&gt; to create the markdown file.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;hugo new&lt;/code&gt; defaults the &lt;code&gt;draft&lt;/code&gt; value in the front matter block
to &lt;code&gt;true&lt;/code&gt;, but in my one-man-show workflow I always want &lt;code&gt;draft&lt;/code&gt;
set to &lt;code&gt;false&lt;/code&gt;.  Hugo doesn&amp;rsquo;t provide this directly, so you
either need to manually change it during your edit, or use a
script to do it for you.  I chose to use the script.&lt;/p&gt;
&lt;p&gt;In &lt;code&gt;hpost.sh&lt;/code&gt;, I added this line just after the &lt;code&gt;hugo new&lt;/code&gt; command:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sed -i -e &amp;#39;s,^draft = true,draft = false,&amp;#39; $filename
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;where &lt;code&gt;$filename&lt;/code&gt; is the name of the new markdown file.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Tech update</title>
      <link>/posts/tech_update/</link>
      <pubDate>Sun, 22 Feb 2026 19:21:36 +0000</pubDate>
      
      <guid>/posts/tech_update/</guid>
      <description>&lt;p&gt;So, currently my tech setup looks like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A Synology DS220+ NAS system, ds220a1&lt;/li&gt;
&lt;li&gt;A Mini PC system running Ubuntu 24.04, annagassan&lt;/li&gt;
&lt;li&gt;An old Dell Latitude laptop, blackrock&lt;/li&gt;
&lt;li&gt;A Digital Ocean VPS instance based in their New York data center, VPS-FP1&lt;/li&gt;
&lt;li&gt;Two personal laptops running Windows 11 - an Asus X515 system and a TUF F16
system.  In addition to day-to-day activitieis - gaming, Reddit, email, spreadsheets
and documents, the usual stuff - they are used to manage the servers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each system runs Tailscale, so regardless of their location or IP address,
any system can securely communicate with all the other systems and vice versa.
The Linux systems all run Docker, Portainer, and Syncthing, and host containers
that make up the core of the tech stack, primarily for personal media consumption
and for coordinating access from both Texas and Ireland.&lt;/p&gt;
&lt;p&gt;Earlier today, I (finally) migrated my Hugo blogging setup from the X515 laptop
to annagassan.  The Hugo setup on the X515 ran under Git Bash, so the migration
only required changes to the source directories, along with some minor changes
to permissions and some tweaks to the Syncthing folder definitions.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m hoping this makes it easier to add more content to the blogs - but we&amp;rsquo;ll
have to see.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>New laptop</title>
      <link>/posts/new_laptop/</link>
      <pubDate>Sun, 16 Nov 2025 10:39:12 +0000</pubDate>
      
      <guid>/posts/new_laptop/</guid>
      <description>&lt;p&gt;For all the usual reasons, I decided I needed a new laptop to handle
my day-to-day needs.&lt;/p&gt;
&lt;p&gt;For a few years now, my daily-driver has been an Asus X515 laptop.  I
bought it at a time when I had a big, heavy, powerful company-provided
Dell system, so I chose to go with a light-weight (in every possible
way) system.  So-so CPU, just-enough RAM, not-enough storage space, but
it was less than $300 and did everything I needed it to do at the time.
Any heavy-lifting could be done on the company Dell - I had set up a
Windows 11 VM on the Dell to manage any non-company use.&lt;/p&gt;
&lt;p&gt;Earlier this month, I came to the inevitable conclusion that I needed
something better.  Something that would let me play a few modern games -
Cities: Skylines 1, a flight sim, nothing too complex.  I set up a few
CamelCamelCamel searches for some promising laptops, and waited for the
early Black Friday sales to happen.&lt;/p&gt;
&lt;p&gt;Late last week I got a ping from CCC - an Asus TUF F16 gaming laptop was
going on sale for under $1000, with a discount of over $300.  It seemed
like a good choice, but I spent a few days thinking it over, talking with
Carole, and just making sure it made sense.&lt;/p&gt;
&lt;p&gt;I pulled the trigger a few days ago, and the new system arrived in at the
door earlier today.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m gonna let it sit unopened for a few days to finalize my decision, but
I&amp;rsquo;m leaning toward keeping it.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Education</title>
      <link>/posts/education/</link>
      <pubDate>Sun, 19 Oct 2025 10:37:57 -0500</pubDate>
      
      <guid>/posts/education/</guid>
      <description>
  &lt;figure cite=&#34;https://https://www.futilitycloset.com/2025/10/18/jealousy-is-as-blind-as-love/&#34;&gt;
    &lt;blockquote itemscope itemtype=&#34;http://schema.org/CreativeWork&#34;&gt;
      &lt;p itemprop=&#34;citation&#34;&gt;
Education is only a ladder to gather fruit from the tree of knowledge, not the fruit itself.
&lt;/p&gt;
    &lt;/blockquote&gt;
    &lt;figcaption&gt;
        &lt;span itemprop=&#34;author&#34; itemscope itemtype=&#34;http://schema.org/Person&#34;&gt;
          &lt;span itemprop=&#34;name&#34;&gt;Austin O&amp;#39;Malley&lt;/span&gt;
        &lt;/span&gt;
        
    &lt;/figcaption&gt;
  &lt;/figure&gt;


</description>
    </item>
    
    <item>
      <title>Update containers in Portainer</title>
      <link>/posts/update_containers_in_portainer/</link>
      <pubDate>Sat, 18 Oct 2025 19:54:01 -0500</pubDate>
      
      <guid>/posts/update_containers_in_portainer/</guid>
      <description>&lt;p&gt;Here&amp;rsquo;s an easy way to manage updates of containers using Dockpeek and Portainer:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open Dockpeek and click the &lt;em&gt;Check for updates&lt;/em&gt; button&lt;/li&gt;
&lt;li&gt;For each container shown as needing updates, use the following steps in Portainer:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Go to the Stacks page&lt;/li&gt;
&lt;li&gt;Click on the first container needing an update&lt;/li&gt;
&lt;li&gt;Click on the Editor tab&lt;/li&gt;
&lt;li&gt;Scroll down and click on the &lt;em&gt;Update the stack&lt;/em&gt; button&lt;/li&gt;
&lt;li&gt;On the &lt;em&gt;Are you sure?&lt;/em&gt; pop-up, click the &lt;em&gt;Re-pull image and redeploy&lt;/em&gt; slider to ON
and click the &lt;em&gt;Update&lt;/em&gt; button&lt;/li&gt;
&lt;li&gt;Portainer will download the update and restart the container&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>The Problem of Good</title>
      <link>/posts/the_problem_of_good/</link>
      <pubDate>Sat, 20 Sep 2025 14:10:49 +0100</pubDate>
      
      <guid>/posts/the_problem_of_good/</guid>
      <description>&lt;p&gt;From &lt;a href=&#34;https://www.futilitycloset.com/2025/09/17/the-problem-of-good/&#34;&gt;Futility Closet&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;By philosopher Steven M. Cahn:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Assume that there exists an omnipotent, omniscient, omnimalevolent Demon who created the world.&lt;/li&gt;
&lt;li&gt;If the Demon exists, then there would be no goodness in the world.&lt;/li&gt;
&lt;li&gt;But there is goodness in the world.&lt;/li&gt;
&lt;li&gt;Therefore, the Demon does not exist.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;A demonist who wants to deny (4) would need to deny (1), (2), or (3). No
demonist would question (1), and it’s difficult to deny (3), but we can escape
(2) only by claiming that the world’s good is somehow necessary, that every good
in the world is logically needed in order for this to be the worst world that
the Demon could have created.&lt;/p&gt;
&lt;p&gt;This is the familiar “problem of evil” turned on its head. The notion that all
the world’s good (sunsets, Socrates’ free will) is necessary to create maximum
evil is just as improbable as that all the world’s evil (bubonic plague,
Hitler’s free will) is needed to create maximum good. Unless demonists or
theists can produce further evidence in favor of their positions, “the
reasonable conclusion is that neither the Demon nor God exists.”&lt;/p&gt;
&lt;p&gt;(Steven M. Cahn, “Cacodaemony,” Analysis 37:2 [January 1977], 69-73.)&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Rustdesk</title>
      <link>/posts/rustdesk/</link>
      <pubDate>Sat, 30 Aug 2025 16:37:09 +0100</pubDate>
      
      <guid>/posts/rustdesk/</guid>
      <description>&lt;p&gt;From time to time, it&amp;rsquo;s necessary to access a computer remotely.  Over the
years, TeamViewer was the tool of choice, but it has fallen into a bloated
annoyance recently, so for many moons now I&amp;rsquo;ve been using Rustdesk - a FOSS
toolset that works ideally for my use cases.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Laptop Upgrade</title>
      <link>/posts/laptop-upgrade/</link>
      <pubDate>Tue, 08 Jul 2025 11:00:49 -0500</pubDate>
      
      <guid>/posts/laptop-upgrade/</guid>
      <description>&lt;p&gt;My daily-driver is an Asus X515 laptop running Windows 11. I picked this up a few years back when it
was on sale at a good price, knowing it was a little underpowered for my long-term
needs.&lt;/p&gt;
&lt;p&gt;But it served the short-term purpose, and was great for travel.  It came with
a single 128gb NVME SSD and 4gb of RAM, which sounds pre-historic now but met my needs
at the time.  The system has a single NVME slot, and an empty spot for a 2.5&amp;quot; SATA hard
drive or the equivalent SSD.&lt;/p&gt;
&lt;p&gt;A couple of years ago I upgraded to a single 1tb SSD.  This was partitioned as a 128gb
C: and 840gb D: drive, although my reasoning for this is sketchy nowadays.  Last week,
I noticed that both the C: and D: drives were at 90%-plus of capacity, and there were
no easy choices on what to move/delete to free up space.&lt;/p&gt;
&lt;p&gt;Most of the heavy-lifting is now done with a Synology DS220+ system, which handles all
the media and utility services.  My personal files are handled by a Beestation, so the
working files on my laptop are replicated there automatically, but these files have
grown over time resulting in the over-use of the D: drive.  The C: drive just fills up
as Windows updates come in, new apps are installed - the usual creep.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the upgrade plan I came up with.&lt;/p&gt;
&lt;p&gt;I found some good deals on the pre-Prime Days sale, so I ordered two new drives: a
1tb NVME SSD, and a 2tb 2.5&amp;quot; SSD.  The NVME arrived first, so I mounted it in my
USB enclosre, and used DiskGenius to do an OS Migration of the system partitions and
the C: partition.&lt;/p&gt;
&lt;p&gt;The next day, the 2tb 2.5&amp;quot; SATA SSD arrived early in the day, but the cable I needed
to connect the drive inside the laptop wasn&amp;rsquo;t going to arrive until the early evening.
I connected the drive to a SATA USB adapter I had in my e-junk box, and used DiskGenius
to clone the existing D: drive.&lt;/p&gt;
&lt;p&gt;When the cable came in, I installed the 2.5&amp;quot; drive in the bay, ran the flat cable to the
connector on the motherboard, and used some of the adhesive pads that came in the cable
package to hold everything down securely.&lt;/p&gt;
&lt;p&gt;After you do this kind of work, the first power-on is always a test in humility, but
thankfully the system booted right up without issues.  The new C: drive shows a total
of 930gb with 824gb free, and the new D: drive shows a total of 1.81tb with 1.08tb
free.  This should be plenty of headroom for a year or two at least.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Syncthing Fix</title>
      <link>/posts/syncthing-fix/</link>
      <pubDate>Mon, 26 May 2025 12:24:44 +0100</pubDate>
      
      <guid>/posts/syncthing-fix/</guid>
      <description>&lt;p&gt;I use Syncthing to synchronize files between various systems in my extended
homelab.  There are currently five systems using Syncthing - a primary NAS
server and a backup NAS server based in Texas, a laptop running Ubuntu Server
24.04 currently based with me in Ireland (and known as the Blackrock server),
my personal Asus laptop running Windows 11, and a Digital Ocean VPS running
Ubuntu Server 24.04.  (I have a couple of other devices in the Tailnet - my
Pixel 6 phone, and the travel Chromecast.)&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s how I solved a minor annoyance with my current setup.&lt;/p&gt;
&lt;p&gt;Because of bandwidth and disk space concerns, not all systems sync all of the
directories.  The primary NAS has a single &amp;lsquo;media&amp;rsquo; directory that has
subdirectories for various categories - TV shows, Movies, Audio Books, Music,
etc.  The TV content is actually kept in three separate directories - tv for
main content, tvextra for less visited, more niche content, and tvspecial for a
couple of series that seem to cause Plex a lot of grief.  The Blackrock system
syncs most of these directories, but not all.&lt;/p&gt;
&lt;p&gt;From time to time, a TV series is added to the main &amp;rsquo;tv&amp;rsquo; directory at first,
but over time it gets reclassified as a &amp;rsquo;tvextra&amp;rsquo; series.  Originally, I&amp;rsquo;d use
Sonarr to move the series from &amp;rsquo;tv&amp;rsquo; to &amp;rsquo;tvextra&amp;rsquo;, and since both of these
directories are under the &amp;lsquo;media&amp;rsquo; directory the move is made using hard links,
making the move instantaneous.&lt;/p&gt;
&lt;p&gt;However, this causes Syncthing on the Blackrock server to: a) delete the series
directory from &amp;rsquo;tv&amp;rsquo;; and b) recopy the series directory from the NAS to a new
directory under &amp;rsquo;tvextra&amp;rsquo;.  In the end everything winds up where it should be,
but at the cost of time and bandwidth.&lt;/p&gt;
&lt;p&gt;The obvious soluttion to this is to: a) pause sync on the Blackrock server; b)
manually move the affected series directories from &amp;rsquo;tv&amp;rsquo; to &amp;rsquo;tvextra&amp;rsquo; on both
the NAS and the Blackrock server; and c) restart the sync.  Both sides of the
sync will spin while they figure things out, but after a minute or two they
both report a full sync, with no need to copy anything from one server to the
other.&lt;/p&gt;
&lt;p&gt;* Note: I just added my Samsung Tab A9+ to the tailnet - handy when you&amp;rsquo;re
out and about but the phone isn&amp;rsquo;t quite big enough to meet your needs.  It
now syncs the Obisidian vault and the KeePass database folder.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Blackrock Server Updates</title>
      <link>/posts/blackrock-server-updates/</link>
      <pubDate>Sun, 25 May 2025 16:06:19 +0100</pubDate>
      
      <guid>/posts/blackrock-server-updates/</guid>
      <description>&lt;p&gt;Before we came to Ireland for extended stays, I setup an old Dell laptop to be
the media server while we travel.  This system runs Ubuntu 24.04 Server with a
GUI, and makes it possible for us to watch our ripped movies and related media.
I use Tailscale to securely access my remote systems, and in the Tailnet this
server has the uninspired hostname of dell4800.&lt;/p&gt;
&lt;p&gt;I made a couple of updates today to make my day-to-day maintenance work more
efficient.&lt;/p&gt;
&lt;p&gt;First, I set up SSH on dell4800 with key-based authentication, and disabled
password authentication.  On my Windows 11 laptop, I generated a fresh set of
SSH keys, and used ssh-copy-id to copy the .pub file to dell4800.  I can now
open a terminal session on dell4800 from my Windows laptop without a password.
(The Tailnet provides ample security.)&lt;/p&gt;
&lt;p&gt;Next, I installed and configured Samba, the Linux/Unix app that provides SMB/CIFS
file sharing services.  I added the dell4800 media directory as a share, and can
now mount the directory on my Windows laptop.&lt;/p&gt;
&lt;p&gt;dell4800 runs Syncthing in a Docker container managed by Portainer, and automatically
syncs various folders from my main Synology DS220+ NAS system currently based in
Texas over the Tailnet.&lt;/p&gt;
&lt;p&gt;Nothing earth-shattering, but these tools make it easier and more efficient
for me to do routine maintenance on the Syncthing target directories.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Vim Note</title>
      <link>/posts/vim-note/</link>
      <pubDate>Sat, 24 May 2025 15:10:47 +0100</pubDate>
      
      <guid>/posts/vim-note/</guid>
      <description>&lt;p&gt;I use the vim editor to write these posts, and prefer not to use vim’s
automatic line-wrapping. There are times when longer lines are necessary, so I
like to manually wrap lines when needed.&lt;/p&gt;
&lt;p&gt;In blog posts like this, paragraphs are separated by a blank line. To wrap the
lines in a single paragraph, use this key sequence:&lt;/p&gt;
&lt;p&gt;&lt;kbd&gt;:gq}&lt;/kbd&gt;&lt;/p&gt;
&lt;p&gt;&lt;kbd&gt;:&lt;/kbd&gt; opens command mode, &lt;kbd&gt;gq&lt;/kbd&gt; is the wrap command which must be
followed by a movement command.  &lt;kbd&gt;}&lt;/kbd&gt; moves to the next empty line.  Put
them altogether and the current paragraph is wrapped to the defined line width,
which defaults to 80.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Blog Tech</title>
      <link>/posts/blog-tech/</link>
      <pubDate>Sat, 24 May 2025 10:32:32 +0100</pubDate>
      
      <guid>/posts/blog-tech/</guid>
      <description>&lt;p&gt;Over the last week or so, I&amp;rsquo;ve enjoyed updating the tools I use for this site,
which is built using Hugo.  Hugo creates static HTML from Markdown source, and
is perfect for low volume sites that are updated on an occassional basis, and
that hasn&amp;rsquo;t changed.  The tooling I use to host the site has changed, along
with the method i use to upload the new HTML to the web host.&lt;/p&gt;
&lt;p&gt;In the past, I used GitHub Pages to host this site.  When I added or changed a
page, I&amp;rsquo;d run Hugo to convert the Markdown into HTML, and then use git commands
to push the updated HTML to GitHub.  The repository it was posted to was
configured to use GitHub Pages to server the actual website.  This process
worked reasonably well, but some underlying tech issues made it necessary to
change course.&lt;/p&gt;
&lt;p&gt;Here are the tools I use on my Windows 11 laptop:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;GIT bash - a Linux terminal running the bash shell&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;VIM for editing - I learned vi back in the late 1980&amp;rsquo;s and used it almost
exclusively for 35 years - I&amp;rsquo;m very comfortable with it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Syncthing - this tool runs on the laptop and on the VPS, and automatically
uploads modified directories from the laptop to the VPS.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These tools run on a Digital Ocean VPS running Ubuntu 24.04:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Apache Web Server&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Syncthing, running in a Docker container using Portainer&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;And here&amp;rsquo;s a brief overview of the workflow for adding a new post to the web site:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;A new page is added using Hugo&amp;rsquo;s Markdown format (no change here)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The hugo tool is run to convert the Markdown into HTML (again, no change)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Hugo writes the updated site files to a local folder on the laptop.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Syncthing automatically uploads the site files to the VPS.  The files go to
the directory configured in Apache as the DocumentRoot.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Once the sync is complete, the site update automatically goes live.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s a couple of minor issues that I&amp;rsquo;m looking into, but nothing urgent.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Syncthing uploads files in a pseudo-random sequence, and if you load the web
url in your browser before the sync completes you may get some wonky
behavior.  I have some ideas on how to fix this, but it&amp;rsquo;s not a big deal at
this time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Once I removed the git commit/push steps, I no longer have active source
control.  In practice, this isn&amp;rsquo;t a big deal, but there are times where it
would be nice to monitor each individual change made to the site files.  I
played with a Windows install of Gitea, but was temporarily defeated by the
SSH/HTTPS configuration, so that&amp;rsquo;s on hold for now.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The new tooling gave me a chance to reconnect with my tech knowledge, which was
fun.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Old newspaper article</title>
      <link>/posts/web-presentation/</link>
      <pubDate>Wed, 01 Jan 2025 14:48:37 -0600</pubDate>
      
      <guid>/posts/web-presentation/</guid>
      <description>&lt;p&gt;My sister was going through some old papers left by my father, and came across this article
from the local newspaper.  I was invited by a local group for secretaries and administrative
assistants to give a 30-minute presentation on the use of the World Wide Web.  As was the
norm back then, I suited up for my presentation, but I think I omitted the tie.  My recollection
of the evening is quite positive.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://tcfjr.com/images/web-class-newspaper.jpg&#34; alt=&#34;Pasadena Star-News clipping, CC0&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Generations</title>
      <link>/posts/generations/</link>
      <pubDate>Mon, 16 Dec 2024 08:41:30 -0600</pubDate>
      
      <guid>/posts/generations/</guid>
      <description>&lt;p&gt;From &lt;a href=&#34;https://www.futilitycloset.com/2024/12/18/unquote-690/&#34;&gt;Futility Closet&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Each generation imagines itself to be more intelligent than the one that went
before and wiser than the one that comes after it.” — George Orwell&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>New York Times Puzzles with my sister</title>
      <link>/posts/nyt-games/</link>
      <pubDate>Mon, 09 Dec 2024 10:04:41 -0600</pubDate>
      
      <guid>/posts/nyt-games/</guid>
      <description>&lt;p&gt;For the last few years, my sister and I have been
playing the daily New York Times puzzles.  A few months ago, We started sharing our daily efforts
playing Wordle and Connections - we both also play other NYT puzzle games, but
stuck with the two main games to share.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s a great, low-key way to stay connected.  Often we just share the basic
results, but if either of us has a particularly good or particularly bad day
with our solutions, we&amp;rsquo;ll commiserate.  We both agree the most annoying thing
to happen in Wordle is to have 4 of the five letters correctly placed with either
the first or second guess, and then need 3 or 4 chances to find the final letter.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>The Play is Badly Cast</title>
      <link>/posts/badly-cast/</link>
      <pubDate>Mon, 09 Dec 2024 09:17:53 -0600</pubDate>
      
      <guid>/posts/badly-cast/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://tcfjr.com/images/Wilde-quote.png&#34; alt=&#34;The Play is Badly Cast&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Lois McMaster Bujold Quotes</title>
      <link>/posts/bujold-quotes/</link>
      <pubDate>Tue, 03 Dec 2024 11:45:59 -0600</pubDate>
      
      <guid>/posts/bujold-quotes/</guid>
      <description>&lt;p&gt;Some memorable quotes from Lois McMaster Bujold&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;“Seems to me the only difference between your friends and your enemies is how long they stand around chatting before they shoot you.” - &lt;em&gt;Shards of Honor&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;ldquo;My home is not a place, it is a person, sir.&amp;rdquo; - &lt;em&gt;Barrayar&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;ldquo;Geography is the mother of strategy.&amp;rdquo; - &lt;em&gt;The Vor Game&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“Reputation is what other people know about you. Honor is what you know about yourself.” - &lt;em&gt;A Civil Campaign&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“The world is made by the people who show up for the job.” - &lt;em&gt;Cryoburn&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“Endure pain, find joy, and make your own meaning, because the universe certainly isn&amp;rsquo;t going to supply it.” - &lt;em&gt;Cordellia&amp;rsquo;s Honor&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“I wanted to give you a victory. But by their essential nature triumphs can’t be given.” - &lt;em&gt;A Civil Campaign&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“Not all prisons are made of iron bars, some are made of feather beds.” - &lt;em&gt;The Curse of Chalion&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>Ians Secure Shoelace Knot</title>
      <link>/posts/ians-shoelace-knot/</link>
      <pubDate>Mon, 02 Dec 2024 13:49:28 -0600</pubDate>
      
      <guid>/posts/ians-shoelace-knot/</guid>
      <description>&lt;p&gt;I have a nice pair of low-top Merrell shoes I like to wear for walking and hiking.
From time to time the knot would come undone, which is somewhat annoying.&lt;/p&gt;
&lt;p&gt;I was getting ready to do my 3 mile walk around the neighborhood, and decided I
wanted to learn a secure but easily tied replacement for the bunny-ears knot I
learned in kindergarten.  The solution was:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;
&amp;nbsp;
&lt;a href=&#34;https://www.fieggen.com/shoelace/secureknot.htm&#34;&gt;Ian&amp;rsquo;s Secure Shoelace Knot&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s easy enough to learn and then to tie, and results in a very secure shoelace
that&amp;rsquo;s still easy to untie.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s a diagram of Step 6, which shows a view of the completion of the process.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://tcfjr.com/images/Secure-Knot-6.png&#34; alt=&#34;Ian&amp;rsquo;s Secure Shoelace knot, diagram of step 6&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Delight</title>
      <link>/posts/delight/</link>
      <pubDate>Mon, 02 Dec 2024 10:22:25 -0600</pubDate>
      
      <guid>/posts/delight/</guid>
      <description>&lt;p&gt;“The true delight is in the finding out, rather than in the knowing.” — Isaac Asimov&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Just Deserts</title>
      <link>/posts/just-deserts/</link>
      <pubDate>Sun, 01 Dec 2024 16:15:25 -0600</pubDate>
      
      <guid>/posts/just-deserts/</guid>
      <description>&lt;p&gt;Many people believe the idiom for someone getting what they deserve is
&amp;ldquo;just desserts&amp;rdquo;, but in fact it&amp;rsquo;s &amp;ldquo;just deserts&amp;rdquo;.  It&amp;rsquo;s a now defunct
version of the word &amp;ldquo;deserts&amp;rdquo; meaning &amp;ldquo;that which one deserves&amp;rdquo; that
only survives today in that one idiom.  But is is pronounced just like
&amp;ldquo;desserts&amp;rdquo;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Harbor</title>
      <link>/posts/harbor/</link>
      <pubDate>Sun, 01 Dec 2024 00:03:32 -0600</pubDate>
      
      <guid>/posts/harbor/</guid>
      <description>&lt;p&gt;&amp;ldquo;A ship in harbor is safe, but that is not what ships are built for.&amp;rdquo;
 - John A. Shedd&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://tcfjr.com/images/SAAM-1982.1.33_1.jpg&#34; alt=&#34;Ship - Smithsonian American Art Museum, CC0&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>First</title>
      <link>/posts/first/</link>
      <pubDate>Fri, 29 Nov 2024 16:04:24 -0600</pubDate>
      
      <guid>/posts/first/</guid>
      <description>&lt;p&gt;Hello.  Still in test.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Add Life</title>
      <link>/posts/add-life/</link>
      <pubDate>Thu, 28 Nov 2024 02:03:32 -0600</pubDate>
      
      <guid>/posts/add-life/</guid>
      <description>&lt;p&gt;“I don’t ride a bike to add days to my life. I ride a bike to add life to my days.”
 - Anonymous&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Game 5</title>
      <link>/posts/game-5/</link>
      <pubDate>Wed, 30 Oct 2024 11:50:14 -0600</pubDate>
      
      <guid>/posts/game-5/</guid>
      <description>&lt;p&gt;As a long-time Dodger fan - I went to my first game at Dodger Stadium
back in 1965 - I was really happy to see them win game 5 today at
Yankee Stadium to close-out this year&amp;rsquo;s World Series.&lt;/p&gt;
&lt;p&gt;We can all agree that that fifth inning defensive display by the Yankees
was horrible, but their overall defense throughout the series was really
weak.  It&amp;rsquo;s hard to understand, but their coaching staff has to take the
brunt of the blame.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Red Flags</title>
      <link>/posts/red-flags/</link>
      <pubDate>Mon, 13 Feb 2023 15:41:59 -0600</pubDate>
      
      <guid>/posts/red-flags/</guid>
      <description>&lt;p&gt;&amp;ldquo;When you wear rose-colored glasses, all the red flags just look like flags&amp;rdquo;&lt;br&gt;
 - Anonymous&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://tcfjr.com/images/NMAH-AHB2010q05600.jpg&#34; alt=&#34;Red Flag - Smithsonian American Art Museum, CC0&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Peanut Butter and Pickle</title>
      <link>/posts/peanut-butter-and-pickle/</link>
      <pubDate>Fri, 20 Jan 2023 12:36:28 -0600</pubDate>
      
      <guid>/posts/peanut-butter-and-pickle/</guid>
      <description>&lt;p&gt;Since I was a kid, I&amp;rsquo;ve always enjoyed peanut butter and pickle sandwiches.
It&amp;rsquo;s a little weird, I guess.  You take two slices of bread, slab on some
creamy peanut butter on both sides, lay some pickles on and close up the
sandwich.  Then enjoy.&lt;/p&gt;
&lt;p&gt;You can use either dill pickles or sweet pickles.  Each has their own flavor,
but either one makes for a fantastic sandwich.&lt;/p&gt;
&lt;p&gt;Elvis famously enjoyed peanut butter and banana sandwiches.  Maybe once I
become famous the world will start to enjoy peanut butter and pickle.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>The Tree Remembers</title>
      <link>/posts/the-tree-remembers/</link>
      <pubDate>Mon, 16 Jan 2023 21:28:24 -0600</pubDate>
      
      <guid>/posts/the-tree-remembers/</guid>
      <description>&lt;p&gt;&amp;ldquo;The ax forgets, but the tree remembers&amp;rdquo;&lt;br&gt;
 - African proverb&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://tcfjr.com/images/SAAM-1966.5_2.jpg&#34; alt=&#34;Oak Tree - Smithsonian American Art Museum, CC0&#34;&gt;&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
