<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Zachary Fouts</title><link>https://fouts.dev/</link><description>Recent content on Zachary Fouts</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 09 Jul 2026 14:02:56 -0500</lastBuildDate><atom:link href="https://fouts.dev/index.xml" rel="self" type="application/rss+xml"/><item><title>Deploying K3s with Ansible: A Complete Tutorial</title><link>https://fouts.dev/posts/deploying-k3s-with-ansible-a-complete-tutorial/</link><pubDate>Mon, 09 Feb 2026 00:00:00 +0000</pubDate><guid>https://fouts.dev/posts/deploying-k3s-with-ansible-a-complete-tutorial/</guid><description>&lt;h2 id="what-youll-build"&gt;What You&amp;rsquo;ll Build&lt;/h2&gt;
&lt;p&gt;By the end of this tutorial, you&amp;rsquo;ll have a reusable Ansible role that can deploy a K3s Kubernetes cluster to any set of Linux machines: homelab hardware, cloud VPS nodes, or both. The setup includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Automated K3s installation&lt;/strong&gt; on server and agent nodes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WireGuard-encrypted&lt;/strong&gt; pod-to-pod networking&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Embedded etcd&lt;/strong&gt; with HA support and S3 snapshot backups&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;iptables firewall rules&lt;/strong&gt; tailored for K3s traffic&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-environment inventories&lt;/strong&gt; so one codebase manages multiple clusters&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you&amp;rsquo;ve ever SSH&amp;rsquo;d into a box, run &lt;code&gt;curl https://get.k3s.io | sh&lt;/code&gt;, and hoped for the best, this replaces that with something you can version-control, audit, and rebuild from scratch.&lt;/p&gt;</description></item><item><title>Reverse Engineering the Carbide Create .c2d File Format</title><link>https://fouts.dev/posts/reverse-engineering-the-carbide-create-.c2d-file-format/</link><pubDate>Sun, 08 Feb 2026 00:00:00 +0000</pubDate><guid>https://fouts.dev/posts/reverse-engineering-the-carbide-create-.c2d-file-format/</guid><description>&lt;h2 id="the-question-nobody-asked"&gt;The Question Nobody Asked&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve been using a Shapeoko 5 Pro for a while now, and like most CNC hobbyists, I&amp;rsquo;ve built up a library of &lt;code&gt;.c2d&lt;/code&gt; files in Carbide Create. At some point, I started wondering: what &lt;em&gt;is&lt;/em&gt; a &lt;code&gt;.c2d&lt;/code&gt; file? Could I generate one programmatically? Could I template my projects, parametrically resize joinery, or batch-produce cutting files without clicking through the UI every time?&lt;/p&gt;
&lt;p&gt;So I did what any reasonable person would do. I cracked one open.&lt;/p&gt;</description></item><item><title>About</title><link>https://fouts.dev/about/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://fouts.dev/about/</guid><description>&lt;p&gt;I work on the technical side of M&amp;amp;A: the acquisitions where nobody knows how the tech stacks will fit together, the divestitures where shared infrastructure has to be cleanly separated under tight timelines.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been doing some version of this for a long time. In &amp;lsquo;97 I was getting pulled out of class to fix the principal&amp;rsquo;s computer and was the first student in my elementary school to get internet time during lunch. By 16 I was running my own gig: web hosting, VPNs, fixing whatever small businesses needed fixed. The problems have gotten bigger, but the approach hasn&amp;rsquo;t changed: understand the landscape, find the risks, build a plan, execute without burning the place down.&lt;/p&gt;</description></item><item><title>Privacy Policy</title><link>https://fouts.dev/privacy/</link><pubDate>Thu, 01 Jun 2023 00:00:00 +0000</pubDate><guid>https://fouts.dev/privacy/</guid><description>&lt;h1 id="privacy-policy"&gt;Privacy Policy&lt;/h1&gt;
&lt;h2 id="no-data-collection"&gt;No Data Collection&lt;/h2&gt;
&lt;p&gt;This website &lt;strong&gt;does not&lt;/strong&gt; collect any personal data from its visitors. There are no:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Contact forms&lt;/li&gt;
&lt;li&gt;Newsletter subscriptions&lt;/li&gt;
&lt;li&gt;User accounts&lt;/li&gt;
&lt;li&gt;Commenting systems&lt;/li&gt;
&lt;li&gt;Analytics trackers owned by this site&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The website is static and has no database or user data storage capabilities. You cannot submit any information directly through this website, and we do not use cookies for tracking purposes.&lt;/p&gt;
&lt;h2 id="third-party-services"&gt;Third-Party Services&lt;/h2&gt;
&lt;h3 id="cloudflare"&gt;Cloudflare&lt;/h3&gt;
&lt;p&gt;This site is delivered via Cloudflare&amp;rsquo;s content delivery network. Cloudflare may collect certain technical information (IP addresses, browser information, etc.) as part of their security and performance services. For details on how Cloudflare processes this data, please review their &lt;a href="https://www.cloudflare.com/privacypolicy/"&gt;Privacy Policy&lt;/a&gt; and &lt;a href="https://www.cloudflare.com/gdpr/"&gt;GDPR Information&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>