<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>spf13</title><link>https://spf13.com/tags/taste/</link><description>Recent content on spf13</description><generator>Hugo</generator><language>en-us</language><copyright>Copyright (c) 2008 - 2026, Steve Francia; all rights reserved.</copyright><atom:link href="https://spf13.com/tags/taste/index.xml" rel="self" type="application/rss+xml"/><lastBuildDate>Thu, 12 Nov 2026 12:00:00 -0500</lastBuildDate><item><title>Creativity in Negative Space</title><link>https://spf13.com/p/creativity-in-negative-space/</link><pubDate>Thu, 12 Nov 2026 12:00:00 -0500</pubDate><guid>https://spf13.com/p/creativity-in-negative-space/</guid><media:content url="https://spf13.com/p/creativity-in-negative-space/hero.png" medium="image"/><media:thumbnail url="https://spf13.com/p/creativity-in-negative-space/hero.png"/><description>&lt;p>We talk a lot about what AI is getting good at, and the list is impressive. It can summarize research, write clean boilerplate, translate languages, and generate striking images.&lt;/p>
&lt;p>Because that curve has moved so fast, people naturally assume creative work is the next domino to fall. With a slightly bigger model or a longer context window, the thinking goes, AI will write a great novel, craft a stand-up comedy special, or create a movie that actually moves you.&lt;/p></description><content:encoded>&lt;![CDATA[<p><img src="https://spf13.com/p/creativity-in-negative-space/hero.png" alt="Creativity in Negative Space"/><p>We talk a lot about what AI is getting good at, and the list is impressive. It can summarize research, write clean boilerplate, translate languages, and generate striking images.</p><p>Because that curve has moved so fast, people naturally assume creative work is the next domino to fall. With a slightly bigger model or a longer context window, the thinking goes, AI will write a great novel, craft a stand-up comedy special, or create a movie that actually moves you.</p><p>It won&rsquo;t. Fluency was never what made work creative. Creative work starts with noticing what&rsquo;s missing, and more data and more compute don&rsquo;t add that.</p><p>AI operates entirely in<strong>positive space</strong>. Human creativity lives in<strong>negative space</strong>.</p><h2 id="positive-space-vs-negative-space">Positive Space vs. Negative Space</h2><figure class="figure--side"><img src="/p/creativity-in-negative-space/rubin-vase.svg" alt="Two dark profiles face each other, and the space between them forms a vase filled with sky"><figcaption><p><a href="https://en.wikipedia.org/wiki/Rubin_vase">Rubin&rsquo;s vase</a>: two faces, or the shape between them.</p></figcaption></figure><p>In visual art and design, negative space is the unmarked area around and between the subjects. It&rsquo;s easy to mistake it for empty background, but it gives a composition tension, hierarchy, and meaning.</p><p>Culture and ideas work the same way.</p><p><strong>Positive space</strong> is everything that already exists in the world: every trope, pattern, sentence structure, and convention that has been written down, repeated, and absorbed into training data.</p><p><strong>Negative space</strong> is the gap in the universe where nothing exists yet.</p><p>When people misunderstand creativity, it&rsquo;s usually because they confuse recombination in positive space with creation in negative space. A lot of what passes for &ldquo;creative&rdquo; work has always been derivative: taking last year&rsquo;s hit movie, last year&rsquo;s enterprise software, or a competitor&rsquo;s product and making the next predictable iteration. Models excel at that because recombining what already exists is what neural networks are built to do.</p><p>Real creativity is different. It&rsquo;s looking at the world, noticing a gap that nobody has named yet, and putting something into that gap. You assemble it from your lived experience, your scars, and your influences, but the destination sits outside the map of prior art.</p><h2 id="the-math-has-no-step-that-notices-whats-missing">The Math Has No Step That Notices What&rsquo;s Missing</h2><p>Strip away the marketing and a neural network is a large stack of matrices. Text goes in as numbers, gets multiplied through layers of learned weights, and comes out as a probability distribution over the next token. Training sets those weights by fitting them to a body of existing human work. After that, the model is a fixed function: the same input gives the same distribution, every time.</p><p>That doesn&rsquo;t mean a model can only repeat what it has seen. With billions of parameters it can land on combinations no person has tried, and ML researchers will point out that by the strict definition,<a href="https://arxiv.org/abs/2110.09485">models in high dimensions almost never interpolate</a>. They&rsquo;re right, but producing something new was never the difficult part. Sampling randomness (temperature) shuffles which likely answer you get. It doesn&rsquo;t add insight, any more than rolling dice adds taste.</p><p>What a model can&rsquo;t do is tell which of those new things matters. A gap nobody has named leaves no trace in the data, so nothing in the weights marks it as missing and nothing in training rewards finding it. No matrix multiplication calculates &ldquo;this should exist and doesn&rsquo;t.&rdquo; A model can generate a million things nobody has seen before with no way of knowing which one the world needs.</p><h2 id="people-remix-too-but-they-notice-whats-missing">People Remix Too, but They Notice What&rsquo;s Missing</h2><p>The obvious objection is that people learn from prior art too. Of course they do. Writers learn from other writers, and programmers learn by reading other people&rsquo;s code. The difference is that people also bring things that were never written down anywhere, like the experience of using something every day and knowing it&rsquo;s wrong.</p><p>I don&rsquo;t think an AI would have ever created<a href="https://cobra.dev">Cobra</a>.</p><p>When I was building<a href="https://gohugo.io">Hugo</a> in 2013, I kept running into the limits of flags. Even a tool as simple as Hugo already let you combine flags that didn&rsquo;t make sense together:</p><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>hugo --server --port<span style="color:#ae81ff">1313</span><span style="color:#75715e"># serves the site on port 1313</span></span></span><span style="display:flex;"><span>hugo --port<span style="color:#ae81ff">1313</span><span style="color:#75715e"># accepted, and does nothing</span></span></span></code></pre></div><p>Tools like<code>git</code>,<code>brew</code>, and<code>go</code> handled this with subcommands, each with its own set of flags, and that&rsquo;s how I wanted Hugo to work:</p><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>hugo server --port<span style="color:#ae81ff">1313</span></span></span><span style="display:flex;"><span>hugo get shortcode NAME<span style="color:#75715e"># not: hugo get --type=shortcode --name</span></span></span></code></pre></div><p>There were already plenty of CLI frameworks in lots of languages. I tried all of the existing Go ones, and every one of them felt wrong. Most were built from code pulled out of the<code>go</code> tool, which was never meant to be a general-purpose library, and they only supported a single level of commands. I couldn&rsquo;t point to one thing that was broken. It was a feeling. I knew what I wanted Hugo&rsquo;s experience to look like, and none of them could create it.</p><p>That was the negative space. Nothing was in its place.</p><p>I had a strong conviction that Hugo needed to work a certain way for me to want to use it, so I wrote the framework that made it possible. It turns out a lot of other people thought that was the right way to do things too. Cobra ended up underneath Kubernetes, Docker, and the GitHub CLI, and it helped define how modern command-line tools work. Years later I wrote those conventions down at<a href="https://cli.style/">cli.style</a>. The second principle is<a href="https://cli.style/#structure-over-state">use subcommands, not mode flags</a> and the third is<a href="https://cli.style/#unrepresentable">make invalid combinations impossible</a>, which are the same two problems I had with Hugo&rsquo;s flags in 2013.</p><p>A model trained on every CLI library that existed in 2013 would have given me a cleaner version of the libraries I had already rejected. What I had that the data didn&rsquo;t was the sense that all of them were wrong.</p><h2 id="jokes-stories-and-products-all-live-in-the-gap">Jokes, Stories, and Products All Live in the Gap</h2><p>The same boundary shows up in every form that depends on tension, timing, and human truth rather than surface polish.</p><p>Take stand-up comedy. A joke is almost pure negative space. It works because two people in a room share an unspoken truth they haven&rsquo;t admitted out loud, and the comedian builds a bridge toward one expectation before snapping into that silence at the exact right beat. Ask an LLM to write a stand-up set and you get the rhythm and syntax of a joke (setup, punchline, callback), but completely hollowed out of surprise. It knows what jokes<em>sound</em> like in positive space, without ever having lived the awkwardness, pain, or observation that makes a room laugh.</p><p>Storytelling works the same way in a novel or film. A model can generate grammatically flawless prose and plot beats that follow Joseph Campbell&rsquo;s hero&rsquo;s journey to the letter. Yet after three pages, your eyes glaze over. Great storytelling lives in the subtext, not the plot events. It&rsquo;s the line of dialogue a character<em>refuses</em> to say, the scene that cuts three seconds early, the weird obsession that only makes sense four chapters later.</p><p>In product design, the breakthroughs that delight people come from negative space. Steve Jobs didn&rsquo;t invent the MP3 player. Plenty of companies shipped MP3 players before Apple, and every one of them was iterating in positive space, arguing over storage megabytes and file folders. Apple looked at the negative space around the device (how miserable it was to get music onto it and find a song in your pocket) and built the iPod into that gap. Competitors spent the next decade copying the positive-space artifact while missing the insight that created it.</p><p>This is the intuition behind the famous (if apocryphal) line attributed to Henry Ford: &ldquo;If I had asked people what they wanted, they would have said faster horses.&rdquo; Ask people what they want and they point at things that already exist, only faster or cheaper. Nobody can ask for what they haven&rsquo;t yet imagined. Spotting the gap takes someone willing to stand in the empty space, and that&rsquo;s rare even among humans. A model trained on what people already said has no way to do it.</p><h2 id="taste-is-knowing-what-doesnt-exist-yet">Taste Is Knowing What Doesn&rsquo;t Exist Yet</h2><p>What AI has actually done is strip away the illusion that fluency and creativity are the same thing.</p><p>For decades, technical execution was so expensive that we conflated the ability to produce a polished surface with the ability to create something meaningful. Now the surface is cheap. Anyone can generate five thousand words of smooth prose or a slick product mock-up in thirty seconds.</p><p>A model can remix the archive of everything humans have already said. It takes a human with taste, restraint, and a point of view to notice what is still missing, and to put something real into the gap.</p><p>And when positive space floods with endless, cheap variations of what we already have, negative space becomes the only thing that matters.</p>
]]></content:encoded></item></channel></rss>