<?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>https://jeffbailey.us/</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/rss.xml" rel="self" type="application/rss+xml"/><lastBuildDate>Thu, 03 Sep 2026 00:00:00 +0000</lastBuildDate><item><title>Confusion as a Service - Deadly Cut 17</title><link>https://jeffbailey.us/blog/2026/09/03/death-by-1000-cuts-17-confusion-as-a-service/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/09/03/death-by-1000-cuts-17-confusion-as-a-service/</guid><pubDate>Thu, 03 Sep 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Death By 1000 Cuts</category><category>Culture</category><description><![CDATA[<p>Have you ever worked with someone who leaves confusion everywhere they go? You are having a level-headed conversation about something simple, work is moving, and then they arrive. What follows is <em><strong>Confusion as a Service (CaaS)</strong></em>: a relentless focus on things that do not matter in any universe.</p>
<p>Before they show up, my mind sits in a tranquil pool. The reality I am working in is distilled and full of purpose, and I am making real strides toward the goal.</p>]]></description></item><item><title>Why Do I Need an Ontology?</title><link>https://jeffbailey.us/blog/2026/08/26/why-do-i-need-an-ontology/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/08/26/why-do-i-need-an-ontology/</guid><pubDate>Wed, 26 Aug 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Why</category><category>AI</category><category>Software Development</category><description><![CDATA[<h2 id="introduction">Introduction</h2>
<p>Imagine an AI that approves a second refund on the same order. Its reasoning is clear, and the tool call is correct. Yet, the refund remains wrong, and system knowledge isn&rsquo;t enough to stop it, since the rule &ldquo;one order gets one refund&rdquo; exists only in someone&rsquo;s mind.</p>
<p>That rule belongs in an ontology. By the end of this article, you&rsquo;ll understand what an ontology is, why developers have always needed one, and why agents and LLMs need a robust one more than ever.</p>]]></description></item><item><title>What Is Lima?</title><link>https://jeffbailey.us/blog/2026/01/31/what-is-lima/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/01/31/what-is-lima/</guid><pubDate>Fri, 14 Aug 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Containers</category><category>macOS</category><category>Development</category><description><![CDATA[<p>When Docker altered Docker Desktop licensing in 2021, teams received emails from procurement to stop using it or buy seats. Switching a Mac to Lima after such emails, the command line remains nearly unchanged. Containers run, ports forward, and bind mounts appear inside the container.</p>
<p>That leaves a question: what is doing the work now? Docker Desktop feels like one thing. Lima seems like tangled parts.</p>
<p>This article explains what Lima is, how it runs Linux on your Mac, and its relation to tools like <code>nerdctl</code>, Colima, and Rancher Desktop.</p>]]></description></item><item><title>Learn Mermaid</title><link>https://jeffbailey.us/blog/2026/08/14/learn-mermaid/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/08/14/learn-mermaid/</guid><pubDate>Fri, 14 Aug 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Learn X</category><category>Software</category><category>Tools</category><description><![CDATA[<p><strong>Quick Start:</strong> This guide gets you writing Mermaid diagrams that render on GitHub in about 15 minutes. Learn the two diagram types that cover most real work, then build a deployment pipeline diagram you can drop into any README.</p>
<h2 id="what-youll-learn">What You&rsquo;ll Learn</h2>
<ul>
<li>What is Mermaid, and what problem does it solve?</li>
<li>What are the use cases for Mermaid?</li>
<li>When is Mermaid <em>not</em> the right tool?</li>
<li>Which two diagram types cover most real work?</li>
<li>How do you build a pipeline diagram and publish it on GitHub?</li>
<li>Where can you go to learn more about Mermaid?</li>
</ul>
<h2 id="the-basics">The Basics</h2>
<p><a href="https://mermaid.js.org/">Mermaid</a> is an open-source tool that turns short text descriptions into diagrams. Type <code>A --&gt; B</code> and you get two boxes connected by an arrow. Knut Sveidqvist created it in 2014 so diagrams could live where code lives: in plain text, in version control, reviewed in pull requests like everything else.</p>]]></description></item><item><title>How Do I Use Lima?</title><link>https://jeffbailey.us/blog/2026/08/14/how-do-i-use-lima/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/08/14/how-do-i-use-lima/</guid><pubDate>Fri, 14 Aug 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Containers</category><category>macOS</category><category>Tools</category><description><![CDATA[<p>Lima enables you to run a Linux machine on your Mac for free. This tutorial helps you install Lima, launch a Linux VM, verify shared files, and run a web server in a container accessible via your browser.</p>
<p>If you want the concepts first, read <a href="https://jeffbailey.us/blog/2026/01/31/what-is-lima/">What Is Lima?</a> and come back. This article stays hands-on.</p>
<h2 id="what-youll-build">What You&rsquo;ll Build</h2>
<p>A working Lima setup: an Ubuntu virtual machine (VM) running on your Mac, managed from your terminal, serving a containerized nginx web page at <code>localhost:8080</code>.</p>]]></description></item><item><title>What Is Envoy?</title><link>https://jeffbailey.us/blog/2026/08/13/what-is-envoy/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/08/13/what-is-envoy/</guid><pubDate>Thu, 13 Aug 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>DevOps</category><category>Software Architecture</category><description><![CDATA[<p>Run <code>kubectl get pods</code> in a Kubernetes cluster with Istio installed, and every application pod shows <code>2/2</code> containers. You deployed one container. The second is Envoy, and it now handles every byte of network traffic your application sends or receives.</p>
<p>Envoy is an open-source, high-performance proxy for cloud-native systems. It handles networking tasks like routing, retries, timeouts, load balancing, encryption, and telemetry, replacing application-managed functions. By the end of this article, you&rsquo;ll understand why Envoy exists, how its configuration works, and why Kubernetes tools such as Istio, Envoy Gateway, Contour, and Emissary build on it.</p>]]></description></item><item><title>What Is Boolean Logic?</title><link>https://jeffbailey.us/blog/2026/07/29/what-is-boolean-logic/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/07/29/what-is-boolean-logic/</guid><pubDate>Wed, 29 Jul 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Programming</category><category>Software Development</category><description><![CDATA[<h2 id="introduction">Introduction</h2>
<p>Every <code>if</code> statement relies on ideas humans learn before talking. Booleans seem simple: one bit, two values. But explaining a boolean to someone with no programming background is difficult.</p>
<p>Boolean logic is a reasoning system based on two values, true and false, with three operations: AND, OR, NOT. It underpins all digital computers and program conditionals.</p>
<p>By the end of this article, you&rsquo;ll understand Boolean logic, its purpose, how it works, and the mental patterns humans need before &ldquo;true&rdquo; and &ldquo;false&rdquo; mean anything.</p>]]></description></item><item><title>The Invalid Response Loop: Deadly Cut 16</title><link>https://jeffbailey.us/blog/2026/07/24/death-by-1000-invalid-response-loop/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/07/24/death-by-1000-invalid-response-loop/</guid><pubDate>Fri, 24 Jul 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Death By 1000 Cuts</category><category>Software</category><category>Culture</category><category>Customer Experience</category><description><![CDATA[<p>I just got off a 27-minute call trying to understand and fix a credit card decline problem with my Flexible Spending Account (FSA), not to be confused with my Health Savings Account (HSA). Thank you, government, for creating two accounts that sound very similar. It was a wonderful adventure.</p>
<p>If I were playing a game of Zork, it might have been fun pressing 1, 2, 3, or 4, or entering random words to get to the next level, but I wasn&rsquo;t playing Zork. I was just trying to fix a declined credit card transaction. Every time I get a phone number and no other option, no email, no chat, I know I&rsquo;m doomed. I expect to be jerked around for a minimum of 30 to 60 minutes and eventually end up in a purgatory loop where I&rsquo;m expected to know the magic incantation I must cast to reach the secret department.</p>]]></description></item><item><title>Fundamentals of Containerization</title><link>https://jeffbailey.us/blog/2026/07/19/fundamentals-of-containerization/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/07/19/fundamentals-of-containerization/</guid><pubDate>Sun, 19 Jul 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Fundamentals</category><category>Software Engineering</category><category>DevOps</category><description><![CDATA[<h2 id="introduction">Introduction</h2>
<p>Why does &ldquo;it works on my machine&rdquo; stop being an excuse the moment a team adopts containers? Because a container ships the machine along with the code. That single shift, packaging an application together with everything it needs to run, is the heart of containerization.</p>
<p>A container is an isolated process that carries its own filesystem, libraries, and configuration while sharing the host operating system kernel. The application sees a clean, predictable world. The host sees just another process it can start, stop, and limit.</p>]]></description></item><item><title>Fundamentals of Empirical Software Engineering</title><link>https://jeffbailey.us/blog/2026/07/14/fundamentals-of-empirical-engineering/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/07/14/fundamentals-of-empirical-engineering/</guid><pubDate>Tue, 14 Jul 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Fundamentals</category><category>Software Engineering</category><category>Data Science</category><description><![CDATA[<p>Most claims about how to build software are opinions wearing the costume of fact. &ldquo;Pair programming catches more bugs.&rdquo; &ldquo;Microservices scale better.&rdquo; &ldquo;This linter improves quality.&rdquo; Each sounds authoritative, and each is testable. Empirical software engineering is the discipline that does the testing: it studies how software is built, maintained, and used by collecting real data and analyzing it, instead of trusting whoever argues most confidently.</p>
<p>Think of it like the shift medicine made a century ago. Doctors once prescribed treatments because a respected mentor swore by them. Then medicine started running trials, tracking outcomes, and pooling results across studies. Software engineering is partway through the same shift, and understanding how it works lets you tell a real finding from a well-dressed guess.</p>]]></description></item><item><title>Fundamentals of Data Architecture</title><link>https://jeffbailey.us/blog/2026/07/13/fundamentals-of-data-architecture/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/07/13/fundamentals-of-data-architecture/</guid><pubDate>Mon, 13 Jul 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Fundamentals</category><category>Data Engineering</category><category>Data Architecture</category><description><![CDATA[<h2 id="introduction">Introduction</h2>
<p>Someone on r/dataengineering asked if there&rsquo;s a standard for modern data architecture. With 20 years of experience, they had a batch pipeline pulling 200MB files into a data lake and a new source as a serialized Kafka stream. They wondered if streaming was the new paradigm or if they were becoming dinosaurs.</p>
<p>The best answer cut to the confusion: the question asked about architecture, but the follow-up discussed tools. They are on different levels. Data architecture has little to do with tool selection.</p>]]></description></item><item><title>Fundamentals of Architecture Decision Making</title><link>https://jeffbailey.us/blog/2026/07/13/fundamentals-of-architecture-decision-making/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/07/13/fundamentals-of-architecture-decision-making/</guid><pubDate>Mon, 13 Jul 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>A team spends three weeks debating whether to use PostgreSQL or MongoDB. Six months later, nobody remembers why they chose one over the other, a new hire proposes switching, and the whole argument starts again from zero. The database was never the hard part. The team had no way to make the decision, agree on it, and remember it.</p>
<p>Most software failures are not coding failures. They trace back to an undocumented decision made without considering key forces, by the wrong people, or both. Architecture decision-making is the discipline of choosing well when the choice is hard to reverse.</p>]]></description></item><item><title>Fundamentals of Analytics Engineering</title><link>https://jeffbailey.us/blog/2026/07/09/fundamentals-of-analytics-engineering/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/07/09/fundamentals-of-analytics-engineering/</guid><pubDate>Thu, 09 Jul 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Fundamentals</category><category>Data Engineering</category><category>Analytics Engineering</category><description><![CDATA[<h2 id="introduction">Introduction</h2>
<p>Most data teams hit the same wall. The pipelines run, the warehouse fills up, and yet nobody trusts the numbers. Two dashboards report different revenue. An analyst spends a morning rebuilding a definition of &ldquo;active user&rdquo; that someone already wrote last quarter. The data exists, but the data nobody argues about does not.</p>
<p>Analytics engineering is the work that closes that gap. It sits between the people who move data and the people who interpret it, and it owns the messy middle where raw tables become datasets you can trust.</p>]]></description></item><item><title>Are We There Yet Development</title><link>https://jeffbailey.us/blog/2026/07/02/death-by-1000-are-we-there-yet-development/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/07/02/death-by-1000-are-we-there-yet-development/</guid><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Software Development</category><category>AI</category><description><![CDATA[<p>A new paradigm is emerging in the age of AI-led software development. I&rsquo;m calling it <em><strong>Are We There Yet Development</strong></em>. Last week a developer walked over to another developer asking for something they felt they needed to proceed with their <em><strong>critical</strong></em> greenfield project when the developer was in the middle of troubleshooting a production incident.</p>
<p>Looming over nearly every developer is a neverending sense of urgency from on high and an enduring belief that using AI means building at the speed of thought. As this cultural &ldquo;norm&rdquo; seeps into the software development lifecycle I can&rsquo;t help but think about children in the back of the car whining for the hundredth time: <em>&ldquo;Are we there yet?!&rdquo;</em>.</p>]]></description></item><item><title>Learn HTTP Status Codes</title><link>https://jeffbailey.us/blog/2026/06/28/learn-http-codes/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/06/28/learn-http-codes/</guid><pubDate>Sun, 28 Jun 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Learn X</category><category>Web Development</category><description><![CDATA[<p><strong>Quick Start:</strong> Learn five mental models that cover every HTTP response, then read live codes with <code>curl</code>. Total time: 20 minutes.</p>
<h2 id="what-youll-learn">What You&rsquo;ll Learn</h2>
<ul>
<li>What an HTTP status code is, and what problem it solves.</li>
<li>Five mental models that make any code readable, not just the ones you&rsquo;ve memorized.</li>
<li>The mnemonic for all five classes, and four more models for the hard cases.</li>
<li>The handful of codes you&rsquo;ll meet 95% of the time.</li>
<li>When the code lies to you (200 with an error inside).</li>
<li>How to read status codes yourself with <code>curl</code>.</li>
<li>Where to go to learn the long tail.</li>
</ul>
<h2 id="the-basics">The Basics</h2>
<p>Every HTTP response carries a three-digit status code: the server&rsquo;s verdict on your request, delivered before any body content. The first digit classifies responses into five categories; knowing those five is enough to read any code you encounter.</p>]]></description></item><item><title>1000 Life Giving Potions - Operating System Wildlife</title><link>https://jeffbailey.us/blog/2026/06/27/1000-life-giving-potions-operating-system-wildlife/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/06/27/1000-life-giving-potions-operating-system-wildlife/</guid><pubDate>Sat, 27 Jun 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>1000 Life Giving Potions</category><category>Operating Systems</category><category>Software Development</category><description><![CDATA[<p>I admit it: I&rsquo;m an operating system addict. I&rsquo;ve installed countless operating systems over my life, and I still use many of them. It may seem like a bad idea. It isn&rsquo;t.</p>
<p>I jump between macOS, Linux, Windows, and Chrome OS across many devices, and that&rsquo;s just on desktop. On phones, my first was a Google Nexus One then a couple pit stops with Nokia Lumia 521 and 620 Windows Phones. Later I went back to Adroid with a Samsung S7, an S10, and others, I now carry an iPhone 13 Pro Max. I&rsquo;ve also used long-dead operating systems like SunOS, Solaris, Warp OS, and many more. Oh, and I run Android TV on an Nvidia Shield and don&rsquo;t forget three different Raspberry Pis and a Synology NAS all running various flavors of Linux.</p>]]></description></item><item><title>What Is a Knowledge Graph?</title><link>https://jeffbailey.us/blog/2026/06/23/what-is-a-knowledge-graph/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/06/23/what-is-a-knowledge-graph/</guid><pubDate>Tue, 23 Jun 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Data Engineering</category><category>AI Engineering</category><category>Software Architecture</category><description><![CDATA[<p>Most data starts as rows in tables: customers, orders, tickets. To see how a customer links to a product they refunded through a support ticket, you write joins. The connections exist, but the tables hide them; they surface only when you go looking.</p>
<p>A knowledge graph puts those connections first, treating the relationships between entities as the main thing. By the end of this article, you&rsquo;ll know what a knowledge graph is, why people build them, how one works, and where it helps and where it doesn&rsquo;t.</p>]]></description></item><item><title>How Do I Create a Knowledge Graph?</title><link>https://jeffbailey.us/blog/2026/06/23/how-do-i-create-a-knowledge-graph/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/06/23/how-do-i-create-a-knowledge-graph/</guid><pubDate>Tue, 23 Jun 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Data Engineering</category><category>AI Engineering</category><category>Software Architecture</category><description><![CDATA[<p>You have read what a knowledge graph is. Now build the smallest one that works.</p>
<p>This tutorial uses plain Python, a list, small functions, no database, libraries, or setup beyond Python. By the end, you&rsquo;ll have a runnable file that stores facts, answers questions, and navigates between facts.</p>
<p>If the words <em>triple</em>, <em>node</em>, or <em>edge</em> are new, read <a href="https://jeffbailey.us/blog/2026/06/23/what-is-a-knowledge-graph/">What Is a Knowledge Graph?</a> first. This guide builds what that article describes.</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-To</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-To</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>What Is a Software Ontology?</title><link>https://jeffbailey.us/blog/2026/05/28/what-is-a-software-ontology/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/05/28/what-is-a-software-ontology/</guid><pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Explanation</category><category>Software Architecture</category><category>Domain-Driven Design</category><description><![CDATA[<p>Open a mature codebase and grep for <code>Customer</code>. In billing, it means an active, paid account; in support, anyone who has sent an email; in analytics, a deduplicated household. The bug isn&rsquo;t in one module, but in three teams misunderstanding they&rsquo;re referring to the same thing.</p>
<p>A software ontology is a clearly defined, shared model of a domain that includes concepts, meanings, and relationships, documented and integrated with code. This article explains its role in Domain-Driven Design (DDD), why it exists, and how it functions as a mental model.</p>]]></description></item><item><title>How Is AI Impacting Software Engineering?</title><link>https://jeffbailey.us/blog/2026/05/27/how-is-ai-impacting-software-engineering/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/05/27/how-is-ai-impacting-software-engineering/</guid><pubDate>Wed, 27 May 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>AI Engineering</category><category>Software Architecture</category><category>Developer Productivity</category><description><![CDATA[<p>Your job as a software engineer in 2026 differs from 2020, beyond just using chat tools. Every system component, review queue, test runner, version control, release process, and on-call rotation must handle more load than they were designed for as demand continues to rise.</p>
<p>This article discusses AI&rsquo;s impact on software engineering through the lens of software ecology, citing Adam Bender&rsquo;s Google talk, <em>&ldquo;Software Engineering at the Tipping Point.&rdquo;</em> It helps you analyze your dev environment, spot vulnerabilities, and choose resilient principles.</p>]]></description></item><item><title>What Is the AT Protocol? A Developer's Mental Model</title><link>https://jeffbailey.us/blog/2026/05/25/what-is-atproto/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/05/25/what-is-atproto/</guid><pubDate>Mon, 25 May 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Distributed Systems</category><category>Protocols</category><category>Social Web</category><description><![CDATA[<p>Most social networks use a single database with an app, storing usernames, posts, algorithms, moderation rules, and HTML within the same company. Building on top means relying on the vendor&rsquo;s rate-limited API, which can change or disappear unexpectedly.</p>
<p>The AT Protocol (ATproto) divides the monolith into parts that different people can run, use different languages for, and swap out without losing accounts or posts. Bluesky is its biggest app, but the protocol is more interesting for developers than the app.</p>]]></description></item><item><title>What Is the Hourglass of Uncertainty?</title><link>https://jeffbailey.us/blog/2026/05/20/what-is-the-hourglass-of-uncertainty/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/05/20/what-is-the-hourglass-of-uncertainty/</guid><pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Software Engineering</category><category>Estimation</category><category>Project Management</category><description><![CDATA[<h2 id="the-pattern">The pattern</h2>
<p>The team is three weeks away from shipping. The demo went well. Estimates are tight. Velocity is trending up. The product manager is drafting the launch email.</p>
<p>Then the integration tests hit, the third-party API rate-limits at production volume, a database query takes four seconds instead of two, a security review finds an authentication gap, and the analytics team sees a schema mismatch.</p>
<p>Three weeks become three months.</p>]]></description></item><item><title>How Do I Use Conway's Law?</title><link>https://jeffbailey.us/blog/2026/05/13/how-do-i-use-conways-law/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/05/13/how-do-i-use-conways-law/</guid><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Software Engineering</category><category>Organization Design</category><description><![CDATA[<p>Conway&rsquo;s Law is the observation that systems mirror the communication structures of the teams that build them. Applying it in practice splits into five different tasks, each with its own evidence, levers, and audience. This page is the index. Pick the guide that matches the situation in front of you.</p>
<p>For the theory and why the law holds, read <a href="https://jeffbailey.us/blog/2026/05/12/what-is-conways-law/">What Is Conway&rsquo;s Law?</a> first.</p>
<h2 id="pick-your-guide">Pick your guide</h2>
<div class="card-grid" style="--min-width: 250px;"><div class="card"><p>🛠️ <strong><a href="https://jeffbailey.us/blog/2026/05/13/how-do-i-smooth-platform-team-friction/">Smooth platform team friction</a></strong></p>]]></description></item><item><title>How Do I Smooth Platform Team Friction?</title><link>https://jeffbailey.us/blog/2026/05/13/how-do-i-smooth-platform-team-friction/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/05/13/how-do-i-smooth-platform-team-friction/</guid><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Software Engineering</category><category>Organization Design</category><description><![CDATA[<h2 id="prerequisites">Prerequisites</h2>
<p>This guide assumes:</p>
<ul>
<li><strong>Familiarity with Conway&rsquo;s Law.</strong> Read <a href="https://jeffbailey.us/blog/2026/05/12/what-is-conways-law/">What Is Conway&rsquo;s Law?</a> first if &ldquo;communication structure shapes system structure&rdquo; sounds new.</li>
<li><strong>You work on or with a platform team.</strong> This means a team that owns shared infrastructure consumed by multiple product teams.</li>
<li><strong>Visibility into platform PR queues, product-team workflows, and meeting calendars.</strong> Without these signals, you cannot measure friction.</li>
<li><strong>Influence over platform priorities, or a partner who has it.</strong> The fixes below require changing what the platform team does, not what product teams ask for.</li>
</ul>
<h2 id="measure-the-friction-budget">Measure the friction budget</h2>
<p>Platform teams own shared infrastructure that many product teams depend on. Heavy edit volume across multiple teams is normal. Slow shipping and burned-out engineers are not.</p>]]></description></item><item><title>How Do I Serve Organizational Needs With Conway's Law?</title><link>https://jeffbailey.us/blog/2026/05/13/how-do-i-serve-organizational-needs/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/05/13/how-do-i-serve-organizational-needs/</guid><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Software Engineering</category><category>Organization Design</category><description><![CDATA[<h2 id="prerequisites">Prerequisites</h2>
<p>This guide assumes:</p>
<ul>
<li><strong>Familiarity with Conway&rsquo;s Law.</strong> Read <a href="https://jeffbailey.us/blog/2026/05/12/what-is-conways-law/">What Is Conway&rsquo;s Law?</a> first if &ldquo;communication structure shapes system structure&rdquo; sounds new.</li>
<li><strong>Access to git history.</strong> You will read commit patterns over the last quarter.</li>
<li><strong>Visibility into the org chart.</strong> You need to know which engineers belong to which teams.</li>
<li><strong>Influence over team boundaries, or a stakeholder who has it.</strong> The fixes below require organizational change, not technical work.</li>
</ul>
<h2 id="read-the-alignment">Read the alignment</h2>
<p>Conway&rsquo;s Law works both directions. Observe the code, and you can infer the organization. Use that to understand where the org is healthy and where it is broken.</p>]]></description></item><item><title>How Do I Pitch Org Design for Better Architecture?</title><link>https://jeffbailey.us/blog/2026/05/13/how-do-i-pitch-org-design-for-better-architecture/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/05/13/how-do-i-pitch-org-design-for-better-architecture/</guid><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Software Engineering</category><category>Organization Design</category><description><![CDATA[<h2 id="prerequisites">Prerequisites</h2>
<p>This guide assumes:</p>
<ul>
<li><strong>Familiarity with Conway&rsquo;s Law.</strong> Read <a href="https://jeffbailey.us/blog/2026/05/12/what-is-conways-law/">What Is Conway&rsquo;s Law?</a> first if &ldquo;communication structure shapes system structure&rdquo; sounds new.</li>
<li><strong>Concrete evidence from your own org.</strong> A diagnosis from <a href="https://jeffbailey.us/blog/2026/05/13/how-do-i-diagnose-software-delivery-friction/">How Do I Diagnose Delivery Friction?</a> or a deployment decode from <a href="https://jeffbailey.us/blog/2026/05/13/how-do-i-decode-software-deployments/">How Do I Decode a Deployment?</a> gives you the artifacts to point at. Without evidence, the pitch sounds like opinion. Start there if you have not yet.</li>
<li><strong>An audience.</strong> Architects, product leaders, your own team, an open-source community, or conference attendees. The pitch shifts with each.</li>
</ul>
<h2 id="bring-both-halves-to-every-conversation">Bring both halves to every conversation</h2>
<p>Most conversations about software architecture skip the organizational layer entirely. Engineers debate microservices versus monoliths. Leaders debate team structure in isolation. The two conversations rarely connect. Use Conway&rsquo;s Law to make the connection explicit.</p>]]></description></item><item><title>How Do I Diagnose Software Delivery Friction?</title><link>https://jeffbailey.us/blog/2026/05/13/how-do-i-diagnose-software-delivery-friction/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/05/13/how-do-i-diagnose-software-delivery-friction/</guid><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Software Engineering</category><category>Organization Design</category><description><![CDATA[<h2 id="prerequisites">Prerequisites</h2>
<p>This guide assumes:</p>
<ul>
<li><strong>Familiarity with Conway&rsquo;s Law.</strong> Read <a href="https://jeffbailey.us/blog/2026/05/12/what-is-conways-law/">What Is Conway&rsquo;s Law?</a> first if &ldquo;communication structure shapes system structure&rdquo; sounds new.</li>
<li><strong>A local clone of the repository you want to analyze.</strong> The diagnosis below is a git query.</li>
<li><strong>A POSIX shell with <code>awk</code>, <code>sort</code>, <code>uniq</code>, and <code>cut</code>.</strong> Standard on macOS and Linux.</li>
<li><strong>Visibility into the org chart.</strong> You need to map author emails to teams.</li>
</ul>
<h2 id="rank-the-congestion-candidates">Rank the congestion candidates</h2>
<p>Start by looking at the slowest, most contentious modules. Files with commits from many different authors over the last quarter signal congestion.</p>]]></description></item><item><title>How Do I Decode Software Deployments?</title><link>https://jeffbailey.us/blog/2026/05/13/how-do-i-decode-software-deployments/</link><guid isPermaLink="true">https://jeffbailey.us/blog/2026/05/13/how-do-i-decode-software-deployments/</guid><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><dc:creator>Jeff Bailey</dc:creator><category>Software Engineering</category><category>Organization Design</category><description><![CDATA[<h2 id="prerequisites">Prerequisites</h2>
<p>This guide assumes:</p>
<ul>
<li><strong>Familiarity with Conway&rsquo;s Law.</strong> Read <a href="https://jeffbailey.us/blog/2026/05/12/what-is-conways-law/">What Is Conway&rsquo;s Law?</a> first if &ldquo;communication structure shapes system structure&rdquo; sounds new.</li>
<li><strong>Access to the deployed system.</strong> You need to see the service list, runbooks, and on-call rotations.</li>
<li><strong>Visibility into pipelines and release boundaries.</strong> You need to know which services ship together and which ship separately.</li>
<li><strong>A blank document or whiteboard.</strong> You will sketch a map as you go.</li>
</ul>
<h2 id="walk-the-deployment">Walk the deployment</h2>
<p>Treat deployed software like a fossil record. Every service boundary, API contract, and deployment pipeline carries the imprint of the people who shipped it. Walk the deployment in this order:</p>]]></description></item></channel></rss>