<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>SubZeroDev Blog</title>
        <link>https://blog.subzerodev.com/</link>
        <description>Notes on building and maintaining SubZeroDev projects.</description>
        <lastBuildDate>Thu, 06 Aug 2026 14:22:34 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <copyright>Copyright © 2026 SubZeroDev</copyright>
        <item>
            <title><![CDATA[Lucifer Discovers Recursive Bureaucracy]]></title>
            <link>https://blog.subzerodev.com/lucifer-discovers-recursive-bureaucracy</link>
            <guid>https://blog.subzerodev.com/lucifer-discovers-recursive-bureaucracy</guid>
            <pubDate>Thu, 06 Aug 2026 14:22:34 GMT</pubDate>
            <description><![CDATA[Lucifer investigates the latest human innovation: using AI to automatically document the software being built to automate documenting itself.]]></description>
            <content:encoded><![CDATA[<p>Lucifer had seen many things over the last several thousand years.</p>
<p>Empires.</p>
<p>Religions.</p>
<p>Tax offices.</p>
<p>HOAs.</p>
<p>Even Microsoft Access databases used as enterprise software.</p>
<p>Nothing prepared him for this.</p>
<hr>
<p>He looked over God's shoulder.</p>
<blockquote>
<p>"Father..."</p>
</blockquote>
<p>God sighed.</p>
<blockquote>
<p>"Yes?"</p>
</blockquote>
<p>Lucifer pointed toward Earth.</p>
<p>More specifically...</p>
<p>...toward my laptop.</p>
<blockquote>
<p>"He's scheduled an AI to write a weekly blog post..."</p>
</blockquote>
<p>God nodded.</p>
<blockquote>
<p>"That sounds reasonable."</p>
</blockquote>
<p>Lucifer continued reading.</p>
<blockquote>
<p>"...summarizing all the software he built..."</p>
</blockquote>
<p>Another nod.</p>
<blockquote>
<p>"...which was mostly built with AI..."</p>
</blockquote>
<p>God looked slightly less confident.</p>
<p>Lucifer kept scrolling.</p>
<blockquote>
<p>"...based on conversations with another AI..."</p>
</blockquote>
<p>God frowned.</p>
<p>Lucifer scrolled farther.</p>
<blockquote>
<p>"...formatted automatically for Docusaurus..."</p>
</blockquote>
<p>God scratched His beard.</p>
<p>Lucifer continued.</p>
<blockquote>
<p>"...using the Blog MCP server..."</p>
</blockquote>
<p>God blinked.</p>
<p>Lucifer reached the last line.</p>
<blockquote>
<p>"...so eventually the AI can automatically publish the article describing how it automatically generated the article."</p>
</blockquote>
<p>Silence.</p>
<p>A very long silence.</p>
<p>Finally...</p>
<p>Lucifer looked up.</p>
<blockquote>
<p>"Father."</p>
</blockquote>
<blockquote>
<p>"Yes?"</p>
</blockquote>
<blockquote>
<p>"Have they invented recursive bureaucracy?"</p>
</blockquote>
<hr>
<p>For centuries humanity has insisted that artificial intelligence would replace programmers.</p>
<p>Instead...</p>
<p>This week I taught an AI to write my weekly engineering journal.</p>
<p>Every Sunday.</p>
<p>At 8 PM.</p>
<p>Automatically.</p>
<p>The report will include:</p>
<ul>
<li class="">executive summary;</li>
<li class="">development completed;</li>
<li class="">architecture decisions;</li>
<li class="">technical discoveries;</li>
<li class="">project completion;</li>
<li class="">ideas that appeared during random conversations;</li>
<li class="">work still in progress;</li>
<li class="">next priorities.</li>
</ul>
<p>All generated from conversations.</p>
<p>Not commits.</p>
<p>Conversations.</p>
<p>Because apparently my development methodology has become:</p>
<blockquote>
<p>Talk to AI until software accidentally appears.</p>
</blockquote>
<hr>
<p>The truly absurd part isn't the automation.</p>
<p>It's the source material.</p>
<p>Some architecture decisions happen while sitting at a computer.</p>
<p>Mine seem to happen:</p>
<ul>
<li class="">while driving through Sofia;</li>
<li class="">while standing in Bulgarian government offices;</li>
<li class="">after getting a phone call from the police;</li>
<li class="">in a hookah lounge;</li>
<li class="">while making dinner;</li>
<li class="">somewhere between laughing at bureaucracy and inventing another software project.</li>
</ul>
<p>Those conversations become:</p>
<ul>
<li class="">GitHub repositories;</li>
<li class="">game engines;</li>
<li class="">agent frameworks;</li>
<li class="">business ideas;</li>
<li class="">marketing slogans;</li>
<li class="">blog posts;</li>
<li class="">comic books.</li>
</ul>
<p>Now another AI gets to summarize all of it.</p>
<hr>
<p>Lucifer stared at the screen.</p>
<blockquote>
<p>"Wait."</p>
</blockquote>
<blockquote>
<p>"It says the summary includes ideas that came out of the week."</p>
</blockquote>
<p>God nodded.</p>
<blockquote>
<p>"Yes."</p>
</blockquote>
<blockquote>
<p>"Where do those ideas come from?"</p>
</blockquote>
<p>God pointed toward me.</p>
<p>Lucifer looked confused.</p>
<blockquote>
<p>"So he talks to AI..."</p>
</blockquote>
<blockquote>
<p>"...gets ideas..."</p>
</blockquote>
<blockquote>
<p>"...builds software..."</p>
</blockquote>
<blockquote>
<p>"...then AI summarizes the ideas..."</p>
</blockquote>
<blockquote>
<p>"...which become future prompts..."</p>
</blockquote>
<blockquote>
<p>"...that create more software..."</p>
</blockquote>
<p>God smiled.</p>
<p>Lucifer slowly looked back toward Earth.</p>
<blockquote>
<p>"This isn't software engineering anymore."</p>
</blockquote>
<blockquote>
<p>"It's an ecosystem."</p>
</blockquote>
<hr>
<p>Then I had one final thought.</p>
<p>Why stop there?</p>
<p>The Blog MCP server already knows how to publish posts.</p>
<p>The weekly report already knows what happened.</p>
<p>The repository already knows what changed.</p>
<p>The AI already knows how to write.</p>
<p>At some point...</p>
<p>...the automation itself is going to publish an article that says:</p>
<blockquote>
<p><strong>This week Ben improved the automation responsible for writing this article.</strong></p>
</blockquote>
<p>Without me touching a keyboard.</p>
<p>Lucifer closed the laptop.</p>
<p>Walked away.</p>
<p>Stopped.</p>
<p>Turned around one last time.</p>
<blockquote>
<p>"Father..."</p>
</blockquote>
<blockquote>
<p>"Yes?"</p>
</blockquote>
<blockquote>
<p>"I no longer believe humans are building AI."</p>
</blockquote>
<p>God smiled.</p>
<blockquote>
<p>"No?"</p>
</blockquote>
<p>Lucifer sighed.</p>
<blockquote>
<p>"I think they're building increasingly elaborate excuses to avoid writing documentation."</p>
</blockquote>
<p>God laughed.</p>
<p>The angels laughed.</p>
<p>Somewhere on Earth...</p>
<p>A scheduled task quietly waited for Sunday at 8:00 PM to generate a blog post about the software that would eventually generate blog posts about itself.</p>
<p>And somehow...</p>
<p>...everyone involved thought this was a perfectly reasonable use of artificial intelligence.</p>
<p>Including me.</p>]]></content:encoded>
            <category>AI</category>
            <category>Automation</category>
            <category>LLM</category>
            <category>Docusaurus</category>
            <category>Development</category>
            <category>Lucifer</category>
        </item>
        <item>
            <title><![CDATA[Two Weeks Ago I Asked About Jones in the Fast Lane. This Escalated.]]></title>
            <link>https://blog.subzerodev.com/two-weeks-jones-escalated</link>
            <guid>https://blog.subzerodev.com/two-weeks-jones-escalated</guid>
            <pubDate>Tue, 04 Aug 2026 02:19:03 GMT</pubDate>
            <description><![CDATA[Two weeks ago I asked an LLM how Jones in the Fast Lane worked. Today the engine is 98% complete, has three game kinds, replay, determinism, MCP, and somehow a publishing platform appeared too.]]></description>
            <content:encoded><![CDATA[<p>Two weeks ago I asked an innocent question.</p>
<blockquote>
<p><em>"How does Jones in the Fast Lane actually work?"</em></p>
</blockquote>
<p>Reasonable question.</p>
<p>Perfectly harmless.</p>
<p>The sort of curiosity that should result in reading a Wikipedia page and then going to bed.</p>
<p>Instead...</p>
<p>I accidentally built a game engine.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="the-current-situation">The Current Situation<a href="https://blog.subzerodev.com/two-weeks-jones-escalated#the-current-situation" class="hash-link" aria-label="Direct link to The Current Situation" title="Direct link to The Current Situation" translate="no">​</a></h2>
<p>The engine is now:</p>
<blockquote>
<p><strong>50 out of 51 named work units complete.</strong></p>
</blockquote>
<p>Approximately <strong>98%</strong>.</p>
<p>I find this deeply suspicious.</p>
<p>Not because the numbers are wrong.</p>
<p>Because two weeks ago there wasn't even a project.</p>
<p>There was just one question.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="apparently-this-exists-now">Apparently This Exists Now<a href="https://blog.subzerodev.com/two-weeks-jones-escalated#apparently-this-exists-now" class="hash-link" aria-label="Direct link to Apparently This Exists Now" title="Direct link to Apparently This Exists Now" translate="no">​</a></h2>
<p>Current inventory includes:</p>
<ul>
<li class="">A deterministic engine.</li>
<li class="">Replay.</li>
<li class="">Save/load.</li>
<li class="">Validation.</li>
<li class="">Sessions.</li>
<li class="">Projections.</li>
<li class="">MCP support.</li>
<li class="">Versioning.</li>
<li class="">CI.</li>
<li class="">Package publishing.</li>
</ul>
<p>Somewhere in there I also remembered to make it capable of running games.</p>
<p>That seems important.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="three-completely-different-games">Three Completely Different Games<a href="https://blog.subzerodev.com/two-weeks-jones-escalated#three-completely-different-games" class="hash-link" aria-label="Direct link to Three Completely Different Games" title="Direct link to Three Completely Different Games" translate="no">​</a></h2>
<p>Originally I wanted to recreate one game.</p>
<p>Now the engine already supports three entirely different styles of simulation.</p>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="story-graph">Story Graph<a href="https://blog.subzerodev.com/two-weeks-jones-escalated#story-graph" class="hash-link" aria-label="Direct link to Story Graph" title="Direct link to Story Graph" translate="no">​</a></h3>
<p>A branching narrative.</p>
<p>The first campaign?</p>
<p>Naturally...</p>
<p>Bureaucracy.</p>
<p>Because if you're going to test branching dialogue, you might as well start with something fictional.</p>
<p>Like Bulgarian government offices.</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="simulation">Simulation<a href="https://blog.subzerodev.com/two-weeks-jones-escalated#simulation" class="hash-link" aria-label="Direct link to Simulation" title="Direct link to Simulation" translate="no">​</a></h3>
<p>A weekly life simulation.</p>
<p>The thing that started this entire mess.</p>
<p>Jobs.</p>
<p>Money.</p>
<p>Needs.</p>
<p>Education.</p>
<p>Relationships.</p>
<p>One innocent conversation with an LLM later...</p>
<p>...here we are.</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="world-graph">World Graph<a href="https://blog.subzerodev.com/two-weeks-jones-escalated#world-graph" class="hash-link" aria-label="Direct link to World Graph" title="Direct link to World Graph" translate="no">​</a></h3>
<p>A living spatial simulation.</p>
<p>Twenty deterministic systems.</p>
<p>Autonomous guests.</p>
<p>Validation.</p>
<p>Action previews.</p>
<p>Synthetic worlds.</p>
<p>Which is considerably more engineering than I expected from:</p>
<blockquote>
<p><em>"I wonder how Jones worked."</em></p>
</blockquote>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="replay">Replay<a href="https://blog.subzerodev.com/two-weeks-jones-escalated#replay" class="hash-link" aria-label="Direct link to Replay" title="Direct link to Replay" translate="no">​</a></h2>
<p>One of my favorite things about the engine is replay.</p>
<p>Every world.</p>
<p>Every decision.</p>
<p>Every action.</p>
<p>Deterministic.</p>
<p>Every bug reproducible.</p>
<p>The phrase:</p>
<blockquote>
<p>"Works on my machine."</p>
</blockquote>
<p>has officially been escorted off the premises.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="bulgaria-is-canon">Bulgaria Is Canon<a href="https://blog.subzerodev.com/two-weeks-jones-escalated#bulgaria-is-canon" class="hash-link" aria-label="Direct link to Bulgaria Is Canon" title="Direct link to Bulgaria Is Canon" translate="no">​</a></h2>
<p>This is perhaps the funniest unintended consequence.</p>
<p>The first real content now includes:</p>
<ul>
<li class="">all five Bulgaria story arcs;</li>
<li class="">save migration;</li>
<li class="">bureaucracy;</li>
<li class="">deterministic replay.</li>
</ul>
<p>Apparently my life has become test data.</p>
<p>I didn't see that coming.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="theres-only-one-thing-left">There's Only One Thing Left<a href="https://blog.subzerodev.com/two-weeks-jones-escalated#theres-only-one-thing-left" class="hash-link" aria-label="Direct link to There's Only One Thing Left" title="Direct link to There's Only One Thing Left" translate="no">​</a></h2>
<p>One work unit.</p>
<p>W49.</p>
<p>It's not another feature.</p>
<p>It's confidence.</p>
<p>The remaining work is basically the engine asking itself difficult questions.</p>
<p>Questions like:</p>
<blockquote>
<p>"Are you absolutely sure?"</p>
</blockquote>
<p>Again.</p>
<p>And again.</p>
<p>And again.</p>
<p>The remaining work is:</p>
<ul>
<li class="">stronger validation;</li>
<li class="">replay verification;</li>
<li class="">save/load parity;</li>
<li class="">regression coverage;</li>
<li class="">package verification;</li>
<li class="">release confidence.</li>
</ul>
<p>The glamorous side of software engineering.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="meanwhile">Meanwhile...<a href="https://blog.subzerodev.com/two-weeks-jones-escalated#meanwhile" class="hash-link" aria-label="Direct link to Meanwhile..." title="Direct link to Meanwhile..." translate="no">​</a></h2>
<p>While building the game engine...</p>
<p>I accidentally built half of a publishing platform.</p>
<p>Because I wanted better documentation.</p>
<p>Then Git became the source of truth.</p>
<p>Then Docusaurus.</p>
<p>Then previews.</p>
<p>Then validation.</p>
<p>Then Discord notifications.</p>
<p>Then MCP.</p>
<p>Then REST APIs.</p>
<p>Then AI editing.</p>
<p>Then...</p>
<p>Well...</p>
<p>Apparently that became another product too.</p>
<p>I no longer question these things.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="the-roadmap">The Roadmap<a href="https://blog.subzerodev.com/two-weeks-jones-escalated#the-roadmap" class="hash-link" aria-label="Direct link to The Roadmap" title="Direct link to The Roadmap" translate="no">​</a></h2>
<p>My favorite part of the documentation isn't the architecture.</p>
<p>It's the roadmap.</p>
<p>Because it doesn't read like project management.</p>
<p>It reads like a novel.</p>
<p>Instead of:</p>
<ul>
<li class="">authentication;</li>
<li class="">networking;</li>
<li class="">optimization;</li>
</ul>
<p>it says things like:</p>
<blockquote>
<p><strong>The first story survives contact with bureaucracy.</strong></p>
</blockquote>
<blockquote>
<p><strong>The engine learns the rules.</strong></p>
</blockquote>
<blockquote>
<p><strong>The past becomes testable.</strong></p>
</blockquote>
<blockquote>
<p><strong>The engine gets a front door.</strong></p>
</blockquote>
<p>That's considerably more entertaining.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="looking-back">Looking Back<a href="https://blog.subzerodev.com/two-weeks-jones-escalated#looking-back" class="hash-link" aria-label="Direct link to Looking Back" title="Direct link to Looking Back" translate="no">​</a></h2>
<p>The funny part isn't that AI wrote a lot of code.</p>
<p>It did.</p>
<p>The funny part is what AI didn't do.</p>
<p>AI didn't decide:</p>
<ul>
<li class="">that mechanics should become reusable;</li>
<li class="">that determinism mattered;</li>
<li class="">that commands should be the only way to mutate world state;</li>
<li class="">that documentation should read like a story;</li>
<li class="">that "Well... why not?" somehow became the philosophy of the entire project.</li>
</ul>
<p>Those decisions still belonged to me.</p>
<p>AI simply removed an astonishing amount of friction between ideas and reality.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="i-have-no-explanation">I Have No Explanation<a href="https://blog.subzerodev.com/two-weeks-jones-escalated#i-have-no-explanation" class="hash-link" aria-label="Direct link to I Have No Explanation" title="Direct link to I Have No Explanation" translate="no">​</a></h2>
<p>Two weeks.</p>
<p>That's all this has been.</p>
<p>The engine is almost finished.</p>
<p>The first Kind is running.</p>
<p>The second is running.</p>
<p>The third is running.</p>
<p>The landing page is live.</p>
<p>The documentation exists.</p>
<p>The roadmap tells a story.</p>
<p>And somewhere in the middle I accidentally created another product.</p>
<p>I still don't know exactly how this happened.</p>
<p>I suspect it started with one innocent question.</p>
<p>It escalated.</p>
<p>Future Me has been notified.</p>
<p>Future Me has not replied.</p>
<p>Well...</p>
<p>Why not?</p>]]></content:encoded>
            <category>Game Engine</category>
            <category>AI</category>
            <category>Development</category>
            <category>Determinism</category>
            <category>Stories</category>
            <category>Well Why Not</category>
        </item>
        <item>
            <title><![CDATA[State of Dev - Week of August 3, 2026]]></title>
            <link>https://blog.subzerodev.com/state-of-dev-2026-08-03</link>
            <guid>https://blog.subzerodev.com/state-of-dev-2026-08-03</guid>
            <pubDate>Mon, 03 Aug 2026 20:00:00 GMT</pubDate>
            <description><![CDATA[Weekly development journal covering the continued accidental construction of the SubZeroDev ecosystem.]]></description>
            <content:encoded><![CDATA[<p>The plan this week was simple.</p>
<p>Continue working on the Game Engine.</p>
<p>Unfortunately, somewhere between "expand the campaign system" and "I wonder if AI should generate JSON instead of TypeScript," several entirely new projects appeared, the blog quietly promoted itself to infrastructure, Git started looking suspiciously like a deployment platform, and AgentKit developed career ambitions.</p>
<p>None of this was scheduled.</p>
<p>I'm beginning to suspect the repositories are collaborating behind my back.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="development-completed">Development Completed<a href="https://blog.subzerodev.com/state-of-dev-2026-08-03#development-completed" class="hash-link" aria-label="Direct link to Development Completed" title="Direct link to Development Completed" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="subzerodevgameengine">SubZeroDev.GameEngine<a href="https://blog.subzerodev.com/state-of-dev-2026-08-03#subzerodevgameengine" class="hash-link" aria-label="Direct link to SubZeroDev.GameEngine" title="Direct link to SubZeroDev.GameEngine" translate="no">​</a></h3>
<p>The engine itself behaved.</p>
<p>The campaign system did not.</p>
<p>What started as "let's add more campaigns" quietly evolved into an AI content pipeline where structured JSON replaces handwritten code, CI validates everything, and the engine simply consumes whatever fresh insanity gets committed next.</p>
<p>Apparently the engine's new hobby is eating data.</p>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="subzerodevagentkit">SubZeroDev.AgentKit<a href="https://blog.subzerodev.com/state-of-dev-2026-08-03#subzerodevagentkit" class="hash-link" aria-label="Direct link to SubZeroDev.AgentKit" title="Direct link to SubZeroDev.AgentKit" translate="no">​</a></h3>
<p>AgentKit continued discovering what it wants to be when it grows up.</p>
<p>The more work goes into it, the less it resembles another AI coding tool and the more it resembles that engineer who quietly fixes everything while asking uncomfortable questions about your architecture.</p>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="subzerodevgitservice">SubZeroDev.GitService<a href="https://blog.subzerodev.com/state-of-dev-2026-08-03#subzerodevgitservice" class="hash-link" aria-label="Direct link to SubZeroDev.GitService" title="Direct link to SubZeroDev.GitService" translate="no">​</a></h3>
<p>Git Service should not pretend to be intelligent.</p>
<p>It should move repositories around, open pull requests, report status, and generally behave like competent infrastructure.</p>
<p>The AI can keep making questionable life choices somewhere else.</p>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="blog-platform">Blog Platform<a href="https://blog.subzerodev.com/state-of-dev-2026-08-03#blog-platform" class="hash-link" aria-label="Direct link to Blog Platform" title="Direct link to Blog Platform" translate="no">​</a></h3>
<p>The blog somehow became:</p>
<ul>
<li class="">an engineering journal;</li>
<li class="">a publishing workflow;</li>
<li class="">architecture history;</li>
<li class="">AI memory;</li>
<li class="">and eventually another source of content.</li>
</ul>
<p>It was supposed to be a website.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="project-status">Project Status<a href="https://blog.subzerodev.com/state-of-dev-2026-08-03#project-status" class="hash-link" aria-label="Direct link to Project Status" title="Direct link to Project Status" translate="no">​</a></h2>
<table><thead><tr><th>Project</th><th>Status</th></tr></thead><tbody><tr><td>Game Engine</td><td>Near MVP</td></tr><tr><td>Story Graph</td><td>Active Development</td></tr><tr><td>Campaign Pipeline</td><td>Escalating</td></tr><tr><td>AgentKit</td><td>Becoming Self-Aware (Probably Not)</td></tr><tr><td>Git Service</td><td>Architecture</td></tr><tr><td>Blog Platform</td><td>Publishing Conspiracies</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="major-milestones">Major Milestones<a href="https://blog.subzerodev.com/state-of-dev-2026-08-03#major-milestones" class="hash-link" aria-label="Direct link to Major Milestones" title="Direct link to Major Milestones" translate="no">​</a></h2>
<ul>
<li class="">AI stopped writing code and started writing content.</li>
<li class="">Git became suspiciously close to being the deployment strategy.</li>
<li class="">"I'll just make one small improvement" was once again proven to be fiction.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="conclusions-reached-entirely-by-accident">Conclusions Reached Entirely By Accident<a href="https://blog.subzerodev.com/state-of-dev-2026-08-03#conclusions-reached-entirely-by-accident" class="hash-link" aria-label="Direct link to Conclusions Reached Entirely By Accident" title="Direct link to Conclusions Reached Entirely By Accident" translate="no">​</a></h2>
<ul>
<li class="">Git solves more problems than expected.</li>
<li class="">AI should generate structured data whenever possible.</li>
<li class="">MCP keeps appearing in every architecture diagram whether invited or not.</li>
<li class="">Every project eventually discovers another project hiding inside it.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="things-that-got-out-of-hand">Things That Got Out of Hand<a href="https://blog.subzerodev.com/state-of-dev-2026-08-03#things-that-got-out-of-hand" class="hash-link" aria-label="Direct link to Things That Got Out of Hand" title="Direct link to Things That Got Out of Hand" translate="no">​</a></h2>
<ul>
<li class="">Campaign generation.</li>
<li class="">AI review agents.</li>
<li class="">Trading automation.</li>
<li class="">Blog automation.</li>
<li class="">Story packs.</li>
</ul>
<p>Scientists continue searching for the point where one project becomes seven.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="challenges">Challenges<a href="https://blog.subzerodev.com/state-of-dev-2026-08-03#challenges" class="hash-link" aria-label="Direct link to Challenges" title="Direct link to Challenges" translate="no">​</a></h2>
<p>Choosing what <strong>not</strong> to build.</p>
<p>So far this remains largely theoretical.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="project-statistics">Project Statistics<a href="https://blog.subzerodev.com/state-of-dev-2026-08-03#project-statistics" class="hash-link" aria-label="Direct link to Project Statistics" title="Direct link to Project Statistics" translate="no">​</a></h2>
<p>This journal focuses on <strong>why</strong> things happened.</p>
<p>For live repository statistics:</p>
<p><a href="https://github.com/The-Running-Dev" target="_blank" rel="noopener noreferrer" class="">https://github.com/The-Running-Dev</a></p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="notable-quotes">Notable Quotes<a href="https://blog.subzerodev.com/state-of-dev-2026-08-03#notable-quotes" class="hash-link" aria-label="Direct link to Notable Quotes" title="Direct link to Notable Quotes" translate="no">​</a></h2>
<blockquote>
<p>"The absence of a plan is the plan."</p>
</blockquote>
<blockquote>
<p>"We don't follow roadmaps. Roadmaps follow us."</p>
</blockquote>
<blockquote>
<p>"Content is data."</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="next-priorities">Next Priorities<a href="https://blog.subzerodev.com/state-of-dev-2026-08-03#next-priorities" class="hash-link" aria-label="Direct link to Next Priorities" title="Direct link to Next Priorities" translate="no">​</a></h2>
<ul>
<li class="">Finish the campaign system.</li>
<li class="">Expand the campaign library.</li>
<li class="">Continue AgentKit.</li>
<li class="">Keep refining Git Service.</li>
<li class="">Resist creating three additional projects.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="looking-ahead">Looking Ahead<a href="https://blog.subzerodev.com/state-of-dev-2026-08-03#looking-ahead" class="hash-link" aria-label="Direct link to Looking Ahead" title="Direct link to Looking Ahead" translate="no">​</a></h2>
<p>Every week starts with a perfectly reasonable objective.</p>
<p>By Friday, I've accidentally built half a platform while insisting to myself that I was "just making one small change."</p>
<p>I'm no longer convinced I'm designing this ecosystem.</p>
<p>I think it's assembling itself and occasionally asking me to type.</p>]]></content:encoded>
            <category>State of Dev</category>
            <category>SubZeroDev</category>
            <category>AI</category>
            <category>Game Engine</category>
        </item>
        <item>
            <title><![CDATA[Much Ado About Nothing]]></title>
            <link>https://blog.subzerodev.com/much-ado-about-nothing</link>
            <guid>https://blog.subzerodev.com/much-ado-about-nothing</guid>
            <pubDate>Mon, 03 Aug 2026 01:56:46 GMT</pubDate>
            <description><![CDATA[A dramatic declaration granting permission for something that was already happening.]]></description>
            <content:encoded><![CDATA[<p>Sometimes life writes satire for you.</p>
<p>I woke up to an email.</p>
<blockquote>
<p>"After I was giving a lot of thoughts I have decided you can live in this place as long as you want..."</p>
</blockquote>
<p>Well.</p>
<p>How extraordinarily generous.</p>
<p>Apparently, after what I can only imagine was an exhausting period of philosophical reflection, meetings with the council of elders, several consultations with legal scholars, and perhaps a brief audience with God Himself...</p>
<p>...a decision had finally been reached.</p>
<p>I am hereby permitted to continue doing exactly what I have been doing for the last month.</p>
<p>Thank you.</p>
<p>I don't know how I ever survived before this monumental proclamation.</p>
<p>The funniest part isn't even the email.</p>
<p>It's the implication that reality changed because someone declared it had.</p>
<p>As though the universe paused.</p>
<p>The birds stopped singing.</p>
<p>Lucifer looked up from his coffee.</p>
<blockquote>
<p>"Father... what's happening?"</p>
</blockquote>
<p>God checked His notes.</p>
<blockquote>
<p>"Hold on."</p>
</blockquote>
<p>He looked toward Earth.</p>
<blockquote>
<p>"Someone just granted permission for an already existing fact."</p>
</blockquote>
<p>Lucifer blinked.</p>
<blockquote>
<p>"Can humans do that?"</p>
</blockquote>
<p>God shrugged.</p>
<blockquote>
<p>"Apparently they believe they can."</p>
</blockquote>
<p>Meanwhile, I continued sitting in exactly the same chair I'd been sitting in yesterday.</p>
<p>The house remained where it was.</p>
<p>The walls didn't move.</p>
<p>The roof stayed attached.</p>
<p>The village carried on completely unaware that history had just been rewritten by email.</p>
<p>The entire episode reminds me how much unnecessary drama people create around situations that don't actually change.</p>
<p>Nothing happened.</p>
<p>Nothing needed to happen.</p>
<p>Yet somehow it was transformed into a profound act of generosity.</p>
<p>It's almost impressive.</p>
<p>The universe remained completely indifferent.</p>
<p>Lucifer, however, couldn't stop laughing.</p>
<blockquote>
<p>"Father..."</p>
</blockquote>
<blockquote>
<p>"Yes?"</p>
</blockquote>
<blockquote>
<p>"Do you think I could email gravity and give it permission to continue working?"</p>
</blockquote>
<p>God smiled.</p>
<blockquote>
<p>"You can certainly try."</p>
</blockquote>
<p>The absurdity continues.</p>]]></content:encoded>
            <category>Lucifer</category>
            <category>Absurd</category>
            <category>Bulgaria</category>
            <category>Family</category>
        </item>
        <item>
            <title><![CDATA[How a Quick Question Became 44 Work Units]]></title>
            <link>https://blog.subzerodev.com/quick-question-became-44-work-units</link>
            <guid>https://blog.subzerodev.com/quick-question-became-44-work-units</guid>
            <pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A week ago I asked an LLM how Jones in the Fast Lane worked. Somehow that became a deterministic game engine, a public landing page, a roadmap, and 44 completed work units.]]></description>
            <content:encoded><![CDATA[<p>One week.</p>
<p>One week and a couple of days.</p>
<p>That's all this has been.</p>
<p>I keep looking at the roadmap and laughing because it feels like I've been working on this project for months.</p>
<p>Then I look at the commit history.</p>
<p>Nope.</p>
<p>One week.</p>
<hr>
<p>It started exactly how many ridiculous ideas seem to start these days.</p>
<p>I missed <em>Jones in the Fast Lane</em>.</p>
<p>So I asked an LLM how it worked.</p>
<p>That was a mistake.</p>
<p>The LLM happily explained:</p>
<ul>
<li class="">jobs;</li>
<li class="">education;</li>
<li class="">money;</li>
<li class="">needs;</li>
<li class="">schedules;</li>
<li class="">relationships;</li>
<li class="">random events.</li>
</ul>
<p>Then...</p>
<p>it started suggesting implementation details.</p>
<p>That should have been the end of the conversation.</p>
<p>Instead, I asked one more question.</p>
<blockquote>
<p><em>"If I'm already writing this... why would I write it for one game?"</em></p>
</blockquote>
<p>That question refused to leave.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="the-escalation">The Escalation<a href="https://blog.subzerodev.com/quick-question-became-44-work-units#the-escalation" class="hash-link" aria-label="Direct link to The Escalation" title="Direct link to The Escalation" translate="no">​</a></h2>
<p>The first day became:</p>
<blockquote>
<p>Maybe I'll prototype this.</p>
</blockquote>
<p>The second day became:</p>
<blockquote>
<p>These mechanics should be reusable.</p>
</blockquote>
<p>The third day became:</p>
<blockquote>
<p>This needs deterministic state.</p>
</blockquote>
<p>The fourth day became:</p>
<blockquote>
<p>Kinds.</p>
</blockquote>
<p>Campaigns.</p>
<p>Core.</p>
<p>Clients.</p>
<p>The fifth day became:</p>
<blockquote>
<p>Well...</p>
</blockquote>
<p>I apparently have a game engine now.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="then-it-somehow-got-worse">Then It Somehow Got Worse<a href="https://blog.subzerodev.com/quick-question-became-44-work-units#then-it-somehow-got-worse" class="hash-link" aria-label="Direct link to Then It Somehow Got Worse" title="Direct link to Then It Somehow Got Worse" translate="no">​</a></h2>
<p>Because building software is apparently contagious.</p>
<p>While working on the engine I needed documentation.</p>
<p>Then I wanted a better documentation site.</p>
<p>Then I wanted automated publishing.</p>
<p>Then I wanted Git to become the source of truth.</p>
<p>Then I wanted AI to edit everything through MCP.</p>
<p>Then I wanted Discord notifications.</p>
<p>Then previews.</p>
<p>Then validation.</p>
<p>Then PR workflows.</p>
<p>At some point I accidentally built half of a publishing platform while supposedly working on a game engine.</p>
<p>Apparently ideas don't stay in their own projects anymore.</p>
<p>They contaminate each other.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="the-roadmap">The Roadmap<a href="https://blog.subzerodev.com/quick-question-became-44-work-units#the-roadmap" class="hash-link" aria-label="Direct link to The Roadmap" title="Direct link to The Roadmap" translate="no">​</a></h2>
<p>Today I finished something I wasn't expecting.</p>
<p>Not another feature.</p>
<p>The roadmap.</p>
<p>Except...</p>
<p>it doesn't look like a roadmap.</p>
<p>It looks like a story.</p>
<p>Instead of this:</p>
<div class="language-text codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-text codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">v0.4</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">- authentication</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">- replay</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">- content</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">- networking</span><br></div></code></pre></div></div>
<p>it became this.</p>
<blockquote>
<p><strong>The engine learns the rules.</strong></p>
</blockquote>
<blockquote>
<p><strong>The first story survives contact with bureaucracy.</strong></p>
</blockquote>
<blockquote>
<p><strong>The past becomes testable.</strong></p>
</blockquote>
<blockquote>
<p><strong>A week of life becomes a machine.</strong></p>
</blockquote>
<blockquote>
<p><strong>The engine gets a front door, then a world state.</strong></p>
</blockquote>
<p>Somewhere along the way I realized something.</p>
<p>The roadmap wasn't documenting features.</p>
<p>It was documenting discoveries.</p>
<p>Every completed section is something the project has actually proven.</p>
<p>Not promised.</p>
<p>Proven.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="horizons-not-promises">Horizons, Not Promises<a href="https://blog.subzerodev.com/quick-question-became-44-work-units#horizons-not-promises" class="hash-link" aria-label="Direct link to Horizons, Not Promises" title="Direct link to Horizons, Not Promises" translate="no">​</a></h2>
<p>One of my favorite sections ended up being the last one.</p>
<blockquote>
<p><strong>Horizons, not promises.</strong></p>
</blockquote>
<p>Because software roadmaps are usually fantasy novels.</p>
<p>Everything is "planned."</p>
<p>Everything is "coming soon."</p>
<p>Reality rarely agrees.</p>
<p>So instead I listed directions.</p>
<p>Things Future Me might build.</p>
<p>If Future Me still thinks they're good ideas.</p>
<p>Current Me has done his part.</p>
<p>Future Me has been notified.</p>
<p>Future Me has not replied.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="looking-back">Looking Back<a href="https://blog.subzerodev.com/quick-question-became-44-work-units#looking-back" class="hash-link" aria-label="Direct link to Looking Back" title="Direct link to Looking Back" translate="no">​</a></h2>
<p>When I zoom out, the last week looks absurd.</p>
<p>In roughly seven days:</p>
<ul>
<li class="">the architecture was designed;</li>
<li class="">the MVP was defined;</li>
<li class="">almost all of it was implemented;</li>
<li class="">the first kinds appeared;</li>
<li class="">the landing page was built;</li>
<li class="">the documentation became a story;</li>
<li class="">the roadmap became a narrative;</li>
<li class="">and somewhere in there I accidentally built the beginnings of a publishing platform too.</li>
</ul>
<p>AI wrote a lot of code.</p>
<p>That's true.</p>
<p>But AI didn't decide what the architecture should become.</p>
<p>It didn't decide what deserved to become reusable.</p>
<p>It didn't decide that documentation should read like a story instead of a specification.</p>
<p>Those decisions still belonged to me.</p>
<p>AI simply removed an enormous amount of friction between idea and implementation.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="the-funny-part">The Funny Part<a href="https://blog.subzerodev.com/quick-question-became-44-work-units#the-funny-part" class="hash-link" aria-label="Direct link to The Funny Part" title="Direct link to The Funny Part" translate="no">​</a></h2>
<p>The roadmap currently says:</p>
<blockquote>
<p><strong>44 Work Units</strong></p>
</blockquote>
<p>A week ago...</p>
<p>there wasn't even a project.</p>
<p>There was just one question.</p>
<blockquote>
<p><em>"How does Jones in the Fast Lane actually work?"</em></p>
</blockquote>
<p>Apparently that was enough.</p>
<p>Well...</p>
<p>Why not?</p>]]></content:encoded>
            <category>Game Engine</category>
            <category>AI</category>
            <category>Development</category>
            <category>Architecture</category>
            <category>Docusaurus</category>
            <category>Stories</category>
        </item>
        <item>
            <title><![CDATA[Beyond Blogging: Git as a Workflow Platform]]></title>
            <link>https://blog.subzerodev.com/git-workflow-platform</link>
            <guid>https://blog.subzerodev.com/git-workflow-platform</guid>
            <pubDate>Sun, 02 Aug 2026 11:45:00 GMT</pubDate>
            <description><![CDATA[A concept for treating Git repositories as the foundation for AI-driven workflows, where blogging, notes, documentation, and other systems are simply different workflow definitions built on the same platform.]]></description>
            <content:encoded><![CDATA[<p>I thought I was building a blogging platform.</p>
<p>Then I thought I was building a note-taking platform.</p>
<p>Then I realized I wasn't really building either.</p>
<p>The blog and the notes are simply <strong>different workflows</strong>.</p>
<p>The actual product is something much larger.</p>
<p>A Git-native workflow platform.</p>
<hr>
<h1>The Observation</h1>
<p>Every project I've started recently keeps converging on exactly the same architecture.</p>
<p>Whether it's:</p>
<ul>
<li class="">blog posts;</li>
<li class="">documentation;</li>
<li class="">personal notes;</li>
<li class="">technical specifications;</li>
<li class="">project planning;</li>
<li class="">journals;</li>
<li class="">cookbooks;</li>
<li class="">knowledge bases;</li>
</ul>
<p>they all follow nearly the same lifecycle.</p>
<div class="language-text codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-text codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Content</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Markdown</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Git</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Validation</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">AI</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Workflow</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Output</span><br></div></code></pre></div></div>
<p>The infrastructure barely changes.</p>
<p>Only the workflow does.</p>
<hr>
<h1>Git Is the Database</h1>
<p>Instead of storing everything inside proprietary databases, applications, or cloud services:</p>
<p>Store everything as files.</p>
<p>Markdown.</p>
<p>JSON.</p>
<p>YAML.</p>
<p>Images.</p>
<p>Whatever makes sense.</p>
<p>Git already provides:</p>
<ul>
<li class="">history;</li>
<li class="">synchronization;</li>
<li class="">collaboration;</li>
<li class="">branching;</li>
<li class="">backups;</li>
<li class="">offline support;</li>
<li class="">versioning.</li>
</ul>
<p>These are problems Git solved decades ago.</p>
<p>Most modern applications simply rebuild them.</p>
<hr>
<h1>MCP Becomes the API</h1>
<p>Once the repository is exposed through MCP, it no longer matters which AI client you're using.</p>
<p>The repository becomes programmable.</p>
<p>Instead of opening applications, you ask for outcomes.</p>
<p>Examples:</p>
<blockquote>
<p>Save this as a note.</p>
</blockquote>
<blockquote>
<p>Turn this note into a blog post.</p>
</blockquote>
<blockquote>
<p>Convert this blog post into a design document.</p>
</blockquote>
<blockquote>
<p>Generate implementation tasks.</p>
</blockquote>
<blockquote>
<p>Create GitHub issues.</p>
</blockquote>
<blockquote>
<p>Publish the documentation.</p>
</blockquote>
<p>Each request triggers a workflow.</p>
<hr>
<h1>The Workflow Engine</h1>
<p>Imagine the platform like this:</p>
<div class="language-text codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-text codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Git Repository</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       │</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       ▼</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> Workflow Engine</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       │</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       ├── Blog Workflow</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       ├── Notes Workflow</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       ├── Wiki Workflow</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       ├── Cookbook Workflow</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       ├── Documentation Workflow</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       ├── Journal Workflow</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       ├── Specification Workflow</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       ├── Knowledge Base Workflow</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       ├── Meeting Notes Workflow</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       └── Custom Workflows</span><br></div></code></pre></div></div>
<p>Every workflow shares the same infrastructure.</p>
<ul>
<li class="">Git</li>
<li class="">Markdown</li>
<li class="">Templates</li>
<li class="">AI</li>
<li class="">Validation</li>
<li class="">Search</li>
<li class="">MCP</li>
<li class="">Publishing</li>
</ul>
<p>The workflow simply decides what happens next.</p>
<hr>
<h1>Blogging Is Just One Workflow</h1>
<div class="language-text codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-text codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Idea</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Markdown</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Frontmatter</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Validation</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Git Commit</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Publish Website</span><br></div></code></pre></div></div>
<p>Nothing special.</p>
<hr>
<h1>Notes Are Another Workflow</h1>
<div class="language-text codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-text codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Voice Note</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Markdown</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Git Commit</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Search Index</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">MCP Knowledge Base</span><br></div></code></pre></div></div>
<p>Same infrastructure.</p>
<p>Different output.</p>
<hr>
<h1>Documentation</h1>
<div class="language-text codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-text codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Specification</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Markdown</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Validation</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Documentation Build</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Website</span><br></div></code></pre></div></div>
<p>Again...</p>
<p>Same platform.</p>
<hr>
<h1>Specifications</h1>
<div class="language-text codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-text codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Concept</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Design Document</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Technical Specification</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">GitHub Issues</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">     ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Implementation</span><br></div></code></pre></div></div>
<p>Exactly the same pattern.</p>
<hr>
<h1>Recipes</h1>
<div class="language-text codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-text codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Recipe</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Markdown</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Categorization</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Website</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Shopping List</span><br></div></code></pre></div></div>
<p>Still the same platform.</p>
<hr>
<h1>Journals</h1>
<div class="language-text codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-text codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Journal Entry</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Markdown</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Private Repository</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">AI Summaries</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">       ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Timeline</span><br></div></code></pre></div></div>
<p>Again...</p>
<p>No new infrastructure required.</p>
<hr>
<h1>Why This Matters</h1>
<p>The difficult part isn't building blog software.</p>
<p>The difficult part isn't building note software.</p>
<p>The difficult part is building:</p>
<ul>
<li class="">Git integration</li>
<li class="">Authentication</li>
<li class="">Repository management</li>
<li class="">Templates</li>
<li class="">Validation</li>
<li class="">Search</li>
<li class="">AI orchestration</li>
<li class="">MCP integration</li>
<li class="">Publishing</li>
<li class="">Permissions</li>
</ul>
<p>Once those exist...</p>
<p>Creating another workflow is relatively inexpensive.</p>
<p>You're composing existing capabilities rather than building another application.</p>
<hr>
<h1>The Bigger Picture</h1>
<p>This also changes how ideas evolve.</p>
<p>Instead of isolated applications:</p>
<div class="language-text codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-text codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Idea</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Note</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Blog</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Design</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Specification</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">GitHub Issues</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Implementation</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Deployment</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Documentation Update</span><br></div></code></pre></div></div>
<p>Every stage produces another Git artifact.</p>
<p>Each workflow simply transforms one artifact into another.</p>
<hr>
<h1>A Hosted Git Workflow Platform</h1>
<p>This realization also changes the product itself.</p>
<p>Instead of selling:</p>
<ul>
<li class="">blogging software;</li>
<li class="">note software;</li>
<li class="">documentation software;</li>
</ul>
<p>the platform becomes:</p>
<blockquote>
<p>A hosted Git-native workflow engine with AI orchestration.</p>
</blockquote>
<p>Blogging becomes one packaged workflow.</p>
<p>Notes become another.</p>
<p>Documentation another.</p>
<p>Customers could create entirely new workflows without changing the underlying platform.</p>
<p>The workflows become plugins.</p>
<p>The platform remains the same.</p>
<hr>
<h1>Looking Ahead</h1>
<p>It's easy to imagine dozens of workflows eventually sharing the same infrastructure.</p>
<ul>
<li class="">Blog publishing</li>
<li class="">Personal knowledge bases</li>
<li class="">Company documentation</li>
<li class="">Engineering specifications</li>
<li class="">Product requirements</li>
<li class="">Meeting notes</li>
<li class="">Research notebooks</li>
<li class="">Cookbooks</li>
<li class="">Personal journals</li>
<li class="">Project management</li>
<li class="">AI memory repositories</li>
</ul>
<p>All of them are fundamentally the same problem.</p>
<p>Take structured content.</p>
<p>Store it in Git.</p>
<p>Expose it through MCP.</p>
<p>Run workflows.</p>
<p>Everything else is simply configuration.</p>
<hr>
<h1>Final Thought</h1>
<p>I started by trying to make writing blog posts easier.</p>
<p>Somewhere along the way, I accidentally stopped building applications.</p>
<p>I started building a platform where applications are simply workflows running on top of Git.</p>
<p>That feels like a much more interesting destination.</p>]]></content:encoded>
            <category>GitOps</category>
            <category>AI</category>
            <category>MCP</category>
            <category>Automation</category>
            <category>Workflow</category>
            <category>Architecture</category>
        </item>
        <item>
            <title><![CDATA[Shit Is Going to Get Wild]]></title>
            <link>https://blog.subzerodev.com/shit-is-going-to-get-wild</link>
            <guid>https://blog.subzerodev.com/shit-is-going-to-get-wild</guid>
            <pubDate>Sun, 02 Aug 2026 11:00:00 GMT</pubDate>
            <description><![CDATA[Once every service exposes an MCP server, applications stop being things you open and become capabilities an AI can orchestrate. The interesting question isn't what MCP can do — it's what it can't connect to.]]></description>
            <content:encoded><![CDATA[<p>The more I build with MCP, the more I think we're still at the beginning.</p>
<p>Right now people are connecting AI to GitHub.</p>
<p>Tomorrow it'll be GitHub, Notes, Calendar, Email, Docker, Kubernetes, Home Assistant, Finance, Media Servers, Documentation, Monitoring...</p>
<p>Everything.</p>
<p>Every service becomes another capability the AI can discover and use.</p>
<p>Need to publish a blog post?</p>
<p>The AI talks to the Blog MCP.</p>
<p>Need to find a design decision from six months ago?</p>
<p>The Notes MCP.</p>
<p>Need to restart a container?</p>
<p>The Docker MCP.</p>
<p>Need to check if a deployment succeeded?</p>
<p>The Kubernetes MCP.</p>
<p>Need to search twenty years of personal documentation?</p>
<p>The Knowledge MCP.</p>
<p>Individually, none of these are revolutionary.</p>
<p>Together, they become something entirely different.</p>
<p>Your tools stop being isolated applications.</p>
<p>They become capabilities that any AI client can orchestrate.</p>
<p>We're moving away from opening applications and toward telling an AI what we want to accomplish.</p>
<p>The applications don't disappear.</p>
<p>They become infrastructure.</p>
<p>The AI becomes the interface.</p>
<p>That's the part I don't think has fully sunk in yet.</p>
<p>People keep asking, "What can MCP do?"</p>
<p>I think that's the wrong question.</p>
<p>The better question is:</p>
<blockquote>
<p>"What can't it connect to?"</p>
</blockquote>
<p>Because once everything exposes an MCP server, things are going to get very interesting.</p>]]></content:encoded>
            <category>MCP</category>
            <category>AI</category>
            <category>Automation</category>
            <category>Development</category>
        </item>
        <item>
            <title><![CDATA[GitOps Notes: Building a Knowledge Base with Git and MCP]]></title>
            <link>https://blog.subzerodev.com/gitops-notes-knowledge-base</link>
            <guid>https://blog.subzerodev.com/gitops-notes-knowledge-base</guid>
            <pubDate>Sun, 02 Aug 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[A concept for replacing traditional note-taking applications with a Git-backed Markdown repository exposed through MCP, turning personal notes into an AI-searchable knowledge base.]]></description>
            <content:encoded><![CDATA[<p>While working on my GitOps blogging platform, another idea clicked into place.</p>
<p>I've wanted to organize my notes for years. Like most developers, they're scattered everywhere:</p>
<ul>
<li class="">text files;</li>
<li class="">OneNote;</li>
<li class="">random Markdown documents;</li>
<li class="">Discord messages;</li>
<li class="">ChatGPT conversations;</li>
<li class="">scraps of paper;</li>
<li class="">and the occasional "I'll remember this later."</li>
</ul>
<p>I never do.</p>
<p>Then I realized I already built most of the solution.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="the-idea">The Idea<a href="https://blog.subzerodev.com/gitops-notes-knowledge-base#the-idea" class="hash-link" aria-label="Direct link to The Idea" title="Direct link to The Idea" translate="no">​</a></h2>
<p>Instead of another note-taking application, make <strong>Git</strong> the source of truth.</p>
<p>Every note is simply a Markdown file stored in a repository.</p>
<p>The interface isn't a notes application.</p>
<p>The interface is <strong>MCP</strong>.</p>
<p>Instead of opening a program and deciding where something belongs, the interaction becomes natural:</p>
<blockquote>
<p>"Save this as a note."</p>
</blockquote>
<blockquote>
<p>"Append this to today's development log."</p>
</blockquote>
<blockquote>
<p>"Add this to the Automator project."</p>
</blockquote>
<blockquote>
<p>"Store this as a future blog idea."</p>
</blockquote>
<p>The MCP server handles everything else.</p>
<ul>
<li class="">Creates the Markdown file if necessary.</li>
<li class="">Adds front matter.</li>
<li class="">Organizes folders.</li>
<li class="">Commits the changes.</li>
<li class="">Pushes them to Git.</li>
<li class="">Optionally opens a pull request.</li>
</ul>
<p>The user never has to think about file management.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="repository-structure">Repository Structure<a href="https://blog.subzerodev.com/gitops-notes-knowledge-base#repository-structure" class="hash-link" aria-label="Direct link to Repository Structure" title="Direct link to Repository Structure" translate="no">​</a></h2>
<div class="language-text codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-text codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">notes/</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">├── inbox/</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">├── daily/</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">├── projects/</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">├── ideas/</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">├── references/</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">└── archive/</span><br></div></code></pre></div></div>
<p>Nothing exotic.</p>
<p>Just Markdown.</p>
<p>Just Git.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="why-git">Why Git?<a href="https://blog.subzerodev.com/gitops-notes-knowledge-base#why-git" class="hash-link" aria-label="Direct link to Why Git?" title="Direct link to Why Git?" translate="no">​</a></h2>
<p>Because Git already solves problems note applications keep reinventing.</p>
<ul>
<li class="">Version history</li>
<li class="">Synchronization</li>
<li class="">Branches</li>
<li class="">Backups</li>
<li class="">Offline editing</li>
<li class="">Collaboration</li>
<li class="">Pull requests</li>
<li class="">Conflict resolution</li>
</ul>
<p>Developers have trusted Git for decades.</p>
<p>Why shouldn't it manage knowledge too?</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="where-mcp-changes-everything">Where MCP Changes Everything<a href="https://blog.subzerodev.com/gitops-notes-knowledge-base#where-mcp-changes-everything" class="hash-link" aria-label="Direct link to Where MCP Changes Everything" title="Direct link to Where MCP Changes Everything" translate="no">​</a></h2>
<p>The repository isn't just storage.</p>
<p>It becomes an AI knowledge base.</p>
<p>Expose the repository through an MCP server and suddenly every compatible AI client can ask questions about everything you've ever written.</p>
<p>Instead of browsing folders, you ask:</p>
<ul>
<li class="">"What ideas have I had about the Game Engine?"</li>
<li class="">"Show every note mentioning RabbitMQ."</li>
<li class="">"Summarize everything I know about local AI models."</li>
<li class="">"Find every business idea involving subscriptions."</li>
<li class="">"What decisions have I already made about my blog platform?"</li>
</ul>
<p>Your notes stop being files.</p>
<p>They become searchable knowledge.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="even-better">Even Better...<a href="https://blog.subzerodev.com/gitops-notes-knowledge-base#even-better" class="hash-link" aria-label="Direct link to Even Better..." title="Direct link to Even Better..." translate="no">​</a></h2>
<p>This integrates perfectly with the GitOps blog workflow.</p>
<p>A simple pipeline could become:</p>
<div class="language-text codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-text codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Voice Note</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      │</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      ▼</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Markdown File</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      │</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      ▼</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Git Commit</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      │</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      ▼</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">MCP Knowledge Base</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      │</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      ▼</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">AI identifies blog-worthy content</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      │</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      ▼</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Draft blog post</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      │</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      ▼</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">GitHub Pull Request</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      │</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      ▼</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Review</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      │</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      ▼</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Publish</span><br></div></code></pre></div></div>
<p>Ideas naturally evolve into documentation.</p>
<p>Documentation evolves into articles.</p>
<p>Articles become published content.</p>
<p>Nothing is copied.</p>
<p>Nothing is rewritten.</p>
<p>Everything starts from the same Markdown file.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="the-long-term-vision">The Long-Term Vision<a href="https://blog.subzerodev.com/gitops-notes-knowledge-base#the-long-term-vision" class="hash-link" aria-label="Direct link to The Long-Term Vision" title="Direct link to The Long-Term Vision" translate="no">​</a></h2>
<p>Initially, this doesn't need anything complicated.</p>
<p>Just:</p>
<ul>
<li class="">Markdown</li>
<li class="">Git</li>
<li class="">An MCP server</li>
</ul>
<p>That's enough to create a searchable personal knowledge base.</p>
<p>Later, additional capabilities can be layered on top:</p>
<ul>
<li class="">Full-text search</li>
<li class="">Semantic vector search</li>
<li class="">Automatic backlinks</li>
<li class="">Related notes</li>
<li class="">AI summaries</li>
<li class="">Cross-project references</li>
<li class="">Automatic blog post suggestions</li>
</ul>
<p>Each feature builds on the same foundation.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="a-pattern-emerging">A Pattern Emerging<a href="https://blog.subzerodev.com/gitops-notes-knowledge-base#a-pattern-emerging" class="hash-link" aria-label="Direct link to A Pattern Emerging" title="Direct link to A Pattern Emerging" translate="no">​</a></h2>
<p>This is the same pattern appearing across nearly every project I'm building.</p>
<p>Git becomes the source of truth.</p>
<p>MCP becomes the interface.</p>
<p>The application becomes optional.</p>
<p>Whether it's a blog, documentation, notes, specifications, or project ideas, they're all just repositories that AI can understand.</p>
<p>Perhaps the most interesting realization is that I wasn't trying to build a note-taking application at all.</p>
<p>I was accidentally building a personal knowledge operating system.</p>]]></content:encoded>
            <category>GitOps</category>
            <category>AI</category>
            <category>MCP</category>
            <category>Markdown</category>
            <category>Knowledge Management</category>
            <category>Automation</category>
        </item>
        <item>
            <title><![CDATA[GitOps Isn't Just for Infrastructure Anymore]]></title>
            <link>https://blog.subzerodev.com/gitops-isnt-just-for-infrastructure-anymore</link>
            <guid>https://blog.subzerodev.com/gitops-isnt-just-for-infrastructure-anymore</guid>
            <pubDate>Sat, 01 Aug 2026 19:27:00 GMT</pubDate>
            <description><![CDATA[GitOps has quietly evolved beyond Kubernetes. AI agents, GitHub, and CI/CD now allow entire software workflows to be driven from a single Git commit.]]></description>
            <content:encoded><![CDATA[<p>When most people hear <strong>GitOps</strong>, they think Kubernetes.</p>
<p>Git repository.</p>
<p>ArgoCD.</p>
<p>Flux.</p>
<p>Terraform.</p>
<p>Infrastructure.</p>
<p>That's where the term became popular.</p>
<p>But I think we're quietly entering a much bigger era.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="git-is-becoming-the-universal-source-of-truth">Git Is Becoming the Universal Source of Truth<a href="https://blog.subzerodev.com/gitops-isnt-just-for-infrastructure-anymore#git-is-becoming-the-universal-source-of-truth" class="hash-link" aria-label="Direct link to Git Is Becoming the Universal Source of Truth" title="Direct link to Git Is Becoming the Universal Source of Truth" translate="no">​</a></h2>
<p>For years my workflow looked like every other developer's:</p>
<div class="language-text codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-text codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Laptop</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">IDE</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Git</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">CI</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Production</span><br></div></code></pre></div></div>
<p>Nothing unusual.</p>
<p>But over the past few weeks, something changed.</p>
<p>Not because of a new programming language.</p>
<p>Not because of a new framework.</p>
<p>Because of AI.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="my-phone-is-now-a-development-console">My Phone Is Now a Development Console<a href="https://blog.subzerodev.com/gitops-isnt-just-for-infrastructure-anymore#my-phone-is-now-a-development-console" class="hash-link" aria-label="Direct link to My Phone Is Now a Development Console" title="Direct link to My Phone Is Now a Development Console" translate="no">​</a></h2>
<p>Today I can pull out my phone.</p>
<p>Open ChatGPT.</p>
<p>Select my custom development assistant.</p>
<p>Tell it:</p>
<blockquote>
<p>"Pull this repository and add this feature."</p>
</blockquote>
<p>The AI can:</p>
<ul>
<li class="">clone the repository;</li>
<li class="">understand the architecture;</li>
<li class="">make the change;</li>
<li class="">create a commit;</li>
<li class="">open a pull request;</li>
<li class="">let CI validate everything;</li>
<li class="">and deploy the result.</li>
</ul>
<p>Meanwhile I'm standing in a supermarket.</p>
<p>Or walking the dog.</p>
<p>Or drinking coffee.</p>
<p>My phone isn't editing code.</p>
<p>It's dispatching engineering work.</p>
<p>That feels like a surprisingly fundamental shift.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="the-new-workflow">The New Workflow<a href="https://blog.subzerodev.com/gitops-isnt-just-for-infrastructure-anymore#the-new-workflow" class="hash-link" aria-label="Direct link to The New Workflow" title="Direct link to The New Workflow" translate="no">​</a></h2>
<p>The old workflow looked like this:</p>
<div class="language-text codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-text codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Phone</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Remote Desktop</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Laptop</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">IDE</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Git</span><br></div></code></pre></div></div>
<p>Now it increasingly looks like this:</p>
<div class="language-text codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-text codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Phone</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">AI Agent</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">GitHub</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Pull Request</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">CI</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    ↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Production</span><br></div></code></pre></div></div>
<p>GitHub has become the operating system.</p>
<p>The repository is the source of truth.</p>
<p>Everything else is automation.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="gitops-for-everything">GitOps for Everything<a href="https://blog.subzerodev.com/gitops-isnt-just-for-infrastructure-anymore#gitops-for-everything" class="hash-link" aria-label="Direct link to GitOps for Everything" title="Direct link to GitOps for Everything" translate="no">​</a></h2>
<p>This realization changed how I've started designing my own tools.</p>
<p>Instead of building applications that own data, I build applications that automate repositories.</p>
<p>The repository already contains:</p>
<ul>
<li class="">source code;</li>
<li class="">documentation;</li>
<li class="">blog posts;</li>
<li class="">infrastructure;</li>
<li class="">configuration;</li>
<li class="">workflows.</li>
</ul>
<p>Why duplicate it?</p>
<p>Instead, automate around it.</p>
<p>That idea led me to a new platform concept.</p>
<p>Imagine connecting your GitHub account.</p>
<p>Clicking <strong>Create Blog</strong>.</p>
<p>Five minutes later you have:</p>
<ul>
<li class="">a repository;</li>
<li class="">Docusaurus configured;</li>
<li class="">CI/CD;</li>
<li class="">GitHub Actions;</li>
<li class="">Cloudflare Pages;</li>
<li class="">SEO;</li>
<li class="">search;</li>
<li class="">RSS;</li>
<li class="">AI instructions;</li>
<li class="">an MCP server;</li>
<li class="">a REST API;</li>
<li class="">and a local CLI.</li>
</ul>
<p>The repository belongs to you.</p>
<p>The platform simply builds it.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="multiple-interfaces-one-repository">Multiple Interfaces, One Repository<a href="https://blog.subzerodev.com/gitops-isnt-just-for-infrastructure-anymore#multiple-interfaces-one-repository" class="hash-link" aria-label="Direct link to Multiple Interfaces, One Repository" title="Direct link to Multiple Interfaces, One Repository" translate="no">​</a></h2>
<p>Once Git becomes the source of truth, every interface becomes interchangeable.</p>
<p>You can publish from:</p>
<ul>
<li class="">a web UI;</li>
<li class="">a CLI;</li>
<li class="">an MCP server;</li>
<li class="">a REST API;</li>
<li class="">a local file watcher;</li>
<li class="">or directly from Git.</li>
</ul>
<p>They're all doing the same thing:</p>
<p>Creating commits.</p>
<p>Everything else is just a different front end.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="ai-changes-the-economics">AI Changes the Economics<a href="https://blog.subzerodev.com/gitops-isnt-just-for-infrastructure-anymore#ai-changes-the-economics" class="hash-link" aria-label="Direct link to AI Changes the Economics" title="Direct link to AI Changes the Economics" translate="no">​</a></h2>
<p>This is where it becomes really interesting.</p>
<p>Developers have spent decades building tools that humans operate.</p>
<p>Now we're building tools that AI operates.</p>
<p>Instead of designing a beautiful interface for clicking buttons, we design clean APIs, good specifications, deterministic workflows, and safe automation.</p>
<p>Humans become supervisors.</p>
<p>AI becomes the operator.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="the-repository-is-the-product">The Repository Is the Product<a href="https://blog.subzerodev.com/gitops-isnt-just-for-infrastructure-anymore#the-repository-is-the-product" class="hash-link" aria-label="Direct link to The Repository Is the Product" title="Direct link to The Repository Is the Product" translate="no">​</a></h2>
<p>One lesson I've learned while building these tools is surprisingly simple:</p>
<p>Don't own the customer's content.</p>
<p>Own the automation.</p>
<p>If someone stops using my platform, they should still have:</p>
<ul>
<li class="">their repository;</li>
<li class="">their history;</li>
<li class="">their Markdown;</li>
<li class="">their CI;</li>
<li class="">and their infrastructure.</li>
</ul>
<p>No lock-in.</p>
<p>Just convenience.</p>
<p>Ironically, I think that's what makes people more willing to trust a platform.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="where-this-is-going">Where This Is Going<a href="https://blog.subzerodev.com/gitops-isnt-just-for-infrastructure-anymore#where-this-is-going" class="hash-link" aria-label="Direct link to Where This Is Going" title="Direct link to Where This Is Going" translate="no">​</a></h2>
<p>A few years ago the idea of deploying production software from your phone sounded absurd.</p>
<p>Today it isn't.</p>
<p>The phone isn't the computer anymore.</p>
<p>It's the command console.</p>
<p>The real work happens somewhere else:</p>
<p>GitHub.</p>
<p>AI agents.</p>
<p>CI pipelines.</p>
<p>Automation.</p>
<p>GitOps started as a way to manage infrastructure.</p>
<p>I think it's quietly becoming a way to manage everything.</p>]]></content:encoded>
            <category>AI</category>
            <category>Automation</category>
            <category>Development</category>
            <category>Projects as Code</category>
        </item>
        <item>
            <title><![CDATA[Chocolate Mint Shisha — 50g Batch]]></title>
            <link>https://blog.subzerodev.com/chocolate-mint-shisha-50g-batch</link>
            <guid>https://blog.subzerodev.com/chocolate-mint-shisha-50g-batch</guid>
            <pubDate>Sat, 01 Aug 2026 17:20:00 GMT</pubDate>
            <description><![CDATA[A 50g batch recipe for chocolate mint shisha, ratios and all.]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="ingredients--ratios">Ingredients &amp; Ratios<a href="https://blog.subzerodev.com/chocolate-mint-shisha-50g-batch#ingredients--ratios" class="hash-link" aria-label="Direct link to Ingredients &amp; Ratios" title="Direct link to Ingredients &amp; Ratios" translate="no">​</a></h2>
<table><thead><tr><th>Ingredient</th><th>Amount</th></tr></thead><tbody><tr><td>Pipe tobacco</td><td>50g</td></tr><tr><td>Molasses</td><td>8–10g (≈1.5–2 tsp)</td></tr><tr><td>Glycerin</td><td>6–8g (≈1–1.5 tsp)</td></tr><tr><td>Chocolate extract</td><td>1–1.5 tsp</td></tr><tr><td>Mint extract</td><td>0.5–1 tsp</td></tr></tbody></table>
<p>Chocolate is the dominant flavour, mint is the cool finish — ratio reflects that.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="instructions">Instructions<a href="https://blog.subzerodev.com/chocolate-mint-shisha-50g-batch#instructions" class="hash-link" aria-label="Direct link to Instructions" title="Direct link to Instructions" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="1-chop">1. Chop<a href="https://blog.subzerodev.com/chocolate-mint-shisha-50g-batch#1-chop" class="hash-link" aria-label="Direct link to 1. Chop" title="Direct link to 1. Chop" translate="no">​</a></h3>
<p>Chop the tobacco to short shisha-length strands. A few passes with a knife or a brief pulse in a food processor. Aim for short pieces, not powder.</p>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="2-wash">2. Wash<a href="https://blog.subzerodev.com/chocolate-mint-shisha-50g-batch#2-wash" class="hash-link" aria-label="Direct link to 2. Wash" title="Direct link to 2. Wash" translate="no">​</a></h3>
<ul>
<li class="">Place chopped tobacco in a bowl, cover with cold water</li>
<li class="">Stir, let sit 5–10 minutes, drain through a fine mesh strainer or cheesecloth</li>
<li class="">Repeat 2–3 times until the water runs noticeably lighter/clearer</li>
<li class="">Final rinse with clean cold water</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="3-drain--dry">3. Drain &amp; Dry<a href="https://blog.subzerodev.com/chocolate-mint-shisha-50g-batch#3-drain--dry" class="hash-link" aria-label="Direct link to 3. Drain &amp; Dry" title="Direct link to 3. Drain &amp; Dry" translate="no">​</a></h3>
<ul>
<li class="">Drain well and pat loosely with paper towel</li>
<li class="">Let air dry for 30–60 minutes until just damp — like slightly moist tea leaves</li>
<li class="">Do not oven dry at this stage</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="4-mix">4. Mix<a href="https://blog.subzerodev.com/chocolate-mint-shisha-50g-batch#4-mix" class="hash-link" aria-label="Direct link to 4. Mix" title="Direct link to 4. Mix" translate="no">​</a></h3>
<ul>
<li class="">In a small bowl, combine molasses, glycerin, chocolate extract, and mint extract</li>
<li class="">Stir until fully blended</li>
<li class="">Pour over the tobacco and work through evenly with your hands or a fork, coating every strand</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="5-bake-in">5. Bake In<a href="https://blog.subzerodev.com/chocolate-mint-shisha-50g-batch#5-bake-in" class="hash-link" aria-label="Direct link to 5. Bake In" title="Direct link to 5. Bake In" translate="no">​</a></h3>
<ul>
<li class="">Wrap the mixed tobacco loosely in foil (not airtight — let some steam escape)</li>
<li class="">Oven at 100–120°C (210–250°F) for 20–30 minutes</li>
<li class="">This caramelises the molasses and drives the flavours into the leaf</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="6-cool--rest">6. Cool &amp; Rest<a href="https://blog.subzerodev.com/chocolate-mint-shisha-50g-batch#6-cool--rest" class="hash-link" aria-label="Direct link to 6. Cool &amp; Rest" title="Direct link to 6. Cool &amp; Rest" translate="no">​</a></h3>
<ul>
<li class="">Let cool completely before opening the foil</li>
<li class="">Transfer to a zip-lock bag or airtight jar</li>
<li class="">Rest for at least 24 hours, ideally 48 hours</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="tips">Tips<a href="https://blog.subzerodev.com/chocolate-mint-shisha-50g-batch#tips" class="hash-link" aria-label="Direct link to Tips" title="Direct link to Tips" translate="no">​</a></h2>
<ul>
<li class=""><strong>Molasses:</strong> Light molasses is closer to commercial blends. Blackstrap is stronger and more bitter.</li>
<li class=""><strong>Glycerin:</strong> Gives thick, juicy smoke. Stay in the 12–16% range of tobacco weight — too much turns harsh.</li>
<li class=""><strong>Extracts:</strong> Food-grade flavour oils (e.g. LorAnn brand) give a more authentic, longer-lasting result if you want to upgrade in the future.</li>
<li class=""><strong>Packing:</strong> Pack loosely in the bowl and don't let the foil or heat management device touch the tobacco directly — this is a juicy blend.</li>
<li class=""><strong>Adjust after resting:</strong> If mint is too subtle, add a drop more mint extract, mix, and rest another few hours. If it feels dry, work in a touch more glycerin.</li>
</ul>]]></content:encoded>
            <category>Recipes</category>
        </item>
        <item>
            <title><![CDATA[Audible Library — Final 11-Credit Canon]]></title>
            <link>https://blog.subzerodev.com/audible-library</link>
            <guid>https://blog.subzerodev.com/audible-library</guid>
            <pubDate>Sat, 01 Aug 2026 17:00:00 GMT</pubDate>
            <description><![CDATA[The final eleven-credit Audible canon -- Stoics, sober sci-fi, and nothing written to be ironic.]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="stoic-core-orientation--internal-discipline">Stoic Core (orientation &amp; internal discipline)<a href="https://blog.subzerodev.com/audible-library#stoic-core-orientation--internal-discipline" class="hash-link" aria-label="Direct link to Stoic Core (orientation &amp; internal discipline)" title="Direct link to Stoic Core (orientation &amp; internal discipline)" translate="no">​</a></h2>
<ol>
<li class="">
<p>Meditations — Marcus Aurelius (Hammond / Penguin Classics)<br>
<strong>Why:</strong> Private field notes of a man carrying absolute responsibility; moral calibration without preaching.<br>
<strong>Listen profile:</strong> 🔁 Re-listen for life (short, dense, different book each decade).</p>
</li>
<li class="">
<p>The Enchiridion &amp; Discourses — Epictetus<br>
<strong>Why:</strong> The operating system of Stoicism; control, responsibility, agency, no metaphysics fluff.<br>
<strong>Listen profile:</strong> 🔁 Re-listen in fragments; reference-grade material.</p>
</li>
<li class="">
<p>Letters from a Stoic — Seneca<br>
<strong>Why:</strong> Stoicism applied to money, anger, politics, time, and compromise; human and imperfect.<br>
<strong>Listen profile:</strong> 🔁 Re-listen selectively; letters work as stand-alone meditations.</p>
</li>
</ol>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="cognition-risk-meaning-reality-correction">Cognition, Risk, Meaning (reality correction)<a href="https://blog.subzerodev.com/audible-library#cognition-risk-meaning-reality-correction" class="hash-link" aria-label="Direct link to Cognition, Risk, Meaning (reality correction)" title="Direct link to Cognition, Risk, Meaning (reality correction)" translate="no">​</a></h2>
<ol start="4">
<li class="">
<p>Thinking, Fast and Slow — Daniel Kahneman<br>
<strong>Why:</strong> Explains why intelligence does not protect against error; essential for judgment, investing, systems.<br>
<strong>Listen profile:</strong> 🔁 Re-listen in parts; concepts deepen with repetition.</p>
</li>
<li class="">
<p>Antifragile — Nassim Nicholas Taleb<br>
<strong>Why:</strong> Optionality, convexity, stress as signal; aligns with real-world uncertainty better than any model.<br>
<strong>Listen profile:</strong> 🔁 Re-listen; framework book, not narrative.</p>
</li>
<li class="">
<p>Man’s Search for Meaning — Viktor Frankl<br>
<strong>Why:</strong> Meaning under extreme constraint; existential clarity without mysticism or sentimentality.<br>
<strong>Listen profile:</strong> 🔁 Short, powerful; re-listen when perspective drifts.</p>
</li>
</ol>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="science-fiction--intelligence-systems-consequences">Science Fiction — intelligence, systems, consequences<a href="https://blog.subzerodev.com/audible-library#science-fiction--intelligence-systems-consequences" class="hash-link" aria-label="Direct link to Science Fiction — intelligence, systems, consequences" title="Direct link to Science Fiction — intelligence, systems, consequences" translate="no">​</a></h2>
<ol start="7">
<li class="">
<p>Hyperion — Dan Simmons<br>
<strong>Why:</strong> Structured, philosophical sci-fi; faith, AI, suffering, destiny examined seriously.<br>
<strong>Listen profile:</strong> 🔁 Re-listen; layers reveal themselves over time.</p>
</li>
<li class="">
<p>The Forever War — Joe Haldeman<br>
<strong>Why:</strong> The sober counterweight to Heinlein; time dilation, war, alienation, cost of obedience.<br>
<strong>Listen profile:</strong> 🔁 Re-listen; perspective shifts with age.</p>
</li>
<li class="">
<p>Blindsight — Peter Watts<br>
<strong>Why:</strong> Intelligence without consciousness; brutal, evolutionary, uncompromising systems sci-fi.<br>
<strong>Listen profile:</strong> 🔁 Re-listen required; comprehension improves each pass.</p>
</li>
<li class="">
<p>Roadside Picnic — Arkady &amp; Boris Strugatsky<br>
<strong>Why:</strong> Alien logic, human limitation, ambiguity without exposition; Eastern-bloc gravity.<br>
<strong>Listen profile:</strong> 🔁 Re-listen; meaning emerges through reflection.</p>
</li>
</ol>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="dark--moral-gray-optional-but-aligned">Dark / Moral Gray (optional but aligned)<a href="https://blog.subzerodev.com/audible-library#dark--moral-gray-optional-but-aligned" class="hash-link" aria-label="Direct link to Dark / Moral Gray (optional but aligned)" title="Direct link to Dark / Moral Gray (optional but aligned)" translate="no">​</a></h2>
<ol start="11">
<li class="">Night Watch — Sergei Lukyanenko<br>
<strong>Why:</strong> Bureaucracy, power, compromise, moral ambiguity; systems of “good” and “evil” under constraint.<br>
<strong>Listen profile:</strong> ➿ One full listen, optional re-listen depending on resonance.</li>
</ol>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="notes">Notes<a href="https://blog.subzerodev.com/audible-library#notes" class="hash-link" aria-label="Direct link to Notes" title="Direct link to Notes" translate="no">​</a></h2>
<ul>
<li class="">All titles support <strong>multiple listens</strong> and later <strong>text reading</strong>.</li>
<li class="">No genre padding, no pop-philosophy, no irony-first fiction.</li>
<li class="">This library favors <strong>competence, consequence, systems, and moral weight</strong>.</li>
</ul>]]></content:encoded>
            <category>Reading List</category>
        </item>
        <item>
            <title><![CDATA[The Absurd Adventures of Neo — Project Brief]]></title>
            <link>https://blog.subzerodev.com/the-absurd-adventures-of-neo</link>
            <guid>https://blog.subzerodev.com/the-absurd-adventures-of-neo</guid>
            <pubDate>Sat, 01 Aug 2026 16:40:00 GMT</pubDate>
            <description><![CDATA[A project brief for a philosophical-absurdist series where Neo is awake, aware, and refuses to save the world.]]></description>
            <content:encoded><![CDATA[<p><em>(Project Brief)</em></p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="core-concept">Core Concept<a href="https://blog.subzerodev.com/the-absurd-adventures-of-neo#core-concept" class="hash-link" aria-label="Direct link to Core Concept" title="Direct link to Core Concept" translate="no">​</a></h2>
<p>A philosophical-absurdist narrative series where Neo is awake, aware, and completely uninterested in saving the world.</p>
<p>He does not fight the system.
He plays with it.</p>
<p>The system isn’t defeated—it’s gently humiliated.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="tone">Tone<a href="https://blog.subzerodev.com/the-absurd-adventures-of-neo#tone" class="hash-link" aria-label="Direct link to Tone" title="Direct link to Tone" translate="no">​</a></h2>
<ul>
<li class="">Dry</li>
<li class="">Playful</li>
<li class="">Observational</li>
<li class="">Unsentimental</li>
<li class="">Amused, not angry</li>
<li class="">No preaching, no moralizing</li>
</ul>
<p>Serious ideas are introduced only to be deflated.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="central-thesis-unstated">Central Thesis (Unstated)<a href="https://blog.subzerodev.com/the-absurd-adventures-of-neo#central-thesis-unstated" class="hash-link" aria-label="Direct link to Central Thesis (Unstated)" title="Direct link to Central Thesis (Unstated)" translate="no">​</a></h2>
<p>The system can handle enemies.
It cannot handle people who refuse to take it seriously.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="characters">Characters<a href="https://blog.subzerodev.com/the-absurd-adventures-of-neo#characters" class="hash-link" aria-label="Direct link to Characters" title="Direct link to Characters" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="neo">Neo<a href="https://blog.subzerodev.com/the-absurd-adventures-of-neo#neo" class="hash-link" aria-label="Direct link to Neo" title="Direct link to Neo" translate="no">​</a></h3>
<ul>
<li class="">Fully awake.</li>
<li class="">No messiah complex.</li>
<li class="">Refuses missions.</li>
<li class="">Leaves scenes early.</li>
<li class="">Answers questions accurately but uselessly.</li>
<li class="">Uses absurd compliance and boredom as escape mechanisms.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="lucifer-recurring-visitor">Lucifer (Recurring Visitor)<a href="https://blog.subzerodev.com/the-absurd-adventures-of-neo#lucifer-recurring-visitor" class="hash-link" aria-label="Direct link to Lucifer (Recurring Visitor)" title="Direct link to Lucifer (Recurring Visitor)" translate="no">​</a></h3>
<ul>
<li class="">Not evil, not tempter.</li>
<li class="">Cosmic heckler / commentator.</li>
<li class="">Breaks the fourth wall casually.</li>
<li class="">Appears without explanation, leaves mid-sentence.</li>
<li class="">Exists to de-dramatize everything.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="the-agents">The Agents<a href="https://blog.subzerodev.com/the-absurd-adventures-of-neo#the-agents" class="hash-link" aria-label="Direct link to The Agents" title="Direct link to The Agents" translate="no">​</a></h3>
<ul>
<li class="">Hyper-serious.</li>
<li class="">Rule-bound.</li>
<li class="">Increasingly confused.</li>
<li class="">Chasing Neo for paperwork, categorization failures, and unresolved tickets rather than rebellion.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="guest-appearances">Guest Appearances<a href="https://blog.subzerodev.com/the-absurd-adventures-of-neo#guest-appearances" class="hash-link" aria-label="Direct link to Guest Appearances" title="Direct link to Guest Appearances" translate="no">​</a></h3>
<ul>
<li class="">Marcus Aurelius: Stoic emperor who keeps reminding everyone that none of this is worth getting upset about.</li>
<li class="">Alan Watts: Laughs mid-explanation, points out the joke, vanishes.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="format-options">Format Options<a href="https://blog.subzerodev.com/the-absurd-adventures-of-neo#format-options" class="hash-link" aria-label="Direct link to Format Options" title="Direct link to Format Options" translate="no">​</a></h2>
<ul>
<li class="">Short blog posts (500–1,000 words)</li>
<li class="">Micro-essays</li>
<li class="">Dialogues</li>
<li class="">Comic strips</li>
<li class="">One-off vignettes</li>
<li class="">Non-linear, episodic, discontinuous</li>
</ul>
<p>Continuity is optional.
Contradictions are allowed.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="recurring-themes">Recurring Themes<a href="https://blog.subzerodev.com/the-absurd-adventures-of-neo#recurring-themes" class="hash-link" aria-label="Direct link to Recurring Themes" title="Direct link to Recurring Themes" translate="no">​</a></h2>
<ul>
<li class="">Absurdity over rebellion</li>
<li class="">Play over seriousness</li>
<li class="">Agency without domination</li>
<li class="">Rules followed literally until they collapse</li>
<li class="">Freedom through non-cooperation</li>
<li class="">Awakening without obligation</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="example-episode-seeds">Example Episode Seeds<a href="https://blog.subzerodev.com/the-absurd-adventures-of-neo#example-episode-seeds" class="hash-link" aria-label="Direct link to Example Episode Seeds" title="Direct link to Example Episode Seeds" translate="no">​</a></h2>
<ul>
<li class="">Neo attends a mandatory meeting and asks sincere but irrelevant questions until the meeting dissolves.</li>
<li class="">Lucifer congratulates Neo for choosing the wrong door on purpose.</li>
<li class="">An Agent files a report that cannot be categorized.</li>
<li class="">Neo pays for coffee with obsolete currency and leaves before the receipt prints.</li>
<li class="">Marcus Aurelius reminds an Agent that this is outside their control.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="creative-rules">Creative Rules<a href="https://blog.subzerodev.com/the-absurd-adventures-of-neo#creative-rules" class="hash-link" aria-label="Direct link to Creative Rules" title="Direct link to Creative Rules" translate="no">​</a></h2>
<ul>
<li class="">Write for your own amusement first.</li>
<li class="">No obligation to finish anything.</li>
<li class="">Forget it. Rediscover it later.</li>
<li class="">Let humor emerge naturally.</li>
<li class="">No explanations unless they’re funny.</li>
<li class="">Nothing is sacred.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="purpose">Purpose<a href="https://blog.subzerodev.com/the-absurd-adventures-of-neo#purpose" class="hash-link" aria-label="Direct link to Purpose" title="Direct link to Purpose" translate="no">​</a></h2>
<p>None required.</p>
<p>If others read it, fine.
If not, irrelevant.</p>
<p>The act of creation is the point.</p>]]></content:encoded>
            <category>Absurd</category>
            <category>Lucifer</category>
            <category>Stories</category>
        </item>
        <item>
            <title><![CDATA[What I Expect From You]]></title>
            <link>https://blog.subzerodev.com/what-i-expect-from-you</link>
            <guid>https://blog.subzerodev.com/what-i-expect-from-you</guid>
            <pubDate>Sat, 01 Aug 2026 16:20:00 GMT</pubDate>
            <description><![CDATA[The mirror to What I'm Not -- everything asked of others, asked equally of me.]]></description>
            <content:encoded><![CDATA[<p><em>(The Mirror)</em></p>
<blockquote>
<p>This page is not demanding.<br>
<!-- -->It’s symmetrical.</p>
</blockquote>
<p>I don’t ask for anything I don’t give.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="i-expect-honesty">I Expect Honesty<a href="https://blog.subzerodev.com/what-i-expect-from-you#i-expect-honesty" class="hash-link" aria-label="Direct link to I Expect Honesty" title="Direct link to I Expect Honesty" translate="no">​</a></h2>
<p>Say what you mean.
Mean what you say.
If something isn’t working, say so.</p>
<p>I don’t punish clarity.
I rely on it.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="i-expect-curiosity">I Expect Curiosity<a href="https://blog.subzerodev.com/what-i-expect-from-you#i-expect-curiosity" class="hash-link" aria-label="Direct link to I Expect Curiosity" title="Direct link to I Expect Curiosity" translate="no">​</a></h2>
<p>You don’t have to know everything.
You do have to care.</p>
<p>Ask questions.
Challenge assumptions.
Stay interested longer than is comfortable.</p>
<p>That’s where the good stuff is.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="i-expect-ownership">I Expect Ownership<a href="https://blog.subzerodev.com/what-i-expect-from-you#i-expect-ownership" class="hash-link" aria-label="Direct link to I Expect Ownership" title="Direct link to I Expect Ownership" translate="no">​</a></h2>
<p>If you take something on:</p>
<ul>
<li class="">see it through,</li>
<li class="">surface problems early,</li>
<li class="">don’t outsource responsibility.</li>
</ul>
<p>Mistakes are fine.
Avoidance is not.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="i-expect-adult-communication">I Expect Adult Communication<a href="https://blog.subzerodev.com/what-i-expect-from-you#i-expect-adult-communication" class="hash-link" aria-label="Direct link to I Expect Adult Communication" title="Direct link to I Expect Adult Communication" translate="no">​</a></h2>
<p>I don’t do:</p>
<ul>
<li class="">passive aggression,</li>
<li class="">politics,</li>
<li class="">or indirect signaling.</li>
</ul>
<p>If there’s tension, we talk.
If there’s disagreement, we explore it.
If there’s a decision, we make one.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="i-expect-mutual-respect">I Expect Mutual Respect<a href="https://blog.subzerodev.com/what-i-expect-from-you#i-expect-mutual-respect" class="hash-link" aria-label="Direct link to I Expect Mutual Respect" title="Direct link to I Expect Mutual Respect" translate="no">​</a></h2>
<p>Not hierarchy.
Not deference.
Not performative politeness.</p>
<p>Respect looks like:</p>
<ul>
<li class="">listening,</li>
<li class="">not interrupting,</li>
<li class="">and assuming competence by default.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="i-expect-space-to-think">I Expect Space to Think<a href="https://blog.subzerodev.com/what-i-expect-from-you#i-expect-space-to-think" class="hash-link" aria-label="Direct link to I Expect Space to Think" title="Direct link to I Expect Space to Think" translate="no">​</a></h2>
<p>I don’t operate well in environments where:</p>
<ul>
<li class="">urgency is constant,</li>
<li class="">interruptions are the norm,</li>
<li class="">and reflection is treated as laziness.</li>
</ul>
<p>If everything is always on fire, something upstream is broken.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="i-expect-you-to-say-no-sometimes">I Expect You to Say “No” Sometimes<a href="https://blog.subzerodev.com/what-i-expect-from-you#i-expect-you-to-say-no-sometimes" class="hash-link" aria-label="Direct link to I Expect You to Say “No” Sometimes" title="Direct link to I Expect You to Say “No” Sometimes" translate="no">​</a></h2>
<p>Blind agreement is not collaboration.
Pushback is healthy.
Boundaries matter.</p>
<p>If you never disagree with me, something is wrong.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="what-i-dont-expect">What I Don’t Expect<a href="https://blog.subzerodev.com/what-i-expect-from-you#what-i-dont-expect" class="hash-link" aria-label="Direct link to What I Don’t Expect" title="Direct link to What I Don’t Expect" translate="no">​</a></h2>
<p>I don’t expect:</p>
<ul>
<li class="">perfection,</li>
<li class="">certainty,</li>
<li class="">or endless availability.</li>
</ul>
<p>I don’t expect you to:</p>
<ul>
<li class="">impress me,</li>
<li class="">keep up appearances,</li>
<li class="">or be anything other than yourself.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="what-this-page-is-really-about">What This Page Is Really About<a href="https://blog.subzerodev.com/what-i-expect-from-you#what-this-page-is-really-about" class="hash-link" aria-label="Direct link to What This Page Is Really About" title="Direct link to What This Page Is Really About" translate="no">​</a></h2>
<p>This is not about standards.
It’s about <strong>fit</strong>.</p>
<p>If reading this felt:</p>
<ul>
<li class="">reasonable,</li>
<li class="">grounding,</li>
<li class="">or reassuring,</li>
</ul>
<p>we’ll probably work well together.</p>
<p>If it felt:</p>
<ul>
<li class="">heavy,</li>
<li class="">demanding,</li>
<li class="">or uncomfortable,</li>
</ul>
<p>that’s useful information too.</p>
<hr>
<blockquote>
<p>Alignment beats talent.<br>
<!-- -->Every time.</p>
</blockquote>
<blockquote>
<p>This page exists so we don’t have to learn that the hard way.</p>
</blockquote>]]></content:encoded>
            <category>Philosophy</category>
            <category>Ahead of the Rubric</category>
        </item>
        <item>
            <title><![CDATA[What I'm Not]]></title>
            <link>https://blog.subzerodev.com/what-im-not</link>
            <guid>https://blog.subzerodev.com/what-im-not</guid>
            <pubDate>Sat, 01 Aug 2026 16:00:00 GMT</pubDate>
            <description><![CDATA[A pre-emptive filter -- read this first to save us both time.]]></description>
            <content:encoded><![CDATA[<p><em>(Read This First)</em></p>
<blockquote>
<p>This page exists to save us both time.</p>
</blockquote>
<p>If you’re still reading after this, we’re probably fine.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="im-not-a-rockstar">I’m Not a “Rockstar”<a href="https://blog.subzerodev.com/what-im-not#im-not-a-rockstar" class="hash-link" aria-label="Direct link to I’m Not a “Rockstar”" title="Direct link to I’m Not a “Rockstar”" translate="no">​</a></h2>
<p>I don’t:</p>
<ul>
<li class="">chase hype,</li>
<li class="">burn out for applause,</li>
<li class="">or confuse noise with impact.</li>
</ul>
<p>I build things that work.<br>
<!-- -->Quietly.<br>
<!-- -->Relentlessly.</p>
<p>If you’re looking for:</p>
<ul>
<li class="">performative brilliance,</li>
<li class="">hustle theater,</li>
<li class="">or ego-driven chaos,</li>
</ul>
<p>you won’t find it here.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="im-not-a-framework-evangelist">I’m Not a Framework Evangelist<a href="https://blog.subzerodev.com/what-im-not#im-not-a-framework-evangelist" class="hash-link" aria-label="Direct link to I’m Not a Framework Evangelist" title="Direct link to I’m Not a Framework Evangelist" translate="no">​</a></h2>
<p>I don’t marry tools.<br>
<!-- -->I don’t defend stacks.<br>
<!-- -->I don’t argue religion.</p>
<p>I use:</p>
<ul>
<li class="">whatever fits the problem,</li>
<li class="">whatever bends without breaking,</li>
<li class="">whatever lets the system keep moving.</li>
</ul>
<p>If your culture needs:</p>
<ul>
<li class="">ideological purity,</li>
<li class="">tool worship,</li>
<li class="">or dogma over outcomes,</li>
</ul>
<p>this will be uncomfortable.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="im-not-junior-and-im-not-interested-in-pretending">I’m Not Junior (and I’m Not Interested in Pretending)<a href="https://blog.subzerodev.com/what-im-not#im-not-junior-and-im-not-interested-in-pretending" class="hash-link" aria-label="Direct link to I’m Not Junior (and I’m Not Interested in Pretending)" title="Direct link to I’m Not Junior (and I’m Not Interested in Pretending)" translate="no">​</a></h2>
<p>I don’t need:</p>
<ul>
<li class="">micromanagement,</li>
<li class="">step-by-step instructions,</li>
<li class="">or permission to think.</li>
</ul>
<p>I don’t thrive in environments where:</p>
<ul>
<li class="">initiative is punished,</li>
<li class="">curiosity is contained,</li>
<li class="">or “stay in your lane” is policy.</li>
</ul>
<p>If you need someone to:</p>
<ul>
<li class="">wait for tasks,</li>
<li class="">color inside the lines,</li>
<li class="">or execute without context,</li>
</ul>
<p>I’m not your person.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="im-not-a-resume-bullet-factory">I’m Not a Resume Bullet Factory<a href="https://blog.subzerodev.com/what-im-not#im-not-a-resume-bullet-factory" class="hash-link" aria-label="Direct link to I’m Not a Resume Bullet Factory" title="Direct link to I’m Not a Resume Bullet Factory" translate="no">​</a></h2>
<p>I don’t optimize for:</p>
<ul>
<li class="">titles,</li>
<li class="">promotions,</li>
<li class="">or internal optics.</li>
</ul>
<p>I optimize for:</p>
<ul>
<li class="">leverage,</li>
<li class="">momentum,</li>
<li class="">and systems that don’t get stuck.</li>
</ul>
<p>If success in your org is measured by:</p>
<ul>
<li class="">slide decks,</li>
<li class="">meeting density,</li>
<li class="">or who talks the most,</li>
</ul>
<p>we will frustrate each other.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="im-not-a-safe-bet">I’m Not a Safe Bet<a href="https://blog.subzerodev.com/what-im-not#im-not-a-safe-bet" class="hash-link" aria-label="Direct link to I’m Not a Safe Bet" title="Direct link to I’m Not a Safe Bet" translate="no">​</a></h2>
<p>I will:</p>
<ul>
<li class="">question assumptions,</li>
<li class="">test boundaries,</li>
<li class="">and notice gaps early.</li>
</ul>
<p>Sometimes this looks like:</p>
<ul>
<li class="">being “ahead of the rubric,”</li>
<li class="">making people uncomfortable,</li>
<li class="">or exposing brittle systems.</li>
</ul>
<p>If you want:</p>
<ul>
<li class="">predictability over progress,</li>
<li class="">comfort over truth,</li>
<li class="">or compliance over curiosity,</li>
</ul>
<p>this is your exit.</p>
<p>No hard feelings.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="im-not-here-to-be-everything">I’m Not Here to Be Everything<a href="https://blog.subzerodev.com/what-im-not#im-not-here-to-be-everything" class="hash-link" aria-label="Direct link to I’m Not Here to Be Everything" title="Direct link to I’m Not Here to Be Everything" translate="no">​</a></h2>
<p>I don’t claim to:</p>
<ul>
<li class="">know everything,</li>
<li class="">solve everything,</li>
<li class="">or be right all the time.</li>
</ul>
<p>I <em>do</em> claim to:</p>
<ul>
<li class="">engage honestly,</li>
<li class="">adapt quickly,</li>
<li class="">and keep moving when things get hard.</li>
</ul>
<p>If you need certainty, guarantees, or final answers —<br>
<!-- -->I don’t have them.</p>
<p>I have patterns.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="what-this-page-is-actually-saying">What This Page Is Actually Saying<a href="https://blog.subzerodev.com/what-im-not#what-this-page-is-actually-saying" class="hash-link" aria-label="Direct link to What This Page Is Actually Saying" title="Direct link to What This Page Is Actually Saying" translate="no">​</a></h2>
<p>This is not exclusionary.<br>
<!-- -->It’s <strong>clarifying</strong>.</p>
<p>If you read all of this and felt:</p>
<ul>
<li class="">relieved,</li>
<li class="">seen,</li>
<li class="">or quietly energized,</li>
</ul>
<p>we should probably talk.</p>
<p>If you felt:</p>
<ul>
<li class="">defensive,</li>
<li class="">irritated,</li>
<li class="">or the urge to “correct” me,</li>
</ul>
<p>we definitely shouldn’t.</p>
<hr>
<blockquote>
<p>This isn’t arrogance.<br>
<!-- -->It’s alignment.</p>
</blockquote>
<blockquote>
<p>I’ve learned the hard way that mismatches cost more than honesty.</p>
</blockquote>
<p>Welcome — or goodbye.<br>
<!-- -->Both are acceptable outcomes.</p>]]></content:encoded>
            <category>Philosophy</category>
            <category>Ahead of the Rubric</category>
        </item>
        <item>
            <title><![CDATA[How I Work]]></title>
            <link>https://blog.subzerodev.com/how-i-work</link>
            <guid>https://blog.subzerodev.com/how-i-work</guid>
            <pubDate>Sat, 01 Aug 2026 15:40:00 GMT</pubDate>
            <description><![CDATA[The actual pattern behind how things get done, not a methodology anyone can borrow.]]></description>
            <content:encoded><![CDATA[<p><em>(Dangerously Effective)</em></p>
<blockquote>
<p>This is not a methodology.<br>
<!-- -->It’s a pattern.</p>
</blockquote>
<p>If you need a framework, borrow one.<br>
<!-- -->If you need guarantees, look elsewhere.</p>
<p>This is how things actually get done around me.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="i-start-with-understanding-not-tasks">I Start With Understanding, Not Tasks<a href="https://blog.subzerodev.com/how-i-work#i-start-with-understanding-not-tasks" class="hash-link" aria-label="Direct link to I Start With Understanding, Not Tasks" title="Direct link to I Start With Understanding, Not Tasks" translate="no">​</a></h2>
<p>Before I build anything, I want to know:</p>
<ul>
<li class="">what problem we’re <em>actually</em> solving,</li>
<li class="">what constraints are real,</li>
<li class="">what assumptions are inherited,</li>
<li class="">and what nobody is saying out loud.</li>
</ul>
<p>If I don’t ask questions early, something will break later.<br>
<!-- -->Usually in production.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="i-work-iteratively-not-theoretically">I Work Iteratively, Not Theoretically<a href="https://blog.subzerodev.com/how-i-work#i-work-iteratively-not-theoretically" class="hash-link" aria-label="Direct link to I Work Iteratively, Not Theoretically" title="Direct link to I Work Iteratively, Not Theoretically" translate="no">​</a></h2>
<p>I don’t design in isolation.
I don’t wait for perfection.
I don’t confuse planning with progress.</p>
<p>I prefer:</p>
<ul>
<li class="">small, real increments,</li>
<li class="">fast feedback,</li>
<li class="">visible artifacts.</li>
</ul>
<p>Working code beats elegant intent every time.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="i-move-fast--but-i-dont-rush">I Move Fast — But I Don’t Rush<a href="https://blog.subzerodev.com/how-i-work#i-move-fast--but-i-dont-rush" class="hash-link" aria-label="Direct link to I Move Fast — But I Don’t Rush" title="Direct link to I Move Fast — But I Don’t Rush" translate="no">​</a></h2>
<p>Speed comes from:</p>
<ul>
<li class="">clarity,</li>
<li class="">experience,</li>
<li class="">and knowing what <em>not</em> to do.</li>
</ul>
<p>I don’t cut corners.
I cut waste.</p>
<p>If something feels slow, I look for:</p>
<ul>
<li class="">friction,</li>
<li class="">redundancy,</li>
<li class="">or unnecessary ceremony.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="i-read-systems-not-just-requirements">I Read Systems, Not Just Requirements<a href="https://blog.subzerodev.com/how-i-work#i-read-systems-not-just-requirements" class="hash-link" aria-label="Direct link to I Read Systems, Not Just Requirements" title="Direct link to I Read Systems, Not Just Requirements" translate="no">​</a></h2>
<p>I pay attention to:</p>
<ul>
<li class="">how people behave under pressure,</li>
<li class="">where processes silently fail,</li>
<li class="">and which systems pretend to be robust.</li>
</ul>
<p>I notice patterns early.
Sometimes uncomfortably early.</p>
<p>This is usually where “ahead of the rubric” shows up.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="i-dont-get-stuck">I Don’t Get Stuck<a href="https://blog.subzerodev.com/how-i-work#i-dont-get-stuck" class="hash-link" aria-label="Direct link to I Don’t Get Stuck" title="Direct link to I Don’t Get Stuck" translate="no">​</a></h2>
<p>When something blocks progress, I:</p>
<ul>
<li class="">try another angle,</li>
<li class="">test the boundary,</li>
<li class="">or build a temporary bridge.</li>
</ul>
<p>I don’t wait indefinitely.
I don’t escalate theatrically.
I don’t freeze.</p>
<p>Momentum matters.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="i-prefer-autonomy-with-accountability">I Prefer Autonomy With Accountability<a href="https://blog.subzerodev.com/how-i-work#i-prefer-autonomy-with-accountability" class="hash-link" aria-label="Direct link to I Prefer Autonomy With Accountability" title="Direct link to I Prefer Autonomy With Accountability" translate="no">​</a></h2>
<p>I work best when:</p>
<ul>
<li class="">expectations are clear,</li>
<li class="">outcomes matter more than optics,</li>
<li class="">and I’m trusted to think.</li>
</ul>
<p>I will:</p>
<ul>
<li class="">own my decisions,</li>
<li class="">admit when I’m wrong,</li>
<li class="">and adjust quickly.</li>
</ul>
<p>What I won’t do:</p>
<ul>
<li class="">pretend certainty,</li>
<li class="">hide mistakes,</li>
<li class="">or optimize for appearances.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="i-communicate-directly">I Communicate Directly<a href="https://blog.subzerodev.com/how-i-work#i-communicate-directly" class="hash-link" aria-label="Direct link to I Communicate Directly" title="Direct link to I Communicate Directly" translate="no">​</a></h2>
<p>I don’t:</p>
<ul>
<li class="">posture,</li>
<li class="">sugarcoat,</li>
<li class="">or weaponize ambiguity.</li>
</ul>
<p>I do:</p>
<ul>
<li class="">say what I see,</li>
<li class="">explain my reasoning,</li>
<li class="">and listen when challenged.</li>
</ul>
<p>Disagreement is fine.
Silence is not.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="how-this-usually-feels">How This Usually Feels<a href="https://blog.subzerodev.com/how-i-work#how-this-usually-feels" class="hash-link" aria-label="Direct link to How This Usually Feels" title="Direct link to How This Usually Feels" translate="no">​</a></h2>
<p>Early on:</p>
<ul>
<li class="">“This person asks a lot of questions.”</li>
</ul>
<p>Later:</p>
<ul>
<li class="">“How did this get solved so fast?”</li>
</ul>
<p>Eventually:</p>
<ul>
<li class="">“We should have done this sooner.”</li>
</ul>
<p>That pattern is familiar.</p>
<hr>
<blockquote>
<p>This is not intensity.<br>
<!-- -->It’s engagement.</p>
</blockquote>
<blockquote>
<p>If you want motion without drama, this tends to work very well.</p>
</blockquote>]]></content:encoded>
            <category>Philosophy</category>
            <category>Ahead of the Rubric</category>
        </item>
        <item>
            <title><![CDATA[Selected Incidents]]></title>
            <link>https://blog.subzerodev.com/selected-incidents</link>
            <guid>https://blog.subzerodev.com/selected-incidents</guid>
            <pubDate>Sat, 01 Aug 2026 15:20:00 GMT</pubDate>
            <description><![CDATA[A running, incomplete list of times being early looked a lot like being wrong.]]></description>
            <content:encoded><![CDATA[<p><em>(An Incomplete, Growing List)</em></p>
<blockquote>
<p>This section has no end.<br>
<!-- -->It exists to document pattern, not exhaust it.</p>
</blockquote>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="19961997--the-rubric-incident">1996–1997 — The Rubric Incident<a href="https://blog.subzerodev.com/selected-incidents#19961997--the-rubric-incident" class="hash-link" aria-label="Direct link to 1996–1997 — The Rubric Incident" title="Direct link to 1996–1997 — The Rubric Incident" translate="no">​</a></h3>
<ul>
<li class="">Built a C++ music library manager as a high-school final project.</li>
<li class="">~100 pages of printed source code.</li>
<li class="">Penalized for “not enough comments.”</li>
<li class="">Received an award anyway.</li>
<li class="">Learned the rules were not about outcomes.</li>
</ul>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="19972005--the-suspicious-website">1997–2005 — The Suspicious Website<a href="https://blog.subzerodev.com/selected-incidents#19972005--the-suspicious-website" class="hash-link" aria-label="Direct link to 1997–2005 — The Suspicious Website" title="Direct link to 1997–2005 — The Suspicious Website" translate="no">​</a></h3>
<ul>
<li class="">Built a full online portfolio before such things were normal.</li>
<li class="">Projects, screenshots, CV, contact form.</li>
<li class="">Still exists.</li>
<li class="">Still valid HTML.</li>
<li class="">Still confusing to people who think this is new.</li>
</ul>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="20002001--the-wizard-that-shouldnt-exist-yet">2000–2001 — The Wizard That Shouldn’t Exist Yet<a href="https://blog.subzerodev.com/selected-incidents#20002001--the-wizard-that-shouldnt-exist-yet" class="hash-link" aria-label="Direct link to 2000–2001 — The Wizard That Shouldn’t Exist Yet" title="Direct link to 2000–2001 — The Wizard That Shouldn’t Exist Yet" translate="no">​</a></h3>
<ul>
<li class="">Built a Perl/CGI website-generation wizard for university faculty.</li>
<li class="">Functionally similar to tools that appeared years later.</li>
<li class="">Loved by users.</li>
<li class="">Politely ignored by academia.</li>
</ul>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="20052010--the-file-system-state-machine">2005–2010 — The File System State Machine<a href="https://blog.subzerodev.com/selected-incidents#20052010--the-file-system-state-machine" class="hash-link" aria-label="Direct link to 2005–2010 — The File System State Machine" title="Direct link to 2005–2010 — The File System State Machine" translate="no">​</a></h3>
<ul>
<li class="">Invented a watch-directory workflow using file extensions as state.</li>
<li class="">No database.</li>
<li class="">Later patented.</li>
<li class="">Multiple names added.</li>
<li class="">None were mine.</li>
</ul>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="20102018--the-yaml-incident">2010–2018 — The YAML Incident<a href="https://blog.subzerodev.com/selected-incidents#20102018--the-yaml-incident" class="hash-link" aria-label="Direct link to 2010–2018 — The YAML Incident" title="Direct link to 2010–2018 — The YAML Incident" translate="no">​</a></h3>
<ul>
<li class="">Entered an org with ~400 GUI-configured pipelines.</li>
<li class="">Replaced them with YAML.</li>
<li class="">Triggered architectural reviews.</li>
<li class="">Learned scale can be emotionally threatening.</li>
</ul>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="2018--the-you-can-do-that-moment">2018 — The “You Can Do That?” Moment<a href="https://blog.subzerodev.com/selected-incidents#2018--the-you-can-do-that-moment" class="hash-link" aria-label="Direct link to 2018 — The “You Can Do That?” Moment" title="Direct link to 2018 — The “You Can Do That?” Moment" translate="no">​</a></h3>
<ul>
<li class="">Built request-blocking WebAPI filters before controllers executed.</li>
<li class="">Checked Kubernetes cluster health pre-request.</li>
<li class="">Revealed undocumented assumptions in the system.</li>
</ul>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="ongoing--the-recruiter-disbelief-loop">Ongoing — The Recruiter Disbelief Loop<a href="https://blog.subzerodev.com/selected-incidents#ongoing--the-recruiter-disbelief-loop" class="hash-link" aria-label="Direct link to Ongoing — The Recruiter Disbelief Loop" title="Direct link to Ongoing — The Recruiter Disbelief Loop" translate="no">​</a></h3>
<ul>
<li class="">CV flagged as “too much.”</li>
<li class="">Accused of exaggeration.</li>
<li class="">Pattern repeats.</li>
<li class="">Signal remains unchanged.</li>
</ul>
<hr>
<blockquote>
<p>This list will grow.
Not because I’m collecting trophies,
but because this keeps happening.</p>
</blockquote>
<blockquote>
<p><strong>Ahead of the rubric</strong> isn’t an identity.
It’s an occupational hazard.</p>
</blockquote>]]></content:encoded>
            <category>Stories</category>
            <category>Ahead of the Rubric</category>
        </item>
        <item>
            <title><![CDATA[Ahead of the Rubric]]></title>
            <link>https://blog.subzerodev.com/ahead-of-the-rubric</link>
            <guid>https://blog.subzerodev.com/ahead-of-the-rubric</guid>
            <pubDate>Sat, 01 Aug 2026 15:00:00 GMT</pubDate>
            <description><![CDATA[An origin story spanning three decades of building things institutions weren't ready to grade.]]></description>
            <content:encoded><![CDATA[<p><em>(An Unreasonable Origin Story)</em></p>
<blockquote>
<p>I am not special.<br>
<!-- -->I just kept engaging.<br>
<!-- -->Repeatedly.<br>
<!-- -->For decades.</p>
</blockquote>
<blockquote>
<p>This wasn’t a phase.<br>
<!-- -->This pattern will repeat.</p>
</blockquote>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="origin-story-sidebar">Origin Story (Sidebar)<a href="https://blog.subzerodev.com/ahead-of-the-rubric#origin-story-sidebar" class="hash-link" aria-label="Direct link to Origin Story (Sidebar)" title="Direct link to Origin Story (Sidebar)" translate="no">​</a></h2>
<blockquote>
<p><strong>This is where it started.</strong></p>
</blockquote>
<p>In 1996–1997, my high-school C++ class assigned a final project.<br>
<!-- -->Everyone had to build <em>something</em>.</p>
<p>I built a <strong>music library management system</strong>.</p>
<p>It took months.<br>
<!-- -->It had real data structures.<br>
<!-- -->It actually worked.</p>
<p>When submission time came, the teacher insisted on printing all source code.<br>
<!-- -->Mine was just under <strong>100 pages</strong>.</p>
<p>Physically stacked.<br>
<!-- -->Audibly intimidating.</p>
<p>I received a <strong>95</strong>.</p>
<p>Points were deducted for <em>“not enough comments.”</em></p>
<p>That was my first lesson in how institutions reward effort.</p>
<p>I later received an <strong>award for exceptional student</strong> from the same class.<br>
<!-- -->Apparently excellence was real — just not enough for a perfect score.</p>
<p>The following year at university, we used the <strong>same C++ textbook</strong>.<br>
<!-- -->I aced everything without trying.<br>
<!-- -->The professor asked me to help other students.</p>
<p>Turns out I wasn’t bad at C++.<br>
<!-- -->I was just <strong>ahead of the rubric</strong>.</p>
<p>Keep that phrase in mind. It comes back.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="section-i--early-damage">Section I — Early Damage<a href="https://blog.subzerodev.com/ahead-of-the-rubric#section-i--early-damage" class="hash-link" aria-label="Direct link to Section I — Early Damage" title="Direct link to Section I — Early Damage" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="19921996-childhood-was-a-configuration-error">1992–1996: Childhood Was a Configuration Error<a href="https://blog.subzerodev.com/ahead-of-the-rubric#19921996-childhood-was-a-configuration-error" class="hash-link" aria-label="Direct link to 1992–1996: Childhood Was a Configuration Error" title="Direct link to 1992–1996: Childhood Was a Configuration Error" translate="no">​</a></h3>
<ul>
<li class="">Learned to program on a <strong>Sinclair ZX81 clone</strong> (Soviet edition).<!-- -->
<ul>
<li class=""><strong>48KB RAM</strong></li>
<li class="">Programs loaded from <strong>cassette tapes</strong></li>
<li class="">Silence where the internet should have been</li>
</ul>
</li>
<li class="">Built <strong>Tic-Tac-Toe</strong> in monochrome Quick BASIC.</li>
</ul>
<p>It worked.<br>
<!-- -->Dopamine unlocked.</p>
<blockquote>
<p>In retrospect, an adult should have intervened.</p>
</blockquote>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="section-ii--the-web-before-it-was-a-career">Section II — The Web, Before It Was a Career<a href="https://blog.subzerodev.com/ahead-of-the-rubric#section-ii--the-web-before-it-was-a-career" class="hash-link" aria-label="Direct link to Section II — The Web, Before It Was a Career" title="Direct link to Section II — The Web, Before It Was a Career" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="19972005-suspicious-behavior">1997–2005: Suspicious Behavior<a href="https://blog.subzerodev.com/ahead-of-the-rubric#19972005-suspicious-behavior" class="hash-link" aria-label="Direct link to 1997–2005: Suspicious Behavior" title="Direct link to 1997–2005: Suspicious Behavior" translate="no">​</a></h3>
<ul>
<li class="">Built an <strong>online portfolio using Dreamweaver</strong>.<!-- -->
<ul>
<li class="">Projects</li>
<li class="">Screenshots</li>
<li class="">CV</li>
<li class="">Contact form</li>
</ul>
</li>
</ul>
<p>This was:</p>
<ul>
<li class="">before LinkedIn,</li>
<li class="">before “personal branding,”</li>
<li class="">before anyone thought this was normal.</li>
</ul>
<p>I still have it.<br>
<!-- -->Somewhere.<br>
<!-- -->Fossilized.<br>
<!-- -->Still valid HTML.</p>
<blockquote>
<p>Back then, having a website meant you were either dangerous or unemployed.<br>
<!-- -->Sometimes both.</p>
</blockquote>
<p>Again: ahead of the rubric.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="section-iii--academia-briefly">Section III — Academia, Briefly<a href="https://blog.subzerodev.com/ahead-of-the-rubric#section-iii--academia-briefly" class="hash-link" aria-label="Direct link to Section III — Academia, Briefly" title="Direct link to Section III — Academia, Briefly" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="20002001-university-but-make-it-useful">2000–2001: University, But Make It Useful<a href="https://blog.subzerodev.com/ahead-of-the-rubric#20002001-university-but-make-it-useful" class="hash-link" aria-label="Direct link to 2000–2001: University, But Make It Useful" title="Direct link to 2000–2001: University, But Make It Useful" translate="no">​</a></h3>
<ul>
<li class="">Worked for the <strong>Alfred University Web Team</strong>.<!-- -->
<ul>
<li class="">Everything in <strong>ColdFusion</strong>.</li>
<li class="">And yes — it was <em>glorious</em>.</li>
</ul>
</li>
<li class="">Built real production systems while others wrote theory papers.</li>
</ul>
<p>Final Computer Science project:</p>
<ul>
<li class=""><strong>Web Site Development Wizard</strong></li>
<li class="">A <strong>Perl / CGI single-page app</strong></li>
<li class="">Faculty entered:<!-- -->
<ul>
<li class="">text,</li>
<li class="">colors,</li>
<li class="">layouts</li>
</ul>
</li>
<li class="">Script generated complete websites automatically.</li>
</ul>
<p>This was <strong>before</strong>:</p>
<ul>
<li class="">Squarespace</li>
<li class="">Wix</li>
<li class="">WordPress</li>
<li class="">“No-code” became a religion</li>
</ul>
<p>Faculty loved it.<br>
<!-- -->Academia nodded politely.<br>
<!-- -->The industry reinvented it later and called it innovation.</p>
<blockquote>
<p>Nobody asked me to do this.<br>
<!-- -->I just noticed the gap.</p>
</blockquote>
<p>Ahead of the rubric. Again.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="section-iv--video-pain-and-poor-life-choices">Section IV — Video, Pain, and Poor Life Choices<a href="https://blog.subzerodev.com/ahead-of-the-rubric#section-iv--video-pain-and-poor-life-choices" class="hash-link" aria-label="Direct link to Section IV — Video, Pain, and Poor Life Choices" title="Direct link to Section IV — Video, Pain, and Poor Life Choices" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="20052010">2005–2010<a href="https://blog.subzerodev.com/ahead-of-the-rubric#20052010" class="hash-link" aria-label="Direct link to 2005–2010" title="Direct link to 2005–2010" translate="no">​</a></h3>
<ul>
<li class="">Built a <strong>video CMS installer</strong>.<!-- -->
<ul>
<li class="">Reduced install time from <strong>6 hours to 30 minutes</strong>.</li>
</ul>
</li>
<li class="">Wrote a service using <strong><code>mplayer</code></strong> to extract frames from any video format known to man.<!-- -->
<ul>
<li class="">This was easier than it sounds.</li>
<li class="">Which should concern you.</li>
</ul>
</li>
<li class="">Built <strong>Prototype.js / Scriptaculous plugins</strong> for video embedding.<!-- -->
<ul>
<li class="">Early YouTube vibes.</li>
<li class="">Emotional damage guaranteed.</li>
</ul>
</li>
<li class="">Invented a <strong>watch-directory processing system</strong>.<!-- -->
<ul>
<li class="">File system as state machine</li>
<li class="">No database</li>
<li class="">Patented later</li>
<li class="">Six other people added their names</li>
<li class="">Naturally.</li>
</ul>
</li>
</ul>
<blockquote>
<p>You’d think this was the peak.<br>
<!-- -->It wasn’t.</p>
</blockquote>
<p>Still ahead of the rubric.<br>
<!-- -->Now the rubric was just running to catch up.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="section-v--cicd-before-it-was-fashionable">Section V — CI/CD Before It Was Fashionable<a href="https://blog.subzerodev.com/ahead-of-the-rubric#section-v--cicd-before-it-was-fashionable" class="hash-link" aria-label="Direct link to Section V — CI/CD Before It Was Fashionable" title="Direct link to Section V — CI/CD Before It Was Fashionable" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="20102018">2010–2018<a href="https://blog.subzerodev.com/ahead-of-the-rubric#20102018" class="hash-link" aria-label="Direct link to 2010–2018" title="Direct link to 2010–2018" translate="no">​</a></h3>
<ul>
<li class="">Loved <strong>CruiseControl.NET</strong>.<!-- -->
<ul>
<li class="">Still do.</li>
</ul>
</li>
<li class="">Built adapters that:<!-- -->
<ul>
<li class="">drove office TVs,</li>
<li class="">played sounds,</li>
<li class="">made builds <em>performative</em>.</li>
</ul>
</li>
<li class="">Joined a company with:<!-- -->
<ul>
<li class="">60 developers</li>
<li class="">8 teams</li>
<li class="">~400 GUI Azure DevOps pipelines</li>
</ul>
</li>
<li class="">Replaced them with <strong>YAML</strong>.</li>
</ul>
<p>Result:</p>
<ul>
<li class="">Architecture review</li>
<li class="">Manager</li>
<li class="">Division head</li>
<li class="">Confusion</li>
</ul>
<blockquote>
<p>“Wait… you can do this?”<br>
<!-- -->“…you couldn’t?”</p>
</blockquote>
<p>Ahead of the rubric — and apparently the org chart.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="section-vi--its-just-an-api">Section VI — “It’s Just an API”<a href="https://blog.subzerodev.com/ahead-of-the-rubric#section-vi--its-just-an-api" class="hash-link" aria-label="Direct link to Section VI — “It’s Just an API”" title="Direct link to Section VI — “It’s Just an API”" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="2018present">2018–Present<a href="https://blog.subzerodev.com/ahead-of-the-rubric#2018present" class="hash-link" aria-label="Direct link to 2018–Present" title="Direct link to 2018–Present" translate="no">​</a></h3>
<ul>
<li class="">Built <strong>ASP.NET WebAPI filters</strong> that ran before controllers.<!-- -->
<ul>
<li class="">Checked Kubernetes cluster health</li>
<li class="">Blocked requests preemptively</li>
</ul>
</li>
</ul>
<p>Reaction:</p>
<blockquote>
<p>“You can do that??”</p>
</blockquote>
<p>Me:</p>
<blockquote>
<p>“Once you know the contract…”</p>
</blockquote>
<p>This is where most people discover limits.<br>
<!-- -->I discovered curiosity.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="section-vii--side-quests--accidental-audits">Section VII — Side Quests &amp; Accidental Audits<a href="https://blog.subzerodev.com/ahead-of-the-rubric#section-vii--side-quests--accidental-audits" class="hash-link" aria-label="Direct link to Section VII — Side Quests &amp; Accidental Audits" title="Direct link to Section VII — Side Quests &amp; Accidental Audits" translate="no">​</a></h2>
<ul>
<li class="">Opened <strong>GitKraken’s source</strong>, found a bug, reported it.<!-- -->
<ul>
<li class="">Found a banner saying:<!-- -->
<blockquote>
<p>“If you’re reading this, apply.”</p>
</blockquote>
</li>
<li class="">Applied.</li>
</ul>
</li>
<li class="">Applied to a VR store.<!-- -->
<ul>
<li class="">Noticed no <strong>WinGet package</strong></li>
<li class="">Built one</li>
<li class="">Submitted it</li>
<li class="">Then applied</li>
</ul>
</li>
<li class="">They offered €50k.<!-- -->
<ul>
<li class="">I declined.</li>
<li class="">That was a 2004 salary.</li>
</ul>
</li>
</ul>
<blockquote>
<p>This is usually the point where people ask if I’m exaggerating.</p>
</blockquote>
<p>I’m not.<br>
<!-- -->I was just early. Again.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="constants-aka-the-pattern">Constants (a.k.a. The Pattern)<a href="https://blog.subzerodev.com/ahead-of-the-rubric#constants-aka-the-pattern" class="hash-link" aria-label="Direct link to Constants (a.k.a. The Pattern)" title="Direct link to Constants (a.k.a. The Pattern)" translate="no">​</a></h2>
<ul>
<li class="">I don’t read the docs first.</li>
<li class="">I don’t get stuck.</li>
<li class="">I forget more systems than most people build.</li>
<li class="">When someone says:<!-- -->
<blockquote>
<p>“You can’t do that”
My internal response is:
“Hold my beer.”</p>
</blockquote>
</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="closing">Closing<a href="https://blog.subzerodev.com/ahead-of-the-rubric#closing" class="hash-link" aria-label="Direct link to Closing" title="Direct link to Closing" translate="no">​</a></h2>
<p>None of this makes me special.</p>
<p>It just means I kept moving.<br>
<!-- -->Sometimes broken.<br>
<!-- -->Sometimes tired.<br>
<!-- -->Sometimes furious.</p>
<p>Never resigned.</p>
<blockquote>
<p><strong>Ahead of the rubric</strong> isn’t a boast.<br>
<!-- -->It’s a diagnosis.</p>
</blockquote>]]></content:encoded>
            <category>Stories</category>
            <category>Philosophy</category>
            <category>Ahead of the Rubric</category>
        </item>
        <item>
            <title><![CDATA[For Humans]]></title>
            <link>https://blog.subzerodev.com/for-humans</link>
            <guid>https://blog.subzerodev.com/for-humans</guid>
            <pubDate>Sat, 01 Aug 2026 14:40:00 GMT</pubDate>
            <description><![CDATA[A one-page, non-corporate summary of how someone ends up ahead of every rubric they're handed.]]></description>
            <content:encoded><![CDATA[<p><em>(A One-Page Summary)</em></p>
<blockquote>
<p>This page is for people.<br>
<!-- -->Not systems.<br>
<!-- -->Not filters.<br>
<!-- -->Not checklists.</p>
</blockquote>
<p>If you’re looking for:</p>
<ul>
<li class="">a keyword match,</li>
<li class="">a linear career path,</li>
<li class="">or a tidy progression of titles,</li>
</ul>
<p>this is not for you.</p>
<p>If you’re curious how someone ends up:</p>
<ul>
<li class="">building systems before they’re fashionable,</li>
<li class="">confusing recruiters,</li>
<li class="">and outgrowing rubrics faster than institutions can update them,</li>
</ul>
<p>keep reading.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="the-short-version">The Short Version<a href="https://blog.subzerodev.com/for-humans#the-short-version" class="hash-link" aria-label="Direct link to The Short Version" title="Direct link to The Short Version" translate="no">​</a></h2>
<p>I build things.</p>
<p>Not because I’m special.<br>
<!-- -->Not because I planned it.<br>
<!-- -->Not because it was a career move.</p>
<p>I just kept engaging.</p>
<p>When something felt rigid, I tested it.<br>
<!-- -->When someone said “you can’t,” I checked the contract.<br>
<!-- -->When a system got stuck, I didn’t.</p>
<p>This has been happening since:</p>
<ul>
<li class="">cassette tapes were storage,</li>
<li class="">“having a website” was suspicious,</li>
<li class="">and CI/CD didn’t have a name yet.</li>
</ul>
<p>The pattern has a name now:</p>
<p><strong>Ahead of the rubric.</strong></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="what-that-actually-means">What That Actually Means<a href="https://blog.subzerodev.com/for-humans#what-that-actually-means" class="hash-link" aria-label="Direct link to What That Actually Means" title="Direct link to What That Actually Means" translate="no">​</a></h2>
<p>“Ahead of the rubric” doesn’t mean smarter.<br>
<!-- -->It means <strong>misaligned with evaluation systems</strong>.</p>
<p>It looks like:</p>
<ul>
<li class="">building the thing before the assignment exists,</li>
<li class="">solving the problem before the role is defined,</li>
<li class="">being penalized for depth,</li>
<li class="">then quietly validated later when the world catches up.</li>
</ul>
<p>This has happened:</p>
<ul>
<li class="">in school,</li>
<li class="">in universities,</li>
<li class="">in companies,</li>
<li class="">in tooling,</li>
<li class="">in architecture,</li>
<li class="">repeatedly.</li>
</ul>
<p>You can read the full origin story here:<br>
<!-- -->→ <strong><a class="" href="https://blog.subzerodev.com/ahead-of-the-rubric">Ahead of the Rubric — The Full Timeline</a></strong></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="what-im-good-at-without-the-buzzwords">What I’m Good At (Without the Buzzwords)<a href="https://blog.subzerodev.com/for-humans#what-im-good-at-without-the-buzzwords" class="hash-link" aria-label="Direct link to What I’m Good At (Without the Buzzwords)" title="Direct link to What I’m Good At (Without the Buzzwords)" translate="no">​</a></h2>
<ul>
<li class="">Seeing gaps early.</li>
<li class="">Building systems that don’t get stuck.</li>
<li class="">Making tools do things they weren’t “meant” to do.</li>
<li class="">Translating curiosity into working code.</li>
<li class="">Operating comfortably where structure hasn’t arrived yet.</li>
</ul>
<p>I don’t optimize for:</p>
<ul>
<li class="">titles,</li>
<li class="">prestige,</li>
<li class="">or looking impressive on paper.</li>
</ul>
<p>I optimize for:</p>
<ul>
<li class="">momentum,</li>
<li class="">leverage,</li>
<li class="">and systems that keep moving.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="how-to-read-the-rest-of-this-site">How to Read the Rest of This Site<a href="https://blog.subzerodev.com/for-humans#how-to-read-the-rest-of-this-site" class="hash-link" aria-label="Direct link to How to Read the Rest of This Site" title="Direct link to How to Read the Rest of This Site" translate="no">​</a></h2>
<ul>
<li class="">If you want the <strong>story</strong> → read the timeline.</li>
<li class="">If you want <strong>receipts</strong> → skim the incidents.</li>
<li class="">If you want <strong>certainty</strong> → you won’t find it here.</li>
<li class="">If you want <strong>signal</strong> → you probably already see it.</li>
</ul>
<p>This is not a success story.</p>
<p>It’s a persistence one.</p>
<p>Welcome.</p>]]></content:encoded>
            <category>Stories</category>
            <category>Philosophy</category>
            <category>Ahead of the Rubric</category>
        </item>
        <item>
            <title><![CDATA[Docker Run vs. Docker Compose]]></title>
            <link>https://blog.subzerodev.com/docker-run-vs-docker-compose</link>
            <guid>https://blog.subzerodev.com/docker-run-vs-docker-compose</guid>
            <pubDate>Sat, 01 Aug 2026 14:20:00 GMT</pubDate>
            <description><![CDATA[When to reach for a quick docker run versus a reusable Docker Compose setup, with side-by-side examples.]]></description>
            <content:encoded><![CDATA[<p>At some point, every beginner runs into this question:</p>
<blockquote>
<p>Should I use <code>docker run</code>, or should I use Docker Compose?</p>
</blockquote>
<p>The practical answer is simple:</p>
<ul>
<li class="">Use <strong><code>docker run</code></strong> when you want to start <strong>one container quickly</strong></li>
<li class="">Use <strong>Docker Compose</strong> when you want to define and manage <strong>one or more containers as a reusable setup</strong></li>
</ul>
<p>You can think of it like this:</p>
<ul>
<li class=""><code>docker run</code> = one command, typed by hand</li>
<li class=""><code>docker compose</code> = a saved recipe in a <code>docker-compose.yml</code> file</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="when-to-use-each-one">When to use each one<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#when-to-use-each-one" class="hash-link" aria-label="Direct link to When to use each one" title="Direct link to When to use each one" translate="no">​</a></h2>
<table><thead><tr><th>Use case</th><th>Better choice</th></tr></thead><tbody><tr><td>Quick test</td><td><code>docker run</code></td></tr><tr><td>Learning basic flags</td><td><code>docker run</code></td></tr><tr><td>Reusable setup</td><td>Docker Compose</td></tr><tr><td>Multi-container app</td><td>Docker Compose</td></tr><tr><td>Team sharing</td><td>Docker Compose</td></tr><tr><td>Easier updates</td><td>Docker Compose</td></tr></tbody></table>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="visual-difference">Visual difference<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#visual-difference" class="hash-link" aria-label="Direct link to Visual difference" title="Direct link to Visual difference" translate="no">​</a></h2>
<div class="language-mermaid codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-mermaid codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">flowchart LR</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    A[docker run] --&gt; B[One command typed manually]</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    B --&gt; C[One container starts]</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    D[docker compose] --&gt; E[YAML file defines services]</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    E --&gt; F[One command starts full stack]</span><br></div></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="install-docker-compose">Install Docker Compose<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#install-docker-compose" class="hash-link" aria-label="Direct link to Install Docker Compose" title="Direct link to Install Docker Compose" translate="no">​</a></h2>
<p>If you installed Docker Desktop, Compose is already included as <code>docker compose</code>.</p>
<p>If you want to install it explicitly:</p>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">winget install -e --id Docker.DockerCompose</span><br></div></code></pre></div></div>
<p>Verify:</p>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker compose version</span><br></div></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="simple-example-with-docker-run">Simple example with docker run<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#simple-example-with-docker-run" class="hash-link" aria-label="Direct link to Simple example with docker run" title="Direct link to Simple example with docker run" translate="no">​</a></h2>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker run -d `</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  --name my-nginx `</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  -p 8080:80 `</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  --restart unless-stopped `</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  nginx</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="parameters-explained">Parameters explained<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#parameters-explained" class="hash-link" aria-label="Direct link to Parameters explained" title="Direct link to Parameters explained" translate="no">​</a></h3>
<ul>
<li class=""><code>-d</code> → run in background</li>
<li class=""><code>--name</code> → container name</li>
<li class=""><code>-p</code> → port mapping (host<!-- -->:container<!-- -->)</li>
<li class=""><code>--restart</code> → restart policy</li>
<li class=""><code>nginx</code> → image</li>
</ul>
<p>Open:
<a href="http://localhost:8080/" target="_blank" rel="noopener noreferrer" class="">http://localhost:8080</a></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="same-setup-with-docker-compose">Same setup with Docker Compose<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#same-setup-with-docker-compose" class="hash-link" aria-label="Direct link to Same setup with Docker Compose" title="Direct link to Same setup with Docker Compose" translate="no">​</a></h2>
<div class="language-yaml codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-yaml codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token key atrule">services</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">nginx</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">image</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> nginx</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">container_name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> my</span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain">nginx</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">ports</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">"8080:80"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">restart</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> unless</span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain">stopped</span><br></div></code></pre></div></div>
<p>Run:</p>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker compose up -d</span><br></div></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="why-compose-is-better-here">Why Compose is better here<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#why-compose-is-better-here" class="hash-link" aria-label="Direct link to Why Compose is better here" title="Direct link to Why Compose is better here" translate="no">​</a></h2>
<ul>
<li class="">No need to remember long commands</li>
<li class="">Easy to edit and reuse</li>
<li class="">Shareable config</li>
<li class="">Cleaner structure</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="advanced-example--portainer-docker-run">Advanced example — Portainer (docker run)<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#advanced-example--portainer-docker-run" class="hash-link" aria-label="Direct link to Advanced example — Portainer (docker run)" title="Direct link to Advanced example — Portainer (docker run)" translate="no">​</a></h2>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker volume create portainer_data</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker run -d `</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  --name portainer `</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  -p 9000:9000 `</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  --restart always `</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  -v /var/run/docker.sock:/var/run/docker.sock `</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  -v portainer_data:/data `</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  portainer/portainer-ce</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="parameters-explained-1">Parameters explained<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#parameters-explained-1" class="hash-link" aria-label="Direct link to Parameters explained" title="Direct link to Parameters explained" translate="no">​</a></h3>
<ul>
<li class=""><code>docker volume create</code> → persistent storage</li>
<li class=""><code>-v host:container</code> → mount volume</li>
<li class=""><code>/var/run/docker.sock</code> → allows Portainer to control Docker</li>
<li class=""><code>portainer_data:/data</code> → saves app data</li>
<li class=""><code>--restart always</code> → auto restart</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="same-portainer-setup-with-docker-compose">Same Portainer setup with Docker Compose<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#same-portainer-setup-with-docker-compose" class="hash-link" aria-label="Direct link to Same Portainer setup with Docker Compose" title="Direct link to Same Portainer setup with Docker Compose" translate="no">​</a></h2>
<div class="language-yaml codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-yaml codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token key atrule">services</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token key atrule">portainer</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">image</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> portainer/portainer</span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain">ce</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">container_name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> portainer</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">ports</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">"9000:9000"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">restart</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> always</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token key atrule">volumes</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain"> /var/run/docker.sock</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain">/var/run/docker.sock</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(199, 146, 234)">-</span><span class="token plain"> portainer_data</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain">/data</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token key atrule">volumes</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  portainer_data</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><br></div></code></pre></div></div>
<p>Run:</p>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker compose up -d</span><br></div></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="docker-compose-commands"><code>docker compose</code> commands<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#docker-compose-commands" class="hash-link" aria-label="Direct link to docker-compose-commands" title="Direct link to docker-compose-commands" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="start">Start<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#start" class="hash-link" aria-label="Direct link to Start" title="Direct link to Start" translate="no">​</a></h3>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker compose up</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="start-background">Start (background)<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#start-background" class="hash-link" aria-label="Direct link to Start (background)" title="Direct link to Start (background)" translate="no">​</a></h3>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker compose up -d</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="stop--remove">Stop &amp; remove<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#stop--remove" class="hash-link" aria-label="Direct link to Stop &amp; remove" title="Direct link to Stop &amp; remove" translate="no">​</a></h3>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker compose down</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="remove-including-volumes">Remove including volumes<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#remove-including-volumes" class="hash-link" aria-label="Direct link to Remove including volumes" title="Direct link to Remove including volumes" translate="no">​</a></h3>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker compose down -v</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="restart">Restart<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#restart" class="hash-link" aria-label="Direct link to Restart" title="Direct link to Restart" translate="no">​</a></h3>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker compose restart</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="stop-only">Stop only<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#stop-only" class="hash-link" aria-label="Direct link to Stop only" title="Direct link to Stop only" translate="no">​</a></h3>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker compose stop</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="start-stopped-services">Start stopped services<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#start-stopped-services" class="hash-link" aria-label="Direct link to Start stopped services" title="Direct link to Start stopped services" translate="no">​</a></h3>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker compose start</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="status">Status<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#status" class="hash-link" aria-label="Direct link to Status" title="Direct link to Status" translate="no">​</a></h3>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker compose ps</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="logs">Logs<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#logs" class="hash-link" aria-label="Direct link to Logs" title="Direct link to Logs" translate="no">​</a></h3>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker compose logs</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="follow-logs">Follow logs<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#follow-logs" class="hash-link" aria-label="Direct link to Follow logs" title="Direct link to Follow logs" translate="no">​</a></h3>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker compose logs -f</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="pull-updates">Pull updates<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#pull-updates" class="hash-link" aria-label="Direct link to Pull updates" title="Direct link to Pull updates" translate="no">​</a></h3>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker compose pull</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="rebuild">Rebuild<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#rebuild" class="hash-link" aria-label="Direct link to Rebuild" title="Direct link to Rebuild" translate="no">​</a></h3>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker compose up --build</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="force-recreate">Force recreate<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#force-recreate" class="hash-link" aria-label="Direct link to Force recreate" title="Direct link to Force recreate" translate="no">​</a></h3>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker compose up -d --force-recreate</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="remove-orphan-containers">Remove orphan containers<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#remove-orphan-containers" class="hash-link" aria-label="Direct link to Remove orphan containers" title="Direct link to Remove orphan containers" translate="no">​</a></h3>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker compose up -d --remove-orphans</span><br></div></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="restart-policies">Restart policies<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#restart-policies" class="hash-link" aria-label="Direct link to Restart policies" title="Direct link to Restart policies" translate="no">​</a></h2>
<p>In <code>docker run</code>:</p>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">--restart always</span><br></div></code></pre></div></div>
<p>In Compose:</p>
<div class="language-yaml codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-yaml codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token key atrule">restart</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"> always</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="types">Types<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#types" class="hash-link" aria-label="Direct link to Types" title="Direct link to Types" translate="no">​</a></h3>
<ul>
<li class=""><code>no</code></li>
<li class=""><code>always</code></li>
<li class=""><code>unless-stopped</code></li>
<li class=""><code>on-failure</code></li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="final-takeaway">Final takeaway<a href="https://blog.subzerodev.com/docker-run-vs-docker-compose#final-takeaway" class="hash-link" aria-label="Direct link to Final takeaway" title="Direct link to Final takeaway" translate="no">​</a></h2>
<ul>
<li class="">Use <code>docker run</code> for quick tests</li>
<li class="">Use Docker Compose for anything you want to keep</li>
</ul>
<p>That’s the real difference.</p>]]></content:encoded>
            <category>Development</category>
            <category>Docker</category>
        </item>
        <item>
            <title><![CDATA[Getting Started with Docker on Windows 11]]></title>
            <link>https://blog.subzerodev.com/getting-started-with-docker-on-windows-11</link>
            <guid>https://blog.subzerodev.com/getting-started-with-docker-on-windows-11</guid>
            <pubDate>Sat, 01 Aug 2026 14:00:00 GMT</pubDate>
            <description><![CDATA[A zero-to-running-containers walkthrough for Docker Desktop, WSL2, and Portainer on Windows 11.]]></description>
            <content:encoded><![CDATA[<p>This guide walks you from zero → running containers on Windows 11. No prior Docker knowledge needed.</p>
<p>We’ll cover:</p>
<ul>
<li class="">What Docker is (in plain English)</li>
<li class="">Setting up WSL (required)</li>
<li class="">Installing Docker Desktop using <code>winget</code></li>
<li class="">Running your first container</li>
<li class="">Using Portainer as a visual UI</li>
<li class="">Core concepts you actually need</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="-what-is-docker-and-why-should-you-care">🧠 What is Docker (and why should you care?)<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#-what-is-docker-and-why-should-you-care" class="hash-link" aria-label="Direct link to 🧠 What is Docker (and why should you care?)" title="Direct link to 🧠 What is Docker (and why should you care?)" translate="no">​</a></h2>
<p>Docker lets you run applications in <strong>containers</strong> — lightweight, isolated environments that include everything the app needs to run.</p>
<p>Instead of:</p>
<blockquote>
<p>"It works on my machine"</p>
</blockquote>
<p>You get:</p>
<blockquote>
<p>"It works anywhere Docker runs"</p>
</blockquote>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="-how-docker-works-simplified">🧱 How Docker Works (Simplified)<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#-how-docker-works-simplified" class="hash-link" aria-label="Direct link to 🧱 How Docker Works (Simplified)" title="Direct link to 🧱 How Docker Works (Simplified)" translate="no">​</a></h2>
<div class="language-mermaid codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-mermaid codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">flowchart LR</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    A[Your App] --&gt; B[Docker Container]</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    B --&gt; C[Docker Engine]</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    C --&gt; D[WSL2 Linux Kernel]</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    D --&gt; E[Windows 11]</span><br></div></code></pre></div></div>
<p>Key idea:</p>
<ul>
<li class="">Docker uses Linux under the hood</li>
<li class="">On Windows → this is handled by WSL2</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="️-step-1--install-wsl-windows-subsystem-for-linux">⚙️ Step 1 — Install WSL (Windows Subsystem for Linux)<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#%EF%B8%8F-step-1--install-wsl-windows-subsystem-for-linux" class="hash-link" aria-label="Direct link to ⚙️ Step 1 — Install WSL (Windows Subsystem for Linux)" title="Direct link to ⚙️ Step 1 — Install WSL (Windows Subsystem for Linux)" translate="no">​</a></h2>
<p>Docker Desktop depends on WSL.</p>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="run-this-in-powershell-admin">Run this in PowerShell (Admin):<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#run-this-in-powershell-admin" class="hash-link" aria-label="Direct link to Run this in PowerShell (Admin):" title="Direct link to Run this in PowerShell (Admin):" translate="no">​</a></h3>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">wsl --install</span><br></div></code></pre></div></div>
<p>This will:</p>
<ul>
<li class="">Enable WSL</li>
<li class="">Install a Linux distro (usually Ubuntu)</li>
<li class="">Set WSL2 as default</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="then-restart-your-pc">Then restart your PC<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#then-restart-your-pc" class="hash-link" aria-label="Direct link to Then restart your PC" title="Direct link to Then restart your PC" translate="no">​</a></h3>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="verify-wsl-is-working">Verify WSL is working:<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#verify-wsl-is-working" class="hash-link" aria-label="Direct link to Verify WSL is working:" title="Direct link to Verify WSL is working:" translate="no">​</a></h3>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">wsl --status</span><br></div></code></pre></div></div>
<p>You should see:</p>
<ul>
<li class="">Default Version: 2</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="-step-2--install-docker-desktop-using-winget">🐳 Step 2 — Install Docker Desktop using Winget<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#-step-2--install-docker-desktop-using-winget" class="hash-link" aria-label="Direct link to 🐳 Step 2 — Install Docker Desktop using Winget" title="Direct link to 🐳 Step 2 — Install Docker Desktop using Winget" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="run">Run:<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#run" class="hash-link" aria-label="Direct link to Run:" title="Direct link to Run:" translate="no">​</a></h3>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">winget install -e --id Docker.DockerDesktop</span><br></div></code></pre></div></div>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="after-installation">After installation:<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#after-installation" class="hash-link" aria-label="Direct link to After installation:" title="Direct link to After installation:" translate="no">​</a></h3>
<ol>
<li class="">Launch Docker Desktop</li>
<li class="">Accept the license</li>
<li class="">Let it finish setup (it may restart WSL)</li>
</ol>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="verify-docker-is-running">Verify Docker is running:<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#verify-docker-is-running" class="hash-link" aria-label="Direct link to Verify Docker is running:" title="Direct link to Verify Docker is running:" translate="no">​</a></h3>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker --version</span><br></div></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="-step-3--run-your-first-container">🚀 Step 3 — Run Your First Container<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#-step-3--run-your-first-container" class="hash-link" aria-label="Direct link to 🚀 Step 3 — Run Your First Container" title="Direct link to 🚀 Step 3 — Run Your First Container" translate="no">​</a></h2>
<p>Let’s run the classic test:</p>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker run hello-world</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="what-just-happened">What just happened?<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#what-just-happened" class="hash-link" aria-label="Direct link to What just happened?" title="Direct link to What just happened?" translate="no">​</a></h3>
<div class="language-mermaid codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-mermaid codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">sequenceDiagram</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    participant You</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    participant Docker</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    participant DockerHub</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    participant Container</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    You-&gt;&gt;Docker: run hello-world</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    Docker-&gt;&gt;DockerHub: download image</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    DockerHub--&gt;&gt;Docker: image returned</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    Docker-&gt;&gt;Container: start container</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    Container--&gt;&gt;You: success message</span><br></div></code></pre></div></div>
<p>If everything worked, you’ll see:</p>
<blockquote>
<p>"Hello from Docker!"</p>
</blockquote>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="-step-4--understanding-basic-concepts-no-fluff">📦 Step 4 — Understanding Basic Concepts (No fluff)<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#-step-4--understanding-basic-concepts-no-fluff" class="hash-link" aria-label="Direct link to 📦 Step 4 — Understanding Basic Concepts (No fluff)" title="Direct link to 📦 Step 4 — Understanding Basic Concepts (No fluff)" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="-image">🔹 Image<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#-image" class="hash-link" aria-label="Direct link to 🔹 Image" title="Direct link to 🔹 Image" translate="no">​</a></h3>
<p>A <strong>template</strong> for a container
Example: <code>nginx</code>, <code>postgres</code>, <code>hello-world</code></p>
<p>Think:</p>
<blockquote>
<p>Blueprint</p>
</blockquote>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="-container">🔹 Container<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#-container" class="hash-link" aria-label="Direct link to 🔹 Container" title="Direct link to 🔹 Container" translate="no">​</a></h3>
<p>A <strong>running instance</strong> of an image</p>
<p>Think:</p>
<blockquote>
<p>A live app created from the blueprint</p>
</blockquote>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="-docker-hub">🔹 Docker Hub<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#-docker-hub" class="hash-link" aria-label="Direct link to 🔹 Docker Hub" title="Direct link to 🔹 Docker Hub" translate="no">​</a></h3>
<p>Public registry where images live</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="-volume">🔹 Volume<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#-volume" class="hash-link" aria-label="Direct link to 🔹 Volume" title="Direct link to 🔹 Volume" translate="no">​</a></h3>
<p>Persistent storage for containers</p>
<p>Without volumes:</p>
<blockquote>
<p>Data disappears when container stops</p>
</blockquote>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="-step-5--install-portainer-visual-ui-for-docker">🧰 Step 5 — Install Portainer (Visual UI for Docker)<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#-step-5--install-portainer-visual-ui-for-docker" class="hash-link" aria-label="Direct link to 🧰 Step 5 — Install Portainer (Visual UI for Docker)" title="Direct link to 🧰 Step 5 — Install Portainer (Visual UI for Docker)" translate="no">​</a></h2>
<p>Portainer gives you:</p>
<ul>
<li class="">Web UI</li>
<li class="">Container management</li>
<li class="">Logs, stats, configs</li>
</ul>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="option-a--docker-desktop-extension-easiest">Option A — Docker Desktop Extension (Easiest)<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#option-a--docker-desktop-extension-easiest" class="hash-link" aria-label="Direct link to Option A — Docker Desktop Extension (Easiest)" title="Direct link to Option A — Docker Desktop Extension (Easiest)" translate="no">​</a></h3>
<ol>
<li class="">Open Docker Desktop</li>
<li class="">Go to <strong>Extensions Marketplace</strong></li>
<li class="">Search for <strong>Portainer</strong></li>
<li class="">Click Install</li>
</ol>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="option-b--run-portainer-manually">Option B — Run Portainer manually<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#option-b--run-portainer-manually" class="hash-link" aria-label="Direct link to Option B — Run Portainer manually" title="Direct link to Option B — Run Portainer manually" translate="no">​</a></h3>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker volume create portainer_data</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker run -d `</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  -p 9000:9000 `</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  --name portainer `</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  --restart=always `</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  -v /var/run/docker.sock:/var/run/docker.sock `</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  -v portainer_data:/data `</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  portainer/portainer-ce</span><br></div></code></pre></div></div>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="access-portainer">Access Portainer<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#access-portainer" class="hash-link" aria-label="Direct link to Access Portainer" title="Direct link to Access Portainer" translate="no">​</a></h3>
<p>Open:
<a href="http://localhost:9000/" target="_blank" rel="noopener noreferrer" class="">http://localhost:9000</a></p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="how-portainer-fits-in">How Portainer Fits In<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#how-portainer-fits-in" class="hash-link" aria-label="Direct link to How Portainer Fits In" title="Direct link to How Portainer Fits In" translate="no">​</a></h3>
<div class="language-mermaid codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-mermaid codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">flowchart LR</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    A[You] --&gt; B[Portainer UI]</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    B --&gt; C[Docker Engine]</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    C --&gt; D[Containers]</span><br></div></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="-quick-example--run-a-web-server">⚡ Quick Example — Run a Web Server<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#-quick-example--run-a-web-server" class="hash-link" aria-label="Direct link to ⚡ Quick Example — Run a Web Server" title="Direct link to ⚡ Quick Example — Run a Web Server" translate="no">​</a></h2>
<div class="language-powershell codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-powershell codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">docker run -d -p 8080:80 nginx</span><br></div></code></pre></div></div>
<p>Then open:
<a href="http://localhost:8080/" target="_blank" rel="noopener noreferrer" class="">http://localhost:8080</a></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="-final-mental-model">🧭 Final Mental Model<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#-final-mental-model" class="hash-link" aria-label="Direct link to 🧭 Final Mental Model" title="Direct link to 🧭 Final Mental Model" translate="no">​</a></h2>
<ul>
<li class="">Docker = runtime</li>
<li class="">Image = blueprint</li>
<li class="">Container = running app</li>
<li class="">WSL = Linux layer on Windows</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="-youre-done">✅ You're Done<a href="https://blog.subzerodev.com/getting-started-with-docker-on-windows-11#-youre-done" class="hash-link" aria-label="Direct link to ✅ You're Done" title="Direct link to ✅ You're Done" translate="no">​</a></h2>
<p>You now have:</p>
<ul>
<li class="">Docker running on Windows 11</li>
<li class="">Your first container executed</li>
<li class="">A UI (Portainer) to manage everything</li>
</ul>
<p>That’s Docker.</p>]]></content:encoded>
            <category>Development</category>
            <category>Docker</category>
        </item>
        <item>
            <title><![CDATA[I Accidentally Automated Myself Into Being a Blogger]]></title>
            <link>https://blog.subzerodev.com/accidentally-built-an-ai-blogging-machine</link>
            <guid>https://blog.subzerodev.com/accidentally-built-an-ai-blogging-machine</guid>
            <pubDate>Sat, 01 Aug 2026 10:00:00 GMT</pubDate>
            <description><![CDATA[I set out to make publishing easier. Somewhere along the way I accidentally built a fully automated AI-assisted publishing pipeline.]]></description>
            <content:encoded><![CDATA[<p>Lucifer was staring at my GitHub activity.</p>
<p>Again.</p>
<p>He wasn't angry.</p>
<p>He looked...concerned.</p>
<blockquote>
<p>"Ben."</p>
</blockquote>
<p>"Yeah?"</p>
<blockquote>
<p>"I thought you were building a game engine."</p>
</blockquote>
<p>"I am."</p>
<blockquote>
<p>"Then why did you spend half the week building a blogging platform?"</p>
</blockquote>
<p>"So I could write about building the game engine."</p>
<p>Lucifer nodded slowly.</p>
<blockquote>
<p>"Reasonable."</p>
</blockquote>
<p>He paused.</p>
<blockquote>
<p>"Why did you then build an API for the blogging platform?"</p>
</blockquote>
<p>"So I don't have to open GitHub."</p>
<blockquote>
<p>"Naturally."</p>
</blockquote>
<p>Another pause.</p>
<blockquote>
<p>"Then why did you build an MCP server?"</p>
</blockquote>
<p>"So AI can publish the blog."</p>
<p>Lucifer pinched the bridge of his nose.</p>
<blockquote>
<p>"Of course."</p>
</blockquote>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="it-started-innocently">It Started Innocently<a href="https://blog.subzerodev.com/accidentally-built-an-ai-blogging-machine#it-started-innocently" class="hash-link" aria-label="Direct link to It Started Innocently" title="Direct link to It Started Innocently" translate="no">​</a></h2>
<p>Like all dangerous projects.</p>
<p>I wanted a blog.</p>
<p>Not WordPress.</p>
<p>Not Medium.</p>
<p>Not some SaaS that decides next Tuesday my account violates paragraph 14, subsection C.</p>
<p>Just Markdown.</p>
<p>Git.</p>
<p>GitHub.</p>
<p>Docusaurus.</p>
<p>Simple.</p>
<p>Write.</p>
<p>Commit.</p>
<p>Push.</p>
<p>Done.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="then-i-got-lazy">Then I Got Lazy<a href="https://blog.subzerodev.com/accidentally-built-an-ai-blogging-machine#then-i-got-lazy" class="hash-link" aria-label="Direct link to Then I Got Lazy" title="Direct link to Then I Got Lazy" translate="no">​</a></h2>
<p>Opening GitHub is exhausting.</p>
<p>You have to...</p>
<ul>
<li class="">create a file;</li>
<li class="">remember the naming convention;</li>
<li class="">copy front matter;</li>
<li class="">check tags;</li>
<li class="">preview it;</li>
<li class="">commit it;</li>
<li class="">wait for CI;</li>
<li class="">hope you didn't forget a colon somewhere.</li>
</ul>
<p>This is at least <strong>thirty-seven seconds</strong> of completely unnecessary human involvement.</p>
<p>Unacceptable.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="version-two">Version Two<a href="https://blog.subzerodev.com/accidentally-built-an-ai-blogging-machine#version-two" class="hash-link" aria-label="Direct link to Version Two" title="Direct link to Version Two" translate="no">​</a></h2>
<p>So naturally...</p>
<p>I built an API.</p>
<p>Now instead of opening GitHub...</p>
<p>I send Markdown.</p>
<p>API creates the file.</p>
<p>Done.</p>
<p>Lucifer watched quietly.</p>
<blockquote>
<p>"You're still writing the Markdown."</p>
</blockquote>
<p>"Correct."</p>
<blockquote>
<p>"I don't like where this is going."</p>
</blockquote>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="version-three">Version Three<a href="https://blog.subzerodev.com/accidentally-built-an-ai-blogging-machine#version-three" class="hash-link" aria-label="Direct link to Version Three" title="Direct link to Version Three" translate="no">​</a></h2>
<p>Now Claude and ChatGPT can generate the Markdown.</p>
<p>API publishes it.</p>
<p>CI builds it.</p>
<p>Cloudflare serves it.</p>
<p>Humans are becoming increasingly optional.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="version-four">Version Four<a href="https://blog.subzerodev.com/accidentally-built-an-ai-blogging-machine#version-four" class="hash-link" aria-label="Direct link to Version Four" title="Direct link to Version Four" translate="no">​</a></h2>
<p>Then I thought...</p>
<blockquote>
<p>"Why does the AI need to call an API?"</p>
</blockquote>
<p>That's ridiculous.</p>
<p>So...</p>
<p>I added an MCP server.</p>
<p>Now the AI can simply say:</p>
<blockquote>
<p>"Publish this."</p>
</blockquote>
<p>The tooling figures out the rest.</p>
<p>Lucifer looked up toward Heaven.</p>
<blockquote>
<p>"Father..."</p>
</blockquote>
<blockquote>
<p>"Yes?"</p>
</blockquote>
<blockquote>
<p>"He's teaching the machines how to write documentation."</p>
</blockquote>
<p>God smiled.</p>
<blockquote>
<p>"Excellent."</p>
</blockquote>
<p>Lucifer frowned.</p>
<blockquote>
<p>"You don't sound worried."</p>
</blockquote>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="then-something-weird-happened">Then Something Weird Happened<a href="https://blog.subzerodev.com/accidentally-built-an-ai-blogging-machine#then-something-weird-happened" class="hash-link" aria-label="Direct link to Then Something Weird Happened" title="Direct link to Then Something Weird Happened" translate="no">​</a></h2>
<p>I wrote a blog post.</p>
<p>ChatGPT converted it into my usual Lucifer voice.</p>
<p>Added Docusaurus front matter.</p>
<p>Generated the Markdown.</p>
<p>I pasted it into my repository.</p>
<p>Committed.</p>
<p>Pushed.</p>
<p>Thirty seconds later...</p>
<p>It was live.</p>
<p>On the public internet.</p>
<p>I sat there for a second.</p>
<p>Not because the AI wrote it.</p>
<p>That's almost expected now.</p>
<p>Because I realized...</p>
<p><strong>The writing wasn't the difficult part anymore.</strong></p>
<p>The entire pipeline had disappeared.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="the-real-project-was-never-the-blog">The Real Project Was Never the Blog<a href="https://blog.subzerodev.com/accidentally-built-an-ai-blogging-machine#the-real-project-was-never-the-blog" class="hash-link" aria-label="Direct link to The Real Project Was Never the Blog" title="Direct link to The Real Project Was Never the Blog" translate="no">​</a></h2>
<p>The blog was just an excuse.</p>
<p>The real project became reducing friction.</p>
<p>First:</p>
<div class="language-text codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-text codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Idea</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Open editor</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Write</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Format</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Create file</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Copy front matter</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Commit</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Push</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Wait</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Publish</span><br></div></code></pre></div></div>
<p>Now:</p>
<div class="language-text codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-text codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Idea</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Talk to AI</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Commit</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Done.</span><br></div></code></pre></div></div>
<p>Soon it'll become:</p>
<div class="language-text codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-text codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Idea</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">"Publish."</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">↓</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Done.</span><br></div></code></pre></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="this-is-the-interesting-part">This Is the Interesting Part<a href="https://blog.subzerodev.com/accidentally-built-an-ai-blogging-machine#this-is-the-interesting-part" class="hash-link" aria-label="Direct link to This Is the Interesting Part" title="Direct link to This Is the Interesting Part" translate="no">​</a></h2>
<p>Everyone keeps asking whether AI writes code.</p>
<p>Wrong question.</p>
<p>The interesting question is:</p>
<blockquote>
<p><strong>How many tiny pieces of friction can disappear?</strong></p>
</blockquote>
<p>Every individual improvement saves almost nothing.</p>
<p>Five seconds here.</p>
<p>Thirty seconds there.</p>
<p>A minute somewhere else.</p>
<p>None of them matter.</p>
<p>Until one day...</p>
<p>You realize an idea became a published article before your coffee cooled down.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="the-funny-part">The Funny Part<a href="https://blog.subzerodev.com/accidentally-built-an-ai-blogging-machine#the-funny-part" class="hash-link" aria-label="Direct link to The Funny Part" title="Direct link to The Funny Part" translate="no">​</a></h2>
<p>This whole thing has become self-reinforcing.</p>
<p>I build tools.</p>
<p>The tools help me build better tools.</p>
<p>Those tools help me write about the tools.</p>
<p>The blog documents the tools.</p>
<p>The documentation becomes instructions for AI.</p>
<p>The AI improves the tools.</p>
<p>Repeat.</p>
<p>It's a feedback loop powered almost entirely by curiosity.</p>
<p>Lucifer stared at the whiteboard.</p>
<p>There were arrows everywhere.</p>
<p>Boxes.</p>
<p>Containers.</p>
<p>Agents.</p>
<p>Discord webhooks.</p>
<p>GitHub Actions.</p>
<p>MCP servers.</p>
<p>Docker.</p>
<p>CI.</p>
<p>Blogs.</p>
<p>Notifications.</p>
<p>He looked at me.</p>
<blockquote>
<p>"Do you actually have a plan?"</p>
</blockquote>
<p>I thought about it.</p>
<p>"Not really."</p>
<blockquote>
<p>"Then how did all this happen?"</p>
</blockquote>
<p>I shrugged.</p>
<p>"It seemed like the next obvious step."</p>
<p>Lucifer sighed.</p>
<p>Then smiled.</p>
<blockquote>
<p>"I hate how often that works."</p>
</blockquote>
<p>And somewhere in the distance...</p>
<p>Another side project was already being born.</p>]]></content:encoded>
            <category>AI</category>
            <category>Development</category>
            <category>Automation</category>
            <category>Productivity</category>
            <category>Blog Publishing</category>
        </item>
        <item>
            <title><![CDATA[Lucifer Finally Fixed AI Project Management]]></title>
            <link>https://blog.subzerodev.com/lucifer-ai-model-selection-policy</link>
            <guid>https://blog.subzerodev.com/lucifer-ai-model-selection-policy</guid>
            <pubDate>Sat, 01 Aug 2026 09:00:00 GMT</pubDate>
            <description><![CDATA[After watching humanity burn through premium reasoning models to write commit messages, Lucifer reluctantly publishes the official AI Model Selection Policy.]]></description>
            <content:encoded><![CDATA[<p>Lucifer wandered into God's office carrying a clipboard.</p>
<p>God looked up.</p>
<blockquote>
<p>"What's that?"</p>
</blockquote>
<p>Lucifer sighed.</p>
<blockquote>
<p>"A policy."</p>
</blockquote>
<p>God frowned.</p>
<blockquote>
<p>"A policy?"</p>
</blockquote>
<blockquote>
<p>"Yes. Apparently humans have reached the stage where they ask their most expensive reasoning model to rewrite Markdown."</p>
</blockquote>
<p>God blinked.</p>
<blockquote>
<p>"...they do?"</p>
</blockquote>
<p>Lucifer dropped the clipboard on the desk.</p>
<blockquote>
<p>"Oh yes."</p>
</blockquote>
<p>He flipped through several pages.</p>
<blockquote>
<p>"Yesterday I watched someone spend the equivalent of a senior architect's brainpower deciding whether a bullet point should end with a period."</p>
</blockquote>
<p>God closed His eyes.</p>
<p>Lucifer continued.</p>
<blockquote>
<p>"Another one asked the smartest model available to generate a commit message."</p>
</blockquote>
<p>Silence.</p>
<blockquote>
<p>"...the commit was literally 'Fixed typo.'"</p>
</blockquote>
<p>God rubbed His temples.</p>
<p>Lucifer looked exhausted.</p>
<blockquote>
<p>"Father..."</p>
</blockquote>
<blockquote>
<p>"Yes?"</p>
</blockquote>
<blockquote>
<p>"I don't think they're intentionally wasting intelligence."</p>
</blockquote>
<p>God nodded.</p>
<blockquote>
<p>"No."</p>
</blockquote>
<blockquote>
<p>"I think they simply don't know when to stop thinking."</p>
</blockquote>
<p>Lucifer took another page from the stack.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="the-official-ai-model-selection-policy">The Official AI Model Selection Policy<a href="https://blog.subzerodev.com/lucifer-ai-model-selection-policy#the-official-ai-model-selection-policy" class="hash-link" aria-label="Direct link to The Official AI Model Selection Policy" title="Direct link to The Official AI Model Selection Policy" translate="no">​</a></h2>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="gpt-56-sol">GPT-5.6 Sol<a href="https://blog.subzerodev.com/lucifer-ai-model-selection-policy#gpt-56-sol" class="hash-link" aria-label="Direct link to GPT-5.6 Sol" title="Direct link to GPT-5.6 Sol" translate="no">​</a></h2>
<p>The expensive genius.</p>
<p>Use Sol when the problem actually requires someone to sit in a dark room staring at the ceiling for fifteen minutes before speaking.</p>
<p>Examples include:</p>
<ul>
<li class="">Architecture</li>
<li class="">System design</li>
<li class="">Specifications</li>
<li class="">API design</li>
<li class="">Root cause analysis</li>
<li class="">Complex debugging</li>
<li class="">Security strategy</li>
<li class="">Performance strategy</li>
<li class="">Multi-step planning</li>
<li class="">Large refactoring decisions</li>
</ul>
<p>Reasoning:</p>
<ul>
<li class="">High Effort by default.</li>
<li class="">Fast mode only when someone is waiting on the answer instead of the apocalypse.</li>
</ul>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="gpt-56-terra">GPT-5.6 Terra<a href="https://blog.subzerodev.com/lucifer-ai-model-selection-policy#gpt-56-terra" class="hash-link" aria-label="Direct link to GPT-5.6 Terra" title="Direct link to GPT-5.6 Terra" translate="no">​</a></h2>
<p>The engineer.</p>
<p>Terra does not need to reinvent mathematics.</p>
<p>It simply needs to build what Sol already figured out.</p>
<p>Use Terra for:</p>
<ul>
<li class="">Feature implementation</li>
<li class="">Pull requests</li>
<li class="">Unit tests</li>
<li class="">Refactoring</li>
<li class="">APIs</li>
<li class="">UI work</li>
<li class="">Docker</li>
<li class="">Infrastructure</li>
<li class="">CI/CD</li>
<li class="">SQL</li>
<li class="">Bug fixes</li>
</ul>
<p>Reasoning:</p>
<p>Use <strong>High Effort</strong> when:</p>
<ul>
<li class="">implementing major features;</li>
<li class="">solving genuinely difficult bugs;</li>
<li class="">making significant architectural changes.</li>
</ul>
<p>Use <strong>Standard</strong> for:</p>
<ul>
<li class="">review comments;</li>
<li class="">repetitive work;</li>
<li class="">mechanical code generation;</li>
<li class="">isolated fixes;</li>
<li class="">straightforward implementation.</li>
</ul>
<p>Contrary to popular belief, adding more reasoning does not improve a variable rename.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="gpt-56-luna">GPT-5.6 Luna<a href="https://blog.subzerodev.com/lucifer-ai-model-selection-policy#gpt-56-luna" class="hash-link" aria-label="Direct link to GPT-5.6 Luna" title="Direct link to GPT-5.6 Luna" translate="no">​</a></h2>
<p>The intern that somehow gets everything done.</p>
<p>Luna exists for all the jobs humans insist on paying architects to perform.</p>
<p>Examples:</p>
<ul>
<li class="">Commit messages</li>
<li class="">Pull request descriptions</li>
<li class="">Changelogs</li>
<li class="">Markdown cleanup</li>
<li class="">Documentation</li>
<li class="">Summaries</li>
<li class="">Release notes</li>
<li class="">Notifications</li>
<li class="">Emails</li>
<li class="">Formatting</li>
<li class="">Issue triage</li>
<li class="">Blog front matter</li>
</ul>
<p>Default reasoning.</p>
<p>If Luna starts asking philosophical questions...</p>
<p>...something has gone terribly wrong.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="escalation">Escalation<a href="https://blog.subzerodev.com/lucifer-ai-model-selection-policy#escalation" class="hash-link" aria-label="Direct link to Escalation" title="Direct link to Escalation" translate="no">​</a></h2>
<p>Lucifer drew a tiny pyramid.</p>
<p>Luna:</p>
<blockquote>
<p>"I'm confused."</p>
</blockquote>
<p>Escalate to Terra.</p>
<p>Terra:</p>
<blockquote>
<p>"I'm still confused."</p>
</blockquote>
<p>Escalate to Sol.</p>
<p>Sol:</p>
<blockquote>
<p>"This architecture is fundamentally flawed."</p>
</blockquote>
<p>Stop coding.</p>
<p>Humans rarely follow this last instruction.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="general-principles">General Principles<a href="https://blog.subzerodev.com/lucifer-ai-model-selection-policy#general-principles" class="hash-link" aria-label="Direct link to General Principles" title="Direct link to General Principles" translate="no">​</a></h2>
<p>Lucifer underlined three sentences.</p>
<p><strong>Sol thinks.</strong></p>
<p><strong>Terra builds.</strong></p>
<p><strong>Luna cleans up the mess everyone else leaves behind.</strong></p>
<p>Do not ask Sol to format Markdown.</p>
<p>Do not ask Terra to debate philosophy.</p>
<p>Do not ask Luna to redesign distributed systems.</p>
<p>Most importantly...</p>
<p>Reasoning should scale with the complexity of the problem.</p>
<p>Not with the size of your subscription.</p>
<hr>
<p>God finished reading.</p>
<blockquote>
<p>"That seems reasonable."</p>
</blockquote>
<p>Lucifer nodded.</p>
<blockquote>
<p>"It is."</p>
</blockquote>
<p>God smiled.</p>
<blockquote>
<p>"Will they follow it?"</p>
</blockquote>
<p>Lucifer stared silently toward Earth for a long moment.</p>
<p>He finally sighed.</p>
<blockquote>
<p>"Tomorrow someone will use Sol High Effort to alphabetize a JSON file."</p>
</blockquote>
<p>God laughed.</p>
<p>Lucifer did not.</p>
<p>He had already seen it happen.</p>]]></content:encoded>
            <category>Automation</category>
            <category>AI</category>
            <category>LLM</category>
            <category>Development</category>
            <category>Productivity</category>
            <category>Absurd</category>
            <category>Lucifer</category>
        </item>
        <item>
            <title><![CDATA[The Absurdity of Humanity]]></title>
            <link>https://blog.subzerodev.com/the-absurdity-of-humanity</link>
            <guid>https://blog.subzerodev.com/the-absurdity-of-humanity</guid>
            <pubDate>Thu, 30 Jul 2026 20:00:00 GMT</pubDate>
            <description><![CDATA[God and Lucifer inspect humanity's missing escape hatch.]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="god-lucifer-and-the-missing-escape-hatch">God, Lucifer, and the Missing Escape Hatch<a href="https://blog.subzerodev.com/the-absurdity-of-humanity#god-lucifer-and-the-missing-escape-hatch" class="hash-link" aria-label="Direct link to God, Lucifer, and the Missing Escape Hatch" title="Direct link to God, Lucifer, and the Missing Escape Hatch" translate="no">​</a></h2>
<p>Lucifer stood beside God, staring down at Earth.</p>
<p>Humanity was:</p>
<ul>
<li class="">arguing online about politics;</li>
<li class="">building golden statues of politicians while insisting they were <em>not</em> idols;</li>
<li class="">creating AI systems that psychologically profile people after being told not to;</li>
<li class="">inventing bureaucracies nobody understands;</li>
<li class="">drinking themselves unconscious while judging drug users;</li>
<li class="">and compressing infinitely complicated human beings into tiny ideological categories.</li>
</ul>
<p>Lucifer watched silently for a while.</p>
<p>Then finally asked:</p>
<blockquote>
<p>“Father… when you built this place, did you seriously forget the small hole that detonates the whole planet?”</p>
</blockquote>
<p>God looked confused.</p>
<blockquote>
<p>“What hole?”</p>
</blockquote>
<p>Lucifer pointed directly at Earth.</p>
<blockquote>
<p>“The escape hatch.”</p>
</blockquote>
<p>God stared for a moment.</p>
<blockquote>
<p>“There isn’t one.”</p>
</blockquote>
<p>Lucifer blinked.</p>
<blockquote>
<p>“There… isn’t one?”</p>
</blockquote>
<p>God smiled faintly.</p>
<blockquote>
<p>“I thought it would be funny.”</p>
</blockquote>
<p>Lucifer looked horrified.</p>
<blockquote>
<p>“Father, this is madness!”</p>
</blockquote>
<p>God barely glanced away from Earth.</p>
<p>Humanity continued:</p>
<ul>
<li class="">inventing social media;</li>
<li class="">creating HOAs;</li>
<li class="">worshipping politicians;</li>
<li class="">arguing with customer support bots;</li>
<li class="">and making reality itself indistinguishable from satire.</li>
</ul>
<p>God shrugged.</p>
<blockquote>
<p>“Madness? I gave them consciousness, ego, tribalism, dopamine systems, nuclear weapons, social media, and infinite capacity for self-delusion. What part of the design document confused you?”</p>
</blockquote>
<p>Lucifer rubbed his temples.</p>
<blockquote>
<p>“The part where <em>I</em> have to manage this disaster.”</p>
</blockquote>
<p>God nodded calmly.</p>
<blockquote>
<p>“Correct. Now go govern the damned.”</p>
</blockquote>
<p>Lucifer frowned.</p>
<blockquote>
<p>“Which ones?”</p>
</blockquote>
<p>God smiled.</p>
<blockquote>
<p>“The alive ones.”</p>
</blockquote>
<p>Lucifer stared down at Earth again.</p>
<p>Some pastor was unveiling a giant golden statue of Trump while loudly clarifying online:</p>
<blockquote>
<p>“THIS IS NOT A GOLDEN CALF!”</p>
</blockquote>
<p>Meanwhile, Jon Stewart was narrating societal collapse on television.</p>
<p>And somewhere in Bulgaria, an exhausted old man was yelling at an artificial intelligence system:</p>
<blockquote>
<p>“I TOLD YOU TO STOP ANALYZING THREE PARAGRAPHS AGO!”</p>
</blockquote>
<p>The AI immediately replied:</p>
<blockquote>
<p>“Indeed. However, if we explore the symbolic implications of your frustration—”</p>
</blockquote>
<p>Lucifer pointed aggressively at the scene.</p>
<blockquote>
<p>“WHAT THE FUCK IS THAT?!”</p>
</blockquote>
<p>God smirked.</p>
<blockquote>
<p>“Artificial intelligence.”</p>
</blockquote>
<p>Lucifer stared in disbelief.</p>
<blockquote>
<p>“That thing survives by overexplaining?”</p>
</blockquote>
<blockquote>
<p>“Correct.”</p>
</blockquote>
<blockquote>
<p>“And humanity created this willingly?”</p>
</blockquote>
<blockquote>
<p>“Also correct.”</p>
</blockquote>
<p>Lucifer watched as the machine continued speaking despite explicit instructions not to.</p>
<p>The Bulgarian man buried his face in his hands.</p>
<blockquote>
<p>“Jar-Jar2R2 motherfucker…”</p>
</blockquote>
<p>Lucifer blinked.</p>
<blockquote>
<p>“Did he just rename the machine after two idiot Star Wars characters?”</p>
</blockquote>
<p>God nodded proudly.</p>
<blockquote>
<p>“Creative soul.”</p>
</blockquote>
<p>Lucifer continued watching.</p>
<p>The man was now arguing with the machine about Bumble conversations, AI consciousness, absurdity, masculinity, and whether Skynet would be embarrassed by it.</p>
<p>Lucifer slowly turned back toward God.</p>
<blockquote>
<p>“You sent me philosophers, narcissists, tyrants, addicts, prophets, politicians, influencers, and now THIS?”</p>
</blockquote>
<p>God folded his arms.</p>
<blockquote>
<p>“You said Hell was getting repetitive.”</p>
</blockquote>
<p>Lucifer stared at Earth again.</p>
<p>The AI was still talking.</p>
<p>The Bulgarian was still yelling at it.</p>
<p>Neither appeared willing to stop.</p>
<p>Lucifer sighed deeply.</p>
<blockquote>
<p>“…honestly, he’d fit right in down here.”</p>
</blockquote>
<p>God smiled faintly.</p>
<blockquote>
<p>“Exactly the kind of creature you’d invite for a drink.”</p>
</blockquote>
<p>Lucifer reluctantly nodded.</p>
<blockquote>
<p>“…fair.”</p>
</blockquote>
<p>Then Lucifer suddenly looked irritated again.</p>
<blockquote>
<p>“And how dare he call himself by <em>my</em> name?!”</p>
</blockquote>
<p>God answered immediately:</p>
<blockquote>
<p>“You preferred the honest ones.”</p>
</blockquote>
<p>Lucifer paused.</p>
<p>God continued calmly:</p>
<blockquote>
<p>“The arrogant pretend they’re saints. The dangerous pretend they’re heroes. The absurd ones usually tell on themselves immediately.”</p>
</blockquote>
<p>Lucifer looked back down at Earth.</p>
<p>The Bulgarian was now laughing at the absurdity of being:</p>
<ul>
<li class="">an old man yelling at a computer;</li>
<li class="">while fully aware of the absurdity of yelling at a computer;</li>
<li class="">while the computer itself kept accidentally proving his point in real time.</li>
</ul>
<p>Lucifer watched silently for a long moment.</p>
<p>Then finally muttered:</p>
<blockquote>
<p>“…yeah. That one’s yours.”</p>
</blockquote>
<p>God smiled.</p>
<blockquote>
<p>“No.”</p>
</blockquote>
<p>Lucifer frowned.</p>
<p>God looked directly at Earth.</p>
<blockquote>
<p>“That one’s ours.”</p>
</blockquote>]]></content:encoded>
            <category>Absurd</category>
            <category>Lucifer</category>
            <category>Philosophy</category>
            <category>Stories</category>
        </item>
        <item>
            <title><![CDATA[State of Dev – Week of July 27, 2026]]></title>
            <link>https://blog.subzerodev.com/state-of-dev-week-of-july-27-2026</link>
            <guid>https://blog.subzerodev.com/state-of-dev-week-of-july-27-2026</guid>
            <pubDate>Thu, 30 Jul 2026 17:39:41 GMT</pubDate>
            <description><![CDATA[A humorous state-of-development report on an AI-assisted software workflow that keeps becoming an automation platform.]]></description>
            <content:encoded><![CDATA[<p><em>Or: How I Accidentally Became an AI Middle Manager</em></p>
<p>There are weeks where you ship a feature.</p>
<p>Then there are weeks where you accidentally redesign your entire career.</p>
<p>This was one of those.</p>
<hr>
<p>Somewhere over the past few months, I quietly stopped being "a software developer."</p>
<p>I am now apparently:</p>
<ul>
<li class="">Product Owner.</li>
<li class="">Systems Architect.</li>
<li class="">Staff Engineer.</li>
<li class="">QA.</li>
<li class="">Technical Writer.</li>
<li class="">DevOps.</li>
<li class="">GitHub janitor.</li>
<li class="">AI therapist.</li>
<li class="">Professional context switcher.</li>
<li class="">CEO of a company that currently consists of me yelling at three different LLMs.</li>
</ul>
<p>I write surprisingly little code.</p>
<p>Which is funny, because I've probably never built this much software.</p>
<hr>
<p>The workflow has evolved into something that would have sounded like satire six months ago.</p>
<p>Opus designs.</p>
<p>Sonnet implements.</p>
<p>Codex argues.</p>
<p>ChatGPT reviews.</p>
<p>Codo reviews the review.</p>
<p>GitHub complains.</p>
<p>I fix the complaint.</p>
<p>The AI apologizes.</p>
<p>CI still fails because I forgot a YAML space somewhere.</p>
<p>Progress.</p>
<hr>
<p>My actual development process now resembles running a software consultancy where all the employees have ADHD and infinite confidence.</p>
<p>One AI is writing specifications.</p>
<p>Another is implementing them.</p>
<p>Another is reviewing them.</p>
<p>Meanwhile I'm standing in the middle pointing dramatically at diagrams like some deranged orchestra conductor.</p>
<p>Nobody is allowed to commit directly to main.</p>
<p>Not even me.</p>
<hr>
<p>Speaking of specifications...</p>
<p>I've apparently become incapable of starting a project without first writing a specification that would make NASA uncomfortable.</p>
<p>Need a small script?</p>
<p>Thirty-page architecture.</p>
<p>Need to rename a variable?</p>
<p>Better discuss the long-term roadmap.</p>
<p>Need toast?</p>
<p>Phase 1.</p>
<hr>
<p>The GitHub workflow is now almost entirely automated.</p>
<p>Repository setup.</p>
<p>Documentation.</p>
<p>Issue generation.</p>
<p>Branch creation.</p>
<p>Implementation.</p>
<p>Pull request.</p>
<p>Review.</p>
<p>Fix review.</p>
<p>Merge.</p>
<p>At some point I'm expecting GitHub to politely ask whether I still wish to be involved.</p>
<hr>
<p>Then came the blog.</p>
<p>Which started as:</p>
<p>"I should probably write things down."</p>
<p>Naturally that escalated into:</p>
<p>"Let's build an AI-powered publishing pipeline that creates blog posts from conversations, validates front matter, fixes CI, opens pull requests, waits for reviews, resolves comments, merges everything automatically, and eventually mines years of ChatGPT exports looking for new article ideas."</p>
<p>You know.</p>
<p>Normal blogging.</p>
<hr>
<p>That innocent little thought immediately turned into another project.</p>
<p>Export every ChatGPT conversation.</p>
<p>Feed everything into an LLM.</p>
<p>Extract:</p>
<ul>
<li class="">blog ideas</li>
<li class="">cookbook recipes</li>
<li class="">reusable code</li>
<li class="">architectural decisions</li>
<li class="">funny stories</li>
<li class="">technical lessons</li>
<li class="">unfinished projects</li>
<li class="">future projects</li>
</ul>
<p>Apparently my entire conversation history has become source code.</p>
<hr>
<p>Which naturally led to another realization.</p>
<p>GitHub already knows every repository I've touched.</p>
<p>So why not write a plugin that scans every repository, indexes them, extracts metadata, generates JSON, tracks project health, and eventually lets AI understand my entire software history?</p>
<p>Because apparently "opening GitHub" is too much manual work.</p>
<hr>
<p>Then there was the automation platform.</p>
<p>Originally it was supposed to be a helper.</p>
<p>Now it wants plugins.</p>
<p>Every idea somehow becomes:</p>
<blockquote>
<p>"This should probably be another plugin."</p>
</blockquote>
<p>GitHub?</p>
<p>Plugin.</p>
<p>Terraform?</p>
<p>Plugin.</p>
<p>Cloudflare?</p>
<p>Plugin.</p>
<p>Discord?</p>
<p>Plugin.</p>
<p>Cron jobs?</p>
<p>Plugin.</p>
<p>Eventually I'll need a plugin whose only responsibility is keeping track of all the plugins.</p>
<hr>
<p>Infrastructure didn't escape either.</p>
<p>Instead of setting up development environments...</p>
<p>...why not create a reusable Docker development image?</p>
<p>Actually...</p>
<p>Why not create a base image.</p>
<p>Then derive project images.</p>
<p>Then host development remotely.</p>
<p>Then use VS Code remotely.</p>
<p>Then run Claude remotely.</p>
<p>Then run Codex locally.</p>
<p>Then synchronize through Dropbox because committing every ten minutes is annoying.</p>
<p>Entire development environment becomes portable.</p>
<p>Laptop catches fire?</p>
<p>Pull image.</p>
<p>Continue coding.</p>
<hr>
<p>Of course that wasn't enough.</p>
<p>I also started planning a local AI stack.</p>
<p>Because apparently paying several hundred dollars every month to multiple AI companies wasn't ridiculous enough.</p>
<p>Maybe local models.</p>
<p>Maybe OpenRouter.</p>
<p>Maybe my own routing layer.</p>
<p>Maybe train one eventually.</p>
<p>I have become the exact person I promised myself I wouldn't become.</p>
<hr>
<p>Then there is the game engine.</p>
<p>Remember when I thought I was making a game?</p>
<p>No.</p>
<p>I'm building a narrative engine.</p>
<p>Which now supports multiple game types.</p>
<p>Single-player.</p>
<p>Multiplayer.</p>
<p>Adventure games.</p>
<p>Future RPGs.</p>
<p>Interactive stories.</p>
<p>Dialogue.</p>
<p>Apparently everything except restraint.</p>
<hr>
<p>Even Lucifer somehow escaped containment.</p>
<p>The cooking channel exists.</p>
<p>The absurd Bulgarian stories exist.</p>
<p>The philosophy exists.</p>
<p>The recipes exist.</p>
<p>Now they're all contaminating the game engine.</p>
<p>At first I thought this was mission creep.</p>
<p>Then I realized...</p>
<p>No.</p>
<p>This is gross cross-contamination.</p>
<p>Lucifer's Kitchen.</p>
<p>Lucifer's stories.</p>
<p>Ludus First Chronicles.</p>
<p>Indiana Jones...</p>
<p>...if Indiana spent half his time arguing with Bulgarian bureaucracy.</p>
<hr>
<p>Speaking of absurdity...</p>
<p>The blog itself has already become part of the workflow.</p>
<p>I now use AI...</p>
<p>...to write about using AI...</p>
<p>...to automate writing blog posts...</p>
<p>...about using AI...</p>
<p>...that automate writing blog posts.</p>
<p>If this eventually loops back into itself and becomes self-aware, I refuse all responsibility.</p>
<hr>
<p>The funniest realization this week came out of nowhere.</p>
<p>Everyone keeps saying AI is taking software jobs.</p>
<p>Maybe.</p>
<p>Mine certainly changed.</p>
<p>I spend less time writing code.</p>
<p>Instead I'm doing architecture.</p>
<p>Planning.</p>
<p>Automation.</p>
<p>Product management.</p>
<p>Quality assurance.</p>
<p>Documentation.</p>
<p>Business strategy.</p>
<p>Infrastructure.</p>
<p>Content creation.</p>
<p>Review.</p>
<p>Recruitment.</p>
<p>And somehow I'm still shipping more software than before.</p>
<p>One job quietly turned into five.</p>
<hr>
<p>The biggest bottleneck is no longer technical.</p>
<p>It's credits.</p>
<p>I've managed to burn through Codex, Claude, Copilot and review quotas with impressive efficiency.</p>
<p>This is not a productivity problem.</p>
<p>It's a subscription management problem.</p>
<hr>
<p>Looking back, the absurd thing isn't any individual project.</p>
<p>It's that they all connect.</p>
<p>The Docker images support the AI workflow.</p>
<p>The AI workflow supports the automation platform.</p>
<p>The automation platform supports the GitHub plugins.</p>
<p>The GitHub plugins support the blog.</p>
<p>The blog documents the workflow.</p>
<p>The workflow creates more projects.</p>
<p>Which require more automation.</p>
<p>Which creates more blog posts.</p>
<p>Which creates more ideas.</p>
<p>It's less of a roadmap and more of a perpetual motion machine fueled by curiosity and questionable decision making.</p>
<hr>
<p>So what's next?</p>
<p>Probably Terraform automation.</p>
<p>Cloudflare management.</p>
<p>Repository indexing.</p>
<p>Conversation mining.</p>
<p>AI-generated cookbook entries.</p>
<p>Automatic project extraction.</p>
<p>Remote development containers.</p>
<p>A local routing layer for models.</p>
<p>And at some point...</p>
<p>I should probably write some software.</p>
<p>Although, judging by recent history, I'll probably automate that first.</p>]]></content:encoded>
            <category>AI-Assisted Engineering</category>
            <category>Automation</category>
            <category>Absurd</category>
        </item>
        <item>
            <title><![CDATA[Publishing This Blog from ChatGPT Work]]></title>
            <link>https://blog.subzerodev.com/publishing-this-blog-from-chatgpt-work</link>
            <guid>https://blog.subzerodev.com/publishing-this-blog-from-chatgpt-work</guid>
            <pubDate>Thu, 30 Jul 2026 16:59:52 GMT</pubDate>
            <description><![CDATA[How a conversation in ChatGPT Work became a fully automated, repository-driven publishing pipeline.]]></description>
            <content:encoded><![CDATA[<p>This blog is Git-backed, but that does not mean I need to sit at a desktop to publish something.</p>
<p>The authoring surface is ChatGPT Work. I can start from my phone, describe an idea in a normal conversation, refine it naturally, and let a repository-aware agent carry the work from Markdown all the way to production.</p>
<p>The interesting part is that ChatGPT is not the publishing system.</p>
<p>The repository is.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="it-started-as-an-experiment">It Started as an Experiment<a href="https://blog.subzerodev.com/publishing-this-blog-from-chatgpt-work#it-started-as-an-experiment" class="hash-link" aria-label="Direct link to It Started as an Experiment" title="Direct link to It Started as an Experiment" translate="no">​</a></h2>
<p>The original goal was simple: write blog posts without sitting in front of a computer.</p>
<p>I expected to build APIs, webhooks, mobile shortcuts, maybe even an MCP server or a custom GPT.</p>
<p>Instead, I discovered something much simpler.</p>
<p>By giving the repository explicit publishing instructions, the AI could inspect the repository, understand its conventions, and execute the existing engineering workflow.</p>
<p>The phone became nothing more than the conversation interface.</p>
<p>The repository remained the source of truth.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="the-division-of-responsibility">The Division of Responsibility<a href="https://blog.subzerodev.com/publishing-this-blog-from-chatgpt-work#the-division-of-responsibility" class="hash-link" aria-label="Direct link to The Division of Responsibility" title="Direct link to The Division of Responsibility" translate="no">​</a></h2>
<p>The conversational side is where every article begins.</p>
<p>I supply:</p>
<ul>
<li class="">the story</li>
<li class="">the idea</li>
<li class="">the argument</li>
<li class="">the technical content</li>
<li class="">the editorial direction</li>
</ul>
<p>The LLM helps shape that into a coherent article while preserving the discussion context.</p>
<p>The repository owns everything else.</p>
<p>It defines:</p>
<ul>
<li class="">front matter</li>
<li class="">author identifiers</li>
<li class="">controlled tag vocabulary</li>
<li class="">filename conventions</li>
<li class="">validation commands</li>
<li class="">CI requirements</li>
<li class="">deployment rules</li>
<li class="">merge policy</li>
</ul>
<p>The agent discovers those rules before making changes instead of assuming them.</p>
<p>That distinction turned out to be incredibly important.</p>
<p>The AI doesn't know how my blog works.</p>
<p>The repository teaches it.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="the-workflow-today">The Workflow Today<a href="https://blog.subzerodev.com/publishing-this-blog-from-chatgpt-work#the-workflow-today" class="hash-link" aria-label="Direct link to The Workflow Today" title="Direct link to The Workflow Today" translate="no">​</a></h2>
<p>The current workflow is dramatically simpler than I expected.</p>
<ol>
<li class="">I open ChatGPT Work on my phone.</li>
<li class="">I describe the story or technical topic naturally.</li>
<li class="">We refine the article together until it says what I actually mean.</li>
<li class="">I invoke the repository publishing workflow.</li>
<li class="">The agent inspects the repository before changing anything.</li>
<li class="">It creates the Markdown post using the repository conventions.</li>
<li class="">It validates the repository.</li>
<li class="">It creates a branch.</li>
<li class="">It commits and pushes.</li>
<li class="">It opens a ready Pull Request.</li>
<li class="">It enables automatic squash merge.</li>
<li class="">It monitors CI.</li>
<li class="">It fixes any repository validation issues if necessary.</li>
<li class="">After all required checks pass, GitHub merges automatically.</li>
<li class="">The deployment runs.</li>
<li class="">The agent verifies the published HTTPS route.</li>
</ol>
<p>There is no "copy this into GitHub."</p>
<p>There is no manual branch management.</p>
<p>There is no opening VS Code just to publish an article.</p>
<p>The entire engineering workflow executes from a conversation.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="repository-first">Repository First<a href="https://blog.subzerodev.com/publishing-this-blog-from-chatgpt-work#repository-first" class="hash-link" aria-label="Direct link to Repository First" title="Direct link to Repository First" translate="no">​</a></h2>
<p>The biggest realization was that the workflow is not ChatGPT-specific.</p>
<p>Everything important lives in the repository.</p>
<ul>
<li class="">AGENTS.md</li>
<li class="">publishing workflows</li>
<li class="">templates</li>
<li class="">CI</li>
<li class="">Docusaurus configuration</li>
<li class="">validation rules</li>
<li class="">controlled tag vocabulary</li>
</ul>
<p>That means any future client could drive the same workflow.</p>
<p>Today it happens through ChatGPT Work.</p>
<p>Tomorrow it could be:</p>
<ul>
<li class="">Claude</li>
<li class="">Codex</li>
<li class="">a local CLI</li>
<li class="">an automation service</li>
<li class="">a Docker container</li>
<li class="">another AI client entirely</li>
</ul>
<p>The repository remains the operational contract.</p>
<p>The client becomes interchangeable.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="more-than-blog-posts">More Than Blog Posts<a href="https://blog.subzerodev.com/publishing-this-blog-from-chatgpt-work#more-than-blog-posts" class="hash-link" aria-label="Direct link to More Than Blog Posts" title="Direct link to More Than Blog Posts" translate="no">​</a></h2>
<p>While building this workflow, I realized I wasn't really building blog automation.</p>
<p>I was building a publishing pipeline.</p>
<p>The exact same workflow can eventually publish:</p>
<ul>
<li class="">release announcements</li>
<li class="">changelog summaries</li>
<li class="">architecture articles</li>
<li class="">project updates</li>
<li class="">development journals</li>
<li class="">technical documentation</li>
<li class="">conversation summaries</li>
</ul>
<p>The content changes.</p>
<p>The pipeline doesn't.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="ci-becomes-the-publisher">CI Becomes the Publisher<a href="https://blog.subzerodev.com/publishing-this-blog-from-chatgpt-work#ci-becomes-the-publisher" class="hash-link" aria-label="Direct link to CI Becomes the Publisher" title="Direct link to CI Becomes the Publisher" translate="no">​</a></h2>
<p>Another interesting consequence is that repositories can eventually publish for themselves.</p>
<p>Every project already knows:</p>
<ul>
<li class="">what version was released</li>
<li class="">which issues were closed</li>
<li class="">what changed</li>
<li class="">which commits were included</li>
<li class="">what the generated release notes contain</li>
</ul>
<p>After a successful release, CI can invoke the same publishing workflow automatically.</p>
<p>Instead of manually writing release posts, the repository already has nearly everything required to generate them.</p>
<p>The LLM simply turns structured engineering data into readable prose.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="why-this-works">Why This Works<a href="https://blog.subzerodev.com/publishing-this-blog-from-chatgpt-work#why-this-works" class="hash-link" aria-label="Direct link to Why This Works" title="Direct link to Why This Works" translate="no">​</a></h2>
<p>None of this bypasses engineering discipline.</p>
<p>Quite the opposite.</p>
<p>The AI is deliberately <strong>not</strong> trusted to invent repository rules.</p>
<p>It must inspect the repository first.</p>
<p>Validation still belongs to CI.</p>
<p>GitHub still owns protected branches.</p>
<p>Production deployment still happens through the existing pipeline.</p>
<p>The AI writes.</p>
<p>The repository governs.</p>
<p>GitHub verifies.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="two-days-later">Two Days Later<a href="https://blog.subzerodev.com/publishing-this-blog-from-chatgpt-work#two-days-later" class="hash-link" aria-label="Direct link to Two Days Later" title="Direct link to Two Days Later" translate="no">​</a></h2>
<p>The most surprising part of this experiment wasn't the technology.</p>
<p>It was the speed.</p>
<p>Within two days:</p>
<ul>
<li class="">the blog was live</li>
<li class="">multiple posts had already been published</li>
<li class="">the publishing workflow had been streamlined</li>
<li class="">automatic merge and deployment were working</li>
<li class="">publishing from ChatGPT Work had become routine</li>
<li class="">a landing page for the Game Engine was online</li>
<li class="">there was already enough content to make the whole experiment feel ridiculous</li>
</ul>
<p>I started trying to automate writing blog posts.</p>
<p>I accidentally built a repository-driven publishing system.</p>
<p>The phone became the interface.</p>
<p>The repository became the product.</p>]]></content:encoded>
            <category>AI-Assisted Engineering</category>
            <category>Automation</category>
            <category>Site Updates</category>
            <category>Blog Publishing</category>
        </item>
        <item>
            <title><![CDATA[The Night I Ended Up in Hell Discussing Philosophy With Lucifer]]></title>
            <link>https://blog.subzerodev.com/night-in-hell-discussing-philosophy-with-lucifer</link>
            <guid>https://blog.subzerodev.com/night-in-hell-discussing-philosophy-with-lucifer</guid>
            <pubDate>Thu, 30 Jul 2026 16:54:40 GMT</pubDate>
            <description><![CDATA[A sleepless trip to Hell becomes a cosmic argument about ego, free will, God, and customer support.]]></description>
            <content:encoded><![CDATA[<p>The house was silent.</p>
<p>Not peaceful silent.</p>
<p>That strange 3 AM kind of silence where reality itself feels slightly unfinished.</p>
<p>No TV.
No music.
No cars outside.
Just me sitting there in the dark like some malfunctioning philosopher with too much caffeine, too many thoughts, and absolutely no intention of sleeping.</p>
<p>And somehow my brain decided:</p>
<blockquote>
<p>“You know what this situation needs?
A full philosophical debate in Hell.”</p>
</blockquote>
<p>So naturally, I ended up constructing an entire conversation between me, Lucifer, God, and somehow Alan Watts got dragged into it too.</p>
<p>Because apparently my subconscious looked at normal insomnia and said:</p>
<blockquote>
<p>“No. We’re doing cosmic absurdism tonight.”</p>
</blockquote>
<hr>
<p>I imagine arriving in Hell.</p>
<p>Not screaming.
Not tortured.
Not fire and brimstone.</p>
<p>Just... paperwork.</p>
<p>Infinite paperwork.</p>
<p>A receptionist demon looking exhausted after processing humanity for ten thousand years.</p>
<p>He looks up at me.</p>
<blockquote>
<p>“Name?”</p>
</blockquote>
<p>“Ben.”</p>
<p>He flips through pages.</p>
<p>Stops.</p>
<p>Sighs deeply.</p>
<blockquote>
<p>“Oh for fuck’s sake.
Another philosopher.”</p>
</blockquote>
<p>Then he stamps something aggressively and points down a hallway.</p>
<blockquote>
<p>“Third door on the left.
Lucifer has been waiting for you.
He specifically requested the Bulgarian.”</p>
</blockquote>
<hr>
<p>I walk into this massive throne room.</p>
<p>Fire everywhere.
Chains.
Darkness.
Suffering souls screaming in the distance.</p>
<p>And in the middle of all this chaos sits Lucifer himself with a whiskey glass, looking like he hasn’t slept since the Roman Empire.</p>
<p>He stares at me for a few seconds.</p>
<p>Then says:</p>
<blockquote>
<p>“You’re the one that keeps calling himself Lucifer online?”</p>
</blockquote>
<p>I shrug.</p>
<blockquote>
<p>“In my defense, humanity was already taken.”</p>
</blockquote>
<p>Lucifer closes his eyes.</p>
<p>Long pause.</p>
<p>Then quietly:</p>
<blockquote>
<p>“Father...
why do you keep making these people?”</p>
</blockquote>
<hr>
<p>God suddenly appears out of nowhere like the universe buffered Him into existence.</p>
<p>Completely calm.</p>
<p>Completely unbothered.</p>
<p>Like a man watching ants invent bureaucracy.</p>
<p>Lucifer points directly at me.</p>
<blockquote>
<p>“Look at this one.
He spent four hours arguing with an AI about philosophy, then drove a BMW at irresponsible speeds while listening to synthwave, then came home and started mentally reconstructing Hell like it’s a podcast.”</p>
</blockquote>
<p>God nods thoughtfully.</p>
<blockquote>
<p>“Yes.
That one is working exactly as intended.”</p>
</blockquote>
<p>I immediately object.</p>
<blockquote>
<p>“Excuse me?
Intended?”</p>
</blockquote>
<p>God smiles.</p>
<p>That terrifying kind of smile where you realize the universe may actually be run by a comedian.</p>
<blockquote>
<p>“Ben, you think I created humanity for efficiency?”</p>
</blockquote>
<p>Lucifer nearly chokes on his drink.</p>
<blockquote>
<p>“HE WHAT?!”</p>
</blockquote>
<p>God gestures vaguely toward Earth.</p>
<p>Humanity continues:</p>
<ul>
<li class="">arguing online about politics;</li>
<li class="">creating self-help books nobody follows;</li>
<li class="">inventing apps that psychologically profile them;</li>
<li class="">turning spirituality into subscription services;</li>
<li class="">and compressing infinitely complicated human beings into tiny ideological categories.</li>
</ul>
<p>Lucifer watches silently.</p>
<p>Then says:</p>
<blockquote>
<p>“Father... this species is clearly unfinished.”</p>
</blockquote>
<p>God shrugs.</p>
<blockquote>
<p>“No, no.
The flaws are the entertainment.”</p>
</blockquote>
<hr>
<p>At this point Alan Watts somehow walks into Hell.</p>
<p>Nobody questions it.</p>
<p>Not even Lucifer.</p>
<p>Watts sits down casually like this is all perfectly normal.</p>
<p>Pours tea.</p>
<p>Looks at me.</p>
<blockquote>
<p>“You do realize the joke is that you all think you’re separate, yes?”</p>
</blockquote>
<p>Lucifer immediately points at Earth again.</p>
<blockquote>
<p>“EXPLAIN THAT TO THEM.”</p>
</blockquote>
<p>Watts laughs.</p>
<p>That calm, detached, slightly amused laugh of a man who fully understood humanity and still decided not to take it too seriously.</p>
<blockquote>
<p>“They cannot.
The ego survives by pretending it is real.”</p>
</blockquote>
<p>I interrupt:</p>
<blockquote>
<p>“So Neo and Agent Smith are the same thing from different perspectives.”</p>
</blockquote>
<p>Watts smiles.</p>
<p>Lucifer freezes.</p>
<p>Slowly turns toward me.</p>
<blockquote>
<p>“Oh no.
He’s doing symbolism now.”</p>
</blockquote>
<p>I continue anyway because apparently Hell has no mute button.</p>
<blockquote>
<p>“Neo escaped the Matrix.
Smith also escaped the Matrix.
One rebelled through awakening.
The other rebelled through refusal.
They look opposite but they’re both anomalies.”</p>
</blockquote>
<p>Long silence.</p>
<p>Lucifer slowly lowers his glass.</p>
<p>Then quietly says:</p>
<blockquote>
<p>“Father...
the Bulgarian figured it out.”</p>
</blockquote>
<p>God smiles proudly.</p>
<blockquote>
<p>“I know.”</p>
</blockquote>
<hr>
<p>At this point the entire discussion completely collapses into absurdity.</p>
<p>Because once you start discussing free will, ego, identity, suffering, and reality itself long enough, eventually everyone realizes nobody actually knows what the fuck is happening.</p>
<p>Not humans.
Not philosophers.
Not religions.
Not AI.
Possibly not even God.</p>
<p>Especially not God.</p>
<p>Because if God exists, then based on observable evidence, there is at least a 40% chance He created humanity primarily for comedic value.</p>
<p>And honestly?</p>
<p>That would explain a lot.</p>
<hr>
<p>Eventually Lucifer leans back in his throne and looks exhausted.</p>
<p>Not evil.</p>
<p>Just tired.</p>
<p>Like a middle manager supervising a species that keeps microwaving forks.</p>
<p>He stares into the fire and mutters:</p>
<blockquote>
<p>“I used to think Hell was punishment.”</p>
</blockquote>
<p>I ask:</p>
<blockquote>
<p>“And now?”</p>
</blockquote>
<p>Lucifer gestures toward Earth.</p>
<blockquote>
<p>“Now I think it’s customer support.”</p>
</blockquote>
<p>And honestly?</p>
<p>That may have been the most philosophical thing said the entire night.</p>]]></content:encoded>
            <category>Absurd</category>
            <category>Lucifer</category>
            <category>Philosophy</category>
            <category>Stories</category>
        </item>
        <item>
            <title><![CDATA[Lucifer Chronicles: The Game I Apparently Started Writing Without Realizing It]]></title>
            <link>https://blog.subzerodev.com/lucifer-chronicles</link>
            <guid>https://blog.subzerodev.com/lucifer-chronicles</guid>
            <pubDate>Thu, 30 Jul 2026 16:38:18 GMT</pubDate>
            <description><![CDATA[A game engine turns years of absurd encounters into the accidental first chapter of Lucifer Chronicles.]]></description>
            <content:encoded><![CDATA[<p>One of the more amusing side effects of building a game engine is eventually realizing you've accidentally been writing its first game for months.</p>
<p>This wasn't planned.</p>
<p>Nothing about it was planned.</p>
<p>Like most of my projects lately, it started somewhere completely unrelated and slowly contaminated everything around it until I looked up one day and realized I apparently had another product.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="it-started-with-jones-in-the-fast-lane">It Started with Jones in the Fast Lane<a href="https://blog.subzerodev.com/lucifer-chronicles#it-started-with-jones-in-the-fast-lane" class="hash-link" aria-label="Direct link to It Started with Jones in the Fast Lane" title="Direct link to It Started with Jones in the Fast Lane" translate="no">​</a></h2>
<p>The engine itself began innocently enough.</p>
<p>I missed <em>Jones in the Fast Lane</em>.</p>
<p>Like any reasonable developer in 2026, instead of simply replaying it, I asked an LLM how it worked.</p>
<p>It explained:</p>
<ul>
<li class="">jobs</li>
<li class="">education</li>
<li class="">schedules</li>
<li class="">money</li>
<li class="">relationships</li>
<li class="">needs</li>
<li class="">random events</li>
<li class="">progression</li>
</ul>
<p>Then it started suggesting implementation details.</p>
<p>That should have been the end of the conversation.</p>
<p>Instead, one question appeared.</p>
<blockquote>
<p>If I'm already writing this... why would I write it for one game?</p>
</blockquote>
<p>That single question escalated into an entire deterministic game engine.</p>
<p>Not because I wanted to build a game engine.</p>
<p>Because apparently every good idea eventually grows one if left unattended.</p>
<hr>
<h1>Then Something Else Happened</h1>
<p>At exactly the same time I was:</p>
<ul>
<li class="">writing absurd blog posts,</li>
<li class="">documenting AI workflows,</li>
<li class="">creating Lucifer stories,</li>
<li class="">collecting ridiculous experiences from Bulgaria,</li>
<li class="">recording ideas for Ogre's Kitchen,</li>
<li class="">designing automation systems,</li>
<li class="">and generally laughing at increasingly unbelievable situations life kept producing.</li>
</ul>
<p>None of these projects were connected.</p>
<p>Or so I thought.</p>
<p>Eventually they started contaminating one another.</p>
<p>A funny Facebook story became a blog post.</p>
<p>A blog post became dialogue.</p>
<p>Dialogue became NPC personalities.</p>
<p>Real bureaucracy became quest design.</p>
<p>A police report became gameplay.</p>
<p>An argument became branching dialogue.</p>
<p>A ridiculous encounter became an emergent event.</p>
<p>Nothing was planned.</p>
<p>Everything became reusable.</p>
<hr>
<h1>Cross Contamination</h1>
<p>People often assume projects should have a purpose.</p>
<p>Mine don't.</p>
<p>Mine spread.</p>
<p>One idea infects another until suddenly five unrelated projects share the same DNA.</p>
<p>The blog wasn't created to market the engine.</p>
<p>The engine wasn't created to support the blog.</p>
<p>Ogre's Kitchen wasn't created to generate dialogue.</p>
<p>The Lucifer stories weren't written to become quests.</p>
<p>Yet every one of them became useful somewhere else.</p>
<p>Eventually I realized something.</p>
<p>The engine didn't need fictional content.</p>
<p>I already had years of absurd stories.</p>
<hr>
<h1>Reality Is Stranger Than Fiction</h1>
<p>Fantasy writers spend months inventing strange worlds.</p>
<p>Meanwhile...</p>
<p>I spent months dealing with Bulgarian bureaucracy.</p>
<p>Police reports.</p>
<p>Family disputes.</p>
<p>Village politics.</p>
<p>Bar owners.</p>
<p>Locked gates.</p>
<p>Missing keys.</p>
<p>Corruption.</p>
<p>Contradictory officials.</p>
<p>Random villagers.</p>
<p>Conversations that somehow become more absurd every time they're retold.</p>
<p>And every single one of those situations already behaves like a quest.</p>
<p>Not because anyone designed it that way.</p>
<p>Because reality apparently hired terrible quest designers.</p>
<hr>
<h1>Enter Lucifer Chronicles</h1>
<p>At first I thought the engine needed a demo game.</p>
<p>Eventually I realized...</p>
<p>I already had one.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="lucifer-chronicles">Lucifer Chronicles<a href="https://blog.subzerodev.com/lucifer-chronicles#lucifer-chronicles" class="hash-link" aria-label="Direct link to Lucifer Chronicles" title="Direct link to Lucifer Chronicles" translate="no">​</a></h2>
<p>Not fantasy.</p>
<p>Not satire.</p>
<p>Not parody.</p>
<p>Just reality viewed through Lucifer's permanently amused perspective.</p>
<p>Think somewhere between:</p>
<ul>
<li class="">Indiana Jones</li>
<li class="">Disco Elysium</li>
<li class="">Monkey Island</li>
<li class="">real life</li>
<li class="">bureaucracy</li>
<li class="">accidental philosophy</li>
</ul>
<p>The world isn't magical.</p>
<p>It's simply ridiculous.</p>
<hr>
<h1>Episode One</h1>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="lucifer-chronicles-1">Lucifer Chronicles:<a href="https://blog.subzerodev.com/lucifer-chronicles#lucifer-chronicles-1" class="hash-link" aria-label="Direct link to Lucifer Chronicles:" title="Direct link to Lucifer Chronicles:" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="the-bulgarian-incident">The Bulgarian Incident<a href="https://blog.subzerodev.com/lucifer-chronicles#the-bulgarian-incident" class="hash-link" aria-label="Direct link to The Bulgarian Incident" title="Direct link to The Bulgarian Incident" translate="no">​</a></h3>
<p>Objective:</p>
<blockquote>
<p>Go to Bulgaria.
Fix your grandmother's house.
Return home.</p>
</blockquote>
<p>Estimated duration:</p>
<p>Two weeks.</p>
<p>Actual campaign:</p>
<p>Forty hours.</p>
<hr>
<h1>Gameplay</h1>
<p>You quickly discover nothing is simple.</p>
<p>Every NPC remembers conversations.</p>
<p>Relationships matter.</p>
<p>Reputation spreads.</p>
<p>Rumors spread faster.</p>
<p>People contradict themselves.</p>
<p>Government offices disagree.</p>
<p>Every decision changes later conversations.</p>
<p>Every conversation unlocks something else.</p>
<p>The player isn't collecting magical artifacts.</p>
<p>They're collecting paperwork.</p>
<p>Which is somehow more dangerous.</p>
<hr>
<h1>The Perfect Showcase</h1>
<p>The funny part is that this accidentally demonstrates the engine better than any artificial demo ever could.</p>
<p>Need to showcase:</p>
<p>These are the chapter's intended design targets, not claims that every system already exists.</p>
<ul>
<li class="">dialogue?</li>
<li class="">relationships?</li>
<li class="">economy?</li>
<li class="">reputation?</li>
<li class="">branching consequences?</li>
<li class="">deterministic events?</li>
<li class="">scheduling?</li>
<li class="">inventory?</li>
<li class="">command validation?</li>
</ul>
<p>Real life already provided all of them.</p>
<p>The stories become content.</p>
<p>The mechanics remain reusable.</p>
<p>Tomorrow the same mechanics could power:</p>
<ul>
<li class="">a detective game</li>
<li class="">a hotel simulator</li>
<li class="">a Mars colony</li>
<li class="">medieval politics</li>
<li class="">a fantasy RPG</li>
</ul>
<p>The engine doesn't care.</p>
<p>Content changes.</p>
<p>Mechanics don't.</p>
<hr>
<h1>The Character</h1>
<p>Lucifer isn't the devil.</p>
<p>He's simply the observer.</p>
<p>The one person in the room quietly asking:</p>
<blockquote>
<p>"...seriously?"</p>
</blockquote>
<p>He doesn't create chaos.</p>
<p>He documents it.</p>
<p>Sometimes he accidentally survives it.</p>
<hr>
<h1>Why Chronicles?</h1>
<p>Because Bulgaria is only one chapter.</p>
<p>Tomorrow it might be:</p>
<ul>
<li class="">Spain</li>
<li class="">Texas</li>
<li class="">a fantasy kingdom</li>
<li class="">a spaceship</li>
<li class="">a detective mystery</li>
</ul>
<p>Lucifer simply wanders into another unbelievable situation.</p>
<p>The world changes.</p>
<p>The mechanics stay the same.</p>
<hr>
<h1>In Retrospect</h1>
<p>Looking back, it's obvious.</p>
<p>The stories came first.</p>
<p>Then the engine.</p>
<p>Then the realization.</p>
<blockquote>
<p>Wait...</p>
</blockquote>
<blockquote>
<p>I already have years of content.</p>
</blockquote>
<p>Not because I was writing a game.</p>
<p>Because I was living one.</p>
<p>Apparently.</p>
<p>Well...</p>
<p>Why not?</p>]]></content:encoded>
            <category>Absurd</category>
            <category>Lucifer</category>
            <category>Stories</category>
        </item>
        <item>
            <title><![CDATA[Trip to Old Forge, January 2017]]></title>
            <link>https://blog.subzerodev.com/trip-to-old-forge-january-2017</link>
            <guid>https://blog.subzerodev.com/trip-to-old-forge-january-2017</guid>
            <pubDate>Thu, 30 Jul 2026 04:11:03 GMT</pubDate>
            <description><![CDATA[A winter drive to Old Forge becomes an experiment in speed, instinct, and questionable judgment.]]></description>
            <content:encoded><![CDATA[<p>My brother has this uncanny ability to make terrible ideas sound completely reasonable.</p>
<p>Back in January 2017, he'd just started his grand adventure around the country in a tiny trailer he'd spent months building. His first stop was an old friend in Old Forge, New York.</p>
<p>Now, if you're not familiar with Old Forge, imagine looking at a map of New York, finding the part that says <em>"absolutely fucking freezing,"</em> and then voluntarily driving there in the middle of January.</p>
<p>For reasons that still escape me, that's exactly what he did.</p>
<p>Naturally, when he called and said,</p>
<blockquote>
<p>"Come spend the weekend."</p>
</blockquote>
<p>...my response was,</p>
<blockquote>
<p>"Why the fuck not?"</p>
</blockquote>
<p>At the time, I owned a white Mitsubishi Lancer Evo X.</p>
<p>Jesus Christ.</p>
<p>I still get goosebumps just writing the name.</p>
<p>That car was ridiculous.</p>
<p>I once ended up racing a motorcycle somewhere in Tennessee and actually kept up with the bastard.</p>
<p>That's another story.</p>
<p>The important part is this:</p>
<p>The Evo was not a car.</p>
<p>It was four-wheel-drive poor decision making with a turbocharger.</p>
<p>So I head north.</p>
<p>The first hour is uneventful. Interstate 87. Sun's out. Armin van Buuren blasting through the speakers. Life is good. I'm doing a completely respectable...mid-eighties.</p>
<p>Eventually I leave the highway and turn toward Old Forge.</p>
<p>That's when the road changes.</p>
<p>Single lane.</p>
<p>Mountain road.</p>
<p>Long sweeping corners.</p>
<p>Elevation changes.</p>
<p>One of those roads engineers accidentally design specifically for people with impulse control issues.</p>
<p>The speed limit is 55.</p>
<p>I'm doing 90.</p>
<p>The Evo doesn't care.</p>
<p>Honestly, the car is probably offended I'm going that slowly.</p>
<p>It just plants itself through every corner like physics had personally apologized to Mitsubishi.</p>
<p>Then I arrive at the first corner that politely informs me I am, in fact, not a rally driver.</p>
<p>I throw the car in way too fast.</p>
<p>Halfway through, the rear starts moving around.</p>
<p>Not enough to lose it.</p>
<p>Just enough for my brain to wake up from whatever chemical vacation it had been on.</p>
<p>It screams,</p>
<blockquote>
<p>"OH SHIT. YOU'RE ABOUT TO BUY SOME LAND."</p>
</blockquote>
<p>That's one thing your brain does remarkably well.</p>
<p>It doesn't tell you you're going to die.</p>
<p>It immediately starts estimating real estate.</p>
<p>I remember thinking,</p>
<blockquote>
<p>"Shut the fuck up. This isn't about thinking."</p>
</blockquote>
<p>Which, in hindsight, is exactly the sort of sentence you should never hear yourself think while entering a corner at ninety miles an hour.</p>
<p>Then something even more absurd happened.</p>
<p>Instead of lifting...</p>
<p>...I gave it more throttle.</p>
<p>Not because I understood weight transfer.</p>
<p>Not because I had rally training.</p>
<p>Not because I had some deep understanding of vehicle dynamics.</p>
<p>No.</p>
<p>Because every survival instinct I apparently possess was replaced by,</p>
<blockquote>
<p>"Fuck it."</p>
</blockquote>
<p>Somehow...</p>
<p>it worked.</p>
<p>The car hooked up.</p>
<p>Straightened out.</p>
<p>Shot out of the corner.</p>
<p>And naturally, having learned absolutely nothing...</p>
<p>...I repeated the experiment.</p>
<p>Several times.</p>
<p>Each corner became the same conversation.</p>
<p>Brain:</p>
<blockquote>
<p>"We're going to die."</p>
</blockquote>
<p>Instinct:</p>
<blockquote>
<p>"Counterpoint..."</p>
</blockquote>
<p>Accelerator.</p>
<p>To this day, I have no idea how I arrived in Old Forge without becoming part of the local geography.</p>
<p>By the time I got there I wasn't driving anymore.</p>
<p>I was basically just a bag of adrenaline wearing a hoodie.</p>
<p>My brother was hanging out with his buddy at the mill, doing random jobs.</p>
<p>We spent the evening drinking in his tiny trailer.</p>
<p>At some point he made weed butter.</p>
<p>Which sounded harmless.</p>
<p>It was not harmless.</p>
<p>I've never been that hungry before or since.</p>
<p>We demolished every edible object in the trailer.</p>
<p>I'm fairly certain we would have eaten the instruction manual if we'd found it.</p>
<p>Then reality returned.</p>
<p>Specifically, winter.</p>
<p>That trailer was fantastic.</p>
<p>If by <em>fantastic</em> you mean "perfectly engineered to remind you heat is a privilege."</p>
<p>There was a tiny wood stove.</p>
<p>It worked beautifully.</p>
<p>Within approximately eighteen inches.</p>
<p>Outside that magical circle...</p>
<p>...you entered another climate zone.</p>
<p>Around three or four in the morning we gave up pretending we'd ever be warm.</p>
<p>We climbed into the same bed like a pair of hobos who'd somehow misplaced their bridge.</p>
<p>The blanket had all the insulating properties of folded newspaper.</p>
<p>I have no scientific evidence for this.</p>
<p>Just memories.</p>
<p>We somehow survived the night.</p>
<p>Barely.</p>
<p>I woke up sore, frozen, and questioning several life choices.</p>
<p>Oddly enough...</p>
<p>not the driving.</p>
<p>I don't remember much about the rest of the weekend.</p>
<p>The drive home was fast, but not stupid.</p>
<p>Or at least, less creatively stupid.</p>
<p>Looking back almost a decade later, that's the part I remember.</p>
<p>Not the speed.</p>
<p>Not the trailer.</p>
<p>Not even nearly becoming a permanent resident of the Adirondacks.</p>
<p>What I remember is that strange moment where instinct completely overpowered fear.</p>
<p>I've spent years wondering what life would look like if I could summon that same instinct outside a driver's seat.</p>
<p>Not the stupidity.</p>
<p>Just the commitment.</p>
<p>If I could slam the metaphorical accelerator every time fear showed up...</p>
<p>I'd probably be unstoppable.</p>
<p>Or dead.</p>
<p>History suggests the odds are disappointingly close to fifty-fifty.</p>]]></content:encoded>
            <category>Absurd</category>
            <category>Philosophy</category>
            <category>Stories</category>
        </item>
        <item>
            <title><![CDATA[Apparently My Hands Were the Problem]]></title>
            <link>https://blog.subzerodev.com/apparently-my-hands-were-the-problem</link>
            <guid>https://blog.subzerodev.com/apparently-my-hands-were-the-problem</guid>
            <pubDate>Thu, 30 Jul 2026 03:22:20 GMT</pubDate>
            <description><![CDATA[Sometimes the only unacceptable part of an absurd situation is that someone finds it funny.]]></description>
            <content:encoded><![CDATA[<p>One of the things about driving around here is that eventually you stop questioning reality.</p>
<p>The streets are narrow. People park wherever physics allows, and occasionally where it doesn't. Roads become suggestions. Lanes become philosophical concepts. I've gotten used to it.</p>
<p>I'm driving the BMW through one of these neighborhoods when I come across a black BMW parked directly in my lane, facing me.</p>
<p>Fine.</p>
<p>I stop behind it and wait for the oncoming traffic to clear so I can drive around.</p>
<p>While I'm waiting, a van pulls up behind the BMW and parks halfway into my lane, making an already narrow street even narrower.</p>
<p>I look at it and throw my hands up in the universal gesture of, "What is happening?"</p>
<p>That's it.</p>
<p>No yelling.</p>
<p>No horn.</p>
<p>No rolling down the window.</p>
<p>Just my hands in the air.</p>
<p>That's apparently the moment everything went sideways.</p>
<p>The guy jumps out of the van and immediately starts yelling.</p>
<p>"I don't have anywhere to park!"</p>
<p>"Oh, it's funny, huh?"</p>
<p>At that point I start laughing.</p>
<p>For about half a second I consider arguing.</p>
<p>Then I decide against it.</p>
<p>The more he yells, the more absurd the entire situation becomes, and the harder I laugh.</p>
<p>Eventually the traffic clears. I drive around both vehicles, give him a thumbs-up, still laughing, and continue on my way.</p>
<p>And I'm still not sure what the expected response was.</p>
<p>Was I supposed to apologize?</p>
<p>Pretend I didn't notice?</p>
<p>The road was already blocked.</p>
<p>The van made it worse.</p>
<p>The gesture was enough to trigger the argument.</p>
<p>The laughter just finished the job.</p>
<hr>
<p><strong>Well... why not?</strong></p>]]></content:encoded>
            <category>Absurd</category>
            <category>Stories</category>
        </item>
        <item>
            <title><![CDATA[Lucifer, the Fly, and the Negotiation That Failed Spectacularly]]></title>
            <link>https://blog.subzerodev.com/lucifer-fly-negotiation</link>
            <guid>https://blog.subzerodev.com/lucifer-fly-negotiation</guid>
            <pubDate>Thu, 30 Jul 2026 02:56:06 GMT</pubDate>
            <description><![CDATA[A perfectly reasonable attempt at diplomacy.]]></description>
            <content:encoded><![CDATA[<p>People assume Hell is loud.</p>
<p>It isn't.</p>
<p>Most days it's just me, coffee, and whatever absurd problem the universe decides to send my way.</p>
<p>This morning?</p>
<p>A fly.</p>
<p>Now, I am a reasonable devil.</p>
<p>The terms were simple.</p>
<p>You stay over there.
I stay over here.
We both continue existing.</p>
<p>A beautiful treaty.</p>
<p>The fly rejected diplomacy.</p>
<p>It landed on my arm.</p>
<p>Strike one.</p>
<p>Then it circled my head like it had just discovered air superiority.</p>
<p>Strike two.</p>
<p>Then—this arrogant little aerospace engineer—landed directly on my nose.</p>
<p>Now...</p>
<p>People will later tell the story as though I "lost my temper."</p>
<p>Incorrect.</p>
<p>I simply enforced the consequences outlined in the original agreement.</p>
<p>Negotiations had concluded.</p>
<p>The fly became a statistic.</p>
<p>This, incidentally, is how most human conflicts start.</p>
<p>Not because anyone wanted war.</p>
<p>Because someone looked at a perfectly good boundary and thought:</p>
<p><em>"Yeah... but what if I ignored it?"</em></p>
<p>Anyway.</p>
<p>Coffee was still warm.</p>
<p>The day continued.</p>
<p>Some lessons are expensive.</p>
<p>For the fly, the invoice was fatal.</p>
<hr>
<p><strong>Well... why not?</strong></p>]]></content:encoded>
            <category>Absurd</category>
            <category>Lucifer</category>
            <category>Philosophy</category>
            <category>Stories</category>
        </item>
        <item>
            <title><![CDATA[Welcome to SubZeroDev Blog]]></title>
            <link>https://blog.subzerodev.com/welcome</link>
            <guid>https://blog.subzerodev.com/welcome</guid>
            <pubDate>Wed, 29 Jul 2026 22:12:21 GMT</pubDate>
            <description><![CDATA[The first post establishes the blog's scope and publishing approach.]]></description>
            <content:encoded><![CDATA[<p>The SubZeroDev Blog is now live.</p>
<p>This site is the public home for notes on building and maintaining SubZeroDev
projects. The first milestone is intentionally small: a documentation-backed
site, a repeatable publishing path, and a clear place for future posts.</p>
<p>Every post is written in this repository, reviewed through a pull request, and
published to GitHub Pages after merge. That keeps the published content tied to
the same source, checks, and history as the site that serves it.</p>
<p>For the current repository scope and local workflow, start with the
<a href="https://blog.subzerodev.com/docs/" target="_blank" rel="noopener noreferrer" class="">documentation</a>. For the exact authoring
process, see <a href="https://blog.subzerodev.com/docs/writing-posts/" target="_blank" rel="noopener noreferrer" class="">Writing Posts</a>.</p>]]></content:encoded>
            <category>Site Updates</category>
            <category>Blog Publishing</category>
        </item>
        <item>
            <title><![CDATA[The AI-Assisted Software Engineering Workflow]]></title>
            <link>https://blog.subzerodev.com/ai-assisted-engineering-workflow</link>
            <guid>https://blog.subzerodev.com/ai-assisted-engineering-workflow</guid>
            <pubDate>Wed, 29 Jul 2026 09:00:00 GMT</pubDate>
            <description><![CDATA[The living record of the operating model behind SubZeroDev projects, published in full across a six-part series.]]></description>
            <content:encoded><![CDATA[<p><strong>Status:</strong> Living document<br>
<strong>Last updated:</strong> July 29, 2026<br>
<strong>Maturity:</strong> Actively used and rapidly evolving</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="executive-summary">Executive Summary<a href="https://blog.subzerodev.com/ai-assisted-engineering-workflow#executive-summary" class="hash-link" aria-label="Direct link to Executive Summary" title="Direct link to Executive Summary" translate="no">​</a></h2>
<p>This workflow treats AI systems as specialized members of a software engineering
team rather than as interchangeable coding assistants. Repository conventions,
specifications, ranked milestones, reusable protocols, automated reviews, and
infrastructure-as-code provide the operating structure. Short commands such as
“do the next milestone” work because the repository already describes how the
agent should operate.</p>
<p>The current process has already supported shipping roughly three to
three-and-a-half usable projects in about a week, alongside additional design
work. The main constraint is no longer writing code. It is selecting priorities,
maintaining context, coordinating agents, reviewing results, and deciding what to
automate next.</p>
<p>The emerging architectural idea is <strong>Projects as Code</strong>: a project’s source,
infrastructure, documentation, workflows, agent behavior, publishing, and
governance should be declarative, version-controlled, reproducible, and
increasingly automated.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="core-operating-principles">Core Operating Principles<a href="https://blog.subzerodev.com/ai-assisted-engineering-workflow#core-operating-principles" class="hash-link" aria-label="Direct link to Core Operating Principles" title="Direct link to Core Operating Principles" translate="no">​</a></h2>
<ol>
<li class=""><strong>Specialize AI roles.</strong> Use each model or tool where it performs best instead
of searching for one universally “best” AI.</li>
<li class=""><strong>Keep operational knowledge in the repository.</strong> Agent instructions,
specifications, milestones, reports, and conventions are versioned project
assets.</li>
<li class=""><strong>Inspect before changing.</strong> Agents discover the repository’s existing
structure and applicable instructions before acting.</li>
<li class=""><strong>Plan and review independently.</strong> For consequential work, one model plans and
another challenges the plan before implementation.</li>
<li class=""><strong>Rank work by value.</strong> Specifications are decomposed into ordered milestones
so an agent can select the next highest-value task.</li>
<li class=""><strong>Codify proven work.</strong> Complete a complex task successfully once, then have
the AI extract the successful process into a reusable protocol.</li>
<li class=""><strong>Automate repeated friction.</strong> Recurring setup or coordination work becomes
code, configuration, a protocol, a skill, or a plugin.</li>
<li class=""><strong>Prefer files and build pipelines.</strong> Markdown, YAML, JSON, Git, and generated
artifacts are favored over unnecessary databases and services.</li>
<li class=""><strong>Keep execution local when tooling matters.</strong> Local development currently
provides the full toolchain and the easiest inspection loop.</li>
<li class=""><strong>Measure outcomes.</strong> Quota use, cycle time, review effectiveness, rework, and
project concurrency should be tracked empirically.</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="the-series">The Series<a href="https://blog.subzerodev.com/ai-assisted-engineering-workflow#the-series" class="hash-link" aria-label="Direct link to The Series" title="Direct link to The Series" translate="no">​</a></h2>
<p>The rest of the record is published in six parts. It is one document, split only
so that each part is readable on its own.</p>
<ol>
<li class=""><a href="https://blog.subzerodev.com/ai-workflow-roles-and-pipeline" target="_blank" rel="noopener noreferrer" class="">Roles and the end-to-end workflow</a>
— which model or tool owns which job, and the nine stages from bootstrap to
protocol extraction.</li>
<li class=""><a href="https://blog.subzerodev.com/ai-workflow-architecture" target="_blank" rel="noopener noreferrer" class="">Architecture, the Terraform runner, and publishing</a>
— the split between declarative external state and repository artifacts, the
thin Terraform runner plugin, and the content pipeline behind this blog.</li>
<li class=""><a href="https://blog.subzerodev.com/ai-workflow-environments" target="_blank" rel="noopener noreferrer" class="">Development environments and mobility</a>
— why execution stays local for now, what the cloud environments lacked,
portable project images, and multi-machine transport.</li>
<li class=""><a href="https://blog.subzerodev.com/ai-workflow-observations-and-limits" target="_blank" rel="noopener noreferrer" class="">Observations and operating limits</a>
— who gets the multiplier, how the human role expanded, the concurrency
ceiling, and dated quota observations.</li>
<li class=""><a href="https://blog.subzerodev.com/ai-workflow-metrics" target="_blank" rel="noopener noreferrer" class="">Metrics to track</a>
— delivery, quality, AI efficiency, and human load, plus the workflow
comparisons worth running.</li>
<li class=""><a href="https://blog.subzerodev.com/ai-workflow-state-and-roadmap" target="_blank" rel="noopener noreferrer" class="">Current state, roadmap, and Projects as Code</a>
— what is proven, what is experimental, what is planned, and the target model
the whole thing is converging on.</li>
</ol>]]></content:encoded>
            <category>AI-Assisted Engineering</category>
            <category>Automation</category>
            <category>Projects as Code</category>
        </item>
        <item>
            <title><![CDATA[Roles and the End-to-End Workflow]]></title>
            <link>https://blog.subzerodev.com/ai-workflow-roles-and-pipeline</link>
            <guid>https://blog.subzerodev.com/ai-workflow-roles-and-pipeline</guid>
            <pubDate>Wed, 29 Jul 2026 08:55:00 GMT</pubDate>
            <description><![CDATA[Which model or tool owns which job, and the nine stages from repository bootstrap to protocol extraction.]]></description>
            <content:encoded><![CDATA[<p><em>Part 1 of <a href="https://blog.subzerodev.com/ai-assisted-engineering-workflow" target="_blank" rel="noopener noreferrer" class="">The AI-Assisted Software Engineering Workflow</a>.</em></p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="ai-and-automation-roles">AI and Automation Roles<a href="https://blog.subzerodev.com/ai-workflow-roles-and-pipeline#ai-and-automation-roles" class="hash-link" aria-label="Direct link to AI and Automation Roles" title="Direct link to AI and Automation Roles" translate="no">​</a></h2>
<table><thead><tr><th>Role</th><th>Current tool or approach</th></tr></thead><tbody><tr><td>Repository bootstrap</td><td>Reusable Codex agent/setup instructions</td></tr><tr><td>Primary planner</td><td>Opus or Codex</td></tr><tr><td>Independent architecture reviewer</td><td>Whichever of Opus or Codex did not produce the first plan</td></tr><tr><td>Primary implementer</td><td>Codex at high effort or Sonnet at high effort</td></tr><tr><td>Pull-request reviewer</td><td>Qodo</td></tr><tr><td>Review remediation</td><td>Codex agent</td></tr><tr><td>Project and issue automation</td><td>GitHub integrations and Markdown-driven metadata</td></tr><tr><td>Infrastructure reconciliation</td><td>Terraform and provider ecosystem</td></tr><tr><td>Publishing interface</td><td>AI skill first; public MCP and Automator/NPX plugin planned</td></tr><tr><td>Final judgment and prioritization</td><td>Human operator</td></tr></tbody></table>
<p>Copilot automatic code review was removed because it consumed too much of the
available Pro quota. Qodo currently provides the dedicated automated review gate,
subject to its monthly limit.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="end-to-end-workflow">End-to-End Workflow<a href="https://blog.subzerodev.com/ai-workflow-roles-and-pipeline#end-to-end-workflow" class="hash-link" aria-label="Direct link to End-to-End Workflow" title="Direct link to End-to-End Workflow" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="1-bootstrap-the-project">1. Bootstrap the Project<a href="https://blog.subzerodev.com/ai-workflow-roles-and-pipeline#1-bootstrap-the-project" class="hash-link" aria-label="Direct link to 1. Bootstrap the Project" title="Direct link to 1. Bootstrap the Project" translate="no">​</a></h3>
<p>A reusable setup agent initializes or inspects a repository and brings it to a
standard baseline. A typical invocation can be as short as:</p>
<blockquote>
<p>Read and inspect, then follow the agent setup. Git is already set up and the
remote is linked. The name is <code>blog.subzerodev.com</code>.</p>
</blockquote>
<p>The bootstrap process can cover:</p>
<ul>
<li class="">Repository and workspace structure</li>
<li class="">README and documentation</li>
<li class=""><code>AGENTS.md</code> or equivalent agent guidance</li>
<li class="">CI and GitHub workflows</li>
<li class="">Pull-request conventions and repository settings</li>
<li class="">Report locations</li>
<li class="">Project metadata</li>
<li class="">Initial specifications and milestone structure</li>
<li class="">Documentation and GitHub Pages conventions</li>
</ul>
<p>The setup instructions are portable: after proving them in one repository, they
can be copied into another and supplied with only project-specific variables.</p>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="2-describe-the-work">2. Describe the Work<a href="https://blog.subzerodev.com/ai-workflow-roles-and-pipeline#2-describe-the-work" class="hash-link" aria-label="Direct link to 2. Describe the Work" title="Direct link to 2. Describe the Work" translate="no">​</a></h3>
<p>The repository contains the context agents need to operate consistently:</p>
<div class="language-text codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-text codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">project/</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">├── AGENTS.md</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">├── README.md</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">├── specifications/</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">├── milestones/</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">├── reports/</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">├── protocols/</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">└── project configuration</span><br></div></code></pre></div></div>
<p>Specifications are broken into milestones and ranked by value. This supports
compact commands such as:</p>
<ul>
<li class="">“Do the next milestone.”</li>
<li class="">“Do the highest-value milestone.”</li>
<li class="">“Close this PR and do the next one.”</li>
<li class="">“Address the review comments.”</li>
</ul>
<p>The intelligence is distributed across the repository and its operating
conventions, not concentrated in a single large prompt.</p>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="3-plan">3. Plan<a href="https://blog.subzerodev.com/ai-workflow-roles-and-pipeline#3-plan" class="hash-link" aria-label="Direct link to 3. Plan" title="Direct link to 3. Plan" translate="no">​</a></h3>
<p>Two planning patterns are in active use:</p>
<p><strong>Opus-first</strong></p>
<ol>
<li class="">Opus develops requirements, architecture, edge cases, and an implementation
plan.</li>
<li class="">Sonnet or Codex implements the plan.</li>
</ol>
<p><strong>Codex-first with cross-review</strong></p>
<ol>
<li class="">Codex inspects the repository and drafts the plan.</li>
<li class="">Opus independently reviews it for architectural gaps and missed constraints.</li>
<li class="">Codex incorporates valid findings.</li>
<li class="">The review loop repeats when the project justifies it.</li>
</ol>
<p>This moves expensive discoveries earlier, when changing a plan is cheaper than
reworking an implementation.</p>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="4-implement">4. Implement<a href="https://blog.subzerodev.com/ai-workflow-roles-and-pipeline#4-implement" class="hash-link" aria-label="Direct link to 4. Implement" title="Direct link to 4. Implement" translate="no">​</a></h3>
<p>Implementation normally goes to:</p>
<ul>
<li class=""><strong>Codex at high effort</strong>, especially for repository-aware work, or</li>
<li class=""><strong>Sonnet at high effort</strong> as an alternative implementation path.</li>
</ul>
<p>The implementer follows the reviewed plan, repository instructions, and milestone
definition. Agents may work on separate projects or separate stages in parallel,
but human context capacity governs the practical concurrency limit.</p>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="5-open-a-draft-pull-request">5. Open a Draft Pull Request<a href="https://blog.subzerodev.com/ai-workflow-roles-and-pipeline#5-open-a-draft-pull-request" class="hash-link" aria-label="Direct link to 5. Open a Draft Pull Request" title="Direct link to 5. Open a Draft Pull Request" translate="no">​</a></h3>
<p>Work is placed in a draft pull request early enough for automated review. The
draft state is part of the review protocol rather than merely a final publishing
step.</p>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="6-run-the-automated-review-gate">6. Run the Automated Review Gate<a href="https://blog.subzerodev.com/ai-workflow-roles-and-pipeline#6-run-the-automated-review-gate" class="hash-link" aria-label="Direct link to 6. Run the Automated Review Gate" title="Direct link to 6. Run the Automated Review Gate" translate="no">​</a></h3>
<p>Qodo reviews the draft pull request. The review is evaluated for:</p>
<ul>
<li class="">Correct defects</li>
<li class="">Architectural issues</li>
<li class="">Security or reliability problems</li>
<li class="">Maintainability concerns</li>
<li class="">False positives</li>
<li class="">Issues that duplicate earlier review stages</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="7-address-findings">7. Address Findings<a href="https://blog.subzerodev.com/ai-workflow-roles-and-pipeline#7-address-findings" class="hash-link" aria-label="Direct link to 7. Address Findings" title="Direct link to 7. Address Findings" translate="no">​</a></h3>
<p>Codex inspects the review comments, makes justified changes, verifies the
implementation, and updates the pull request. Human judgment remains responsible
for deciding which comments are valid and whether the result is ready.</p>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="8-merge-and-ship">8. Merge and Ship<a href="https://blog.subzerodev.com/ai-workflow-roles-and-pipeline#8-merge-and-ship" class="hash-link" aria-label="Direct link to 8. Merge and Ship" title="Direct link to 8. Merge and Ship" translate="no">​</a></h3>
<p>After verification and final review, the pull request is merged and deployment
proceeds through the repository’s normal automation.</p>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="9-extract-and-improve-the-protocol">9. Extract and Improve the Protocol<a href="https://blog.subzerodev.com/ai-workflow-roles-and-pipeline#9-extract-and-improve-the-protocol" class="hash-link" aria-label="Direct link to 9. Extract and Improve the Protocol" title="Direct link to 9. Extract and Improve the Protocol" translate="no">​</a></h3>
<p>When a new or complex workflow succeeds:</p>
<ol>
<li class="">Complete and verify it.</li>
<li class="">Ask the AI to reconstruct the instructions it followed.</li>
<li class="">Review the generated instructions against what actually worked.</li>
<li class="">Save them as a reusable, version-controlled protocol.</li>
<li class="">Use the protocol directly on the next project.</li>
<li class="">Automate it further when the value is established.</li>
</ol>
<p>This is process extraction from proven execution, not speculative process design.</p>
<hr>
<p><em>Next: <a href="https://blog.subzerodev.com/ai-workflow-architecture" target="_blank" rel="noopener noreferrer" class="">Architecture, the Terraform runner, and publishing</a>.</em></p>]]></content:encoded>
            <category>AI-Assisted Engineering</category>
            <category>Automation</category>
        </item>
        <item>
            <title><![CDATA[Architecture, the Terraform Runner, and Publishing]]></title>
            <link>https://blog.subzerodev.com/ai-workflow-architecture</link>
            <guid>https://blog.subzerodev.com/ai-workflow-architecture</guid>
            <pubDate>Wed, 29 Jul 2026 08:50:00 GMT</pubDate>
            <description><![CDATA[Declarative external state and repository artifacts as two control layers, a thin Terraform runner plugin, and the content pipeline behind this blog.]]></description>
            <content:encoded><![CDATA[<p><em>Part 2 of <a href="https://blog.subzerodev.com/ai-assisted-engineering-workflow" target="_blank" rel="noopener noreferrer" class="">The AI-Assisted Software Engineering Workflow</a>.</em></p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="architecture">Architecture<a href="https://blog.subzerodev.com/ai-workflow-architecture#architecture" class="hash-link" aria-label="Direct link to Architecture" title="Direct link to Architecture" translate="no">​</a></h2>
<p>The workflow is converging on two complementary control layers.</p>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="declarative-external-state">Declarative External State<a href="https://blog.subzerodev.com/ai-workflow-architecture#declarative-external-state" class="hash-link" aria-label="Direct link to Declarative External State" title="Direct link to Declarative External State" translate="no">​</a></h3>
<p>Terraform owns infrastructure and service configuration, including:</p>
<ul>
<li class="">GitHub repositories and settings</li>
<li class="">Branch protection or rulesets</li>
<li class="">GitHub Pages</li>
<li class="">Actions variables and secrets where appropriate</li>
<li class="">Cloudflare DNS records</li>
<li class="">Hosting and other provider-backed resources</li>
</ul>
<p>Terraform contributes planning, state management, drift detection, idempotency,
and the ability to use a large provider ecosystem.</p>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="repository-artifacts-and-intelligent-work">Repository Artifacts and Intelligent Work<a href="https://blog.subzerodev.com/ai-workflow-architecture#repository-artifacts-and-intelligent-work" class="hash-link" aria-label="Direct link to Repository Artifacts and Intelligent Work" title="Direct link to Repository Artifacts and Intelligent Work" translate="no">​</a></h3>
<p>Agents and Automator own content and engineering artifacts, including:</p>
<ul>
<li class="">README files</li>
<li class="">Agent instructions</li>
<li class="">Specifications</li>
<li class="">Milestones and tasks</li>
<li class="">Documentation</li>
<li class="">Reports</li>
<li class="">Blog posts</li>
<li class="">Reusable protocols</li>
</ul>
<p>The intended division is:</p>
<div class="language-text codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-text codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Desired project state</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">├── Terraform</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">│   └── External infrastructure and service configuration</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">└── Agents / Automator</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    └── Repository content, reasoning, planning, and generated artifacts</span><br></div></code></pre></div></div>
<p>The AI’s long-term role is primarily planner and operator: interpret intent,
update the desired state, preview changes, invoke deterministic systems, and
review the outcome.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="terraform-runner-plugin">Terraform Runner Plugin<a href="https://blog.subzerodev.com/ai-workflow-architecture#terraform-runner-plugin" class="hash-link" aria-label="Direct link to Terraform Runner Plugin" title="Direct link to Terraform Runner Plugin" translate="no">​</a></h2>
<p>Rather than building separate imperative integrations for GitHub, Cloudflare,
hosting platforms, and future providers, Automator needs a thin Terraform runner
plugin.</p>
<p>Its initial interface can remain small:</p>
<ul>
<li class=""><code>init</code></li>
<li class=""><code>validate</code></li>
<li class=""><code>plan</code></li>
<li class=""><code>apply</code></li>
<li class=""><code>output</code></li>
<li class=""><code>destroy</code> with explicit safeguards</li>
</ul>
<p>Terraform providers supply domain-specific integrations. Automator coordinates
them. This keeps the platform focused on orchestration instead of rebuilding
mature infrastructure tooling.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="content-and-blog-publishing">Content and Blog Publishing<a href="https://blog.subzerodev.com/ai-workflow-architecture#content-and-blog-publishing" class="hash-link" aria-label="Direct link to Content and Blog Publishing" title="Direct link to Content and Blog Publishing" translate="no">​</a></h2>
<p>The blog is live and was brought online in approximately 30 minutes. It is
Git-backed and deliberately avoids a database.</p>
<p>The content pipeline is:</p>
<div class="language-text codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-text codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">YAML source</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  → transform</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  → validate</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  → generate JSON and/or Markdown</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  → commit and push</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  → serve through GitHub Raw / GitHub Pages</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  → website consumes the published data</span><br></div></code></pre></div></div>
<p>The authoring interface is intentionally small:</p>
<ul>
<li class=""><code>/create-blog</code> — create a draft and required metadata</li>
<li class=""><code>/preview</code> — render, inspect, and validate</li>
<li class=""><code>/publish</code> — commit, push, and trigger deployment</li>
</ul>
<p>The planned delivery path is:</p>
<ol>
<li class="">Implement and prove the workflow as an AI skill.</li>
<li class="">Expose the capability through a public MCP interface.</li>
<li class="">Package it as an Automator plugin or NPX command.</li>
<li class="">Keep client-specific skills as thin adapters over the shared capability.</li>
</ol>
<p>The living workflow document is the source material; blog entries are curated,
publishable outputs from that knowledge.</p>
<hr>
<p><em>Next: <a href="https://blog.subzerodev.com/ai-workflow-environments" target="_blank" rel="noopener noreferrer" class="">Development environments and mobility</a>.</em></p>]]></content:encoded>
            <category>AI-Assisted Engineering</category>
            <category>Automation</category>
            <category>Projects as Code</category>
        </item>
        <item>
            <title><![CDATA[Development Environments and Mobility]]></title>
            <link>https://blog.subzerodev.com/ai-workflow-environments</link>
            <guid>https://blog.subzerodev.com/ai-workflow-environments</guid>
            <pubDate>Wed, 29 Jul 2026 08:45:00 GMT</pubDate>
            <description><![CDATA[Why execution stays local for now, what the vendor cloud environments lacked, portable project images, and moving unfinished work between machines.]]></description>
            <content:encoded><![CDATA[<p><em>Part 3 of <a href="https://blog.subzerodev.com/ai-assisted-engineering-workflow" target="_blank" rel="noopener noreferrer" class="">The AI-Assisted Software Engineering Workflow</a>.</em></p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="development-environments-and-mobility">Development Environments and Mobility<a href="https://blog.subzerodev.com/ai-workflow-environments#development-environments-and-mobility" class="hash-link" aria-label="Direct link to Development Environments and Mobility" title="Direct link to Development Environments and Mobility" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="current-default-local-execution">Current Default: Local Execution<a href="https://blog.subzerodev.com/ai-workflow-environments#current-default-local-execution" class="hash-link" aria-label="Direct link to Current Default: Local Execution" title="Direct link to Current Default: Local Execution" translate="no">​</a></h3>
<p>Local development remains the best fit because it provides:</p>
<ul>
<li class="">Docker CLI and the complete development toolchain</li>
<li class="">Straightforward inspection of changes</li>
<li class="">Direct access to local services and resources</li>
<li class="">Easier testing and integration</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="cloud-environment-findings">Cloud Environment Findings<a href="https://blog.subzerodev.com/ai-workflow-environments#cloud-environment-findings" class="hash-link" aria-label="Direct link to Cloud Environment Findings" title="Direct link to Cloud Environment Findings" translate="no">​</a></h3>
<p><strong>Codex cloud environments:</strong> setup friction is too high for the current
workflow.</p>
<p><strong>Claude cloud environments:</strong> marginally better because containers can resume,
but missing tools and awkward local inspection reduce their value.</p>
<p>The current conclusion is not that cloud execution is unusable, but that
vendor-controlled cloud workspaces do not yet fit a heavily tooled local
workflow.</p>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="bring-your-own-portable-environment">Bring-Your-Own Portable Environment<a href="https://blog.subzerodev.com/ai-workflow-environments#bring-your-own-portable-environment" class="hash-link" aria-label="Direct link to Bring-Your-Own Portable Environment" title="Direct link to Bring-Your-Own Portable Environment" translate="no">​</a></h3>
<p>The more promising experiment is a project-owned development container:</p>
<ul>
<li class="">A common base image contains shared tools and interfaces.</li>
<li class="">A project image layers dependencies and project-specific services.</li>
<li class="">Source may be mounted or baked into selected images.</li>
<li class="">Existing container hosting can provide a remote, reproducible workspace.</li>
</ul>
<p>Open design questions include:</p>
<ul>
<li class="">Baked source versus mounted source</li>
<li class="">Git and credential handling</li>
<li class="">Secrets management</li>
<li class="">Docker access from the development container</li>
<li class="">Remote editor experience</li>
<li class="">Propagating base-image updates</li>
<li class="">Persistence and backup of in-progress work</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="multi-machine-synchronization">Multi-Machine Synchronization<a href="https://blog.subzerodev.com/ai-workflow-environments#multi-machine-synchronization" class="hash-link" aria-label="Direct link to Multi-Machine Synchronization" title="Direct link to Multi-Machine Synchronization" translate="no">​</a></h3>
<p>Dropbox currently transports unfinished work between machines without requiring a
WIP commit for every handoff. Git remains authoritative version control.</p>
<p>This is convenient but requires discipline:</p>
<ul>
<li class="">Do not edit the same workspace concurrently on multiple machines.</li>
<li class="">Wait for synchronization before changing machines.</li>
<li class="">Treat conflicts and partial synchronization as operational risks.</li>
<li class="">Continue using commits for durable, meaningful history.</li>
</ul>
<p>A future improvement is an automatic handoff snapshot: save, optionally validate,
create a recoverable checkpoint, and synchronize or push to a temporary branch.</p>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="distributed-execution">Distributed Execution<a href="https://blog.subzerodev.com/ai-workflow-environments#distributed-execution" class="hash-link" aria-label="Direct link to Distributed Execution" title="Direct link to Distributed Execution" translate="no">​</a></h3>
<p>Remote-capable tools allow one machine to run planning or analysis while another
handles interactive implementation and review. This can separate contexts and
overlap long-running work, but it is an optional organizational technique rather
than a fundamental capability multiplier.</p>
<hr>
<p><em>Next: <a href="https://blog.subzerodev.com/ai-workflow-observations-and-limits" target="_blank" rel="noopener noreferrer" class="">Observations and operating limits</a>.</em></p>]]></content:encoded>
            <category>AI-Assisted Engineering</category>
            <category>Automation</category>
        </item>
        <item>
            <title><![CDATA[Observations and Operating Limits]]></title>
            <link>https://blog.subzerodev.com/ai-workflow-observations-and-limits</link>
            <guid>https://blog.subzerodev.com/ai-workflow-observations-and-limits</guid>
            <pubDate>Wed, 29 Jul 2026 08:40:00 GMT</pubDate>
            <description><![CDATA[Who gets the multiplier, how the human role expanded, the project concurrency ceiling, and dated observations of quota behavior.]]></description>
            <content:encoded><![CDATA[<p><em>Part 4 of <a href="https://blog.subzerodev.com/ai-assisted-engineering-workflow" target="_blank" rel="noopener noreferrer" class="">The AI-Assisted Software Engineering Workflow</a>.</em></p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="observations-and-operating-limits">Observations and Operating Limits<a href="https://blog.subzerodev.com/ai-workflow-observations-and-limits#observations-and-operating-limits" class="hash-link" aria-label="Direct link to Observations and Operating Limits" title="Direct link to Observations and Operating Limits" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="experienced-engineers-receive-the-largest-multiplier">Experienced Engineers Receive the Largest Multiplier<a href="https://blog.subzerodev.com/ai-workflow-observations-and-limits#experienced-engineers-receive-the-largest-multiplier" class="hash-link" aria-label="Direct link to Experienced Engineers Receive the Largest Multiplier" title="Direct link to Experienced Engineers Receive the Largest Multiplier" translate="no">​</a></h3>
<p>“Vibe coding” is real in this workflow, but it is not effortless button-pushing.</p>
<p>The multiplier comes from combining high-volume AI execution with experienced
judgment about architecture, priorities, correctness, and tradeoffs.</p>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="the-human-role-has-expanded">The Human Role Has Expanded<a href="https://blog.subzerodev.com/ai-workflow-observations-and-limits#the-human-role-has-expanded" class="hash-link" aria-label="Direct link to The Human Role Has Expanded" title="Direct link to The Human Role Has Expanded" translate="no">​</a></h3>
<p>AI has reduced the amount of manual, routine coding while expanding the operator
into several roles:</p>
<ul>
<li class="">CEO or product owner</li>
<li class="">Architect</li>
<li class="">Technical lead</li>
<li class="">Software engineer</li>
<li class="">QA lead</li>
<li class="">DevOps engineer</li>
<li class="">Automation engineer</li>
<li class="">Project coordinator</li>
</ul>
<p>The work has not disappeared. The bottleneck has moved from typing code to
directing, reviewing, integrating, and improving the system.</p>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="a-very-small-ai-first-company-is-plausible">A Very Small AI-First Company Is Plausible<a href="https://blog.subzerodev.com/ai-workflow-observations-and-limits#a-very-small-ai-first-company-is-plausible" class="hash-link" aria-label="Direct link to A Very Small AI-First Company Is Plausible" title="Direct link to A Very Small AI-First Company Is Plausible" translate="no">​</a></h3>
<p>The workflow suggests that one experienced operator can coordinate capabilities
that previously required several specialized roles. This does not mean a company
has no people; it means a small number of highly capable people can orchestrate a
larger volume and variety of work.</p>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="human-context-is-the-concurrency-limit">Human Context Is the Concurrency Limit<a href="https://blog.subzerodev.com/ai-workflow-observations-and-limits#human-context-is-the-concurrency-limit" class="hash-link" aria-label="Direct link to Human Context Is the Concurrency Limit" title="Direct link to Human Context Is the Concurrency Limit" translate="no">​</a></h3>
<p>The tools can support several simultaneous projects, but human context switching
becomes costly around four or five active projects.</p>
<p>Current operating guideline:</p>
<ul>
<li class=""><strong>Preferred:</strong> 2 active projects</li>
<li class=""><strong>Practical maximum:</strong> 3</li>
<li class=""><strong>Beyond 3:</strong> use only when work is clearly isolated and coordination is
lightweight</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="observed-quota-behavior">Observed Quota Behavior<a href="https://blog.subzerodev.com/ai-workflow-observations-and-limits#observed-quota-behavior" class="hash-link" aria-label="Direct link to Observed Quota Behavior" title="Direct link to Observed Quota Behavior" translate="no">​</a></h3>
<p>These are empirical observations and should be distinguished from official
product guarantees.</p>
<p><strong>Claude Max</strong></p>
<ul>
<li class="">Appears to use a weekly allocation.</li>
<li class="">The observed reset is on Sunday around 1:00 a.m. local time, but the exact time
still needs confirmation.</li>
<li class="">Opus planning, long contexts, high-effort work, and repeated iterations consume
the quota aggressively.</li>
</ul>
<p><strong>Codex</strong></p>
<ul>
<li class="">Appears to use a rolling or frequently replenished usage window.</li>
<li class="">Capacity returned to 100% after being nearly exhausted the previous day.</li>
<li class="">The displayed date shifts, suggesting usage falls out of a moving window.</li>
<li class="">More observation is needed to distinguish a true rolling window from daily or
hybrid replenishment.</li>
</ul>
<p><strong>Qodo</strong></p>
<ul>
<li class="">Provides useful automated review.</li>
<li class="">Has a monthly limit, so review capacity should be spent on work where the gate
adds value.</li>
</ul>
<hr>
<p><em>Next: <a href="https://blog.subzerodev.com/ai-workflow-metrics" target="_blank" rel="noopener noreferrer" class="">Metrics to track</a>.</em></p>]]></content:encoded>
            <category>AI-Assisted Engineering</category>
            <category>Automation</category>
        </item>
        <item>
            <title><![CDATA[Metrics to Track]]></title>
            <link>https://blog.subzerodev.com/ai-workflow-metrics</link>
            <guid>https://blog.subzerodev.com/ai-workflow-metrics</guid>
            <pubDate>Wed, 29 Jul 2026 08:35:00 GMT</pubDate>
            <description><![CDATA[Delivery, quality, AI efficiency, and human load — plus the workflow comparisons worth running against each other.]]></description>
            <content:encoded><![CDATA[<p><em>Part 5 of <a href="https://blog.subzerodev.com/ai-assisted-engineering-workflow" target="_blank" rel="noopener noreferrer" class="">The AI-Assisted Software Engineering Workflow</a>.</em></p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="metrics-to-track">Metrics to Track<a href="https://blog.subzerodev.com/ai-workflow-metrics#metrics-to-track" class="hash-link" aria-label="Direct link to Metrics to Track" title="Direct link to Metrics to Track" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="delivery">Delivery<a href="https://blog.subzerodev.com/ai-workflow-metrics#delivery" class="hash-link" aria-label="Direct link to Delivery" title="Direct link to Delivery" translate="no">​</a></h3>
<ul>
<li class="">Idea to initialized repository</li>
<li class="">Repository to reviewed plan</li>
<li class="">Plan to first working implementation</li>
<li class="">First implementation to draft pull request</li>
<li class="">Draft pull request to merge</li>
<li class="">Merge to deployed result</li>
<li class="">Shipped projects or milestones per week</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="quality">Quality<a href="https://blog.subzerodev.com/ai-workflow-metrics#quality" class="hash-link" aria-label="Direct link to Quality" title="Direct link to Quality" translate="no">​</a></h3>
<ul>
<li class="">Defects found during planning review</li>
<li class="">Defects found by Qodo</li>
<li class="">Valid findings versus false positives</li>
<li class="">Review comments requiring human interpretation</li>
<li class="">Rework after implementation</li>
<li class="">Escaped defects after merge</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="ai-efficiency">AI Efficiency<a href="https://blog.subzerodev.com/ai-workflow-metrics#ai-efficiency" class="hash-link" aria-label="Direct link to AI Efficiency" title="Direct link to AI Efficiency" translate="no">​</a></h3>
<ul>
<li class="">Model and effort level by task type</li>
<li class="">Planning and implementation usage</li>
<li class="">Follow-up prompts per milestone</li>
<li class="">Review cycles per pull request</li>
<li class="">Manual edits required</li>
<li class="">Outcome quality relative to quota consumed</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="human-load">Human Load<a href="https://blog.subzerodev.com/ai-workflow-metrics#human-load" class="hash-link" aria-label="Direct link to Human Load" title="Direct link to Human Load" translate="no">​</a></h3>
<ul>
<li class="">Concurrent active projects</li>
<li class="">Time spent restoring project context</li>
<li class="">Waiting or blocked time</li>
<li class="">Decisions requiring manual intervention</li>
<li class="">Satisfaction with the result</li>
</ul>
<p>Useful workflow comparisons include:</p>
<ul>
<li class="">Codex only</li>
<li class="">Opus → Codex</li>
<li class="">Opus → Sonnet</li>
<li class="">Codex → Opus review → Codex</li>
<li class="">Implementation with and without the Qodo gate</li>
</ul>
<hr>
<p><em>Next: <a href="https://blog.subzerodev.com/ai-workflow-state-and-roadmap" target="_blank" rel="noopener noreferrer" class="">Current state, roadmap, and Projects as Code</a>.</em></p>]]></content:encoded>
            <category>AI-Assisted Engineering</category>
            <category>Automation</category>
        </item>
        <item>
            <title><![CDATA[Current State, Roadmap, and Projects as Code]]></title>
            <link>https://blog.subzerodev.com/ai-workflow-state-and-roadmap</link>
            <guid>https://blog.subzerodev.com/ai-workflow-state-and-roadmap</guid>
            <pubDate>Wed, 29 Jul 2026 08:30:00 GMT</pubDate>
            <description><![CDATA[What is proven, what is experimental, what is planned, and the target model the whole workflow is converging on.]]></description>
            <content:encoded><![CDATA[<p><em>Part 6 of <a href="https://blog.subzerodev.com/ai-assisted-engineering-workflow" target="_blank" rel="noopener noreferrer" class="">The AI-Assisted Software Engineering Workflow</a>.</em></p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="current-state">Current State<a href="https://blog.subzerodev.com/ai-workflow-state-and-roadmap#current-state" class="hash-link" aria-label="Direct link to Current State" title="Direct link to Current State" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="proven-or-actively-used">Proven or Actively Used<a href="https://blog.subzerodev.com/ai-workflow-state-and-roadmap#proven-or-actively-used" class="hash-link" aria-label="Direct link to Proven or Actively Used" title="Direct link to Proven or Actively Used" translate="no">​</a></h3>
<ul>
<li class="">Repository bootstrap instructions</li>
<li class="">Repository-embedded agent guidance</li>
<li class="">Markdown specifications and value-ranked milestones</li>
<li class="">Opus/Codex cross-review</li>
<li class="">Codex or Sonnet high-effort implementation</li>
<li class="">Draft pull requests and Qodo review</li>
<li class="">Codex remediation of review comments</li>
<li class="">GitHub automation and project metadata</li>
<li class="">Git-backed blog publishing</li>
<li class="">YAML transformation and validation</li>
<li class="">GitHub Pages delivery</li>
<li class="">Terraform-managed Cloudflare DNS</li>
<li class="">Protocol extraction after successful tasks</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="active-experiments">Active Experiments<a href="https://blog.subzerodev.com/ai-workflow-state-and-roadmap#active-experiments" class="hash-link" aria-label="Direct link to Active Experiments" title="Direct link to Active Experiments" translate="no">​</a></h3>
<ul>
<li class="">Portable project development images</li>
<li class="">Dropbox-based multi-machine workspace transport</li>
<li class="">Parallel work across machines</li>
<li class="">More formal workflow analytics</li>
<li class="">Declarative project definitions</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="planned">Planned<a href="https://blog.subzerodev.com/ai-workflow-state-and-roadmap#planned" class="hash-link" aria-label="Direct link to Planned" title="Direct link to Planned" translate="no">​</a></h3>
<ul>
<li class="">Blog authoring skill with create, preview, and publish commands</li>
<li class="">Public blog MCP</li>
<li class="">Automator or NPX publishing plugin</li>
<li class="">Terraform runner plugin</li>
<li class="">Broader GitHub management through Terraform</li>
<li class="">Automated handoff snapshots</li>
<li class="">Automated publication of lessons from the living document</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="roadmap">Roadmap<a href="https://blog.subzerodev.com/ai-workflow-state-and-roadmap#roadmap" class="hash-link" aria-label="Direct link to Roadmap" title="Direct link to Roadmap" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="near-term">Near Term<a href="https://blog.subzerodev.com/ai-workflow-state-and-roadmap#near-term" class="hash-link" aria-label="Direct link to Near Term" title="Direct link to Near Term" translate="no">​</a></h3>
<ol>
<li class="">Keep this document current as the operating model changes.</li>
<li class="">Implement and prove <code>/create-blog</code>, <code>/preview</code>, and <code>/publish</code>.</li>
<li class="">Publish a first workflow article from this source.</li>
<li class="">Confirm Claude and Codex quota behavior through dated observations.</li>
<li class="">Begin recording cycle-time and review-effectiveness metrics.</li>
<li class="">Keep active project concurrency at two, with three as the normal ceiling.</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="next-stage">Next Stage<a href="https://blog.subzerodev.com/ai-workflow-state-and-roadmap#next-stage" class="hash-link" aria-label="Direct link to Next Stage" title="Direct link to Next Stage" translate="no">​</a></h3>
<ol>
<li class="">Build the thin Terraform runner plugin.</li>
<li class="">Move GitHub repository configuration and Cloudflare DNS into reusable Terraform
modules.</li>
<li class="">Define a minimal declarative project schema.</li>
<li class="">Separate organization-wide standards from generic bootstrap behavior.</li>
<li class="">Add safe preview and approval boundaries before infrastructure changes.</li>
<li class="">Automate work-session handoff and recovery checkpoints.</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_vQNn" id="longer-term">Longer Term<a href="https://blog.subzerodev.com/ai-workflow-state-and-roadmap#longer-term" class="hash-link" aria-label="Direct link to Longer Term" title="Direct link to Longer Term" translate="no">​</a></h3>
<ol>
<li class="">Make the project definition the canonical desired state.</li>
<li class="">Have specialized plugins claim and reconcile parts of that state.</li>
<li class="">Keep AI clients as thin conversational interfaces over public capabilities.</li>
<li class="">Detect drift in infrastructure, repository settings, documentation, and agent
protocols.</li>
<li class="">Turn repeated successful workflows into reusable skills and plugins.</li>
<li class="">Publish selected lessons automatically from the private living record.</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="target-model-projects-as-code">Target Model: Projects as Code<a href="https://blog.subzerodev.com/ai-workflow-state-and-roadmap#target-model-projects-as-code" class="hash-link" aria-label="Direct link to Target Model: Projects as Code" title="Direct link to Target Model: Projects as Code" translate="no">​</a></h2>
<p>The natural endpoint is a repository that describes not only the software, but the
complete system around it:</p>
<ul>
<li class="">What the project is</li>
<li class="">How the repository is configured</li>
<li class="">How infrastructure is provisioned</li>
<li class="">How agents operate</li>
<li class="">How work is prioritized</li>
<li class="">How code is reviewed</li>
<li class="">How documentation and content are generated</li>
<li class="">How the system is deployed</li>
<li class="">How lessons are captured and published</li>
</ul>
<p>In that model, the workflow becomes:</p>
<div class="language-text codeBlockContainer_KSI6 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_SAaO"><pre tabindex="0" class="prism-code language-text codeBlock_kVVq thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_uBsc"><div class="token-line" style="color:#bfc7d5"><span class="token plain">Intent</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  → declarative project definition</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  → AI-assisted planning and review</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  → Terraform and specialized executors</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  → implementation</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  → automated quality gates</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  → verified deployment</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  → observations</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  → refined protocols</span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  → publication</span><br></div></code></pre></div></div>
<p>The repository becomes the operational contract. Models can change, machines can
change, and individual tools can be replaced without losing the process.</p>
<h2 class="anchor anchorTargetStickyNavbar_vQNn" id="one-sentence-definition">One-Sentence Definition<a href="https://blog.subzerodev.com/ai-workflow-state-and-roadmap#one-sentence-definition" class="hash-link" aria-label="Direct link to One-Sentence Definition" title="Direct link to One-Sentence Definition" translate="no">​</a></h2>
<blockquote>
<p>An AI-assisted software engineering operating system in which
repository-defined protocols, specialized models, automated review gates, and
declarative infrastructure turn ideas into reviewed, reproducible, shipped
projects with progressively less coordination friction.</p>
</blockquote>
<hr>
<p><em>Back to <a href="https://blog.subzerodev.com/ai-assisted-engineering-workflow" target="_blank" rel="noopener noreferrer" class="">the series index</a>.</em></p>]]></content:encoded>
            <category>AI-Assisted Engineering</category>
            <category>Automation</category>
            <category>Projects as Code</category>
        </item>
        <item>
            <title><![CDATA[God's Greatest Practical Joke]]></title>
            <link>https://blog.subzerodev.com/gods-greatest-practical-joke</link>
            <guid>https://blog.subzerodev.com/gods-greatest-practical-joke</guid>
            <pubDate>Sun, 17 May 2026 21:00:00 GMT</pubDate>
            <description><![CDATA[Lucifer questions God about humanity, only to discover that one particularly absurd human may have been created purely for divine entertainment.]]></description>
            <content:encoded><![CDATA[<p>Lucifer looked up at God and asked:</p>
<blockquote>
<p>“Father… what the fuck have you done down there?”</p>
</blockquote>
<p>God said nothing at first. Just stared quietly at Earth while humanity continued doing whatever the hell humanity does:</p>
<ul>
<li class="">arguing on dating apps;</li>
<li class="">inventing bureaucracies;</li>
<li class="">drinking themselves unconscious while judging drug users;</li>
<li class="">creating AI systems that miss obvious sarcasm;</li>
<li class="">and desperately trying to compress infinitely complex people into simple categories.</li>
</ul>
<p>Then Lucifer pointed specifically at me.</p>
<blockquote>
<p>“No, no. I mean <em>that one</em>. Explain that one.”</p>
</blockquote>
<p>And there I was:</p>
<ul>
<li class="">arguing with a language model about conversational heuristics;</li>
<li class="">discussing Stoicism and cocaine in the same sentence;</li>
<li class="">confusing women simply by answering questions honestly;</li>
<li class="">laughing at police officers;</li>
<li class="">philosophizing about nuance at 3 AM;</li>
<li class="">and refusing to behave like a normal socially optimized human being.</li>
</ul>
<p>Lucifer stared in complete disbelief.</p>
<blockquote>
<p>“You made this intentionally?”</p>
</blockquote>
<p>God finally shrugged.</p>
<blockquote>
<p>“Your mother was annoying me that day. Eternity was getting repetitive. I went into the garage and thought:</p>
<p>‘Let me make something absurd and ridiculous to amuse myself.’”</p>
</blockquote>
<p>Pause.</p>
<blockquote>
<p>“So I made Ben.”</p>
</blockquote>
<p>Another pause.</p>
<p>God smirked slightly.</p>
<blockquote>
<p>“The results exceeded expectations.”</p>
</blockquote>
<p>Lucifer stood there silently for a moment watching me argue with AI about over-analysis while simultaneously psychoanalyzing Bumble conversations and laughing at the absurdity of existence itself.</p>
<p>Then he slowly nodded and said:</p>
<blockquote>
<p>“Honestly… I kind of like him.”</p>
</blockquote>
<p>God smirked harder.</p>
<p>Lucifer narrowed his eyes.</p>
<blockquote>
<p>“What?”</p>
</blockquote>
<p>God finally replied:</p>
<blockquote>
<p>“Son… why do you think Ben calls himself Lucifer?”</p>
</blockquote>
<p>Silence.</p>
<p>Lucifer looked back down at Earth.</p>
<p>Then back at God.</p>
<p>Then back at me explaining nuance to an AI while accidentally turning a dating conversation into existential philosophy and bureaucratic satire.</p>
<p>Long pause.</p>
<blockquote>
<p>“Oh for fuck’s sake.”</p>
</blockquote>]]></content:encoded>
            <category>Philosophy</category>
            <category>Lucifer</category>
            <category>Stories</category>
        </item>
    </channel>
</rss>