<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Software on The Solutions Are Known</title><link>https://holmgrown.com/tsak/tags/software/</link><description>Recent content in Software on The Solutions Are Known</description><generator>Hugo</generator><language>en-US</language><copyright>Howard Holm</copyright><lastBuildDate>Wed, 14 Oct 2026 00:45:05 -0400</lastBuildDate><atom:link href="https://holmgrown.com/tsak/tags/software/index.xml" rel="self" type="application/rss+xml"/><item><title>BreadSched</title><link>https://holmgrown.com/tsak/articles/breadsched/</link><pubDate>Tue, 08 Sep 2026 15:32:15 -0400</pubDate><guid>https://holmgrown.com/tsak/articles/breadsched/</guid><description>&lt;h2 id="gnucash-is-great-for-many-things"&gt;GNUcash is Great for Many Things&lt;/h2&gt;
&lt;p&gt;For a long while I have used &lt;a href="https://www.gnucash.org/"&gt;GnuCash&lt;/a&gt; and some
spreadsheets to manage my finances. GnuCash has excellent features for
tracking income, expeses, assets, liabilities as well as business
accounting features (invoices, receivables, and so on) that would be useful
for an LLC but that I do not need for my household. It is not especially
helpful, though, for projecting cash flow or making long-term projections. So I
kept spreadsheets for that, plus a dashboard-style spreadsheet to track my
overall current financial picture.&lt;/p&gt;</description></item><item><title>Decrypting Disks without Passwords on Reboot</title><link>https://holmgrown.com/tsak/articles/decrypting-disks-without-passwords-on-reboot/</link><pubDate>Tue, 08 Sep 2026 00:05:01 -0400</pubDate><guid>https://holmgrown.com/tsak/articles/decrypting-disks-without-passwords-on-reboot/</guid><description>&lt;p&gt;Like many tech hobbyists, I run a fair number of servers and VMs at home, and
a lot of them hold data I would rather keep encrypted. Drives and SSDs
eventually fail (you should have backups, but that is an entry for another
day) and sometimes get stolen. If the data is encrypted, both are far less
stressful events.&lt;/p&gt;
&lt;p&gt;The catch is that encrypted data has to be decrypted before it is useful. The
usual model, typical of Linux&amp;rsquo;s &lt;a href="https://gitlab.com/cryptsetup/cryptsetup"&gt;LUKS&lt;/a&gt;
encryption, is that someone types a passphrase at boot after every power
failure or maintenance window. LUKS can instead tie the key to the machine&amp;rsquo;s
TPM, much as Windows BitLocker does, but that is less effective for VMs and
does little if the TPM is stolen along with the drive. A passphrase at boot
has real security advantages. Its serious disadvantage is that a person has to
be present to type it, every time.&lt;/p&gt;</description></item><item><title>Forwarding to Gmail via API</title><link>https://holmgrown.com/tsak/articles/forwarding-to-gmail-via-api/</link><pubDate>Mon, 07 Sep 2026 23:05:01 -0400</pubDate><guid>https://holmgrown.com/tsak/articles/forwarding-to-gmail-via-api/</guid><description>&lt;p&gt;Google is deprecating, and will &lt;a href="https://support.google.com/mail/answer/16604719"&gt;soon turn off&lt;/a&gt;,
Gmail&amp;rsquo;s ability to fetch mail from other servers via POP. (Despite what you may
have thought, Gmail has apparently never supported fetching over IMAP.) In
an update, covered in the link above, Google has extended this deprecation to
it&amp;rsquo;s &lt;em&gt;send-as&lt;/em&gt; feature as well. So while this tool will still work, it won&amp;rsquo;t
be possible to use your Gmail account as your primary interface to reading and
&lt;em&gt;responding&lt;/em&gt; to email at another domain.
Forwarding by SMTP is not a good substitute: forwarded messages commonly fail
&lt;a href="https://www.rfc-editor.org/rfc/rfc7208"&gt;SPF&lt;/a&gt;,
&lt;a href="https://www.rfc-editor.org/rfc/rfc6376"&gt;DKIM&lt;/a&gt;, and
&lt;a href="https://www.rfc-editor.org/rfc/rfc7489"&gt;DMARC&lt;/a&gt; checks, because the forwarding
server is no longer an authorized sender for the original domain. (The
&lt;a href="https://www.rfc-editor.org/rfc/rfc8617"&gt;ARC&lt;/a&gt; protocol exists to soften this,
but it depends on the receiving side trusting you.) So I turned to Gmail&amp;rsquo;s API,
and after a little more research than I wanted, I wrote a modest Python script.&lt;/p&gt;</description></item><item><title>Constructing this Site</title><link>https://holmgrown.com/tsak/articles/constructing-this-site/</link><pubDate>Mon, 07 Sep 2026 12:49:08 -0400</pubDate><guid>https://holmgrown.com/tsak/articles/constructing-this-site/</guid><description>&lt;p&gt;I had been considering a blog for a while, mostly to hold what I have learned
about various things. I did not want to relearn those hard-won bits of
knowledge the next time I needed them, so I kept a private collection of
notes. I also believe sharing is a good thing, and I wanted to make those
notes available to anyone who might find them useful.&lt;/p&gt;
&lt;h2 id="choosing-hugo"&gt;Choosing Hugo&lt;/h2&gt;
&lt;p&gt;While working with &lt;a href="https://gramps-project.org/"&gt;Gramps&lt;/a&gt;, I became aware of
one of its developers, David Straub. When he
&lt;a href="https://davidstraub.de/posts/my-new-website-setup/"&gt;revamped his personal website&lt;/a&gt;,
I learned of &lt;a href="https://gohugo.io/"&gt;Hugo&lt;/a&gt;, which met my list of criteria for a
blog system and was similar to what he described.&lt;/p&gt;</description></item><item><title>Tether iPhone to OPNsense</title><link>https://holmgrown.com/tsak/articles/tether-iphone-to-opnsense/</link><pubDate>Sun, 06 Sep 2026 14:30:06 -0400</pubDate><guid>https://holmgrown.com/tsak/articles/tether-iphone-to-opnsense/</guid><description>&lt;p&gt;&lt;em&gt;Last updated for OPNsense 26.7.3_11.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If you have an &lt;a href="https://opnsense.org/"&gt;OPNsense&lt;/a&gt; firewall and a spare iPhone on
a cell plan that allows tethering, you can use the phone as the firewall&amp;rsquo;s WAN
connection to the cell network. This is handy in a long outage, for example a
hurricane taking down your cable provider for more than a week. (Just an
example.)&lt;/p&gt;
&lt;p&gt;There are some hurdles, and it is best to configure all of this &lt;em&gt;before&lt;/em&gt; you
need it. During an outage it is hard to download the things you need.&lt;/p&gt;</description></item><item><title>Local Fedora Mirror</title><link>https://holmgrown.com/tsak/articles/local-fedora-mirror/</link><pubDate>Sun, 06 Sep 2026 01:50:01 -0400</pubDate><guid>https://holmgrown.com/tsak/articles/local-fedora-mirror/</guid><description>&lt;p&gt;If you maintain more than a few Fedora systems, having each machine download
the same updates through your internet connection can waste time and bandwidth.
A local repository mirror lets you download those packages once to your network
and reuse them. It can also serve any locally produced packages to your systems
although that is not implemented in the script below.&lt;/p&gt;
&lt;h2 id="planning"&gt;Planning&lt;/h2&gt;
&lt;p&gt;This script is a deliberately simple setup, not the Fedora MirrorManager
&lt;a href="https://fedoraproject.org/wiki/Infrastructure/Mirroring"&gt;Mirror Management System&lt;/a&gt;
which may be more appropriate depending on what you are doing. This script can
be hosted on a physical or virtual server. Mirroring the actively updated
repositories can take upwards of 550 GiB as configured below, so it is probably
worth giving it its own drive. Whether that is part of the root filesystem or a
dedicated mount, the script and steps below assume that storage is at
&lt;code&gt;/opt/mirror&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Using Gramps Web Sync on Fedora</title><link>https://holmgrown.com/tsak/articles/grampsweb-sync-fedora/</link><pubDate>Sun, 06 Sep 2026 01:20:21 -0400</pubDate><guid>https://holmgrown.com/tsak/articles/grampsweb-sync-fedora/</guid><description>&lt;p&gt;When using &lt;a href="https://www.grampsweb.org/administration/sync/"&gt;Gramps Web Sync&lt;/a&gt; on
Fedora&amp;rsquo;s GNOME desktop to keep &lt;a href="https://gramps-project.org/blog/"&gt;Gramps&lt;/a&gt; and a
&lt;a href="https://www.grampsweb.org/"&gt;Gramps Web&lt;/a&gt; tree in sync, it helps to let the
GNOME password manager remember the password. That is not entirely
straightforward. You need the Python
&lt;a href="https://keyring.readthedocs.io/"&gt;keyring&lt;/a&gt; library to save the sync password,
but it defaults to the KWallet backend even when GNOME is the default desktop.
This is tracked in &lt;a href="https://github.com/jaraco/keyring/issues/496"&gt;this bug&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The workaround:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install &lt;code&gt;python3-keyring&lt;/code&gt; and &lt;code&gt;python3-secretstorage&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Create &lt;code&gt;~/.config/python_keyring/keyringrc.cfg&lt;/code&gt; to make the
&lt;a href="https://specifications.freedesktop.org/secret-service-spec/latest/"&gt;Secret Service&lt;/a&gt;
backend (which GNOME Keyring implements) the default, as described in the
keyring documentation on
&lt;a href="https://keyring.readthedocs.io/en/latest/#configuring"&gt;configuring a backend&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo dnf --refresh install python3-secretstorage python3-keyring
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir -p ~/.config/python_keyring
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &amp;gt; ~/.config/python_keyring/keyringrc.cfg &lt;span style="color:#e6db74"&gt;&amp;lt;&amp;lt;&amp;#39;CFG&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;[backend]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;default-keyring=keyring.backends.SecretService.Keyring
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;CFG&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Run the &lt;code&gt;mkdir&lt;/code&gt; and &lt;code&gt;cat&lt;/code&gt; commands as your own user, not with &lt;code&gt;sudo&lt;/code&gt;, since the
file belongs in your home directory.&lt;/p&gt;</description></item></channel></rss>