<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Salah Al-Nawah — Writing</title><description>Notes on building software, scaling engineering teams, and where AI is taking all of it.</description><link>https://salahmyn.me/</link><language>en-us</language><managingEditor>salahmyn@gmail.com (Salah Al-Nawah)</managingEditor><item><title>I Changed My Mind on Purpose, to See What Would Break</title><link>https://salahmyn.me/blog/changed-my-mind-on-purpose/</link><guid isPermaLink="true">https://salahmyn.me/blog/changed-my-mind-on-purpose/</guid><description>A hostile test: built a full Trello-style app under Lattice governance, planted a trap, then reversed a hard-delete decision mid-project. What held, what broke, and why 0.8.1 makes intent changes governed transactions.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><category>AI Engineering</category><author>salahmyn@gmail.com (Salah Al-Nawah)</author></item><item><title>&quot;Done&quot; Is Not One Thing</title><link>https://salahmyn.me/blog/done-is-not-one-thing/</link><guid isPermaLink="true">https://salahmyn.me/blog/done-is-not-one-thing/</guid><description>Four different claims compressed into one word: declared, wired, correctly-meant, demonstrated. The meaning ceiling is the honest core — and steering for agent fleets lands too.</description><pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate><category>AI Engineering</category><author>salahmyn@gmail.com (Salah Al-Nawah)</author></item><item><title>If Constraints Are Free, Which Constraints?</title><link>https://salahmyn.me/blog/if-constraints-are-free-which-constraints/</link><guid isPermaLink="true">https://salahmyn.me/blog/if-constraints-are-free-which-constraints/</guid><description>The April inversion said constraints are free for machines. It never said which constraints. Vertical slices, line caps, 500-word specs, and five structural checks that are true or false, nothing in between.</description><pubDate>Sat, 06 Jun 2026 00:00:00 GMT</pubDate><category>AI Engineering</category><author>salahmyn@gmail.com (Salah Al-Nawah)</author></item><item><title>The Question the Whole Stack Was Built to Ask</title><link>https://salahmyn.me/blog/question-the-stack-was-built-to-ask/</link><guid isPermaLink="true">https://salahmyn.me/blog/question-the-stack-was-built-to-ask/</guid><description>Three layers exist: requirements, features, code. I can finally compute the traceability matrix. Every criterion gets a blunt status — and I almost shipped the strong word for the weak fact.</description><pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate><category>AI Engineering</category><author>salahmyn@gmail.com (Salah Al-Nawah)</author></item><item><title>The Layer I Was Avoiding: Why Does Any of This Exist?</title><link>https://salahmyn.me/blog/requirements-layer/</link><guid isPermaLink="true">https://salahmyn.me/blog/requirements-layer/</guid><description>Features and entry points describe the system. Neither answers why it should exist. A BRD layer with provenance, approval, and drift detection — and the question of whether badges change behavior.</description><pubDate>Sat, 23 May 2026 00:00:00 GMT</pubDate><category>AI Engineering</category><author>salahmyn@gmail.com (Salah Al-Nawah)</author></item><item><title>Nobody Believes a JSON File</title><link>https://salahmyn.me/blog/nobody-believes-json/</link><guid isPermaLink="true">https://salahmyn.me/blog/nobody-believes-json/</guid><description>I showed the graph to a friend. Polite silence. The same data as web pages? Questions about the system, not the tool. A Go binary now boots a local UI with live updates.</description><pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate><category>AI Engineering</category><author>salahmyn@gmail.com (Salah Al-Nawah)</author></item><item><title>Features Say What Code Means. Nothing Says Who Can Reach It.</title><link>https://salahmyn.me/blog/entry-points/</link><guid isPermaLink="true">https://salahmyn.me/blog/entry-points/</guid><description>I found a hole in the graph. Routes, CLI commands, cron jobs — the actual doors into the system. Entry points are now first-class artifacts, and dead code finally has a definition.</description><pubDate>Sat, 09 May 2026 00:00:00 GMT</pubDate><category>AI Engineering</category><author>salahmyn@gmail.com (Salah Al-Nawah)</author></item><item><title>Reality Check: 1,900 Files Will Not Annotate Themselves</title><link>https://salahmyn.me/blog/reality-check-1900-files/</link><guid isPermaLink="true">https://salahmyn.me/blog/reality-check-1900-files/</guid><description>The greenfield story was comfortable. Then I pointed the tool at a real Laravel codebase and built an import pipeline that drafts links itself — with provenance tracking.</description><pubDate>Sat, 02 May 2026 00:00:00 GMT</pubDate><category>AI Engineering</category><author>salahmyn@gmail.com (Salah Al-Nawah)</author></item><item><title>Constraints Are Free for Machines (I Think)</title><link>https://salahmyn.me/blog/constraints-free-machines/</link><guid isPermaLink="true">https://salahmyn.me/blog/constraints-free-machines/</guid><description>Every rule humans reject as too much friction costs a machine nothing. A Go CLI, tree-sitter, and a bet that deterministic knowledge graphs can replace the re-explaining ritual.</description><pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate><category>AI Engineering</category><author>salahmyn@gmail.com (Salah Al-Nawah)</author></item><item><title>The Trap of Vibe Coding: Is There a Better Way to Manage AI-Generated Code?</title><link>https://salahmyn.me/blog/trap-of-vibe-coding/</link><guid isPermaLink="true">https://salahmyn.me/blog/trap-of-vibe-coding/</guid><description>We&apos;ve automated the production of legacy code. A look at why AI-generated projects rot, what spec-driven frameworks get right (and wrong), and the three goals worth chasing.</description><pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate><category>AI Engineering</category><author>salahmyn@gmail.com (Salah Al-Nawah)</author></item></channel></rss>