<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Temporary Permanence</title>
    <subtitle>Lukas Vacula&#x27;s personal website and blog.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://631a557f.lvacula-com.pages.dev/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-04-27T00:00:00+00:00</updated>
    <id>https://631a557f.lvacula-com.pages.dev/atom.xml</id>
    <entry xml:lang="en">
        <title>Red Hat Satellite and Changing CAs for Custom SSL Certificates</title>
        <published>2026-03-12T00:00:00+00:00</published>
        <updated>2026-04-27T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/posts/red-hat-satellite-and-changing-cas-for-custom-ssl-certificates/"/>
        <id>https://631a557f.lvacula-com.pages.dev/posts/red-hat-satellite-and-changing-cas-for-custom-ssl-certificates/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/posts/red-hat-satellite-and-changing-cas-for-custom-ssl-certificates/">&lt;p&gt;My workplace&#x27;s security team recently changed where we get our SSL certs from. Unfortunately, this led to some things breaking with our Red Hat Satellite (aka RH-branded The Foreman) instance. Namely, several of our hosts started reporting SSL errors while running &lt;code&gt;dnf update&lt;&#x2F;code&gt; (some parts redacted for security):&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;Errors during downloading metadata for repository &amp;#39;InfluxDB&amp;#39;:
&lt;&#x2F;span&gt;&lt;span&gt;  - Curl error (60): SSL peer certificate or SSH remote key was not OK for https:&#x2F;&#x2F;capsule.example.com&#x2F;pulp&#x2F;content&#x2F;Org&#x2F;Prod&#x2F;RHEL9&#x2F;custom&#x2F;InfluxDB&#x2F;InfluxDB&#x2F;repodata&#x2F;repomd.xml [SSL certificate problem: self-signed certificate in certificate chain]
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Turns out that Satellite is &lt;em&gt;really&lt;&#x2F;em&gt; temperamental about changing your CA and there is no way to go about it without running some kind of script or command on every host in your fleet. Red Hat&#x27;s suggested course of action is to use a script on the Satellite server designed to update the CA. You can run it on Satellite-managed hosts easily by creating a job within Satellite (category: &amp;quot;Command&amp;quot;, job template: &amp;quot;Download and run a script&amp;quot;) with the URL &lt;code&gt;https:&#x2F;&#x2F;satellite.example.com&#x2F;unattended&#x2F;public&#x2F;foreman_ca_refresh&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Unfortunately, this script &lt;strong&gt;only&lt;&#x2F;strong&gt; exists on Satellite and not on any of the capsules. That means it won&#x27;t work for hosts on segmented networks. And the next-best course of action according to Red Hat is, even more unfortunately, to un-register and re-register each host. I&#x27;m sure that&#x27;s a fine idea if you only have a few hosts. But one of the orgs in our instance has several &lt;em&gt;hundred&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Thus, I recommend the following command (which can also be run via Satellite jobs, same category template: &amp;quot;Run Command - Script Default&amp;quot;):&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;sudo rpm --force -Uvh https:&#x2F;&#x2F;$(grep -oP &amp;#39;[0-9a-zA-Z\-]+.example.com&amp;#39; &#x2F;etc&#x2F;rhsm&#x2F;rhsm.conf | head -n 1)&#x2F;pub&#x2F;katello-ca-consumer-latest.noarch.rpm
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Of course, update the domain to match what you&#x27;re using. The one-liner will search your Subscription Manager config for the first instance of something looking like a hostname - which should be the one it&#x27;s configured to use for dnf repos - and reach out to it to get the &lt;code&gt;katello-ca-consumer&lt;&#x2F;code&gt; package that contains the CA certificates. &lt;strong&gt;Be warned&lt;&#x2F;strong&gt;: this file is deprecated, but not removed, in newer versions of Satellite. So your experience using this command may change as time goes on.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>What is the purpose of Ubuntu Studio?</title>
        <published>2026-03-12T00:00:00+00:00</published>
        <updated>2026-03-12T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/posts/what-is-the-purpose-of-ubuntu-studio/"/>
        <id>https://631a557f.lvacula-com.pages.dev/posts/what-is-the-purpose-of-ubuntu-studio/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/posts/what-is-the-purpose-of-ubuntu-studio/">&lt;p&gt;A friend asked me today about the best and worst versions of Ubuntu. (I know this isn&#x27;t objective.) I told them that Kubuntu was likely the best, and that Ubuntu studio is likely the worst.&lt;&#x2F;p&gt;
&lt;p&gt;I have to wonder who the target audience for Studio is. The easy answer is &amp;quot;creatives&amp;quot; but I have to wonder why they install such a diverse array of software by default. According to their pages, they include by default:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Calibre (ebook manager)&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;PikoPixel (pixel art editor)&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Ardour (music creation)&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;GIMP (photo editor)&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Kdenlive (video editor)&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Blender (3d modeler)&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Krita (raster graphics editor&#x2F;digital painting)&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;digiKam (photography management program)&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Scribus (PDF editor)&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Inkscape (vector graphics)&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Rakarrack (guitar amp simulator)&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;To be clear, I&#x27;m not doubting the quality of any of these applications. I&#x27;ve used several of them myself. But I question who would have all of these (and more) installed &lt;em&gt;by default&lt;&#x2F;em&gt;. With the exception of coming with the JACK audio server, I can&#x27;t see why someone would prefer Studio over another Ubuntu flavor and installing the software they need afterwards.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>My 2¢ on a Linux Distro for Beginners</title>
        <published>2026-03-06T00:00:00+00:00</published>
        <updated>2026-03-06T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/posts/my-2cent-on-a-linux-distro-for-beginners/"/>
        <id>https://631a557f.lvacula-com.pages.dev/posts/my-2cent-on-a-linux-distro-for-beginners/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/posts/my-2cent-on-a-linux-distro-for-beginners/">&lt;p&gt;I often see debate around which Linux distro is the best for beginners or people who just want something other than Windows for playing video games on their PC. Here&#x27;s my thoughts on the matter:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Most &amp;quot;standard&amp;quot; distros like Mint or Fedora or OpenSUSE are probably fine and will have good documentation. Distros like Arch and Gentoo are good if you want to learn a lot but are willing to invest the time. The only one I&#x27;d avoid outright is Ubuntu and similar distros that use Snap&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;I once heard someone describe choosing a distro as choosing your package manager and default wallpaper. I think that&#x27;s an accurate judgement for most purposes&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#2&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;. I don&#x27;t think the average person who plays CS:GO and watches Twitch streams would be able to tell the difference between two installs with a similar desktop environment and theme.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;I feel it&#x27;s also worth mentioning that Linux is not always the best option. Linux&#x27;s support for uncommon peripherals like third-party drawing tablets and such can be really rough for someone who doesn&#x27;t have the time or desire to troubleshoot things. Windows has been and will likely continue to be the king of compatibility. And Mac is well-known for having the best support for all manner of creative apps.&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#3&quot;&gt;3&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;p&gt;
&lt;p&gt;And I say all of this as someone who has used Linux as my primary OS since 2019! Arguably longer if you count how much of 2017 and 2018 with only my Linux laptop and not my gaming desktop.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; Why don&#x27;t I recommend Ubuntu and other Snap distros? It&#x27;s entirely because of my first and only experience using them. One day in college while doing a lab, I installed the &lt;code&gt;nmap&lt;&#x2F;code&gt; snap at the suggestion of Ubuntu&#x27;s command-not-found message. I installed it as suggested and spent over half an hour trying to figure out why my command wouldn&#x27;t work before learning that the permissions limitations of snaps prevented this feature of nmap from working entirely. I don&#x27;t know if this was ever fixed. Is this a fair reason to not suggest an entire family of distros? Maybe not, but it was certainly frustrating enough that I can&#x27;t fully recommend it.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#2&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; Does this cover other things that are hard to customize later like non-standard init systems (Gentoo and Artix use OpenRC instead of Systemd)? No. But I don&#x27;t know of any &lt;em&gt;popular and common&lt;&#x2F;em&gt; distros that use that kind of thing either.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#3&quot;&gt;3&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; None of this is to say that they &lt;em&gt;don&#x27;t&lt;&#x2F;em&gt; have other issues. But they still have their strengths.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Testing Pages CMS</title>
        <published>2026-02-26T00:00:00+00:00</published>
        <updated>2026-02-26T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/posts/testing-pages-cms/"/>
        <id>https://631a557f.lvacula-com.pages.dev/posts/testing-pages-cms/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/posts/testing-pages-cms/">&lt;p&gt;This is a test of &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;pages-cms&#x2F;pages-cms&quot;&gt;pages-cms&lt;&#x2F;a&gt; as a way to make posting easier on myself!&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Fix for AAP with Github Apps Giving libcrypto Error</title>
        <published>2026-01-14T00:00:00+00:00</published>
        <updated>2026-01-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/posts/fix-for-aap-with-github-apps-giving-libcrypto-error/"/>
        <id>https://631a557f.lvacula-com.pages.dev/posts/fix-for-aap-with-github-apps-giving-libcrypto-error/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/posts/fix-for-aap-with-github-apps-giving-libcrypto-error/">&lt;p&gt;This is a quick, mostly unedited post that will hopefully save someone some time.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;context&quot;&gt;Context&lt;&#x2F;h2&gt;
&lt;p&gt;We&#x27;re moving to Github for code hosting at work. This means I have to move all of my Ansible Automation Platform projects into private repos within our Enterprise account. &lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;ve set up two credentials within AAP: a &amp;quot;GitHub App Installation Access Token Lookup&amp;quot; credential, and a &amp;quot;Source Control&amp;quot; credentials that feeds from the token lookup credential. The Source Control credential is then used within playbooks and projects for authentication. &lt;&#x2F;p&gt;
&lt;p&gt;While I had previously used the credential successfully within a playbook being run by AAP, using it to pull a project resulted in the following error:&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;Error loading key &amp;quot;&#x2F;runner&#x2F;artifacts&#x2F;1243&#x2F;ssh_key_data&amp;quot;: error in libcrypto
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;fix&quot;&gt;Fix&lt;&#x2F;h2&gt;
&lt;p&gt;The fix was surprisingly simple. I made a duplicate of my Source Control credential and cleared the &amp;quot;SCM PRivate Key&amp;quot; and &amp;quot;Private Key Passphrase&amp;quot; fields so that only the normal username and password were still being fed from the token lookup. &lt;&#x2F;p&gt;
&lt;p&gt;I don&#x27;t know why it was causing an error when I was using an HTTPS address rather than an SSH address for the repo. But at least now I have a fix.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Thoughts on RHEL 10&#x27;s Release Notes</title>
        <published>2025-05-14T00:00:00+00:00</published>
        <updated>2025-05-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/posts/rhel-10/"/>
        <id>https://631a557f.lvacula-com.pages.dev/posts/rhel-10/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/posts/rhel-10/">&lt;p&gt;Between Red Hat Summit next week and what seems to have been an accidental announcement of a GA release on the &lt;a href=&quot;https:&#x2F;&#x2F;access.redhat.com&#x2F;articles&#x2F;3078&quot;&gt;RHEL Release dates page&lt;&#x2F;a&gt; (which has now been reverted), it seems clear that RHEL 10 will be released within the next week or two.
I thought it would be a good time to look over the changes listed for the RHEL 10 beta to see what might be interesting or applicable to me at work. 
I&#x27;m not much of a developer so most of my interests will be on the admin side.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;The embedded DNS server for IdM is not available because they are waiting on updates to another library. We&#x27;ve tried to move away from the embedded DNS server in our environment, but I can see this being an issue for anyone who does and wants to upgrade to RHEL 10 immediately. &lt;&#x2F;li&gt;
&lt;li&gt;RDP has replaced VNC as the graphical remote access protocol for RHEL 10&#x27;s installer. I haven&#x27;t tried to set up RDP on Linux before, but I &lt;em&gt;have&lt;&#x2F;em&gt; set up VNC on a home server. Maybe I should figure out how they&#x27;re handling it in RHEL and consider switching over. &lt;&#x2F;li&gt;
&lt;li&gt;Valkey has replaced redis. I&#x27;m not surprised after reading some of the problems of the licensing change. &lt;&#x2F;li&gt;
&lt;li&gt;Firefox and Thunderbird are only available as Flatpaks in RHEL 10. It looks like this change will require logging in to the Red Hat Container Catalogue, which is slightly unfortunate because of the extra step required. On the other hand, this appears to simplify a lot of the upstream work and allow longer terms for supporting a single version. Ultimtely, I don&#x27;t use RHEL on the desktop so this is all just a curiosity to me.&lt;&#x2F;li&gt;
&lt;li&gt;The web console known as Cockpit now includes a file manager.&lt;&#x2F;li&gt;
&lt;li&gt;The &lt;code&gt;storage&lt;&#x2F;code&gt; system role can now manage Stratis pools. This is the only time I&#x27;ve seen Stratis mentioned outside of studying fro the RHCSA exam.&lt;&#x2F;li&gt;
&lt;li&gt;The &lt;code&gt;podman&lt;&#x2F;code&gt; system role can now log in to container registries. Cool and useful.&lt;&#x2F;li&gt;
&lt;li&gt;There&#x27;s a &lt;code&gt;postfix&lt;&#x2F;code&gt; system role. This isn&#x27;t new, but I wish I knew about it before making basically the same thing for work. &lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;If you&#x27;d like to read the notes for yourself, they are currently hosted at &lt;a href=&quot;https:&#x2F;&#x2F;docs.redhat.com&#x2F;en&#x2F;documentation&#x2F;red_hat_enterprise_linux&#x2F;10-beta&#x2F;html&#x2F;10.0_beta_release_notes&#x2F;index&quot;&gt;https:&#x2F;&#x2F;docs.redhat.com&#x2F;en&#x2F;documentation&#x2F;red_hat_enterprise_linux&#x2F;10-beta&#x2F;html&#x2F;10.0_beta_release_notes&#x2F;index&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Preparing for EX294 (RHCE exam)</title>
        <published>2025-04-23T00:00:00+00:00</published>
        <updated>2025-04-23T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/posts/preparing-for-ex294-rhce-exam/"/>
        <id>https://631a557f.lvacula-com.pages.dev/posts/preparing-for-ex294-rhce-exam/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/posts/preparing-for-ex294-rhce-exam/">&lt;p&gt;I got my RHCSA certification last April. 
It was my first certification since shifting from my security-centered education and first job to my current role as a systems engineer. 
I learned plenty of stuff for my job while preparing for it, and it&#x27;s the most fulfilling exam I&#x27;ve taken to date because it is entirely practical. 
I also had a major head-start to learning it because I&#x27;d been using Linux as a daily OS since 2019. &lt;&#x2F;p&gt;
&lt;p&gt;The next exam in the series for Red Hat is the EX294 AKA the RHCE exam. 
The prior versions of the RHCE exam focused on advanced Linux topics, but the modern version is all about Ansible. 
Unfortunately, I had minimal exposure to Ansible prior to starting at this job. 
It wasn&#x27;t &lt;em&gt;none&lt;&#x2F;em&gt; but it was fairly close. &lt;&#x2F;p&gt;
&lt;p&gt;Luckily, I&#x27;ve had plenty of opportunities to get acquainted with it. 
We are quickly moving to using Ansible for as much as possible at work - enrolling servers in LDAP, setting up services on servers, etc... 
We&#x27;re also using Ansible Automation Platform, so learning to use execution environments and Navigator has become essential as well. &lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>homelab vs selfhosted</title>
        <published>2025-01-09T00:00:00+00:00</published>
        <updated>2025-01-09T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/homelab-vs-selfhosted/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/homelab-vs-selfhosted/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/homelab-vs-selfhosted/">&lt;p&gt;I don&#x27;t look at Reddit that often since they changed the API rules. On the rare chance that I do look, it&#x27;s usually either r&#x2F;homelab or r&#x2F;selfhosted. The two subreddits are practically the same with lots of focus on Linux, containers, etc... You often find people in r&#x2F;selfhosted talking about learning and testing things, and people in r&#x2F;homelab threads about what people are hosting. &lt;&#x2F;p&gt;
&lt;p&gt;I have to wonder if changing r&#x2F;selfhosted to r&#x2F;homeproduction would help at all.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Happy New Year</title>
        <published>2025-01-02T00:00:00+00:00</published>
        <updated>2025-01-02T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/posts/new-year-2025/"/>
        <id>https://631a557f.lvacula-com.pages.dev/posts/new-year-2025/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/posts/new-year-2025/">&lt;p&gt;I realize I&#x27;m a day late with this, but a happy new year to anyone who reads this. Hopefully it will be a good one.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>needs-reboot, Satellite, and Ansible</title>
        <published>2024-11-21T00:00:00+00:00</published>
        <updated>2024-11-21T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/posts/needs-reboot-satellite-and-ansible/"/>
        <id>https://631a557f.lvacula-com.pages.dev/posts/needs-reboot-satellite-and-ansible/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/posts/needs-reboot-satellite-and-ansible/">&lt;p&gt;This post outlines a solution I came up with for a recent problem at work: detecting if servers required a reboot after an update. 
I&#x27;ll explain the problem and provide the solution in the form of some Ansible job templates for use in Red Hat Satellite 6.15.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h1 id=&quot;problem&quot;&gt;Problem&lt;&#x2F;h1&gt;
&lt;p&gt;Prior to RHEL9, you could use the &lt;code&gt;katello-host-tools-tracer&lt;&#x2F;code&gt; package to provide Satellite with information about if a host required any services to be restarted. 
This method is no longer supported and as far as I can tell there is no alternative integrated into Satellite. 
However, you can use the command &lt;code&gt;dnf needs-restarting -r&lt;&#x2F;code&gt; on the host to list services that will require a reboot to benefit from updates. 
This is an ideal time to use Ansible and the job templates within Satellite.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;solution&quot;&gt;Solution&lt;&#x2F;h1&gt;
&lt;p&gt;This solution uses three job templates: one to collect information from hosts, one to safely reboot the hosts, and one to reset the host facts created by the first one.&lt;&#x2F;p&gt;
&lt;p&gt;The job templates can be created in &amp;quot;Hosts -&amp;gt; Templates -&amp;gt; Job Templates&amp;quot;. 
You can copy from a pre-existing playbook job, or create a new one and change &amp;quot;Job -&amp;gt; Provider Type&amp;quot; to &amp;quot;Ansible&amp;quot;.
You&#x27;ll also need to enable the checkbox &amp;quot;Ansible -&amp;gt; Enable Ansible Callback&amp;quot; to allow the hosts to send facts back to Satellite.
&lt;em&gt;This is critical.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;This is the job template to check for the reboot and store the host fact.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;yaml&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-yaml &quot;&gt;&lt;code class=&quot;language-yaml&quot; data-lang=&quot;yaml&quot;&gt;&lt;span&gt;---
&lt;&#x2F;span&gt;&lt;span&gt;- &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;hosts&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;all
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;tasks&lt;&#x2F;span&gt;&lt;span&gt;:
&lt;&#x2F;span&gt;&lt;span&gt;    - &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;name&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;Run needs-restarting check
&lt;&#x2F;span&gt;&lt;span&gt;      &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;shell&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;dnf needs-restarting -r
&lt;&#x2F;span&gt;&lt;span&gt;      &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;changed_when&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;false
&lt;&#x2F;span&gt;&lt;span&gt;      &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;register&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;needs_restarting_result
&lt;&#x2F;span&gt;&lt;span&gt;      &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;failed_when&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;false
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    - &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;name&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;Register fact
&lt;&#x2F;span&gt;&lt;span&gt;      &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;set_fact&lt;&#x2F;span&gt;&lt;span&gt;: 
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;needs_restarting&lt;&#x2F;span&gt;&lt;span&gt;: &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;{{ (needs_restarting_result.rc == 1) | bool }}&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot; 
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This job template will allow you to restart the servers. &lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;yaml&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-yaml &quot;&gt;&lt;code class=&quot;language-yaml&quot; data-lang=&quot;yaml&quot;&gt;&lt;span&gt;---
&lt;&#x2F;span&gt;&lt;span&gt;- &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;hosts&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;all
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;tasks&lt;&#x2F;span&gt;&lt;span&gt;:
&lt;&#x2F;span&gt;&lt;span&gt;    - &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;name&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;Safety check
&lt;&#x2F;span&gt;&lt;span&gt;      &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;ansible.builtin.debug&lt;&#x2F;span&gt;&lt;span&gt;:
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;msg&lt;&#x2F;span&gt;&lt;span&gt;: &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;Has &lt;&#x2F;span&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;\&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;restart_safety_variable&lt;&#x2F;span&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;\&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt; been set to &lt;&#x2F;span&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;\&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;YES&lt;&#x2F;span&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;\&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;?: {{ restart_safety_variable }}&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;      &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;failed_when&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;restart_safety_variable != &amp;quot;YES&amp;quot; 
&lt;&#x2F;span&gt;&lt;span&gt;  
&lt;&#x2F;span&gt;&lt;span&gt;    - &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;name&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;Reboot with 10 minute timeout
&lt;&#x2F;span&gt;&lt;span&gt;      &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;ansible.builtin.reboot&lt;&#x2F;span&gt;&lt;span&gt;:
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;reboot_timeout&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;600
&lt;&#x2F;span&gt;&lt;span&gt;  
&lt;&#x2F;span&gt;&lt;span&gt;    - &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;name&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;Register fact
&lt;&#x2F;span&gt;&lt;span&gt;      &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;set_fact&lt;&#x2F;span&gt;&lt;span&gt;: 
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;needs_restarting&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;false
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# Add an input in the job template with the following parameters:
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# Name: &amp;quot;restart_safety_variable&amp;quot;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# Required: enabled
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# Input Type: User input
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# Value Type: Plain
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# Advanced: disabled
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# Hidden value: disabled
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# Options: (blank)
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# Default: &amp;quot;NO&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;It&#x27;s possible to use the &amp;quot;Ansible Command&amp;quot; job with a &amp;quot;restart&amp;quot; command, but this method offers a few benefits:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;It will automatically reset the &lt;code&gt;needs_restarting&lt;&#x2F;code&gt; variable to &lt;code&gt;false&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;It will detect if the host came back online.
I&#x27;ve also included a &amp;quot;safety&amp;quot; feature that will fail the playbook if &amp;quot;YES&amp;quot; is not entered while configuring a job execution to prevent a potential accident.
To use it, enter &amp;quot;YES&amp;quot; into the &amp;quot;restart_safety_variable&amp;quot; box on the target selection screen when running the job.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Finally, this job template is either to get the initial facts for each host, or to reset everything if you&#x27;ve done some manual reboots. &lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;yaml&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-yaml &quot;&gt;&lt;code class=&quot;language-yaml&quot; data-lang=&quot;yaml&quot;&gt;&lt;span&gt;---
&lt;&#x2F;span&gt;&lt;span&gt;- &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;hosts&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;all
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;tasks&lt;&#x2F;span&gt;&lt;span&gt;:
&lt;&#x2F;span&gt;&lt;span&gt;    - &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;name&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;Register fact
&lt;&#x2F;span&gt;&lt;span&gt;      &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;set_fact&lt;&#x2F;span&gt;&lt;span&gt;: 
&lt;&#x2F;span&gt;&lt;span&gt;        &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;needs_restarting&lt;&#x2F;span&gt;&lt;span&gt;: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;false
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;You can search for which hosts need a restart by going to &amp;quot;Hosts -&amp;gt; All Hosts&amp;quot; and searching for &lt;code&gt;facts.needs_restarting = true&lt;&#x2F;code&gt;. &lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Notes After a Year at My Current Job</title>
        <published>2024-09-04T00:00:00+00:00</published>
        <updated>2024-09-04T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/posts/notes-on-a-year-at-current-job/"/>
        <id>https://631a557f.lvacula-com.pages.dev/posts/notes-on-a-year-at-current-job/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/posts/notes-on-a-year-at-current-job/">&lt;p&gt;About a year ago, I started working for a new company. 
This was a major shift for me as I&#x27;d gone from being a fully-remote penetration tester with a focus on Windows to an on-site systems engineer with a focus on Linux.
This post is some of my thoughts on the change, and things I&#x27;ve learned about my work and myself in that time. &lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;I &lt;em&gt;really&lt;&#x2F;em&gt; enjoy being a Linux admin more than a Windows admin. 
I prefer the tooling and being able to do most of my work over SSH.&lt;&#x2F;li&gt;
&lt;li&gt;I need to have some kind of project tracking like a kanban board so that I don&#x27;t get lost in a list of 700 tasks. &lt;&#x2F;li&gt;
&lt;li&gt;I can learn a &lt;em&gt;lot&lt;&#x2F;em&gt; through hands-on work and troubleshooting. 
I already kind of knew this one but not how &lt;em&gt;much&lt;&#x2F;em&gt; I could learn. 
A year ago, I had never heard of Satellite and Ansible was something I used in a class one time. 
Today, I&#x27;m the SME for Satellite at the company and leading our Ansible Automation Platform deployment project. &lt;&#x2F;li&gt;
&lt;li&gt;Red Hat has wonderful people working for them. 
Everyone I&#x27;ve met on sales calls, in workshops, and at the Summit has been a pleasure to talk to.&lt;&#x2F;li&gt;
&lt;li&gt;It is so much fun having Linux nerds to talk to who aren&#x27;t developers. 
That&#x27;s not a jab against developers, but there is a difference between a Linux nerd who mostly talks about programming new drivers and a Linux nerd who knows how to write Systemd unit files. &lt;&#x2F;li&gt;
&lt;li&gt;I &lt;em&gt;loathe&lt;&#x2F;em&gt; driving into an office. 
I had an hour-long commute each way for most of the past year.
It was a huge waste of time, energy, and (gas) money.&lt;&#x2F;li&gt;
&lt;li&gt;I also strongly dislike &lt;em&gt;being in&lt;&#x2F;em&gt; an office. 
I never felt unsafe or anything, but I never felt comfortable either. &lt;&#x2F;li&gt;
&lt;li&gt;Basic &lt;code&gt;vim&lt;&#x2F;code&gt; usage is worth it to learn. 
I originally did so because &lt;code&gt;nano&lt;&#x2F;code&gt; wasn&#x27;t available on all of the servers I was managing. 
I continue to use it as my default because it feels a little more ergonomic than the alternatives. &lt;&#x2F;li&gt;
&lt;li&gt;Ansible is incredibly satisfying. 
There&#x27;s nothing quite like going from base installation to a working service in 2 minutes with one command.&lt;&#x2F;li&gt;
&lt;li&gt;There are plenty of tricks and tools that I have no idea about yet but will change the way I work as soon as I learn them. For example:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bash&lt;&#x2F;code&gt;&#x27;s &lt;code&gt;Ctrl-r&lt;&#x2F;code&gt; to do a substring search on history instead of tapping the up key a bunch&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;at&lt;&#x2F;code&gt; to schedule one-off commands&lt;&#x2F;li&gt;
&lt;li&gt;Everything related to Ansible&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;I may add to this post as I think of more.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>20240528</title>
        <published>2024-05-28T00:00:00+00:00</published>
        <updated>2024-05-28T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/20240528/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/20240528/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/20240528/">&lt;p&gt;I&#x27;ve been rebuilding my homelab using Fedora Rawhide + Ansible. It&#x27;s a nice mix of the kind of stuff I use at work and the bleeding-edge updates I prefer for home use. The goal is to have something that can be rebuilt 100% from Ansible. &lt;&#x2F;p&gt;
&lt;p&gt;Of course, I&#x27;m making it harder on myself by aiming for an OKD setup...&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>I am now an RHCSA</title>
        <published>2024-04-15T00:00:00+00:00</published>
        <updated>2024-04-15T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/posts/i-am-now-an-rhcsa/"/>
        <id>https://631a557f.lvacula-com.pages.dev/posts/i-am-now-an-rhcsa/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/posts/i-am-now-an-rhcsa/">&lt;p&gt;As of last Friday afternoon, I am a Red Hat Certified System Administrator. &lt;&#x2F;p&gt;
&lt;p&gt;It was my first time taking a certification exam that was 100% practical and I was really nervous going into it.
You at least can get things right by &lt;em&gt;chance&lt;&#x2F;em&gt; if it&#x27;s a multiple-choice question, but there was no such chance here. 
Thankfully, I studied and knew how to find what extra info I needed during the exam via the man pages. 
I passed with a score of 286 out of a possible 300 (with 210 being the cut-off). &lt;&#x2F;p&gt;
&lt;p&gt;Exam rules mean that I can&#x27;t discuss any of the details of the exam.
That&#x27;s a shame because I wanted to share the anecdote of spending the last 40 minutes on a single task because of an issue related to the man pages for a particular tool. 
I&#x27;ll share what I think is most important for anyone who might be considering the exam themselves: my study methods.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Before I began studying for the exam, I had several years of using Arch Linux as my primary OS for my desktop and laptop. I was already very comfortable with using the command line to do things. Additionally, I had several months of work-related experience with RHEL specifically. &lt;&#x2F;li&gt;
&lt;li&gt;I used the EX200 Study Guide from Pearson by Sander van Vugt. I skipped most of the end-of-chapter questions in favor of the labs and practice tests. What questions I did have, I allowed myself to use man pages to answer them without counting it as cheating.&lt;&#x2F;li&gt;
&lt;li&gt;I didn&#x27;t study a lot per week but tried to practice things where I could with a mix of Anki and a set of VMs.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Next on the list: RHCE.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Learning to Use Your Hammer by Turning Things into Nails</title>
        <published>2024-04-11T00:00:00+00:00</published>
        <updated>2024-04-11T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/learning-to-use-your-hammer-by-turning-things-into-nails/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/learning-to-use-your-hammer-by-turning-things-into-nails/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/learning-to-use-your-hammer-by-turning-things-into-nails/">&lt;p&gt;There&#x27;s the famous saying: &amp;quot;When all you have is a hammer, everything looks like a nail&amp;quot;. It&#x27;s meant to imply that when your skills or tools are limited, you think it can be applied to anything and everything (and that this is a bad thing). &lt;&#x2F;p&gt;
&lt;p&gt;But what if you get your new hammer and want to learn to use it as fast and effectively as possible? It may be useful to learn to use it to solve problems it wasn&#x27;t designed for. Examples:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;You&#x27;re learning Ansible and create playbooks to run on localhost instead of a bash script.&lt;&#x2F;li&gt;
&lt;li&gt;You&#x27;re learning to draw and use a brush pen for sketching instead of a pencil.&lt;&#x2F;li&gt;
&lt;li&gt;You try containerizing an app that you&#x27;d have traditionally installed bare-metal.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;This isn&#x27;t something you should do in production - but I think it has its merits.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Sudo for Windows</title>
        <published>2024-04-07T00:00:00+00:00</published>
        <updated>2024-04-07T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/sudo-for-windows/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/sudo-for-windows/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/sudo-for-windows/">&lt;p&gt;Over 40 years after the initial release of &lt;code&gt;sudo&lt;&#x2F;code&gt; for UNIX, Microsoft &lt;a href=&quot;https:&#x2F;&#x2F;www.bleepingcomputer.com&#x2F;news&#x2F;microsoft&#x2F;the-new-features-coming-in-windows-11-24h2-expected-this-fall&#x2F;&quot;&gt;is adding sudo to windows&lt;&#x2F;a&gt;. Thank you, Microsoft.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Please Don&#x27;t Dunk on Scam Victims</title>
        <published>2024-04-06T00:00:00+00:00</published>
        <updated>2024-04-06T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/posts/please-dont-dunk-on-scam-victims/"/>
        <id>https://631a557f.lvacula-com.pages.dev/posts/please-dont-dunk-on-scam-victims/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/posts/please-dont-dunk-on-scam-victims/">&lt;p&gt;Yesterday, a Twitter user going by the name &amp;quot;marsothy&amp;quot; (@splatatouille) posted a thread of tweets about getting caught up in a Discord scam. You can find that thread [linked here](https:&#x2F;&#x2F;twitter.com&#x2F;splatatouille&#x2F;status&#x2F;1776311022506459564) (link broken) but I&#x27;ll summarize it here: &lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;a friend&#x27;s account was compromised&lt;&#x2F;li&gt;
&lt;li&gt;scammer poses as friend claiming that Marsothy needs to get in contact with Discord support via a specified Discord account&lt;&#x2F;li&gt;
&lt;li&gt;having Marsothy change their Discord account&#x27;s email address&lt;&#x2F;li&gt;
&lt;li&gt;asking for banking information&lt;&#x2F;li&gt;
&lt;li&gt;asking for a money transfer via Venmo + Bitcoin&lt;&#x2F;li&gt;
&lt;li&gt;Marsothy is locked out of their account&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;I&#x27;ve had one person DM this to me, and another group I&#x27;m part of post about it. 
The general consensus was &amp;quot;this person was very dumb&amp;quot;. 
And yeah, to an extent, he was. 
Having to share your bank account information or sent money via crypto is really clear of a scam and I&#x27;d like to believe that I wouldn&#x27;t fall for something like that.
But some of it tilted the scales in the scammer&#x27;s favor.&lt;&#x2F;p&gt;
&lt;p&gt;It&#x27;s important to note that:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Marsothy had just woken up (so probably not thinking straight)&lt;&#x2F;li&gt;
&lt;li&gt;Marsothy had never heard of this kind of scam.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Scammers prey on you not thinking rationally.
If you got a text from your [mother&#x2F;close fiend&#x2F;amicable ex-lover] using a semi-verified way of knowing it was them (like phone contacts) shortly after waking up, you&#x27;d probably not think as much about &amp;quot;who is this&amp;quot; versus &amp;quot;how can I help&amp;quot;. 
I used to construct social engineering campaigns professionally (and under legal contracts that gave me permission to do so). &lt;&#x2F;p&gt;
&lt;p&gt;They also prey on people now knowing about scams. 
Yeah, this one might have been less believeable once it got the the bank account stage.
But &lt;strong&gt;it&#x27;s a good thing to share knowledge of scams&lt;&#x2F;strong&gt; even if it&#x27;s embarrassing. 
We need to stop dunking on people who share that they fell for a scam.
I applaud Marsothy for sharing this with the world. &lt;&#x2F;p&gt;
&lt;p&gt;I leave you with two of his tweets from after the thread had been up for a while:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;muting this, but that you to everyone who has been understanding of my situation despite the...questionable lack of judgement i had in the moment. [...] hopefully sharing will prevent more people from falling victim to this terrible scam
everybody calling me or anyone stupid for falling victim to this kind of situation, you&#x27;re really not helping anybody &lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Ruff</title>
        <published>2024-03-26T00:00:00+00:00</published>
        <updated>2024-03-26T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/ruff/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/ruff/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/ruff/">&lt;p&gt;I tried the &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;astral-sh&#x2F;ruff&quot;&gt;Ruff linter for Python&lt;&#x2F;a&gt; today. It&#x27;s pretty snazzy. I think it&#x27;ll become part of my standard toolset for Python stuff.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Home Lab and Selfhosting Redesign Thoughts</title>
        <published>2024-03-09T00:00:00+00:00</published>
        <updated>2024-03-09T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/posts/redesigning-my-selfhosting-setup-and-lab/"/>
        <id>https://631a557f.lvacula-com.pages.dev/posts/redesigning-my-selfhosting-setup-and-lab/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/posts/redesigning-my-selfhosting-setup-and-lab/">&lt;p&gt;I&#x27;ve been hosting some of my own services since 2019. 
It started as just a Wordpress blog, but now I have things like Nextcloud and Shaarli that give me tangible benefits. 
However, these services are currently spread across about 5 different servers and nearly none of them are worth the price for what they do individually. 
The goal of this post is to share my thoughts and possibly collect some feedback about how to go about changing things. &lt;&#x2F;p&gt;
&lt;p&gt;(Side note: Google says that I&#x27;ve spent nearly $1500 in their cloud since April 2019. That sounds like a lot, but the amount I&#x27;ve gained from learning to use it has been a lot more.)&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-current-setup&quot;&gt;The Current Setup&lt;&#x2F;h2&gt;
&lt;p&gt;Currently, I have a server in Google Cloud that I pay ~$30 a month for. 
It hosts Nextcloud, Mediawiki, &lt;a href=&quot;https:&#x2F;&#x2F;lvacula.com&quot;&gt;my blog&lt;&#x2F;a&gt;, and some other smaller services. 
The VPS is running Rocky Linux, and the services are all in Docker.
My primary reason for using it is not a particularly great one - it&#x27;s what I&#x27;ve been using since I started selfhosting. 
That&#x27;s... not a great reason.
$30 for 2 vCPUs and 4GB of RAM is enough to buy the equivelent Raspberry Pi model every 2 months.
However, it also gives me a different IP (so nobody is who tries to DDOS me will kill my home network connectivity) and it&#x27;s resilient to the semi-regular power outages I have at home. &lt;&#x2F;p&gt;
&lt;p&gt;In addition to that server, I also have a used SuperMicro server that I use for a mix of home lab and selfhosting. 
I&#x27;ve got several VMs running under KVM - including an OpnSense router to put them all in a private subnet. 
It also serves as a jumpbox to my network if I&#x27;m out somewhere and need to access my home network (though I won&#x27;t give details for security reasons).
It&#x27;s a really cool setup and has been fun for learning Ansible + networking, but the power usage really high for what&#x27;s essentially just running Gitea, Jenkins, and Vaultwarden. 
The trade-off is that I get way more bang for my buck than the VPS, but I waste a lot of electricity on unused potential.&lt;&#x2F;p&gt;
&lt;p&gt;Two other servers of note:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;An OVH VPS that is a simple Wireguard tunnel + nginx stream proxy to the SuperMicro for I-don&#x27;t-want-to-share-my-home-IP reasons.&lt;&#x2F;li&gt;
&lt;li&gt;A Dell mini PC for testing things when I don&#x27;t want to provision a new VM in KVM, and for hosting some friends&#x27; stuff that doesn&#x27;t need 90+% uptime.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;the-proposed-setup&quot;&gt;The Proposed Setup&lt;&#x2F;h2&gt;
&lt;p&gt;In my theoretical new setup:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;The Google VPS would be removed.&lt;&#x2F;li&gt;
&lt;li&gt;The blog is migrated to Cloudflare Pages or Github Pages.&lt;&#x2F;li&gt;
&lt;li&gt;All services are moved to a different domain (&lt;code&gt;vacula.xyz&lt;&#x2F;code&gt; instead of &lt;code&gt;lvacula.com&lt;&#x2F;code&gt;).&lt;&#x2F;li&gt;
&lt;li&gt;All services are moved to a Dell micro PC with a UPS for power.&lt;&#x2F;li&gt;
&lt;li&gt;All services are moved to rootless Podman.&lt;&#x2F;li&gt;
&lt;li&gt;All services are separated into per-service pods and mapped to different ports from 8080 to 8090, then reverse-proxied out to the OVH VPS.&lt;&#x2F;li&gt;
&lt;li&gt;The SuperMicro server is powered down unless I&#x27;m actively using it for home lab or game server hosting. &lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The key part of this for me is the move from bare-metal services and Docker to rootless Podman. 
The security benefits of it are almost too incredible to &lt;em&gt;not&lt;&#x2F;em&gt; use it. 
Additionally, I want to be able to help document it and &lt;code&gt;podman kube play ...&lt;&#x2F;code&gt; + kube YAML system because &lt;code&gt;podman compose&lt;&#x2F;code&gt; is &lt;em&gt;not&lt;&#x2F;em&gt; a perfect replacement for &lt;code&gt;docker compose&lt;&#x2F;code&gt;. &lt;&#x2F;p&gt;
&lt;p&gt;Do you have thoughts on this?
Do you use Podman for your self-hosting setup? 
Then please, dear reader, email me with your advice and knowledge. 
My email is &amp;quot;lukas&amp;quot; at this domain. &lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>SubdoMailing Campaign</title>
        <published>2024-02-27T00:00:00+00:00</published>
        <updated>2024-02-27T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/subdomailing-campaign/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/subdomailing-campaign/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/subdomailing-campaign/">&lt;p&gt;I came across this while reading my RSS feeds this morning: there&#x27;s a new ad fraud campaign that is using insecure domains from big names like VMware and Marvel. But the interesting thing for me isn&#x27;t the names attached, but that it seems so simple of an attack: look for outdated and unregistered domains, and use their existing presence in other companies mail records to bypass spam filters. &lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.bleepingcomputer.com&#x2F;news&#x2F;security&#x2F;hijacked-subdomains-of-major-brands-used-in-massive-spam-campaign&#x2F;&quot;&gt;Relevant link to Bleeping Computer article&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>20240222</title>
        <published>2024-02-22T00:00:00+00:00</published>
        <updated>2024-02-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/20240222/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/20240222/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/20240222/">&lt;p&gt;Quality-of-life suggestion for the day: turn off the annoying bell in Windows terminal by going to a profile -&amp;gt; Advanced -&amp;gt; Bell notification style and turning off &amp;quot;audible&amp;quot;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Slower and More Meaningful</title>
        <published>2024-02-19T00:00:00+00:00</published>
        <updated>2024-02-19T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/slower-and-more-meaningful/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/slower-and-more-meaningful/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/slower-and-more-meaningful/">&lt;p&gt;Lately, I&#x27;ve felt like I need to be more conscious about my &amp;quot;free&amp;quot; time. There are many reasons for it (work schedule, the rise of generative AI, ...) but I&#x27;m &lt;em&gt;mildly&lt;&#x2F;em&gt; happy with the results thus far?&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;d like to make a dedicated post of it, but I&#x27;m having trouble putting my feelings into words.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Thoughts on FSRS</title>
        <published>2024-02-15T00:00:00+00:00</published>
        <updated>2024-02-15T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/thoughts-on-fsrs/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/thoughts-on-fsrs/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/thoughts-on-fsrs/">&lt;p&gt;I&#x27;ve been trying FSRS for about a month now. Here&#x27;s my thoughts on it so far:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;I feel like I have a more manageable workload. However, part of me wonders if this is because I&#x27;m not putting all of my effort into studying a cert or a language. &lt;&#x2F;li&gt;
&lt;li&gt;I don&#x27;t think about how my choices are affecting the ease factor anymore. &lt;&#x2F;li&gt;
&lt;li&gt;The 3-component model is a lot easier to understand than SM-2&#x27;s ease.&lt;&#x2F;li&gt;
&lt;li&gt;I wish I had been studying more during the Fall. My stats page isn&#x27;t reliable because my Anki usage was very sparse for most of 2023. &lt;&#x2F;li&gt;
&lt;li&gt;Some of the intervals for relatively new cards feel very long. I&#x27;m not sure what to make of this. I&#x27;ll probably need to reflect on this again in a few months &lt;&#x2F;li&gt;
&lt;li&gt;Even with the helper add-on to auto-reschedule cards on sync on desktop, I still feel disincentivized to use Ankidroid due to lack of native support.&lt;&#x2F;li&gt;
&lt;li&gt;It has been a very positive experience overall. &lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Discord as a UI Library</title>
        <published>2024-02-05T00:00:00+00:00</published>
        <updated>2024-02-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/discord-as-a-ui-library/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/discord-as-a-ui-library/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/discord-as-a-ui-library/">&lt;p&gt;One annoying problem I have with learning something new programming-wise: 
I&#x27;m so familiar with the Discord.py API library that any &lt;em&gt;real&lt;&#x2F;em&gt; UI library feels like it has too much friction to be worth it for any of my projects.
It&#x27;s even cross-platform!&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;m torn between freshening up my PyQt, learning Kotlin + Android dev, or looking into something else for Linux&#x2F;Windows dev...&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Email Migration Inquiry</title>
        <published>2024-02-01T00:00:00+00:00</published>
        <updated>2024-02-01T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/posts/email-migration-inquiry/"/>
        <id>https://631a557f.lvacula-com.pages.dev/posts/email-migration-inquiry/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/posts/email-migration-inquiry/">&lt;p&gt;Google&#x27;s made progress with their handoff of domain-related things to Squarespace. As I write this, my domain is being transferred to Cloudflare.&lt;&#x2F;p&gt;
&lt;p&gt;However, no longer being with Google means no more Google Workspace for the email associated with this domain. So where should I go? My primary concern is avoiding the issue I had previously where emails were simply forwarded to another email but would sometimes be lost due to email destination authentication failing for the sender (or at least that&#x27;s what Google Support said).&lt;&#x2F;p&gt;
&lt;p&gt;I really only need basic sending&#x2F;recieving functionality, the ability to use a custom domain, and the industry standard IMAP&#x2F;SMTP access. 
Spam filtering would be strongly preferred, but I haven&#x27;t had an issue with that since the days that Verizon still managed Verizon.net emails. 
Calendars, rules, etc are all something that I manage via Thunderbird. &lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;d like to avoid Outlook, Google&#x2F;Gmail, and AOL. 
I don&#x27;t mind paying for email service, but I&#x27;ve had bad experiences with two of those three and feel a little bitter about the third for making me have to do this to begin with. &lt;&#x2F;p&gt;
&lt;p&gt;The top contender looks like ProtonMail. 
I&#x27;ve already reached out to their support team to see if they know if this would be an issue or not. 
So far the only point against them is that you have to buy the bundle that includes extra drive space and a VPN - two things that I&#x27;m sure increase the overall price.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;A small note on my search so far: where&#x27;s &lt;a href=&quot;https:&#x2F;&#x2F;www.hey.com&#x2F;&quot;&gt;Hey&lt;&#x2F;a&gt;, that email service everyone was raving about for a while, in all of the &amp;quot;top 12 best email providers&amp;quot; lists that keep appearing in Google?
Did they piss off the wrong listicle writer?
Are they just not interesting anymore?&lt;&#x2F;p&gt;
&lt;p&gt;I don&#x27;t think I&#x27;ll go with them for three reasons:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Most of their benefits appear to be part of the interface they offer.&lt;&#x2F;li&gt;
&lt;li&gt;It would cost me 120$&#x2F;year because the domains plan costs 10$ for a single user per month and they do not offer a yearly pricing option for the plan with custom domains.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.hey.com&#x2F;faqs&#x2F;#can-i-check-my-hey-email-with-my-existing-email-app&quot;&gt;They don&#x27;t support IMAP or POP.&lt;&#x2F;a&gt;&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;How was this popular with all of the developers I was following?&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>20240131</title>
        <published>2024-01-31T00:00:00+00:00</published>
        <updated>2024-01-31T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/20240131-security-vuln/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/20240131-security-vuln/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/20240131-security-vuln/">&lt;p&gt;Signal boosting this in case someone &lt;em&gt;hasn&#x27;t&lt;&#x2F;em&gt; seen it: 
there&#x27;s a new flat in glibc (one of, if not &lt;em&gt;the&lt;&#x2F;em&gt;, most common library on Linux) that allows local privilege escalation.
The latest versions of Fedora, Debian, and Ubuntu are all affected so update if you can.&lt;&#x2F;p&gt;
&lt;p&gt;Relevant links:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.bleepingcomputer.com&#x2F;news&#x2F;security&#x2F;new-linux-glibc-flaw-lets-attackers-get-root-on-major-distros&#x2F;&quot;&gt;https:&#x2F;&#x2F;www.bleepingcomputer.com&#x2F;news&#x2F;security&#x2F;new-linux-glibc-flaw-lets-attackers-get-root-on-major-distros&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.qualys.com&#x2F;2024&#x2F;01&#x2F;30&#x2F;cve-2023-6246&#x2F;syslog.txt&quot;&gt;https:&#x2F;&#x2F;www.qualys.com&#x2F;2024&#x2F;01&#x2F;30&#x2F;cve-2023-6246&#x2F;syslog.txt&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Shortnotes Change</title>
        <published>2024-01-31T00:00:00+00:00</published>
        <updated>2024-01-31T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/20240131/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/20240131/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/20240131/">&lt;p&gt;In the interest of keeping things easier to read, I&#x27;ve migrated all of my &amp;quot;shortnotes&amp;quot; posts to a separate page. &lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>20240129</title>
        <published>2024-01-29T00:00:00+00:00</published>
        <updated>2024-01-29T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/20240129/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/20240129/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/20240129/">&lt;p&gt;Do you ever work on something at work and wish you had a use for it in your homelab? 
I&#x27;m feeling like that right now with Ceph. 
Data storage is such a fun topic, but I can&#x27;t justify buying all of the network and storage hardware needed to make a decent cluster instead of just buying more storage for my Synology NAS.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Trying Out FSRS</title>
        <published>2024-01-15T00:00:00+00:00</published>
        <updated>2024-01-15T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/testing-fsrs/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/testing-fsrs/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/testing-fsrs/">&lt;p&gt;I&#x27;m trying out the new FSRS scheduling algorithm for Anki.
I was hesitant to use it when it was first announced because it seemed to be undergoing a lot of fast changes and required a fair amount of manual setup.
But now it&#x27;s in the main Anki code (though not in AnkiDroid, yet) and it seems like a poor idea to &lt;em&gt;not&lt;&#x2F;em&gt; use it. &lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Commenting on a Paper from First Monday about Generative AI</title>
        <published>2024-01-06T00:00:00+00:00</published>
        <updated>2024-01-06T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/posts/ai-discussion/"/>
        <id>https://631a557f.lvacula-com.pages.dev/posts/ai-discussion/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/posts/ai-discussion/">&lt;p&gt;One of the 400 RSS feeds in my FreshRSS instance is an open-access journal that describes itself as &amp;quot;solely devoted to the internet&amp;quot;: First Monday. 
Reviewing this month&#x27;s articles had one that was particularly interesting for me: &lt;a href=&quot;https:&#x2F;&#x2F;firstmonday.org&#x2F;ojs&#x2F;index.php&#x2F;fm&#x2F;article&#x2F;view&#x2F;13541&quot;&gt;Why do people use ChatGPT? Exploring user motivations for generative conversational AI&amp;quot;&lt;&#x2F;a&gt;. 
I encourage you to read it. &lt;&#x2F;p&gt;
&lt;p&gt;This post will be some comments on the paper (mostly just the points I found interesting).&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;There were 197 participants in the study. Okay, this one isn&#x27;t interesting but it will help contextualize the numbers below.&lt;&#x2F;li&gt;
&lt;li&gt;58% of participants reported using ChatGPT weekly or more, but only 4% used it daily. I initially thought the difference would be because they&#x27;re using it for work (and thus not on the weekends), but using it for personal use is &lt;em&gt;more&lt;&#x2F;em&gt; popular (82% for personal use versus 38% for work). &lt;&#x2F;li&gt;
&lt;li&gt;The most popular theme for ChatGPT use was productivity at 55%. That tracks with my priors. Interest in the technology was second at 51%, then a big drop down to only 20% for fun and amusement. &lt;&#x2F;li&gt;
&lt;li&gt;Some people used it to come up with dinner suggestions (no complaints here!). Others used it to set up diet plans (scary!) or &amp;quot;a place to address mental health issues&amp;quot; (also scary!).&lt;&#x2F;li&gt;
&lt;li&gt;5 of the participants reported &amp;quot;high reliability or trustworthiness of the information it offered&amp;quot;. I&#x27;m reminded of a question someone asked of where the idea that generative AI was reliable for information came from. Why do people assume it is good at being &lt;em&gt;correct&lt;&#x2F;em&gt; and not confidently wrong? That was one of the first things that came to mind when I first heard of it.&lt;&#x2F;li&gt;
&lt;li&gt;More people (24) reported using it as a support tool for writing, such as to re-word their own sentences, than as a purely generative tool (10). This feels slightly better to me than if pure generation was more popular.
&lt;ul&gt;
&lt;li&gt;This difference was narrower in software developement. 17 used it for generation and 14 for debugging&#x2F;problem-solving. I think I feel less good about this.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Two of the summarized uses that the authors list in the discussion - alleviating the burden of decision making and dealing with information overload - feel like they&#x27;re connected. What is the burden of decision making but an information overload related to a particular choice?&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Happy New Year</title>
        <published>2024-01-02T00:00:00+00:00</published>
        <updated>2024-01-02T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/happy-new-year/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/happy-new-year/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/happy-new-year/">&lt;p&gt;Happy New Year to those who celebrate using a solar calendar! Only another 24 until we hit a nice, &lt;a href=&quot;https:&#x2F;&#x2F;xkcd.com&#x2F;1000&#x2F;&quot;&gt;round-number milestone&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Some things I&#x27;ve recently learned about Podman (and Docker)</title>
        <published>2023-11-27T00:00:00+00:00</published>
        <updated>2023-11-27T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/podman-learning/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/podman-learning/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/podman-learning/">&lt;ul&gt;
&lt;li&gt;Podman does not require a user to have unique permissions to use it.&lt;&#x2F;li&gt;
&lt;li&gt;Any user on a docker-enabled system that also is in the docker group can become root with one command&lt;&#x2F;li&gt;
&lt;li&gt;The &amp;quot;ADD&amp;quot; directive in a Containerfile or Dockerfile is considered more insecure than &amp;quot;COPY&amp;quot; because it can pull remote directories.&lt;&#x2F;li&gt;
&lt;li&gt;Podman was made with Docker command compatability in mind because the devs knew they&#x27;d never get market share otherwise.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Mobile Posting Test</title>
        <published>2023-11-26T00:00:00+00:00</published>
        <updated>2023-11-26T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/mobile-posting-test/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/mobile-posting-test/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/mobile-posting-test/">&lt;p&gt;This post is a test of how easy it is to post from a mobile device using the Jenkins auto-deploy system I set up the other week. I&#x27;m currently sitting in a restaurant waiting for a friend to finish their food. GitNex&#x27;s editor isn&#x27;t the most impressive, but it isn&#x27;t bad either.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Why I moved from Wordpress to Zola</title>
        <published>2023-11-21T00:00:00+00:00</published>
        <updated>2023-11-21T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/posts/why-zola/"/>
        <id>https://631a557f.lvacula-com.pages.dev/posts/why-zola/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/posts/why-zola/">&lt;p&gt;I&#x27;ve used a few different site generators and blogging platforms over the years, including but not limited to:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Wordpress&lt;&#x2F;li&gt;
&lt;li&gt;Google Blogger &lt;&#x2F;li&gt;
&lt;li&gt;Tumblr&lt;&#x2F;li&gt;
&lt;li&gt;Pelican&lt;&#x2F;li&gt;
&lt;li&gt;MediaWiki (yes, it counts)&lt;&#x2F;li&gt;
&lt;li&gt;DokuWiki (it counts too!)&lt;&#x2F;li&gt;
&lt;li&gt;Zola&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;It should go without saying that every system has its benefits and trade-offs. 
This post about the &lt;em&gt;specific&lt;&#x2F;em&gt; trade-offs that made me switch from Wordpress to Zola. &lt;&#x2F;p&gt;
&lt;p&gt;My primary issue with Wordpress is the writing. 
Gutenberg seems like it would be a very useful editor for a more traditional writer or someone who doesn&#x27;t have an emphasis on technical content.
I couldn&#x27;t figure out how to easily move from extended code blocks back to normal writing without using my mouse to add a new paragraph block.
(The classic editor doesn&#x27;t fix this issue.)
With static site generator that rely on Markdown syntax for formatting (like Zola), it&#x27;s as simple as adding a few backticks at the start and end.
I write enough code or &lt;code&gt;general monospace text&lt;&#x2F;code&gt; that this was a dealbreaker for me.&lt;&#x2F;p&gt;
&lt;p&gt;The second major issue was the difficulties I had in customizing the site. 
This isn&#x27;t an issue of Wordpress lacking customization - Wordpress themes are popular enough for entire businesses to be built upon the back of them.
Unfortunately, the graphical editor wasn&#x27;t behaving for me (primarily not reliably changing link colors to those in my color scheme) and the code side is its own monster.
I don&#x27;t want to become a web developer to get my theming working.
Zola&#x27;s Tera templates only require a bit more than basic HTML and CSS.&lt;&#x2F;p&gt;
&lt;p&gt;Of course, there&#x27;s downsides to moving to Zola. 
The largest trade-off - and the reason that I waited so long to do so - is that there are extra steps to deploying the website. 
Wordpress is as simple as &amp;quot;write the content and hit publish&amp;quot;. 
Zola requires you to have the Zola binary, compile the website, and push the content to the web server host. 
You can simplify this by writing your content on the same host as the web server, but then you lose the ability to write and publish from anywhere. 
In my case, it also means losing the ability to use graphical editors. &lt;&#x2F;p&gt;
&lt;p&gt;The solution to that trade-off was learning to install and use Jenkins.
For the unfamiliar: Jenkins is a CI&#x2F;CD tool. 
I can write my content on any host, push the &amp;quot;source code&amp;quot; to a git repo, and Jenkins will take care of the rest.
In theory, Jenkins will detect and push a new version of this site within 3 minutes of a new commit being pushed to the git repo.
So far this has worked fairly well.&lt;&#x2F;p&gt;
&lt;p&gt;The final question I can imagine someone may ask is &amp;quot;Lukas, Pelican is a static site generator as well. Why did you move to a different one?&amp;quot;
The answer is Rust. 
Zola is written in it.
I&#x27;m learning it and want to use it more.
If I encounter a bug, I want to be able to fix it.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>I have conqured Podman&#x27;s YAML</title>
        <published>2023-11-18T00:00:00+00:00</published>
        <updated>2023-11-18T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/podman/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/podman/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/podman/">&lt;p&gt;I decided that I was done with Gitea&#x27;s weird port mapping, so I tried to fix it. 
Several hours of head-bashing later, I was left with a corrupted database and no Gitea instance.&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;m now writing this several hours &lt;em&gt;after that&lt;&#x2F;em&gt;. 
I&#x27;ve learned a surprising amount about Podman (compared to Docker), Kubernetes, pods, and several other things that I&#x27;ll probably end up using at work some day.&lt;&#x2F;p&gt;
&lt;p&gt;Expect a post some time this week about deploying a Zola static site with Jenkins.
And maybe some notes on why I switched from Wordpress to Zola. &lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Google finally feels worse</title>
        <published>2023-11-06T00:00:00+00:00</published>
        <updated>2023-11-06T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/google/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/google/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/google/">&lt;p&gt;I didn’t really agree with statements about Google’s search getting worse until today.&lt;&#x2F;p&gt;
&lt;p&gt;Using search would usually give me what I wanted within the first few results. All I’d need to do was skip past the inevitable Amazon link that would show up.&lt;&#x2F;p&gt;
&lt;p&gt;But for the past few days, I feel like I’ve had more and more “junk” in it.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Links that look like they are for a specific post on a forum, but take me to the main page instead.&lt;&#x2F;li&gt;
&lt;li&gt;Links for blogs that look like they were written by an AI.&lt;&#x2F;li&gt;
&lt;li&gt;Links that go to entirely different websites than those they appear to be for.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;It’s admittedly tiring and makes me want to restart my habit of bookmarking more sites.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>A surreal blog</title>
        <published>2023-10-31T00:00:00+00:00</published>
        <updated>2023-11-13T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/surreal-blog/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/surreal-blog/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/surreal-blog/">&lt;p&gt;I found a blog by someone who works at a polar research station. &lt;a href=&quot;https:&#x2F;&#x2F;brr.fyi&#x2F;posts&#x2F;polar-night&quot;&gt;Their post on nights&lt;&#x2F;a&gt; there is surreal. It reminds me of Signalis.&lt;&#x2F;p&gt;
&lt;p&gt;EDIT: I realized while porting this post to Zola that I posted this on Halloween. It wasn&#x27;t my intention to match that with a horror game reference, but it fits! :D&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Wordpress Gripes</title>
        <published>2023-10-30T00:00:00+00:00</published>
        <updated>2023-10-30T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/wordpress-gripes/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/wordpress-gripes/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/wordpress-gripes/">&lt;p&gt;Late night thought before work maintenance: I don’t particularly enjoy WordPress’ writing interface. It doesn’t feel suitable for quick or technical writing. Customizing the site feels like fighting against the tool.&lt;&#x2F;p&gt;
&lt;p&gt;Pelican (the static site generator) felt a lot nicer. Writing in markdown feels much nicer than using Gutenberg or the Classic Editor (plus I can do version control with Git!) and .html.j2 files for customization is easier than WordPress’ syntax. I’m hardly a Python dev – I don’t wanna be a web dev too.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Backups and YAML</title>
        <published>2023-10-29T00:00:00+00:00</published>
        <updated>2023-10-29T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/backups/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/backups/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/backups/">&lt;p&gt;Finally doing something that I should have done a long time ago – adding a second (and in some places, first) backup to my systems. BorgBase won over rsync.net for price, and over Backblaze B2 for ease of use with Borg. Bonus points for also making my GUI of choice – Vorta.&lt;&#x2F;p&gt;
&lt;p&gt;Additionally, I’m automating as much as possible with Ansible. I still loathe YAML for configuring anything, but Ansible nearly makes that worth it. ;p&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Resolved: Connection Issues on a libvirt Isolated Network to Router</title>
        <published>2023-10-07T00:00:00+00:00</published>
        <updated>2023-10-07T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/posts/resolved-libvirt-isolated/"/>
        <id>https://631a557f.lvacula-com.pages.dev/posts/resolved-libvirt-isolated/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/posts/resolved-libvirt-isolated/">&lt;p&gt;Quick answer: The isolated network auto-allocates the first address to a virtual interface for the hypervisor host. Check that your router’s IP isn’t set to the same thing.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;I was having issues the other night with my homelab setup. Specifically, devices would randomly be unable to communicate with the router. Pinging worked, but accessing OPNsense’s web interface wasn’t. It wasn’t firewall issues either.&lt;&#x2F;p&gt;
&lt;p&gt;After running &lt;code&gt;tcpdump&lt;&#x2F;code&gt; on the opnsense box, I realized that my traffic wasn’t even reaching it. I double checked that they were on the same vnet (they were), then checked the ARP table on the client I was using. Sure enough, the MAC of the supposed gateway wasn’t the same as the OPNsense interface.&lt;&#x2F;p&gt;
&lt;p&gt;I took down all other VMs except the router and client to isolate the issue in case it was a misconfiguration, but the issue persisted. This meant it had to be something involving libvirt.&lt;&#x2F;p&gt;
&lt;p&gt;Sure enough, a quick Google search revealed that libvirt will still allocate an address for the host on isolated subnets – even if you disable services such as DHCP. It defaults to the first IP address in the subnet.&lt;&#x2F;p&gt;
&lt;p&gt;I changed the OPNsense LAN IP from .1 to .254 and the issue was resolved.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Bash history search</title>
        <published>2023-10-05T00:00:00+00:00</published>
        <updated>2023-10-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/bash-reverse-search/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/bash-reverse-search/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/bash-reverse-search/">&lt;p&gt;Another useful tip for Linux users and admins: you can search your command history in bash with &lt;code&gt;Ctrl+r&lt;&#x2F;code&gt;. Typing something and hitting it again will search backward through commands that match that pattern. It saves a lot of time compared to pressing up repeatedly.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>python `or [default]`</title>
        <published>2023-10-02T00:00:00+00:00</published>
        <updated>2023-10-02T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/02/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/02/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/02/">&lt;p&gt;Did you know that you can use the “or” keyword in python to set a “default” for a variable?&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;py&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-py &quot;&gt;&lt;code class=&quot;language-py&quot; data-lang=&quot;py&quot;&gt;&lt;span&gt;variable_name = &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;value_or_none&lt;&#x2F;span&gt;&lt;span&gt;() or &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;default value!&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot; 
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Over five years since I started using Python, and I’m only learning this now. I wish I knew about it sooner.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>When do you change the default settings (on tools&#x2F;apps?)</title>
        <published>2023-09-28T00:00:00+00:00</published>
        <updated>2023-09-28T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/posts/defaults/"/>
        <id>https://631a557f.lvacula-com.pages.dev/posts/defaults/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/posts/defaults/">&lt;p&gt;That question is rhetorical. I already have a good system in place for myself.&lt;&#x2F;p&gt;
&lt;p&gt;I will &lt;em&gt;always&lt;&#x2F;em&gt; review privacy settings. It’s rare that privacy settings will default to the more private options unless you’re using certain open source software such as KDE. Perhaps ironically, I’ll usually enable the anonymous usage statistics in those cases. The reason for that is a story for another post, though.&lt;&#x2F;p&gt;
&lt;p&gt;Things like keybinds and such are another story. Sometimes I’ll change the settings to whatever gets me the most use, and sometimes I’ll avoid changing the defaults as much as possible.&lt;&#x2F;p&gt;
&lt;p&gt;On one hand, if I have something like Joplin or Firefox, I’ll obsess over each setting and get it configured &lt;em&gt;just so&lt;&#x2F;em&gt;. These are tools that I’ll likely only use from devices I own, and only from a small percentage of them at that. I’ll only need to do that setup once every few months.&lt;&#x2F;p&gt;
&lt;p&gt;However, take something like &lt;code&gt;Vim&lt;&#x2F;code&gt; or &lt;code&gt;tmux&lt;&#x2F;code&gt;: I use these very often (more often than Joplin for sure), but I use them on almost every system I work on. This includes systems that aren’t owned by me or systems that I’ll only &lt;em&gt;use&lt;&#x2F;em&gt; once every few months. If someone else uses the system, they should be able to expect how these tools will behave.&lt;&#x2F;p&gt;
&lt;p&gt;It’s for this reason that I haven’t configured tmux, Vim, or similar tools on my own systems. I use the system default settings for tmux. I think I have small vanity options configured for Vim (syntax highlighting, hard tabs), but nothing more.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Using Vi[m]</title>
        <published>2023-09-19T00:00:00+00:00</published>
        <updated>2023-09-19T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/19/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/19/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/19/">&lt;p&gt;I&#x27;m finally giving Vi[m] a try. It&#x27;s hard to get used to it after using &lt;code&gt;nano&lt;&#x2F;code&gt; for so long. Surprisingly, it&#x27;s not the &lt;code&gt;:wq&lt;&#x2F;code&gt; or insert mode stuff that is catching me, but the fact taht I can&#x27;t go to the previous&#x2F;next ling by pressing left&#x2F;right at the line ends. &lt;&#x2F;p&gt;
&lt;p&gt;(Yes, I realize I can modify this in the .vimrc file but I&#x27;m attempting to keep it as close to default as possible since I work on so many different systems.)&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>My Experience Studying For and Taking the CISSP Exam</title>
        <published>2023-08-15T00:00:00+00:00</published>
        <updated>2023-08-15T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/posts/cissp/"/>
        <id>https://631a557f.lvacula-com.pages.dev/posts/cissp/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/posts/cissp/">&lt;p&gt;This post is about studying for and taking the (ISC)2 CISSP exam. I’ll talk about my experiences, what I thought was useful, what I thought wasn’t useful, and some high-level information about the test. I will not go into specifics about the questions on the test.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;studying&quot;&gt;Studying&lt;&#x2F;h2&gt;
&lt;p&gt;I primarily used five sources for the exam:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Sybex CISSP Official Study Guide&lt;&#x2F;li&gt;
&lt;li&gt;Sybex CISSP Official Practice Tests&lt;&#x2F;li&gt;
&lt;li&gt;LearnZApp CISSP official practice test app&lt;&#x2F;li&gt;
&lt;li&gt;Anki&lt;&#x2F;li&gt;
&lt;li&gt;r&#x2F;cissp subreddit (for meta-information)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;I had access to the first two resources through O’Reilly’s online learning subscription – which I had for free through my alma mater’s library. Both were good resources, but had multiple clear errors in the answer key (as in, mentioning something not even referenced in the question or having same answer associated with a different letter).&lt;&#x2F;p&gt;
&lt;p&gt;I took the first practice test before starting on the Official Study Guide (OSG) book. I scored a 60%. I completed the chapter questions after reading each chapter of the OSG, then did another two practice tests. By the end, I was scoring ~80%.&lt;&#x2F;p&gt;
&lt;p&gt;I cannot really recommend paying for the official practice test app if you have the practice test book. A good number of the questions in the app were identical to the ones in the book. Also, the “readiness score” isn’t helpful – I had a 55% when I took my exam.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;anki&quot;&gt;Anki&lt;&#x2F;h2&gt;
&lt;p&gt;Anki, for those unfamiliar, is a &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Spaced_repetition&quot;&gt;spaced-repetition software&lt;&#x2F;a&gt; for flashcards. I’ve used it for Japanese, trivia, grep flags, tmux keybinds, and more. It is one of the most useful pieces of software I’ve ever used.&lt;&#x2F;p&gt;
&lt;p&gt;I used two Anki decks: one of my own creation, and &lt;a href=&quot;https:&#x2F;&#x2F;www.reddit.com&#x2F;user&#x2F;lfionxkshine&#x2F;&quot;&gt;lfionxkshine&lt;&#x2F;a&gt;‘s CISSP 10k deck. While lfionxkshine‘s deck is very impressive for it’s size, I didn’t continue using it for a few reasons:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;There are a very large number of cards that are things I’d already committed to long-term memory. It makes no sense to spend such a large amount of time sorting through to find the useful cards instead of making them myself.&lt;&#x2F;li&gt;
&lt;li&gt;Some of the cards were contained incomplete or incorrect information.
&lt;ul&gt;
&lt;li&gt;One question was “What layer of the ring protection scheme is not normally implemented?”&lt;br &#x2F;&gt;
This question is both in the Anki deck as an open-ended question, and in the official practice test app as a multiple-choice question with the options 0, 1, 3, and 4. Both formats list “Layer 1” as the correct answer – but the practice test app goes on to tell that the full answer is layers 1 and 2.&lt;br &#x2F;&gt;
It’s better to not study the card at all than to memorize the wrong thing.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;It’s worth noting that I’d made over 700 cards while studying but only reviewed about half of them by the time I took the exam (see below in the Taking section to see why).&lt;&#x2F;p&gt;
&lt;h2 id=&quot;r-cissp-subreddit&quot;&gt;r&#x2F;CISSP Subreddit&lt;&#x2F;h2&gt;
&lt;p&gt;I spent a good amount of time before the exam browsing the r&#x2F;cissp subreddit to see what others’ thoughts were on exam prep materials and the format of the exam.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;college-degree-and-hands-on-experience&quot;&gt;College Degree and Hands-On Experience&lt;&#x2F;h2&gt;
&lt;p&gt;I have a four-year degree in computer security, and just under 2 years’ experience doing penetration testing. I think that had a significant impact on how much less I had to study compared to others.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;taking&quot;&gt;Taking&lt;&#x2F;h2&gt;
&lt;p&gt;The days leading up to my test were, in short, a mess. The clothes dryer broke. The AC broke and it would get into the 90s some days. I was doing prep for a job offer I had just accepted. I’d already bought the exam voucher and wanted to use it before things got even more hectic. I was prepared to fail the exam, but come out with better knowledge of what the questions would be like and where I would need to study more.&lt;&#x2F;p&gt;
&lt;p&gt;The sign-in process for the exam was uneventful. The only difference between it and any other certification test I’ve taken (Sec+, CC, etc…) is that I had to get my palms scanned a bunch.&lt;&#x2F;p&gt;
&lt;p&gt;Again, I will not discuss details of questions. All I will say is that the questions were generally less technical than I expected, and slightly easier than some of the practice questions.&lt;&#x2F;p&gt;
&lt;p&gt;I would often see comments on the subreddit about the exam drilling you on whatever it thinks is what you struggle with the most as you get further in the exam. I don’t think that I experienced that. I’d have a difficult question from a random domain, followed by a really easy question from a different one. I was fairly certain that I was going to fail with how easy some of the questions near the end were. Then I hit submit on Q125 and was told my test was over. I passed.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>&quot;Prompt Engineering&quot;</title>
        <published>2023-07-28T00:00:00+00:00</published>
        <updated>2023-07-28T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/prompt-engineering/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/prompt-engineering/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/prompt-engineering/">&lt;p&gt;A small realization just came to me: there’s a certain irony to “prompt engineering” being something that people try to teach as if it’s a programming discipline. Wasn’t the goal of the natural language models to make it so that people can speak normally and get the output they want? Shouldn’t that mean that “prompt engineering” should be the same as a communications or writing class?&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>YouTube Music</title>
        <published>2023-07-24T00:00:00+00:00</published>
        <updated>2023-07-24T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/youtube-music/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/youtube-music/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/youtube-music/">&lt;p&gt;A funny thing I’ve noticed about YouTube Music: it doesn’t seem to take your recently-listened-to music into account when showing quick recommendations if you have YouTube history turned off. I can listen to as much blues or j-rock as I want, but it doesn’t start showing those as quick recommends until I hit the like button on a track. Unfortunately, this also means that things I liked a while ago don’t appear anymore.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Encryption Flashcards</title>
        <published>2023-07-19T00:00:00+00:00</published>
        <updated>2023-07-19T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/encryption-flashcards/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/encryption-flashcards/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/encryption-flashcards/">&lt;p&gt;I think I added an extra 80 or so cards today just for encryption algorithms’ key lengths, block sizes, etc… I don’t expect they will be used in a lot of CISSP questions, but I’ll ace whatever questions involve them.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Security Models</title>
        <published>2023-07-14T00:00:00+00:00</published>
        <updated>2023-07-14T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/shortnotes/security-models/"/>
        <id>https://631a557f.lvacula-com.pages.dev/shortnotes/security-models/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/shortnotes/security-models/">&lt;p&gt;I’m reviewing security models in preparation for taking the CISSP exam. It’s something I haven’t had a lot of reason to think about since I took a class on it in college. Bell-LaPadula, Biba, Clark-Wilson, etc…. I’m glad I know what Anki is now.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Resolved: Email Delivery Issues with Google Domains Email Aliases</title>
        <published>2023-06-15T00:00:00+00:00</published>
        <updated>2023-06-15T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Lukas Vacula
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://631a557f.lvacula-com.pages.dev/posts/resolved-email-delivery/"/>
        <id>https://631a557f.lvacula-com.pages.dev/posts/resolved-email-delivery/</id>
        
        <content type="html" xml:base="https://631a557f.lvacula-com.pages.dev/posts/resolved-email-delivery/">&lt;p&gt;This post is a combination announcement and “hey, this is how you fix this” post.&lt;&#x2F;p&gt;
&lt;p&gt;I’ve used Google Domains as my DNS registrar for several years now, and I’ve used the email address hinted at &lt;a href=&quot;&#x2F;contact&quot;&gt;on my Contact page&lt;&#x2F;a&gt; as a personal address for just about as long. Unfortunately, it wasn’t until recently that I learned that some senders &lt;em&gt;can’t&lt;&#x2F;em&gt; or &lt;em&gt;won’t&lt;&#x2F;em&gt; send to it because it is set up as an alias instead of a proper address.&lt;&#x2F;p&gt;
&lt;p&gt;The solution provided by Google is to use a Google Workspace email instead. I guess I’ll just have to add another address to Thunderbird.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;For anyone who’s curious, here’s what Google has to say about the matter &lt;a href=&quot;https:&#x2F;&#x2F;support.google.com&#x2F;domains&#x2F;answer&#x2F;3251241&quot;&gt;on their help page&lt;&#x2F;a&gt;:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;You may not get the email forwarded to you by senders with specific email authentication settings. Regardless of your mail settings in Google Domains, some email senders have rules that prevent their mail from being delivered with email forwarding systems.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Tip:&lt;&#x2F;strong&gt; To avoid delivery issues, use a custom email with Google Workspace instead of email forwarding.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
</content>
        
    </entry>
</feed>
