<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Golden Hex</title><link>https://goldenhex.dev/posts/</link><description>Recent content in Posts on Golden Hex</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 30 May 2026 13:30:00 +0000</lastBuildDate><atom:link href="https://goldenhex.dev/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Binary vs JSON for MCP: I Went Looking</title><link>https://goldenhex.dev/2026/05/binary-vs-json-for-mcp-i-went-looking/</link><pubDate>Sat, 30 May 2026 13:30:00 +0000</pubDate><guid>https://goldenhex.dev/2026/05/binary-vs-json-for-mcp-i-went-looking/</guid><description>&lt;p>Protobuf beats JSON on CPU and memory. Apache TinkerPop&amp;rsquo;s GraphBinary, same story over GraphSON - I&amp;rsquo;m living that migration at work, and we&amp;rsquo;re already seeing memory pressure ease. The tradeoff is old: text is readable but costs CPU and bytes, and past a certain payload size that cost outweighs the convenience.&lt;/p>
&lt;p>I wanted to go looking for that. My first thought was the Language Server Protocol - but LSP is a decade old: settled, widely shipped, and with little appetite for changing the bytes on its wire.&lt;/p></description></item><item><title>Learning Jujutsu by Teaching It</title><link>https://goldenhex.dev/2026/02/learning-jujutsu-by-teaching-it/</link><pubDate>Mon, 02 Feb 2026 10:00:00 +0000</pubDate><guid>https://goldenhex.dev/2026/02/learning-jujutsu-by-teaching-it/</guid><description>&lt;p>More than a decade ago, I switched workplaces and ecosystems. Gone was the Microsoft stack I knew, and in its place: Linux, open source, and this thing called Git that everyone swore by but nobody could explain clearly.&lt;/p>
&lt;p>A colleague shared &lt;a href="https://learngitbranching.js.org/">learngitbranching.js.org&lt;/a>. It was a revelation. Instead of reading documentation or watching tutorials, I could &lt;em>play&lt;/em> with branching, see the DAG update in real time, and build intuition through experimentation. To this day, I credit that tool for how I think about Git.&lt;/p></description></item><item><title>Hash Devlog: Setting Up for Daily Driving</title><link>https://goldenhex.dev/2026/01/hash-devlog-setting-up-for-daily-driving/</link><pubDate>Fri, 23 Jan 2026 12:00:00 +0000</pubDate><guid>https://goldenhex.dev/2026/01/hash-devlog-setting-up-for-daily-driving/</guid><description>&lt;p>I&amp;rsquo;ve been using Hash for development, but switching between &lt;code>go build&lt;/code> outputs and keeping track of versions was getting old. If I&amp;rsquo;m going to use this as my daily shell, I need proper infrastructure: versioned builds, easy upgrades, and a fast way to report bugs when things break.&lt;/p>
&lt;p>This devlog covers three pieces: version injection with dual VCS support, Homebrew distribution via a personal tap, and a new &lt;code>issue&lt;/code> builtin that makes bug reports trivially easy.&lt;/p></description></item><item><title>Hash Devlog: Tracing the Missing Keystrokes</title><link>https://goldenhex.dev/2026/01/hash-devlog-tracing-the-missing-keystrokes/</link><pubDate>Fri, 09 Jan 2026 12:00:00 +0000</pubDate><guid>https://goldenhex.dev/2026/01/hash-devlog-tracing-the-missing-keystrokes/</guid><description>&lt;p>I was building ghost text for Hash, an AI-powered shell. Instead of blocking while the agent thinks, ghost text streams dimmed suggestions inline as tokens arrive - like Copilot, but for shell commands. The feature worked, but something was wrong with input handling. Press &lt;code>Enter&lt;/code> to accept a suggestion: nothing. Press again: nothing. Third time: finally works.&lt;/p>
&lt;p>Same with &lt;code>Ctrl+D&lt;/code> to exit. One press, two presses, three presses, finally exits. Intermittent. Frustrating. Impossible to reproduce reliably.&lt;/p></description></item><item><title>Introducing Hash: Building an Agentic Shell</title><link>https://goldenhex.dev/2026/01/introducing-hash-building-an-agentic-shell/</link><pubDate>Sat, 03 Jan 2026 10:00:00 +0000</pubDate><guid>https://goldenhex.dev/2026/01/introducing-hash-building-an-agentic-shell/</guid><description>&lt;p>I wanted the speed and multiline editor capabilities of Warp, the keybindings of Helix, and the freedom of open source—all inside my existing terminal.&lt;/p>
&lt;p>Meet &lt;strong>Hash&lt;/strong> (Harness Assisted SHell). It&amp;rsquo;s a Go-based shell designed for editor-style navigation with agent-agnostic AI built in. In true 2026 fashion, this is a heavily vibe-coded project with Claude doing most of the heavy lifting.&lt;/p>
&lt;h2 id="the-magic-syntax-">The Magic Syntax: &lt;code>??&lt;/code>&lt;/h2>
&lt;p>The &lt;code>??&lt;/code> operator is the heart of Hash. Drop it anywhere in a command:&lt;/p></description></item><item><title>Schema Validation for FluxCD HelmRelease Files</title><link>https://goldenhex.dev/2025/12/schema-validation-for-fluxcd-helmrelease-files/</link><pubDate>Fri, 26 Dec 2025 10:00:00 +0000</pubDate><guid>https://goldenhex.dev/2025/12/schema-validation-for-fluxcd-helmrelease-files/</guid><description>&lt;p>If you&amp;rsquo;re using FluxCD to manage Helm releases, you&amp;rsquo;ve likely debugged a failed deployment caused by a typo in your &lt;code>values&lt;/code> block. Maybe you wrote &lt;code>replicas&lt;/code> instead of &lt;code>replicaCount&lt;/code>, or nested an option one level too deep. These mistakes are easy to make and hard to catch-often you don&amp;rsquo;t discover them until Flux fails to reconcile.&lt;/p>
&lt;p>The fix? Bring the same LSP-powered autocomplete and validation you use for application code to your HelmRelease files.&lt;/p></description></item></channel></rss>