<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Jeff Bailey | How X</title><link>https://jeffbailey.us/categories/how-x/</link><description>This website contains learning resources, opinions, and facts about software-related technology.</description><language>en</language><generator>Hugo</generator><atom:link href="https://jeffbailey.us/categories/how-x/rss.xml" rel="self" type="application/rss+xml"/><lastBuildDate>Sun, 20 Sep 2026 00:00:00 +0000</lastBuildDate><item><title>How to Use jq With kubectl: Practical Recipes</title><link>https://jeffbailey.us/blog/2026/09/20/how-do-i-use-jq-with-kubectl/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/09/20/how-do-i-use-jq-with-kubectl/</guid><pubDate>Sun, 20 Sep 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>How X</category><category>Command Line</category><category>Containers</category><description><![CDATA[<p><code>kubectl get pods</code> answers the easy questions. The moment you need something it has no column for, which containers have no memory limit, which images the cluster actually runs, which pods restarted most, you reach for <code>-o json</code> and a filter.</p>
<p>These recipes ran against a live two-node k3s cluster (Kubernetes 1.35) with jq 1.8.2, including a deliberately broken deployment so the failure output is real. Swap the namespaces for yours.</p>]]></description></item><item><title>How Do I Use a Software Ontology?</title><link>https://jeffbailey.us/blog/2026/06/03/how-do-i-use-a-software-ontology/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/06/03/how-do-i-use-a-software-ontology/</guid><pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>How X</category><category>Software Architecture</category><category>Domain-Driven Design</category><description><![CDATA[<p>The interviews are done. Someone sat with the domain expert and committed <code>ontology.md</code> next to the code. Then the quarter got busy. Six months later a report counts the same <code>Customer</code> three times, and the model built to prevent exactly that has not changed since launch.</p>
<p>An ontology earns its keep only when a team uses it. A <a href="https://jeffbailey.us/blog/2026/05/28/what-is-a-software-ontology/">software ontology</a> is a shared model of a domain: its entities, their attributes, and their relationships, written so people and code agree on what each term means. This guide assumes the model already exists. The goal is to put it to work: in workflows, design sessions, database schemas, and on every screen where a teammate looks something up. Pick the section that matches the task in front of you. The command examples assume PostgreSQL and <code>psql</code>, but the practice maps to any engine that supports comments and constraints. The examples use the Subscription Billing context from the <a href="https://jeffbailey.us/blog/2026/05/29/how-do-i-create-a-software-ontology/">creation guide</a>, so the terms line up across both articles.</p>]]></description></item><item><title>How Do I Create a Software Ontology?</title><link>https://jeffbailey.us/blog/2026/05/29/how-do-i-create-a-software-ontology/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/05/29/how-do-i-create-a-software-ontology/</guid><pubDate>Fri, 29 May 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>How X</category><category>Software Architecture</category><category>Domain-Driven Design</category><description><![CDATA[<p>Two senior engineers argued for an hour over a bug. The fix took ten minutes, but the argument lasted fifty. One meant &ldquo;active subscription&rdquo; when saying <em>customer</em>, the other meant &ldquo;any account.&rdquo; Both were correct but lacked a shared model.</p>
<p>A <a href="https://jeffbailey.us/blog/2026/05/28/what-is-a-software-ontology/">software ontology</a> is an explicit, agreed-upon domain model, including concepts, meanings, and relationships. In DDD, it covers ubiquitous language, bounded contexts, and aggregates. This guide creates one.</p>
<h2 id="goal">Goal</h2>
<p>Create a software ontology for a domain: a model that identifies key concepts, defines them once, classifies (entity, value object, or aggregate), and maps relationships and boundaries. The final artifact is an agreed-upon model reflected in the code.</p>]]></description></item><item><title>How Do I Use DNF?</title><link>https://jeffbailey.us/blog/2026/02/28/how-do-i-use-dnf/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/02/28/how-do-i-use-dnf/</guid><pubDate>Sat, 28 Feb 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>How X</category><category>Linux</category><category>Package Management</category><description><![CDATA[<p>I use DNF (Dandified YUM) whenever I install or update software on Fedora, RHEL, Rocky Linux, or another RPM-based system. This how-to gives you a single, clear path to install, update, remove, and search packages so you can get the task done and verify it.</p>
<h2 id="goal">Goal</h2>
<p>By the end you will have used DNF to install a package, update your system, remove a package, and search for packages. You will know how to confirm each step and fix the most common failures.</p>]]></description></item><item><title>How Do I Use APT?</title><link>https://jeffbailey.us/blog/2026/02/28/how-do-i-use-apt/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/02/28/how-do-i-use-apt/</guid><pubDate>Sat, 28 Feb 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>How X</category><category>Linux</category><category>Package Management</category><description><![CDATA[<p>I use the Advanced Package Tool (APT) for installing, updating, removing, and searching software on Debian, Ubuntu, or derivatives. This guide provides a clear way to complete these tasks and verify them.</p>
<h2 id="goal">Goal</h2>
<p>By the end, you&rsquo;ll have used APT to install, update, remove, and search for packages, knowing how to confirm each step and fix common failures.</p>
<p><strong>Success criteria:</strong> You can run <code>apt install</code>, <code>apt update</code>, <code>apt upgrade</code>, <code>apt remove</code>, and <code>apt search</code> from the command line and interpret the output. You can confirm a package is installed and working.</p>]]></description></item><item><title>How Do I Use GitHub Private Mirrors?</title><link>https://jeffbailey.us/blog/2026/02/04/how-do-i-use-github-private-mirrors/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/02/04/how-do-i-use-github-private-mirrors/</guid><pubDate>Wed, 04 Feb 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>How X</category><category>Open Source</category><category>Git</category><category>DevOps</category><description><![CDATA[<p>Why can&rsquo;t your organization fork an open source repo and send a pull request? Often, policy prevents it due to credential leaks, IP, PII, and compliance reviews. GitHub Private Mirrors allow private work while exposing only approved changes publicly. This post explains what GitHub Private Mirrors are, why they exist, how they work, and their relation to your org, upstream, and tools like the <a href="https://github.com/github-community-projects/private-mirrors">GitHub Private Mirrors App</a>.</p>
<h2 id="what-are-github-private-mirrors">What Are GitHub Private Mirrors?</h2>
<p>A private mirror is a private copy of a public repository within your organization. You develop and review there; when ready, push approved work to a public fork in your org, then open a pull request to the upstream project. The mirror remains private, with only synced content leaving your control.</p>]]></description></item><item><title>How Do I Produce an Event?</title><link>https://jeffbailey.us/blog/2026/01/08/how-do-i-produce-an-event/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/01/08/how-do-i-produce-an-event/</guid><pubDate>Wed, 07 Jan 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>How X</category><description><![CDATA[<p>I&rsquo;ve produced hundreds of events from small meetings to large forums. My process works for small meetings, talks, workshops, or larger gatherings. The key is keeping segments short, staying focused on a clear theme, and making it fun.</p>
<p>In this tutorial, you&rsquo;ll create a complete event plan for a small gathering using my method. You&rsquo;ll learn to define a focused theme, structure short segments, and add fun elements that keep people engaged. By the end, you&rsquo;ll have a practical plan ready to execute.</p>]]></description></item><item><title>How Do I Learn Effectively?</title><link>https://jeffbailey.us/how-do-i-learn-effectively/</link><guid isPermaLink="true">https://jeffbailey.us/how-do-i-learn-effectively/</guid><pubDate>Sat, 07 Jan 2023 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Learning</category><category>How X</category><description><![CDATA[<p>
Let&rsquo;s start by saying, <em>&ldquo;It Depends.&rdquo;</em></p>
<p>I&rsquo;m a <a href="https://jeffbailey.us/resume/">software developer</a> with <a href="https://my-thoughts-are-not-my-own.com/blog/2021/09/06/what-is-aphantasia/" title="Aphantasia">Aphantasia</a> and ADHD, so my approach is specific. This is my approach to learning. I&rsquo;m certain your approach will differ.</p>
<p>Here&rsquo;s my mind on learning:</p>
<!-- markdownlint-disable MD003 MD022 MD025 -->


<script src="https://cdn.jsdelivr.net/npm/markmap-autoloader@0.16"></script>



<div class="markmap">
    <script type="text/template">
        
---
markmap:
  direction: top
---

# 🧠

## Follow Principles

### Chunk

### Apply

### Teach


    </script>
</div>
<!-- markdownlint-enable MD022 MD025 -->
<h2 id="learning-principles">Learning Principles</h2>
<p>I&rsquo;m a big fan of <a href="https://jeffbailey.us/what-are-my-principles/">principles</a>.</p>
<p>I follow these principles to guide my learning:</p>]]></description></item><item><title>How to Use sqlite-utils: A Complete Guide to SQLite Database Management</title><link>https://jeffbailey.us/blog/2022/05/12/how-do-i-use-sqlite-utils/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2022/05/12/how-do-i-use-sqlite-utils/</guid><pubDate>Fri, 13 May 2022 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>How X</category><category>Developer Tools</category><category>Programming</category><category>Databases</category><category>Command Line</category><description><![CDATA[<p>SQLite is a powerful, serverless database engine, and sqlite-utils is a command-line tool that makes it easy to manage SQLite databases. This comprehensive guide will show you how to use sqlite-utils to perform common database operations, work with JSON data, and manage database schemas effectively.</p>
<h2 id="what-is-sqlite-utils">What is sqlite-utils?</h2>
<p>sqlite-utils is a command-line tool that provides a simple interface for managing SQLite databases. It&rsquo;s particularly useful for:</p>
<ul>
<li>Creating and managing SQLite databases</li>
<li>Performing CRUD operations</li>
<li>Working with JSON data</li>
<li>Managing database schemas</li>
<li>Data import and export</li>
<li>Schema migrations</li>
</ul>
<h2 id="prerequisites">Prerequisites</h2>
<p>Before you begin, ensure you have:</p>]]></description></item><item><title>How to Use Replit: A Complete Guide to Web-Based Development</title><link>https://jeffbailey.us/blog/2022/04/10/how-do-i-use-replit/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2022/04/10/how-do-i-use-replit/</guid><pubDate>Sun, 10 Apr 2022 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>How X</category><category>Developer Tools</category><category>Programming</category><category>Software Engineering</category><category>Web Development</category><category>AI Engineering</category><description><![CDATA[<p>Replit is a powerful web-based integrated development environment (IDE) that enables you to write, run, and host code directly in your browser. This comprehensive guide will show you how to use Replit effectively for various development scenarios, including its latest AI-powered features.</p>
<h2 id="what-is-replit">What is Replit?</h2>
<p>Replit is a comprehensive web-based development platform that provides:</p>
<ul>
<li>A full-featured IDE in your browser</li>
<li>Built-in hosting capabilities</li>
<li>Collaborative development tools</li>
<li>Educational features</li>
<li>Code embedding options</li>
<li>AI-powered coding assistance</li>
<li>Multiplayer development environment</li>
<li>Cloud-based deployment</li>
</ul>
<p>Unlike traditional IDEs, Replit requires no local installation and works across all devices with a web browser.</p>]]></description></item><item><title>How to Use Google Search: Advanced Search Techniques and Tips</title><link>https://jeffbailey.us/blog/2022/03/19/how-do-i-use-google/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2022/03/19/how-do-i-use-google/</guid><pubDate>Sat, 19 Mar 2022 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>How X</category><category>Developer Tools</category><category>Productivity</category><description><![CDATA[<p>Master the art of Google search with these advanced techniques. Whether you&rsquo;re a researcher, student, or professional, these tips will help you find exactly what you&rsquo;re looking for.</p>
<h2 id="basic-search-operators">Basic Search Operators</h2>
<h3 id="exact-phrase-search">Exact Phrase Search</h3>
<p>Use double quotes to find exact phrases:</p>
<pre><code class="language-">&#34;google fu&#34;</code></pre><p><em>Try it out:</em> <a href="https://www.google.com/search?q=%22google+fu%22">https://www.google.com/search?q=&ldquo;google+fu&rdquo;</a></p>
<p>This ensures Google only returns pages containing the exact phrase &ldquo;google fu&rdquo;.</p>
<h3 id="excluding-terms">Excluding Terms</h3>
<p>Use the minus sign (-) to exclude specific terms from your search:</p>]]></description></item><item><title>How to Use Multiple GitHub Accounts on the Same Computer: Complete Guide</title><link>https://jeffbailey.us/blog/2022/02/11/how-do-i-use-multiple-github-accounts/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2022/02/11/how-do-i-use-multiple-github-accounts/</guid><pubDate>Sat, 12 Feb 2022 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>How X</category><category>Developer Tools</category><category>Programming</category><category>Git</category><category>System Administration</category><category>Security</category><description><![CDATA[<p>Managing multiple GitHub accounts on the same computer can be challenging, but it&rsquo;s essential for developers working with different clients or projects. This comprehensive guide shows you how to set up and manage multiple GitHub accounts using SSH keys on macOS, with practical examples and best practices.</p>
<h2 id="prerequisites">Prerequisites</h2>
<p>Before you begin, ensure you have:</p>
<ul>
<li>macOS (this guide is for macOS, but <a href="https://en.wikipedia.org/wiki/Your_mileage_may_vary">YMMV</a> on other operating systems)</li>
<li>Git installed</li>
<li>SSH installed</li>
<li>Access to your GitHub accounts</li>
<li>Terminal access</li>
<li>Basic understanding of SSH and Git concepts</li>
</ul>
<h2 id="setting-up-multiple-github-accounts">Setting Up Multiple GitHub Accounts</h2>
<h3 id="1-generate-ssh-keys">1. Generate SSH Keys</h3>
<p>Use the following shell function to generate and configure SSH keys for each GitHub account:</p>]]></description></item><item><title>How to Migrate from Evernote to Joplin: Complete Guide for 2024</title><link>https://jeffbailey.us/blog/2021/04/10/migrating-from-evernote-to-joplin/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2021/04/10/migrating-from-evernote-to-joplin/</guid><pubDate>Sat, 10 Apr 2021 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>How X</category><category>Productivity</category><description><![CDATA[<p>Migrating from Evernote to Joplin is a straightforward task that can help you transition to a more reliable, open-source note-taking solution. This comprehensive guide will walk you through the migration process on macOS and Android.</p>
<h2 id="why-switch-from-evernote-to-joplin">Why Switch from Evernote to Joplin?</h2>
<h3 id="my-experience-with-evernote">My Experience with Evernote</h3>
<p>I used Evernote for just shy of three years. I used it briefly when it came out, then quickly pivoted to using handwritten note software. I was tired of maintaining my note app, so I switched to OneNote for a while. OneNote isn&rsquo;t a complete disaster, but a multitude of bugs surrounding Microsoft&rsquo;s ecosystem finally pissed me off too much, so I switched to Evernote.</p>]]></description></item><item><title>How to Master Email Management: A Zero Inbox Approach</title><link>https://jeffbailey.us/blog/2020/08/25/how-do-i-use-email/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2020/08/25/how-do-i-use-email/</guid><pubDate>Wed, 26 Aug 2020 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>How X</category><category>Developer Tools</category><category>Productivity</category><description><![CDATA[<p>Email management is crucial for productivity in today&rsquo;s digital world. As a zero inboxer, I&rsquo;ve developed a system that works across any email client. Here&rsquo;s how to master your email and maintain a clean, organized inbox.</p>
<h2 id="email-management-principles">Email Management Principles</h2>
<h3 id="1-filter-everything">1. Filter Everything</h3>
<p>☕</p>
<p>I&rsquo;m a <a href="https://www.theatlantic.com/technology/archive/2012/12/zero-dark-inbox/320604/">zero inboxer</a> who uses filters to achieve inbox nirvana. Create filters with clear prefixes:</p>
<ul>
<li><strong>MOVE.</strong> Automatically move messages to specific folders</li>
<li><strong>DELETE.</strong> Remove unwanted messages automatically</li>
</ul>
<h3 id="2-minimalist-folder-structure">2. Minimalist Folder Structure</h3>
<p>📂</p>]]></description></item><item><title>How to Highlight Text on a Web Page</title><link>https://jeffbailey.us/blog/2020/07/14/how-to-highlight-text-on-a-web-page/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2020/07/14/how-to-highlight-text-on-a-web-page/</guid><pubDate>Tue, 14 Jul 2020 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>How X</category><category>Developer Tools</category><description><![CDATA[<p>Google is pushing <a href="https://wicg.github.io/scroll-to-text-fragment/">a web standard</a> for this feature.</p>
<p>Navigate to a web page and select text.</p>























  <figure class="left" >
    <img sizes="(min-width: 35em) 1200px, 100vw"
      srcset='
      
        /blog/2020/07/14/how-to-highlight-text-on-a-web-page/images/copy-link-selected-text_hu_9193fd446427e1b1.png 500w
      
      
        , /blog/2020/07/14/how-to-highlight-text-on-a-web-page/images/copy-link-selected-text_hu_8a98ff79f2d97820.png 800w
      
      
      '
      
        src="/blog/2020/07/14/how-to-highlight-text-on-a-web-page/images/copy-link-selected-text.png"
      
      loading="lazy"
      decoding="async"
      
      alt="Copy Link Selected Text"
      
      
      
      
    >
    
  </figure>


<p>Paste the URL in your web browser, and you should see the highlighted text.</p>
<p><em>Notice the browser highlights the text.</em></p>























  <figure class="left" >
    <img sizes="(min-width: 35em) 1200px, 100vw"
      srcset='
      
        /blog/2020/07/14/how-to-highlight-text-on-a-web-page/images/copy-link-to-text_hu_b1e463fcddcf4ade.png 500w
      
      
        , /blog/2020/07/14/how-to-highlight-text-on-a-web-page/images/copy-link-to-text_hu_a21562797f538967.png 800w
      
      
        , /blog/2020/07/14/how-to-highlight-text-on-a-web-page/images/copy-link-to-text_hu_e8b40cc34acc1d7b.png 1200w
      
      '
      
        src="/blog/2020/07/14/how-to-highlight-text-on-a-web-page/images/copy-link-to-text.png"
      
      loading="lazy"
      decoding="async"
      
      alt="View Link Selected Text"
      
      
      
      
    >
    
  </figure>


<p>The generated URL looks like this.</p>
<p><a href="https://en.wikipedia.org/wiki/The_Hitchhiker%27s_Guide_to_the_Galaxy#42,_or_The_Answer_to_the_Ultimate_Question_of_Life,_The_Universe,_and_Everything:~:text=In%20the%20works%2C%20the%20number%2042%20is%20given%20as%20The%20Answer%20to%20the%20Ultimate%20Question%20of%20Life%2C%20The%20Universe%2C%20and%20Everything">https://en.wikipedia.org/wiki/The_Hitchhiker%27s_Guide_to_the_Galaxy#42,_or_The_Answer_to_the_Ultimate_Question_of_Life,_The_Universe,_and_Everything:~:text=In%20the%20works%2C%20the%20number%2042%20is%20given%20as%20The%20Answer%20to%20the%20Ultimate%20Question%20of%20Life%2C%20The%20Universe%2C%20and%20Everything</a></p>]]></description></item><item><title>How to Open Hyper Terminal from Finder on macOS Using Automator</title><link>https://jeffbailey.us/blog/2019/11/23/how-do-i-use-automator-to-open-the-hyper-terminal/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2019/11/23/how-do-i-use-automator-to-open-the-hyper-terminal/</guid><pubDate>Sun, 24 Nov 2019 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Developer Tools</category><category>How X</category><category>macOS</category><category>Automation</category><category>Command Line</category><description><![CDATA[<p>Hyper Terminal is a modern, extensible terminal emulator for macOS that offers a rich plugin ecosystem and beautiful interface. While it&rsquo;s great for development work, one common challenge is integrating it with Finder like the native Terminal app. This guide will show you how to create a custom Quick Action in Automator to open Hyper Terminal from any folder in Finder.</p>
<h2 id="prerequisites">Prerequisites</h2>
<p>Before you begin, ensure you have:</p>
<ul>
<li>macOS installed</li>
<li>Hyper Terminal installed</li>
<li>Basic familiarity with Automator</li>
</ul>
<h2 id="creating-the-quick-action">Creating the Quick Action</h2>
<ol>
<li>
<p>Open Automator</p>]]></description></item></channel></rss>