<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Barn blog on Barn</title>
    <link>https://barn.pgsty.com/blog/</link>
    <description>Recent content in Barn blog on Barn</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    
    
    
      <lastBuildDate>Tue, 29 Sep 2026 00:00:00 +0800</lastBuildDate>
    
    
      <atom:link href="https://barn.pgsty.com/blog/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>Why Barn Has No Projects</title>
        <link>https://barn.pgsty.com/blog/design/one-deployment-no-projects/</link>
        <pubDate>Thu, 27 Aug 2026 19:00:00 +0800</pubDate>
        
        <guid>https://barn.pgsty.com/blog/design/one-deployment-no-projects/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-info&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Note&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;This article describes the &lt;strong&gt;unreleased Barn 0.9.0 candidate&lt;/strong&gt;. See&#xA;&lt;a href=&#34;https://barn.pgsty.com/docs/about/status/&#34;&gt;Status&lt;/a&gt; for current validation and remaining release checks.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;Barn began with a familiar VM-manager abstraction: a working directory was&#xA;a project, a hidden marker gave it identity, a registry found projects again,&#xA;and a host-global lease kept their private networks from colliding. That model&#xA;can support many independent VM sets. It was also the wrong model for the&#xA;product Barn was actually becoming.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Why Every Barn Node Has Two NICs</title>
        <link>https://barn.pgsty.com/blog/design/fixed-ip-two-nics/</link>
        <pubDate>Thu, 27 Aug 2026 20:00:00 +0800</pubDate>
        
        <guid>https://barn.pgsty.com/blog/design/fixed-ip-two-nics/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-info&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Note&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;This article describes the &lt;strong&gt;unreleased Barn 0.9.0 candidate&lt;/strong&gt;. See&#xA;&lt;a href=&#34;https://barn.pgsty.com/docs/about/status/&#34;&gt;Status&lt;/a&gt; for current validation and remaining release checks.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;A Pigsty Inventory names machines by stable addresses. PostgreSQL replication,&#xA;etcd membership, HAProxy backends, VIPs, monitoring targets, and Ansible all&#xA;assume that &lt;code&gt;10.10.10.11&lt;/code&gt; continues to mean the same node. A loopback port&#xA;forward can expose SSH or PostgreSQL to the host, but it cannot provide that&#xA;network identity to peers.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Declarative Does Not Mean Destructive</title>
        <link>https://barn.pgsty.com/blog/design/convergence-without-surprise/</link>
        <pubDate>Thu, 27 Aug 2026 21:00:00 +0800</pubDate>
        
        <guid>https://barn.pgsty.com/blog/design/convergence-without-surprise/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-info&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Note&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;This article describes the &lt;strong&gt;unreleased Barn 0.9.0 candidate&lt;/strong&gt;. See&#xA;&lt;a href=&#34;https://barn.pgsty.com/docs/about/status/&#34;&gt;Status&lt;/a&gt; for current validation and remaining release checks.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;“Declarative” is often shortened to “make reality equal the file.” That is a&#xA;useful slogan until the file is incomplete, the wrong branch is checked out,&#xA;or one YAML group is temporarily removed. If absence is treated as deletion,&#xA;an ordinary editing mistake becomes a destructive operation.&lt;/p&gt;&#xA;&lt;p&gt;Barn uses a narrower rule:&lt;/p&gt;</description>
      </item>
    <item>
        <title>A PID Is Not a Virtual Machine</title>
        <link>https://barn.pgsty.com/blog/design/identity-before-pid/</link>
        <pubDate>Fri, 28 Aug 2026 10:00:00 +0800</pubDate>
        
        <guid>https://barn.pgsty.com/blog/design/identity-before-pid/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-info&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Note&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;This article describes the &lt;strong&gt;unreleased Barn 0.9.0 candidate&lt;/strong&gt;. See&#xA;&lt;a href=&#34;https://barn.pgsty.com/docs/about/status/&#34;&gt;Status&lt;/a&gt; for current validation and remaining release checks.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;A pidfile answers one question: which integer did a process have when the file&#xA;was written? It does not prove that the process is still alive, that the PID&#xA;was not reused, that the executable is QEMU, or that this particular QEMU owns&#xA;the node an operator wants to stop.&lt;/p&gt;</description>
      </item>
    <item>
        <title>repo.yaml Is Intent; catalog.json Is Evidence</title>
        <link>https://barn.pgsty.com/blog/design/repo-yaml-catalog-json/</link>
        <pubDate>Sat, 29 Aug 2026 19:00:00 +0800</pubDate>
        
        <guid>https://barn.pgsty.com/blog/design/repo-yaml-catalog-json/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-info&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Note&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;This article describes the &lt;strong&gt;unreleased Barn 0.9.0 candidate&lt;/strong&gt;. See&#xA;&lt;a href=&#34;https://barn.pgsty.com/docs/about/status/&#34;&gt;Status&lt;/a&gt; for current validation and remaining release checks.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;A static image repository sounds like a directory of qcow2 files plus a JSON&#xA;index. The difficult part is deciding which facts a maintainer may write by&#xA;hand and which facts must be derived from the bytes being published.&lt;/p&gt;&#xA;&lt;p&gt;If checksums and sizes live in the hand-authored source, they are easy to copy&#xA;incorrectly. If policy exists only in generated JSON, reviewing a channel&#xA;change or deprecation requires reading machine output. Barn keeps the two&#xA;jobs separate.&lt;/p&gt;</description>
      </item>
    
  </channel>
</rss>
