From 4c1853bc7bc4010f8c0b19854f708fcbb49fb295 Mon Sep 17 00:00:00 2001 From: giles Date: Sun, 8 Mar 2026 01:14:10 +0000 Subject: [PATCH] Rename essay titles and add broken keyboard anecdote MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - "Zero-Tooling" → "Tools for Fools" - "Separation of Concerns" → "Separate your Own Concerns" - Bold "...and yet." after Carson Gross reference - Add broken keyboard origin story - Fix language list (never Lisp) Co-Authored-By: Claude Opus 4.6 --- sx/sx/essays.sx | 10 ++++++---- sx/sx/nav-data.sx | 4 ++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/sx/sx/essays.sx b/sx/sx/essays.sx index c5a2212..3b96229 100644 --- a/sx/sx/essays.sx +++ b/sx/sx/essays.sx @@ -276,7 +276,7 @@ "This closes the loop on self-hosting. The SX spec defines the language. The boundary spec defines the edge. The bootstrappers generate implementations from both. And the generated code validates itself against the spec at startup. The spec is the implementation is the contract is the spec.")))) (defcomp ~essay-separation-of-concerns () - (~doc-page :title "Separation of Concerns" + (~doc-page :title "Separate your Own Concerns" (p :class "text-stone-500 text-sm italic mb-8" "The web's canonical separation — HTML, CSS, JavaScript — separates the framework's concerns, not yours. Real separation of concerns is domain-specific and cannot be prescribed by a platform.") @@ -679,7 +679,7 @@ "The name for this, borrowed from a " (a :href "https://en.wikipedia.org/wiki/There_is_no_alternative" :class "text-violet-600 hover:underline" "different context entirely") ", is " (em "TINA") " — there is no alternative. Not as a political slogan, but as a mathematical observation. When you need a minimal, homoiconic, structurally-validatable, token-efficient, tree-native, AI-compatible representation for the web, you need s-expressions. Everything else is either less capable or isomorphic.")))) (defcomp ~essay-zero-tooling () - (~doc-page :title "Zero-Tooling Web Development" + (~doc-page :title "Tools for Fools" (p :class "text-stone-500 text-sm italic mb-8" "SX was built without a code editor. No IDE, no manual source edits, no build tools, no linters, no bundlers. The entire codebase — evaluator, renderer, spec, documentation site, test suite — was produced through conversation with an agentic AI. This is what zero-tooling web development looks like.") @@ -765,7 +765,7 @@ (p :class "text-stone-600" "Carson Gross makes an important point in " (a :href "https://htmx.org/essays/yes-and/" :class "text-violet-600 hover:underline" "\"Yes, and...\"") ": you have to have written code in order to effectively read code. The ability to review, critique, and direct is built on the experience of having done the work yourself. You cannot skip the craft and jump straight to the oversight.") (p :class "text-stone-600" - "He is right. And yet.") + "He is right. " (strong "...and yet.")) (p :class "text-stone-600" "There is a Zen teaching about the three stages of practice. Before enlightenment: chop wood, carry water. During enlightenment: chop wood, carry water. After enlightenment: chop wood, carry water. The activities look the same from the outside, but the relationship to them has changed completely. The master chops wood without the beginner's anxiety about whether they are chopping correctly, and without the intermediate's self-conscious technique. They just chop.") (p :class "text-stone-600" @@ -775,7 +775,9 @@ (p :class "text-stone-600" (em "After understanding, describe intent.") " You have internalized the patterns so deeply that you do not need to type them. You know what a component should look like without writing it character by character. You know what the test should cover without spelling out each assertion. You know what the architecture should be without drawing every box and arrow. You describe; the agent executes. Not because you cannot do the work, but because the work has become transparent to you.") (p :class "text-stone-600" - "This is not a shortcut. The developer who built SX through conversation with an AI had decades of experience writing code by hand — in Lisp, in Python, in JavaScript, in C, in assembly (although he was never that good at it). The zero-tooling workflow is not a substitute for that experience. It is what comes " (em "after") " that experience. The wood still gets chopped. The water still gets carried. But the relationship to the chopping and carrying has changed.")) + "This is not a shortcut. The developer who built SX through conversation with an AI had decades of experience writing code by hand — in Python, VB, C#, JavaScript, C, and others (although he was never that good at it) — but never Lisp. The zero-tooling workflow is not a substitute for that experience. It is what comes " (em "after") " that experience. The wood still gets chopped. The water still gets carried. But the relationship to the chopping and carrying has changed.") + (p :class "text-stone-600" + "What pushed him to use agentic AI was when several of the keys on his keyboard stopped working. Too much coding! AI LLMs don't mind typos.")) (~doc-section :title "Why this only works with s-expressions" :id "why-sexps" (p :class "text-stone-600" diff --git a/sx/sx/nav-data.sx b/sx/sx/nav-data.sx index 4023e45..0ac0be5 100644 --- a/sx/sx/nav-data.sx +++ b/sx/sx/nav-data.sx @@ -86,7 +86,7 @@ :summary "A web where pages can inspect, modify, and extend their own rendering pipeline.") (dict :label "Server Architecture" :href "/essays/server-architecture" :summary "How SX enforces the boundary between host and embedded language, and what it looks like across targets.") - (dict :label "Separation of Concerns" :href "/essays/separation-of-concerns" + (dict :label "Separate your Own Concerns" :href "/essays/separation-of-concerns" :summary "The web's HTML/CSS/JS split separates the framework's concerns, not your application's. Real separation is domain-specific.") (dict :label "SX and AI" :href "/essays/sx-and-ai" :summary "Why s-expressions are the most AI-friendly representation for web interfaces.") @@ -94,7 +94,7 @@ :summary "Every attempt to escape s-expressions leads back to s-expressions. This is not an accident.") (dict :label "sx sucks" :href "/essays/sx-sucks" :summary "An honest accounting of everything wrong with SX and why you probably shouldn't use it.") - (dict :label "Zero-Tooling" :href "/essays/zero-tooling" + (dict :label "Tools for Fools" :href "/essays/zero-tooling" :summary "SX was built without a code editor. No IDE, no build tools, no linters, no bundlers. What zero-tooling web development looks like."))) (define specs-nav-items (list