<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2026-05-09T05:36:07+00:00</updated><id>/feed.xml</id><title type="html">alec.byrdonline</title><subtitle>Infrastructure, Linux, and things worth writing down.</subtitle><author><name>Alec</name></author><entry><title type="html">My Approach to Self-Study: A Manifesto(?)</title><link href="/2026/05/01/my-approach/" rel="alternate" type="text/html" title="My Approach to Self-Study: A Manifesto(?)" /><published>2026-05-01T00:00:00+00:00</published><updated>2026-05-01T00:00:00+00:00</updated><id>/2026/05/01/my-approach</id><content type="html" xml:base="/2026/05/01/my-approach/"><![CDATA[<p>AI is bad at systems work. That fact is the basis of my career bet.</p>

<p>Since graduating and starting my career I have noticed a gap. Generative AI can handle easy-to-moderate lookups, aggregate information well, and produce decent results in more “pure” software engineering tasks. But in systems administration it frequently gives overcomplicated solutions, presents methodology that no one would actually use in production, or just fails outright. In my testing with current frontier models, scripts generated for a data migration — including backups and restores — did not work and actively contributed to data loss. That is not a minor shortcoming.</p>

<p>I think the reason for this gap is structural. Systems knowledge lives in business contexts, runbooks, and tribal expertise. It is less likely to be published publicly, and when it is, it lacks the surrounding context of <em>why</em> it was done that way. That makes it harder for models to learn from compared to the average software engineering task, where the code itself often tells the full story.</p>

<p>So my conclusion is simple: deep expertise in systems work is durable. The path forward is to learn modern tools, internalize best practices, and work alongside people doing this at a high level.</p>

<h2 id="strategy">Strategy</h2>

<p><strong>Exist around a hyped space, not within it.</strong> The modern tech landscape is dominated by trends. When I was in late high school, software engineering boomed — enrollment surged, bootcamps multiplied, and adjacent fields were neglected. Infrastructure felt left out. Roles like SRE, Systems Engineer, Systems Administrator, and anything in networking have been largely ignored by academia while the push went almost entirely toward SWE. That neglect is an opportunity.</p>

<p><strong>Prioritize learning over finished products.</strong> AI is a phenomenal learning tool, but it also enables shortcuts that erode actual skill. I have spent weeks working with specific tools only to realize I could not run simple commands without assistance. That was a wake-up call. I now follow a deliberate process:</p>

<ol>
  <li>Think about where I might find the information myself — man pages, official docs, RFCs.</li>
  <li>If I cannot find it, ask AI <em>where</em> to look, not <em>what the answer is</em>. The goal is a pointer to static, authoritative documentation.</li>
  <li>If I still cannot find appropriate documentation, ask for the approach and reverse-engineer how to locate it myself next time.</li>
</ol>

<p>I use Anki to retain where documentation lives and how to navigate it. This has been one of the most effective changes I have made.</p>

<p><strong>Follow genuine interest.</strong> I find Linux, HPC, and performance optimization deeply interesting. Setting up and managing environments is fulfilling to me in a way that writing CRUD applications is not. That matters, because this is a long road and motivation needs to come from somewhere real.</p>

<h2 id="where-i-have-been">Where I Have Been</h2>

<ul>
  <li>Earned my CompTIA A+ Certification</li>
  <li>Worked as a technician on high-frequency trading servers at colocation facilities</li>
  <li>Currently working as a datacenter technician on market infrastructure</li>
  <li>Earned my RHCSA (Red Hat Certified Systems Administrator) with a perfect score</li>
</ul>

<p>Each of these built on the last. The A+ got me in the door. HFT hardware work taught me what latency-sensitive environments demand. The datacenter role gave me broader infrastructure exposure. The RHCSA formalized Linux fundamentals I had been building through all of it.</p>

<h2 id="where-i-am-going">Where I Am Going</h2>

<p>Near term, I am finishing my RHCE (Red Hat Certified Engineer), which focuses on Ansible automation. Alongside that I am working through Brendan Gregg’s <em>Systems Performance</em> to build a foundation in observability and performance analysis.</p>

<p>After that, I am considering the CCNA for networking depth, and pursuing the RHCA (Red Hat Certified Architect) with specialties in performance tuning and troubleshooting.</p>

<p>The long-term goal is to work in a high-ownership, high-performance systems environment doing deep, knowledge-intensive tuning work — the kind of role where expertise compounds and shortcuts do not survive.</p>]]></content><author><name>Alec</name></author><category term="Linux" /><category term="study" /><summary type="html"><![CDATA[My methodology, goals, and aspirations in self-study and career development, circa the time of writing.]]></summary></entry><entry><title type="html">Managing SELinux contexts with rhel-system-roles</title><link href="/2026/04/12/selinux-contexts-ansible/" rel="alternate" type="text/html" title="Managing SELinux contexts with rhel-system-roles" /><published>2026-04-12T00:00:00+00:00</published><updated>2026-04-12T00:00:00+00:00</updated><id>/2026/04/12/selinux-contexts-ansible</id><content type="html" xml:base="/2026/04/12/selinux-contexts-ansible/"><![CDATA[<p>Getting SELinux file contexts right in Ansible is one of those things that looks simple until it isn’t.</p>

<h2 id="the-problem-with-command-and-semanage">The problem with <code class="language-plaintext highlighter-rouge">command</code> and <code class="language-plaintext highlighter-rouge">semanage</code></h2>

<p>Running <code class="language-plaintext highlighter-rouge">semanage fcontext</code> directly via the <code class="language-plaintext highlighter-rouge">command</code> module works, but it’s not idempotent by default. You’ll need a <code class="language-plaintext highlighter-rouge">creates:</code> guard or a <code class="language-plaintext highlighter-rouge">changed_when: false</code> override, or you’ll get a changed task on every run even if the context is already set.</p>

<h2 id="using-communitygeneralsefcontext">Using <code class="language-plaintext highlighter-rouge">community.general.sefcontext</code></h2>

<p>The cleaner path is the dedicated module:</p>

<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s">set custom fcontext for app directory</span>
  <span class="na">community.general.sefcontext</span><span class="pi">:</span>
    <span class="na">target</span><span class="pi">:</span> <span class="s1">'</span><span class="s">/srv/myapp(/.*)?'</span>
    <span class="na">setype</span><span class="pi">:</span> <span class="s">httpd_sys_content_t</span>
    <span class="na">state</span><span class="pi">:</span> <span class="s">present</span>
  <span class="na">notify</span><span class="pi">:</span> <span class="s">restorecon app dir</span>
</code></pre></div></div>

<p>The module handles idempotency for you. Pair it with a handler that runs <code class="language-plaintext highlighter-rouge">restorecon</code> — the module only updates policy, not filesystem labels on existing files.</p>

<h2 id="where-to-look-things-up">Where to look things up</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ansible-doc community.general.sefcontext
man semanage-fcontext
</code></pre></div></div>]]></content><author><name>Alec</name></author><category term="Ansible" /><category term="ansible" /><category term="selinux" /><category term="rhce" /><category term="rhel" /><summary type="html"><![CDATA[Walking through sefcontext tasks, idempotency patterns, and where the documentation actually lives.]]></summary></entry></feed>