<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">
  <channel>
    <title>Cardinal Codes Blog</title>
    <link>https://cardinalcodes.com/blog/</link>
    <description>Sovereign engineering, carrier-grade networking, bare-metal Kubernetes and on-premise AI: field notes from Cardinal Codes.</description>
    <language>en</language>
    <lastBuildDate>Sun, 20 Sep 2026 01:12:03 GMT</lastBuildDate>
    <atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="https://cardinalcodes.com/rss.xml"/>
    <creativeCommons:license>https://creativecommons.org/licenses/by/4.0/</creativeCommons:license>
    <item>
      <title>Sovereign by design, not by slogan</title>
      <link>https://cardinalcodes.com/blog/sovereign-by-design/</link>
      <guid isPermaLink="true">https://cardinalcodes.com/blog/sovereign-by-design/</guid>
      <pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate>
      <author>contact@cardinalcodes.com (Cardinal Codes)</author>
      <description>Why an independent lab builds its whole stack on infrastructure it controls, and what sovereignty actually costs in engineering terms.</description>
      <content:encoded><![CDATA[<p>Every vendor sells sovereignty now. The word has drifted so far from its meaning that it now covers anything hosted in a jurisdiction with a flag you like. We use it in a stricter sense: <strong>you are sovereign over a system when you can operate, audit, rebuild and shut it down without asking anyone’s permission.</strong></p>
<p>That definition has consequences. It rules out convenience before it rules out providers.</p>
<h2 id="what-it-means-in-practice">What it means in practice</h2>
<p><strong>In practice, sovereign infrastructure means four non-negotiable commitments: data stays where you put it with no third-party processor in the path; the audit trail is local and physical; every system is reproducible from a Git repository on hardware you can touch; and every component has a documented exit path before adoption.</strong></p>
<p>For us, sovereign infrastructure means four commitments:</p>
<ol>
<li><strong>Data stays where you put it.</strong> No third-party processor in the request path unless you chose it, and you can name it.</li>
<li><strong>The audit trail is local.</strong> Logs, prompts, documents: if a regulator or a customer asks where this data physically lives, the answer is a rack, not a region.</li>
<li><strong>Rebuild is a command, not a project.</strong> Everything we operate is described in code and reproducible from a Git repository on hardware we can touch.</li>
<li><strong>Exit is designed in.</strong> If a component disappears tomorrow, the migration path is documented before the component is adopted.</li>
</ol>
<p>None of this is exotic. Carrier-grade network operators have worked this way for decades. What changed is that the tooling finally fits small teams: Talos Linux for declarative Kubernetes, Ansible for the metal, GitOps for the lifecycle.</p>
<h2 id="what-it-costs">What it costs</h2>
<p><strong>Sovereignty trades operational toil for control: you patch your own hypervisors, own the 3 a.m. disk-replacement pager, and maintain TLS rotation and capacity planning that a managed platform would absorb. The trade is worth it for the workloads that matter: scheduling data, security telemetry, customer identity. Not for everything.</strong></p>
<p>Honesty requires the price tag. Sovereignty trades operational toil for control. You will patch your own hypervisors. You will own the 3 a.m. pager for a disk that decided to retire early. You will maintain TLS rotation, backup restores and capacity planning that a managed platform would absorb invisibly.</p>
<p>Our position is that this trade is worth it <strong>for the workloads that matter</strong>: scheduling data, security telemetry, anything that touches a customer’s identity. For the rest, pragmatism is a feature, not a compromise. The skill is drawing the line deliberately instead of inheriting it from a marketing deck.</p>
<h2 id="why-this-matters-for-ai">Why this matters for AI</h2>
<p><strong>Large language models make sovereignty urgent: teams paste contracts, credentials, and customer data into external chat windows with only a data processing agreement as protection. The response is local inference for sensitive documents, a sanitization gateway in front of any external API, and reproducible evaluation runs versioned like any other artifact.</strong></p>
<p>Large language models moved the goalposts. Teams now paste contracts, credentials and customer data into chat windows hosted who knows where, and the compliance answer is a data processing agreement nobody reads.</p>
<p>The same four commitments apply, almost unchanged:</p>
<ul>
<li>Local inference for sensitive documents, with model weights you can pin and audit.</li>
<li>A sanitization gateway in front of any external API, redacting identifiers before dispatch.</li>
<li>Evaluation runs you can reproduce, with prompts and outputs versioned like any other artifact.</li>
</ul>
<p>This is the reasoning behind the products we are building at Cardinal Codes, and it is the thread you will find in every article on this blog: infrastructure decisions as sovereignty decisions.</p>
<p>Welcome to the field notes.</p>]]></content:encoded>
      <dc:date>Wed, 02 Sep 2026 00:00:00 GMT</dc:date>
      <category>sovereignty</category>
      <category>infrastructure</category>
    </item>
    <item>
      <title>BGP communities, a few lessons from the field</title>
      <link>https://cardinalcodes.com/blog/bgp-communities-field-notes/</link>
      <guid isPermaLink="true">https://cardinalcodes.com/blog/bgp-communities-field-notes/</guid>
      <pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate>
      <author>contact@cardinalcodes.com (Cardinal Codes)</author>
      <description>Traffic engineering with BGP communities across two datacenters: what worked, which pager went off at night, and the checklists that came out of it.</description>
      <content:encoded><![CDATA[<p>Communities are the oldest trick in the BGP book, and still the most underused. A community is just a tag you attach to a route, but upstreams honor a growing vocabulary of them: prepend, local-preference pinning, blackhole, anycast region hints. Used consistently, they turn a dual-datacenter setup from “failover hope” into an actual steering wheel.</p>
<p>This post collects what we verified in production while engineering redundant peering for an operator environment, anonymized as always.</p>
<h2 id="the-baseline">The baseline</h2>
<p><strong>The reference topology is two datacenters announcing the same /32 RIPE prefix through two transit providers each, connected by a private interconnect for state sync. The entire traffic steering policy reduces to four BGP community values: prepend x1, x2, x3, and a guarded blackhole, applied consistently at both sites.</strong></p>
<p>The topology is deliberately boring: two datacenters, one /32 RIPE block announced from both, private interconnect for sync. Both sites receive full tables from two transits each. The interesting part is not the diagram, it is the policy attached to it.</p>
<figure>
  <img src="/blog/bgp-topology.svg" alt="Two datacenters announcing the same /32 prefix through two transits, with a private interconnect and community-based prepend policy" loading="lazy" width="640" height="300">
  <figcaption>The whole steering policy fits in four community values.</figcaption>
</figure>
<h2 id="communities-that-earned-their-keep">Communities that earned their keep</h2>
<p><strong>Three BGP community conventions carried all the traffic steering weight: a canonical prepend ladder (x1, x2, x3) owned by a single ASN, inbound community rewriting at the edge into that canonical space, and a rate-limited blackhole community guarded like a firewall rule. The key insight is owning the vocabulary end-to-end.</strong></p>
<p>Three conventions carried all the weight:</p>
<pre><code class="language-text"># Legible, stable, documented in the peering DB
65000:100   prepend x1 toward the tagged neighbor
65000:200   prepend x2
65000:300   prepend x3
65000:666   blackhole (URF-filtered, max-prefix protected)
</code></pre>
<p>Two details matter more than the scheme itself:</p>
<ol>
<li><strong>One ASN owns the vocabulary.</strong> Mixing your numbering with each transit’s own community table is how 3 a.m. pages are born. We rewrite inbound communities at the edge into our canonical space, and only the canonical space appears in route-maps.</li>
<li><strong>The blackhole community is guarded.</strong> It is advertised only to upstreams that filter it correctly, and it is rate-limited on our side. A community that drops traffic is powerful enough to deserve the same review as a firewall rule.</li>
</ol>
<h2 id="the-checklists">The checklists</h2>
<p><strong>Two operational artifacts emerged from production incidents: a per-service drain procedure that shifts traffic with BGP communities before touching sessions, with expected packet counters at each step, and a “prove it” cron of synthetic probes from outside both sites that alert when the winning path diverges from the intended one.</strong></p>
<p>After the inevitable night page (a maintenance where one site’s announcements were withdrawn a whole minute before the other site’s were accepted, leaving a window of nothing), two artifacts emerged:</p>
<ul>
<li><strong>A drain procedure</strong>: per-service, per-direction steps to shift traffic with communities before touching sessions, with expected packet counters at each step.</li>
<li><strong>A “prove it” cron</strong>: synthetic probes from outside both sites that alert when the winning path is not the intended one. Steering without observation is just latency with confidence.</li>
</ul>
<h2 id="what-we-would-do-differently">What we would do differently</h2>
<p><strong>Start active-active from day one with community-based preference instead of primary/backup. Backup configurations ossify quickly: the day you need them, they describe a network that no longer exists. And treat your community policy as executable documentation: writing it down is part of shipping it.</strong></p>
<p>Announce from both sites from day one with prepends, instead of starting primary/backup and evolving later. Backup configurations ossify: the day you need them, they describe a network that no longer exists. Active-active with community-based preference degrades more gracefully than active-anything.</p>
<p>If you take one thing from this: your community policy is not configuration, it is documentation that executes. Treat writing it down as part of shipping it.</p>]]></content:encoded>
      <dc:date>Wed, 26 Aug 2026 00:00:00 GMT</dc:date>
      <category>bgp</category>
      <category>networking</category>
      <category>infrastructure</category>
      <category>case-study</category>
    </item>
  </channel>
</rss>
