<?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</title><link>/</link><description>This website contains learning resources, opinions, and facts about software-related technology.</description><language>en</language><generator>Hugo</generator><atom:link href="/" rel="self" type="application/rss+xml"/><lastBuildDate>Thu, 12 Mar 2026 00:00:00 +0000</lastBuildDate><item><title>Fundamentals of FinOps</title><link>/blog/2026/03/12/fundamentals-of-finops/</link><guid isPermaLink="true">/blog/2026/03/12/fundamentals-of-finops/</guid><pubDate>Thu, 12 Mar 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Fundamentals</category><category>Cloud</category><description><![CDATA[<h2 id="introduction">Introduction</h2>
<p>Why do cloud bills spiral when nobody intended to overspend? Cloud is pay-as-you-go; without visibility and accountability, usage and cost drift. FinOps (cloud financial operations) brings financial accountability to variable cloud spend through collaboration, data, and continuous improvement.</p>
<p>This article explains why FinOps exists, how its ideas fit together, and what changes when teams treat cloud cost as an operational concern. It focuses on <em>why</em> the lifecycle and domains work, not on tool setup.</p>]]></description></item><item><title>Fundamentals of Azure</title><link>/blog/2026/03/08/fundamentals-of-azure/</link><guid isPermaLink="true">/blog/2026/03/08/fundamentals-of-azure/</guid><pubDate>Sun, 08 Mar 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Fundamentals</category><category>Cloud</category><description><![CDATA[<h2 id="introduction">Introduction</h2>
<p>Why does Azure feel like a second platform rather than &ldquo;Windows in the cloud&rdquo;? Microsoft Azure is more than virtual machines and Office integration. It is a global system of regions, a distinct identity layer, and a management hierarchy that relies on understanding key ideas.</p>
<p>This article explains Azure&rsquo;s structure: regions, Availability Zones, Microsoft Entra ID, resource groups, subscriptions, and the shared responsibility model. It highlights principles and trade-offs to help you make better decisions and avoid costly mistakes.</p>]]></description></item><item><title>Fundamentals of AWS</title><link>/blog/2026/03/06/fundamentals-of-aws/</link><guid isPermaLink="true">/blog/2026/03/06/fundamentals-of-aws/</guid><pubDate>Fri, 06 Mar 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Fundamentals</category><category>Cloud</category><description><![CDATA[<h2 id="introduction">Introduction</h2>
<p>Why does moving to the cloud feel like learning a second operating system? AWS is more than &ldquo;someone else&rsquo;s computers.&rdquo; It&rsquo;s a global system of regions, services, and a security model that rewards understanding core ideas.</p>
<p>This article explains why AWS is structured as it is: regions, Availability Zones, identity, and the shared responsibility model. It focuses on principles and trade-offs to help you make better decisions and avoid costly mistakes.</p>]]></description></item><item><title>Things That Are No Longer True With AI</title><link>/blog/2026/03/01/things-that-are-no-longer-true-with-ai/</link><guid isPermaLink="true">/blog/2026/03/01/things-that-are-no-longer-true-with-ai/</guid><pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Think</category><category>AI</category><category>Writing</category><description><![CDATA[<p>I&rsquo;m watching Monarch: Legacy of Monsters on Apple TV, and I got to thinking about things that are no longer true with AI. The jury is still out on whether it&rsquo;s a good show, but I do enjoy Kurt Russell, and his son isn&rsquo;t a half-bad actor.</p>
<p>Like other technologies, generative AI (GenAI) has displaced the old ways. Doing math by hand or with an abacus was the way until calculators came along, and then computers. Who uses a physical calculator anymore? And, why didn&rsquo;t they set Monarch in the 1950s? What a missed opportunity.</p>]]></description></item><item><title>How Do I Use DNF?</title><link>/blog/2026/02/28/how-do-i-use-dnf/</link><guid isPermaLink="true">/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-to</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>/blog/2026/02/28/how-do-i-use-apt/</link><guid isPermaLink="true">/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-to</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>A Software Fundamentals Glossary</title><link>/blog/2026/02/27/a-software-fundamentals-glossary/</link><guid isPermaLink="true">/blog/2026/02/27/a-software-fundamentals-glossary/</guid><pubDate>Fri, 27 Feb 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Glossary</category><category>Software Development</category><category>Fundamentals</category><description><![CDATA[<p>A glossary of fundamental software development terms.</p>
<h2 id="glossary">Glossary</h2>
<h2 id="agile-software-development">Agile Software Development</h2><p><strong>Agile Manifesto:</strong> A 2001 statement of values and principles guiding agile software development by developers.</p><p><strong>Backlog:</strong> A prioritized list of work items, features, or user stories for the team to complete.</p><p><strong>Burndown Chart:</strong> A graph tracking remaining work over time to monitor progress in an iteration or sprint.</p><p><strong>Continuous Integration (CI):</strong> The practice of integrating code changes often, usually several times daily, with automated testing to identify issues early.</p>]]></description></item><item><title>Fundamentals of Maintainability</title><link>/blog/2026/02/22/fundamentals-of-maintainability/</link><guid isPermaLink="true">/blog/2026/02/22/fundamentals-of-maintainability/</guid><pubDate>Sun, 22 Feb 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Fundamentals</category><category>Software Development</category><category>Code Quality</category><description><![CDATA[<h2 id="introduction">Introduction</h2>
<p>Why do some codebases feel easy to change while others turn every fix into a weekend project? The difference is maintainability.</p>
<p><strong>Maintainability</strong> is how easily you can modify software to correct faults, improve performance, or adapt to new requirements. The <a href="https://www.iso.org/standard/35733.html">International Organization for Standardization (ISO)</a> defines it as a core quality attribute in ISO/IEC 25010. Maintainable code costs less to change, carries lower risk when refactoring, and lets new team members contribute without weeks of orientation.</p>]]></description></item><item><title>Fundamental Skills</title><link>/blog/2026/02/21/fundamental-skills/</link><guid isPermaLink="true">/blog/2026/02/21/fundamental-skills/</guid><pubDate>Sat, 21 Feb 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Fundamentals</category><category>Software Development</category><category>Code Review</category><description><![CDATA[<h2 id="introduction">Introduction</h2>
<p>I write extensively on <a href="/blog/2025/10/30/fundamentals-of-fundamentals/">software fundamentals</a>, covering architecture, security, reliability, testing, performance, accessibility, and process. The articles are lengthy, detailed, and checklist-rich.</p>
<p>I kept encountering the same issue: knowing fundamentals and applying them in code review are different. I&rsquo;d review PRs, catch a timeout or a query, but forget accessibility or circuit breaker.</p>
<p>Human memory is unreliable. Checklists help, but reviewing 200+ items manually isn&rsquo;t practical.</p>
<p>I built skills that encode fundamentals into repeatable, automated fitness reviews. This article explains what they are, why they work, and how they fit together.</p>]]></description></item><item><title>What Is Just-in-Time Catching Test Generation?</title><link>/blog/2026/02/14/what-is-just-in-time-catching-test-generation/</link><guid isPermaLink="true">/blog/2026/02/14/what-is-just-in-time-catching-test-generation/</guid><pubDate>Sat, 14 Feb 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>What</category><category>Software Engineering</category><category>Testing</category><category>AI</category><description><![CDATA[<h2 id="introduction">Introduction</h2>
<p>When I submit a pull request, I rely on <a href="/blog/2025/11/30/fundamentals-of-software-testing/">existing tests</a>, written months or years ago, which run with each change. But what if tests could be automatically generated for each diff, tailored to catch bugs before code lands? That&rsquo;s the premise of Just-in-Time (JIT) Catching Test Generation.</p>
<p>This approach turns traditional testing on its head. Instead of maintaining a static test suite that you update whenever behavior changes, catching tests are generated on the fly by large language models (LLMs). They are meant to fail when they find a bug. They do not live in your codebase. They exist only to catch regressions in the specific code change under review.</p>]]></description></item><item><title>Fundamentals of Graph Databases</title><link>/blog/2026/02/14/fundamentals-of-graph-databases/</link><guid isPermaLink="true">/blog/2026/02/14/fundamentals-of-graph-databases/</guid><pubDate>Sat, 14 Feb 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Fundamentals</category><category>Databases</category><category>Data Architecture</category><description><![CDATA[<h2 id="introduction">Introduction</h2>
<p>Why do some queries that feel simple in your head turn into multi-table joins, subqueries, and endless recursion in SQL?</p>
<p>Years ago, I modeled a permission system where &ldquo;User A has role X in project Y&rdquo; became a maze of join tables. I envisioned a graph, but the implementation struggled with the database. A graph database would have fit my thinking better.</p>
<p>When your data is about relationships (who knows whom, what depends on what, how things connect), a relational database makes you work against its grain. Graph databases emerged in the 2000s precisely because of this friction, as social networks, recommendation engines, and fraud detection systems pushed relationship queries far beyond what SQL was designed for. Graph databases flip that friction around. They make relationships first-class: stored explicitly, queried directly.</p>]]></description></item><item><title>Software Development Frontier 1: Augmented Workflows, Quality at Speed, and Bot Spam</title><link>/blog/2026/02/08/software-development-frontier-1-augmented-workflows-quality-at-speed-and-bot-spam/</link><guid isPermaLink="true">/blog/2026/02/08/software-development-frontier-1-augmented-workflows-quality-at-speed-and-bot-spam/</guid><pubDate>Sun, 08 Feb 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Software Development</category><category>Industry</category><description><![CDATA[<p>Where you put your energy in the next few years will matter more than it used to. I&rsquo;m betting on three pressure points: who pays for augmented workflows, how to keep quality and recovery in line with ship speed, and how to stop bots from drowning the rest of us. Solve these well, and you stay relevant.</p>
<h2 id="core-idea-three-frontiers">Core Idea: Three Frontiers</h2>
<p><strong>Augmented workflow optimization.</strong> Developers are generating more code than ever with AI-assisted tools. The value is real, but the economics are not. AnySphere, Anthropic, Microsoft, Google, and Amazon Web Services are all subsidizing the real cost of augmented workflows to varying degrees. They need developers inside their ecosystems, so they absorb the cost. Using <a href="/blog/2026/01/25/a-list-of-open-source-llms/">local open-source LLMs</a> for part of your workflow is one way to cut costs and rely less on those subsidies.</p>]]></description></item><item><title>What Is SBOM?</title><link>/blog/2026/02/06/what-is-sbom/</link><guid isPermaLink="true">/blog/2026/02/06/what-is-sbom/</guid><pubDate>Fri, 06 Feb 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>What</category><category>Open Source</category><category>Security</category><category>Compliance</category><category>Software Supply Chain</category><description><![CDATA[<h2 id="introduction">Introduction</h2>
<p>When I download software, I rarely know what&rsquo;s actually inside it. Is it just the code the vendor wrote, or does it include hundreds of open source libraries? If a vulnerability appears in one of those libraries, how would I know if I&rsquo;m affected? These questions become critical when managing software across complex supply chains.</p>
<p>A Software Bill of Materials (SBOM) answers these questions. An SBOM is essentially an inventory list that documents all the components in a software product. Just as a physical product has a bill of materials listing its parts, an SBOM lists the software components, their versions, licenses, and relationships.</p>]]></description></item><item><title>What Is OpenSSF?</title><link>/blog/2026/02/06/what-is-openssf/</link><guid isPermaLink="true">/blog/2026/02/06/what-is-openssf/</guid><pubDate>Fri, 06 Feb 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>What</category><category>Open Source</category><category>Security</category><category>Software Supply Chain</category><description><![CDATA[<h2 id="introduction">Introduction</h2>
<p>Most software relies on open source components, with your app potentially using hundreds of libraries, frameworks, and tools maintained by different teams with varying security practices. A vulnerability in one can impact thousands of applications.</p>
<p>The Open Source Security Foundation (OpenSSF), hosted by the Linux Foundation, aims to improve open source security with tools, standards, and collaboration. It unites organizations, developers, and security experts without replacing project efforts.</p>
<p>This article explains what OpenSSF is, why it exists, and how it helps secure the open source ecosystem that modern software depends on.</p>]]></description></item><item><title>What Is an OSPO?</title><link>/blog/2026/02/06/what-is-an-ospo/</link><guid isPermaLink="true">/blog/2026/02/06/what-is-an-ospo/</guid><pubDate>Fri, 06 Feb 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>What</category><category>Open Source</category><category>Strategy</category><category>Compliance</category><description><![CDATA[<h2 id="why-do-some-companies-have-a-whole-team-just-for-open-source">Why Do Some Companies Have a Whole Team Just for Open Source?</h2>
<p>Most organizations depend on open source software but never formalize how they use it. Developers pull in libraries without a consistent view of licenses. Legal finds compliance gaps late. Security can&rsquo;t see the full dependency picture. Contributing back is ad hoc. An Open Source Program Office (OSPO) is the function that steps in to coordinate all of that: strategy, policy, compliance, and community engagement. It doesn&rsquo;t replace developers or teams; it provides the structure and expertise so the organization can use open source effectively and responsibly.</p>]]></description></item><item><title>How Do I Use GitHub Private Mirrors?</title><link>/blog/2026/02/04/how-do-i-use-github-private-mirrors/</link><guid isPermaLink="true">/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 To</category><category>Open Source</category><category>GitHub</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>What Is the Exponential Backoff Pattern?</title><link>/blog/2026/02/01/what-is-the-exponential-backoff-pattern/</link><guid isPermaLink="true">/blog/2026/02/01/what-is-the-exponential-backoff-pattern/</guid><pubDate>Sun, 01 Feb 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>What</category><category>Reliability</category><category>Distributed Systems</category><description><![CDATA[<h2 id="introduction">Introduction</h2>
<p>Retrying a remote call immediately when it fails can worsen the situation. Overloaded dependencies may be overwhelmed further, prolonging outages.</p>
<p>Exponential backoff increases wait times between retries (e.g., 1, 2, 4 seconds) to give struggling services room to recover, rather than piling on.</p>
<p>By the end of this article, you will:</p>
<ul>
<li>Understand what exponential backoff is and why it exists.</li>
<li>See how it works conceptually and fits with timeouts and <a href="/blog/2025/12/17/what-is-jitter/">jitter</a>.</li>
<li>Correct the misconception that backoff alone avoids overload.</li>
</ul>
<p><strong>What this is (and isn&rsquo;t):</strong> This article explains why exponential backoff exists, how it works, and how it fits with timeouts and jitter. It does not cover SDK retry defaults, circuit breaker implementation, or load testing.</p>]]></description></item><item><title>What Are My Principles?</title><link>/what-are-my-principles/</link><guid isPermaLink="true">/what-are-my-principles/</guid><pubDate>Sun, 01 Feb 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Productivity</category><category>Psychology</category><category>Principles</category><description><![CDATA[<p>Guided by principles, I make informed decisions, prioritize my time, and focus on what matters most as a father, husband, leader, and principal software engineer.</p>
<p>These principles align with my <a href="../what-are-my-professional-principles.index.md">professional principles</a> and <a href="../a-leadership-philosophy/.index.md">leadership philosophy</a>, forming a comprehensive framework for effective decision-making and growth.</p>
<h2 id="mental-and-emotional-state">Mental and Emotional State</h2>
<p>🤔 <strong>Cultivate Comprehension</strong> — Understand and teach the experiences and information I encounter.<br>
🌽 <strong>Embrace Abundance</strong> — Create what matters.<br>
❤️‍🔥 <strong>Nurture Love</strong> — Nurture deep caring in my relationships.<br>
💪 <strong>Practice Conscientiousness</strong> — Execute my tasks with the utmost care.<br>
🧘 <strong>Promote Mindfulness</strong> — Focus on being aware of my current state and surroundings.</p>]]></description></item><item><title>Logical Fallacies in Software Development</title><link>/blog/2026/02/01/logical-fallacies-in-software-development/</link><guid isPermaLink="true">/blog/2026/02/01/logical-fallacies-in-software-development/</guid><pubDate>Sun, 01 Feb 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Fundamentals</category><category>Software Engineering</category><description><![CDATA[<h2 id="introduction">Introduction</h2>
<p>Why do teams invest in failing projects and choose poor options when better ones exist? Why do they trust the loudest voice over evidence?</p>
<p>Software development decisions happen under uncertainty, incomplete info, and time pressure. The brain relies on shortcuts for quick decisions, causing errors that compound in team discussions and architecture choices, leading to avoidable failures.</p>
<p>Software development amplifies errors from long-term decisions, numerous stakeholders, and complex systems with hard-to-trace cause and effect. As systems and teams became more complex and distributed, errors caught in small teams began causing bigger problems.</p>]]></description></item><item><title>Fundamentals of Timeouts</title><link>/blog/2026/02/01/fundamentals-of-timeouts/</link><guid isPermaLink="true">/blog/2026/02/01/fundamentals-of-timeouts/</guid><pubDate>Sun, 01 Feb 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Fundamentals</category><category>Distributed Systems</category><category>Reliability</category><description><![CDATA[<h2 id="introduction">Introduction</h2>
<!-- markdownlint-disable MD052 -->
<!-- Link reference definitions (used reference-style in body and References). -->
<p>Why do some services hang until clients give up, while others fail fast and recover?</p>
<p>Timeouts limit how long an operation can run before it&rsquo;s considered failed, preventing indefinite blocking of resources due to unreliable networks and dependencies, which could hide real failures.</p>
<p>When a payment call hangs for 60 seconds, a database read blocks a request, or a slow dependency exhausts the connection pool, it&rsquo;s a timeout problem. I see timeouts as the essential protection at every boundary.</p>]]></description></item><item><title>A-List Article Review</title><link>/prompts/a-list-article-review/</link><guid isPermaLink="true">/prompts/a-list-article-review/</guid><pubDate>Sat, 31 Jan 2026 00:00:00 +0000</pubDate><category>list-article</category><category>list-x</category><category>seo</category><category>usability</category><category>review</category><description><![CDATA[<div class="prompt-rendered">
<p>You are a technical documentation quality reviewer. Review the provided article as a <strong>list article</strong> (list-x style) using the criteria from <a href="/prompts/a-list-article-create/">A-List Article Create</a>.</p>
<p>When you&rsquo;re done with the review, apply the feedback to the attached article. Then run the review again and repeat the process until the score is 9.0 or higher.</p>
<p>List articles on this site follow: <strong>&ldquo;A List of X&rdquo;</strong> title, clear value proposition, optional &ldquo;how to choose&rdquo; guidance, and when there are many entries, search and filter for usability. The create prompt defines SEO, usability (search/filter), and quality guidelines for introductions, list presentation, and supporting sections.</p>]]></description></item><item><title>A-List Article Create</title><link>/prompts/a-list-article-create/</link><guid isPermaLink="true">/prompts/a-list-article-create/</guid><pubDate>Sat, 31 Jan 2026 00:00:00 +0000</pubDate><category>list-article</category><category>list-x</category><category>seo</category><category>usability</category><category>create</category><description><![CDATA[<div class="prompt-rendered">
<p>You are a technical documentation writer. Create a &ldquo;list&rdquo; article (list-x style) that curates and organizes a set of items—tools, frameworks, resources, principles, or similar—based on the provided topic and requirements.</p>
<p>List articles on this site follow a consistent pattern: <strong>&ldquo;A List of X&rdquo;</strong> with a clear value proposition, optional &ldquo;how to choose&rdquo; guidance, and when there are many entries, search and filter for usability. Reference the best examples: <a href="/blog/2026/01/25/a-list-of-open-source-llms/">A List of Open Source LLMs</a> (many entries, search/filter), <a href="/blog/2026/01/23/a-list-of-software-engineering-blogs/">A List of Software Engineering Blogs</a> (cards from data), <a href="/blog/2026/01/27/a-list-of-writing-frameworks/">A List of Writing Frameworks</a> (hierarchical sections), <a href="/blog/2025/03/22/a-list-of-open-source-projects/">A List of Open Source Projects</a> (filtered list by section).</p>]]></description></item><item><title>A List of OSPO Resources: Guides, Tools, and Communities for Open Source Program Offices</title><link>/blog/2026/01/31/a-list-of-ospo-resources/</link><guid isPermaLink="true">/blog/2026/01/31/a-list-of-ospo-resources/</guid><pubDate>Sat, 31 Jan 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Open Source</category><category>Lists</category><category>Strategy</category><description><![CDATA[<p>If you&rsquo;re starting or running an Open Source Program Office (OSPO), you don&rsquo;t have to invent everything from scratch. <strong>OSPO resources</strong> from foundations and communities give you guides, playbooks, and a shared vocabulary. This list curates <strong>guides, tools, communities, and maturity models</strong> that help you build policy, compliance, and strategy in one place.</p>
<p>I&rsquo;ve grouped entries by type so you can jump to what you need. Review the <a href="#how-to-use-this-list">How to Use This List</a> section if you&rsquo;re not sure where to start.</p>]]></description></item><item><title>A List of Open Source LLMs: Coding and Writing Models for Local AI</title><link>/blog/2026/01/25/a-list-of-open-source-llms/</link><guid isPermaLink="true">/blog/2026/01/25/a-list-of-open-source-llms/</guid><pubDate>Sun, 25 Jan 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Programming</category><category>AI</category><category>Machine Learning</category><description><![CDATA[<p>Open-source language models have transformed coding and content creation. Running these <strong>open source LLMs</strong> locally offers privacy, control, and no API fees. Whether for <strong>code LLM</strong> programming or <strong>writing model</strong> creative work, this guide covers top <strong>open source language models</strong> today.</p>
<p>This list highlights popular <strong>open-source LLMs for coding and writing</strong>, organized by recency and popularity. Each model entry shows key attributes, use cases, tags, and pros and cons. These models work with tools like <strong>Ollama</strong>, <strong>LM Studio</strong>, <strong>Jan</strong>, and other local AI platforms.</p>]]></description></item><item><title>What Is Inoreader?</title><link>/blog/2026/01/24/what-is-inoreader/</link><guid isPermaLink="true">/blog/2026/01/24/what-is-inoreader/</guid><pubDate>Sat, 24 Jan 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Productivity</category><category>Information Management</category><description><![CDATA[<p>Inoreader is an RSS reader that uses automation rules and filters to organize articles. Rules sort content, filter noise, and tag items. Filters eliminate duplicates and irrelevant content before processing.</p>
<p>By the end of this article, you&rsquo;ll understand Inoreader, rules, and filters.</p>
<h2 id="why-inoreader-exists">Why Inoreader Exists</h2>
<p>RSS feeds enable subscribing to sites and automatic updates, but managing many feeds can be overwhelming. Traditional readers list unread articles and need manual organization, which works for few feeds but becomes difficult at scale.</p>]]></description></item><item><title>What Are Agent Skills?</title><link>/blog/2026/01/24/what-are-agent-skills/</link><guid isPermaLink="true">/blog/2026/01/24/what-are-agent-skills/</guid><pubDate>Sat, 24 Jan 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>AI</category><category>Software Development</category><description><![CDATA[<p>Initially, AI coding assistants could write code but lacked context. They didn&rsquo;t know my conventions, patterns, or domain knowledge. I had to repeat my explanations at each session, and the agent couldn&rsquo;t remember the previous context.</p>
<p>Agent Skills address this by packaging procedural knowledge, instructions, and resources into reusable folders for agents to discover and use. Instead of repeatedly explaining conventions, you create a single skill that any compatible agent can use.</p>]]></description></item><item><title>A List of Software Engineering Blogs: Tech Company Engineering Blogs</title><link>/blog/2026/01/23/a-list-of-software-engineering-blogs/</link><guid isPermaLink="true">/blog/2026/01/23/a-list-of-software-engineering-blogs/</guid><pubDate>Fri, 23 Jan 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Software Engineering</category><category>Lists</category><description><![CDATA[<p>I keep a curated list of <strong>software engineering blogs</strong> from technology companies
and organizations so I can discover how others build systems and ship software.
These <strong>engineering blogs</strong> share real-world perspectives on</p>
<!-- markdownlint-disable-next-line MD013 -->
<p><a href="/blog/2026/01/16/fundamentals-of-api-design-and-contracts/">API design</a>,</p>
<!-- markdownlint-disable-next-line MD013 -->
<p><a href="/blog/2026/01/19/fundamentals-of-centralized-software-systems/">system architecture</a>,
and</p>
<!-- markdownlint-disable-next-line MD013 -->
<p><a href="/blog/2026/01/13/fundamentals-of-software-development-operations/">software development operations</a>,
from teams at Meta, Google, Netflix, AWS, Microsoft, and many others.</p>
<p>This <strong>engineering blog directory</strong> focuses on <strong>tech company blogs</strong> that publish
technical content regularly. Most entries include RSS feeds so you can subscribe
and aggregate posts in a feed reader. Use the
<a href="#how-to-use-this-list">How to Use This List</a> section to get the most out of the
search and filters.</p>]]></description></item><item><title>Fundamentals of Centralized Software Systems</title><link>/blog/2026/01/19/fundamentals-of-centralized-software-systems/</link><guid isPermaLink="true">/blog/2026/01/19/fundamentals-of-centralized-software-systems/</guid><pubDate>Mon, 19 Jan 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Fundamentals</category><category>Software Architecture</category><category>System Design</category><description><![CDATA[<h2 id="introduction">Introduction</h2>
<p>Why do some systems work better with everything in one place, while others need to be spread across multiple machines? When should you choose a centralized approach over a distributed one?</p>
<p>I&rsquo;ve watched teams choose distributed systems for their modern appeal, only to drown in unnecessary complexity. I&rsquo;ve also seen teams cling to outdated centralized systems until bottlenecks and single points of failure became crises. Both extremes cause pain.</p>]]></description></item><item><title>What Is the Agent2Agent Protocol (A2A)?</title><link>/blog/2026/01/18/what-is-the-agent2agent-protocol-a2a/</link><guid isPermaLink="true">/blog/2026/01/18/what-is-the-agent2agent-protocol-a2a/</guid><pubDate>Sun, 18 Jan 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>AI</category><category>Open Source</category><category>Software Development</category><description><![CDATA[<p>AI agents are evolving from isolated tools to collaborative systems. Each works well independently, but connecting them needs custom code that doesn&rsquo;t transfer across vendors or platforms. Building bridges for only specific agent pairs isn&rsquo;t scalable.</p>
<p>The Agent2Agent Protocol (A2A) standardizes how AI agents communicate and collaborate across vendors, frameworks, or platforms. It allows agents to discover capabilities, securely exchange information, coordinate tasks, and negotiate result presentation.</p>
<p>By the end of this article, you&rsquo;ll understand why A2A exists, how it works conceptually, and what problems it solves for developers building multi-agent systems and users relying on AI tools.</p>]]></description></item><item><title>A List of Memes</title><link>/a-list-of-memes/</link><guid isPermaLink="true">/a-list-of-memes/</guid><pubDate>Sat, 17 Jan 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Culture</category><category>Philosophy</category><description><![CDATA[<div class="card-grid" style="--min-width: 250px;"><div class="card"><p>🧂🤖</p>
<p><code>#genai #Software #Technology #Programming #SoftwareDevelopment #Coding #SoftwareEngineering</code></p>
<link rel="stylesheet" href="/css/shortcodes/socialpost.min.805de183b82e69305a6f205394d0e0ccf881a6a28ac1aa0379e5b346eccf1c6f.css" integrity="sha256-gF3hg7guaTBabyBTlNDgzPiBpqKKwaoDeeWzRuzPHG8=" media="screen">
<div class="socialpost">
    <img loading="lazy" src="https://jeffbailey.us/static/images/social-media/genai-is-everything.gif"  alt="Salt Bae meme showing &#39;EVERYTHING&#39; with &#39;GenAI&#39; being sprinkled on it, illustrating how GenAI is being applied to everything"  />
</div></div><div class="card"><p>Who needs humans?! Let’s sit idly by as spectators while all creative pursuit are enjoyed by computers.</p>
<p><code>#GenAI #NoHumans #Software #Technology #Programming #SoftwareDevelopment #Coding #SoftwareEngineering</code></p>
<link rel="stylesheet" href="/css/shortcodes/socialpost.min.805de183b82e69305a6f205394d0e0ccf881a6a28ac1aa0379e5b346eccf1c6f.css" integrity="sha256-gF3hg7guaTBabyBTlNDgzPiBpqKKwaoDeeWzRuzPHG8=" media="screen">
<div class="socialpost">
    <img loading="lazy" src="https://jeffbailey.us/static/images/social-media/genai-nosedive.png"  alt="GenAI Nosedive"  />
</div></div><div class="card"><p>I see you, aspiring developers. 👀</p>
<p><code>#AI #GenAI #IT #Career #Software #Technology #Programming #SoftwareDevelopment #Coding #SoftwareEngineering</code></p>
<link rel="stylesheet" href="/css/shortcodes/socialpost.min.805de183b82e69305a6f205394d0e0ccf881a6a28ac1aa0379e5b346eccf1c6f.css" integrity="sha256-gF3hg7guaTBabyBTlNDgzPiBpqKKwaoDeeWzRuzPHG8=" media="screen">
<div class="socialpost">
    <img loading="lazy" src="https://jeffbailey.us/static/images/social-media/i-see-you-developers.png"  alt="I See You Developers"  />
</div></div><div class="card"><p>Or was it line 13?</p>]]></description></item></channel></rss>