<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nenad Mićić</title>
    <description>The latest articles on DEV Community by Nenad Mićić (@nmicic).</description>
    <link>https://dev.to/nmicic</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3503066%2F1a4b00a3-069c-44a5-80bb-6415b4588f32.jpg</url>
      <title>DEV Community: Nenad Mićić</title>
      <link>https://dev.to/nmicic</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nmicic"/>
    <language>en</language>
    <item>
      <title>I Built compartment to Sandbox AI Agents on Linux</title>
      <dc:creator>Nenad Mićić</dc:creator>
      <pubDate>Thu, 02 Apr 2026 12:06:30 +0000</pubDate>
      <link>https://dev.to/nmicic/i-built-compartment-to-sandbox-ai-agents-on-linux-14h4</link>
      <guid>https://dev.to/nmicic/i-built-compartment-to-sandbox-ai-agents-on-linux-14h4</guid>
      <description>&lt;p&gt;AI coding agents are useful, but in a corporate environment they are often too privileged by default.&lt;/p&gt;

&lt;p&gt;They can read files, edit code, run commands, inherit environment variables, and talk to the network. I wanted a smaller trust boundary for tools like Claude Code and Codex CLI.&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://github.com/nmicic/compartment" rel="noopener noreferrer"&gt;compartment&lt;/a&gt;, a small Linux process isolation toolkit with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;compartment-user&lt;/strong&gt; — rootless confinement using Landlock, seccomp, and no_new_privs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;compartment-root&lt;/strong&gt; — stronger namespace-based isolation when needed&lt;/li&gt;
&lt;li&gt;one shared profile format&lt;/li&gt;
&lt;li&gt;zero external dependencies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is also a rebuild of an old idea. Back in 2003, I wrote shell-guard, a wrapper that intercepted shell execution and applied policy early. Modern Linux finally has the kernel primitives to do that idea properly.&lt;/p&gt;

&lt;p&gt;I built compartment primarily for AI-agent sandboxing, but the same logic also applies to other semi-trusted local tools, including SSH.&lt;/p&gt;

&lt;p&gt;Small tool. Explicit policy. Lower blast radius.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/nmicic/compartment" rel="noopener noreferrer"&gt;github.com/nmicic/compartment&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;README: &lt;a href="https://github.com/nmicic/compartment#readme" rel="noopener noreferrer"&gt;github.com/nmicic/compartment#readme&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjoj4ibeuo25mz1gootw6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjoj4ibeuo25mz1gootw6.png" alt="compartment" width="800" height="655"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>security</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>From 2-Adic Geometry to Cunningham Chains: Visualization-Driven GPU Search</title>
      <dc:creator>Nenad Mićić</dc:creator>
      <pubDate>Wed, 11 Mar 2026 09:42:27 +0000</pubDate>
      <link>https://dev.to/nmicic/from-2-adic-geometry-to-cunningham-chains-visualization-driven-gpu-search-102n</link>
      <guid>https://dev.to/nmicic/from-2-adic-geometry-to-cunningham-chains-visualization-driven-gpu-search-102n</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;**Update (March 17, 2026): Since publishing this post, the campaign found two first-kind CC18s with roots 106103983461039119546815109 (87 bits) and 214325014495971624590189129 (88 bits). A later prior-art review showed that first-kind CC18 had already been documented in John Armitage’s 2021 Oxford thesis via the smallest known example, so these are not the first known CC18s. They do, however, remain the largest listed first-kind CC18 entries on the current public Cunningham tables. The campaign has now finished because my available GPU compute time ran out. The original post below is left mostly unchanged as the March 11 baseline.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  From 2-Adic Geometry to Cunningham Chains: Visualization-Driven GPU Search
&lt;/h2&gt;

&lt;p&gt;Nenad Mićić · &lt;a href="https://be.linkedin.com/in/nenadmicic" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; · March 2026&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjxtmktff8g84ala7pq1j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjxtmktff8g84ala7pq1j.png" alt="2-Adic Tree Explorer" width="800" height="133"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What This Is
&lt;/h3&gt;

&lt;p&gt;A visualization hobby project that turned into a high-throughput &lt;a href="https://en.wikipedia.org/wiki/Cunningham_chain" rel="noopener noreferrer"&gt;Cunningham chain&lt;/a&gt; search engine. More about HPC optimization and AI-assisted iteration than the math itself.&lt;/p&gt;

&lt;p&gt;It started with mapping integers in a 2-adic geometry, noticing structured prime paths, recognizing Cunningham-chain recurrences, and then building a GPU/CPU pipeline to search for long chains.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8exuwvj9vrdifyeq0eu2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8exuwvj9vrdifyeq0eu2.png" alt="2-adic square-perimeter map with CC1/CC2 edges and chain paths" width="800" height="816"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Results
&lt;/h3&gt;

&lt;p&gt;This project ultimately did reach its CC18 target, but not the more ambitious CC19 goal. It remained a compute-limited campaign.&lt;/p&gt;

&lt;p&gt;As of March 2026, the public Cunningham chain tables at &lt;a href="https://www.pzktupel.de/CC/cc.php" rel="noopener noreferrer"&gt;pzktupel.de&lt;/a&gt; list results under my name, Nenad Mićić, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;new CC16 and CC17 entries&lt;/li&gt;
&lt;li&gt;the largest listed first-kind CC16, CC17, and CC18 on the current public tables&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The published data snapshot contains &lt;strong&gt;929,574 roots&lt;/strong&gt; in total, including &lt;strong&gt;44 CC16&lt;/strong&gt; roots and &lt;strong&gt;1 CC17&lt;/strong&gt;. The main campaign was centered on the &lt;strong&gt;89–91 bit&lt;/strong&gt; range, and the release includes both the search code and derived analysis:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;gap statistics and spacing distributions&lt;/li&gt;
&lt;li&gt;immunization / residue summaries and immune-fingerprint distributions&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;p+1&lt;/code&gt; breaker analysis&lt;/li&gt;
&lt;li&gt;ghost chains — roots where prime links continue beyond the official chain break, tested to depth 20&lt;/li&gt;
&lt;li&gt;closest CC-twins and CC-clusters (triplets, quadruplets, quintuplets)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I think this dataset is useful in its own right and deserves deeper study.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F28cjdjojrhcwi3ypwcfl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F28cjdjojrhcwi3ypwcfl.png" alt="3D Fold - shell structure across levels" width="800" height="713"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Visual learning led to search design.&lt;/p&gt;

&lt;p&gt;The 2-adic coordinate system made chain structure visible. The &lt;code&gt;p+1&lt;/code&gt; factorization view showed which small-factor patterns kill candidates early. That became the sieve.&lt;/p&gt;

&lt;p&gt;For a first-kind chain, a root &lt;code&gt;p&lt;/code&gt; generates: &lt;code&gt;p, 2p+1, 4p+3, 8p+7, ...&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The key optimization is &lt;strong&gt;depth filtering&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;generate candidates on the CRT-and-wheel search lattice&lt;/li&gt;
&lt;li&gt;test cheap modular conditions across the first &lt;code&gt;d&lt;/code&gt; projected chain positions&lt;/li&gt;
&lt;li&gt;reject any root whose chain is already doomed modulo a tracked small prime&lt;/li&gt;
&lt;li&gt;send only the tiny survivor set to the CPU for probable-prime testing and full chain confirmation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pipeline:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GPU (CUDA):&lt;/strong&gt; 57–65 billion candidates/sec modular filtering (&lt;code&gt;RTX 4090&lt;/code&gt; / &lt;code&gt;RTX 5090&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CPU (GMP):&lt;/strong&gt; probable-prime testing, true-root recovery for non-roots, and chain-length confirmation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The GPU sieve rejects about &lt;strong&gt;99.9988%&lt;/strong&gt; of candidates before expensive primality work is needed. Only about &lt;strong&gt;0.0012%&lt;/strong&gt; survive to the CPU path.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjxwgkw20occwx4dohxyc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjxwgkw20occwx4dohxyc.png" alt="topdown view - factor coloring for primes, mod-p view for composites" width="800" height="801"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Interactive Visualizations
&lt;/h3&gt;

&lt;p&gt;Each tool shaped the search design.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://nmicic.github.io/cunningham-chain-search/visualizations/chain-mesh/" rel="noopener noreferrer"&gt;Cunningham Chain Mesh&lt;/a&gt;&lt;/strong&gt;: 2-adic square-perimeter map with CC1/CC2 edges and chain paths&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://nmicic.github.io/cunningham-chain-search/visualizations/2adic-tree/" rel="noopener noreferrer"&gt;2-Adic Tree Explorer&lt;/a&gt;&lt;/strong&gt;: inspectable tree with local chain structure&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://nmicic.github.io/cunningham-chain-search/visualizations/3d-fold/" rel="noopener noreferrer"&gt;3D Fold&lt;/a&gt;&lt;/strong&gt;: shell structure across levels; top view becomes the &lt;code&gt;p+1&lt;/code&gt; analysis grid&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://nmicic.github.io/cunningham-chain-search/visualizations/p1-analysis/" rel="noopener noreferrer"&gt;&lt;code&gt;p+1&lt;/code&gt; Analysis&lt;/a&gt;&lt;/strong&gt;: factor coloring for primes, mod-&lt;code&gt;p&lt;/code&gt; view for composites&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://nmicic.github.io/cunningham-chain-search/visualizations/chain-analyzer/" rel="noopener noreferrer"&gt;Chain Analyzer&lt;/a&gt;&lt;/strong&gt;: single-chain analysis, breaker autopsy, residue immunity&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://nmicic.github.io/cunningham-chain-search/visualizations/campaign-dashboard/" rel="noopener noreferrer"&gt;Campaign Dashboard&lt;/a&gt;&lt;/strong&gt;: live campaign tracking across bit ranges and chain lengths&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://nmicic.github.io/cunningham-chain-search/visualizations/immunization-dashboard/" rel="noopener noreferrer"&gt;Immunization Dashboard&lt;/a&gt;&lt;/strong&gt;: residue immunity analysis&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7xoftqvemn44448tqp0w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7xoftqvemn44448tqp0w.png" alt="Heatmap + Decay curves" width="800" height="249"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Project Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Search: CUDA filtering, GMP proving, prefix sharding, checkpointing&lt;/li&gt;
&lt;li&gt;Visualization: standalone HTML/JS tools&lt;/li&gt;
&lt;li&gt;Analysis: Python plus HTML tools for autopsy and fingerprinting&lt;/li&gt;
&lt;li&gt;AI-assisted: LLMs used for coding iteration; math direction and search decisions are human-driven&lt;/li&gt;
&lt;li&gt;Extra: a PARI/GP library and a small MCP server wrapper for interactive Cunningham-chain analysis&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Part of the project was also an experiment in AI-assisted iteration: not one-shot prompting, but many rounds of visual exploration, code generation, rejection, correction, and performance tuning. The transferable lesson for me was not number theory itself, but the workflow: isolate the hot path, turn it into something benchmarkable, iterate quickly with AI assistance, and only bring back changes that survive measurement.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhf9fk9ofgloxnd7b52tm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhf9fk9ofgloxnd7b52tm.png" alt="Immunization Result" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Links
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Code: &lt;a href="https://github.com/nmicic/cunningham-chain-search" rel="noopener noreferrer"&gt;https://github.com/nmicic/cunningham-chain-search&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Data snapshot: &lt;a href="https://github.com/nmicic/cunningham-chain-data" rel="noopener noreferrer"&gt;https://github.com/nmicic/cunningham-chain-data&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Interactive visualizations: &lt;a href="https://nmicic.github.io/cunningham-chain-search/visualizations/" rel="noopener noreferrer"&gt;https://nmicic.github.io/cunningham-chain-search/visualizations/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Cunningham chain tables: &lt;a href="https://www.pzktupel.de/CC/cc.php" rel="noopener noreferrer"&gt;https://www.pzktupel.de/CC/cc.php&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;CC16 history: &lt;a href="https://www.pzktupel.de/CC/HCC16.php" rel="noopener noreferrer"&gt;https://www.pzktupel.de/CC/HCC16.php&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;CC17 history: &lt;a href="https://www.pzktupel.de/CC/HCC17.php" rel="noopener noreferrer"&gt;https://www.pzktupel.de/CC/HCC17.php&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;CC18 history: &lt;a href="https://www.pzktupel.de/CC/HCC18.php" rel="noopener noreferrer"&gt;https://www.pzktupel.de/CC/HCC18.php&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Author: Nenad Mićić, Belgium&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv5w3afte2vw2ghsw9vr0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv5w3afte2vw2ghsw9vr0.png" alt="Chain Analyzer - single-chain analysis, breaker autopsy, residue immunity" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmysfck0mzmkdk6blmrzd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmysfck0mzmkdk6blmrzd.png" alt="3D fold 2adic " width="800" height="719"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>cuda</category>
      <category>hpc</category>
      <category>datavis</category>
    </item>
    <item>
      <title>Compass, Steering Wheel, Destination — Framework for Working with AI on Code</title>
      <dc:creator>Nenad Mićić</dc:creator>
      <pubDate>Mon, 15 Sep 2025 08:42:38 +0000</pubDate>
      <link>https://dev.to/nmicic/compass-steering-wheel-destination-framework-for-working-with-ai-on-code-331</link>
      <guid>https://dev.to/nmicic/compass-steering-wheel-destination-framework-for-working-with-ai-on-code-331</guid>
      <description>&lt;p&gt;I'm sharing this with the team as a summary of my personal workflow when working with AI on code. It's not an official framework, but rather a set of learnings from experience (polished with a little help from AI, of course). My main goal is to start a conversation. If you have a better or similar workflow, I'd genuinely love to hear about it.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Compass, Steering Wheel, Destination — Framework for Working with AI on Code
&lt;/h2&gt;

&lt;p&gt;AI can accelerate coding, but it can also drift, hallucinate requirements, or produce complex solutions without a clear rationale.&lt;br&gt;
This framework provides the guardrails to keep AI-assisted development focused, deliberate, and well-documented.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Sailing Analogy (High-Level Intro)
&lt;/h2&gt;

&lt;p&gt;Working with AI on code is like sailing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Compass&lt;/strong&gt; → Keeps you oriented to true north (goals, requirements, assumptions).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Steering Wheel&lt;/strong&gt; → Lets you pivot, tack, or hold steady (decide continue vs. change).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Destination Map&lt;/strong&gt; → Ensures the journey is recorded (reusable, reproducible outcomes).
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This framework grew out of real-world experience. It’s not brand new theory, but a way to formalize a shared language for teams working with AI.  &lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1: Compass (Revalidation)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Purpose:&lt;/strong&gt; keep alignment with goals and assumptions.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Template (copy/paste):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What’s the primary goal?
&lt;/li&gt;
&lt;li&gt;What’s the secondary/nice-to-have goal?
&lt;/li&gt;
&lt;li&gt;Which requirements are mandatory vs optional?
&lt;/li&gt;
&lt;li&gt;What are the current assumptions? Which may be invalid?
&lt;/li&gt;
&lt;li&gt;Has anything in the context changed (constraints, environment, stakeholders)?
&lt;/li&gt;
&lt;li&gt;Are human and AI/system understanding still in sync?
&lt;/li&gt;
&lt;li&gt;Any signs of drift (scope creep, contradictions, wrong optimization target)?
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Step 2: Steering Wheel (Course Correction)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Purpose:&lt;/strong&gt; evaluate if we should continue, pivot, or stop.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Template (copy/paste):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For each assumption: what if it’s false?
&lt;/li&gt;
&lt;li&gt;Does an existing tool/library cover ≥80%?
&lt;/li&gt;
&lt;li&gt;Does this map to an existing framework/pattern (ADR, RFC, design template)?
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Alternatives:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Different algorithm/data structure?
&lt;/li&gt;
&lt;li&gt;Different architecture (batch vs streaming, CPU vs GPU, local vs distributed)?
&lt;/li&gt;
&lt;li&gt;Different representation (sketches, ML, summaries)?
&lt;/li&gt;
&lt;li&gt;Different layer (infra vs app, control vs data plane)?
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Trade-offs:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fit with requirements.
&lt;/li&gt;
&lt;li&gt;Complexity (build &amp;amp; maintain).
&lt;/li&gt;
&lt;li&gt;Time-to-value.
&lt;/li&gt;
&lt;li&gt;Risks &amp;amp; failure modes.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Other checks:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Overhead vs value: is the process slowing iteration?
&lt;/li&gt;
&lt;li&gt;Niche &amp;amp; opportunity: is this idea niche or broadly useful? Where does it fit in the landscape?
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Kill/Go criteria:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kill if effort &amp;gt; value, assumptions broken.
&lt;/li&gt;
&lt;li&gt;Go if results justify effort or uniqueness adds value.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Next step options:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Continue current path.
&lt;/li&gt;
&lt;li&gt;Pivot to alternative.
&lt;/li&gt;
&lt;li&gt;Stop and adopt existing solution.
&lt;/li&gt;
&lt;li&gt;Run a 1-day spike to test a risky assumption.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Step 3: Destination (Reverse Prompt)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Purpose:&lt;/strong&gt; capture the outcome in reusable, reproducible form.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Template (copy/paste):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instructions&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Restate my request so it can be reused to regenerate the exact same code and documentation.
&lt;/li&gt;
&lt;li&gt;Include a clear summary of the key idea(s), algorithm(s), and reasoning that shaped the solution.
&lt;/li&gt;
&lt;li&gt;Preserve wording, structure, and order exactly — no “helpful rewrites” or “improvements.”
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Reverse Prompt (regeneration anchor)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Problem restatement (1–2 sentences).
&lt;/li&gt;
&lt;li&gt;Key algorithm(s) in plain language.
&lt;/li&gt;
&lt;li&gt;Invariants &amp;amp; assumptions (what must always hold true).
&lt;/li&gt;
&lt;li&gt;Interfaces &amp;amp; I/O contract (inputs, outputs, error cases).
&lt;/li&gt;
&lt;li&gt;Config surface (flags, environment variables, options).
&lt;/li&gt;
&lt;li&gt;Acceptance tests / minimal examples (clear input → output pairs).
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;High-Level Design (HLD)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Purpose: what the system solves and why.
&lt;/li&gt;
&lt;li&gt;Key algorithm(s): step-by-step flow, core logic, choice of data structures.
&lt;/li&gt;
&lt;li&gt;Trade-offs: why this approach was chosen, why others were rejected.
&lt;/li&gt;
&lt;li&gt;Evolution path: how the design changed from earlier attempts.
&lt;/li&gt;
&lt;li&gt;Complexity and bottlenecks: where it might fail or slow down.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Low-Level Design (LLD)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Structure: files, functions, modules, data layouts.
&lt;/li&gt;
&lt;li&gt;Control flow: inputs → processing → outputs.
&lt;/li&gt;
&lt;li&gt;Error handling and edge cases.
&lt;/li&gt;
&lt;li&gt;Configuration and options, with examples.
&lt;/li&gt;
&lt;li&gt;Security and reliability notes.
&lt;/li&gt;
&lt;li&gt;Performance considerations and optimizations.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Functional Spec / How-To&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Practical usage with examples (input/output).
&lt;/li&gt;
&lt;li&gt;Config examples (simple and advanced).
&lt;/li&gt;
&lt;li&gt;Troubleshooting (common errors, fixes).
&lt;/li&gt;
&lt;li&gt;Benchmarks (baseline numbers, reproducible).
&lt;/li&gt;
&lt;li&gt;Limits and gotchas.
&lt;/li&gt;
&lt;li&gt;Roadmap / extensions.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Critical Requirements&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Always present HLD first, then LLD.
&lt;/li&gt;
&lt;li&gt;Emphasize algorithms and reasoning over just the raw code.
&lt;/li&gt;
&lt;li&gt;Clearly mark discarded alternatives with reasons.
&lt;/li&gt;
&lt;li&gt;Keep the response self-contained — it should stand alone as documentation even without the code.
&lt;/li&gt;
&lt;li&gt;Preserve the code exactly as it was produced originally. No silent changes, no creative rewrites.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  When &amp;amp; Why to Use Each
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Compass (Revalidation):&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use at the start or whenever misalignment is suspected (context drift, new requirements).
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Steering Wheel (Course Correction):&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use at milestones or retrospectives to decide continue, pivot, or stop.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Destination (Reverse Prompt):&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use at the end of a cycle/project to capture reproducible documentation &amp;amp; handover artifacts.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  References &amp;amp; Correlations
&lt;/h2&gt;

&lt;p&gt;This framework is simple, but it builds on proven practices:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Systems Engineering: Verification &amp;amp; Validation (build the right thing).
&lt;/li&gt;
&lt;li&gt;Agile: Sprint reviews (revalidation), retrospectives (course correction).
&lt;/li&gt;
&lt;li&gt;Lean Startup: Pivot vs. persevere decisions.
&lt;/li&gt;
&lt;li&gt;Architecture Practices: ADRs (decision rationale, alternatives).
&lt;/li&gt;
&lt;li&gt;AI Prompt Engineering: Reusable prompt templates &amp;amp; libraries.
&lt;/li&gt;
&lt;li&gt;Human-in-the-Loop Design: Oversight to prevent drift in AI systems.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By combining them under a sailing metaphor, the framework becomes:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Easy to remember.
&lt;/li&gt;
&lt;li&gt;Easy to communicate inside teams.
&lt;/li&gt;
&lt;li&gt;Easy to apply in AI-assisted coding where drift, misalignment, and reusability are everyday challenges.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Closing Note
&lt;/h2&gt;

&lt;p&gt;Think of this as a playbook, not theory. Next time in a session, just say:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;“Compass check”&lt;/strong&gt; → Revalidate assumptions/goals.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;“Steering wheel”&lt;/strong&gt; → Consider pivot/alternatives.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;“Destination”&lt;/strong&gt; → Capture reproducible docs.
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>promptengineering</category>
      <category>softwareengineering</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
