<script data-pm-proxy="intercept"></script><?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Conjuring Code: Make Your Own Software]]></title><description><![CDATA[A publication about making software with AI help, especially for people who aren't software professionals.]]></description><link>https://conjuringcode.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!15Es!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb53cfb27-848b-4984-a5e8-ec4d97fddb95_544x544.png</url><title>Conjuring Code: Make Your Own Software</title><link>https://conjuringcode.substack.com</link></image><generator>Substack</generator><lastBuildDate>Tue, 01 Sep 2026 19:48:32 GMT</lastBuildDate><atom:link href="/__u/conjuringcode.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Ian Varley]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[conjuringcode@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[conjuringcode@substack.com]]></itunes:email><itunes:name><![CDATA[Ian Varley]]></itunes:name></itunes:owner><itunes:author><![CDATA[Ian Varley]]></itunes:author><googleplay:owner><![CDATA[conjuringcode@substack.com]]></googleplay:owner><googleplay:email><![CDATA[conjuringcode@substack.com]]></googleplay:email><googleplay:author><![CDATA[Ian Varley]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Code Is Weird]]></title><description><![CDATA[If you feel like you should be able to read code but can&#8217;t, there's nothing wrong with you. Code is cryptic, terse, and arbitrary for reasons that have nothing to do with what it does.]]></description><link>https://conjuringcode.substack.com/p/code-is-weird</link><guid isPermaLink="false">https://conjuringcode.substack.com/p/code-is-weird</guid><dc:creator><![CDATA[Ian Varley]]></dc:creator><pubDate>Fri, 21 Aug 2026 13:56:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!15Es!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb53cfb27-848b-4984-a5e8-ec4d97fddb95_544x544.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!L3-e!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0175a4c6-984a-447a-afe7-294813057e21_1110x280.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!L3-e!, /__u/conjuringcode.substack.com/w_424, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0175a4c6-984a-447a-afe7-294813057e21_1110x280.png 424w, /__u/substackcdn.com/image/fetch/$s_!L3-e!, /__u/conjuringcode.substack.com/w_848, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0175a4c6-984a-447a-afe7-294813057e21_1110x280.png 848w, /__u/substackcdn.com/image/fetch/$s_!L3-e!, /__u/conjuringcode.substack.com/w_1272, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0175a4c6-984a-447a-afe7-294813057e21_1110x280.png 1272w, /__u/substackcdn.com/image/fetch/$s_!L3-e!, /__u/conjuringcode.substack.com/w_1456, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0175a4c6-984a-447a-afe7-294813057e21_1110x280.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!L3-e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0175a4c6-984a-447a-afe7-294813057e21_1110x280.png" width="1110" height="280" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0175a4c6-984a-447a-afe7-294813057e21_1110x280.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:280,&quot;width&quot;:1110,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:729463,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://conjuringcode.substack.com/i/212153097?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0175a4c6-984a-447a-afe7-294813057e21_1110x280.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!L3-e!, /__u/conjuringcode.substack.com/w_424, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0175a4c6-984a-447a-afe7-294813057e21_1110x280.png 424w, /__u/substackcdn.com/image/fetch/$s_!L3-e!, /__u/conjuringcode.substack.com/w_848, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0175a4c6-984a-447a-afe7-294813057e21_1110x280.png 848w, /__u/substackcdn.com/image/fetch/$s_!L3-e!, /__u/conjuringcode.substack.com/w_1272, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0175a4c6-984a-447a-afe7-294813057e21_1110x280.png 1272w, /__u/substackcdn.com/image/fetch/$s_!L3-e!, /__u/conjuringcode.substack.com/w_1456, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0175a4c6-984a-447a-afe7-294813057e21_1110x280.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Even if you&#8217;re totally not technical, you probably know that software is made of <strong>code</strong>. You don&#8217;t generally have to touch it, or even <em>see</em> it these days, since a coding agent can handle all of that for you. (I&#8217;m a professional software engineer, and I&#8217;ve got personal apps I use every day where I&#8217;ve <em>never once looked at the code</em>.)</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://conjuringcode.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Conjuring Code: Make Your Own Software! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>But for some people, the fact that it&#8217;s code on the inside makes them ... uneasy. They feel like they <em>should</em> be able to read and write code, and that not being able to do that is some kind of deficiency or blocker to making software.</p><p>Well, I&#8217;m here to tell you that it&#8217;s not. There&#8217;s nothing wrong with you; code is just <strong>weird</strong>.</p><p>Code is exacting. It&#8217;s cryptic, even abrasive; it rejects casual inspection. It&#8217;s <em>almost</em> like regular English, sometimes&#8212;there are words you recognize&#8212;but they&#8217;re arranged in a seemingly random order, and littered with mysterious bits.</p><p>Like, here&#8217;s a little bit of Python code that you might find on, say, a pet adoption website:</p><pre><code><code>for dog in shelter.avail:
    if dog.is_friendly:
        print(f"This is {dog.name}! They like {dog.likes}.")</code></code></pre><p>This is really simple code (by code standards); it just loops through all the available, friendly dogs at the shelter and prints out a little message about them.</p><p>But what the hell? <code>for dog in shelter.avail</code> sounds like robot-speak. It&#8217;s certainly not how a human would say it. There are also uncommon symbols, like curly braces, and the lines are indented strangely. And what&#8217;s with that little &#8220;f&#8221; before &#8220;This is ...&#8221;?</p><p>And as code goes, Python code tends to be pretty <em>readable</em>; you can kind of get the gist of that block, even if you aren&#8217;t technical at all. Unfortunately, most code looks more like this bit of JavaScript:</p><pre><code><code>const val = obj?.data?.items?.[0]?.name ?? fallback?.name ?? 'Unknown';</code></code></pre><p>Or worse, like this glob of Perl:</p><pre><code><code>$_ = $o-&gt;{d}{i}[0]{n} // $f-&gt;{n} // 'Unknown'; s/^\s+|\s+$//g; $v = $_ || undef;</code></code></pre><p>(Those two blocks of code do roughly the same thing, by the way. &#128553;)</p><p>Even as a professional software engineer, when I look at these examples, my eyes just glaze over. It&#8217;s a disaster.</p><p>Why does this suck so much? Is it hard on purpose, like canceling your Amazon account? Is it a bizarre initiation rite to keep non-programmers out of the club?</p><p>No&#8212;at least, not mostly. It&#8217;s just kind of an unhappy side effect of how code works (and it&#8217;s something you can now easily get past, as we&#8217;ll see in a minute).</p><h2><strong>Code Is Instructions</strong></h2><p>In part, code is like this because it <em>isn&#8217;t</em> natural language; it&#8217;s a set of precise instructions telling the computer what to actually do, which electrons to put where.</p><p>Thus, it&#8217;s much more <em>dense</em> and <em>strict</em> than regular language. Every symbol, space, or word has a <em>specific</em> meaning, with no ambiguity or room for interpretation, and nothing extra. You can&#8217;t use the English phrase &#8220;for every available dog in the shelter&#8221; in code, because &#8220;for every&#8221; and &#8220;in the&#8221; are meaningless in Python; it has to conform to a specific set of rules to even run at all.</p><p>Computer chips don&#8217;t tolerate ambiguity; they require exact precision. And they execute code sequentially, one line at a time. If you forget a step, the chip won&#8217;t just &#8220;figure it out&#8221;; it&#8217;s just a machine.</p><p>We&#8217;re not used to this, because it&#8217;s not at all how we speak. Regular language is fluffy! It&#8217;s like those styrofoam packing peanuts&#8212;you can throw in a little more or less to couch your meaning, give it a different vibe. You can be playful or meandering or prissy, you can gesture vaguely at something, you can make it rhyme.</p><p>But not code. It&#8217;s all business.</p><h2><strong>Code Is Terse</strong></h2><p>Historically, programming languages have had to strike a balance where they are both <em>pre</em>cise (there&#8217;s no ambiguity) and <em>con</em>cise (they don&#8217;t take too long to type, and they don&#8217;t waste space in the computer&#8217;s memory).</p><p>The latter concern&#8212;not using too much memory&#8212;is just a relic from decades ago, when computers were slow and limited, so you really had to be <em>economical</em>. We don&#8217;t have to worry about that anymore; the first version of the Linux operating system was smaller than the &#8220;Pizza Rat&#8221; video.</p><p>But the notion that languages should be concise is still baked pretty deeply into programming culture and language design. Once you get the hang of it, concise code tends to be <em>easier</em> to work with than verbose code, because it&#8217;s just less to parse.</p><p>Over the years, there have been languages that have tried to be more verbose and &#8220;English-like&#8221;, but that always ends up being worse. For example, COBOL (from the 1960s) was supposed to be a computer language that &#8220;regular business people&#8221; could use; here&#8217;s what that kind of language looks like:</p><pre><code><code>IDENTIFICATION DIVISION.
PROGRAM-ID. RETRIEVE-DISPLAY-NAME.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 CUSTOMER-NAME       PIC X(50) VALUE SPACES.
01 FINAL-DISPLAY-NAME  PIC X(50).

PROCEDURE DIVISION.
    IF CUSTOMER-NAME NOT EQUAL TO SPACES
        MOVE CUSTOMER-NAME TO FINAL-DISPLAY-NAME
    ELSE
        MOVE "Unknown" TO FINAL-DISPLAY-NAME
    END-IF.
    DISPLAY FINAL-DISPLAY-NAME.
    STOP RUN.</code></code></pre><p>Does that look &#8220;regular business friendly&#8221; to you? Being verbose doesn&#8217;t really make it <em>better</em>&#8212;just <em>longer</em>. Long code takes more time for programmers to type and read. So programmers (who type all day long) love to abbreviate things.</p><p>That might sound ok, until you run across some monstrosity like:</p><pre><code><code>skt.ttl = MAX_TTL_MS</code></code></pre><p>As a programmer, when I see that, I instantly know that &#8220;MAX_TTL_MS&#8221; means &#8220;maximum time-to-live in milliseconds&#8221;, but how on earth would you know that?</p><p>There are also operators, which are often weird combinations of symbols. For example, the operators in C++ include:</p><ul><li><p>Arithmetic: <code>+</code> <code>-</code> <code>*</code> <code>/</code> <code>%</code> <code>++</code> <code>--</code></p></li><li><p>Assignment: <code>=</code> <code>+=</code> <code>-=</code> <code>*=</code> <code>/=</code> <code>%=</code> <code>&amp;=</code> <code>|=</code> <code>^=</code> <code>&lt;&lt;=</code> <code>&gt;&gt;=</code></p></li><li><p>Bitwise: <code>&amp;</code> <code>|</code> <code>^</code> <code>~</code> <code>&lt;&lt;</code> <code>&gt;&gt;</code></p></li><li><p>Pointer/Member: <code>*</code> <code>&amp;</code> <code>-&gt;</code> <code>.</code> <code>-&gt;*</code> <code>.*</code></p></li></ul><p>And that&#8217;s not even half of them. What the heck are these? Does <code>++</code> mean &#8220;add it twice&#8221;? (Nope! It means &#8220;add one&#8221;.)</p><p>This makes code look and feel even more like reading math equations than it does like reading prose; it&#8217;s quite difficult to visually parse. (Plus, even these symbols are different in each language!)</p><p>The net result of all this is that as an outsider, programming code is <em>cryptic</em>; it might as well be an actual <em>secret</em> code.</p><h2><strong>Code Is Arbitrary</strong></h2><p>Now, this might surprise you, but in a way, code is also a lot <em>less</em> strict than natural language. When we speak to each other in English, we are forced to use <em>real</em> words&#8212;like, words that are in the dictionary, with specific meanings. We don&#8217;t get to just decide what each word means, or make up new words on the spot, because no one would understand what we&#8217;re trying to say.</p><p>But in code, you can (and must!) do <em>exactly the opposite</em>, all the time. Nearly every word you see in code is a word that some programmer has defined. And those words have a specific meaning in <em>this context</em> because they were explicitly defined to have that meaning.</p><p>For example, here&#8217;s that first code snippet again:</p><pre><code><code>for dog in shelter.avail:
    if dog.is_friendly:
        print(f"This is {dog.name}! They like {dog.likes}.")</code></code></pre><p>The words &#8220;dog&#8221; and &#8220;shelter&#8221; in that code aren&#8217;t the <em>real</em> words &#8220;dog&#8221; and &#8220;shelter&#8221; that you use in everyday speech. They are <strong>symbols</strong> with structure and meaning defined in the program. You could equivalently have picked different symbols:</p><pre><code><code>for d in myShelter.available_dogs:
    if d.easy_to_work_with:
        print(f"This is {d.name}! They like {d.likes}.")</code></code></pre><p>The words are almost entirely different (&#8221;d&#8221; instead of &#8220;dog&#8221;, &#8220;myShelter&#8221; instead of &#8220;shelter&#8221;). But the functionality is <em>identical</em>. The symbols are completely arbitrary! They can be anything you want, as long as they&#8217;re consistent in context.</p><p>This takes some getting used to, precisely because you&#8217;ve spent your whole life using <em>real</em> words with <em>shared</em> meanings. That&#8217;s not what these are at all. You have to put on a special mental lens to be able to &#8220;read&#8221; something where every word was just made up by someone!</p><p>In fact, only a small handful of words have fixed meanings in code; these are called <strong>keywords</strong>, and there are hardly any of them. For example, here are <em>all</em> of the reserved keywords in Python:</p><pre><code><code>and as assert async await break class continue def del elif else except False finally for from global if import in is lambda None nonlocal not or pass raise return True try while with yield</code></code></pre><p>That&#8217;s right&#8212;just 35 words! JavaScript has a whopping 38:</p><pre><code><code>await break case catch class const continue debugger default delete do else enum export extends false finally for function if import in instanceof new null return super switch this throw true try typeof var void while with yield</code></code></pre><p>Compared to the full vocabulary of different words you&#8217;ll see in code, these lists are <em>tiny</em>.</p><p>That means that literally <em>everything</em> else you see in a program (besides symbols, like <code>+</code> and <code>*</code>) is just <em>some word a programmer came up with</em>. And those made-up words aren&#8217;t universal&#8212;the same word will mean something totally different in another program (or maybe even in a different part of the same program!).</p><p>And each symbol has to be a <em>single series of characters without spaces</em>, because spaces mean that what follows is a different symbol. So that code didn&#8217;t ask if the dog &#8220;is friendly&#8221; (with a space), it asked if the dog &#8220;is_friendly&#8221; (with an underscore); &#8220;is_friendly&#8221; is a single value (true or false). Programmers (who are always in a hurry) will therefore often opt for really short symbols for things (like &#8220;f&#8221; instead of &#8220;friendly&#8221;).</p><p>Programmers aren&#8217;t <em>trying</em> to make code hard to read. They <em>want</em> to be able to read it, with their regular English-reading eyes, and they want other people to be able to read it too. They just fail at that most of the time, for all these reasons.</p><h2><strong>The Good News: You Can Un-Weird It</strong></h2><p>Once in a while, you might find yourself wishing you could just read the code like a programmer&#8212;maybe something feels fishy, or maybe you&#8217;re curious to see if it really does what you want. How do you know it&#8217;s not doing something completely boneheaded?</p><p>To whatever degree you actually <em>want</em> or need to do that, there&#8217;s a much more effective way now than reading the code yourself: just ask the coding agent to translate it.</p><pre><code><code>Hey buddy. Could you take this code for showing the list of available dogs and translate it into regular language for me, line by line? Explain it like I'm five.</code></code></pre><p>It&#8217;ll patiently explain exactly what the code is doing:</p><blockquote><p><em>Sure! This code starts by going through all the available dogs in the shelter, one by one:</em></p><pre><code><code>for dog in shelter.avail:</code></code></pre><p><em>For each one, it checks whether the dog is listed as friendly:</em></p><pre><code><code>    if dog.is_friendly:</code></code></pre><p><em>If it is, it prints out a message with the dog&#8217;s name and what it likes:</em></p><pre><code><code>        print(f"This is {dog.name}! They like {dog.likes}.")</code></code></pre></blockquote><p>You can ask it to zoom out (&#8221;what happens on the whole page here, in a little bit less detail&#8221;), or dig deeper into something you still don&#8217;t understand (&#8221;Where does it get the things that the dog likes? How many can there be?&#8221;). It&#8217;s wild, but that&#8217;s where we are&#8212;you&#8217;ve got an infinitely patient helper who can read code as easily as you can read nursery rhymes.</p><p>You may not find many occasions to engage like this (since most of the time, just <em>using</em> the software is sufficient to see if it does what you want). But don&#8217;t let &#8220;I can&#8217;t read code&#8221; be an excuse; if you ever do need to dig in at that level, the door is open to you.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://conjuringcode.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Conjuring Code: Make Your Own Software! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Hail Mary, Full Of Grease]]></title><description><![CDATA[The hero of Project Hail Mary does things no lone scientist ever could-unless he brought along something like an Al coding agent. That's the hopeful vision of Al.]]></description><link>https://conjuringcode.substack.com/p/hail-mary-full-of-grease</link><guid isPermaLink="false">https://conjuringcode.substack.com/p/hail-mary-full-of-grease</guid><dc:creator><![CDATA[Ian Varley]]></dc:creator><pubDate>Fri, 17 Jul 2026 00:11:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!jSKP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c2b19f-a16b-461c-b4d7-552e47477333_1788x492.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!jSKP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c2b19f-a16b-461c-b4d7-552e47477333_1788x492.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!jSKP!, /__u/conjuringcode.substack.com/w_424, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c2b19f-a16b-461c-b4d7-552e47477333_1788x492.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!jSKP!, /__u/conjuringcode.substack.com/w_848, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c2b19f-a16b-461c-b4d7-552e47477333_1788x492.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!jSKP!, /__u/conjuringcode.substack.com/w_1272, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c2b19f-a16b-461c-b4d7-552e47477333_1788x492.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!jSKP!, /__u/conjuringcode.substack.com/w_1456, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c2b19f-a16b-461c-b4d7-552e47477333_1788x492.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!jSKP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c2b19f-a16b-461c-b4d7-552e47477333_1788x492.jpeg" width="1456" height="401" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/98c2b19f-a16b-461c-b4d7-552e47477333_1788x492.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:401,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Ryan Gosling as Ryland Grace in a spacesuit, backlit at the end of a spacecraft corridor lined with lab equipment and plants&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Ryan Gosling as Ryland Grace in a spacesuit, backlit at the end of a spacecraft corridor lined with lab equipment and plants" title="Ryan Gosling as Ryland Grace in a spacesuit, backlit at the end of a spacecraft corridor lined with lab equipment and plants" srcset="/__u/substackcdn.com/image/fetch/$s_!jSKP!, /__u/conjuringcode.substack.com/w_424, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c2b19f-a16b-461c-b4d7-552e47477333_1788x492.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!jSKP!, /__u/conjuringcode.substack.com/w_848, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c2b19f-a16b-461c-b4d7-552e47477333_1788x492.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!jSKP!, /__u/conjuringcode.substack.com/w_1272, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c2b19f-a16b-461c-b4d7-552e47477333_1788x492.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!jSKP!, /__u/conjuringcode.substack.com/w_1456, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c2b19f-a16b-461c-b4d7-552e47477333_1788x492.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Watching the latest Andy Weir adaptation, <a href="https://en.wikipedia.org/wiki/Project_Hail_Mary_(film)">Project Hail Mary</a>, I was struck by something profoundly hopeful and empowering.</p><p>A standard mechanic in hero movies is that no matter what the <em>actual</em> expertise or background of the hero, they can <em>obviously</em> tackle complex science or engineering problems in totally unrelated domains. In Independence Day, for example, David Levinson, who is fully a <em>satellite technician for a cable company</em>, manages to whip up a computer virus that runs natively on alien hardware. The Tony Starks and Jack Ryans on the screen never have the slightest trouble expertly one-shotting solutions in areas they have no business knowing anything about (and always under time pressure).</p><p>And we forgive this in the movies because ... well, they&#8217;re movies. It&#8217;s a macguffin, don&#8217;t think about it too hard.</p><p>In <em>Hail Mary</em>, Ryan Gosling&#8217;s character (Grace) follows suit. He&#8217;s a <em>junior high school teacher</em>, exiled from the world of biology research, who finds himself alone in space. And after initially freaking out and rejecting the mantle of hero, he comes to embrace it over the course of the movie, and we&#8217;re rooting for him.</p><p>We&#8217;re rooting for him so hard, in fact, that we barely notice when he does things that a former academic biologist (even a very clever, handsome one) would never, <em>ever</em> be able to do. Like:</p><ul><li><p>Creating a linguistic translation model for a non-human species from scratch</p></li><li><p>Reprogramming flight software for probes in a way that will send them many light years away with inconceivably precious biological cargo</p></li><li><p>Manufacturing tools and parts out of xenonite, a material invented by someone else&#8217;s civilization.</p></li></ul><p>Even if you grant that he came equipped with some cool near-future technologies, and that Rocky did a lot of heavy lifting, it still doesn&#8217;t add up. Any one of those things that Grace did on his own would take teams of the most expert humans working for months on the engineering problem to even have a hope of coming close. It&#8217;s just not believable.</p><p><em>Unless!</em> Unless one of the technologies he brought with him from Earth was a future version of something like an AI Coding Agent: an engineering sidekick who understands what you&#8217;re trying to do and can fill in all the details to implement what you&#8217;re asking for&#8212;writing code, creating prototypes and materials with robotic appendages, and working out all the test cases and alternatives, with your feedback to keep it moving in the right direction.</p><p>Imagine the prompt:</p><blockquote><p><em>OK, I need to create a sophisticated model to start to understand Rocky&#8217;s language. Let&#8217;s build some realtime translation software for it. Make me a harness that records what he&#8217;s saying and I&#8217;ll give indications of what I think he means. Draw on humanity&#8217;s best linguistics research and maintain a suite of statistically possible translation paths, getting better over time.</em></p></blockquote><p>Or:</p><blockquote><p><em>Hey, we need to send these Beetle probes home to Earth on their own. Build some simulations of what might happen and what onboard software and hardware changes are needed for them to make the journey in the most resilient-yet-fast way possible.</em></p></blockquote><p>We don&#8217;t see him doing this, outright. The computer doesn&#8217;t even have a fun name like &#8220;Claude&#8221; or &#8220;Siri&#8221;. But you can imagine that this is what he&#8217;s actually doing&#8212;in fact, that in this future, this is just something <em>everyone</em> does, and it&#8217;s common knowledge. Not a fancy hyped up &#8220;AI&#8221;; it&#8217;s just how building stuff works. Your intent stays in the foreground, you engage with ideas and intents ... and machine intelligence fills in the details, checks the math, etc.</p><p>This is the part I find empowering and hopeful. When some people think about the role of AI in our lives, it&#8217;s in the frame of &#8220;replacement&#8221;, dulling our mental faculties and making us dumb. But this vision is a radically different one: the idea that capabilities like this might be an integral, quiet part of our lives, allowing us to do MUCH bigger things with machine intelligence as a <em>tool</em>. Science and engineering only get more complicated over time; to live on the cutting edge, where no single human can master everything at an expert level, we have the opportunity to adjust our altitude and wield machine intelligence as a tool in the background.</p>]]></content:encoded></item><item><title><![CDATA[Gears and Ghosts]]></title><description><![CDATA[There are now two kinds of software: gears and ghosts. The best systems will combine them both.]]></description><link>https://conjuringcode.substack.com/p/gears-and-ghosts</link><guid isPermaLink="false">https://conjuringcode.substack.com/p/gears-and-ghosts</guid><dc:creator><![CDATA[Ian Varley]]></dc:creator><pubDate>Fri, 19 Jun 2026 21:09:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fzYC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f1f4e1b-ba19-46a9-b19c-fd105c567b85_1536x548.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!fzYC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f1f4e1b-ba19-46a9-b19c-fd105c567b85_1536x548.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!fzYC!, /__u/conjuringcode.substack.com/w_424, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f1f4e1b-ba19-46a9-b19c-fd105c567b85_1536x548.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!fzYC!, /__u/conjuringcode.substack.com/w_848, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f1f4e1b-ba19-46a9-b19c-fd105c567b85_1536x548.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!fzYC!, /__u/conjuringcode.substack.com/w_1272, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f1f4e1b-ba19-46a9-b19c-fd105c567b85_1536x548.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!fzYC!, /__u/conjuringcode.substack.com/w_1456, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f1f4e1b-ba19-46a9-b19c-fd105c567b85_1536x548.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!fzYC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f1f4e1b-ba19-46a9-b19c-fd105c567b85_1536x548.jpeg" width="1456" height="519" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7f1f4e1b-ba19-46a9-b19c-fd105c567b85_1536x548.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:519,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Close-up of interlocking metal gears&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Close-up of interlocking metal gears" title="Close-up of interlocking metal gears" srcset="/__u/substackcdn.com/image/fetch/$s_!fzYC!, /__u/conjuringcode.substack.com/w_424, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f1f4e1b-ba19-46a9-b19c-fd105c567b85_1536x548.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!fzYC!, /__u/conjuringcode.substack.com/w_848, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f1f4e1b-ba19-46a9-b19c-fd105c567b85_1536x548.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!fzYC!, /__u/conjuringcode.substack.com/w_1272, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f1f4e1b-ba19-46a9-b19c-fd105c567b85_1536x548.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!fzYC!, /__u/conjuringcode.substack.com/w_1456, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f1f4e1b-ba19-46a9-b19c-fd105c567b85_1536x548.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In the early days of generative AI&#8212;which was <em>last year</em>, by the way&#8212;you couldn&#8217;t turn a corner without encountering a story about some boneheaded action taken by an AI, on behalf of some bewildered (and / or negligent) company. Giving away <a href="https://www.cbc.ca/news/canada/british-columbia/air-canada-chatbot-lawsuit-1.7116416">plane tickets</a> or <a href="https://futurism.com/the-byte/car-dealership-ai">cars</a>, making up words <a href="https://www.wired.com/story/hospitals-ai-transcription-tools-hallucination/">doctors didn&#8217;t say</a>, suggesting the sale of <a href="https://www.fastcompany.com/91077664/nyc-ai-chatbot-business-advice-violate-laws">pre-nibbled cheese</a>. These are potent cautionary tales; saving a little money on your call center won&#8217;t do you much good if you turn around and recommend chlorine gas as a <a href="https://gizmodo.com/paknsave-ai-savey-recipe-bot-chlorine-gas-1850725057">refreshing mocktail</a>.</p><p>The natural reaction is that this is a &#8220;bug&#8221; that needs fixing. Can&#8217;t we just teach these models to tell the difference between truth and lies?</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://conjuringcode.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Conjuring Code: Make Your Own Software! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>This is the wrong framing. I mean, it&#8217;s not wrong to <em>want</em> to make them more truthful, but you won&#8217;t succeed in any real way, because their nondeterminism isn&#8217;t a bug; it&#8217;s so inherent to the technology, it&#8217;s practically a feature. LLMs are outlandishly complex artifacts, and there&#8217;s no future world where you just &#8220;iron out the kinks&#8221;. They are <a href="https://conjuringcode.com/the-guessing-machine">guessing machines</a>, and if you put them into situations where they can&#8217;t guess correctly, they will still guess.</p><p>Reports like this have become more rare in 2026&#8212;not because models no longer make mistakes, but because companies got wiser and put in guardrails (though, at least as of this writing, you can still use the Chipotle bot for <a href="https://github.com/cyberpapiii/chipotlai-max">free AI inference tokens</a>).</p><p>OK, fine&#8212;if that&#8217;s not the right framing, then what <em>is</em>?</p><h2>A Tale Of Two Softwares</h2><p>Consider: there are now two fundamentally different <em>kinds</em> of calculation, and they work by radically different rules.</p><p>Traditional software performs calculation like a <strong>gear</strong>: deterministic, with teeth that always mesh in the exact same way. It&#8217;s so precise, in fact, that we can build towering <em>stacks</em> of software (like, say, the Linux operating system, or the internet) that actually (largely) work.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> <a href="https://conjuringcode.com/gears-and-ghosts#fn1"><sup>1</sup></a></p><p>The other kind&#8212;generative AI&#8212;is not a gear. It is a <strong>ghost</strong>: a force that&#8217;s powerful, responsive, and <em>reminiscent</em> of human form, while still being obviously (and eerily) non-human. The words inside an LLM probably emerged from a living human&#8217;s mind once<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>, and the technology of generative AI has given us the ability to summon them back from the void, as conversation partners and problem-solvers.</p><p>This sounds ridiculous, but LLMs <em>are</em> ridiculous. An AI foundation model is a sprawling, cavernous universe. It&#8217;s not huge in absolute physical terms&#8212;the whole thing would fit on a $100 hard drive from Best Buy&#8212;but inside, there&#8217;s a compressed, blurry representation of a <em>vast</em> slice of shared human knowledge. When you converse with it, you&#8217;re forging a single path through its infinite, labyrinthine web of concepts and impressions. The results are ghostly whispers, emerging from a process that&#8217;s not consciously experienced by a living being, but preserves the shape and the meaning of thought.</p><p>And which&#8212;by the way&#8212;is <em>incredibly</em> effective at a wide range of cognitive tasks (when used correctly). LLMs can write code, summarize information, plan and debate and digest; and they are <em>outlandishly</em> fast compared to humans. They&#8217;re rapidly reformatting whole fields of human endeavor.</p><p>The true gears are still there, of course, in the background, doing gear stuff&#8212;trillions of lines of code, running continuously and flawlessly, embedded in every process, tool, and device on earth. The gears go on gearing, unaware that ghosts have arrived at the party and are vying for a share of the computational pie.</p><h2>Gears Are Terrible Ghosts</h2><p>For as precise and faithful as gears are, they&#8217;re also crap at doing many important things because they are narrow and rigid. Their exacting logic makes them unsuitable for the fuzzy, nebulous work our brains do all day long. That shape in the distance&#8212;is that a bear? That email subject line&#8212;is that going to upset my boss?</p><p>Even tasks that seem straightforward&#8212;&#8221;hey, could you merge these two customer spreadsheets?&#8221;&#8212;are a pain in the ass to do with gears. If you try to solve problems like this with traditional code, you end up in a series of increasingly desperate heuristics and brittle special cases without end.</p><p>But an AI just <em>knows</em> how to do this stuff. It knows that names and titles aren&#8217;t just strings of characters, they&#8217;re meaningful and richly patterned. It knows Bob and Robert are the same name. It even knows that <em>Margaret and Peg</em> are the same name. It deals in probabilities as a native language, not a special case.</p><p>Before AI, people tried SO HARD to make gears do ghost things. The <a href="https://cyc.com/">Cyc</a> project spent decades manually encoding common sense so that programs could use it. Machine translation limped along as a bunch of massive lookup tables with rules bolted on, capable of translating &#8220;Where is the bathroom?&#8221;, but giving you word salad if you asked for a joke or a poem. Try writing code that can read a document and give you a summary; there&#8217;s no algorithm for &#8220;what matters&#8221; or &#8220;how similar is this thought to that one&#8221;. Gears can count words; they can find keywords, extract sentences, store data.</p><p>But working at the concept level? Understanding <em>what something is about</em>? That&#8217;s a ghost thing.</p><h2>Ghosts Aren&#8217;t Very Good Gears, Either</h2><p>The same disparity goes in the other direction, too. Ask an AI to multiply two large numbers (without using a calculator), and after a million FLOPs through the belly of a neural network, the guess you get out the other side will be wildly wrong. A calculator from 1972, on the other hand, will turn its little silicon gears and get the perfect answer, every time, in microseconds. LLMs have a sort of &#8220;fuzzy impression&#8221; of what multiplication is; the calculator actually performs the algorithm.</p><p>But it&#8217;s not just &#8220;bad at math&#8221;, like a 1960s Barbie doll. It&#8217;s bad at doing <em>anything</em> that <strong>needs to happen the same way every time</strong>. Try using it to file your taxes&#8212;run it 10 times, and you&#8217;ll get 8 &#8220;very similar&#8221; results. That&#8217;s just its nature&#8212;it&#8217;s specifically nondeterministic, and each token is generated with a little bit of chance thrown in, every time. When you ask the guessing machine something <em>really</em> clear and obvious (like &#8220;Who was the first president of the United States?&#8221;), sure, you might always get the same answer. But venture into any subject even slightly more complex or subjective and all bets are off.</p><p>This means that you absolutely cannot build a &#8220;towering stack&#8221; of software atop LLMs, because there&#8217;s just too much room for creativity and divergence. Gears don&#8217;t work if the teeth are spaced a little differently on each spin.</p><p>This is no knock on LLMs; it&#8217;s just how they work. They aren&#8217;t algorithms; they are apparitions.</p><h2>Putting The Ghost In The Machine</h2><p>The upshot of this new duality is that for any given goal, you have to choose: do you want to use a gear (fast, cheap, rigid) or a ghost (expensive, non-deterministic, flexible)?</p><p>People on the cutting edge&#8212;the self-described &#8220;AI natives&#8221;&#8212;are trying to do <em>everything</em> with AI. Don&#8217;t read your emails, they say; let a ghost read them and act on them. Don&#8217;t call your prospects; have your ghost pick up the phone. Don&#8217;t bother with databases and UI widgets and logic and all that nonsense; it&#8217;s ghosts all the way down.</p><p>Some of that might succeed, but I suspect most of it will fail for things that really matter, because it&#8217;s much harder to confidently reason about what a ghost is going to do. If you could be confident that they&#8217;ll always be &#8220;close enough&#8221;, that might be one thing; but in practice, they&#8217;re often <em>egregiously, horribly</em> wrong.</p><p>On the other hand, while the &#8220;no AI ever&#8221; crowd might have defensible moral high ground, there are just some kinds of cognitive work that ghosts do ... <em>better</em>. If you&#8217;ve ever written code by hand, watching a coding agent work makes that abundantly (painfully) clear. Same goes for any kind of detailed symbol manipulation work: searching through nebulous data, editing prose, etc. You can choose not to use LLMs for these things, but you can&#8217;t pretend your way is more <em>effective</em> (since, to quote Spurgeon, the LLM will have &#8220;gone &#8216;round the world while you&#8217;re still pulling your boots on&#8221;).</p><p>But this stark dualism obscures what I think might be a happier middle path: <strong>you can use them both, together</strong>. You can build software that is real, concrete, specific code ... right up to the point where it needs to look at some human language nonsense and make a decision about it, at which point you summon a little ghost, ask it to do that one thing for you, and then release it back into the bardo.</p><p>We can have our real software&#8212;our dependable precision gears, now crafted at 10 times the speed&#8212;but when the time comes to parse that messy web page, or figure out which option someone really wants&#8212;well, say the magic word and you&#8217;ve got a single-use ghost for the occasion.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>When traditional software breaks&#8212;which it does all the time, of course&#8212;it&#8217;s because of wobbly <em>programming</em>, not because the rules of computation are themselves wobbly. It&#8217;s still made of gears, they&#8217;re just shoddy gears. </p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>An ever-increasing amount of the training corpus is also AI generated at this point, of course, so that&#8217;s becoming less and less true; though you could also just say that those words took a more <em>circuitous</em> route from the human to you.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Apps That Work The Way You Think]]></title><description><![CDATA[Personal software lets you build for the way your brain actually works-not the way someone else thinks it should.]]></description><link>https://conjuringcode.substack.com/p/apps-that-work-the-way-you-think</link><guid isPermaLink="false">https://conjuringcode.substack.com/p/apps-that-work-the-way-you-think</guid><dc:creator><![CDATA[Ian Varley]]></dc:creator><pubDate>Fri, 15 May 2026 19:41:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_yZ6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ab26bb3-94d1-484e-a931-68d1944db077_2390x748.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!_yZ6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ab26bb3-94d1-484e-a931-68d1944db077_2390x748.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!_yZ6!, /__u/conjuringcode.substack.com/w_424, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ab26bb3-94d1-484e-a931-68d1944db077_2390x748.png 424w, /__u/substackcdn.com/image/fetch/$s_!_yZ6!, /__u/conjuringcode.substack.com/w_848, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ab26bb3-94d1-484e-a931-68d1944db077_2390x748.png 848w, /__u/substackcdn.com/image/fetch/$s_!_yZ6!, /__u/conjuringcode.substack.com/w_1272, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ab26bb3-94d1-484e-a931-68d1944db077_2390x748.png 1272w, /__u/substackcdn.com/image/fetch/$s_!_yZ6!, /__u/conjuringcode.substack.com/w_1456, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ab26bb3-94d1-484e-a931-68d1944db077_2390x748.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!_yZ6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ab26bb3-94d1-484e-a931-68d1944db077_2390x748.png" width="1456" height="456" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6ab26bb3-94d1-484e-a931-68d1944db077_2390x748.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:456,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A stylized illustration of a house rooftop with four different elaborate weather instruments&#8212;antennas, dishes, and meteorological contraptions&#8212;mounted on it against a cloudy sky.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A stylized illustration of a house rooftop with four different elaborate weather instruments&#8212;antennas, dishes, and meteorological contraptions&#8212;mounted on it against a cloudy sky." title="A stylized illustration of a house rooftop with four different elaborate weather instruments&#8212;antennas, dishes, and meteorological contraptions&#8212;mounted on it against a cloudy sky." srcset="/__u/substackcdn.com/image/fetch/$s_!_yZ6!, /__u/conjuringcode.substack.com/w_424, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ab26bb3-94d1-484e-a931-68d1944db077_2390x748.png 424w, /__u/substackcdn.com/image/fetch/$s_!_yZ6!, /__u/conjuringcode.substack.com/w_848, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ab26bb3-94d1-484e-a931-68d1944db077_2390x748.png 848w, /__u/substackcdn.com/image/fetch/$s_!_yZ6!, /__u/conjuringcode.substack.com/w_1272, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ab26bb3-94d1-484e-a931-68d1944db077_2390x748.png 1272w, /__u/substackcdn.com/image/fetch/$s_!_yZ6!, /__u/conjuringcode.substack.com/w_1456, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ab26bb3-94d1-484e-a931-68d1944db077_2390x748.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In <a href="https://conjuringcode.com/podcast/03-mark-wochner">this week&#8217;s episode</a> of the Conjuring Code podcast, my guest <strong>Mark Wochner</strong> made an interesting point that&#8217;s worth repeating.</p><p>We talk a lot about &#8220;personal software&#8221; these days, which is made possible by AI assistance. Building your own software is certainly not a panacea&#8212;as it turns out, lots of software is more complex and subtle than you think&#8212;but one real virtue is that it lets you engage with the world in the way YOUR brain works.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://conjuringcode.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Conjuring Code: Make Your Own Software! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>In Mark&#8217;s case, this was specifically around <em>weather data</em>. There are plenty of weather apps out there, but for one thing, they only show you weather in the <em>future</em>, and Mark wanted to be able to see weather in the <em>past</em> (which is why his app is called <a href="https://apps.apple.com/us/app/historicast/id6761114831">Historicast</a>).</p><p>But what I found even <em>more</em> interesting is that this app shows you <em>four different forecasts</em>, rather than just one. (They come from the four different major weather models around the world.) Where perhaps your typical bloke might just want an <em>average</em> across these four, Mark actually wanted to know when they <em>disagree</em>, because as a scientist, his brain is trained to engage with that kind of statistical uncertainty, seeing things as probabilities across multiple models rather than a single guess.</p><p>My point isn&#8217;t that that&#8217;s a &#8220;better&#8221; way of looking at the world (though I think it probably is). My point is, <strong>that&#8217;s what he wanted</strong>. And building his own software let him have it.</p><p>There are lots more insights in this week&#8217;s episode, <a href="https://conjuringcode.com/podcast/03-mark-wochner">give it a listen</a>!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://conjuringcode.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Conjuring Code: Make Your Own Software! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Do-Over]]></title><description><![CDATA[When Al coding goes sideways, you have an option programmers never really had before: just take a do-over.]]></description><link>https://conjuringcode.substack.com/p/do-over</link><guid isPermaLink="false">https://conjuringcode.substack.com/p/do-over</guid><dc:creator><![CDATA[Ian Varley]]></dc:creator><pubDate>Fri, 24 Apr 2026 18:48:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!35hm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d4a53b1-ad93-4a73-8558-481eda165a61_1280x640.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!35hm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d4a53b1-ad93-4a73-8558-481eda165a61_1280x640.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!35hm!, /__u/conjuringcode.substack.com/w_424, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d4a53b1-ad93-4a73-8558-481eda165a61_1280x640.png 424w, /__u/substackcdn.com/image/fetch/$s_!35hm!, /__u/conjuringcode.substack.com/w_848, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d4a53b1-ad93-4a73-8558-481eda165a61_1280x640.png 848w, /__u/substackcdn.com/image/fetch/$s_!35hm!, /__u/conjuringcode.substack.com/w_1272, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d4a53b1-ad93-4a73-8558-481eda165a61_1280x640.png 1272w, /__u/substackcdn.com/image/fetch/$s_!35hm!, /__u/conjuringcode.substack.com/w_1456, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d4a53b1-ad93-4a73-8558-481eda165a61_1280x640.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!35hm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d4a53b1-ad93-4a73-8558-481eda165a61_1280x640.png" width="1280" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2d4a53b1-ad93-4a73-8558-481eda165a61_1280x640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Close-up of a typewriter with the words 'do over.' typed on the page in black ink.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Close-up of a typewriter with the words 'do over.' typed on the page in black ink." title="Close-up of a typewriter with the words 'do over.' typed on the page in black ink." srcset="/__u/substackcdn.com/image/fetch/$s_!35hm!, /__u/conjuringcode.substack.com/w_424, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d4a53b1-ad93-4a73-8558-481eda165a61_1280x640.png 424w, /__u/substackcdn.com/image/fetch/$s_!35hm!, /__u/conjuringcode.substack.com/w_848, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d4a53b1-ad93-4a73-8558-481eda165a61_1280x640.png 848w, /__u/substackcdn.com/image/fetch/$s_!35hm!, /__u/conjuringcode.substack.com/w_1272, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d4a53b1-ad93-4a73-8558-481eda165a61_1280x640.png 1272w, /__u/substackcdn.com/image/fetch/$s_!35hm!, /__u/conjuringcode.substack.com/w_1456, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d4a53b1-ad93-4a73-8558-481eda165a61_1280x640.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I had to have a hard talk with Claude today.</p><p>We&#8217;d been working on a new feature all morning. At first, I thought our progress on the feature (a leaderboard view in an app at work) was going swimmingly. It showed the data I wanted, and our conversation about how to calculate the scores was even interesting!</p><p>But then things started to go awry. I asked to make sure all the tests were working, and Claude pointed out that there <em>were</em> no tests (because I hadn&#8217;t asked for any). Then, in the process of <em>writing</em> some tests, it got very confused about what was complete, which calculation we agreed on, and which database to use. It broke some other tests in the process, and generally started to spin its wheels. After a dozen go-arounds without getting steadily worse, I decided it was time to cut bait:</p><pre><code><code>Hey buddy. I think we got off on the wrong foot on this one. Take what we learned from trying this and write an explanation of what we decided to build, without any details about how we did it. Then reset the state of the local project to before we started, deleting any changes since the last commit.</code></code></pre><p>Then I started a new session and handed Claude that explanation, but this time I made sure to say:</p><pre><code><code>And use red/green TDD</code></code></pre><p>(Hat tip to <a href="https://simonwillison.net/">Simon Willison</a> who shared that &#8220;cheat code&#8221; on <a href="https://www.lennysnewsletter.com/p/an-ai-state-of-the-union">Lenny&#8217;s podcast</a> last week; it&#8217;s shorthand for asking the LLM to always write tests <em>before</em> writing code. &#8220;TDD&#8221; stands for &#8220;test driven development&#8221;, and red/green means you start with failing (red) tests and only then do you build the code that makes them pass (green)).</p><p>This time, I got <em>much</em> better results. I was starting with a clear picture of what to build, and so was Claude.</p><p>This is a useful thing to remember. Anytime you find yourself going down some path with AI and it doesn&#8217;t feel quite right, you have an amazing option that programmers never had before: <strong>just take a do-over</strong>.</p><p>I guess I should say, it&#8217;s not that we never <em>had</em> this option before; it&#8217;s just that in the old days, that involved throwing away hours (or <em>days</em>) of hard work. Even if you&#8217;re really sure that&#8217;s the right thing to do, actually <em>doing it</em> was so painful that often, you&#8217;d try to convince yourself otherwise. It&#8217;s not that bad! Maybe I can salvage it! Or maybe I should just live with it?</p><p>With AI, there&#8217;s just a lot less sting. You&#8217;re throwing away, what, a few minutes of work that you didn&#8217;t even do? Who cares? Just wipe it out and try again:</p><pre><code><code>Let's start over. Write a very brief document outlining what we were trying to do in this session, and then roll back to before we made any of these changes.</code></code></pre><p>The next time around, you can tweak your request to get better results. What did you dislike? What did you learn? You can dial in your request and context better, to make it more likely that you&#8217;ll get what you want this time.</p>]]></content:encoded></item><item><title><![CDATA[Post-Its]]></title><description><![CDATA[When software becomes as cheap and disposable as a Post-It note, we'll use it for things we haven't even imagined yet.]]></description><link>https://conjuringcode.substack.com/p/post-its</link><guid isPermaLink="false">https://conjuringcode.substack.com/p/post-its</guid><dc:creator><![CDATA[Ian Varley]]></dc:creator><pubDate>Wed, 15 Apr 2026 20:55:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!iNsX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8789049-877d-4ea4-bf5f-ef4f64f99619_2456x1096.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!iNsX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8789049-877d-4ea4-bf5f-ef4f64f99619_2456x1096.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!iNsX!, /__u/conjuringcode.substack.com/w_424, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8789049-877d-4ea4-bf5f-ef4f64f99619_2456x1096.png 424w, /__u/substackcdn.com/image/fetch/$s_!iNsX!, /__u/conjuringcode.substack.com/w_848, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8789049-877d-4ea4-bf5f-ef4f64f99619_2456x1096.png 848w, /__u/substackcdn.com/image/fetch/$s_!iNsX!, /__u/conjuringcode.substack.com/w_1272, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8789049-877d-4ea4-bf5f-ef4f64f99619_2456x1096.png 1272w, /__u/substackcdn.com/image/fetch/$s_!iNsX!, /__u/conjuringcode.substack.com/w_1456, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8789049-877d-4ea4-bf5f-ef4f64f99619_2456x1096.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!iNsX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8789049-877d-4ea4-bf5f-ef4f64f99619_2456x1096.png" width="1456" height="650" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a8789049-877d-4ea4-bf5f-ef4f64f99619_2456x1096.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:650,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A yellow Post-It note floating against a starry cosmic background of deep blues and purples.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A yellow Post-It note floating against a starry cosmic background of deep blues and purples." title="A yellow Post-It note floating against a starry cosmic background of deep blues and purples." srcset="/__u/substackcdn.com/image/fetch/$s_!iNsX!, /__u/conjuringcode.substack.com/w_424, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8789049-877d-4ea4-bf5f-ef4f64f99619_2456x1096.png 424w, /__u/substackcdn.com/image/fetch/$s_!iNsX!, /__u/conjuringcode.substack.com/w_848, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8789049-877d-4ea4-bf5f-ef4f64f99619_2456x1096.png 848w, /__u/substackcdn.com/image/fetch/$s_!iNsX!, /__u/conjuringcode.substack.com/w_1272, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8789049-877d-4ea4-bf5f-ef4f64f99619_2456x1096.png 1272w, /__u/substackcdn.com/image/fetch/$s_!iNsX!, /__u/conjuringcode.substack.com/w_1456, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8789049-877d-4ea4-bf5f-ef4f64f99619_2456x1096.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Yesterday&#8217;s <a href="https://www.nytimes.com/2026/04/14/podcasts/the-daily/ai-coders.html">NYT daily podcast with Clive Thompson</a> was a delight (and nicely summarized many of the things he covered in his <a href="https://www.nytimes.com/2026/03/12/magazine/ai-coding-programming-jobs-claude-chatgpt.html">full length op-ed last month</a>). The impact of AI on professional software engineering is profound; everybody agrees that a lot more code will get written, a lot faster. But beyond that, nobody knows how it&#8217;ll all play out, or what the implications are for the career and discipline of software engineering.</p><p>Over here in not-a-professional-engineer space, though, things are decidedly more cheery. When AI can take your idea from a description to working code, it opens up vast new possibilities for people who&#8212;realistically&#8212;would never have developed the skills to do modern software development. The fact that you no longer need to wade through the abject complexity means regular people can actually make useful, fun software now. Rad.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://conjuringcode.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Conjuring Code: Make Your Own Software! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>This means the ideas you&#8217;ve had floating around in your head for years can suddenly come to life. That perfect to-do list; the website for sharing your snarky burrito reviews; the app to mediate fights between your kids; whatever you&#8217;ve been dreaming of.</p><p>But there&#8217;s something more. Some of the most amazing things you&#8217;ll do with this new ability are <em>ideas that you haven&#8217;t even been able to have yet</em>.</p><p>This is something that really stuck out to me in the interview:</p><blockquote><p><em>What&#8217;s going to happen is that software stops being something that is precious and rare. It reminds me maybe a little bit of what happened with, like&#8212;this is going to sound really weird, but&#8212;with paper. So, paper used to be incredibly rare. You go back to pre-revolutionary Pennsylvania, and the average person had access to four pieces of paper a year.<br><br>And then suddenly, it becomes a lot cheaper, and all over the place, and you&#8217;ve got weird things like Post-It Notes, which are these really weird forms of paper that just transform the way that you live your life ...<br><br>So I think something very weird is going to happen as software stops being something that is special and difficult, and becomes almost like a Post-It Note, where it is ubiquitous; we call it into being for short-term reasons; it changes aspects of the way we communicate, and the way we deal with other people, in ways that I can&#8217;t really predict. But I do think that is what we&#8217;re looking at.</em></p></blockquote><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;2fdee7d9-ea87-48a4-90ca-da4dec00303e&quot;,&quot;duration&quot;:52.03592,&quot;downloadable&quot;:false,&quot;isEditorNode&quot;:true}"></div><p>When paper is expensive and hard to come by, the notion that you would use it in this disposable way&#8212;like, so you don&#8217;t forget to pack your kid&#8217;s lunch&#8212;seems ludicrous.</p><p>When software is expensive and hard to come by, it&#8217;s the same thing. What kinds of new uses haven&#8217;t even crossed your mind yet?</p><p>This is one of the core benefits of getting in to the practice of making software <em>right now</em>; not just that it lets you work through your backlog of ideas (which it does!), but that it might open your mind to ideas you haven&#8217;t even <em>had</em> yet (nor has anyone else).</p><p>As a (very) minor example of this, I&#8217;m working on launching a new podcast (stay tuned, launching next week!). I narrowed it down to a few choices of opening music, but wanted a second opinion (especially given that my taste in music runs a bit eclectic). Normally, I would&#8217;ve just asked a couple friends for their opinion, but knowing how easy it is to make software, I thought to myself, &#8220;Why not make a little poll where a bunch of people can rank the options, and I get the one that&#8217;s most popular in aggregate?&#8221; So I did! And I got much better feedback. It&#8217;s here if you want to take it yourself:</p><p><a href="http://localhost:5010/podcast/intro-poll">conjuringcode.com/podcast/intro-poll</a></p><p>(I&#8217;ll have to decide on the actual music within the next day or two, but I&#8217;ll leave it open for a while as an example at least.)</p><p>It&#8217;s not like this is a particularly <em>novel</em> approach, nor is it something that would&#8217;ve been all that hard to make before. But before, the difficulty of <em>actually</em> doing it would probably have prevented me from even seriously <em>entertaining</em> the idea.</p><p>As you become better at making the software that comes into your mind, what new kinds of things are going to occur to you?</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://conjuringcode.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Conjuring Code: Make Your Own Software! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[First Draft: Check ✅]]></title><description><![CDATA[The first draft of Conjuring Code (the book) is done! It's now in the hands of early beta readers.]]></description><link>https://conjuringcode.substack.com/p/first-draft-check</link><guid isPermaLink="false">https://conjuringcode.substack.com/p/first-draft-check</guid><dc:creator><![CDATA[Ian Varley]]></dc:creator><pubDate>Fri, 10 Apr 2026 20:44:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!15Es!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb53cfb27-848b-4984-a5e8-ec4d97fddb95_544x544.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;m excited to share that I&#8217;ve reached a fun milestone: <strong>the first draft of <a href="http://conjuringcode.com/book">Conjuring Code (the book)</a> is done!</strong> It&#8217;s now in the hands of a handful of early beta readers (thank you, if that&#8217;s you!). There&#8217;s still a looooong way to go before it reaches its final form (including probably making it about half as long, and figuring out who my awesome publisher will be). But the first notch is now in the belt, and it was (pardon my French) a crap-ton of work.</p><p>More than a few people have asked me, &#8220;Bro, why are you writing a <em>book</em> about this? Why not just smaller things like articles and podcast episodes?&#8221;</p><p>I get the question; writing a book is not a hip choice these days. By comparison to micro-format things like posts and threads, books seem so ... big. Difficult. Monolithic.</p><p>Plus, who has the attention span to even read a <em>whole book</em> these days?!</p><p>Well, as counter-cultural as it is, this feels like the right thing. <a href="/__u/conjuringcode.substack.com/p/programming-is-going-to-be-for-everybody">Anybody can make software now</a>, and I want more people to experience the fun of that. But even with AI to get you past the technical hurdles, for a lot of people, it&#8217;s still too much, too unfamiliar and scary. So helping people cross that chasm&#8212;that&#8217;s the spirit of the book, to be your friendly guide through the whole landscape, even if you only need a little bit of it right now.</p><p>Of course, I will <em>also</em> be doing all those other things&#8212;blogs, podcasts, articles, talks, etc. Now that I&#8217;ve got this draft, I am ready to start unleashing all the other kinds of content. I just needed to put all the pieces together in my mind first, in one cohesive frame.</p><p>I&#8217;d never created anything book-length before, and boy howdy is that a learning experience. But I&#8217;m proud of how far it&#8217;s come and I think you&#8217;re going to love it.</p><p>You can check out the current <a href="http://conjuringcode.com/book/outline">Table of Contents</a> right here, and if you&#8217;re interested in being a beta reader in the next round (May 2026), <a href="http://conjuringcode.com/contact">let me know</a>.</p>]]></content:encoded></item><item><title><![CDATA[Programming Is Going To Be For Everybody]]></title><description><![CDATA[And it's going to be the most amazing thing.]]></description><link>https://conjuringcode.substack.com/p/programming-is-going-to-be-for-everybody</link><guid isPermaLink="false">https://conjuringcode.substack.com/p/programming-is-going-to-be-for-everybody</guid><dc:creator><![CDATA[Ian Varley]]></dc:creator><pubDate>Tue, 31 Mar 2026 16:55:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!15Es!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb53cfb27-848b-4984-a5e8-ec4d97fddb95_544x544.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A couple weeks ago, programming legend Steve Yegge was on the <a href="https://newsletter.pragmaticengineer.com/p/from-ides-to-ai-agents-with-steve">Pragmatic Engineer podcast</a>. It was a provocative conversation overall, but what really stood out (to me) was a thing he said at the end:</p><blockquote><p><em>I&#8217;m serious, man. Programming is going to be for everybody. And it&#8217;s going to be the most amazing thing. Because you know how much fun we&#8217;ve been having all those years. And we&#8217;ve been telling people it&#8217;s really fun. But now they&#8217;re going to get to experience it.</em></p></blockquote><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;bcf4da25-b550-4fbb-a749-1403dc7463b1&quot;,&quot;duration&quot;:10.945306,&quot;downloadable&quot;:false,&quot;isEditorNode&quot;:true}"></div><p>While the implications of AI on the software <em>industry</em> are massive, I think the real story is <strong>what this change makes possible for the other 99.9% of humanity</strong>. Yesterday, if you weren&#8217;t a coder, you couldn&#8217;t be a programmer. Today, you can.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://conjuringcode.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe here for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Last week&#8217;s <a href="https://www.nytimes.com/2026/03/12/magazine/ai-coding-programming-jobs-claude-chatgpt.html">New York Times story</a> also said it well:</p><blockquote><p><em>This is the cultural side-effect of coding becoming conversational: the realms of programmers and everyday people, separated for decades by an ocean of arcane know-how, are drifting closer together.</em></p></blockquote><p>That&#8217;s the purpose of this Substack (and <a href="https://conjuringcode.com/book">book</a>!). I&#8217;m not satisfied with &#8220;drifting closer&#8221;; I want to get out and push!</p><p>If you&#8217;re someone who&#8217;s <strong>not</strong> a software engineer by trade, and you&#8217;re curious about using this new-found power to make your own apps and software, <a href="https://conjuringcode.com/contact">drop me a line</a>. I&#8217;d love to talk to you, to share my in-progress work, and maybe even to feature <em>your</em> story as part of it.</p>]]></content:encoded></item><item><title><![CDATA[The Great Deflation Is Great]]></title><description><![CDATA[In most fields, software is so crappy, it's practically a bad word. The great deflation in software costs is very good news.]]></description><link>https://conjuringcode.substack.com/p/the-great-deflation-is-great</link><guid isPermaLink="false">https://conjuringcode.substack.com/p/the-great-deflation-is-great</guid><dc:creator><![CDATA[Ian Varley]]></dc:creator><pubDate>Fri, 20 Feb 2026 15:07:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Drqb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd997468-3f80-4650-bfac-c7019159a392_1244x524.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In most fields, software is so crappy, it&#8217;s practically a bad word. Next time you are in the dentist&#8217;s office, or standing in line at the DMV, or on the phone with your insurance company, ask them how much they like their software. The answer, almost universally, is &#8220;it needs to die in a fire&#8221;.</p><p>This post from Tess earlier in the week captures it pretty well:</p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://twitter.com/ptr/status/2021430929714184386?ref_src=twsrc%5Etfw\&quot;>February&quot;,&quot;full_text&quot;:&quot;If you knew how bad the software situation is in literally every non tech field, you would be cheering cheering cheering this moment,\n\nmedicine, research, infrastructure, government, defense, travel\n\nSoftware deflation is going to bring surplus to literally the entire world&quot;,&quot;username&quot;:&quot;ptr&quot;,&quot;name&quot;:&quot;*tess&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/2006826974782603264/eubIYHZI_normal.jpg&quot;,&quot;date&quot;:&quot;2026-02-11T03:47:44.000Z&quot;,&quot;photos&quot;:[],&quot;quoted_tweet&quot;:{},&quot;reply_count&quot;:12,&quot;retweet_count&quot;:65,&quot;like_count&quot;:728,&quot;impression_count&quot;:51083,&quot;expanded_url&quot;:null,&quot;video_url&quot;:null,&quot;video_preview_media_key&quot;:null,&quot;belowTheFold&quot;:false}" data-component-name="Twitter2ToDOM"></div><p>What&#8217;s the deal? Why is all this software so bad?</p><p>It isn&#8217;t because people who make software hate you, or think you deserve bad software. It&#8217;s because, from an <em>economic</em> viewpoint, good software is hard to get. Code is so difficult to create&#8212;so cryptic and fragile, so precise&#8212;that it&#8217;s very expensive to make. Even <em>bad</em> software is extremely expensive, let alone good software. This great passage from <a href="https://www.nytimes.com/2026/02/18/opinion/ai-software.html">Paul Ford&#8217;s NYT editorial this week</a> puts it in perspective:</p><blockquote><p><em>When I rebooted my messy personal website a few weeks ago, I realized: I would have paid $25,000 for someone else to do this. When a friend asked me to convert a large, thorny data set, I downloaded it, cleaned it up and made it pretty and easy to explore. In the past I would have charged $350,000.</em></p></blockquote><p>So when Tess talks about &#8220;deflation&#8221;, this isn&#8217;t a hyperbolic AI insider term. Literal financial deflation on the order of 100-1000x.</p><p>Is this sad for the software business? I guess it depends on who you ask. For example, if you look at the team that Paul theorizes would have worked on that data transformation project:</p><blockquote><p><em>That last price is full 2021 retail &#8212; it implies a product manager, a designer, two engineers (one senior) and four to six months of design, coding and testing. Plus maintenance.</em></p></blockquote><p>What he&#8217;s describing there is accurate, but that is sad! Conceptually, the work he&#8217;s describing isn&#8217;t really <em>worth</em> $350K; that&#8217;s just what it <em>costs</em>. But that means we don&#8217;t get enough of something that&#8217;s useful and good. We get mediocre software at best.</p><p>Imagine if we didn&#8217;t have &#8230; I don&#8217;t know, industrial corn production. A world where every ear of corn is lovingly grown and harvested by a human. In that world, a cheese enchilada would cost, what, $300?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Drqb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd997468-3f80-4650-bfac-c7019159a392_1244x524.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Drqb!, /__u/conjuringcode.substack.com/w_424, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd997468-3f80-4650-bfac-c7019159a392_1244x524.png 424w, /__u/substackcdn.com/image/fetch/$s_!Drqb!, /__u/conjuringcode.substack.com/w_848, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd997468-3f80-4650-bfac-c7019159a392_1244x524.png 848w, /__u/substackcdn.com/image/fetch/$s_!Drqb!, /__u/conjuringcode.substack.com/w_1272, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd997468-3f80-4650-bfac-c7019159a392_1244x524.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Drqb!, /__u/conjuringcode.substack.com/w_1456, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd997468-3f80-4650-bfac-c7019159a392_1244x524.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Drqb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd997468-3f80-4650-bfac-c7019159a392_1244x524.png" width="1244" height="524" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dd997468-3f80-4650-bfac-c7019159a392_1244x524.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:524,&quot;width&quot;:1244,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1474843,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://conjuringcode.substack.com/i/188620762?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd997468-3f80-4650-bfac-c7019159a392_1244x524.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Drqb!, /__u/conjuringcode.substack.com/w_424, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd997468-3f80-4650-bfac-c7019159a392_1244x524.png 424w, /__u/substackcdn.com/image/fetch/$s_!Drqb!, /__u/conjuringcode.substack.com/w_848, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd997468-3f80-4650-bfac-c7019159a392_1244x524.png 848w, /__u/substackcdn.com/image/fetch/$s_!Drqb!, /__u/conjuringcode.substack.com/w_1272, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd997468-3f80-4650-bfac-c7019159a392_1244x524.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Drqb!, /__u/conjuringcode.substack.com/w_1456, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd997468-3f80-4650-bfac-c7019159a392_1244x524.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Enchiladas are good, but not $300 good.</p><p>And likewise, converting a thorny data set is good, but not $350K good. It&#8217;s just out of whack with the actual value of the result, owing entirely to the scarcity and difficulty of the work.</p><p>So yes, you should be cheering, cheering, cheering.</p><p>If you make a living in tech, and you&#8217;re not following this curve and producing 10x as much value as you did before, you&#8217;ll have trouble staying employed. That&#8217;s individually sad, but there&#8217;s <em>so</em> much room for better software, we should still be able to justify employing <em>lots</em> of programmers who work with this much longer lever. They become <em>more</em> valuable, not less.</p><p>But maybe more importantly, if you&#8217;re someone who&#8217;s <em>not</em> in tech, and you&#8217;re interested in making apps yourself, <strong>this is very good news</strong>. All that terrible software out there in the world has some new competition: you!</p><div><hr></div><p>If you want to read more about how the landscape of making software is changing, particularly for people who didn&#8217;t previously consider themselves to be &#8220;engineers&#8221;, subscribe here:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://conjuringcode.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/conjuringcode.substack.com/subscribe"><span>Subscribe now</span></a></p><p>Read more on <a href="https://conjuringcode.com">conjuringcode.com</a>.</p>]]></content:encoded></item><item><title><![CDATA[Super Idea]]></title><description><![CDATA[A Super Bowl ad that captures the joy of discovering you really can build software now, even if you couldn't before.]]></description><link>https://conjuringcode.substack.com/p/super-idea</link><guid isPermaLink="false">https://conjuringcode.substack.com/p/super-idea</guid><dc:creator><![CDATA[Ian Varley]]></dc:creator><pubDate>Mon, 09 Feb 2026 22:39:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/kLdaIxDM-_Y" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Yesterday, as you might expect, there were a bevy of Super Bowl commercials about AI. To me, the one that really stood out was <a href="https://youtu.be/kLdaIxDM-_Y">this one</a>:</p><div id="youtube2-kLdaIxDM-_Y" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;kLdaIxDM-_Y&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/kLdaIxDM-_Y?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>The ad is fun, and it really captures the joy of discovering that you really <em>can</em> build useful software now, even if you couldn&#8217;t before. It&#8217;s downright revolutionary.</p><p>Now, <a href="https://base44.com/">Base44</a> is selling a particular <em>product</em> that aims to help people do that. It seems like a nice product! It probably removes some decisions you&#8217;d have to understand and make, and streamlines some things that are tricky (for example, they help you <a href="https://www.linkedin.com/feed/update/urn:li:activity:7424108968702312448/">get an app in the app stores</a>, which is pretty useful).</p><p>On the other hand ... do you <em>need</em> another product for that? I mean, beyond the foundation model / coding assistant? Every layer you add in software adds some cognitive burden of particular things you need to learn, and it can box you in to a particular way of thinking about things. Part of the magic of the underlying LLM technology here, though, is precisely that it <em>unboxes</em> and <em>unbinds</em> you. No matter what road you&#8217;re going down, no matter what you want to do or how you want to approach it, it can go there.</p><p>Personally, I get that feeling every day building apps with AI models directly, and I don&#8217;t see much value in a pretty layer on top. But what do you think?</p>]]></content:encoded></item><item><title><![CDATA[Work On A Copy]]></title><description><![CDATA[Building software is among the best things you can do with AI, because you can always work on a copy.]]></description><link>https://conjuringcode.substack.com/p/work-on-a-copy</link><guid isPermaLink="false">https://conjuringcode.substack.com/p/work-on-a-copy</guid><dc:creator><![CDATA[Ian Varley]]></dc:creator><pubDate>Thu, 22 Jan 2026 13:18:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!M-mU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91688680-87a5-4ddb-ba3d-14e51be0ce01_396x400.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In software engineering, we have a superpower that many fields lack: we can make perfect copies of the things we build (i.e. our code) any time we want.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!M-mU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91688680-87a5-4ddb-ba3d-14e51be0ce01_396x400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!M-mU!, /__u/conjuringcode.substack.com/w_424, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91688680-87a5-4ddb-ba3d-14e51be0ce01_396x400.png 424w, /__u/substackcdn.com/image/fetch/$s_!M-mU!, /__u/conjuringcode.substack.com/w_848, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91688680-87a5-4ddb-ba3d-14e51be0ce01_396x400.png 848w, /__u/substackcdn.com/image/fetch/$s_!M-mU!, /__u/conjuringcode.substack.com/w_1272, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91688680-87a5-4ddb-ba3d-14e51be0ce01_396x400.png 1272w, /__u/substackcdn.com/image/fetch/$s_!M-mU!, /__u/conjuringcode.substack.com/w_1456, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91688680-87a5-4ddb-ba3d-14e51be0ce01_396x400.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!M-mU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91688680-87a5-4ddb-ba3d-14e51be0ce01_396x400.png" width="396" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/91688680-87a5-4ddb-ba3d-14e51be0ce01_396x400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:396,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:347033,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://sntlst.substack.com/i/185411115?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91688680-87a5-4ddb-ba3d-14e51be0ce01_396x400.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!M-mU!, /__u/conjuringcode.substack.com/w_424, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91688680-87a5-4ddb-ba3d-14e51be0ce01_396x400.png 424w, /__u/substackcdn.com/image/fetch/$s_!M-mU!, /__u/conjuringcode.substack.com/w_848, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91688680-87a5-4ddb-ba3d-14e51be0ce01_396x400.png 848w, /__u/substackcdn.com/image/fetch/$s_!M-mU!, /__u/conjuringcode.substack.com/w_1272, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91688680-87a5-4ddb-ba3d-14e51be0ce01_396x400.png 1272w, /__u/substackcdn.com/image/fetch/$s_!M-mU!, /__u/conjuringcode.substack.com/w_1456, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91688680-87a5-4ddb-ba3d-14e51be0ce01_396x400.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So when we <em>change</em> something, we always change a <em>copy</em> rather than changing the real thing (aka &#8220;production&#8221;) directly. We only push our changes to production when they&#8217;re ready (i.e. we&#8217;ve tested that nothing is broken).</p><p>This isn&#8217;t how most professions work, at all. Surgeons don&#8217;t get to &#8220;make a copy&#8221; of your body, and then swap out the copy with the &#8220;real&#8221; you if the procedure works out. (If they could, the state of the art in medicine would move much faster!)</p><p>The closest analog I&#8217;ve been able to imagine in other fields is something like a chef making new recipes. Most of the time, line cooks just follow the same recipes night after night. But if you&#8217;re a chef and you have an idea for a new dish, you don&#8217;t just start randomly feeding it to real customers. You iterate on it <em>by yourself</em>, behind the scenes (during the daytime, or in a test kitchen) where only you (and maybe a couple other chefs) get to judge whether it&#8217;s good enough. You tweak, you change, you taste, and only when you&#8217;re happy with it do you push copies of that recipe out to the real kitchen and put it on the menu.</p><p>This is so important in software, it&#8217;s practically second-nature. When you change something complex like code, you always risk accidentally breaking something else. (&#8221;I was just trying to change the font, but now the database is unreachable...!&#8221;). But this buffer zone of &#8220;development&#8221; means you don&#8217;t have to pussyfoot around&#8212;you can try whatever you want, even if it is very disruptive, because you know you&#8217;re just changing a copy, and you&#8217;ll check it locally before pushing it to production.</p><p>This property is one of the reasons I think <strong>building software is among the best things you can do with AI</strong>. Like humans, LLM coding agents make mistakes <em>all the time</em>. If you let them touch &#8220;the real thing&#8221; directly, those mistakes might have consequences. If you keep them in the test kitchen, and check the results before you go live with them, it&#8217;s much better.</p>]]></content:encoded></item><item><title><![CDATA[Anti-Slop]]></title><description><![CDATA[I am anti-slop, and I think using AI to make software you actually care about is anti-slop, too.]]></description><link>https://conjuringcode.substack.com/p/anti-slop</link><guid isPermaLink="false">https://conjuringcode.substack.com/p/anti-slop</guid><dc:creator><![CDATA[Ian Varley]]></dc:creator><pubDate>Wed, 21 Jan 2026 06:05:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!15Es!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb53cfb27-848b-4984-a5e8-ec4d97fddb95_544x544.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I was delighted to hear <a href="https://www.nytimes.com/2026/01/09/podcasts/hardfork-grok-crisis-claude-code.html">the hosts of the NYTimes Hard Fork podcast</a> talking about their newfound love of Claude Code&#8212;building shiny new personal websites in an afternoon (complete with Easter eggs!), whipping up replacements for apps that had been discontinued, etc. They talked about it with obvious joy and awe, which is a sentiment I share:</p><blockquote><p><em>This didn&#8217;t give me AI vertigo. It made me feel like I had super powers.</em></p></blockquote><p>I sometimes wonder if I&#8217;m in a bubble. I mean, I think making software is <em>obviously</em> useful and fun, but &#8230; am I a weirdo? Does anyone else even care? Well, these guys care, and make a pretty great case as to why other people might care too&#8212;not just programmers like me.</p><p>In the first episode, they invited listeners to send in what they had vibe coded, and <a href="https://www.nytimes.com/2026/01/16/podcasts/jonathan-haidt-strikes-again-what-you-vibecoded-an-update-on-the-forkiverse.html">talked over some highlights</a> on the next episode, which included stories like:</p><ul><li><p>A dad who gamified household chores with a leaderboard</p></li><li><p>An interior decorator who made a wallpaper surface-area calculator</p></li><li><p>A welder making his own business software</p></li><li><p>A family Christmas letter turned into an interactive Zork game</p></li></ul><p>I love this. I can&#8217;t get enough of it.</p><p>Sometimes, when you&#8217;re faced with just open-ended possibility, it can be stultifying (&#8221;gosh, I could create anything&#8230;&#8221;). But it just takes a little nudge to remember that there are opportunities literally everywhere. And the friction is so low, it doesn&#8217;t take much to try something, even if it might be a stupid idea.</p><p>For example: last weekend, I got together with some college buddies. At some point, someone suggested it would be funny if we had a bingo game for all our stupid inside jokes. Twenty minutes later, I was installing a web app on each of their phones with exactly that.</p><p>At one point, while talking about all these little apps and projects, Casey said something I found incredibly profound:</p><blockquote><p><em>To me, this stuff is the flipside of slop. This is anti-slop, right? If slop is about a world where every surface online seems like it&#8217;s being taken over by these digital creations that you didn&#8217;t ask for, that you find confusing, they blur the line between reality and fiction, and they just sort of make you feel hypnotized and gross. This is the reverse of that. This is real people saying, I have a need in my life and I&#8217;m gonna go make it with my own hands. And we&#8217;ve always talked about AI as a dual use technology. We do spend a lot of time on the show talking about its many downsides, which are huge and real and scary. But there is also upside here, which is, at least in this moment, this can be an empowering tool.</em></p></blockquote><p>Amen to that.</p><p>Slop is the word for when AI creates something vague and ungrounded, something that doesn&#8217;t represent the thoughts and desires of a real, living human. Slop is low quality, not because it&#8217;s <em>technically</em> bad, but because it&#8217;s vacuous and generic. No human cared enough to want it.</p><p><strong>Anti-slop</strong>, then, is a perfect word for making something that you actually <em>care</em> about, that serves some function in your life, even a little one. It&#8217;s creative, it&#8217;s fun, and it&#8217;s led by what you want. It&#8217;s there because somebody wanted it.</p><p>I just wanted to draw a line in the sand. I am anti-slop, and I think using AI to make software you <em>actually care about</em> is anti-slop, too.</p>]]></content:encoded></item><item><title><![CDATA[You Can Make Software Now]]></title><description><![CDATA[AI Engineering Help (Not Vibe Coding) Is A Big Deal]]></description><link>https://conjuringcode.substack.com/p/you-can-make-software-now</link><guid isPermaLink="false">https://conjuringcode.substack.com/p/you-can-make-software-now</guid><dc:creator><![CDATA[Ian Varley]]></dc:creator><pubDate>Sat, 27 Dec 2025 05:06:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!hRHe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d0f55c3-16b4-4f17-8418-51df37982a00_544x544.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!hRHe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d0f55c3-16b4-4f17-8418-51df37982a00_544x544.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!hRHe!, /__u/conjuringcode.substack.com/w_424, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d0f55c3-16b4-4f17-8418-51df37982a00_544x544.png 424w, /__u/substackcdn.com/image/fetch/$s_!hRHe!, /__u/conjuringcode.substack.com/w_848, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d0f55c3-16b4-4f17-8418-51df37982a00_544x544.png 848w, /__u/substackcdn.com/image/fetch/$s_!hRHe!, /__u/conjuringcode.substack.com/w_1272, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d0f55c3-16b4-4f17-8418-51df37982a00_544x544.png 1272w, /__u/substackcdn.com/image/fetch/$s_!hRHe!, /__u/conjuringcode.substack.com/w_1456, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_webp, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d0f55c3-16b4-4f17-8418-51df37982a00_544x544.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!hRHe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d0f55c3-16b4-4f17-8418-51df37982a00_544x544.png" width="544" height="544" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4d0f55c3-16b4-4f17-8418-51df37982a00_544x544.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:544,&quot;width&quot;:544,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:187690,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://conjuringcode.substack.com/i/182678153?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d0f55c3-16b4-4f17-8418-51df37982a00_544x544.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!hRHe!, /__u/conjuringcode.substack.com/w_424, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d0f55c3-16b4-4f17-8418-51df37982a00_544x544.png 424w, /__u/substackcdn.com/image/fetch/$s_!hRHe!, /__u/conjuringcode.substack.com/w_848, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d0f55c3-16b4-4f17-8418-51df37982a00_544x544.png 848w, /__u/substackcdn.com/image/fetch/$s_!hRHe!, /__u/conjuringcode.substack.com/w_1272, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d0f55c3-16b4-4f17-8418-51df37982a00_544x544.png 1272w, /__u/substackcdn.com/image/fetch/$s_!hRHe!, /__u/conjuringcode.substack.com/w_1456, /__u/conjuringcode.substack.com/c_limit, /__u/conjuringcode.substack.com/f_auto, /__u/conjuringcode.substack.com/q_auto:good, /__u/conjuringcode.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d0f55c3-16b4-4f17-8418-51df37982a00_544x544.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://conjuringcode.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/conjuringcode.substack.com/subscribe"><span>Subscribe now</span></a></p><p>Most people don&#8217;t make software.</p><p>And that&#8217;s a shame, because software is <strong>incredible</strong>. It&#8217;s intelligence made real: diligent, patient, and immeasurably fast. Nothing like our modern world would be possible without it, and if used well, it could help us with lots of our current problems, too.</p><p>The reason most people don&#8217;t make software is that <strong>making software is really hard</strong>. It&#8217;s a kind of focused intellectual work that most people aren&#8217;t well-suited for, because it involves gobs of arcane and ever-changing detail that all has to be arranged <em>just so</em>. It&#8217;s no wonder we call it &#8220;code&#8220;: it&#8217;s cryptic, and making it is slow, error-prone work. (Which, by the way, is also why so much software in the world just <em>sucks</em>&#8212;it was just too slow and expensive to make it any better.)</p><p><strong>But, there&#8217;s something important you should know:</strong></p><div class="pullquote"><h2><strong>It has gotten much, </strong><em><strong>much</strong></em><strong> easier to make software.</strong></h2></div><p>This is one of the consequences of <a href="https://sntl.st/a-whole-new-world/">generative AI</a>: we now have machines that can effectively and rapidly translate between &#8220;what you want&#8221; and &#8220;how to do that in code&#8221;. This means that all that effort and arcane knowledge required to create software has decreased dramatically (and it&#8217;s getting easier by the day).</p><p>So &#8230; why isn&#8217;t everyone rushing out and using AI to help them write code to solve their problems?</p><p>There are two reasons: one easy, one hard.</p><p>The easy reason is that they simply don&#8217;t <em>know</em> (or believe) that this has happened. I work in a prominent big tech company, and I can tell you that many of the people I <em>work with</em> don&#8217;t really know (or believe) it.</p><p>But the harder reason is that even with this change, the reality is that you still have to <em>know stuff</em> to make software&#8212;at least, if you want it to work.</p><p>Maybe you&#8217;ve heard the phrase &#8220;vibe coding&#8220;? That&#8217;s when you use AI to write some software, but you <em><strong>don&#8217;t care</strong></em> what it&#8217;s doing on the inside, or how it&#8217;s conceptually constructed.</p><p>Vibe coding is fine for some purposes, but sooner or later&#8212;and probably sooner&#8212;you&#8217;re going to fall off a cliff when something unexpected happens, and you realize that the software you &#8220;vibed&#8221; is not only a mystery to you, it&#8217;s full of nonsense and inconsistency, and doesn&#8217;t really do what you thought.</p><p>Making software, even in a world with AI, is still hard. But not all hard is the same. There&#8217;s &#8220;<strong>bad</strong> hard&#8221;, and &#8220;<strong>good</strong> hard&#8221;.</p><p><strong>&#8220;Bad hard&#8221;</strong> is all the stuff I mentioned above: code is cryptic, unforgivingly precise, and full of mind-numbing drudgery, even to get boring things to work reliably. Stupid little missteps can eat up entire days, even for professionals.</p><p>But there&#8217;s also <strong>&#8220;good hard&#8221;</strong>! Making useful software means thinking differently about the world, seeing everyday life with x-ray vision. It forces you to grapple with what you (and other people) <em>really</em> want, and gives you endless opportunities for clever, intuitive new solutions to old problems. In the moments when you connect with the &#8220;good hard&#8221;, it&#8217;s the most fun, incredible feeling, and it&#8217;s why many of us who are professional software engineers got into it in the first place.</p><p>In the past, this dual difficulty was a fact of life for software engineers: &#8220;you take the good (hard), you take the bad (hard)&#8221;. But that&#8217;s not true anymore! Because of what LLM coding agents can do, and how fast and reliably they do it, the bad hard is evaporating before our eyes, leaving (mostly) good hard.</p><p><strong>Which is still hard!</strong></p><p>If you want the incredible benefits of making your own software, and you want to rise above the precarious level of &#8220;vibe coding&#8221;, you need a basic grasp of what software even <em>is</em>: how it works, how you make and ship it, and what parts of it are easy or hard (or even possible in the first place). In other words, you need the knowledge that a software engineer gathers over her career (alongside all the battle scars and eye-twitches from the &#8220;bad hard&#8221; stuff). </p><p>But now, you have the benefit of <em>speed-running</em> this knowledge. That doesn&#8217;t mean there aren&#8217;t going to be some very interesting and difficult things for you to learn; you&#8217;ve just got a much bigger running start.</p><p>So this publication will explore what it means to build software with AI help, even if you don&#8217;t consider yourself a professional software maker.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://conjuringcode.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Conjuring Code: You Can Make Software Now! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Coming soon]]></title><description><![CDATA[This is Conjuring Code: Make Your Own Software.]]></description><link>https://conjuringcode.substack.com/p/coming-soon</link><guid isPermaLink="false">https://conjuringcode.substack.com/p/coming-soon</guid><dc:creator><![CDATA[Ian Varley]]></dc:creator><pubDate>Sat, 27 Dec 2025 04:43:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!15Es!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb53cfb27-848b-4984-a5e8-ec4d97fddb95_544x544.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This is Conjuring Code: Make Your Own Software.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://conjuringcode.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/conjuringcode.substack.com/subscribe"><span>Subscribe now</span></a></p>]]></content:encoded></item></channel></rss>