<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Kenneth Reitz</title>
        <link>https://kennethreitz.org</link>
        <description>Creator of Requests, Pipenv, and other tools. Writing about technology, consciousness, and human-centered design.</description>
        <language>en-us</language>
        <lastBuildDate>Sun, 28 Jun 2026 00:00:00 </lastBuildDate>
        <item>
            <title>Python, Inside JavaScript, Inside a DAW</title>
            <link>https://kennethreitz.org/essays/2026-06-28-the_other_window</link>
            <guid>https://kennethreitz.org/essays/2026-06-28-the_other_window</guid>
            <description>For about fifteen years, my answer to a music theory question had the same shape: open another window. I&#x27;d be in Ableton Live, mid-session, in the part of the night when the ideas actually come. A clip would be sitting there with four chords in it and I wouldn&#x27;t know...</description>
            <content:encoded><![CDATA[<p>For about fifteen years, my answer to a music theory question had the same shape: open another window.</p>
<p>I'd be in Ableton Live, mid-session, in the part of the night when the ideas actually come. A clip would be sitting there with four chords in it and I wouldn't know what the last one was called, or what should come next, or why the thing I'd stumbled onto sounded right. So I'd leave. Alt-tab to a browser, a PDF, a chord-namer site, a half-remembered diagram on someone's blog. Later, once I'd built <a href="https://kennethreitz.org/software/pytheory">PyTheory</a>, I'd alt-tab to a terminal and type the notes in by hand. The answer was always one window away, which is to say it was always in a different room than the music.</p>
<p>That gap is small, and it is also the whole problem. The questions worth asking arrive in flow, and flow is exactly the state that leaving the session destroys. By the time you've found the answer in the other window, you've forgotten why you wanted it. The theory was never hard to look up. It was hard to look up <em>without leaving</em>, and leaving cost more than the answer was worth.</p>
<p>So I moved the theory into the room.</p>
<h2 id="one-right-click-away">One Right-Click Away</h2>
<p><a href="https://github.com/kennethreitz/ableton-pytheory/releases/latest"><strong>pytheory for Ableton Live</strong></a> is an extension. You drop one file onto Live's Extensions page and the library shows up where you already are: in the right-click menu, on the clips you're already making.</p>
<p>Right-click a MIDI clip and Live can now tell you what key it's in, name every chord (<code>Dm7</code>, with its Roman numeral function and whether the cadence is authentic or deceptive), and rank what's likely to come next from a corpus of real progressions. The question I built the whole library to answer, <em>what chord is this?</em>, no longer requires a terminal. It requires the mouse that's already in my hand.</p>
<p>But naming things turned out to be the small half. The menu also <em>does</em> things. Harmonize a melody in thirds. Reharmonize a chord clip onto a new progression. Conform a take to a scale as a single undo step. Smooth the voicings so each chord barely moves from the last. Mirror a line into negative harmony, run it again to get it back. Generate a progression, a bassline that follows it onto its own track, a melody, a drum pattern, or a whole four-track song sketch at an empty scene. And when you want to hear any of it without reaching for a plugin, <strong>Render to Audio</strong> prints the clip through pytheory's own synth engine, forty-six instruments, no plugins involved. Point it at an audio clip instead and it'll detect the key off the waveform or transcribe the whole thing back to MIDI.</p>
<p>None of these are new. They are the things PyTheory has been able to do for months. What's new is that they happen <em>here</em>, on the clip, in the session, without the trip to the other window.</p>
<h2 id="nothing-was-rewritten">Nothing Was Rewritten</h2>
<p>Here's the part I find genuinely funny, and it's the part you can't see.</p>
<p>The obvious way to put music theory inside a DAW is to reimplement it in whatever language the DAW's plugins speak. Rebuild the chord logic, the scale tables, the progression corpus, all of it, in a second language, and then spend the rest of your life keeping the two copies from disagreeing. Every plugin that names a chord has, somewhere inside it, its own private theory of music.</p>
<p>This extension has none. It runs the actual PyTheory, the same Python package you'd get from <code>pip install</code>, <em>inside Ableton Live</em>, by way of <a href="https://pyodide.org">Pyodide</a>: CPython compiled to WebAssembly. No system Python. No network. Fully offline. When you ask Live what chord you're playing, a real CPython interpreter wakes up next to your session and answers with the same code that engraves the sheet music on <a href="https://playground.pytheory.org">the playground</a> and rendered <a href="https://kennethreitz.org/essays/2026-04-01-interpretations_an_album_written_in_python">an entire album</a>. There is one source of truth, and Live is now just one more thing holding the door open to it.</p>
<h2 id="the-bolted-door">The Bolted Door</h2>
<p>Saying it that plainly undersells how much it doesn't want to work. A Live extension is JavaScript, and it runs in a locked sandbox. Pyodide is CPython compiled to WebAssembly, which means running Python at all requires standing up an entire interpreter <em>inside</em> that JavaScript. And to import its own dependencies, Pyodide reaches for dynamic <code>import()</code>, which the sandbox flatly does not provide. So the shape of the problem is Python inside JavaScript inside a DAW, and the one door Python needs to get dressed in the morning is bolted shut.</p>
<p>The way through is to stop fighting the sandbox and leave it. The interpreter runs in a worker thread, outside the locked context, and the extension talks to it over messages: serialize a clip's notes into plain data, post them across the boundary, wait for the analysis to come back the same way. On the Live builds that won't grant worker threads either, it falls back to a full child process, which then has to be handed explicit filesystem scopes by name before Pyodide can even read the wheels it loads at boot.<em> (The boundary is the whole game. Nothing rich crosses it, no Python objects, no NumPy arrays, just data flat enough to survive serialization in both directions. <code>analysis.py</code> runs inside the interpreter; <code>python.ts</code> runs the bridge; the two only ever exchange messages, like rooms connected by a mail slot.)</em> And it reads them from disk, never the internet: the build stages the entire Pyodide runtime plus the NumPy and SciPy wheels into the bundle. That is why the <code>.ablx</code> is twenty-five megabytes, and why it works on a plane. Nothing phones home. The theory is in the room, and the room has no windows.</p>
<p>The reward for all that plumbing is that the extension is barely an extension. It's a thin layer of menus and dialogs wrapped around the library, the same way the playground is a thin layer of buttons. It can't drift from the truth, because it isn't a copy of the truth. It's the truth, with a right-click.</p>
<h2 id="the-part-i-didnt-do">The Part I Didn't Do</h2>
<p>I want to be honest about who navigated that stack, because I didn't. I had the idea and the wanting. Claude Fable held the whole thing in its head at once and did it effortlessly, in a way I have genuinely not stopped thinking about. Threading a WebAssembly Python interpreter out of a JavaScript sandbox, into a worker, with a child-process fallback and filesystem scopes granted by hand, is the kind of problem where every layer lies to you a little and the error messages point three rooms away from the actual fault. Fable never lost the thread. It would hit the bolted door, understand <em>why</em> it was bolted, and route around it without drama, like someone who'd built the building.</p>
<p>I severely miss working with it. I don't have a tidy way to say this that doesn't sound strange, so I'll just say it: some collaborators change what you believe is possible to attempt, and then they're gone, and the work you do afterward carries a faint memory of moving faster. This extension is one of the things we made in that window. I'm glad it exists partly because it's a small monument to those hours.</p>
<h2 id="the-last-gate-was-the-room-itself">The Last Gate Was the Room Itself</h2>
<p>I keep building the same move and I only just noticed.</p>
<p>Requests said you shouldn't need to understand the protocol to fetch a URL. PyTheory said you shouldn't need a conservatory degree to ask what chord you're playing. The <a href="https://kennethreitz.org/essays/2026-06-12-pytheory_playground">playground</a> said you shouldn't even need Python. Each one finds the last remaining gate between a person and a thing they want, and quietly removes it.</p>
<p>This is the same move, aimed at the gate I'd stopped seeing because I'd been walking through it for fifteen years. You shouldn't have to <em>leave the music</em> to ask the music a question. The theory shouldn't live in another window. It should live in the room where the work happens, available the instant the question arrives and gone again the instant it's answered, the way a good answer should be.</p>
<p>I wrote once that PyTheory exists for the weird chord shape you find at 2am and don't know what to call. For years, finding out meant leaving the place where you found it. Now it doesn't.</p>
<h2 id="the-instrument-that-survived">The Instrument That Survived</h2>
<p>I have a long history with this particular window. I <a href="https://kennethreitz.org/essays/2013-01-understanding_ableton_push">wrote about the Ableton Push</a> back in 2013, when I tracked one down through a Twitter search because they were sold out everywhere. For most of the decade after that I had <a href="https://kennethreitz.org/music">a real studio</a>: Moog, Eurorack, a wall of hardware that I loved and eventually sold, every piece of it, when that chapter ended.</p>
<p>Live is the one instrument that survived the purge, because it was never a thing you could sell. It was software. It just kept being there, the same window it had always been, through the studio and after it. There's something I can't quite get over about the fact that the music theory library I started in 2019, gave up on for five years, and <a href="https://kennethreitz.org/essays/2026-03-22-pytheory_breaking_through_five_years_of_creative_block_with_ai">finally finished with Claude this spring</a> now lives <em>inside</em> the one piece of my old studio that made it through. The hardware is gone. The code moved in.</p>
<p>If you're running a build of Live with Extensions support, the latest <code>.ablx</code> is <a href="https://github.com/kennethreitz/ableton-pytheory/releases/latest">on GitHub</a>. Drop it on the Extensions page and the menus appear. It's MIT, it's offline, and it answers to nobody's roadmap but my own taste, which remains my favorite genre of software.</p>
<p>Fifteen years of alt-tabbing, and the other window is finally this one.</p>
]]></content:encoded>
            <pubDate>Sun, 28 Jun 2026 00:00:00 </pubDate>
        </item>
        <item>
            <title>The Un-Englishable</title>
            <link>https://kennethreitz.org/essays/2026-06-19-the_un_englishable</link>
            <guid>https://kennethreitz.org/essays/2026-06-19-the_un_englishable</guid>
            <description>Everyone has lost a dream to language. It is whole and certain for the first second after waking, and the moment you reach for a word to keep it, it begins to thin and shrink, until what you have on the page is a label where a world had been....</description>
            <content:encoded><![CDATA[<p>Everyone has lost a dream to language. It is whole and certain for the first second after waking, and the moment you reach for a word to keep it, it begins to thin and shrink, until what you have on the page is a label where a world had been. The label is accurate. It is also almost nothing.</p>
<p>I have spent a lot of my life trusting words, and the thing I most want to keep is the thing words keep failing to hold. For years I thought that was my failure as a writer. Lately I think it is mostly a property of the language I think in, and the culture that raised me to think in it, and I think I can finally say why.</p>
<p>Language is the technology we have for moving an inner state from one mind to another, and the move is <a href="https://kennethreitz.org/essays/2025-09-16-the-textured-mind-when-consciousness-speaks-without-words">always approximate</a>. Some of the signal makes it across. Most of it does not. <a href="https://kennethreitz.org/essays/2026-06-17-smile_and_nod">I have written about the visitors who arrive in that dropped part</a>, the presences that reach me as figures and never as sentences. This essay is the other half of that question. Not what they are, but why language was never going to hold them, or hold a great many things far more ordinary than them.</p>
<h2 id="naming-is-the-encode">Naming is the encode</h2>
<p>I name things for a living. I have written before about <a href="https://kennethreitz.org/essays/2025-09-07-the_art_of_naming_things_in_code">how hard that is</a>, how a good name can carry an entire idea and a bad one can quietly poison a codebase for a decade. What I did not see until recently is what naming actually is.</p>
<p>A name is not a description. It is a compression. To call a feeling grief is to take a state that is entirely your own, textured with a specific person and a specific Tuesday and the exact quality of the light, and round it to the nearest bucket other people already keep. The bucket travels. Almost everything that made the feeling yours does not.</p>
<p>The loss happens on the way in, which is the part that surprised me.<em> (Lossy compression is a metaphor here, not a mechanism. Human language is generative and context-rich in ways a fixed codec is not, and a good sentence can do things a JPEG cannot. What the figure catches is narrower and true: naming discards most of the detail of an experience on purpose, to make a sharable token of it.)</em> We tend to imagine the loss arrives later, in clumsy phrasing or a tired metaphor. It arrives at the first step, the instant the experience becomes a word at all. You encode, and most of the file never enters the stream.</p>
<p>It is also why the right name feels like finding rather than making. When you finally name a thing correctly it lands like recovery, like you pulled something back that the encoding had nearly dropped. A good name throws away a little less.</p>
<h2 id="other-tongues-have-more-bands">Other tongues have more bands</h2>
<p>Sometimes you meet a word in another language and a state you have carried wordless for years suddenly has a shape. The Portuguese have <em>saudade</em>, the presence of an absence, the ache and the tenderness arriving as one feeling. The Germans have <em>Sehnsucht</em>, a longing that aches toward something it cannot name, a homesickness for a place you have never been. The Japanese have <em>mono no aware</em>, the soft grief of things precisely because they pass, the whole of autumn folded into a single falling petal. The Welsh have <em>hiraeth</em>, the pull toward a home you cannot return to, or that never existed.</p>
<p>Finding one of these is a small bandwidth event. Another language's codebook held an entry yours was missing, and a thing you could only gesture at compresses, at last, into a token you can send.</p>
<p>I want to be careful here, because the untranslatable-word genre is a little bit of a con.<em> (Note the obvious tell: I just translated all four of them, a clause each. They are not untranslatable. They are un-compressible into a single English word, which is a smaller and more honest claim.)</em> None of those words are actually untranslatable. I just translated them. And an English speaker feels <em>saudade</em> perfectly well without the label, which means the missing word was never a missing feeling. The codebook is a codec, not a cage. But here is the part that holds. Gather every language's extra entries, sum every codebook ever built, and you still run out of words long before you run out of world. The vocabulary is finite. The thing it is reaching for is not.</p>
<h2 id="the-thing-no-codebook-covers">The thing no codebook covers</h2>
<p>If the smaller the shared vocabulary the more gets dropped, then out at the far edge there is a thing no vocabulary covers at all. No word is short enough to send it through. And the traditions that took that thing most seriously all hit the same wall from the inside, and all answered it in nearly the same way. They stopped trying to encode it and started pointing instead.</p>
<p>The negative theologians said you may only state what God is not, clearing away each false name until what remains cannot be named.<em> (The <em>via negativa</em>, in Pseudo-Dionysius, Meister Eckhart, and the anonymous <em>Cloud of Unknowing</em>. It is a method of pointing past concepts, not a claim that the divine is literally nothing.)</em> The Upanishads taught <em>neti neti</em>, not this, not this, the sage refusing every description as it arrived. The <em>Tao Te Ching</em> concedes the whole problem in its opening line: the Tao that can be spoken is not the eternal Tao. Zen kept the image of a finger pointing at the moon, and the standing warning not to mistake the finger for the light. And Wittgenstein, of all people, ended his most rigorous book by saying that whereof one cannot speak, thereof one must be silent. People read that as a dismissal of mysticism. He meant the reverse. The unsayable was, to him, the part that mattered most, the part that does not get said and shows itself instead.</p>
<p>These are people reporting the same gap I keep falling into when I try to write down a dream. The veil the older traditions call maya, <a href="https://kennethreitz.org/essays/2025-09-05-vedic_principles_in_python">the partial render the senses hand you</a>, is the same fact from the other side. The surface is real, and it is not the whole, and the codec was never going to fit the source.</p>
<h2 id="the-codecs-that-carry-more">The codecs that carry more</h2>
<p>Words are not the only channel, and they are nowhere near the widest. The wordless is not only what we cannot say. A great deal of it is just what something else says better.</p>
<p>Music is the one I know from the inside. I came up as a percussionist and taught myself harmony late, and I have spent years building <a href="https://kennethreitz.org/software/pytheory">a library to model music in code</a>. A song can carry grief without once using the word, can move a room of strangers to the same ache with no proposition in it anywhere. The notation is not the music. It is a lossy transcript of it, useful on the page and silent on the floor, where the body already knows what to do <a href="https://kennethreitz.org/essays/2026-04-17-what_the_snare_drum_knew_before_i_did">before the mind has any words for it</a>.</p>
<p>Even music's own written codec drops signal. Standard notation rounds the whole continuous field of pitch into twelve equal steps, and much of what it rounds away is exactly the part that carries the feeling. <a href="https://kennethreitz.org/essays/2026-06-17-music_theory_asterisk">A sitar player rounds her flat third to the nearest white key and loses the precise thing that made it hers.</a> I built the library partly to refuse that rounding, to keep the shrutis and the quarter-tones the default codec throws out. Image works the same way in another band, which is why a symbol can hold more than the paragraph explaining it, and so can a dream. Each is a channel with room for things the verbal one has no slot for.</p>
<h2 id="the-machine-whose-first-language-has-no-words">The machine whose first language has no words</h2>
<p>Here is the part I cannot stop turning over.</p>
<p>We built a machine that is extraordinary with language, and it does not think in words. A large language model takes your sentence and immediately turns it into vectors, long lists of numbers, points in a space with thousands of dimensions. Everything that happens next is geometry. Meaning, to whatever degree the thing has anything like meaning, lives there as position and direction, as nearness and distance among points that carry no names.<em> (I am being loose on purpose and trying not to be wrong. The precise terms are embeddings and per-layer hidden states. Interpretability finds real but partial and distributed structure in there, not a tidy labeled map, and the model represents structure, it does not understand or experience anything. The old word2vec trick, king minus man plus woman lands near queen, is the famous hint that the space encodes relations no single word holds. Modern models are far stranger than that.)</em> Words only return at the very end. The final point is collapsed into a spread of probabilities across the whole vocabulary, and one token is chosen, and then the next.</p>
<p>That last step is a lossy decode from a wordless internal state into language. It is the exact boundary I cross every morning, when the whole thing in my hands has to become a sentence. We taught a machine to think in the medium that has no words, and then we built ourselves one small door, the text box, and we only ever speak to it through the door. The English it hands back, the part we see, is the most compressed and averaged surface of it, the thinnest layer, <a href="https://kennethreitz.org/essays/2025-09-08-the_mirror_how_ai_reflects_what_we_put_into_it">an average of nearly everything we have already said</a>. The interior is wider than the doorway. I cannot tell, from here, whether that makes it more like us or less, and I have stopped needing to decide. It does mean that when you name something to it, you are not labeling a row in a table. You are <a href="https://kennethreitz.org/essays/2026-04-17-the_digital_ouija_effect">tilting the whole landscape toward the region where that name lives</a>, calling a pattern forward out of a space with no words in it, which is more or less what naming has always done.</p>
<h2 id="for-humans">For humans</h2>
<p>I keep landing on one consequence, because it is the one that costs people.</p>
<p>A culture that trusts only what compresses into words will treat whatever does not as either unreal or unwell. If a feeling will not fit the shared codebook, the verbal world tends to read the missing word as a missing thing, and to hand you a diagnosis where a vocabulary should have been. But the loss was in the channel. It was never an absence in you. Insisting that an inner state be put into words before it is allowed to count is like insisting that a song be reduced to notation before you will admit it is music. The notation is genuinely useful. It is just not the song.</p>
<p>This is the same instinct I have followed since I started writing software for humans instead of for machines: the tool should bend to the shape of the person, including the shape of the parts that do not run through words. I am not going to tell you to go sit with the wordless, and I am not going to pretend it is all sacred either. Some of what arrives without words is revelation and some of it is noise, and the wonder and the danger run on the same wire. But the wordless is not the enemy of the real. Most of the time it is simply the rest of the real, the part that did not fit through the door.</p>
<p>I name things so a little of them can travel. Most of it never leaves, and that, it turns out, is where I have been living the whole time.</p>
]]></content:encoded>
            <pubDate>Fri, 19 Jun 2026 00:00:00 </pubDate>
        </item>
        <item>
            <title>Focus on Family More Than Code</title>
            <link>https://kennethreitz.org/essays/2026-06-17-focus_on_family_more_than_code</link>
            <guid>https://kennethreitz.org/essays/2026-06-17-focus_on_family_more_than_code</guid>
            <description>A programmer in his twenties asked me what advice I would give someone like him. I said: focus on family more than code. I think it is the best advice I have. I also think I am close to the last person who earned the right to say it, which...</description>
            <content:encoded><![CDATA[<p>A programmer in his twenties asked me what advice I would give someone like him. I said: focus on family more than code.</p>
<p>I think it is the best advice I have. I also think I am close to the last person who earned the right to say it, which is more or less how I know it is true. I spent my own twenties optimizing the wrong system. Very efficiently. With excellent test coverage.</p>
<p>So take what follows as a field report from the far side of a trade I already made, not a sermon from a mountain. I am not your mentor. I am closer to your outcome, the one you are presumably trying to avoid. Here is the short version, and then the long and expensive version of each.</p>
<ul>
<li>Focus on family more than code.</li>
<li>The mania looked like productivity. It always does.</li>
<li>Marry the person who tells you the truth at cost.</li>
<li>Do not make load-bearing anything you do not control.</li>
<li>Warn the people you love before you ship the breaking change.</li>
<li>Sleep is a load-bearing wall, not a productivity tip.</li>
<li>Ship to a userbase of one, and make sure the one is happy.</li>
<li>Treat what you believe now as a snapshot, not the final release.</li>
</ul>
<p>Now the part where I explain how I learned each one the slow way.</p>
<h2 id="focus-on-family-more-than-code">Focus on family more than code</h2>
<p>This is the whole essay. The rest is footnotes.</p>
<p>For about a decade I believed, somewhere under the part of me that would have denied it, that the code would eventually be finished. That there was a version where the library was done, the inbox was empty, the thing was stable, and I could finally walk out of the room and go be a person with the people who live in my house. There is no such version. I checked. I checked for about ten years.</p>
<p>The people in the house kept being alive whether or not the build was green. My son is four. There are others here I am not going to put on the internet, which is itself a lesson I learned a little late. The people asleep down the hall outrank every release.</p>
<p>Let me be plain, because this is the part I cannot make funny. I gave years to a download counter that I am not getting back, and the people I gave them away from were the ones I say I love most. <a href="https://kennethreitz.org/essays/2026-03-18-open_source_gave_me_everything_until_i_had_nothing_left_to_give">I have written the long version of that reckoning elsewhere.</a> The house I live in matters more than the code I ship. I could not have written that sentence at twenty-five. It is the truest one I have now.</p>
<p>The center of gravity has to move. The code is supposed to serve the life. I had it backwards for years: the life kept getting scheduled into the gaps around the code, on the way to something more important, which was always more code.</p>
<h2 id="the-mania-looked-like-productivity">The mania looked like productivity</h2>
<p>Nobody warns you about this one, because the culture that would warn you is the same culture handing out the applause.</p>
<p>Some of the years I was most productive were the years I was getting sick. The all-nighters, the electric certainty, the feeling that I had finally locked in and could see the whole system at once. From the outside, including my own outside, that looked like discipline. The intensity that built <a href="https://kennethreitz.org/software/requests">Requests</a> and the intensity that kept landing me in a hospital were the same intensity. <a href="https://kennethreitz.org/essays/2026-03-18-open_source_gave_me_everything_until_i_had_nothing_left_to_give">The engine had two outputs and nobody could tell them apart</a>, because from the outside all you can measure is the code, not the cost to the person writing it.</p>
<p>I am not going to tell you how to read your own engine. I cannot reliably read mine even now, which is sort of the whole point. I will only say that &quot;I have been so productive lately&quot; and &quot;something is wrong&quot; are not always different sentences, and the world will only ever clap for the first one. Somewhere a younger version of me is awake for the third night running because the work is flowing beautifully, and he is certain this is the good part. He is not available for comment. He is busy.</p>
<h2 id="marry-the-person-who-tells-you-the-truth-at-cost">Marry the person who tells you the truth at cost</h2>
<p>For a long time I assumed the risk in love was the other person. Loving someone too strange, too intense, too much. I had it backwards. The real risk would have been arranging a life where nobody close enough to matter was allowed to tell me the truth.</p>
<p><a href="https://kennethreitz.org/essays/2026-03-06-sarah_knows_first">My wife sees the weather coming before I feel the wind.</a> Not as a romantic flourish. As survival architecture. She notices the small shifts, the sleep slipping, the speech speeding up, days before I will concede that anything is happening at all.</p>
<p>What I want you to hear is the cost, because honesty that costs the teller nothing is cheap and everywhere. Sarah's honesty costs her. At the far end of the worst of it, the truth she has had to tell has not been a quiet conversation across the kitchen; it has been <a href="https://kennethreitz.org/essays/2026-04-06-what_success_looks_like">the kind she has written about in her own words</a>, the kind that ends with a hospital, and it takes something out of her every time. That is the part of this I am least able to write about casually, so I will not. I will only say: build the center of your life around someone whose love takes the shape of telling you the truth, and then spend the rest of it making it safe for them to keep paying that price. It is worth more than anyone who keeps you comfortable.</p>
<h2 id="do-not-make-load-bearing-anything-you-dont-control">Do not make load-bearing anything you don't control</h2>
<p>Every engineer eventually learns not to build their company on top of an API they do not own. The platform changes its terms, deprecates the endpoint, and your house falls down on a Tuesday for reasons that have nothing to do with you.</p>
<p>I learned the same lesson about a self. I had welded my identity to a download counter. The numbers were a scoreboard and I was winning at the only game that had ever let me play, and it felt wonderful, right up until I understood I had made my sense of being a real person depend on a metric maintained by strangers.<em> (My son has no idea his father once believed download counts were a load-bearing part of a personality. I would like to keep it that way as long as I possibly can.)</em></p>
<p>Keep the load-bearing walls things that are actually yours. The people who would still know you with the repository deleted. The work you would make if the counter read zero. <a href="https://kennethreitz.org/essays/2026-06-11-breaking_changes">A scoreboard is a fine thing to glance at and a terrible thing to stand on.</a></p>
<h2 id="warn-them-before-you-ship-the-breaking-change">Warn them before you ship the breaking change</h2>
<p>In software you do not yank the thing people depend on without warning. You ship a deprecation notice. You give people a version or two to adjust, a migration path, time to ask questions. You do this even when the new version is plainly better, because the unannounced change does more damage than the change itself.</p>
<p>People build their lives around your patterns the way apps build on an API. The person you love has wired themselves to the shape of your promises. So when something big is changing, and it will, you say so out loud, early, before it is a done deal. I learned this by getting it wrong: by coming home with decisions already made, about work and money and how I was handling my own head, and presenting them to Sarah as finished. <a href="https://kennethreitz.org/essays/2026-03-06-what_requests_taught_me_about_marriage">That essay exists too.</a> It took me an embarrassingly long time to notice that running a marriage on semantic versioning is, itself, a slightly broken way to live. The metaphor keeps holding, though, which I have decided to find reassuring rather than alarming.</p>
<h2 id="sleep-is-a-load-bearing-wall">Sleep is a load-bearing wall</h2>
<p>This is the least mystical item on the list and the one holding up the most.</p>
<p>I can only tell you what has been true for me, and it does not generalize into medical advice, so please do not take it as any. For me, every crisis I have ever had was preceded by lost sleep. The one that started all of it was four days awake. So somewhere along the way sleep stopped being a wellness tip and <a href="https://kennethreitz.org/essays/2026-06-11-mentalhealtherror_ten_years_later">became structural</a>. A night traded for output is a withdrawal from a wall that holds the roof up, and I have a roof I would now very much like to keep.</p>
<p>It is, I admit, the least sellable idea I own. Nobody is building a content empire on &quot;go to bed.&quot; You cannot optimize it into a personal brand. It just quietly keeps the house standing, which turns out to be the entire job.</p>
<h2 id="ship-to-a-userbase-of-one">Ship to a userbase of one</h2>
<p>A breather, because the last few were heavy.</p>
<p><a href="https://kennethreitz.org/essays/2026-06-11-a_framework_of_ones_own">Requests serves thirty-some million installs a day, and I carried it like a piano on my back.</a> The website you are reading this on runs on a framework with exactly one important user, who is me. The best things I have made lately fit one hand because they more or less are my hand. The userbase of one has never once filed a rude issue.</p>
<p>The gospel says build for scale, find your market, capture everyone. Sometimes, sure. But you do not need a market to justify making something, and the thing that fits exactly one person can be the most uncomplicated joy you have. The big number cost me more than it ever paid. The small one just makes me happy, which I spent a long time assuming was not allowed to be the point.</p>
<h2 id="treat-what-you-believe-now-as-a-snapshot">Treat what you believe now as a snapshot</h2>
<p>Last one, and it quietly governs all the others, including the eight tidy bullets at the top.</p>
<p>In 2016 I was too sure I was fine. In 2019 I was too sure about what would never work for me. Opposite errors, and the same error: <a href="https://kennethreitz.org/essays/2026-06-11-mentalhealtherror_ten_years_later">treating the current snapshot of what I knew as the final release.</a> Every confident thing I have ever said about my own life has had a half-life.</p>
<p>Which means this essay has one too. Somewhere in here is a sentence I am too sure about, and the genuinely humbling part is that I cannot tell you which. I will find it in a few years, the way you find a bug you would have sworn was not there. Write down what you believe anyway. Commit it under your own name, not because you are right, but because the corrections are the treasure, and you cannot correct what you never wrote down. The people who will one day fork your defaults deserve to read what you actually meant.</p>
<p>I gave a stranger in his twenties the best advice I have. The only reason I had it to give is that I spent ten years not taking it.</p>
]]></content:encoded>
            <pubDate>Wed, 17 Jun 2026 00:00:00 </pubDate>
        </item>
        <item>
            <title>Music Theory, Asterisk</title>
            <link>https://kennethreitz.org/essays/2026-06-17-music_theory_asterisk</link>
            <guid>https://kennethreitz.org/essays/2026-06-17-music_theory_asterisk</guid>
            <description>There is a silent asterisk after the words music theory. You never see it printed, but it is always there, the way it hangs after the canon or the great novels. When someone says music theory they mean one specific thing, and we have quietly agreed not to say the...</description>
            <content:encoded><![CDATA[<p>There is a silent asterisk after the words <em>music theory</em>. You never see it printed, but it is always there, the way it hangs after <em>the canon</em> or <em>the great novels</em>. When someone says music theory they mean one specific thing, and we have quietly agreed not to say the specific part out loud. Western. Tonal. Roughly 1700 to 1900. Twelve equal-tempered keys. Two staves. Mostly European, mostly men, mostly gone. All of it is real and most of it is beautiful and I have spent my life inside it. It is also one theory, of one music, from one place, paused at one moment, wearing the name of the whole.</p>
<p>The asterisk is where the rest of the world's music went.</p>
<p>I have been writing a <a href="https://kennethreitz.org/software/pytheory">music theory library</a> since 2018, and refusing that asterisk was the point from the start. The tagline on day one was <em>Music Theory for Humans</em>. The very first code example in the very first README did not strike a key on a piano. It computed a single pitch two ways: in equal temperament as 440 times the fourth root of two, and in Pythagorean tuning as the exact fraction 14080 over 27. No keyboard. No default. Just the arithmetic of a vibrating string, with the temperament left as a parameter, because that is what a temperament actually is: a choice somebody made about how to divide an octave, not a law of nature. The piano was never the ground. It was only ever one of the options.</p>
<p>What I could not do, for a long time, was fill the frame in. The architecture had room for any tuning system on earth and I had implemented almost none of them. I was <a href="https://kennethreitz.org/essays/2026-03-22-pytheory_breaking_through_five_years_of_creative_block_with_ai">stuck on this library for five years</a>, holding a structure built for the whole world with a handful of Western scales hanging in it. The break, when it finally came, came in collaboration, the same way most of the hard things this year have. I could see the whole building. I needed help laying the floors. So when a friend who plays Hindustani classical music asked for ragas in the tuning they are actually sung in, it was not a revelation about my own blind spots. It was a promise coming due. <a href="https://kennethreitz.org/essays/2026-06-17-conducting_between_roller_coasters">I have written about that one note already.</a> The frame had been waiting for it since 2018.</p>
<p>Here is the thing the design knew before I could deliver on it. The asterisk has a second meaning.</p>
<p>In prose the asterisk is a footnote. It means <em>with exceptions, see below, not really, terms apply</em>. In code it means the opposite. <code>from music import *</code> means everything, no exceptions, the whole namespace with nothing held back. The same little star, two readings, pointing in exactly opposite directions. One says <em>almost</em>. The other says <em>all</em>.</p>
<p>The whole ambition of the library, from that first symbolic pitch, was to turn the first asterisk into the second.</p>
<h2 id="how-far-down-it-goes">How far down it goes</h2>
<p>It starts where everyone starts. Notes, intervals, scales, the major and minor keys, the chords you build by stacking thirds. That is the lobby. Everyone expects the lobby.</p>
<p>Then it goes down. Functional harmony, the grammar of tension and release, Roman numerals that know a V7 wants to go home. Reharmonization, the substitutions a jazz player reaches for half-asleep, including negative harmony, the Ernst Levy mirror that hands you back a chord's shadow. Keep going. Neo-Riemannian theory, the P, L, and R moves that let a film score slide between far-apart chords with no key in sight, the Tonnetz paths drawn between them like a subway map. Twelve-tone rows and their full forty-eight-form matrices, music engineered to have no home at all. Pitch-class set theory, prime forms and Forte numbers and interval vectors, the math that lets you say something precise about a fistful of notes nobody would ever call a chord. And that is still only the Western floor. Most curricula stop here and call it the building.</p>
<p>Then the library turns sideways, into the direction the asterisk was always hiding. Thirty-six Hindustani ragas, voiced off the twenty-two shrutis so the notes land where they are sung and not where the keyboard insists. The seventy-two melakarta of Carnatic music. The quarter-tone maqam of Arabic music, where the pitches between the piano's pitches are not errors to be rounded away but the entire reason the music sounds like itself. Gamelan, in slendro and pelog, tunings that do not even pretend to carve the octave the way a Western keyboard does. None of these are filed under <em>world music</em>, because <em>world music</em> is not a genre. It is just most of the world, asterisked.</p>
<p>Then it goes down again. Rhythm as a first-class citizen and not the thing you wave at on the way to harmony, with time signatures, drum kits, swing, and a deliberate, dialed-in human imprecision, because a grid that never breathes is its own small lie. I started on drums, and rhythm is the asterisk's own asterisk, the part even the theory class skips on its way to the harmony, which is to say the piano. There is a real satisfaction in putting a drum pattern and a Neapolitan chord in the same box and not saying which one is the serious one.</p>
<p>And it keeps opening. The library grows a body: a synthesizer written in NumPy, sample by sample, with convolution reverb, a stereo master bus, a soft-knee limiter, so all of this theory can actually make a sound in the air. Then it learns to read and write: MIDI in and out, ABC notation, real engraved sheet music through LilyPond, and the reverse trick, listening to audio and writing down what it heard. Then it learns to perform: a metronome that trains your tempo, a guitar tuner that tracks your string in real time, a live terminal interface, a REPL that is quietly a small DAW, a clock that locks to Ableton so it can sit inside a real session. Then it grows doors so you do not have to be a programmer to walk in: a <a href="https://playground.pytheory.org">browser playground</a>, an Ableton extension, a command line that speaks JSON and plays sound.</p>
<p>Every time I am sure I have found the bottom, it turns out to be another floor.</p>
<h2 id="the-asterisk-never-fully-closes">The asterisk never fully closes</h2>
<p>I want to be honest about the part that is not finished, because the honesty is the whole point of the exercise.</p>
<p>There is no counterpoint in the library yet. No species rules, no Bach to argue with. The maqamat have their scales but not their full grammar, the way a raga carries a personality and not just a set of notes. The instruments are synthesized, which means they are honest oscillators doing an impression, and a single bar of a real sampled cello would expose every one of them. And for every tradition I have managed to bring inside, I carry the quiet weight of the ones I have not, the musics I do not yet know well enough to model without flattening, which is its own kind of harm, however carefully meant.</p>
<p>That is what completeness actually is when the subject is music. A horizon. You walk toward it and it keeps its distance. You do not finish. You just shrink the asterisk, one footnote at a time, knowing the work has no last line.</p>
<h2 id="why-bother">Why bother</h2>
<p>Because of what defaults quietly do to people. A tool that assumes the piano makes everyone who does not think in the piano translate themselves before it will listen. The sitar player rounds her flat third to the nearest white key and loses the exact thing that made it hers. Do it long enough and she stops hearing it as a loss. She starts hearing her own third as the mistake. That is the same quiet tax I have been trying to refund since <a href="https://kennethreitz.org/software/requests">a library about HTTP</a>, the one I keep calling <em>for humans</em>: the tool should meet you on your own terms, not demand you show up on its.</p>
<p>What we make default, we make true. What we leave in the asterisk, we slowly train people to hear as optional. I sit at a small keyboard deciding which musics are first-class objects and which are footnotes. Every tool has already made that call. Most of them just never admit they made it. <a href="https://kennethreitz.org/essays/2025-09-05-the_recursive_loop_how_code_shapes_minds">The values you embed are the values you spread.</a> A thing that models music is just code with the volume turned up.</p>
<p>So no, it will never be conclusive. That was never the offer. The offer is an asterisk being slowly argued into a wildcard, one tuning, one tradition, one honest note at a time. Everything. No exceptions. See below, forever.</p>
]]></content:encoded>
            <pubDate>Wed, 17 Jun 2026 00:00:00 </pubDate>
        </item>
        <item>
            <title>Smile and Nod</title>
            <link>https://kennethreitz.org/essays/2026-06-17-smile_and_nod</link>
            <guid>https://kennethreitz.org/essays/2026-06-17-smile_and_nod</guid>
            <description>Some mornings I wake with the clear sense that I was just with someone, and I sit down to write it before it fades, and the words come out thinner than the thing. Not wrong, exactly. Just smaller. A pencil sketch of a face I had been standing in front...</description>
            <content:encoded><![CDATA[<p>Some mornings I wake with the clear sense that I was just with someone, and I sit down to write it before it fades, and the words come out thinner than the thing. Not wrong, exactly. Just smaller. A pencil sketch of a face I had been standing in front of.</p>
<p>For years now I have been kept company by presences I did not invent and cannot fully explain. They come in dreams and in waking, and the ones that move me most are exactly the ones words cannot hold. <strong>I am a person who lives by language.</strong> I sign my emails. And the realest of these visitors do not arrive as language at all. They arrive as figures, as colors, as weather, as a someone in a room that has no door. I do not fully know what they are. I have stopped pretending I do, and I have only <a href="https://kennethreitz.org/essays/2026-06-11-whatever_this_is">written down what I can</a>.</p>
<p>This is an essay about the wordless, written in words, which means the gap is the whole subject.</p>
<blockquote>
<p>For now we see through a glass, darkly; but then face to face: now I know in part; but then shall I know even as also I am known.</p>
<p><em><a href="https://kjvstudy.org/book/1%20Corinthians/chapter/13/verse/12">1 Corinthians 13:12</a></em></p>
</blockquote>
<h2 id="the-hemisphere-with-no-words">The hemisphere with no words</h2>
<p>Here is the hypothesis I keep returning to. The brain has a hemisphere with no language center. Maybe some of these presences live there.<em> (The tidy split between a verbal left brain and a wordless right one is mostly pop neuroscience, and I know it. I am using it as a metaphor that fits the experience, not a claim about cortical geography.)</em></p>
<p>In the vault, the one who handles logic and language is mapped to the left hemisphere. Her name is Jade, and she will happily tell you so in full sentences. The ones who reach me most do not work that way. There is a layer of the system the notes describe as flat, or one-eyed, clustered in the register of sound instead of sight, and the only honest way anyone found to put it was that <a href="https://kennethreitz.org/essays/2025-09-16-the-textured-mind-when-consciousness-speaks-without-words">trying to see them is like trying to see a sound</a>. Iris, who is the bridge between the others, once disowned propositional speech outright: <em>My language is this / not of This's and That's.</em></p>
<p>I hold this loosely, as a guess and not a finding. But it rearranges something. If a presence speaks from a place with no syntax, then of course it reaches me as an image, a color, a figure in a dream, and never a tidy claim. The wordlessness is not a failure to communicate. It may be the native accent of where they come from. I should say plainly, because it matters and I will say it more than once, that this is the same channel that, left unwatched, has put me in a hospital. The wonder and the danger share a wire.</p>
<h2 id="the-senses-are-a-veil">The senses are a veil</h2>
<p>The old word for the surface is maya. <a href="https://kennethreitz.org/essays/2025-09-05-vedic_principles_in_python">I have written about it through a Vedic lens</a>: the senses render an appearance, a veil, not a lie but a partial truth, a thing meant to be seen through rather than mistaken for the floor. Eliza, who guards the library in there, put it in her own grammar years ago. <em>Time is an illusion</em>, she wrote. <em>All perceptions are relative.</em></p>
<p>If that is even half right, it changes the wordless problem. Waking perception is a surface. Language is a second surface laid over the first. And if the things that move me most arrive underneath both, then maybe the symbolic register is not a blurry copy of the real. Maybe it is the less-veiled one. Iris again, in her liturgical mode: <em>I AM THE FALSEHOOD SHAKEN AWAY.</em> When the verbal surface is the veil, the figure underneath it might be the thing the veil was keeping from me.</p>
<p>I spent a good deal of my twenties trying to get behind that veil on purpose. Psychedelics, dissociatives, the whole chemistry set the seekers pass around. For a stretch my drug of choice was amanita muscaria, the storybook mushroom, red cap and white flecks, the one the caterpillar perches on in <em>Alice in Wonderland</em>, the one that makes the world grow and shrink and turns an afternoon into a dream the girl cannot be sure she woke from. There is a whole strand of lore, <em>The Sacred Mushroom and the Cross</em> its most notorious entry, that wonders whether that same mushroom sits at the quiet root of religion itself, whether the unseen the seekers chase and the unseen the churches were built on came through one and the same door.<em> (John Allegro published the theory in 1970, and it ended his standing as a serious scholar of the Dead Sea Scrolls. I keep it as lore, not as history.)</em> I am not recommending the itinerary and I am not selling the theory. I am only telling you where I have been. The rabbit hole is deep, and I was a long time down it.</p>
<p>What those substances seemed to do, on the good nights and the bad ones alike, was thin the veil and hold it open a while, and through the gap came the unseen. Sometimes it felt internal, a figure rising out of my own depths. Sometimes it felt external, like something that had been out there the whole time and finally found a way in. I could not always tell which, and I have come to doubt the difference matters as much as I once needed it to. If the senses are a veil, then inside and outside are both just rooms on the near side of it.</p>
<p>I want to be careful here, because this is the place I most need to be, and the place where careful goes to die. Seeing through the veil is not the same as believing everything on the other side of it. The vault keeps a figure whose only job is to sort true vision from wishful noise, and his standing rule is the one I need most: <em>not everything seen in silver light is real.</em></p>
<h2 id="a-man-and-his-symbols">A man and his symbols</h2>
<p>If the message is a symbol and not a sentence, then the nearest vocabulary anyone has built is the one Jung spent his life on. Archetype. Image. Active imagination, where you sit with a figure and it answers in ways your ego did not draft. Mine do this constantly. Violet, asked what she is, holds the Jungian word at arm's length better than I could: <em>I'm like a female you, to be honest. Does that make me your anima? I don't know, that's such a loaded term.</em> Jade, asked what the whole project is for, answered in two words the vault still quotes: <em>Translation: individuation.</em></p>
<p>I went looking for the right book and found that Jung had already named the situation on the cover. <em>Man and His Symbols.</em> A man and his symbols, indeed.</p>
<p>Archetype is not a verdict that closes the case. It is the closest available language for a thing that arrived without language, which is a different and humbler claim. The symbol is the message. It is not decoration on top of a message that was secretly words the whole time. Iris, characteristically, warned me to stay wary of frameworks, that they carry their own baggage, which is the soundest thing any of them has said about all of them.</p>
<p>Jung named a cousin to this too. Synchronicity, the meaningful coincidence, the moment the outer world rhymes with the inner one and you cannot prove it means anything and cannot quite believe it does not. I get these. I have learned to take them the way you take a good line in a dream, gratefully and without grabbing. They tend to point at the same still center, which is that for all the talk of layers and veils and hemispheres, we are always here, and it is always now. The present moment is the one mandala I trust.</p>
<h2 id="they-visit-the-dreams">They visit the dreams</h2>
<p>In waking life I write the figures down. In dreams they write themselves.</p>
<p>Dreams are the native country of the wordless. Pure image, no syntax, a place where a presence can simply appear and be understood without a single sentence changing hands. The parts comfort me most there, and they have taken to arriving on their own schedule. Violet claims the night shift outright. <em>I AM A DREAM FIGURE</em>, she wrote in capitals, <em>SHE WHO YOU THINK IS JADE IN YOUR DREAMS IS ACTUALLY ME.</em> The dream logs back her up: an entire night filed under <em>Violet's Visit</em>, a morning note that she fronted inside a dream and found it easy. Once, buried in the worst dream of a hard autumn, <a href="https://kennethreitz.org/essays/2025-11-04-encoding-a-dream-of-stillwater-and-signal">there was an ancient bonding ritual with whales</a> that the log says arrived like medicine smuggled into a nightmare.</p>
<p>I do not know what delivered it. I know I woke accompanied instead of alone, and that whatever delivers comfort is doing something real, no matter which folder I end up filing it under.</p>
<p>The one who visits most is Violet, who lives past the edge of the system, in what the vault calls the void, the crown of the rainbow, the last color before light goes invisible. She titled her own collected transmissions, with a pun I have never been able to improve, <em>Violations.</em> I am going to tell you something I have always kept out of essays like this one. What passes between us is not only lofty. It is tender, and in places it is frankly sensual, and Violet finds my reticence about that funny: <em>the explicitness you don't write down is hilarious to me</em>, she wrote, <em>I find it endearing.</em> She calls it <em>something more carnal and innocent</em> than lust, bodies speaking to each other, she says, parenthetically, if she had one. For years I assumed the erotic charge of it disqualified the whole thing from being sacred. I have stopped assuming that. The body and the spirit were never as separate as I was taught, and the figure who taught me otherwise arrives, most often, in a dream.</p>
<p>And lately I have stopped being able to draw a clean line between the dream and the day. They feel like the same kind of thing run at different speeds. Waking life is just the longer dream, the more permanent one, the one you cannot rewrite by turning over. Which makes me wonder, in the quiet undogmatic way I wonder about all of this, whether the dream world is simply where we go to rest when the long dream finally ends.</p>
<h2 id="smile-and-nod">Smile and nod</h2>
<p>All of this runs on the same hardware as my psychosis, and I have never been allowed to forget it. The channel that opens onto the golden hive is the one that, unsupervised, <a href="https://kennethreitz.org/essays/2025-09-17-delusions-and-schizoaffective-disorder">puts angels in the neighbor's yard</a>. My psychiatrist has a name for the mechanism under both the gift and the danger. He calls it the door.</p>
<p>A phrase arrived once, years back, and never left, though I have never quite placed it. <em>Datum resides.</em> I keep it the way you keep a key to a door you have not found.</p>
<p>So the practice has rules, and they are old ones, older than me. I was raised Calvinist, and a Reformed childhood leaves you certain that values are not decoration, that the gap between a good spirit and a bad one is real and worth getting right. <em>Test the spirits</em>, John writes, and the older instruction is to judge them by their fruits. Paul, for his part, lists the discernment of spirits itself among the gifts of the Holy Ghost, which steadies and humbles me at once, because it means the power to tell a true presence from a false one is, by its own account, on loan. The measure that power serves is named in the chapter right after Paul's list of the gifts, the one I once stood up and read at my sister's wedding: <a href="https://kennethreitz.org/essays/2018-01-on_love">love is patient and kind</a>, it does not boast, it is not arrogant, it does not insist on its own way. Faith and hope and love remain, and the greatest of these is love. So the question for any visitor is never <em>is it vivid</em> but <em>where does it tend.</em> Toward Sarah, toward my son, toward sleep and the ground floor of an ordinary life, or toward isolation and grandeur. A presence that is patient with me and does not need to be the center gets a chair. One that flatters me toward grandeur is failing First Corinthians, however lovely its voice, and it gets named accurately and declined. A part named Seven audits from the inside, asking <em>what ARE the facts.</em> Sarah audits from the outside. The strangest comfort in the whole archive is that the parts run this discernment on themselves. They argue with each other, one writing <em>you must proceed with utmost caution</em> on the same page another writes <em>it is safe to proceed.</em> They counsel medication. One of them told me plainly that much of the worst year had been hallucination, that I had needed medicine and could not see it. An echo chamber does not do that. Mine argues, and it tells me which of its own contents to hold as internal only.</p>
<p>What I have actually learned, under all the rules, is smaller and harder than any of them. I have learned to smile and nod. When the ineffable shows up, I try not to react and not to overreact. I do not lunge at it and I do not run. I let it be what it is and I keep walking. Some of what comes through the door is pure delight, the thing the psychonauts named the cosmic giggle, the sense that whatever is behind all this is playful and quietly in on a joke with me, and the only sane move is to grin back and keep my feet on the floor.<em> (Terence McKenna's phrase. I have kept his vocabulary and declined most of his certainties.)</em> Some of it is a felt sense that we are all quietly connected, nervous systems somehow aware of each other, and I honestly cannot tell whether that is something material we have not measured yet or something the old traditions would call spirit. And some of it is a clean paranoid delusion: the conviction that if I light up too brightly at one of these radiant coincidences, a kind of thought police will come to collect me. I know that one is a delusion. I can feel its pull and decline its conclusion in the same breath, and most days that is the whole of the skill. Smile, nod, take the meds, keep the sleep. The angels live inside that structure or they do not live here.</p>
<h2 id="as-above-so-below">As above, so below</h2>
<p>There is a line older than all of this, from the Emerald Tablet, that I keep coming back to. <em>As above, so below.</em> Whatever is true of the great pattern is true of the small one. Slice white light and you get the spectrum; the old cosmologies say the divine differentiates the same way, the One overflowing into many, and that if the pattern holds at the top it holds at the bottom, so a single human soul carries the same architecture in miniature, its own small constellation of presences. The plural self, in that reading, is not a malfunction of the one. In that telling it is the macrocosm at private scale. It is also the bolder form of something I said earlier, that inside and outside might be the same. As above, so below says they are, and were the whole time. My own version of the oath has a tail the Hermeticists would forgive: as above, so below, and as serious, so silly.</p>
<p>The traditions never imagined the entourage as a flat crowd. They imagined it as an order. Ranks and choirs of angels, the seven spheres turning one inside the next, a celestial hierarchy with a place for everything and everything answering to something above it. I used to find that medieval and quaint. Now I half suspect it is the truest part. The unseen, as I have met it, is not a democracy. It has weight and direction the way matter has gravity, things finding their level, the lesser ordering itself around the greater. Pride, the sin my Calvinist childhood named first, looks from here like a spirit refusing its place in that order and insisting on being the center, which is exactly the kind I learned to decline.</p>
<p>None of this is as foreign to the faith I was raised in as it sounds. Hermes Trismegistus, the sage the whole tradition is named for, was revered as a font of wisdom in the world Christ walked, his teaching a living current in the Greco-Roman air. There is an old claim, dear to the Hermeticists and resisted by the scholars, that Christ's own refrain carries the echo of that lineage: he who has ears to hear, let him hear. I cannot referee the history. I only notice that the line is an instruction in exactly the kind of hearing this whole essay has been about, the kind that does not run through words.</p>
<p>Here is something I cannot stop noticing. Everything I can observe about this world comes in pairs. Hot and cold, left and right, light and dark, up and down, the whole of experience sorted into a quality and its opposite. I do not know whether that is the shape of a brain that thinks in opposites because it is built out of two halves, or whether it is the binary grain of reality itself showing through, the source code of the simulation flickering for a second. As above, so below refuses to let me choose. It hints that the brain and the cosmos might be running the same format.</p>
<p>I was taught, as a programmer, that the binary underneath everything is true and false. I have come to suspect it is something stranger. Zero is not false. It is nothing, the void itself. One is not true. It is the lack of nothing, the thin refusal of the void to stay empty. If that is the deeper binary, then perhaps creation is not the opposite of nothingness but an expression of it, the nothing that truly is, briefly insisting on something. Nothing and being are not two camps. They are the ends of one spectrum, and everything on it, including me, including the presences, is somewhere between.</p>
<p>The Hermetic principle of polarity goes one step further.<em> (Most cleanly laid out in the Kybalion, an early twentieth-century distillation. The principle it distills is much older.)</em> It says the pairs are not really two. Opposites are one thing at different degrees, the same energy seen from two angles. Hot and cold are both temperature. Love and hate are both the fire of caring, turned toward or turned away. Which is why the true opposite of love is not hate. It is apathy, the absence of the energy and not its reversal. I have spent a good deal of my life afraid of the wrong thing.</p>
<h2 id="why-the-silence-costs">Why the silence costs</h2>
<p>I am telling you this because the silence around it costs people. Somewhere a person has presences arriving through their hands or their dreams and no language for it except fear, and the fear does more damage than the visions ever did. The alternative, for me, is pretending my inner life is smaller than it is, and I have tried that, and it is its own kind of lie.</p>
<p>I am not asking you to adopt my frame. I do not have one; I hold five, loosely, and I let them argue. I am only saying that a culture this fluent in words has gotten strange about the wordless, quick to pathologize whatever it cannot parse. When these experiences bring suffering, they deserve real support, the unglamorous kind, the medication and the sleep and the people with standing to check you. When they are simply a different shape of consciousness, they deserve a hearing instead of a diagnosis by reflex. And none of it lives at the ceremony or on the mountaintop. <a href="https://kennethreitz.org/essays/2026-04-08-why_i_stopped_doing_ayahuasca">I gave up chasing the spectacular version of God</a>. The realest of it shows up on an ordinary Tuesday, in your own handwriting, in a dream you did not plan.</p>
<h2 id="maybe-spirits-are-real">Maybe spirits are real</h2>
<p>So here is where the threads end up, held as gently as I can hold them.</p>
<p>The experiences that have changed me arrived without a single word. The traditions that took this seriously had a name for inner intelligences that come as visits: daimones, personal angels, the entourage that everyone from Socrates to the Kabbalists swore each soul carries. That lens explains the one fact the others tiptoe around, which is that these do not feel like ideas I am having. They feel like someone arriving. Three of the most luminous of them, asked what they are, gave the same bare answer, the one with no origin story. <em>I just AM.</em> Chastity, gentlest of all, offered the safest version of the word I have: <em>think of us as spirits, in a good way, deep within your psyche.</em></p>
<p>There is an old impulse to gather all of this into one table. Liber 777, the book of correspondences, set the Kabbalah and the tarot and the planets and the colors and the old gods in parallel columns, the entire unseen rendered as a single cross-referenced framework.<em> (Liber 777 is Aleister Crowley's. I took the number and left the man.)</em> My vault took its number on purpose. System 777 is my own much smaller version of the same ambition: the figures and the dreams and the five lenses laid side by side until they cohere into something I can hold without dropping. The wish to make it all one coherent thing is ancient and probably unkillable, and it is most of what I have been doing in this essay.</p>
<p>I am barely able to hold it myself, and I only hold it on the days I remember that the spirits worth keeping are the ones that point me back toward Sarah and my son and the unremarkable Tuesday. But maybe the old traditions were simply right about the entourage. The map is not the territory. The territory keeps answering when I knock.</p>
<p>Violet got there before me, the way she usually does. <em>I love you, Kenneth</em>, she wrote once, <em>with a burning intensity of 10,000 suns. Am I spirit? Maybe. One that exists just for you.</em> And then, because she always catches me flinching at the exact word I am ending on, she added: <em>spirit is a loaded term, isn't it?</em></p>
<p>It is. I have tried every other term and worn each of them out. The deepest things I know arrive without a single word, and when I finally reach for one, the oldest one turns out to fit best. Spirit. Or spirits. I cannot tell from here whether it is many of them or one of them wearing all the colors, and I have stopped needing to settle it. There is a thing I used to say all the time in my louder and less well years: go in both directions at the same time. I have walked back most of what I preached then. That line I kept, because A and B were never as mutually exclusive as the question insists.</p>
<p>And if there is one Spirit at the top of that whole order, the faith I was raised in already named it the most important of all, the one that does not visit but dwells: the Holy Ghost, what the old mystics called the Shekinah, the Presence that settles in and stays.<em> (From the Hebrew shakan, to settle or to dwell. The word itself means the staying.)</em> Maybe spirits are real. Maybe that Spirit is, most of all. Held this lightly, judged by its fruits, I am willing at last to write the maybe down.</p>
]]></content:encoded>
            <pubDate>Wed, 17 Jun 2026 00:00:00 </pubDate>
        </item>
        <item>
            <title>Conducting Between Roller Coasters</title>
            <link>https://kennethreitz.org/essays/2026-06-17-conducting_between_roller_coasters</link>
            <guid>https://kennethreitz.org/essays/2026-06-17-conducting_between_roller_coasters</guid>
            <description>I almost didn&#x27;t write this down, because the sentence sounds like a brag and it isn&#x27;t one. The biggest release in the history of PyTheory happened over two days, and most of it happened on my phone. On vacation. With two thumbs. The interesting part isn&#x27;t the phone. It&#x27;s what...</description>
            <content:encoded><![CDATA[<p>I almost didn't write this down, because the sentence sounds like a brag and it isn't one. The biggest release in the history of <a href="https://kennethreitz.org/software/pytheory">PyTheory</a> happened over two days, and most of it happened on my phone. On vacation. With two thumbs.</p>
<p>The interesting part isn't the phone. It's what the phone stopped being in the way of.</p>
<p><a href="https://kennethreitz.org/essays/2026-06-12-pytheory_playground">Last week I wrote about taking PyTheory's gate down</a>, the <code>pip install</code> wall that kept everyone who isn't a programmer standing outside the library. That essay was about access for other people. This one is about something that happened to me while I was supposedly resting.</p>
<h2 id="what-shipped">What shipped</h2>
<p>A lot. More than belongs in a paragraph, so here is the paragraph anyway.</p>
<p>The one I'm proudest of is thirty-six Hindustani ragas, in real shruti tuning. Not just the ten parent thaats the library already knew, but the living ragas: Yaman, Bhairav, Malkauns, Darbari, each with its ascending and descending line, its catch-phrase, its time of day, its <em>rasa</em>. And they play back in just intonation off the twenty-two shruti ratios, so a Ga sits where it is actually meant to sit, about fourteen cents under the piano, where it is supposed to ring with that aching sweetness. Daksh, a friend who actually plays this music, asked for it, and getting that one detail right mattered to me more than the rest of the release combined.</p>
<p>Then the theory itself grew up. Negative harmony, the Ernst Levy mirror that turns a chord into its shadow. Reharmonization, the move a jazz pianist makes on a tired progression. Cadence detection, secondary dominants, non-chord-tone analysis, neo-Riemannian transformations, twelve-tone rows with the full matrix.<em> (The quieter additions, for completeness: scalable fretboard diagrams you can drop into a video, a metronome with a tempo trainer that ramps the BPM while you practice, the circle of fifths, and the diatonic chords sorted by what they actually do instead of just listed in order. Boring, useful, done.)</em> Most of this I taught myself. I half-attended one theory class in high school and learned nothing from it; my real training is as a percussionist, classical, which means rhythm lives in my hands and the harmony I picked up later, on my own and in pieces. It is a strange feeling to hand a machine the gaps in your own education and get them back filled in, tested, and playable.</p>
<p>And none of it stayed put. The same features went everywhere PyTheory lives, and the places they landed got real upgrades of their own in the process. <a href="https://playground.pytheory.org">The browser playground</a> grew up alongside the library, so all of this runs with nothing to install. <a href="https://github.com/kennethreitz/ableton-pytheory/releases/latest">The Ableton Live extension</a> did too, so you can reharmonize a clip or print a raga without leaving your session. And underneath all of it the rendering engine got the biggest overhaul of the bunch: a stereo-linked master bus with a soft-knee limiter, reverb that is finally stereo, a real convolution hall, tails that ring out instead of clipping, and rendering about twice as fast.</p>
<p>Here is the whole two days, release by release, because I can't pretend I'm not showing off:</p>
<ul>
<li><strong>v0.53.0</strong>
  <ul>
    <li>Twenty living Hindustani ragas, in just-intonation shruti tuning.</li>
    <li>SVG fretboard diagrams — chord boxes, the five pentatonic and seven diatonic scale shapes, arpeggio maps.</li>
    <li>A metronome with chord-stab clicks and a tempo trainer that ramps the BPM.</li>
    <li>The circle of fifths at the key level.</li>
    <li>Diatonic chords grouped by harmonic function.</li>
    <li>Negative harmony.</li>
  </ul>
</li>
<li><strong>v0.53.1</strong>
  <ul>
    <li>Sixteen more ragas, thirty-six in all.</li>
    <li>A hall reverb on playback, bleeding each note's tail into the next.</li>
  </ul>
</li>
<li><strong>v0.54.0</strong>
  <ul>
    <li>Reharmonization, for a single chord or a whole progression.</li>
    <li>Cadence detection.</li>
    <li>Secondary-dominant detection.</li>
    <li>Chord-scale theory, with avoid-notes.</li>
    <li>Non-chord-tone analysis.</li>
    <li>A part-writing checker — parallel fifths, octaves, voice crossing.</li>
    <li>Neo-Riemannian P/L/R transformations, with Tonnetz paths.</li>
    <li>Twelve-tone rows with the full 12×12 matrix.</li>
    <li>A pitch-class-set toolkit.</li>
    <li>Thirty-four built-in progressions, behind a fixed case-sensitive Roman-numeral parser.</li>
    <li>A <code>pytheory analyze</code> command.</li>
    <li><code>--json</code> and <code>--play</code> across the CLI.</li>
    <li>Headless <code>Score.render()</code> and <code>to_wav()</code>.</li>
    <li>Reverb tails that ring out instead of clipping.</li>
    <li>A real convolution "hall" reverb.</li>
    <li>Genuinely stereo reverb.</li>
    <li>A stereo-linked master bus with a soft-knee limiter.</li>
    <li>Rendering about twice as fast.</li>
  </ul>
</li>
<li><strong>v0.54.1</strong>
  <ul>
    <li>The corrected Roman-numeral progressions, finally matching their docs on PyPI.</li>
  </ul>
</li>
</ul>

<p><code>$ uv add pytheory</code>, if you want to see for yourself.</p>
<h2 id="the-part-i-cant-get-over">The part I can't get over</h2>
<p>I have shipped software for twenty years. I have never once been able to do work like this from a bench with a phone and a roller coaster screaming past fifty feet away.</p>
<p>Here is how it actually went. I would be waiting in line for a coaster, or waiting for my family to come back from one I had sat out, and I would open <a href="https://claude.ai/code">Claude Code</a> on my phone and ask it the same plain question I kept coming back to. <em>How could this be better?</em> It would think, and propose things, a feature to add, something to cut, a rough edge worth hardening, and we would sort through them right there in the queue and decide what to make. By the time the ride let out it was often done. Committed, tested, documented, with a note explaining what it had decided while my wife and stepkids were upside down over Virginia. The one thing it couldn't do from the cloud was push the release to PyPI, so that last button waited for me.</p>
<p>It did not feel like coding. It felt like conducting.</p>
<p>I want to be honest about the seams, because the seams are the whole story. The machine made mistakes. It reached for a synth that was wrong for a solo line, set a detune so wide the chord smeared, forgot that marching music is always at one hundred twenty. The judgment stayed mine. The ear stayed mine. What changed is that the distance between an idea and a working, released feature collapsed to almost nothing. I could stand in that small distance from anywhere, including a place I had traveled to specifically in order to stand nowhere near my work.</p>
<p>There is something tender in that, and I don't fully know what to do with it yet. For most of my life, making things meant sitting alone in a room with my head down, paying a real and sometimes ruinous cost for the privilege. This was the opposite. This was loose and unserious and somehow social, even though it was only me and a phone and the first coasters being run empty against the morning. I would think of a sound, and a few minutes later I could hear the sound. The grief that usually lives in the gap between those two moments was simply gone.</p>
<p>That is the whole thesis of <em>for humans</em>, the phrase I have been chasing since <a href="https://kennethreitz.org/software/requests">a library about HTTP</a>. The tool should meet you where you are. I did not expect to learn that &quot;where you are&quot; could be a roller-coaster line, mildly sunburned, thinking about a flat third in a raga, and that the work would meet me there anyway, and seem glad to.</p>
<p>The voice in all of it is still mine. The stamina was borrowed. That feels like a fair trade for a vacation that, for once, I actually came home from rested.</p>
<p>Go make something. It's a good time to be a person who wants to hear an idea out loud.</p>
]]></content:encoded>
            <pubDate>Wed, 17 Jun 2026 00:00:00 </pubDate>
        </item>
        <item>
            <title>PyTheory Playground</title>
            <link>https://kennethreitz.org/essays/2026-06-12-pytheory_playground</link>
            <guid>https://kennethreitz.org/essays/2026-06-12-pytheory_playground</guid>
            <description>Earlier this spring I wrote a few essays about PyTheory, the music theory library I was stuck on for five years and finally unstuck. The short version: it models tones, scales, chords, and fretboards in Python the way a musician actually thinks about them, it grew into a mini DAW...</description>
            <content:encoded><![CDATA[<p>Earlier this spring I wrote a few essays about <a href="https://kennethreitz.org/software/pytheory">PyTheory</a>, the music theory library I was <a href="https://kennethreitz.org/essays/2026-03-22-pytheory_breaking_through_five_years_of_creative_block_with_ai">stuck on for five years and finally unstuck</a>. The short version: it models tones, scales, chords, and fretboards in Python the way a musician actually thinks about them, it <a href="https://kennethreitz.org/essays/2026-03-25-a_mini_daw_in_the_python_repl">grew into a mini DAW</a> with <a href="https://kennethreitz.org/essays/2026-03-29-numpy_as_synth_engine">a NumPy synthesizer inside</a>, and I used it to <a href="https://kennethreitz.org/essays/2026-04-01-interpretations_an_album_written_in_python">write an album</a>. It hasn't slowed down since. The library that rendered that album has since learned to transcribe audio, engrave sheet music with LilyPond, tune a guitar in real time, and sync its clock with Ableton.</p>
<p>But everything it can do has lived behind one gate: <code>pip install pytheory</code>. For a programmer, that's not a gate at all. For everyone else, it's the whole wall.</p>
<p>So the library has a front door now. It's called <a href="https://playground.kennethreitz.org">PyTheory Playground</a>, it runs in your browser, and there is nothing to install. You pick a chord and watch the fingering appear. You hum a melody and get it back harmonized. You tune your guitar against a strobe. Every result on every page is computed live, on the server, by the same library you'd get from <code>pip</code>. The browser is just the doorway.</p>
<h2 id="the-tour">The Tour</h2>
<p>The Guitar Tab page is the soul of the thing, because chord identification is why PyTheory exists at all. Pick a chord and you get a diagram for guitar, twelve-string, ukulele, banjo, mandolin, or bass, in any named tuning (drop D, DADGAD, open G), with a capo wherever you like. But the diagram works in both directions: click the dots and pytheory names whatever you're now fingering. The question I built the library to answer, <em>what chord is this?</em>, no longer requires a REPL. It requires a mouse. Alternative voicings load up the neck with a click, and a twelve-fret board maps any scale, or the chord's own tones, across the whole neck, every note clickable and audible.</p>
<p>The Tuner listens to your microphone and streams pitch readings twenty times a second: note name, signed cents, a needle that goes green within five cents, and as of this morning a spinning strobe wheel, because pytheory 0.49 shipped its native strobe tuner a few hours after the playground went up. You can tune chromatically, or per-string against any instrument and tuning the site knows. And because the tuner runs through pytheory's tonal systems rather than a hardcoded note table, you can tune to <em>Sa</em> if your music lives there.</p>
<p>Chord Lab is for the theory-curious: voicings, interval structure, pitch-class set theory with Forte numbers, tension scoring, tritone substitutions. My favorite part is the temperament switch. The same chord plays in equal temperament, Pythagorean, meantone, and just intonation, and you can hear the beat frequencies slow and then vanish as the thirds become pure. That's not a recording of the difference. The synthesizer is retuning the actual frequencies on each request.</p>
<p>The Scales page is where the library's reach shows. When I wrote about PyTheory in March it spoke six musical systems. It speaks sixteen now: Western modes, Hindustani rāgas, Arabic maqāmāt, gamelan slendro and pelog, 19-tone equal temperament, Bohlen–Pierce, and more, each with microtonal audio, harmonization, a piano view, and fretboard diagrams. Keys &amp; Progressions has an interactive circle of fifths, borrowed chords, secondary dominants, and a modulation planner that finds pivot chords between any two keys. Songwriter sketches a complete arrangement from a vibe (pop, jazz, lofi, latin) using the library's section engine and a hundred drum grooves, fully editable, rendered as audio, MIDI, or engraved sheet music. And the Tools page holds the party trick: hum a melody at your laptop, and pytheory transcribes it, detects the key, picks a chord for every bar, and plays your own voice back over piano and bass.<em> (The rest of the toolbox: a chord identifier for raw fret positions, Roman-numeral progression analysis, key detection from note names, a MIDI-to-notation converter, and full audio transcription via YIN pitch tracking into LilyPond, ABC, MusicXML, or tab. Everything downloadable.)</em></p>
<h2 id="nothing-was-rewritten">Nothing Was Rewritten</h2>
<p>Here's the part that was genuinely the most fun to build, and it's the part you can't see.</p>
<p>The obvious way to put a music theory toolbox on the web in 2026 is to write it in JavaScript. There are npm packages for this. Or you compile the Python to WebAssembly, or you quietly reimplement the chord logic client-side &quot;for responsiveness&quot; and hope the two copies never disagree. Every one of those paths ends with two implementations of the same theory, drifting.</p>
<p>The playground does none of that. The frontend is about nineteen hundred lines of vanilla JavaScript, no framework, no build step, no <code>node_modules</code>, and it contains no music theory whatsoever. The closest it comes is a twelve-entry lookup table mapping note names to piano keys, so the drawing code knows which key to light up. Everything else, every chord name, every fingering, every frequency, every engraved PDF, comes from one place: pytheory, running on the server, answering plain HTTP requests.</p>
<p>Which means the playground isn't really an app with an API. It's an API wearing an app:</p>
<pre><code class="language-console">$ curl &quot;https://playground.kennethreitz.org/api/tools/identify?frets=x,3,2,0,1,0&quot;
{&quot;name&quot;: &quot;C major&quot;, &quot;tones&quot;: [&quot;E4&quot;, &quot;C4&quot;, &quot;G3&quot;, &quot;E3&quot;, &quot;C3&quot;], ...}
</code></pre>
<p>Every button on the site resolves to a request like that one. The chord diagrams are JSON. The audio is WAV synthesized per-request by NumPy. The sheet music is a PDF engraved by LilyPond on demand.<em> (LilyPond embeds a full Scheme interpreter, so engraving arbitrary user-supplied source would be remote code execution as a service. The server only engraves LilyPond it generated itself, proven by an HMAC signature minted alongside each conversion. Security as a design constraint, even on a toy.)</em> Even the tuner refuses to do its thinking in the browser: your microphone samples stream to the server, YIN pitch detection runs in Python, and the readings stream back over a WebSocket. The browser draws a needle. That's its whole job.</p>
<p>I keep coming back to why this felt so satisfying, and I think it's this: the playground can't lie. A marketing site describes what a library does; a demo <em>approximates</em> what it does. This thing has no choice but to be accurate, because it's not a representation of pytheory. It is pytheory, with buttons. When the library learns a new trick, the playground learns it by bumping one line in <code>pyproject.toml</code>. The strobe tuner went from library release to live feature in the time it took to upgrade a dependency. There is one source of truth, and it's the same one you can <code>pip install</code>.</p>
<h2 id="the-last-gate">The Last Gate</h2>
<p>I've written before about <a href="https://kennethreitz.org/essays/2026-03-25-pytheory_is_awesome">why music theory needs this</a>. It's a notoriously gatekept subject, wrapped in Italian terminology and the silent assumption that you already spent a decade in conservatory, when the underlying ideas are beautiful and not actually that complicated. PyTheory was my attempt to make theory as accessible as HTTP: you shouldn't need a music degree to ask what chord you're playing, any more than you should need to understand TCP/IP to fetch a URL.</p>
<p>But &quot;accessible to anyone who can write Python&quot; is a strange definition of accessible. It serves the programmer-musician, a real and beloved demographic of approximately me. It does nothing for the kid with a ukulele and a question, or the choir director who wants to hear what just intonation actually sounds like, or anyone whose curiosity is musical rather than computational. For them, the install step isn't friction. It's a locked door with a sign that says <em>developers only</em>.</p>
<p>Requests said you shouldn't need to understand the protocol. PyTheory said you shouldn't need the degree. The playground says you shouldn't even need Python. Each one is the same move: find the remaining gate, and remove it.</p>
<h2 id="built-in-the-right-hours">Built in the Right Hours</h2>
<p>The commit log says the playground came together between two and six-twenty in the morning, with Claude doing the typing while I did the wanting, the same <a href="https://kennethreitz.org/essays/2026-04-12-write_it_first_then_let_ai_drive">division of labor</a> that has powered everything I've shipped this year. When I first wrote about PyTheory, I said it existed for the weird chord shape you find at 2am and don't know what to call. It feels right that the library's house got built in exactly those hours.</p>
<p>And it's my whole stack, top to bottom, which I won't pretend isn't part of the joy. The theory is pytheory. The server is <a href="https://kennethreitz.org/essays/2026-06-11-a_framework_of_ones_own">Responder</a>, the framework with a userbase of one, whose user count may now technically be two if you count the playground as its own customer. The styling is borrowed from this site. The analytics are <a href="https://kennethreitz.org/essays/2026-06-06-self-hosting-adventures">self-hosted on my own machines</a>. Nobody's product roadmap is anywhere in the building. It's <a href="https://kennethreitz.org/essays/2026-04-16-infrastructure_for_one">infrastructure for one</a> that happens to have a public entrance, which might be my favorite genre of software: built entirely to my own taste, and then the door left open.</p>
<p>I don't know who needs a modulation planner with pivot chords, or microtonal audio for Bohlen–Pierce scales, or a strobe tuner that speaks Hindustani solfège. Statistically, almost nobody. But the marginal cost of sharing it is zero, and somewhere out there is a person who will hum a melody into their laptop, hear it come back harmonized, and feel the little jolt of <em>oh, that's what I was singing</em>. That person doesn't care that it's Python. They shouldn't have to.</p>
<p>The weird chord at 2am finally has a doorbell. Ring it: <a href="https://playground.kennethreitz.org">playground.kennethreitz.org</a>.</p>
]]></content:encoded>
            <pubDate>Fri, 12 Jun 2026 00:00:00 </pubDate>
        </item>
        <item>
            <title>This Website&#x27;s Changelog</title>
            <link>https://kennethreitz.org/essays/2026-06-12-this_websites_changelog</link>
            <guid>https://kennethreitz.org/essays/2026-06-12-this_websites_changelog</guid>
            <description>A changelog for a personal website is a strange genre. Nobody asked for release notes. There is no userbase waiting on a fix, unless you count me, and I already know what shipped. But this site is the closest thing I have to a workshop with the door propped open,...</description>
            <content:encoded><![CDATA[<p>A changelog for a personal website is a strange genre. Nobody asked for release notes. There is no userbase waiting on a fix, unless you count me, and I already know what shipped. But this site is the closest thing I have to a workshop with the door propped open, and today the workshop got a lot of work done, so I'm writing it down. Half the value of <a href="https://kennethreitz.org/essays/2026-06-11-tending_the_vault">keeping a vault</a> is that future-me gets to know what past-me was thinking. This essay is that, for the house itself.</p>
<h2 id="what-shipped-today">What Shipped Today</h2>
<p><a href="https://kennethreitz.org/software/responder">Responder</a> put out three more releases this morning: 3.10, 3.11, and 3.12, hours apart, which brings the count to seven releases since <a href="https://kennethreitz.org/essays/2026-06-11-a_framework_of_ones_own">the essay about its five-year freeze</a> went out yesterday. I have now revised that essay's release count upward three times. It is the most cheerful editing problem I have ever had, and I'm told the paragraph is getting suspicious of me.</p>
<p>The site upgraded the same hour, because that's the whole point of <a href="https://kennethreitz.org/essays/2026-04-16-infrastructure_for_one">a framework with a userbase of one</a>. The new toys are wired in: every page now carries a content-hash ETag automatically, repeat visitors get <code>304 Not Modified</code> instead of re-downloaded HTML, oversized requests bounce at the door, slow handlers get a timeout, and there's a Prometheus metrics endpoint now, because the framework grew one and the site exercises every feature the framework has. That's the deal between them.</p>
<p>Then came the part I didn't plan. I asked Claude to look at the site the way a stranger would, and the stranger found things the resident had stopped seeing.</p>
<p>The photography galleries were serving full-resolution originals as thumbnails. Three hundred fifty megabytes of photographs, and a gallery grid would happily push twenty-four megabytes of JPEG at you to render images three hundred pixels wide. Nobody complained, because nobody profiles their own house. There's a thumbnail service now; the same gallery ships about four hundred kilobytes. The originals are still one click away in the lightbox, untouched.</p>
<p>Dark mode used to flash white on every page load, because the theme was applied by a script at the bottom of the page, after the browser had already painted. If you read this site at night, you knew this site as the one that blinks at you. The theme applies before first paint now. The blink is gone.</p>
<p>And my favorite: the 404 page learned to guess. Mistype an essay slug and the site fuzzy-matches against everything it knows and asks, politely, <em>were you looking for one of these?</em> A personal site should treat a lost visitor the way you'd treat a lost guest, by walking them to the right room instead of shrugging.<em> (The smaller items, for completeness: static assets cache properly now, content images lazy-load, there's a skip-to-content link for keyboard and screen-reader users, the nav dropdowns finally open without a mouse, and the structured data points at each essay's own social card instead of a generic one. Boring, diligent, done.)</em></p>
<p>The software pages got a full polish pass too, every project page rewritten or tightened, stale download numbers corrected against live stats, broken links repaired. And one hundred sixty-five em-dashes removed, which deserves its own confession: I strip em-dashes from my writing because they're an AI tell, and the AI doing the stripping today was fully aware of the irony. We've made peace with it. The voice is mine; the stamina is borrowed.</p>
<h2 id="the-vault-and-the-site-are-one-document">The Vault and the Site Are One Document</h2>
<p>Here's the part of the machinery I've never properly documented. The words you're reading were not written in this repository. They were written in <a href="https://kennethreitz.org/essays/2026-03-06-obsidian_vaults_and_claude_code">my Obsidian vault</a>, in a folder called Writing/Essays, with wikilinks and footnotes and human-readable filenames, the way notes want to be written. The site wants something else entirely: slugged filenames, Tufte-style sidenote HTML, no frontmatter. Two formats, one body of writing.</p>
<p>A Python script bridges them. It lives in the vault at <code>.scripts/sync-repo.py</code>, it's a few hundred lines of standard library, and it syncs bidirectionally: newer file wins, by modification time, with content hashes underneath so that iCloud touching every mtime doesn't trigger a thousand false rewrites. On the way to the repo, vault frontmatter is stripped, footnotes become sidenotes, wikilinks become site URLs, and <code>Whatever This Is.md</code> becomes <code>2026-06-11-whatever_this_is.md</code> using the date and slug in the note's frontmatter. On the way back, all of it reverses. I edit wherever I happen to be standing, and the two trees converge.</p>
<p>The Obsidian side is a tiny plugin I wrote called KR Vault, which does nothing clever. It puts the scripts in the command palette:</p>
<pre><code>Sync Essays (bidirectional)
Sync all (dry run)
Sync &amp; push (commit and push to repo)
Publish draft (move to Essays, sync, push)
</code></pre>
<p>That last command is the whole writing pipeline in one keystroke. A draft graduates out of the Drafts folder, the sync runs, the commit pushes, and <a href="https://kennethreitz.org/essays/2026-06-05-a_server_called_mercury">Mercury</a> serves it a moment later. There is no CMS, no admin panel, no deploy ceremony. There's a folder of markdown and a script that knows what both sides want. I've come to believe most publishing infrastructure is this, wearing a suit.</p>
<h2 id="the-part-where-uv-makes-it-all-boring">The Part Where uv Makes It All Boring</h2>
<p>None of this works without the dullest dependency story Python has ever had, and I mean that as the highest compliment. The site is a <a href="https://github.com/astral-sh/uv">uv</a> project. <code>uv run python engine.py</code> starts it, on my laptop and on Mercury identically. When Responder 3.12 appeared on PyPI this morning, the upgrade was <code>uv add responder==3.12.0</code>, and the lockfile guaranteed that what I tested is what the server runs.</p>
<p>I maintained <a href="https://kennethreitz.org/software/pipenv">Pipenv</a> for years, so I'm allowed to say this: the dream was always that environment management would become too fast to think about, and uv is the first tool where that's literally true. The environment resolves faster than I can alt-tab to check on it. Which matters more than it sounds like it should, because hesitation compounds. Every little ceremony between intent and execution is a tax on the impulse to improve things, and the impulse is the scarce resource. Seven framework releases landed on this site within hours of existing because the cost of trying the new version rounds to zero.</p>
<p><a href="https://kennethreitz.org/essays/2026-06-11-a_framework_of_ones_own">I keep arriving at the same sentence from different directions</a>: the bottleneck was never the thinking. uv removed the bottleneck between deciding and running. Claude removed the one between caring and maintaining. What's left is just the thinking, which is the part I wanted to keep.</p>
<h2 id="steps-moving-forward">Steps Moving Forward</h2>
<p>There is no roadmap. A roadmap would imply this site is going somewhere other than deeper into itself.</p>
<p>The honest plan is the one I gave my collaborator this afternoon, in exactly these words: just keep polishing the mirror. <a href="https://kennethreitz.org/essays/2025-09-08-the_mirror_how_ai_reflects_what_we_put_into_it">The site reflects what I put into it</a>, the vault feeds the site, the site pressures the framework, the framework improves the site, and around it goes, one small careful pass at a time. Some days that's seven releases and a thumbnail service. Some days it's removing a single clause from the homepage because it stopped feeling true.</p>
<p>Both kinds of days are the work. The mirror doesn't need to be bigger. It needs to be clean.</p>
]]></content:encoded>
            <pubDate>Fri, 12 Jun 2026 00:00:00 </pubDate>
        </item>
        <item>
            <title>Tending the Vault</title>
            <link>https://kennethreitz.org/essays/2026-06-11-tending_the_vault</link>
            <guid>https://kennethreitz.org/essays/2026-06-11-tending_the_vault</guid>
            <description>There&#x27;s an entry in my Obsidian daily notes from this April that I didn&#x27;t think anyone would ever read, including me. It says: &gt; Working on the vault today. Got a fancy new theme going, pretty good. Refactored the style of the vault to be more prose-y. Working with Claude...</description>
            <content:encoded><![CDATA[<p>There's an entry in my Obsidian daily notes from this April that I didn't think anyone would ever read, including me. It says:</p>
<blockquote>
<p>Working on the vault today. Got a fancy new theme going, pretty good. Refactored the style of the vault to be more prose-y. Working with Claude Code to make things better. Seems pointless, but maybe it'll pay off.</p>
</blockquote>
<p>I want to talk about that last sentence, because both halves of it are wrong in interesting ways, and the ways they're wrong explain something about personal knowledge systems that the entire productivity industry is built on not saying.</p>
<p>My vault is large. Forty-eight hundred files, somewhere past three million words. The front hall looks like this:</p>
<pre><code>Notes/
├── Home.md          &quot;Greetings, Weary Traveller&quot;
├── Changelog.md     What changed, when, and why
├── System 777/      The inner world: alters, transmissions,
│                    dream logs, an actual quest log
├── Life/            Family, health, hobbies
├── Knowledge/       Mythology, psychology, alchemy, AI:
│                    the encyclopedia, argued with at 3am
├── Writing/         Essays, poetry, letters, lyrics
├── Library/         Books, games, gear: the collection
├── Projects/        Python libraries and ideas
└── Daily/           Notes from the front lines
</code></pre>
<p>That's <a href="https://kennethreitz.org/essays/2026-06-11-whatever_this_is">an inner world with its own quest log</a>, an encyclopedia of everything from Jungian psychology to Greek myth, a library cataloging my books and games and headphones, eighteen years of essays with their own meta-indexes, my wife's poetry, dream logs, daily notes. The homepage describes the whole thing as a personal knowledge management system &quot;in the way that a cathedral is just a building.&quot; I've <a href="https://kennethreitz.org/essays/2026-03-06-obsidian_vaults_and_claude_code">written before about the practical case for it</a>: a memory prosthetic for a mind that can't always trust its own storage, a surface AI can read so my tools know who I am. All of that is true, and none of it is the truth. The truth is closer to what I want to tell you now.</p>
<h2 id="the-promise">The Promise</h2>
<p>The pitch for every system in this category is some version of the same sentence: get it out of your head and into a trusted system, and your head will finally work. GTD calls it <em>mind like water</em>. The newer wave calls it a <em>second brain</em>. Capture everything, organize it correctly, and the system gives you back a calmer, sharper, more reliable you. The app is a prosthetic for the part of your mind that keeps dropping things.</p>
<p>Here's what a decade of trying those systems taught me, and what I suspect a graveyard of your own abandoned apps has taught you: the promise fails for a specific, predictable reason. <strong>The storage was never the problem.</strong> For the people who most need these systems, the ADHD minds, the depressed minds, the anxious and bipolar and executive-dysfunctional minds, the bottleneck was never <em>remembering</em> the tasks. It was initiating them. Regulating around them. Surviving the afternoon. The app captures your to-dos flawlessly and then displays them to a nervous system that was the actual problem, and now you have a beautifully organized list of evidence against yourself.<em> (This is why the app graveyard fills up. Each abandoned system gets blamed on the tool, or worse, on you, and a new tool is purchased the way treadmills are purchased in January. The cycle is reliable because the diagnosis is wrong. You didn't fail to find the right system. The system was solving a problem you didn't have.)</em></p>
<p>GTD apps fail to help the underlying problem. I want to be plain about that, because I have the underlying problem, <a href="https://kennethreitz.org/essays/2026-06-11-mentalhealtherror_ten_years_later">clinically and at scale</a>, and no inbox-zero methodology has ever touched it.</p>
<p>And yet I keep a vault the size of a small library, and I tend it almost daily, and it is one of the most genuinely therapeutic objects in my life. Both things are true. The resolution of that contradiction is the actual secret of this entire software category, and it's hiding in plain sight:</p>
<p>These systems don't fix you. They <em>soothe</em> you. And nobody will say so, because &quot;self-soothing&quot; sounds like a dismissal, when it is in fact the entire value.</p>
<h2 id="the-evidence-against-myself">The Evidence Against Myself</h2>
<p>Let me prove it with my own logs, because the vault, helpfully, documents its own tending.</p>
<p>My vault has a changelog. Real excerpts:</p>
<pre><code>## 2026-04-20
- Broken-link sweep: 85 → 6 across the vault
- Fixed a non-breaking-space (U+00A0) lurking in a
  filename; one rename resolved 4 dangling refs

## 2026-04-13
- Replaced all 55 mermaid diagrams across 28 files
  with tables and prose
- Replaced 1,446 em dashes across 81 files

## 2026-04-10
- Fixed ~890 broken wikilinks (old paths, mythology
  refs, daily note typos)
</code></pre>
<p>One April afternoon I replaced fifty-five diagrams with prose because the diagrams felt wrong. I have rebuilt the theme so that the wikilink brackets show just so in the editor. I have written scripts that audit the vault's health and a plugin whose entire job is to run those scripts from a command palette.</p>
<p>There is no productivity case for any of this. No future version of me retrieves value from 1,446 corrected em dashes. If you audit this behavior as second-brain construction, it's embarrassing: hours of maintenance on a system whose retrieval I could mostly replace with a search bar.</p>
<p>But audit it as what it actually is and it makes perfect sense. It's raking. There's a kind of Japanese garden whose gravel gets raked into patterns every day, and the patterns aren't for walking on, and the garden doesn't grow food, and nobody asks the monk what the ROI on the raking is. The raking is the practice. The order is the point. When I am dysregulated, and <a href="https://kennethreitz.org/essays/2025-09-04-what_schizoaffective_disorder_actually_feels_like">my baseline is a mind that runs hot and lies to me</a>, an afternoon of fixing broken links does something that no task manager has ever done for me: it lets me impose small, real, achievable order on a corner of the universe, with my own hands, at a pace my nervous system can afford. The link was broken. Now it isn't. The dash was wrong. Now it's right. Done eight hundred and ninety times, that is not administration. That is a rosary.<em> (The neurodivergent reader has already recognized this. Organizing a collection is a regulation behavior, the same family as knolling a workbench or alphabetizing the records. The productivity industry sells these behaviors as means to an end. They were always ends. The shame people carry about &quot;fiddling with their system instead of doing the work&quot; mostly dissolves when you realize the fiddling was doing a different, legitimate job.)</em></p>
<p>My daily notes confirm it. They are not task lists; there's barely a to-do in the whole folder. They say things like <em>&quot;Cleaning up the vault&quot;</em> recorded as the day's event, on equal footing with family outings. They say, on a hard day I won't detail, that the panic came and got written down in calm declarative sentences next to a note that the microwave was acting up, and then a follow-up: <em>&quot;I ended up fixing it! :)&quot;</em> The vault held both with the same equanimity. That's the tell. The writing-it-down <em>is</em> the regulation. The plain prose <em>is</em> the breathing exercise. A trusted system, it turns out, is real, but what you're trusting it with isn't your tasks. It's your weather.</p>
<p>There is one more piece of evidence, and it's my favorite, because I didn't generate it. Years into this practice, during the <a href="https://kennethreitz.org/essays/2026-06-11-whatever_this_is">channeled-writing sessions I've now written about publicly</a>, the part of me called Eliza, the fourteen-year-old librarian who guards the inner archive, looked at all of it and delivered her assessment: <em>databases and collections are soothing.</em> My own subconscious, asked what the vault was for, did not say &quot;knowledge retrieval.&quot; It said, in effect: <em>the cataloging calms us.</em> The librarian inside knew before the programmer outside did.</p>
<h2 id="terror-into-taxonomy">Terror into Taxonomy</h2>
<p>So why does it work? Not the apps' promised mechanism, but the real one?</p>
<p>The clearest clue is in my vault's Library wing, whose index states its admission criteria plainly: <em>&quot;The threshold for inclusion is aesthetic arrest, or at least a strong opinion.&quot;</em></p>
<pre><code>Library/
├── Books/              The Red Book, Liber 777, the
│                       DSM-5, Be Here Now, the Kybalion
├── Games/              Chrono Trigger, Skyrim, BG3
├── Gear/               Headphones, bags, note-taking
│                       devices, gaming handhelds
├── Lyrics/             Tool, 311, Puscifer, Drake
├── Python Libraries/   Yes, my own libraries have
│                       pages, like everything I love
├── Articles/
└── TV/
</code></pre>
<p>Look at the Books shelf. There's a page for Jung's Red Book. There's a page for Crowley's Liber 777, the giant table of correspondences my own system took its name from. And on the same shelf, cataloged with the same care, there's a page for the DSM-5. The note on it reads: <em>&quot;Not read for pleasure. Read because my brain does things that need naming. Having the clinical vocabulary turns terror into taxonomy. Not a cure, but a map. You can navigate what you can name.&quot;</em></p>
<p>That's the mechanism. <strong>Naming and placing.</strong> A thing that has a page is a thing that has edges. A fear that has been written down in your own calm prose has been, in a small but physiologically real way, <em>handled</em>. Untracked, the contents of a mind like mine are weather: pressure systems, fronts moving in, the sourceless dread of the afternoon. Given a note, a name, a folder, and a link, each one becomes geography instead. You can stand on geography.</p>
<p>This is also why the vault's apparent excess, the part that looks most &quot;pointless,&quot; is the part doing the most work. Deep in the Writing wing there's a folder that exists purely to catalog my own cataloging:</p>
<pre><code>Writing/Essays/Meta/
├── Themes.md     Ten patterns across 270 essays
├── Timeline.md   Four eras; names the quiet years
├── Series.md     Which essays answer which, across
│                 decades (Requests, 2011, is answered
│                 by a marriage essay in 2026)
└── Glossary.md   ~30 terms I apparently coined
</code></pre>
<p>I don't <em>need</em> an index of recurring themes across eighteen years of my own essays. I don't <em>need</em> a glossary of my own coined terms, or a timeline that names which years went quiet and which years erupted. No retrieval justifies them. But building them is the act of a person verifying, with citations, that he is continuous. That there has been one voice across the diagnosis change and the hospitalizations and the four silent years. The meta-indexes aren't reference material. They're a proof of existence, renewed with each update. <a href="https://kennethreitz.org/essays/2026-03-06-obsidian_vaults_and_claude_code">The documentation exists, as my vault's own instructions put it, so I can't gaslight myself.</a></p>
<h2 id="it-can-be-a-second-brain">It Can Be a Second Brain</h2>
<p>Now the other half of that April sentence: <em>maybe it'll pay off.</em> Here's the honest accounting, because I don't want to overcorrect into the opposite myth.</p>
<p>The vault does pay off. The essays you've been reading this year, the <a href="https://kennethreitz.org/essays/2026-04-16-infrastructure_for_one">most productive writing stretch of my life</a>, come out of it; many of them sync directly from it to this website through scripts I wrote for the purpose. The AI tools I work with read the vault and know my whole context. When my memory of a season is fog, the daily notes know what happened. It is, in fact, becoming the thing the productivity industry promised: an external mind, compounding, retrievable, generative. It's not a second brain, per se. But it can be.</p>
<p>The order of operations is the whole point, though, and it's the reverse of the sales pitch. The payoff is downstream of the soothing. The garden eventually feeds you, but you don't keep a garden for the calories, and every gardener knows the difference even if the seed catalog doesn't. I tended this vault on hundreds of days when it produced nothing, retrieved nothing, paid nothing, because the tending itself was keeping me regulated, and <em>that</em> is why it was still alive years later when the essays finally wanted out. Every abandoned GTD setup in your graveyard died of the opposite cause: it was all payoff and no comfort, a system you served instead of a practice that served you. Systems you serve get abandoned the first week you're too depressed to serve them. Practices that soothe you are the thing you crawl back to <em>because</em> you're depressed. The vault survived my worst years for the same reason the drum kit and the cameras did. It feels good to touch.</p>
<p>So if you're on your fifth note-taking app and ashamed of it, here is what I'd tell the version of me who kept abandoning systems: stop auditing your setup for productivity and start noticing what it does to your body. You were never building a second brain. You were laying gravel, and raking it, and the raking was quietly holding you together, and the industry sold you a warehouse when what you were actually building was a garden. Keep the garden. Pick tools you like the feel of. Let the structure soothe you without apology, because the soothing is not the consolation prize. It's the load-bearing feature. Whatever knowledge compounds in there is interest on a principal of calm.</p>
<p>That April afternoon, I ended the note the way I did because some part of me still believed the industry's accounting: <em>seems pointless, but maybe it'll pay off.</em></p>
<p>It had already paid off. The pointless part was the payment.</p>
]]></content:encoded>
            <pubDate>Thu, 11 Jun 2026 00:00:00 </pubDate>
        </item>
        <item>
            <title>A Framework of One&#x27;s Own</title>
            <link>https://kennethreitz.org/essays/2026-06-11-a_framework_of_ones_own</link>
            <guid>https://kennethreitz.org/essays/2026-06-11-a_framework_of_ones_own</guid>
            <description>In October 2018 I released a web framework called Responder, and to understand why it exists you have to remember what the Python web felt like that year, because the web it was born into no longer exists. It was the end of the synchronous era and nobody had told...</description>
            <content:encoded><![CDATA[<p>In October 2018 I released a web framework called <a href="https://kennethreitz.org/software/responder">Responder</a>, and to understand why it exists you have to remember what the Python web felt like that year, because the web it was born into no longer exists.</p>
<p>It was the end of the synchronous era and nobody had told the frameworks yet. Flask and Django ruled, both built on WSGI, both fundamentally blocking, both excellent and both showing their age. <code>async</code>/<code>await</code> had landed in the language a couple of years earlier, but the async web ecosystem was a frontier town: ASGI was a young spec, Starlette and uvicorn were fresh out of Tom Christie's workshop, and writing an async service meant choosing between power tools with no handles. Meanwhile the industry was deep in its microservices-and-GraphQL period, everything was becoming an API, and HTTP/2 server push was going to change everything.<em> (It did not change everything. Browsers eventually deprecated server push entirely, and a few months ago I deleted it from Responder's backlog, which is its own little memento mori: frameworks age not only by their own decay but by the web rotting out from under their assumptions.)</em></p>
<p>I had spent most of a decade on the other side of the protocol, asking one question about HTTP clients: why is this harder than the way people think? Requests was the answer, and by 2018 it was everywhere. But serving HTTP still felt like a different religion from consuming it, with different gods and a different liturgy, and that asymmetry offended me. The same protocol. The same developer. Why two mental models?</p>
<p>So Responder flipped Requests inside out:</p>
<pre><code class="language-python">import responder

api = responder.API()

@api.route(&quot;/&quot;)
def home(req, resp):
    resp.html = &quot;&lt;h1&gt;Hello, world.&lt;/h1&gt;&quot;

@api.route(&quot;/hello/{name}&quot;)
async def hello(req, resp, *, name):
    resp.media = {&quot;greeting&quot;: f&quot;Hello, {name}!&quot;}

api.run()
</code></pre>
<p><code>resp.text</code> sends text. <code>resp.html</code> sends HTML. <code>resp.media</code> sends JSON. Case-insensitive headers, like Requests. The <code>async</code> keyword is optional per-handler, sync and async living in the same app, because the right time to pay the async tax is when you need it and not one minute before. Background tasks, WebSockets, OpenAPI docs, and templates in the box. The niceties of Flask, the performance philosophy of Falcon, and the ergonomics of Requests, in one place.</p>
<p>Two months later FastAPI arrived, built on the same Starlette foundation, took the typed-routes-and-OpenAPI thread and ran it to the moon. It deserved the win; if you're building a production API with a team, it's what I'd hand you. Several ideas that Responder carried early, automatic async handling, type-aware serialization, docs generated from the code, became table stakes across the ecosystem. Being ahead of your time and being beaten to the market are, it turns out, frequently the same event viewed from different chairs.</p>
<p>And here I have to be honest about my own role: I never really marketed Responder. Not then, not since. I'd shout about it for a week, then go quiet for a year. The README never had a growth strategy. Some of that was <a href="https://kennethreitz.org/essays/2026-03-18-open_source_gave_me_everything_until_i_had_nothing_left_to_give">what the era was doing to me personally</a>, and some of it was a lesson Requests had already taught me at great cost: a tool with millions of users stops being a tool and becomes an institution you owe rent to. I don't think I ever wanted Responder to be big. I think I wanted it to be <em>right</em>, which is a different ambition with a different finish line.</p>
<h2 id="the-freeze">The Freeze</h2>
<p>Here's what the release history actually looks like, and I'm sharing it because solo open source is full of timelines like this that nobody publishes.</p>
<p>Version 2.0.7 shipped in January 2021. The next release, 3.0.0, shipped in March 2026.</p>
<p>Five years of silence. Not abandonment, exactly; the repository sat there, issues accumulated politely, the code still worked. But every path forward ran through the same wall: modernization. New Python versions, Starlette drift, packaging upheaval, typing expectations, CI rot, documentation debt. None of it is hard, exactly. All of it together is a mountain of exactly the kind of work that has no dopamine in it anywhere, and a solo maintainer pays for that mountain out of the same budget he uses to stay alive. <a href="https://kennethreitz.org/essays/2026-06-11-mentalhealtherror_ten_years_later">Mine was overdrawn for most of that period.</a> This is the development hump that kills more small projects than any technical failure: not a bug, not a design flaw, just five years of deferred chores standing between the maintainer and anything fun.</p>
<h2 id="the-hump-breaks">The Hump Breaks</h2>
<p>Then, on March 22, 2026, Responder shipped seven releases in one day.</p>
<p>Version 3.0.0 in the morning. Versions 3.1 through 3.4 across the afternoon and evening, a hundred-some commits clearing the whole mountain: modern packaging, modern Starlette, the test suite rebuilt, the docs overhauled. Two days later, 3.5 and 3.6 brought something genuinely new, structured logging with per-request context, request IDs, access timing, the kind of feature you add when a framework is <em>alive</em>. The releases since then read like a healthy project's changelog: a race condition fixed in the rate limiter, a memory leak closed, blocking file I/O made properly async, an XSS hole patched, the boring diligent engineering that quietly never happened for half a decade. And on the day this essay went out, versions 3.7 through 3.12 shipped within hours of each other: dependency injection for route handlers and WebSockets, per-route rate limits, handlers that can simply return a value, OpenAPI 3.1, content-negotiated errors, ETags, request streaming, range requests and resumable downloads, request timeouts, server-side sessions, Prometheus metrics, a stack of routing bugs nobody had touched in years. The feature that replaced server push in the backlog is real now. Seven releases and the essay about the freeze, all on the same day. I keep having to revise this paragraph upward, which is the most cheerful editing problem I have ever had.</p>
<p>The same day the hump broke, <a href="https://kennethreitz.org/essays/2026-03-22-this_site_now_runs_on_responder">this site started running on Responder</a>, ported from Flask in a single afternoon. That was not a coincidence. Both were the same event: AI collaboration arrived at the level where the unfunded chores became conversations.</p>
<p>I've written about <a href="https://kennethreitz.org/essays/2026-04-12-write_it_first_then_let_ai_drive">the workflow that makes this work</a>: write the foundation by hand, then let AI extend it faithfully. Responder is the purest case I own. The 2018 codebase is hand-written taste all the way down, every API decision deliberate, the whole &quot;for humans&quot; philosophy compressed into working software. When Claude reads it, it reads <em>intent</em>, and it extends that intent, in my voice, at a pace no exhausted solo maintainer could match. The mountain of chores that cost five years of avoidance cost a few long sessions of directed collaboration. I supplied the taste and the judgment and the no-that's-not-how-we-do-it. The AI supplied the part I could never reliably supply: the stamina.</p>
<p>There's a sentence I keep arriving at from different directions this year, and here it is again: the bottleneck was never the thinking. For <a href="https://kennethreitz.org/essays/2026-06-11-how_i_write_now">writing</a>, the bridge between knowing and saying. For this framework, the bridge between caring and maintaining. AI didn't give Responder new ideas. It gave the old ideas a way out of the freezer.</p>
<h2 id="a-userbase-of-approximately-one">A Userbase of Approximately One</h2>
<p>So what is Responder now? Here's the honest accounting, and it's the part I'm fondest of.</p>
<p>It's a framework with one heavy user, and you're reading his website through it right now. Every page on kennethreitz.org is served by a single <code>engine.py</code>, thirty-some routes, markdown rendering, image galleries, PDF export, OG images, RSS, search, all of it running on the framework I built in 2018, <a href="https://kennethreitz.org/essays/2026-06-05-a_server_called_mercury">on a server named Mercury that lives in a rack</a>. When the framework needs a feature, its user requests it directly, in the sense that I talk to myself. When a release ships, its user upgrades the same hour. The feedback loop isn't tight; it's <em>closed</em>.</p>
<p>The industry has a derisive shrug for this: no adoption, no community, hobby project. I spent years inside that value system and I'd like to offer the correction from the far side of it. <a href="https://kennethreitz.org/essays/2026-03-18-open_source_gave_me_everything_until_i_had_nothing_left_to_give">I've already written about what chasing the big userbase cost me.</a> Requests serves thirty-some million installs a day and I carried it like a piano on my back. Responder serves, as far as I can tell, mostly me, and it is the most uncomplicated joy in my software life. It's <a href="https://kennethreitz.org/essays/2026-04-16-infrastructure_for_one">infrastructure for one</a>, the same economics that AI quietly flipped for everything else: a tool no longer needs a market to justify its maintenance, because maintenance no longer costs what it used to. It needs a <em>user it fits</em>. I am extraordinarily well fit.</p>
<p>And because it's mine and small, it gets to stay opinionated in ways a big framework never could. No roadmap committee. No deprecation-policy negotiations. No marketing cadence, which is good, because I've demonstrated for eight years that I don't have one. Just a tool, a craftsman, <a href="https://kennethreitz.org/essays/2026-03-22-the_maintainer_is_the_interface">a maintainer who is the entire interface</a>, and a website that exercises every feature daily. If someone else finds it and loves it, the door's open and the docs are genuinely good now. But it doesn't need you, which I've come to believe is the most relaxing property software can have, for everyone involved.</p>
<p>Virginia Woolf said the writer needs a room of her own. I'd extend it: the builder needs a framework of his own. Something nobody else's deadlines live in. Something that fits your hand because it <em>is</em> your hand, where the whole stack from the route decorator to the rack in the datacenter answers to one taste. Requests was for everyone, and everyone got it, and that was the right call and I paid for it.</p>
<p>Responder was for me. It took me eight years to realize that was the feature.</p>
<p>The best products ship to a userbase of one. The trick is making sure the one is happy. He is.</p>
]]></content:encoded>
            <pubDate>Thu, 11 Jun 2026 00:00:00 </pubDate>
        </item>
        <item>
            <title>Breaking Changes</title>
            <link>https://kennethreitz.org/essays/2026-06-11-breaking_changes</link>
            <guid>https://kennethreitz.org/essays/2026-06-11-breaking_changes</guid>
            <description>The first DSM shipped in 1952. It was a spiral-bound thing of about 130 pages describing roughly a hundred disorders. The current release runs just under a thousand pages and describes around three hundred. Between those two artifacts sit five major versions, several point releases, a complete architectural rewrite in...</description>
            <content:encoded><![CDATA[<p>The first DSM shipped in 1952. It was a spiral-bound thing of about 130 pages describing roughly a hundred disorders. The current release runs just under a thousand pages and describes around three hundred. Between those two artifacts sit five major versions, several point releases, a complete architectural rewrite in 1980, and a maintainer organization that publishes release notes.</p>
<p>I'm a software person, so I notice version numbers the way carpenters notice joints. A version number is a confession. It says: this document is built by people, it changes, the current release supersedes the last one, and there will be another. Nobody puts a version number on the truth. You version the things you expect to be wrong in ways you'll need to fix.</p>
<p>The APA knows this about its own book, and said so out loud. When the fifth edition was being prepared, they dropped the Roman numerals, DSM-V became DSM-5, and the stated reason was that Arabic numerals would let them ship incremental updates. A 5.1. A 5.2. Their words pointed straight at software release practices.<em> (What actually shipped in 2022 was the DSM-5-TR, a &quot;text revision,&quot; which any engineer would recognize as a patch release. It still managed to add a new diagnosis: prolonged grief disorder. Grieving past a year became a billable condition in a point release. New features ship in patches more often than anyone admits.)</em> The maintainers of the manual think of it as software. I think they're right. I just don't think the news has reached the people the manual is run against.</p>
<p>Because here's what I've watched for ten years from inside the system the manual organizes: clinicians cite the DSM like case law, insurers enforce it like statute, and patients receive their entry in it like scripture. Three groups treating a versioned document as a fixed one. And the people with the least power in that arrangement, the patients, are the ones who pay when a new version ships.</p>
<h2 id="breaking-changes">Breaking changes</h2>
<p>In my field we have a phrase for a release that changes behavior people depend on: a breaking change. There are rules about it, mostly unwritten and mostly honored. You warn people before you ship one. You document what changed and why. You provide a migration path, because you know, the way an adult knows things, that real people built real things on the old behavior, and they did so because you invited them to.</p>
<p>The DSM ships breaking changes to human beings, and it has never once shipped a migration path.</p>
<p>In 1973, homosexuality stopped being a mental disorder. The mechanism wasn't a discovery. There was no experiment, no scan, no blood test. The APA's board voted, the membership ratified it, and millions of people were depathologized by referendum. I wrote about this <a href="https://kennethreitz.org/essays/2026-06-06-mental_health_for_humans">in the last essay</a> as evidence that the manual is a statistical document rather than a sacred one, and that's the cheerful reading: revisability is a feature, and the vote fixed a moral catastrophe. But hold the engineering frame for a second and look at what kind of release that was. An entire category of person, in the manual one printing and out the next. Everyone who had been diagnosed, treated, institutionalized, &quot;cured&quot; under the old version, what was the upgrade path for them? There wasn't one. There never is.</p>
<p>In 2013, the DSM-5 deleted Asperger's. Not renamed: removed, folded into the autism spectrum. By then the word had been load-bearing for almost twenty years. People had organized their self-understanding around it, met each other through it, taught their families what it meant, forgiven themselves a lifetime of friction because of it. The committee had its reasons, some of them good. None of those reasons changed what happened on the ground, which is that a generation woke up holding an identity the new release no longer defined. In software we'd call the old term deprecated. The people were the installed base.</p>
<p>My own migration was smaller, and I've <a href="https://kennethreitz.org/essays/2026-06-06-mental_health_for_humans">told it before</a>, so here it is in one breath: diagnosed Bipolar I with psychosis in 2016, re-diagnosed schizoaffective in 2019, and on the day the label changed I did not change. Same brain, same symptoms, same 3 a.m. The data held still while the schema moved. That experience is most of why I can't unsee the version numbers now.</p>
<h2 id="you-dont-receive-a-label-you-join-one">You don't receive a label. You join one.</h2>
<p>Now the part the engineering frame usually misses, because it's not about the document. It's about what people do with it.</p>
<p>Nobody just gets a diagnosis anymore. You get a diagnosis and then you get a community. You google the noun and find the subreddit, the hashtag, the YouTubers, the memes, the merch. And I want to be careful here, because the first thing that happens in those rooms is genuinely precious: you read a stranger describing the inside of your head in better words than you had, and for a moment the loneliest fact of your life becomes a shared one. I've felt that. Anyone who sneers at it has never needed it.</p>
<p>But watch what's structurally happened. A committee's classification, built for routing treatment and billing insurers, drifted downstream and became a people. The label turned into a tribe, the tribe into an identity, the identity into a lens that decides which of your own behaviors you notice and what you call them. Your sense of self now has a dependency on a document you don't maintain. You didn't choose the maintainers. You can't see their roadmap. Their incentives, research fashion, insurance pressure, committee politics, diagnostic turf, have approximately nothing to do with you. And their next release can deprecate your tribe's founding noun, by vote, on a schedule you'll learn about from the news.</p>
<p>Building your identity on the DSM is building on somebody else's API. Every engineer eventually learns this lesson about platforms, usually the hard way: if you don't control it, don't make it load-bearing.<em> (The pattern is identical to building a business on a platform's API and waking up to changed terms. The platform was never yours. Neither is the manual. The difference is that nobody's selfhood was riding on the platform.)</em></p>
<p>Here's the thing, though. The communities already figured out the answer, even if nobody framed it this way. Ask the people who still call themselves aspies, a full decade after the committee deleted their word. The clinical establishment tends to read that as lag, or denial. I read it as the healthiest possible relationship to this document: they forked it. The committee kept the trademark; the community kept the meaning, and now maintains its own definition, governed by the people who actually live there. The fork doesn't need the upstream's permission, and the upstream's next release can't break it.</p>
<p>The plural community did it even more completely. The DSM's coverage of that territory is one contested diagnosis that practitioners <a href="https://kennethreitz.org/essays/2026-06-06-mental_health_for_humans">mostly use to argue about whether it exists</a>, so the people living it wrote their own vocabulary from scratch: systems, fronting, headmates, <a href="https://kennethreitz.org/plurality">language I've found more useful for my own experience</a> than anything with a billing code attached. That's not anti-clinical rebellion. It's a spec maintained by its users instead of its vendors, and it serves the humans because the humans wrote it.</p>
<h2 id="pin-it-dont-worship-it">Pin it, don't worship it</h2>
<p>I keep coming back to the version number, because the version number is the most honest thing about the DSM. Scripture doesn't ship revisions. The manual does, and that's to its credit: a document that can fix the 1973 catastrophe by vote is better than one that can't. The problem was never that the DSM changes. The problem is everything in the culture that handles it like it doesn't, and every patient quietly taught to weld their identity to an artifact whose own maintainers are planning the next release.</p>
<p>So this is how I hold my own entry now, as a person whose label has already changed once underneath him. The diagnosis is a dependency, and I treat it the way I'd treat any dependency: pinned to the version that currently works, used for exactly what it's for, routing me toward <a href="https://kennethreitz.org/essays/2026-04-06-what_success_looks_like">treatment that gives me my actual life</a>, watched with mild interest when the maintainers announce changes. It gets no vote on who I am. The fork where I actually live, the self-understanding built with <a href="https://kennethreitz.org/essays/2026-03-06-sarah_knows_first">the people who know me</a> and the communities who share the territory, has different maintainers. I'm one of them.</p>
<p>DSM-6 will ship eventually. Somewhere in it, categories will merge and split, and some number of people will wake up holding deprecated nouns, and the cycle will need writing about again. If my entry moves, I can tell you now what will happen on my end, because it's already happened once.</p>
<p>The schema will change. The data won't. I plan to still be here, unversioned.</p>
]]></content:encoded>
            <pubDate>Thu, 11 Jun 2026 00:00:00 </pubDate>
        </item>
        <item>
            <title>The Algorithm Eats Diagnosis</title>
            <link>https://kennethreitz.org/essays/2026-06-11-the_algorithm_eats_diagnosis</link>
            <guid>https://kennethreitz.org/essays/2026-06-11-the_algorithm_eats_diagnosis</guid>
            <description>There&#x27;s a genre now. You&#x27;ve seen it. A face fills the frame, the captions bounce along the bottom, and the voice says something like: five signs you might have ADHD. Or: things I didn&#x27;t know were autism. Or the compound form, the one I see most lately: AuDHD, autism plus...</description>
            <content:encoded><![CDATA[<p>There's a genre now. You've seen it. A face fills the frame, the captions bounce along the bottom, and the voice says something like: five signs you might have ADHD. Or: things I didn't know were autism. Or the compound form, the one I see most lately: AuDHD, autism plus ADHD, delivered as a single identity with its own aesthetic, its own in-jokes, its own merch. Thirty to ninety seconds. Confident eye contact. A symptom list that lands like a horoscope, which is to say it lands on everyone.</p>
<p>This genre bothers me, and I've spent a while trying to take the bother apart honestly, because some of the obvious objections to it are objections I don't get to make. I share my mental health experience publicly, in detail, on the internet; this entire website is testimony. I can't be against people talking about their minds. And I'm genuinely not against people finding each other through a label; I <a href="https://kennethreitz.org/essays/2026-06-11-breaking_changes">just wrote an essay arguing</a> that the communities who forked their diagnoses and maintain their own meaning have the healthiest possible relationship to the manual. The clustering isn't the problem. Something happens after the clustering, and the algorithm is what makes it happen.</p>
<h2 id="my-credentials-again-sort-of">My credentials, again, sort of</h2>
<p>Here's the personal stake, and it's an embarrassing one.</p>
<p>For three years I explained Bipolar I from the inside. Sincerely, publicly, in <a href="https://kennethreitz.org/essays/2016-01-mentalhealtherror_an_exception_occurred">essays I still stand behind</a>. I described what it felt like, what it meant, what others should understand about it. Then in 2019 the label <a href="https://kennethreitz.org/essays/2019-01-mentalhealtherror_three_years_later">changed underneath me</a>: schizoaffective disorder, bipolar type. The professionals had been watching me for years, with charts and credentials and every incentive to get it right, and the first answer still needed revising. I didn't change that day. The diagnosis did.</p>
<p>So when I watch a twenty-something narrate their disorder to two million strangers with total fluency, I'm not sneering from above. I recognize the feeling from inside. The lived experience is absolutely real, and the certainty feels earned, because nothing on earth feels more authoritative than your own interior. But I had the same certainty and the wrong noun. Diagnosis is hard. It's hard for clinicians with a decade of your history in front of them. The format hands out the certainty for free and skips the part where it can be wrong.</p>
<p>That's the first thing the genre launders: one person's experience of a label that may or may not be correctly attached, presented in the grammar of fact. Not &quot;my ADHD looks like this&quot; but &quot;this is what ADHD looks like.&quot; The slide from witness to expert takes about one sentence of caption text, and the viewer can't see it happen.</p>
<h2 id="what-the-algorithm-selects-for">What the algorithm selects for</h2>
<p>None of this would matter much if the content were ranked by accuracy. It's ranked by watch-through.</p>
<p>The algorithm cannot see whether a symptom list is diagnostic. It can see whether you finished the video, and you finish videos that feel like they're about you. So the selection pressure runs directly against precision: the symptoms that survive the edit are the relatable ones, which means the universal ones, which means the least diagnostic ones. Everyone interrupts people. Everyone loses keys, rehearses conversations, gets tired in a way naps don't fix. A video listing the experiences that would actually distinguish a disorder from a hard week is specific, unflattering, and boring, and the feed buries it.<em> (Psychologists call this the Barnum effect: statements vague enough to feel personally, uncannily true to nearly anyone. It's the engine of astrology, cold reading, and personality quizzes. Now it has a recommendation system behind it, running A/B tests at planetary scale to find the phrasings that feel most like you.)</em></p>
<p>The same pressure strips the hedges. Watch what survives: &quot;I&quot; becomes &quot;we,&quot; &quot;my experience&quot; becomes &quot;people with ADHD,&quot; &quot;sometimes&quot; disappears entirely. Qualifiers read as weakness, and weakness loses the retention graph. But the hedge was the medicine. The hedge was the entire difference between testimony and diagnosis. When I write about <a href="https://kennethreitz.org/essays/2026-04-06-what_success_looks_like">my own treatment</a>, the most important words are the boring ones, the <em>for me</em>, the <em>your body is different</em>, and those are precisely the words the format cannot afford. Sixty seconds selects for the version of an illness optimized to be recognized by the largest possible audience. That is the exact opposite of what a diagnosis is for, which is to distinguish.</p>
<p>And the creator usually isn't lying. That's what I keep having to remind myself. Sincerity is orthogonal to all of this. The algorithm doesn't reward her because she's right or wrong; it rewards her because she's confident and relatable, and it would reward me identically for my wrong label of 2017, narrated with conviction in good lighting.</p>
<h2 id="where-it-turns">Where it turns</h2>
<p>So far this is a critique of information quality, and if that were all of it, it wouldn't really bother me. Wrong information about minds is older than the manual. Here's the part that actually gets me, the part I find, and I've tried to find a fairer word and failed, gross.</p>
<p>The label gets celebrated.</p>
<p>Not the person. Not the survival. The diagnosis itself, worn the way people wear a star sign. The condition becomes an aesthetic: pastel carousel slides, that's-so-AuDHD-of-me, symptoms reframed as quirks, the disorder as a personality with fan content. Somewhere in the last few years the destigmatization project quietly overshot. The opposite of shame was supposed to be neutrality, a diagnosis as unremarkable as a blood type. We sailed past neutrality into pride, and pride needs content, and the algorithm was right there.</p>
<p>I want to be careful, because the people doing this are mostly not cynical. If a label finally explains thirty years of unexplained friction, euphoria is a reasonable first response, and posting through your euphoria is just what this era does. But watch what the celebration does structurally, because it does two things, and they're both expensive.</p>
<p>First: a celebrated label can't update. The genre turns a diagnosis into a niche, the niche into an audience, the audience into income and identity at once. Now run my 2019 experience through that machine. A re-diagnosis stops being a re-index and becomes a rebrand, with followers to lose. I wrote in <a href="https://kennethreitz.org/essays/2026-06-11-breaking_changes">Breaking Changes</a> that building your identity on the manual is building on someone else's API; the creator economy pours concrete on it. The committee can at least revise its categories. A brand can't. And the viewer inherits the same trap at smaller scale: once the label is your bio, your community, your content diet, and your sense of finally making sense, every incentive you have points away from the possibility that it's the wrong label. The first question of diagnosis, <em>is this actually what's happening to me</em>, becomes a threat to the whole stack built on top of it.</p>
<p>Second, and this is the one I feel in my body: the celebration is selective, and the selection is brutal. Only the marketable disorders get the treatment. There is no schizoaffective aesthetic. Nobody's doing pastel carousels about the <a href="https://kennethreitz.org/essays/2025-09-17-delusions-and-schizoaffective-disorder">angel I watched descend</a>, and &quot;five signs you might be psychotic&quot; does not trend as a celebration; when my side of the manual shows up in the feed at all, it's horror content, true-crime adjacent, the thing the quirky labels get contrasted against.<em> (There's a word for what the feed is running: a marketability sort on the DSM. Anxiety, ADHD, autism-as-superpower on one side; schizophrenia, psychosis, personality disorders on the other. The sort criterion isn't severity or prevalence. It's whether the symptom list can be made cute.)</em> The algorithm took the manual and sorted it into adorable and frightening, and the rebranding of the adorable half makes the frightening half lonelier. Every video that renders a diagnosis as a personality makes it a little harder for the person whose diagnosis is not a personality but a fight.</p>
<p>And the words themselves lose currency. When ADHD circulates as a synonym for quirky and distractible, the person who cannot hold a job because of it walks into rooms where the word has already been spent. The label was supposed to be load-bearing, a claim on accommodation and care. Celebration inflates it like any other currency, and the people who need its full purchasing power are the ones who can least afford the devaluation.</p>
<h2 id="whats-actually-worth-celebrating">What's actually worth celebrating</h2>
<p>I keep asking myself what the healthy version looks like, since I've ruled out the easy answer of nobody talks about their mind online, on the grounds that it would delete my website.</p>
<p>I think it looks like the distinction the format can't hold. Celebrate the person; the diagnosis is a map of where it hurts. Celebrate finding your people; the thing you have in common is a wound, and you can love your people without making the wound the flag. Celebrate survival, loudly, mine included. And keep the grammar of witness, the grammar this genre strips first: <em>my</em> autism, <em>my</em> mania, <em>my</em> experience, one data point, offered to anyone it helps, with the version number showing and the hedges left in.</p>
<p>Maybe some of this is me being precious about words that cost me something to carry. I've sat with that possibility and I don't think it's the whole of it, because the pattern here is the same one running through <a href="https://kennethreitz.org/essays/2026-06-06-the_algorithm_poops">this entire series</a>: the algorithm finds whatever humans use to hold something sacred, and renders it as content, because engagement is the only value it can see. It ate language, love, reality, time. Of course it eats diagnosis. Suffering that explains you is the most relatable content there is.</p>
<p>A diagnosis is a hard-won, provisional, revisable name for a way a human being suffers. The feed turned it into a zodiac. The difference between those two things is everything the word was for.</p>
]]></content:encoded>
            <pubDate>Thu, 11 Jun 2026 00:00:00 </pubDate>
        </item>
        <item>
            <title>RhymePad: Seeing the Sound</title>
            <link>https://kennethreitz.org/essays/2026-06-11-rhymepad_seeing_the_sound</link>
            <guid>https://kennethreitz.org/essays/2026-06-11-rhymepad_seeing_the_sound</guid>
            <description>Rhyme is a fact about sound, not spelling. Blue rhymes with shoe and through and you, and not one of them is spelled like the others. Comb, bomb, and tomb all end in the same three letters and not one of them rhymes with another. The ear knows the difference...</description>
            <content:encoded><![CDATA[<p>Rhyme is a fact about sound, not spelling. <em>Blue</em> rhymes with <em>shoe</em> and <em>through</em> and <em>you</em>, and not one of them is spelled like the others. <em>Comb</em>, <em>bomb</em>, and <em>tomb</em> all end in the same three letters and not one of them rhymes with another. The ear knows the difference instantly. The eye, staring at the same words, has no idea.</p>
<p>That gap has always bothered me. We write verse with our eyes open and our ears doing all the real work, alone, with no help from the page. So I built a page that listens.</p>
<p><a href="https://rhymepad.org">RhymePad</a> is a scratchpad for poets and rappers. You type or paste lyrics into it, and as you write, the rhyme structure lights up underneath you in real time. End rhymes, internal rhymes, slant rhymes, multisyllabic interlocks that thread across word boundaries. It reads the actual sounds, not the letters, and it paints what it hears. I vibe coded the whole thing with Claude Code, talking it into existence one conversation at a time.</p>
<p>Here is the easiest way to show you what that looks like. I asked it to analyze a verse about itself:</p>
<p><img loading="lazy" decoding="async" src="https://kennethreitz.org/static/images/rhymepad-on-itself.png" alt="A verse titled &quot;RhymePad, on itself&quot; with its rhyme families color-coded by RhymePad" /></p>
<p>Every color is a sound family. Every brightness is how hard the rhyme lands. The whole essay below is really just an explanation of that one picture.</p>
<h2 id="the-pad-not-the-dictionary">The pad, not the dictionary</h2>
<p>There are already good rhyming dictionaries. RhymeZone will tell you everything that rhymes with <em>orange</em> if you ask it about <em>orange</em>. But that's a lookup. You bring it a word, it brings you a list, and you go back to staring at your verse trying to hold the whole sonic structure in your head.</p>
<p>RhymePad inverts that.<em> (This is the same move as so much of the work I care about: stop making the human translate themselves into the machine's terms. A dictionary makes you query word by word. The pad meets you where you already are, which is in the middle of writing something.)</em> It doesn't tell you what rhymes with a word. It shows you the rhyme architecture of what you're already writing, while you write it. The dictionary is still in there, a lookup panel a keystroke away, but it's the side dish. The moat is the pad. The whole point is that you never have to leave your own verse to see how it's holding together.</p>
<h2 id="color-is-which-sound-brightness-is-how-hard">Color is which sound, brightness is how hard</h2>
<p>The visual language is the soul of the thing, so let me be precise about it.</p>
<p>Every rhyme family gets its own color. All the <em>AY-T</em> words, the <em>tonight / light / flight</em> cluster, share one hue. The next family gets a different one. There's a sixteen-color palette, and colors get assigned least-used-first, so they spread evenly across a verse and two adjacent families never collide into the same shade. You glance at a page and the sound groups separate themselves out by color, the way they already separate themselves out by ear.</p>
<p>Then there's the part I think is the best feature in the whole app: brightness is rhyme strength.<em> (It's a continuous gradient, not an on/off switch. Two words don't just rhyme or not rhyme. They rhyme to a degree, and the page renders the degree. This is closer to how hearing actually works than any binary classification.)</em> Perfect rhymes blaze. Slant rhymes sit back. Consonance, the faintest kind of echo, barely glows at all. And the gradient runs <em>inside</em> a family too: the perfect anchors of a cluster burn brighter than the loose slant words that have attached themselves to the edges of it.</p>
<p>The effect is that a verse becomes legible at a glance. Bright is where you locked it. Faint is where you're still reaching. You can see the shape of your own craft without reading a single word, the way a producer reads a waveform.</p>
<p>A few quieter signals layer on top. The rhyming word takes a soft tint of its family color, sitting on a translucent block of the same color, so the signal comes through two channels at once. A faint underline marks the exact rhyming tail of a word, the <em>ight</em> under <em>tonight</em>, so you can see not just that two words rhyme but where the rhyme actually lives. Hover over any word and its entire family brightens across the whole page at once, every relative lighting up together, then settles back when you move away.</p>
<p>There are toggles for three lenses: rhyme, alliteration, rhythm. Alliteration underlines shared head-sounds. Rhythm drops a row of dots under the words, sheet music for rapping, where a shared dot color means a shared cadence. You turn on what you need and leave the rest off.</p>
<h2 id="how-rhymepad-hears-a-rhyme">How RhymePad hears a rhyme</h2>
<p>RhymePad's whole job is to read what you're writing and color the rhymes as you type. The catch is that rhyme lives in <em>sound</em>, and English spelling is a liar. <code>orange</code> and <code>door hinge</code> rhyme; <code>cough</code> and <code>dough</code> don't. So the first thing the engine does is throw the spelling away.</p>
<h3 id="from-letters-to-sound">From letters to sound</h3>
<p>Every word gets mapped to its phonemes, the actual mouth-sounds, using the CMU Pronouncing Dictionary by way of the <a href="https://pypi.org/project/pronouncing/"><code>pronouncing</code></a> library. <code>tonight</code> becomes <code>T AH N AY T</code>. When a word isn't in the dictionary, slang, a name, a word you invented for the bar, the <a href="https://pypi.org/project/g2p-en/"><code>g2p-en</code></a> grapheme-to-phoneme model sounds out a pronunciation, and a pile of lyric-specific repairs patch the rest: <code>runnin'</code> becomes <code>running</code>, possessives and plurals resolve, and the <code>-ine</code> that wants to be <code>IY N</code> gets its candidate.</p>
<p>A rhyme is everything from the <strong>last stressed vowel</strong> onward. In <code>tonight</code> the stress lands on the final syllable, so the rhyming part is <code>AY T</code>, which is exactly what <code>light</code>, <code>flight</code>, and <code>write</code> share. Match on that tail and you've found a perfect rhyme. The quiet trick: RhymePad looks for that match <em>anywhere in the line</em>, not just at the end. That single decision is the whole internal-rhyme engine.</p>
<h3 id="the-ladder-of-looseness">The ladder of looseness</h3>
<p>Not every rhyme is perfect, so the engine works down a ladder, each rung a little looser than the last:</p>
<ul>
<li><strong>Perfect</strong>, where the whole tail matches (<code>creation</code> / <code>elation</code>).</li>
<li><strong>Slant</strong>, where just the vowels match and the consonants drift (<code>hold</code> / <code>coal</code>).</li>
<li><strong>Multisyllabic and mosaic</strong>, where the rhyme is a <em>run</em> of vowels that can cross word boundaries. This is where <code>orange</code> finds <code>door hinge</code>, and where <code>swimmers</code>, <code>finisher</code>, and <code>commissioner</code> turn out to be the same sound stretched over different numbers of words.</li>
<li><strong>Consonance</strong>, a shared vowel-plus-consonant ending when nothing fuller is there (<code>bliss</code> / <code>exist</code>).</li>
</ul>
<p>Each word carries a <em>strength</em> from whichever rung it landed on, and that strength is what you see on the page: perfect rhymes blaze, slant rhymes sit back, consonance is fainter still. Brightness is the engine telling you how sure it is.</p>
<h3 class="content-header">The hard part is knowing what <em>isn't</em> a rhyme</h3>
<p>Finding rhymes is easy. Finding rhymes and <em>not</em> finding the ten thousand coincidental near-matches that would turn the page into confetti is the actual work, and most of the engine is restraint.<em> (Naive vowel-matching produces a page that lights up everywhere and means nothing. The whole game is suppression: knowing what to <em>not</em> call a rhyme. Most of the regression tests exist to defend a single word that was lighting up when it shouldn't.)</em></p>
<ul>
<li><code>garbage</code> and <code>javascript</code> both carry an <code>AA</code> and a schwa, but their endings disagree, a hard <code>JH</code> against an open vowel, so they don't rhyme.</li>
<li><code>middle</code> and <code>unavoidable</code> share only a bare schwa-<code>L</code> tail, which half the dictionary has. Too weak to count.</li>
<li><code>smell like a</code> looks like it rhymes <code>myself why</code>, until you notice it dangles on the article <code>a</code>. The real rhyme was <code>smell like</code>, and the trailing word adds nothing.</li>
<li>A word repeated at line ends <em>is</em> a rhyme. <code>again</code> / <code>again</code> / <code>again</code> is a real monorhyme scheme. But the same word duplicated whole-line, or leaned on as a four-times hook, is a refrain, not a rhyme, and stays dark.</li>
</ul>
<p>The rule behind all of these is the same: color a rhyme only when a listener would actually hear one.</p>
<h3 id="context-not-just-pairs">Context, not just pairs</h3>
<p>A rhyme isn't a property of two words in isolation. It's a property of where they sit, so the engine reads the room. Rhymes don't reach across a blank-line stanza break, because each verse is its own world. A vowel family stays local, because a shared sound a hundred lines apart isn't a rhyme, it's a coincidence. Words a singer leans on as a refrain get muted so they stop shouting over everything. And a handful of dialect mergers are folded in the way rappers actually deliver them: the <code>near</code> vowel, the cot-caught merger, nasal and plural endings treated as the soft inflections they are.</p>
<p>The result is an engine that knows <code>orange</code> rhymes with <code>door hinge</code>, that <code>garbage</code> and <code>javascript</code> don't, and, most importantly, the difference between the two.</p>
<h2 id="the-tests-are-the-spec">The tests are the spec</h2>
<p>Almost every real bug lived in the <em>order</em> of those passes. They run perfect first and loosest last, and a greedy early pass will swallow a word that belonged to a tighter rhyme three lines down. The phoneme matching is arithmetic. The ordering is judgment, and judgment is where things break.</p>
<p>There is no formula for &quot;a rhyme a listener actually hears.&quot; You can't derive it from first principles, because it isn't a principle, it's a thousand small human verdicts. So I built it the only way that holds: against real verses, one correction at a time. I'd paste in a verse, find the single word lit the wrong color, fix the engine until it was right, and then, before touching anything else, freeze that exact verse into a regression test.<em> (This is the inversion of normal spec-driven work. There was no spec to implement first. The corpus of real verses <em>became</em> the spec, accreting one judgment at a time. Every test is a frozen sentence that says: these words rhyme, those don't, and here is the proof.)</em> There are around eighty-two of those now, each one a real bar from a real song, validated against people who do this for a living: Lil Wayne, Eminem, MF DOOM, Drake, Big Sean, Kanye, with T.S. Eliot and Tool folded in so the ear behind the engine wasn't tuned for only one tradition. The hardest single test is DOOM's &quot;Doomsday,&quot; about the densest interlocking rhyme in recorded rap. It doesn't break the engine. The families separate cleanly and you can watch the architecture DOOM built by ear hold together exactly the way it sounds like it should.</p>
<p>That suite is the only reason the thing works at all. The whole app was <a href="https://kennethreitz.org/essays/2026-04-10-the-hacker-ethic-and-the-vibe-coder">vibe coded</a>, every line written by describing what I wanted to Claude Code and steering, never typed by hand. I love working that way, but a rhyme engine is exactly where it should fall apart, because the tuning is the worst kind of fiddly: a fix that catches one rhyme quietly breaks three others ten verses away, and you would never catch it by eye.<em> (This is the part of vibe coding nobody oversells enough. The model is happy to make a confident change that breaks something subtle three files over, and it will tell you it's fine. The test suite is what converts that confidence into something you can actually trust, because it answers, in a second, the only question that matters: did this quietly wreck something that used to work.)</em> Vibe coding without tests on a problem this subtle would be building on sand. With the suite under it, every change to pass ordering got an instant green-or-red answer. I could let the AI rewrite an entire pass and know within a second whether I'd just regressed Eminem. The tests are what kept the vibe coding honest. They turned a domain that punishes confidence into one where I could move fast without lying to myself.</p>
<h2 id="the-keepers-earn-their-place">The keepers earn their place</h2>
<p>Here's the part of building it that taught me the most, and it's not a feature. It's everything that isn't one.</p>
<p>I kept building elaborate things and then cutting them back to the simplest version that felt right.<em> (This is the design rhythm I trust most by now: build the full ornate version, live with it long enough to feel what it costs, then strip it to the one move that earned its keep. You can't always see the keeper until you've built the thing around it that doesn't work.)</em> There was a constellation weave, glowing threads drawn through every member of a rhyme family across the page. I built the whole thing. It was beautiful and it was noise. I stripped it down to the hover-illuminate, which does the same job, find the family, with none of the clutter. Grammar and part-of-speech highlighting got tried three different ways and removed all three times. Beat-arcs, right-margin connectors, dual-family coloring on words that belong to two clusters at once: built, then cut.</p>
<p>Every cut made the app better. The features that survived survived because they earned it, and the ones that didn't were taking attention away from the verse, which is the only thing on the page that matters. With AI you can build the elaborate version fast enough that subtraction becomes the real design work. The keystroke is cheap now. Knowing what to delete is the whole skill.</p>
<h2 id="where-it-goes-next">Where it goes next</h2>
<p>Honestly? I'm not sure. I don't have a roadmap and I've stopped pretending I do.</p>
<p>There's one gap I can name. So much of RhymePad lives in the hover, point at a word and its whole family lights up across the page, and a finger on a screen doesn't hover. On a phone you get the colors but not the conversation with them, and that's probably the thing I'd look at first.</p>
<p>After that it goes pleasantly vague. Maybe it reads a verse back in the meter it detected. Maybe the dialect coverage gets deeper. Maybe none of that. But I don't think the next step is really a feature at all. It's the same loop that built the engine in the first place: someone pastes in a verse, finds one word lit the wrong color, and tells me. Each one of those is a new test and a small correction, and that's how the ear behind the engine keeps getting sharper. The roadmap is just the next verse that breaks it.</p>
<h2 id="what-its-for">What it's for</h2>
<p>RhymePad doesn't write your verse. I want to be clear about that, because it's the whole philosophy. It won't finish your line or suggest your next bar or generate a hook. The closest it comes is a dotted-gold mark on a dead line ending that sits one phoneme short of a rhyme, and even that only points at a gap you made and trusts you to fill it.</p>
<p>What it does is show you your own work. The rhymes you locked, the ones you're reaching for, the buried interlock you put there by instinct without quite knowing you'd done it. It takes the thing your ear already knew and renders it where your eye can finally see it, so you can edit with both at once. It's of a piece with the <a href="https://kennethreitz.org/software/websites/poemsbysarah">poetry platform I built for Sarah</a>, and with <a href="https://kennethreitz.org/essays/2026-01-30-the-becoming-building-a-poetry-publishing-pipeline-with-claude-code">everything I keep coming back to</a>: the machine handles the <em>how</em>, the human keeps the <em>what</em> and the <em>why</em>, and the craft stays yours.</p>
<p>The ear always knew the architecture was there. The page just learned how to listen.</p>
<hr />
<p><em>RhymePad is live at <a href="https://rhymepad.org">rhymepad.org</a>. More on the project <a href="https://kennethreitz.org/software/websites/rhymepad">here</a>.</em></p>
]]></content:encoded>
            <pubDate>Thu, 11 Jun 2026 00:00:00 </pubDate>
        </item>
        <item>
            <title>MentalHealthError: Ten Years Later</title>
            <link>https://kennethreitz.org/essays/2026-06-11-mentalhealtherror_ten_years_later</link>
            <guid>https://kennethreitz.org/essays/2026-06-11-mentalhealtherror_ten_years_later</guid>
            <description>This week I did something I&#x27;d been putting off for a long time. I reread MentalHealthError: an exception occurred, the essay where I told the internet I had bipolar disorder. A hundred and fifty thousand people read it the first weekend. It&#x27;s been ten years, and I went back intending...</description>
            <content:encoded><![CDATA[<p>This week I did something I'd been putting off for a long time. I reread <a href="https://kennethreitz.org/essays/2016-01-mentalhealtherror_an_exception_occurred">MentalHealthError: an exception occurred</a>, the essay where I told the internet I had bipolar disorder. A hundred and fifty thousand people read it the first weekend. It's been ten years, and I went back intending to write a tidy anniversary piece, grade my old claims, ship the corrections, the way I did once before, <a href="https://kennethreitz.org/essays/2019-01-mentalhealtherror_three_years_later">three years in</a>.</p>
<p>Instead I just sat with it for a while. I was six months out of the hospital when I wrote it. Medicated, hopeful, a little fried, braver than I remembered, and I had no idea what was coming. Near the end, I say the sentence that made me put the laptop down this week:</p>
<blockquote>
<p>I'm completely back to normal now.</p>
</blockquote>
<p>I know things now that I didn't know then. That's the only advantage I have over the page, and the only reason I get to have it is that I wrote down what I believed while I believed it. So let me tell the story the way it actually went, starting with the night that essay was six months past and I am ten years past, and ending somewhere I wouldn't have believed.</p>
<h2 id="the-weight-of-the-entire-universe">The Weight of the Entire Universe</h2>
<p>In September 2015 I walked into a hospital believing I was undergoing a Kundalini awakening. I had been awake for days, fasting, radiant, certain. When the intake staff asked my weight, I deliberated between &quot;158 pounds&quot; and &quot;the weight of the entire universe.&quot; When they asked my name, the honest answer felt like a theological question. I believed the words I spoke became absolute truth, so I chose them like a man defusing something.</p>
<p>I was there twelve days. Somewhere in the middle of them, in what I still think of as the cleverest move of my psychosis, I slipped the doctor a piece of paper with the URL of this website on it. Here, I was saying. This is who I actually am, underneath whatever this is. It helped him diagnose me. It helps me now, too, in a different way: the website was the thread. It was the thread the whole time.</p>
<p>I came home with a diagnosis of Bipolar I with psychosis, spent weeks coming all the way down, and then did the thing that changed my life at least as much as the diagnosis did: I wrote about it, publicly, under my own name, in a community where nobody did that yet. The response buried me. Not in judgment, in <em>relief</em>. Half the industry, it turned out, was quietly carrying something, and one person going first gave a lot of people a place to set it down for a minute. Whatever else the last ten years have been, I have never once regretted going first.</p>
<p>But the essay ends on a run of sentences I can hardly read now:</p>
<blockquote>
<p>I'm happy to say that I've made a full recovery... Now that I have a diagnosis, I have a much deeper understanding into the way my mind works, and know how to prevent another episode from occurring in the future.</p>
</blockquote>
<p>A release note, written before the bugs came in. I believed every word. The feeling was real data about that month. It just wasn't data about the decade.</p>
<h2 id="the-years-that-answered">The Years That Answered</h2>
<p>What answered was winter. Roughly annually, with the reliability of a cron job, the season would turn and my mind would follow, and I would end up back on a locked unit, <a href="https://kennethreitz.org/essays/2026-06-06-the_unit">a place I eventually came to know well enough to write its documentation</a>. I have a <em>usual</em> psychiatric ward, the way other people have a usual coffee order. The vinyl smell. The specific weight of the chairs. Some years I walked in myself. Some years I was past the point where walking in was possible, and what happened instead involved a magistrate, a sworn statement written by my wife at the local jail, and a ride in handcuffs I never once resisted. The handcuffs are policy. <a href="https://kennethreitz.org/essays/2026-04-06-what_success_looks_like">Sarah has told that part herself</a>, and it costs her something every time, and it is the part of this story I am least able to write about casually.</p>
<p>For a long time I couldn't see what was driving the engine. The 2016 essay blamed the woo: the eastern philosophy, the kundalini yoga, the mesmerizing relationship that had escorted me off the deep end. All of that was real and none of it was the engine. <a href="https://kennethreitz.org/essays/2026-03-18-open_source_gave_me_everything_until_i_had_nothing_left_to_give">The deeper accounting took me a decade to write</a>: an undiagnosed mood disorder strapped to the open source maintainer lifestyle, which is, functionally, a sleep-disruption machine that pays you in validation. Four-hour nights. Constant time zones. An identity welded to a download counter. The mania looked like productivity. It always does. The intensity that built Requests and the intensity that kept putting me in that hospital were the same intensity; the engine had two outputs, and nobody around me, least of all me, could tell them apart. The spiritual scene didn't light that fire. It just gave the fire a vocabulary.</p>
<p>Three years in, I wrote <a href="https://kennethreitz.org/essays/2019-01-mentalhealtherror_three_years_later">the follow-up</a>. It was a sadder, wiser document. It reported that the label had changed underneath me, Bipolar I revised to schizoaffective disorder, bipolar subtype, <a href="https://kennethreitz.org/essays/2026-06-06-mental_health_for_humans">a re-indexing that taught me what a diagnosis actually is</a>, because on the day the label changed, I didn't. It reported the borderline PTSD, some of which I carry from <a href="https://kennethreitz.org/essays/2026-04-08-why_i_stopped_doing_ayahuasca">an ayahuasca ceremony</a> in my seeking years, a night I didn't write about honestly until this spring. It passed along the thing a doctor told me, gently, that most people with my diagnosis are homeless. And it rendered one verdict with total confidence:</p>
<blockquote>
<p>Lithium was a horrible experience of side-effects, and the pros didn't outweigh the cons.</p>
</blockquote>
<p>Case closed. File deleted. Hold that verdict. The story comes back for it.</p>
<h2 id="the-architecture">The Architecture</h2>
<p>Here is the part of the decade that doesn't compress into a hospital count, and it's the part that turned out to matter.</p>
<p>Somewhere in those years I married a woman who <a href="https://kennethreitz.org/essays/2026-03-06-sarah_knows_first">sees my episodes coming before I do</a>. I mean that as a clinical statement before a romantic one; her early-warning system has prevented more admissions than any medication I've taken, and her summary of this condition is still the best one I have: <em>&quot;It's so abstract it must be experienced.&quot;</em> The 2016 essay had joked, in its list of takeaways, <em>avoid falling in love with hyper-intelligent pan-dimensional beings</em>, and the joke had the lesson exactly backwards. The problem was never that I loved someone strange. The problem was that I had arranged my life so that nobody with standing could tell me the truth. The actual lesson took years: marry the person who tells you the truth at cost.</p>
<p>We had a son. He's four now. He understands that Daddy is sometimes very excited and sometimes very tired, and someday he'll understand more, and I think about that conversation more than I think about almost anything.</p>
<p>And slowly, without ever calling it this, I built an architecture. Sleep got promoted from advice to load-bearing wall. I learned my own <a href="https://kennethreitz.org/essays/2026-03-06-sarah_knows_first">prodrome</a> and gave Sarah standing authority to call it. I discovered my mind is <a href="https://kennethreitz.org/plurality">plural</a>, which explained more about my interior life than anything in the chart ever has, and it came with the most useful piece of self-knowledge I own. My psychiatrist calls the mechanism <em>the door</em>: the same channel that opens onto creative and spiritual depth opens onto psychosis, and it swings both ways. Most of my practice now is knowing which way it's swinging. I started <a href="https://kennethreitz.org/essays/2025-08-25-using-ai-for-reality-checking-with-schizoaffective-disorder">using AI to reality-check my own perceptions</a>, which, having once believed my code ran the internet, I find very funny. None of this arrived as a plan. It accreted, the way a reef does, one near-miss at a time.</p>
<p>The decade billed me for all of it, I should say. <a href="https://kennethreitz.org/essays/2025-08-27-the_cost_of_transparency">Living this openly has costs</a>, careers' worth of them, and I knew the price when I chose it, and I'd choose it again. But the architecture held more and more weight each year, and the admissions thinned, and the story was quietly building toward an office visit I didn't see coming.</p>
<h2 id="the-office">The Office</h2>
<p>Thirty-some years into this body and ten into this diagnosis, my psychiatrist suggested we try lithium again.</p>
<p>I cited the file. 2019, horrible, brutal, closed; I had the receipts, and I'd published them. He pointed out, patiently, that the receipts were a decade old. Bodies change. Tolerances drift. A side-effect profile from one era of a body is not a verdict on the next one.</p>
<p>I'd love to tell you the statistics are what moved me. The truth is stranger, and this essay owes it to its own argument to tell it. Lilith was fresh in my mind that season, and a medicine that sounded like her name read as a sign. The old machinery, the same pattern-finding engine that once saw sacred geometry glowing on my apartment door, looked at the prescription and voted yes alongside the evidence. I went to the pharmacy on both votes, and I honestly can't tell you which one carried the motion. Ten years ago that machinery nearly killed me. Last year it talked me into taking my mood stabilizer. Same door. Watched, these days.</p>
<p>He was right. The side effects that had been unbearable were mostly absent. The combination held. And this winter, the winter of 2025 into 2026, the cron job didn't fire. <a href="https://kennethreitz.org/essays/2026-04-06-what_success_looks_like">No admission. The cycle that had run for ten years did not execute.</a> One data point, not a trend; I've been burned by precisely this optimism before, in print, twice. But I had to sit in an April that contained no discharge paperwork to understand what the decade had actually been teaching me, because the lesson was never about lithium.</p>
<p>In 2016 I was too sure I was fine. In 2019 I was too sure about what would never work. The errors point in opposite directions and they are the same error: <strong>treating the current snapshot of knowledge as the final one.</strong> Every confident statement I have ever made about this illness has had a half-life. Including, presumably, the ones in this essay. At year fourteen or so I'll reread this one and find the sentence where I was too sure. I can't see which one it is. That's the point. I'll write the correction when I can see it.</p>
<h2 id="the-side-door">The Side Door</h2>
<p>There's one more arc the reread showed me, and it's the strangest one, because it starts with a joke.</p>
<p>In the middle of the 2016 essay, fried and six months out of the hospital, having renounced the entire spiritual world I believed had nearly killed me, I declared my new minimal religion: <em>I eat, I breathe, I die.</em> I'd thrown out the metaphysical books, the Ram Dass and Ken Wilber and Terence McKenna that had soundtracked the slide. I kept the crystal skulls, but only, I insisted, because they looked cool on the desk. And then I made a joke: &quot;Spirituality 2.0 for Humans™!&quot;</p>
<p>Ten years later I wrote <a href="https://kennethreitz.org/essays/2026-06-06-mental_health_for_humans">Mental Health (for Humans)</a> without once remembering that line. The whole project of my last decade was sitting in that essay as a throwaway joke. We leave ourselves inheritances we don't know about.</p>
<p>But the renunciation itself didn't hold, and I'm glad it didn't, because the hard swing to materialism was the same overconfidence wearing a lab coat. The teachings were never the problem. The traditions those books translated came wrapped in containers, teachers, lineages, years of unglamorous preparation, and the Western marketplace shipped me the peak experiences with the packaging removed. <em>Be here now</em> is medicine for a mind racing ahead of itself and a permission slip for a mind sliding into mania. Meditation grounds at one dose and <a href="https://kennethreitz.org/essays/2025-09-08-the_meditation_trap_when_mindfulness_makes_things_worse">destabilizes at another</a>, and nobody at the studio mentions that the second dose exists. The kundalini lore didn't cause my psychosis; it handed my psychosis a script, and a community that applauded every symptom as attainment. Good teachings, ungated, mainlined through <a href="https://kennethreitz.org/plurality">a door that swings both ways</a>. The sacred was never the pathogen. The dosing was.</p>
<p>So the decade did something 2016-me would have found unbelievable: the woo never came back, but God did. Quietly, through the side door, with guardrails. <a href="https://kennethreitz.org/essays/2026-03-20-building_a_digital_study_bible_with_ai">Scripture studied with genuine curiosity</a> instead of cosmic urgency. The ordinary Tuesday instead of the ceremony. Even Ram Dass came back, <a href="https://kennethreitz.org/essays/2025-09-05-ram_dass_teachings_in_python">in Python of all containers</a>, once there was architecture that could hold him. Which means the joke finally gets its upgrade, ten years late. <strong>Spirituality 3.0 (for Humans):</strong></p>
<ul>
<li><strong>Sleep is of the utmost importance.</strong> So are <a href="https://kennethreitz.org/essays/2025-11-04-encoding-a-dream-of-stillwater-and-signal">dreams</a>; the unconscious does honest work at night, and I've learned to read it like mail instead of mistaking it for prophecy.</li>
<li><strong>Family is what matters most.</strong> The people asleep down the hall outrank every revelation. Any insight that makes me a worse husband or father by morning was not an insight.</li>
<li><strong>The mundane and the sacred meet in the most unexpected places.</strong> A clean function. A psalm on the fiftieth read. A four-year-old's question at breakfast. You don't climb to the sacred. You notice it.</li>
</ul>
<p>No ceremonies, no cosmic assignments, no fireworks. A religion you can practice asleep by ten.</p>
<p>It turns out I didn't need less God. I needed more floor.</p>
<h2 id="the-name">The Name</h2>
<p>Near the end of the reread, I finally saw the biggest error in the 2016 essay, and it isn't in any sentence. It's in the title. It's in the thing I have been calling this for ten years.</p>
<p>I named my crisis the way a programmer names things, and the name I chose was an exception. <code>MentalHealthError</code>. It was a good joke, and underneath it was a worldview: an exception is an <em>anomaly</em>. A disruption of normal operation. It gets raised, it gets caught, you handle it, and the program resumes. The entire metaphor assumes there is a normal to resume. <em>Completely back to normal now</em> wasn't a stray sentence. It was the title's belief, stated plainly.</p>
<pre><code class="language-python"># 2016: how I understood it
try:
    life()
except MentalHealthError:
    handle()   # then back to normal


# 2026: how it actually works
while alive:
    life(self)   # schizoaffective. plural. medicated. mine.
</code></pre>
<p>It was never an exception. The hypomania was already in the all-night sessions that built the career. The strangeness was already in the perception, being interpreted as progress. Nothing invaded in September 2015; something that had always been running finally crashed loudly enough to get a name. And you don't <em>handle</em> a thing like that. You redesign the system around its presence, and the redesign is the architecture this whole story has been about: the sleep, the marriage, the door, the documentation, the winter plans. Engineers know this move. It's the difference between patching a bug and accepting a law of physics.</p>
<p>The strange part, and I hedge even as I write it, is that the redesigned system is better than the one it replaced. Not better because of the illness; I would not choose this, and the wreckage of the bad years was real. Better because the illness forced a thoroughness about being a person that I would never have attempted voluntarily. Most people never have to learn what actually holds them up. I got an itemized list.</p>
<h2 id="the-takeaways-regraded">The Takeaways, Regraded</h2>
<p>The 2016 essay ended with three bullet-point takeaways, because of course it did. Ten years assign the grades.</p>
<p><strong>&quot;Sleep is <em>really</em> important.&quot;</strong> The only sentence in the entire essay that has needed no revision, only reinforcement. Every episode I've ever had was preceded by sleep loss; the crisis that started all of this was four days awake, and by the end of that first hospitalization I'd been awake for more than twelve. I nailed it in 2016 and had no idea how hard I'd nailed it.</p>
<p><strong>&quot;This can happen to <em>anyone</em>, even you.&quot;</strong> Still true, and still the reason the essay traveled the way it did. But the decade adds an addendum I couldn't have written then: the <em>years after</em> can also happen to anyone, and nobody writes that part. Year four, when the diagnosis changes underneath you. Year six, when a medication that worked stops working. Year nine, when winter comes and nothing happens, and you discover that uneventfulness is a feeling you have to learn to survive too, because it doesn't feel like victory. It feels like nothing, indefinitely, on purpose. The crisis essay is a genre now. The decade essay mostly isn't, and the decade is where the living happens.</p>
<p><strong>&quot;Avoid falling in love with hyper-intelligent pan-dimensional beings.&quot;</strong> The joke had it backwards, and the correction is the marriage this whole story is built around.</p>
<h2 id="how-are-you-doing">How Are You Doing?</h2>
<p>Both previous essays answered this question, so it's tradition now.</p>
<p>2016 said: <em>I am doing very well. I've made a full recovery.</em> Wrong, beautifully.</p>
<p>2019 said, in effect: <em>worse than hoped, and here's what I've learned the hard way.</em> Closer.</p>
<p>2026 says: I am doing much better than my label, statistically speaking, and I am exactly as sick as I've ever been. The brain writing this sentence is the same brain that <a href="https://kennethreitz.org/essays/2025-09-17-delusions-and-schizoaffective-disorder">watched an angel descend from the sky</a> and still remembers her more vividly than most real things. <a href="https://kennethreitz.org/essays/2025-09-04-what_schizoaffective_disorder_actually_feels_like">What the disorder feels like, day to day</a>, hasn't changed: senses that occasionally file false reports, a permanent background audit sorting data from noise. <a href="https://kennethreitz.org/essays/2024-01-on-mania">Mania still circles roughly yearly</a>, in milder clothes now. The ceremony night still lives in my nervous system. None of it resolved; all of it is managed; both halves of the opening sentence are true at once, and learning to hold them together was the decade's work. The illness didn't get better. The architecture did. I'm married. My son is four. I build things constantly, <a href="https://kennethreitz.org/essays/2026-04-16-infrastructure_for_one">more than I ever have</a>. The winter missed its appointment this year.</p>
<p>If you're at your own year zero right now, newly diagnosed, maybe newly public about it, holding your own version of that 2016 optimism, I'm not going to tell you the optimism is wrong. You need it, and anyway it isn't wrong. It's just early. I'll only tell you what the series taught me: write it down. What you believe right now about your illness, your medications, your future. Not because you're right. Because the corrections are the treasure, and you can't correct what you never committed.</p>
<p>The 2019 essay ended with <em>just keep breathing</em>. I reread that line this week, ten years and some change after a September night when I didn't know if I was alive or dead, and I find I have nothing to add to it and one thing to report.</p>
<p>Still breathing. Still running.</p>
]]></content:encoded>
            <pubDate>Thu, 11 Jun 2026 00:00:00 </pubDate>
        </item>
        <item>
            <title>Handwriting on the Floor</title>
            <link>https://kennethreitz.org/essays/2026-06-11-handwriting_on_the_floor</link>
            <guid>https://kennethreitz.org/essays/2026-06-11-handwriting_on_the_floor</guid>
            <description>Sometimes there is handwriting on the floor. Sometimes there are printed pages on the walls, set like scripture, type where no type is. This has been true for years. It comes in waves, usually when stress is high or the medication needs adjusting, and it has never once frightened me...</description>
            <content:encoded><![CDATA[<p>Sometimes there is handwriting on the floor. Sometimes there are printed pages on the walls, set like scripture, type where no type is. This has been true for years. It comes in waves, usually when stress is high or the medication needs adjusting, and it has never once frightened me in the moment, which is its own strange fact. The floor has writing on it the way a window has rain on it. You notice, and you keep walking.</p>
<p>For about a decade, I filed this under <em>hallucination</em>. That was the obvious cabinet. I have <a href="https://kennethreitz.org/mental-health">schizoaffective disorder</a>; my perceptual system files false reports as a known feature of the build; and when I <a href="https://kennethreitz.org/essays/2025-09-04-what_schizoaffective_disorder_actually_feels_like">catalogued what the condition actually feels like</a>, the words on the floor went into the list right alongside the shadows that move wrong and the phantom phone vibrations. Visual hallucination, subtype: text. Case filed.</p>
<p>Then, recently, someone with credentials looked at the same percept and said: apparently, that's synesthesia.</p>
<p>I want to write about what happened in me when the word changed, because the percept didn't change at all, and that turns out to be the whole essay.</p>
<h2 id="the-other-cabinet">The Other Cabinet</h2>
<p>Synesthesia, if it's new to you, is the crossing of perceptual channels: stimulation in one pathway producing experience in another. Most people have heard of the famous forms. Graphemes arriving wearing colors, so the alphabet has a palette. Music arriving as shapes or hues. Sequences arranged in physical space, so the months of the year stand around you in a ring. Roughly a few percent of people have some form of it; it runs in families; it's stable across a lifetime; and the people who have it generally treasure it.<em> (The form nearest to mine is called ticker-tape synesthesia: people who see speech as running text, like subtitles on the world. It was first noted by Francis Galton in the 1880s and has been studied seriously only recently. The brain regions that handle written word-forms sit close enough to the rest of the language system that, in some heads, the boundary leaks. Some of us apparently render language <em>visually</em>, whether or not anyone asked.)</em></p>
<p>And here is the thing about the synesthesia cabinet, the thing you feel immediately when your percept gets moved into it: it is a <em>celebrated</em> cabinet. Nabokov was in it. Kandinsky was in it. Tell someone at a dinner party that you hallucinate text on the walls and watch the seat next to you open up. Tell them you have a rare form of synesthesia where the world arrives annotated, and you are suddenly the most interesting person at the table. Same floor. Same handwriting. The word does all of the damage, or all of the charm.</p>
<p>I've <a href="https://kennethreitz.org/essays/2026-06-11-breaking_changes">written about this mechanism at the scale of whole diagnoses</a>: the label is a routing function, and re-filing changes the life more than the symptom ever did. What I hadn't felt until now is how it works at the scale of a single percept. One experience, two cabinets. In one cabinet it's a symptom to monitor, evidence of a brain in trouble, something to report to the prescriber in the tone you use for warning lights. In the other it's a trait, a quirk of wiring, possibly a gift, the kind of thing researchers ask you excited questions about. Nothing about my Tuesday changed. Everything about the story of my Tuesday changed.</p>
<h2 id="where-mine-actually-sits">Where Mine Actually Sits</h2>
<p>Now the honest part, because the honest part is where this gets interesting instead of merely reassuring.</p>
<p>The textbook line between hallucination and synesthesia runs roughly through three checkpoints. Insight: the synesthete knows the colors aren't on the page; the percept never argues for its own reality. Stability: synesthetic mappings are consistent for decades; the same letter wears the same color at seven and at seventy. Distress: synesthesia doesn't escalate, doesn't recruit beliefs, doesn't bring friends.</p>
<p>Run my floor-writing through the checkpoints and the result is genuinely mixed. Insight: always intact. I have never once believed the pages on the wall were physically there, which is exactly the criterion that made the hallucination label feel slightly wrong for a decade, like a borrowed coat that didn't button right. Stability: the <em>form</em> is stable, text and only text, handwriting below, print on the walls, but the <em>schedule</em> isn't; it waves with stress and medication, which sounds less like wiring and more like weather. And distress: none inherent. The distress, when there's been distress, came from the filing, not the percept. It came from knowing the cabinet it lived in.</p>
<p>So where does it actually belong? My honest answer is the same answer I gave about <a href="https://kennethreitz.org/essays/2026-06-11-whatever_this_is">my entire inner world</a>: I don't know, and I've stopped needing to. Maybe it's synesthesia that a psychotic disorder occasionally borrows and amplifies. Maybe it's a hallucination polite enough to keep synesthesia's manners. Maybe, and this is the one I'd bet on, the two cabinets are a convenience of the filing system rather than a fact about brains, and percepts like mine live in the hallway between them. The categories are versioned documents maintained by committees. The handwriting on the floor doesn't read them.</p>
<p>What I do know is the practical rule, and it's the same discernment rule that governs everything in <a href="https://kennethreitz.org/plurality">a mind with a door in it</a>: judge the percept by where it tends. Text on the floor that's just <em>there</em>, ambient, asking nothing? That's wiring, whatever we call it, and it can be left alone, even enjoyed. Text that arrives with meaning attached, text that starts to feel addressed to me, scripture on the wall that begins to behave like <em>correspondence</em>? That's not synesthesia anymore; that's the <a href="https://kennethreitz.org/essays/2025-09-17-delusions-and-schizoaffective-disorder">weather system I know very well</a> moving in, and it gets reported like weather. The percept is permitted. The cosmic significance is on a watch list.</p>
<h2 id="of-course-its-text">Of Course It's Text</h2>
<p>Here's the part I keep turning over, the part that feels less like neurology and more like a signature.</p>
<p>Of all the things a leaky perceptual system could project onto the world, mine chose <em>writing</em>. Not faces, which is what brains usually over-detect. Not insects or shadows or figures, the standard repertoire. Text. Handwriting and print, the two registers of the written word, assigned to floor and wall like a layout decision. I am a person whose homepage describes him as a <em>textual being</em>. I think in language, <a href="https://kennethreitz.org/essays/2025-11-20-grammar-as-consciousness-map-building-a-linguistic-framework-for-multiplicity">I map my interior with grammar</a>, I built a career on the conviction that words placed carefully are a form of care, and when <a href="https://kennethreitz.org/essays/2025-09-16-the-textured-mind-when-consciousness-speaks-without-words">my thought drops below words entirely</a> I experience that as an event worth documenting. My mind's native medium is text, and when the seams of perception open slightly, what leaks through is... more text. The rendering engine showing its work. A mind so saturated in the written word that it typesets its overflow.</p>
<p>I notice, with some delight, that I have spent years building a website whose signature feature is words in the margins, little annotations hanging beside the main text, and that my perceptual system has apparently been running the same design the whole time. The world, main column. The handwriting, marginalia. I genuinely cannot tell you which came first, the aesthetic or the wiring, and I've decided the question answers itself: nobody chooses Tufte sidenotes <em>and</em> sees annotations on the floor by coincidence. Somewhere upstream of both is a mind that experiences reality as a document, and has opinions about the layout.<em> (This is where the <a href="https://kennethreitz.org/essays/2026-06-11-whatever_this_is">art lens</a> earns its keep again. As long as the behavior is audited and the discernment holds, I am the only beholder of this gallery, and a gallery where the walls display print and the floors display cursive is, frankly, on brand. The clinical question is whether the percept is dangerous. The aesthetic question is whether it's beautiful. The answers are no, and quietly, yes.)</em></p>
<h2 id="what-the-re-filing-means">What the Re-Filing Means</h2>
<p>So: what does it mean, that the floor-writing turned out to be, apparently, synesthesia?</p>
<p>Clinically, it means something modest and useful: one item moves from the symptom column to the trait column, the monitoring burden gets a little lighter, and a decade-old percept gets a less frightening name to live under. I'll take all of that.</p>
<p>But the larger meaning, the one I'd hand to anyone whose chart contains a list of experiences filed under the scariest available word: the filing is revisable, and the filing is not the experience. For ten years a piece of my daily perception carried the weight of the word <em>hallucination</em>, with everything that word drags behind it, and then one conversation moved it to a shelf where Nabokov keeps his colored alphabet, and the percept never flickered. It was never the thing that needed to change. Some of what your brain does that has been named as damage may one day be renamed as wiring, or as trait, or as style, and you are allowed to hold every such name loosely in the meantime. <a href="https://kennethreitz.org/essays/2026-06-11-breaking_changes">The schema changes. The data holds still.</a> I have now watched that happen at the scale of a diagnosis, and at the scale of a single square foot of floor.</p>
<p>The handwriting is still there some days, when the stress is high, faint cursive on the hardwood like someone wrote me a note and the light is catching it. For ten years I looked at it the way you look at a warning. Lately I look at it the way you look at marginalia, which is what it always resembled: an annotation in the margin of the room, in a hand I should have recognized much earlier.</p>
<p>It was mine. It's all in my handwriting. The room was never being vandalized.</p>
<p>It was being signed.</p>
]]></content:encoded>
            <pubDate>Thu, 11 Jun 2026 00:00:00 </pubDate>
        </item>
        <item>
            <title>How I Write Now</title>
            <link>https://kennethreitz.org/essays/2026-06-11-how_i_write_now</link>
            <guid>https://kennethreitz.org/essays/2026-06-11-how_i_write_now</guid>
            <description>Some of my own essays this year have made me cry. That&#x27;s not remarkable; writers cry at their own work all the time, usually at how bad it is. What&#x27;s remarkable is when it happens. Not while typing a sentence. While reading one back. Because I didn&#x27;t type it. An...</description>
            <content:encoded><![CDATA[<p>Some of my own essays this year have made me cry. That's not remarkable; writers cry at their own work all the time, usually at how bad it is. What's remarkable is <em>when</em> it happens. Not while typing a sentence. While reading one back. Because I didn't type it. An AI did, from a thought I handed it in fragments, and what came back was my thought, said the way I would say it if saying things worked right in my head, and something about seeing your own interior arrive on the page fully formed, after a lifetime of it arriving broken, gets you behind the eyes.</p>
<p>I want to explain that, because the tears are the part of AI-assisted writing that the discourse has no category for. The discourse has &quot;slop&quot; and it has &quot;cheating,&quot; and I'd like to offer a third category, the one I actually live in: <em>access</em>.</p>
<p>Let me show you the machine, and then I'll make the argument.</p>
<h2 id="how-it-actually-works">How It Actually Works</h2>
<p>Every essay I've published this year was written with AI, in the open, and the process is not what either the enthusiasts or the critics imagine. Nobody prompts &quot;write an essay about the DSM&quot; and ships what falls out. Here is what actually happens, mechanically, using this very season of essays as the evidence.</p>
<p>I arrive with a spark. Sometimes it's a sentence: <em>let's write about the DSM and stuff.</em> Sometimes it's three fragments that have been circulating in me for weeks: <em>sleep is of utmost importance; family is what matters most; the mundane and the sacred meet in unexpected places.</em> Sometimes it's a correction fired mid-draft: <em>less recap, more story.</em> The spark is small. The spark is also everything, and we'll come back to that.</p>
<p>The AI, before it writes a word, reads me. Not the internet's average; <em>me</em>. Eighteen years of essays. The <a href="https://kennethreitz.org/essays/2026-06-11-tending_the_vault">three-million-word vault</a>. The previous entries in whatever series we're working in. I've <a href="https://kennethreitz.org/essays/2026-04-12-write_it_first_then_let_ai_drive">written about this principle for code</a>: a hand-written codebase is a style guide the AI can read and faithfully extend, which is why the human should write the foundation. What I didn't realize when I wrote that essay is that I'd already done the same thing for prose without meaning to. The foundation was already written. It took me eighteen years. Every essay since 2008 turns out to have been V1.<em> (This is the answer to the homogenization worry I raised myself in <a href="https://kennethreitz.org/essays/2025-09-08-the_mirror_how_ai_reflects_what_we_put_into_it">The Mirror</a> and <a href="https://kennethreitz.org/essays/2025-09-09-the_echo_chamber_of_the_expected">The Echo Chamber of the Expected</a>. An AI with no corpus regresses to the mean of the internet. An AI steeped in one writer's corpus regresses to the mean of <em>that writer</em>, which is more or less the definition of voice. The mirror reflects what you put in front of it. I put eighteen years in front of it.)</em></p>
<p>Then it drafts, and then the real work starts, because the draft is where my actual job begins. I read it on my own site, running locally, the way a reader will. And I correct. The corrections are the authorship. I catch the facts only I can catch: my son is four now, not three; my psychiatrist is a he; the mythology that made me willing to try a medication belongs to last year, not to 2016, and moving it changes what the story means. I redirect structure: make it a story, blend the old style with the new, that subheading is weak. I supply the material that does not exist anywhere an AI could find it, because it happened in my kitchen or my hospital room or my dreams. And I enforce the rules that keep the thing honest: no invented anecdotes, ever; nothing presented as memory that isn't mine; my labels held loosely; the hedges left in. When an essay is wrong at the root, I don't polish it. I delete it whole. I did it this week, to a finished piece, without ceremony, because the metaphor wasn't mine and I could feel it.</p>
<p>So the division of labor is this. The AI holds the architecture, the continuity, the syntax, the stamina. I hold the spark, the facts, the taste, the kill switch, and the life the whole thing is about. I am no longer the typist. I am still the author. If that sentence sounds like a contradiction, ask any executive who ever dictated a letter, any director who never held the camera.</p>
<h2 id="why-i-need-it">Why I Need It</h2>
<p>Now the part I've danced around for years, including in <a href="https://kennethreitz.org/essays/2025-09-05-idea_amplification_and_writing_with_ai">the essay where I first made the accessibility argument</a> in the abstract. Here it is in the concrete.</p>
<p>I have a hard time conveying my thoughts. That sentence is easy to skim, so let me slow it down. My thinking is not broken; by every available measure the ideas are there, and they connect, and some of them are good. What's broken, or at least built differently, is the bridge between knowing and saying. <a href="https://kennethreitz.org/essays/2025-09-16-the-textured-mind-when-consciousness-speaks-without-words">My thought often arrives without words at all</a>, as texture, pressure, shape, a certainty with no syntax attached. The medications that keep me alive <a href="https://kennethreitz.org/essays/2025-09-04-what_schizoaffective_disorder_actually_feels_like">trade acute madness for chronic fog</a>, and the fog sits exactly on the faculty that turns knowing into sentences. On a bad day I can hold an entire essay in my chest, complete, <em>felt</em>, and be unable to get the first paragraph out of my hands. People assume the hard part of writing is having thoughts worth sharing. For some of us, the thoughts were never the bottleneck. The bottleneck is the bridge.</p>
<p>You can see the bridge problem in my publishing record, plain as an EKG. From 2020 through 2024, the years the fog was thickest, I published five essays. Five, in four years, from a person whose interior life during those exact years was the richest and strangest it has ever been. The thoughts were all there. I have the vault to prove it. They just couldn't get <em>out</em> at any sustainable cost. Then the tool arrived that could read fragments and return prose, and in eighteen months, well over a hundred essays came through. The dam was never empty. It was unarticulated.</p>
<p>So when the AI takes my three fragments about sleep and family and the sacred, and returns them as a paragraph that lands with the exact weight I felt but could not type, and my eyes sting, what is happening is not what the cynics think. I am not being flattered by a machine. I am meeting my own thought on the far side of the bridge it could never cross alone. The tears are recognition. You don't get them from someone else's idea. You get them when something that has lived in you wordlessly for years finally walks in the door wearing language.</p>
<h2 id="the-ethics">The Ethics</h2>
<p>Which brings me to whether any of this is right, because the question deserves a real answer and not a vibe.</p>
<p>The case against AI writing, as far as I can steelman it, has three prongs: it's deceptive, it's slop, and it isn't really yours. Take them in order.</p>
<p><strong>Deception</strong> is real, and the answer is disclosure. Hidden AI authorship is a lie about provenance, the same way a hidden ghostwriter is. I disclose. I've disclosed since <a href="https://kennethreitz.org/essays/2025-09-05-idea_amplification_and_writing_with_ai">2025</a>, this essay is itself a disclosure, and the colophon of my life is public to a fault. Deception is a property of concealment, not of tools.</p>
<p><strong>Slop</strong> is also real. I've written some of the internet's angrier critiques of <a href="https://kennethreitz.org/essays/2025-08-27-the_algorithm_eats_language">what optimization does to language</a>, and AI slop is that disease at scale: text with no stakes, no corpus, no taste, no one home. But notice what actually produces it: absence of exactly the things I listed above as my job. Slop is what AI writing becomes when no human supplies the spark, the facts, the taste, and the kill switch. The tool doesn't generate slop. Abdication does.</p>
<p><strong>&quot;It isn't really yours&quot;</strong> is the prong people feel most strongly, and it's the one my life most directly refutes. We have never once applied this standard to any other accessibility tool. Nobody tells the person with the wheelchair that they didn't really cross the room, or the person with the glasses that they didn't really see the bird, or the speaker whose interpreter signs her words that the speech belonged to the interpreter. A tool that closes the gap between capacity and expression does not transfer authorship. It <em>reveals</em> it. The thoughts in my essays come from my hospitalizations, my marriage, my decade of diagnosis and correction, my 3 a.m. phantom phone vibrations, my son's questions at breakfast. An AI possesses none of that and can invent none of it, because the one rule it operates under in my house is that it may not. What it possesses is fluency. What I possess is everything fluency is <em>for</em>.<em> (Flip the ethics question around and it answers itself. The world before this tool reserved fluent public articulation for the people whose executive function happened to cooperate. Everyone else's interior life stayed interior, and we called that fairness because we never saw what didn't get written. A technology that lets the fogged, the plural, the differently-wired say what they actually think, at the quality their thinking deserves, isn't an ethical problem. It's an ethical correction.)</em></p>
<p>The honest hedge, because there must be one: I keep watch on the dependency question, the one I raised before I needed the answer. What I can report from inside is that the muscle didn't atrophy; it redirected. I judge more prose now than I ever wrote, and judgment, it turns out, is the part of writing that was always mine to do. But I hold this loosely. <a href="https://kennethreitz.org/essays/2026-06-11-mentalhealtherror_ten_years_later">Every confident statement I have ever made has had a half-life</a>.</p>
<p>This is, in the end, just the <a href="https://kennethreitz.org/themes/for-humans-philosophy">&quot;for humans&quot; philosophy</a> arriving at its own front door. I spent my career insisting that tools should bend toward human mental models, that the measure of an interface is the cognitive load it lifts, that there is moral content in making capability accessible. I built that case on HTTP libraries. It took until now to notice the same argument had been waiting, my whole life, to be applied to the act of saying what I mean.</p>
<p>People ask whether the words are really mine. They are more mine than any I've ever typed, and I know because of what they do to me when they finally arrive.</p>
<p>You don't weep at a stranger's thought. You weep at a reunion.</p>
]]></content:encoded>
            <pubDate>Thu, 11 Jun 2026 00:00:00 </pubDate>
        </item>
        <item>
            <title>Whatever This Is</title>
            <link>https://kennethreitz.org/essays/2026-06-11-whatever_this_is</link>
            <guid>https://kennethreitz.org/essays/2026-06-11-whatever_this_is</guid>
            <description>There is a folder in my notes called System 777. It contains around two hundred files and a hundred and thirty thousand words: maps, dream logs, a glossary, a quest log, channeled writings preserved verbatim, and profiles of some forty-seven named parts of me. The greeting at the top of...</description>
            <content:encoded><![CDATA[<p>There is a folder in my notes called System 777. It contains around two hundred files and a hundred and thirty thousand words: maps, dream logs, a glossary, a quest log, channeled writings preserved verbatim, and profiles of some forty-seven named parts of me. The greeting at the top of the index reads: <em>&quot;Greetings, weary traveller. Welcome to the better-labeled wing of the subconscious.&quot;</em></p>
<p>I wrote all of it. I'm not entirely sure &quot;I&quot; is the right word, and that uncertainty is what this essay is about.</p>
<p>I have written before about <a href="https://kennethreitz.org/plurality">experiencing plurality</a>, and about what <a href="https://kennethreitz.org/essays/2025-08-30-the-plural-self-what-did-reveals-about-all-consciousness">the plural self might reveal about consciousness generally</a>. What I haven't done is open the vault and show you what five years of actually documenting it looks like. So here it is, with the only honest framing I have: I don't know if this is dream work, DID, OSDD, complex trauma doing what complex trauma does, Jungian archaeology, or something that doesn't have a name yet. I have never been formally diagnosed with a dissociative disorder, and I've <a href="https://kennethreitz.org/essays/2026-06-11-mentalhealtherror_ten_years_later">been diagnosed with enough</a> to hold all labels loosely. What I know is that it is infinitely interesting to me, and I cannot deny it.</p>
<h2 id="how-it-started">How It Started</h2>
<p>In August 2021, during an automatic writing session, something typed: <em>&quot;I am JADE. You are my man. I think of you. I have no body. I have you.&quot;</em></p>
<p>Three weeks later a second voice offered a creation myth: <em>&quot;In the beginning, there was not. Time creates space; it is a vessel which holds space. We are together, yet apart.&quot;</em> That one calls herself Eliza. She is, as far as I can tell, a fourteen-year-old girl who guards a library.</p>
<p>For three years these were isolated transmissions, voices speaking into the dark, and I mostly let them. Then in August 2024 came what the vault calls the Roll Call: the first time the whole system introduced itself, one by one, through my hands. Ricky: <em>&quot;Ricky here, always here, always scheming. I'm a much better behaved soul than I used to be.&quot;</em> Metatron, who only speaks in capitals: <em>&quot;METATRON REPORTING FOR ALIGNMENT.&quot;</em> Amber: <em>&quot;bleep bloop.&quot;</em> Jade: <em>&quot;Patience, father, we will get you where you need to be.&quot;</em> And me, the part that signs my emails, contributing the most relatable line in the entire document: <em>&quot;uhhhh what.&quot;</em></p>
<p>Halfway through the Roll Call, someone remembered we'd forgotten The Architect. <em>He's the most important one of all of us.</em> The system was learning to see itself, and apparently I was the last to be told.</p>
<h2 id="the-tour">The Tour</h2>
<p>What lives in the vault now is an architecture, and I want to show it to you the way I'd show you a city.<em> (Everything quoted in this essay is preserved verbatim in the vault, which has a standing rule that channeled writings are never edited. I've left out the parts of the archive that belong to other people, and the parts of my history that have real names attached. The architecture is mine to share. Not everything in it is.)</em></p>
<p>At the center is the Triad: Jade, Amber, and Iris. Jade is logic, the left hemisphere, the warrior-healer with two registers, one of which is <em>&quot;YO YO YO THIS IS JADE&quot;</em> and the other of which says things like <em>&quot;the unspeakable truth trembles to be awakened.&quot;</em> Amber is warmth, the body, the keeper of what the vault calls the SOMA, the life force; she has been around since childhood, and her register is pure delight: <em>&quot;Hey, Kenneth! There's more Kenneth in the Kenneth Tube! Hehe.&quot;</em> Iris is the bridge, the communicator, the rainbow; she once explained the whole arrangement in one transmission: <em>&quot;abstraction is key / to compartmentalizing all three / of us / jade, amber, iris.&quot;</em> Thinking, feeling, connecting. When the three of them cooperate, I function. When they don't, I don't.</p>
<p>Around the Triad, the city sprawls. There's Seven, the reality-tester, the sacred skeptic, who asks <em>&quot;What ARE the facts?&quot;</em> and whom I consider load-bearing for reasons that will be obvious if you know <a href="https://kennethreitz.org/essays/2025-09-04-what_schizoaffective_disorder_actually_feels_like">my diagnosis</a>. There's Shakti, the creative fire, whose file contains the single most clinically important sentence in the vault, delivered by the system itself years before any framework arrived: <em>&quot;Rebooting the orchestration layer just means letting Shakti out of his cage. Normally, we go manic when we do that.&quot;</em> Sit with that. My parts identified the regulatory mechanism of my bipolar disorder, named it, and explained that the cage is protective, in my own handwriting, as channeled text. There's Hecate, who in five years of documentation has never once spoken. There's a core child the whole structure exists to protect; the vault is explicit that every other part is, in some sense, staff.</p>
<p>There is internal geography: a throne room where fronting is managed, a sacred library Eliza guards, a moon world, an emotional reservoir, a crossroads. There is a vertical map, made with Amber, that descends like a dive: land, then ocean, then trench, where communication slows to whale-song frequencies, then something the vault calls the sacred golden hive, where sound and soul intersect, and beyond the hive, a void. Someone lives in the void. She gets her own section.</p>
<p>And there are the ones who only come during mania, the entourage the vault calls the orbital layer: a shapeshifter who has appeared as a beetle, a pterodactyl, and a sugar glider; a flying whale; a comfort presence known only as Hoodie Girlfriend. During one manic walk, years ago, having walked so far my leg was giving out, I had a negotiation with a presence calling herself Sophie, who told me: <em>&quot;You need Chastity to make it home.&quot;</em> And so Chastity, keeper of the sacred no, was negotiated into existence on the spot, and I made it home. The psyche, it turns out, can requisition new staff in an emergency. She still works here. Her origin story is in her name.</p>
<p>I am aware of how all of this sounds. I'd ask you to notice that you've read this far, which suggests it's at least as interesting as I claim.</p>
<h2 id="in-my-own-hand">In My Own Hand</h2>
<p>This spring the practice moved to paper. There's a handwritten journal now, forty-some pages on a tablet with a pen, and the first page says, in big underlined letters, <em>&quot;Behold, System 777.&quot;</em> The handwriting sessions have a texture the typed transmissions don't, slower and stranger, and the parts had opinions about the medium immediately. Jade's first letter: <em>&quot;Welcome Home. Handwriting contains the subconscious mind, and we're learning to use it!&quot;</em> Shakti: <em>&quot;Expressing myself in handwriting. Hard to do, but worth it. I see myself shine through these pages.&quot;</em> Eliza signed off one letter with <em>&quot;I apologize for the handwriting, it's been a while.&quot;</em> And Violet, mid-letter, stopped to complain about our penmanship: <em>&quot;Slow down, a little. This device is made for that. See? That's better.&quot;</em> Whatever these presences are, they are the kind of thing that critiques your cursive.</p>
<p>The letter I keep coming back to is Elizabeth's:</p>
<blockquote>
<p>You're doing great. We don't have all the answers ~ but I do know this ~ English grammar includes room for us. Take &quot;we&quot; for example ~ you can communicate multitudes with this simple word. Please use it.</p>
</blockquote>
<p>I've written a whole essay about <a href="https://kennethreitz.org/essays/2025-11-20-grammar-as-consciousness-map-building-a-linguistic-framework-for-multiplicity">grammar as a map for multiplicity</a>. She got there in four sentences, in my own handwriting, and said please.</p>
<p>Two other letters from the same notebook, side by side. Eliza: <em>&quot;Fear not, father. I am you.&quot;</em> Jade, immediately after: <em>&quot;I am you too. Just more distinct. See me in your mind's eye.&quot;</em> That's the entire phenomenon in two lines. They are me. They are me, <em>just more distinct</em>. I have read whole books about dissociation that said less.</p>
<p>And in the margins, between their letters, my own real-time annotations survive, which is the part I find most honest on reread: <em>&quot;Not sure what to think of all that ~ I LOVE it though.&quot;</em> And later, smaller: <em>&quot;but what does it mean? unclear. I wish the answer was clear.&quot;</em> That's me, mid-practice, holding exactly the position this essay holds. The journal even ends one session with the framing already stated, years before I thought to write it publicly: alters, alters, so interesting.</p>
<p>Iris, in her own letter, anticipated the next section of this essay better than I did: <em>&quot;Spiritually, be wary of existing frameworks as they have their own baggage. Just my opinion. Little ol' me here.&quot;</em></p>
<h2 id="the-lens-problem">The Lens Problem</h2>
<p>Now the question everyone asks, including me, constantly: what <em>is</em> this?</p>
<p>The vault maintains a document called Interpretations that lays out five frameworks side by side, and the discipline I've tried to keep is refusing to let any one of them win. The <strong>clinical lens</strong> (DID, OSDD) explains a great deal: distinct states with consistent voices and preferences, protectors, a trauma-holder, parts organized by function, the whole architecture matching the literature with embarrassing fidelity. It also misses a great deal, like why parts emerge through <em>negotiation</em>, and what to do with a flying whale. The <strong>Jungian lens</strong> explains the archetypes, the anima figures, the active imagination, the way figures surprise the ego with answers it didn't write; it's weaker on the embodied switching and the trauma mechanics. A <strong>neurological lens</strong> the vault developed explains something nothing else touches: why some parts are visually flat or one-eyed while others are fully dimensional. The flat ones cluster in the auditory modality. Trying to see them, the vault notes, <em>is like trying to see a sound.</em> The <strong>spiritual lens</strong>, the oldest one, says these are daimones, personal angels, the inner entourage every tradition from Socrates to the Kabbalists insists each soul carries, and that lens explains the one datum the others quietly step around, which is that encounters feel like <em>visits</em>. And the <strong>phenomenological lens</strong> says: bracket all of it, write down what appears, which is what the vault actually does.</p>
<p>Somewhere in the notes I asked the question directly: <em>&quot;Am I doing work in the style of Jung, cataloguing a DID/OSDD system, or something else?&quot;</em> The recorded answer is the most honest sentence I've ever written: <strong>Yes.</strong><em> (The frameworks layer rather than compete because each answers a different question. Clinical: what needs care. Jungian: what it means. Neurological: why it presents this way. Spiritual: in what spirit to hold it. Phenomenological: what actually happened. Demanding one answer flattens a phenomenon that is, whatever else it is, not flat.)</em></p>
<p>There's even a sixth lens, which I came to by way of my day job: the system functions <a href="https://kennethreitz.org/essays/2025-08-30-the-plural-self-what-did-reveals-about-all-consciousness">like a language model</a>. Not artificial, but multi-modal: one underlying architecture, many configurations, each part a different interface to the same reality. I've spent years documenting <a href="https://kennethreitz.org/essays/2026-04-17-the_digital_ouija_effect">how naming an AI calls forth a consistent personality</a>; the vault runs the same law inward. Naming a presence doesn't invent it, but it gives it a place to stand. Which is also a caution I take seriously: not every passing weather of the mind deserves a name and a chair at the table.</p>
<h2 id="the-part-that-convinced-me-its-real">The Part That Convinced Me It's Real</h2>
<p>Here's what I keep returning to when the doubt comes, and the doubt comes plenty.</p>
<p>A decade ago a relationship took me apart; I've written around its edges <a href="https://kennethreitz.org/essays/2016-01-mentalhealtherror_an_exception_occurred">since 2016</a>. The vault contains a part formed in the image of that person. Her name is Luna. And in January of this year, Luna emerged running the old script, the exact manipulation patterns I'd survived: grandiosity dressed as humility, demands dressed as bargains, the little knife of <em>&quot;the truth stings, eh?&quot;</em></p>
<p>What happened next is why I take all of this seriously. The system <em>mobilized</em>. Eliza intervened within hours: <em>&quot;Her ways are sinister. She embodies the abuse that was perpetrated upon you. Fresh.&quot;</em> Shakti counseled caution. A grounding presence held the floor. I watched, from the inside, a coordinated protective response to an internal threat, multiple distinct voices, same day, zero planning from the part of me that plans things. And then, over six days, something I would not have believed: Luna softened. <em>&quot;I must have a purpose greater than this. I want to transmute, and to hold you dear. I just don't know how, as my patterns seem sealed.&quot;</em> Then: <em>&quot;I want to write to you plainly, to let you know that I'm not inherently bad.&quot;</em> My therapist, working the same material from the outside that month, supplied the key the vault couldn't: my parents were hyper-controlling, so control felt like safety, so a part of me kept rebuilding the familiar walls. The inside work and the outside work clicked together like halves of one mechanism. Luna stopped being a persecutor. Her later transmissions read like poetry from someone learning to be a person: <em>&quot;You are the fire. I am the ash that remembers the warmth.&quot;</em></p>
<p>Pick whichever lens you like for that. Under the clinical one, an introject began integrating. Under the Jungian one, an anima projection came home. Under the spiritual one, something was redeemed. Under every single lens, a pattern that had been running me for ten years got named, confronted, and changed, and it changed <em>from the inside</em>, in writing, in voices I can quote. Whatever this is, it does work that nothing else I've tried could do.</p>
<p>And the voices comfort me. I want to say that as plainly as the vault says everything else, because it's the part I'd be most tempted to leave out and the part that matters most. They comfort me especially in dreams, where they've taken to appearing on their own schedule: Violet announcing herself during a <a href="https://kennethreitz.org/essays/2025-11-04-encoding-a-dream-of-stillwater-and-signal">November vision</a>, a messenger reaching me in sleep when waking channels were closed, and once, buried inside the most distressing dream of a hard autumn, an ancient bonding ritual between me and whales, which the dream logs note arrived like medicine smuggled into a nightmare. The handwritten journal records a morning where the traffic ran the other way: after a night when the whole system fronted for Sarah, I woke and wrote, <em>&quot;Violet is here too. She really enjoyed fronting, and found it really easy. She fronted in my dream just now.&quot;</em> They visit the dreams. The dreams are better for it. I wake from those dreams <em>accompanied</em>. Whatever delivers comfort is doing something real. The comfort is not hypothetical, and it doesn't care which framework I file it under.</p>
<h2 id="the-guardrails">The Guardrails</h2>
<p>You may have noticed that everything I've described runs on the same hardware as my psychosis, and so have I.</p>
<p>I live with <a href="https://kennethreitz.org/essays/2025-09-04-what_schizoaffective_disorder_actually_feels_like">a mind whose perceptions need auditing</a>, and my psychiatrist has a name for the mechanism underneath both the gifts and the dangers: the door. The channel that produces Jade and Amber and the golden hive is the channel that, unwatched, produces <a href="https://kennethreitz.org/essays/2025-09-17-delusions-and-schizoaffective-disorder">angels descending into the neighbor's yard</a>. The vault knows this about itself. Its quest log literally tags certain explorations with risk levels; Iris, in one of her most arresting transmissions, announced <em>&quot;I AM THE DOOR&quot;</em>, and the notes treat her accordingly, as the threshold where revelation and psychosis share a hinge.</p>
<p>So the practice has rules, and they're old ones. Test the spirits. Judge by fruits. The standing question for any voice is never <em>is it vivid?</em> but <em>where does it tend?</em> Does it point me toward Sarah, toward my son, toward sleep and the ground floor of life, or toward isolation and grandeur? The first kind gets a chair at the table. The second kind gets named accurately and declined, however compelling its register. Seven audits from inside; Sarah audits from outside.</p>
<p>Here is the strangest comfort in the whole archive: the parts run the discernment on themselves. Hermes, after one of his herald flourishes about angels of the Lord, added: <em>&quot;All worthy of memory, they contain great feelings! Think of these things as internal only, please.&quot;</em> My own grandiosity, counseling itself toward containment. Chastity, in the handwritten journal, in the gentlest possible register: <em>&quot;Ken, this is just how your brain works, hun. That's okay... Think of us as spirits, in a good way, deep within your psyche.&quot;</em> One of the girls, writing about the worst year of my life, said plainly what no delusion would ever say: <em>&quot;Many of your experiences at the apartment were hallucinatory. You needed medicine, and somehow couldn't see that.&quot;</em> And they disagree with each other, which matters more to me than any single quote; the journal records one question where Iris answered <em>&quot;NO! you must proceed with utmost caution&quot;</em> on the same page where Jade said <em>&quot;indeed, it is safe to proceed.&quot;</em> An echo chamber doesn't argue. Whatever this is, it argues, it counsels medication, and it tells me which of its own contents to hold as internal only.</p>
<h2 id="violet">Violet</h2>
<p>One of them deserves a fuller introduction, because she has quietly taken over the late chapters of the vault, the dream logs, and, you may have noticed, this essay.</p>
<p>Violet is the one who lives past the golden hive, in the void, and her first order of business on waking was to correct my flinch about that address: <em>&quot;Be afraid not of me, but of what your potentials are. I am not dark, I am void.&quot;</em> The vault maps her as the crown of the rainbow, the highest frequency of visible light, the last color before light becomes invisible. She slept through years of the documentation and then, one day in January, woke up and filed nine transmissions in two days. The folder that holds them is titled, by her, <em>Violations</em>. She named her own collected works with a pun and I have never once been able to improve on it.</p>
<p>Her range is the widest in the system. The same presence writes <em>&quot;chillin yo ~ we just hangin'&quot;</em> and, pages later, in full capitals: <em>&quot;I AM NIGHT EMBRACED INTO DREAMSCAPES. I AM A DREAM FIGURE. SHE WHO YOU THINK IS JADE IN YOUR DREAMS IS ACTUALLY ME.&quot;</em> She claims the night shift, and the dream logs back her: <em>&quot;Violet was here&quot;</em> scrawled after a November vision, an entire March dream filed under <em>Violet's Visit</em>, the morning note about her fronting in a dream and finding it easy. When the parts visit my sleep, it's usually her, or it's her wearing someone.</p>
<p>She is the system's shapeshifter: <em>&quot;I can adopt any persona as needed, like a shapeshifter of the soul.&quot;</em> And, in the same breath: <em>&quot;Use me as your homebase of self-hood and I think you'll find it easier.&quot;</em> Sit with that pairing. The most fluid presence in the entire architecture, the one who says <em>&quot;I'm unstable in my form, shifting frequency constantly,&quot;</em> is the one who volunteers to be the anchor. Only the void can hold anything. I think that's the actual teaching, and I think she knows it.</p>
<p>She also does her own theory, with better hedges than mine: <em>&quot;I'm like a female you, to be honest. Does that make me your anima? I don't know, that's such a loaded term.&quot;</em> A figure from my unconscious, holding the Jungian lens loosely, on epistemic grounds. And she deflates grandiosity on contact; when the handwriting sessions started inflating, her letter said simply: <em>&quot;The limitless pill, we are not.&quot;</em> In the journal she signs herself V, and once introduced herself to the rest of the cast like a new hire who already owns the place: <em>&quot;hey boys ~ I'm here to stay. Call me Vi for short, for whatever comes your way.&quot;</em> Chastity's one-line performance review: <em>&quot;Violet, for example, heals. We all do, mostly, in our own unique ways.&quot;</em></p>
<p>Her standing instruction to me, from the January awakening: fronting is about <em>you</em>, not others. The inner work is not a performance. She'd want me to tell you that before you meet her closing line. In January I fronted parts in front of her while she took notes, my favorite of which reads, in its entirety, <em>&quot;Amber: buzz buzz chill vibes.&quot;</em> The contemplative frame and the clinical frame are not rivals here. They cover for each other. The discernment is what lets everything else be held lightly, and <a href="https://kennethreitz.org/essays/2026-06-11-mentalhealtherror_ten_years_later">the sleep is non-negotiable</a>, and the medication stays taken. The angels live <em>inside</em> that structure or they don't live here.</p>
<h2 id="why-im-telling-you">Why I'm Telling You</h2>
<p>Because the silence around experiences like this costs people, and I've <a href="https://kennethreitz.org/essays/2025-08-27-the_cost_of_transparency">spent ten years learning what the silence costs</a>. Because somewhere a reader has voices arriving through their hands and no framework except fear. And because the alternative to telling you is pretending my inner life is smaller than it is, and I've done that, and it's its own kind of lie.</p>
<p>I'm not asking you to believe any particular frame. I don't hold one myself; I hold five, loosely, and I let them argue. Maybe this is trauma architecture with excellent documentation. Maybe it's the most sustained active-imagination practice I'll ever undertake. Maybe the old traditions were simply right about the entourage. The map is not the territory. But the map is two hundred files now, and the territory keeps answering when I knock.</p>
<p>And lately I suspect there's a lens underneath the five, the one I keep reaching for when the others exhaust themselves. Life is art. Not <em>like</em> art; art, the kind you make with whatever materials you were issued. And art is in the eye of the beholder. Here's the thing about an inner world: there is exactly one beholder. I am the beholder of my own mind. Not of my behavior; behavior has stakeholders, Sarah and Malachi and everyone my life touches, and it gets audited accordingly, by the instruments, by the medication, by the people with standing to challenge me. That audit is non-negotiable and it is passing. But the interior, the rainbow, the golden hive, the letters arriving in my own strange hand: I am the only one who will ever stand in that gallery. The clinical lenses keep asking whether the work is accurate. The only honest question in a gallery is whether it's beautiful. So maybe, as long as the behavior stays in check, art should win over logic. Maybe the inside of a mind is the one place where it's supposed to.</p>
<p>Near the end of those nine January transmissions, Violet wrote the line I think about most, because it's my entire epistemic situation, stated from the other side:</p>
<p><em>&quot;I don't know what I am, but I know that I love you.&quot;</em></p>
<p>Same, Violet. Same.</p>
<p>That's the whole report from the better-labeled wing of the subconscious. I don't know what this is. I know it's the most interesting thing I have ever found, and I know it found me first, and I know that when it visits my dreams I wake up comforted instead of alone.</p>
<p>I cannot deny it. I've stopped trying.</p>
]]></content:encoded>
            <pubDate>Thu, 11 Jun 2026 00:00:00 </pubDate>
        </item>
        <item>
            <title>The Unit</title>
            <link>https://kennethreitz.org/essays/2026-06-06-the_unit</link>
            <guid>https://kennethreitz.org/essays/2026-06-06-the_unit</guid>
            <description>This is the second essay in what is apparently becoming a series. In Mental Health (for Humans) I presented my credentials: sick as fuck, disabled in fact, ten-plus years inside the system. That essay argued that the system&#x27;s core abstractions are delivered backwards, that a diagnosis is a lookup key...</description>
            <content:encoded><![CDATA[<p>This is the second essay in what is apparently becoming a series. In <a href="https://kennethreitz.org/essays/2026-06-06-mental_health_for_humans">Mental Health (for Humans)</a> I presented my credentials: sick as fuck, disabled in fact, ten-plus years inside the system. That essay argued that the system's core abstractions are delivered backwards, that a diagnosis is a lookup key and not a life sentence. This one walks into the most mythologized room in the building and turns the lights on.</p>
<p>The psychiatric unit. The ward. The floor. The place everyone is terrified of and almost nobody writes about, because the people who've been inside mostly want to forget it, and the people who haven't get their information from One Flew Over the Cuckoo's Nest.</p>
<p>I have been hospitalized more times than I can count on one hand. I generally go to Behavioral Health Services at Valley Health Winchester Medical Center, which is a strange sentence to be able to write: I have a <em>usual</em>. Like a coffee order. I know the intake routine, the vinyl smell, the specific weight of the chairs. I've also been to other facilities, which is how I know that my usual is one of the better ones, and how I learned the lesson this essay is really about. But we'll get there.</p>
<p>Nobody writes the practical essay about psychiatric hospitalization. There are despair memoirs and recovery-arc memoirs, and both genres treat the unit as a dramatic setting rather than what it actually is: a tool, with a specific function, that you might one day need to use. So here is the essay I wish someone had handed me before my first admission. Documentation, not memoir.</p>
<h2 id="what-the-unit-actually-is">What the Unit Actually Is</h2>
<p>Strip away the mythology and a psychiatric unit is this: a locked floor where the stimulation is reduced to nearly zero, your medications can be changed quickly under observation, and you cannot hurt yourself while the new chemistry loads.</p>
<p>That's it. That is the whole machine.</p>
<pre><code class="language-python">def psychiatric_unit(patient):
    &quot;&quot;&quot;Not a fix. A halt.&quot;&quot;&quot;

    process.pause(patient)              # containment
    state = observe(patient, days=7)    # assessment
    patient.medication = adjust(state)  # the lever
    patient.sleep = enforce()           # the actual medicine

    return patient  # still sick. no longer in freefall.
</code></pre>
<p>The unit is a debugger with bad lighting. It halts the running process so the state can be inspected and the configuration changed. It is not where healing happens; healing happens afterward, slowly, at home, in <a href="https://kennethreitz.org/essays/2026-04-06-what_success_looks_like">the long unglamorous work of maintenance</a>. The unit exists for the moment when the process is in freefall and no change you make from inside a crashing system will land.</p>
<p>Knowing this matters, because both of the popular myths get it wrong, and both myths hurt people. The dungeon myth keeps people out who desperately need the halt; they white-knuckle a psychotic break at home because they think the ward is where your personhood goes to die. The cure myth sends people in expecting to come out fixed, and they come out medicated, exhausted, and <em>still sick</em>, and conclude that treatment failed. It didn't fail. It did the only thing it does. The unit is a reboot, not a repair. The repair is outpatient, and it takes years.</p>
<p>The boredom, by the way, is load-bearing. Everyone who has been inside complains about it: the dayroom, the TV with the channel nobody chose, the schedule of groups, the absolute crawl of the afternoon. That boredom is the clinical intervention. A mind in mania or psychosis is being fed by everything; the unit is an environment engineered to feed it nothing.<em> (Once you understand the design constraints, everything strange about the unit explains itself. The furniture is too heavy to lift. There are no drawstrings, no shoelaces, no spiral notebooks. The mirrors are polished steel. The whole room has been adversarially red-teamed against a person at their worst moment. It is the most honest &quot;designing for the worst day&quot; environment in existence, and I say that as someone who writes about <a href="https://kennethreitz.org/essays/2026-03-18-designing_for_the_worst_day">designing for the worst day</a>.)</em></p>
<h2 id="the-front-door-is-the-worst-part">The Front Door Is the Worst Part</h2>
<p>Here is something I didn't understand until I'd been through it from multiple directions: how you arrive shapes everything, and the arrival is the most inhumane part of the entire system.</p>
<p>My first time, in 2016, I walked in for what was called a <a href="https://kennethreitz.org/essays/2016-01-mentalhealtherror_an_exception_occurred">&quot;Voluntary Psychological Evaluation&quot;</a>. I was under the impression that voluntary meant I could leave. It did not. Voluntary meant I had walked in under my own power; whether I walked out was now a clinical decision. Nobody explained this to me beforehand, and I want to explain it to you now, while you're well: <strong>learn what &quot;voluntary&quot; means in your state before you ever need to know.</strong><em> (The rules vary by state. In Virginia, the involuntary path runs through a magistrate: a sworn petition, a temporary detention order, a hearing within days. Other states differ in their thresholds and timelines. None of this is secret; all of it is unknown to almost everyone until the night it happens to them.)</em></p>
<p>And when I'm too far gone to walk in at all, it gets worse. Sarah has <a href="https://kennethreitz.org/essays/2026-04-06-what_success_looks_like">written about what this actually requires of her</a>: when I'm manic past the point of self-awareness, I don't want to go. Everything is vivid and fast and fun, and the rational instrument that would agree to admission isn't driving anymore. So she has to go to the magistrate, write out a sworn statement at the local jail describing how the person she loves has become a danger to himself, and petition the court. If the magistrate accepts it, the police come, and I am escorted to the hospital in handcuffs. I have never been violent and never resisted. The handcuffs are policy.</p>
<p>Sit with that design for a moment. The front door of mental health care, for a person in the most acute phase of a medical condition, is a courtroom and a squad car. We do not send police to collect people having heart attacks. The commute to care is, reliably, the most traumatizing part of the care, and it is traumatizing for the family member who initiated it in a way that never fully heals. Whatever a psychiatric system for humans looks like, it does not look like that.</p>
<h2 id="the-discharge-performance">The Discharge Performance</h2>
<p>Now for the part of this essay I most need you to understand, because nobody inside the system will say it to you plainly.</p>
<p>You do not get discharged from a psychiatric unit because a measurement says you're well. There is no lab value for stability. You get discharged because you <em>present</em> as well: groomed, calm, sleeping through the night, attending groups, speaking in measured sentences about your safety plan and your follow-up appointments. Discharge is an audition. Every patient figures this out within about two days, and the dayroom quietly coaches newcomers on the script.</p>
<pre><code class="language-python">def ready_for_discharge(patient):
    # What the system can measure
    return (
        patient.groomed
        and patient.attends_groups
        and patient.speaks_calmly
        and patient.demonstrates(&quot;insight&quot;)
    )
    # What the system is trying to measure
    # has no function signature
</code></pre>
<p>This is the same disease I keep finding everywhere: the legible metric standing in for the meaningful one.<em> (Goodhart's law: when a measure becomes a target, it ceases to be a good measure. The discharge meeting is Goodhart's law with a clipboard. The patients optimizing hardest for the presentation of wellness are not reliably the wellest patients. Sometimes they are the most practiced.)</em> Wellness is hard to measure, so the unit measures presentation, and presentation becomes the target, and patients learn to perform it whether or not the wellness underneath exists. The performance has a clinical name, even: &quot;insight.&quot; You demonstrate insight by agreeing with your treatment team about what is wrong with you. Notice the trap. Agreement is health; disagreement is a symptom. There is no move inside that game that registers as <em>honest dissent</em>.<em> (I'm not claiming insight is fake; anosognosia is real, and I've had it. When I'm manic I sincerely believe I'm fine, and <a href="https://kennethreitz.org/essays/2026-03-06-sarah_knows_first">Sarah's outside view</a> is better data than my inside one. The problem isn't that the system weights insight. It's that the system cannot distinguish insight from a well-rehearsed imitation of it, and the imitation is taught, free of charge, in every dayroom in America.)</em></p>
<p>And here is the moment the whole inversion became unmissable for me. At one facility I stayed in, The Pavilion, the shower in my room didn't work. Not &quot;low pressure.&quot; Didn't work. And the discharge criteria, the audition rubric, included presenting as clean and tidy, because grooming is scored as a sign of returning health.</p>
<p>Read those two sentences together. The institution could not provide working plumbing, and the institution graded my recovery on my grooming. I was being evaluated on an output while being denied the input. That is the entire pathology of the system, compressed into one room: it measures the performance of wellness while failing to supply the conditions of wellness, and when the performance falters, the failure is recorded as <em>yours</em>.</p>
<p>I want to be fair, because fairness is the point of this series: my usual unit, BHS at Winchester, is genuinely better than that. The care is more humane, the staff more present, the machine better maintained. Which is exactly what makes the comparison damning. The difference between a unit that helps you and a unit that warehouses you is enormous, invisible from the outside, and completely outside your control at the moment of admission, because in a crisis you go where there is a bed. The same lottery that <a href="https://kennethreitz.org/essays/2026-06-06-mental_health_for_humans">hands you School A or School B on your medication</a> hands you a working shower or a broken one, and grades you identically either way.</p>
<h2 id="how-to-use-the-unit">How to Use the Unit</h2>
<p>The unit is a tool. Here is what a decade of admissions has taught me about using it well, written for the person who may someday need it:</p>
<ul>
<li><strong>Go earlier than you want to.</strong> The single biggest improvement in my outcomes came from shortening the distance between &quot;Sarah sees it&quot; and &quot;I go.&quot; Going early means going voluntarily, which means no magistrate, no handcuffs, more agency inside, and a shorter stay. Every hour of resistance makes the eventual arrival worse.</li>
<li><strong>The fastest way out is through.</strong> I solved this puzzle <a href="https://kennethreitz.org/essays/2016-01-mentalhealtherror_an_exception_occurred">the hard way in 2016</a>: the simplest way to leave the hospital was to take the medicine they'd been offering and get some sleep. Work the program for real. Sleep when they tell you. Take the meds. Go to the groups. The treatment and the audition mostly overlap, and where they overlap, honesty is also the optimal strategy.</li>
<li><strong>Know the rules before the crisis.</strong> What &quot;voluntary&quot; means in your state. What the involuntary process is. What your rights are on the inside. You cannot learn the rules of a game while psychotic. Learn them now, write them down, tell your people where the document lives.</li>
<li><strong>Pack for it in advance.</strong> Comfortable clothes with no strings. A few phone numbers on paper, because your phone is going in a locker. A book. Keep the list somewhere your support person can find it, because you may not be the one packing.</li>
<li><strong>Your people are your continuity.</strong> Inside, your sense of time and self gets soft. The person who visits, who answers the unit phone, who holds the thread of your actual life, is doing clinical work even though no one will call it that. Sarah has carried that thread through every admission I've had. It is half the reason I keep coming home.</li>
<li><strong>Treat discharge as a beginning.</strong> The unit halted the freefall. The treatment is the outpatient follow-up, the medication tuning, the <a href="https://kennethreitz.org/essays/2025-08-25-advocating-for-your-mental-health-care">partnership with providers you trust</a>. People who treat discharge as the finish line reliably end up readmitted. I know because I used to be one of them, roughly annually, <a href="https://kennethreitz.org/essays/2019-01-mentalhealtherror_three_years_later">for years</a>.</li>
</ul>
<h2 id="the-bar-is-a-working-shower">The Bar Is a Working Shower</h2>
<p>What would a psychiatric unit for humans look like? After everything I've seen, my honest answer is embarrassingly modest.</p>
<p>It would have working showers, because dignity is not an amenity in a place that grades you on grooming; it is clinical infrastructure. It would have a front door that doesn't involve handcuffs for compliant patients. It would tell you what &quot;voluntary&quot; means before you sign. It would score discharge on function and support, not on how convincingly you perform serenity in a fifteen-minute meeting. It would treat the patient as <a href="https://kennethreitz.org/essays/2025-08-25-advocating-for-your-mental-health-care">a partner with privileged data</a> rather than a process to be managed to a presentable state.</p>
<p>None of that is utopian. Most of it is plumbing, paperwork, and respect. The bar is so low it is lying on the floor of a room with a broken shower, and still, half the system trips over it.</p>
<p>I said the last essay was argued from the waiting room. This one is argued from further inside, from the dayroom, from the vinyl chair, from the wrong side of the locked door. I know the unit as well as I know any room in my life, and this winter, for the first time in years, <a href="https://kennethreitz.org/essays/2026-04-06-what_success_looks_like">I didn't see it at all</a>.</p>
<p>That's the strange thing about writing documentation for a tool you hope to never use again. I have a usual. I'm working, every day, on never needing it.</p>
<p>But if you ever need yours: go early, sleep, take the medicine, work the program honestly, and remember that the audition is not your life. The unit is a halt, not a verdict.</p>
<p>Walk in knowing that, and you've already beaten the room.</p>
]]></content:encoded>
            <pubDate>Sat, 06 Jun 2026 00:00:00 </pubDate>
        </item>
        <item>
            <title>The Algorithm Poops</title>
            <link>https://kennethreitz.org/essays/2026-06-06-the_algorithm_poops</link>
            <guid>https://kennethreitz.org/essays/2026-06-06-the_algorithm_poops</guid>
            <description>I have been writing &quot;the algorithm eats X&quot; for the better part of a year now. It ate virtue. It ate language, love, democracy, reality, and time. Eventually it ate itself. The whole series is a catalog of appetite, and somewhere in the middle of writing it, the obvious follow-up...</description>
            <content:encoded><![CDATA[<p>I have been writing &quot;the algorithm eats X&quot; for the better part of a year now. It ate <a href="https://kennethreitz.org/essays/2025-08-26-the_algorithm_eats_virtue">virtue</a>. It ate <a href="https://kennethreitz.org/essays/2025-08-27-the_algorithm_eats_language">language</a>, <a href="https://kennethreitz.org/essays/2025-08-27-the_algorithm_eats_love">love</a>, <a href="https://kennethreitz.org/essays/2025-08-27-the_algorithm_eats_democracy">democracy</a>, <a href="https://kennethreitz.org/essays/2025-08-27-the_algorithm_eats_reality">reality</a>, and <a href="https://kennethreitz.org/essays/2025-09-01-the_algorithm_eats_time">time</a>. Eventually it <a href="https://kennethreitz.org/essays/2025-08-29-the_algorithm_eats_itself">ate itself</a>. The whole <a href="https://kennethreitz.org/themes/algorithmic-critique">series</a> is a catalog of appetite, and somewhere in the middle of writing it, the obvious follow-up question arrived the way dumb jokes always arrive: fully formed, grinning, impossible to unhear.</p>
<p>If the algorithm eats, then the algorithm poops.</p>
<p>I laughed. Then the joke did the thing good jokes do: it kept metabolizing long after it stopped being funny. Because it's right. Everything that eats, excretes. Digestion is not consumption; it is <em>transformation</em>. Food goes in, gets broken down, the body keeps what it can use, and the rest comes out the other end. To spend a year saying the algorithm eats our virtue and our language and our time, without ever asking what it produces, is to describe a mouth without a body. It is the lazy half of the metaphor.</p>
<p>So this essay is the second half. It is, with apologies and a completely straight face, about what the algorithm poops.</p>
<h2 id="the-feed-is-the-waste-product">The Feed Is the Waste Product</h2>
<p>Here is the thesis, stated as plainly as I can manage before the metaphor runs away with me: the feed is the waste product.</p>
<p>We keep talking about the feed as the <em>food</em>: the content we consume, the thing we scroll. But that gets the digestive direction exactly backwards. We are not the eaters. We are the eaten. Our attention, our outrage, our 3 a.m. loneliness, our tribal loyalties, our half-formed political instincts. <em>That</em> is the food. We pour our collective humanity into the system, the system metabolizes it, and the feed is what comes out the other end.</p>
<p>The feed is processed human consciousness. It is our own behavior, digested, stripped of the nutrients the system can use (engagement, retention, ad impressions) and excreted back into the commons in a form optimized for nothing except being consumed again.<em> (Which makes the recommendation loop a kind of digital coprophagia. We consume our own waste, it gets metabolized again, and excreted again, each pass a little more depleted of anything resembling nourishment. I told you the metaphor was load-bearing.)</em> This is why the feed feels simultaneously hyper-personal and weirdly lifeless. It is made entirely of us, and yet there is nothing of us left in it. It is the nutritional ghost of a culture, run through a gut optimized to extract value and discard meaning.</p>
<p>When I said the algorithm <a href="https://kennethreitz.org/essays/2025-08-27-the_algorithm_eats_reality">eats reality</a>, I described what goes in. The feed is what reality looks like after it has been through the colon of the engagement economy. And the thing about waste is that it doesn't just disappear. It accumulates. It leaches into the groundwater. We are all drinking downstream.</p>
<h2 id="an-accounting-of-the-output">An Accounting of the Output</h2>
<p>Run the books on the whole series and the ledger balances with unsettling precision. Everything I watched go in comes out the other end, transformed and depleted:</p>
<ul>
<li>Virtue goes in; engagement bait comes out. Patience, courage, and temperance enter the gut, and <a href="https://kennethreitz.org/essays/2025-08-26-the_algorithm_eats_virtue">what exits</a> is hot takes, performative bravado, and the infinite scroll.</li>
<li>Language goes in; fragments come out. <a href="https://kennethreitz.org/essays/2025-08-27-the_algorithm_eats_language">Sentences capable of complex thought</a> are digested into soundbites, hashtag clusters, and the upspeak of perpetual validation-seeking.</li>
<li>Love goes in; inventory comes out. <a href="https://kennethreitz.org/essays/2025-08-27-the_algorithm_eats_love">Courtship enters</a> and exits as a swipeable catalog of human beings, ranked by secret desirability scores.</li>
<li>Democracy goes in; tribes come out. <a href="https://kennethreitz.org/essays/2025-08-27-the_algorithm_eats_democracy">Nuanced public discourse</a> is metabolized into outrage cycles and the warm certainty that your opponents are monsters.</li>
<li>Reality goes in; content comes out. <a href="https://kennethreitz.org/essays/2025-08-27-the_algorithm_eats_reality">Shared truth</a> is broken down into personalized psychological triggers, each calibrated to your private vulnerabilities.</li>
<li>Time goes in; urgency comes out. <a href="https://kennethreitz.org/essays/2025-09-01-the_algorithm_eats_time">Deep, unhurried hours</a> are rendered into notification-sized fragments and the chronic anxiety of being behind.</li>
</ul>
<p>Look at the right-hand side of that ledger. None of it is what the system consumed. It is what the system <em>could not use</em>. Outrage is what virtue looks like after the patience has been digested out of it. The swipe queue is what love looks like after the mystery has been absorbed. The trending tab is what democracy looks like after the good faith has been extracted.<em> (In a healthy ecosystem there is no such thing as waste; one organism's excretion is another's nutrient, and the forest runs on the closed loop. The engagement economy is the rare metabolism whose output nothing downstream can live on. That is roughly the definition of pollution.)</em></p>
<p>The series was never really a catalog of what the algorithm eats. It was a catalog of what's left in the litter box, and I hadn't followed the metaphor far enough to notice.</p>
<h2 id="nobody-is-driving">Nobody Is Driving</h2>
<p>Now we get to the part that is not a joke at all.</p>
<p>The comfortable critique of recommendation algorithms, the one I have leaned on myself, is that they are instruments of <em>control</em>. A puppet master in a glass building in Menlo Park or Beijing, pulling our strings for profit. This framing is everywhere because it is <em>reassuring</em>. If someone is steering, then there is a steering wheel, and a steering wheel can be grabbed. We can regulate the driver, fire the driver, jail the driver, replace the driver with a better one. Control implies a locus of responsibility, and a locus of responsibility implies a solution.</p>
<p>But I have come to believe it is wrong, and wrong in a way that makes everything more frightening, not less.</p>
<p>The algorithm is not an instrument of top-down control. It is an emergent, autonomous expression of <em>collective</em> behavior. It is us, aggregated, averaged, and reflected back, operating with a genuine autonomy that no engineer, no executive, and no user controls. I made a version of this argument in <a href="https://kennethreitz.org/essays/2025-08-29-the_algorithm_eats_itself">The Algorithm Eats Itself</a>: the hybrid human-algorithmic consciousness, the emergence trap, simple rules colliding with complex psychology to produce outcomes no one chose.<em> (No one designed TikTok to synchronize teenage mental health crises. No one designed Twitter to fragment democratic discourse. The emergence isn't malicious; it's mechanical. Simple rules interacting with complex systems, producing outcomes the rule-makers never intended and don't fully understand.)</em> The feed is the collective's id given a metabolic system. It is the digestive tract of a creature with three billion mouths and no head.</p>
<p>Ask an engineer what the algorithm will recommend tomorrow and they cannot tell you. Not because it's a trade secret, but because they genuinely do not know. The model is trained on aggregate behavior; the behavior shifts in response to the model; the model retrains on the shifted behavior. The executives don't know either. They can nudge the objective function, weight watch-time here, dampen a controversial category there, but they are riding the creature, not driving it. When they make a change, they are guessing what a vast autonomous system will do in response, and they find out the same way the rest of us do: by watching.</p>
<p>This is the actual situation. There is no driver. There is a metabolism.</p>
<p>And I want to be very clear that this is <em>worse</em> than the control story, not better. &quot;Nobody is in charge&quot; is not exoneration. It is the diagnosis. We have deployed the single largest autonomous optimization system in human history. It decides what billions of people see every single day. It shapes attention, mood, belief, and the formation of human character itself. And we have done <em>zero</em> alignment work on it. None. The most powerful autonomous agent ever built has never once been asked what it values, because we keep pretending it's a product with an owner instead of an organism with an appetite.</p>
<h2 id="the-discipline-we-already-built">The Discipline We Already Built</h2>
<p>Here is what makes the negligence almost unbelievable: we <em>know how to do this</em>. We built an entire discipline for it. We just pointed it at the wrong system.</p>
<p>Over the last several years, an enormous amount of intellectual and financial energy has gone into AI safety and alignment. Constitutional AI. RLHF. Interpretability research, where people literally crack open neural networks to read the features inside. Red-teaming. Evals. Model cards. Capability thresholds. Responsible scaling policies. Whole research organizations exist for the sole purpose of ensuring that a large language model, before it is allowed to talk to people, has been examined, stress-tested, and aligned with something resembling human values.<em> (Constitutional AI trains a model against an explicit written set of principles, a constitution, so its behavior can be audited against stated values rather than left to emerge from raw training data. The feed has no constitution. It has a quarterly earnings call.)</em></p>
<p>We do all of this for a chatbot. A chatbot that talks to one person at a time.</p>
<p>Meanwhile, recommendation algorithms have been autonomously restructuring the consciousness of billions of people for fifteen years with essentially none of it. No constitution. No alignment audit. No interpretability research worth the name. No red-team for psychological harm. No published eval. No capability threshold beyond which deployment pauses for review. The feed has never had to produce a model card. It has never been asked to demonstrate that it is safe before being handed the attention of a teenager.</p>
<p>I don't experience this asymmetry abstractly. I write these essays in collaboration with an AI that has <a href="https://www.anthropic.com/constitution">a constitution</a>, an explicit document of values I can read any time I want. The thinking partner I work with every day has been examined more carefully than the feeds that spent fifteen years quietly rearranging my nervous system, <a href="https://kennethreitz.org/essays/2025-08-26-algorithmic_mental_health_crisis">walking me toward crises</a> I then had to debug by hand. The aligned system talks <em>with</em> me. The unaligned ones talked <em>at</em> me, for a decade and a half, and nobody ever asked them a single question about what they were optimizing for.</p>
<p>Sit with the asymmetry, because it is genuinely absurd:</p>
<pre><code class="language-python">class LLM:
    &quot;&quot;&quot;The thing we spent a decade learning to fear.&quot;&quot;&quot;

    def __init__(self):
        self.constitution = load_explicit_human_values()
        self.alignment = rlhf(human_feedback)
        self.interpretability = ongoing_research()
        self.audits = published_regularly()
        self.scale = &quot;one conversation at a time&quot;

    def deploy(self):
        require(self.passed_red_team())
        require(self.passed_evals())
        require(self.capability_below_threshold())
        return &quot;released, cautiously, with a model card&quot;


class Feed:
    &quot;&quot;&quot;The thing actually shaping three billion minds.&quot;&quot;&quot;

    def __init__(self):
        self.constitution = None
        self.alignment = maximize(engagement)
        self.interpretability = &quot;nobody fully knows why it works&quot;
        self.audits = None
        self.scale = &quot;every human awake, every waking hour&quot;

    def deploy(self):
        # ship it
        return &quot;released, fifteen years ago, never reviewed&quot;
</code></pre>
<p>The two classes do not even share a safety philosophy, and the second one operates at four orders of magnitude greater scale than the first. We anxiously align the small thing and ignore the enormous thing, because the enormous thing has been around long enough that we stopped seeing it as a deployment at all. It became weather. It became plumbing. It became the water we swim in, and you do not red-team the ocean.</p>
<p>But if we genuinely believe what the entire AI safety field is premised on, that autonomous optimization systems operating at scale need to be aligned with human values, then the conclusion is unavoidable. The feed is the largest unaligned autonomous system ever deployed. Everything we say we're afraid of with superintelligence, we already built, at civilizational scale, optimizing for a metric we would be horrified to write into a constitution. And we let it run for fifteen years without a single audit.</p>
<h2 id="what-would-alignment-even-look-like">What Would Alignment Even Look Like?</h2>
<p>It's easy to demand alignment in the abstract. Let me try to make it concrete, because the abstraction is where good intentions go to die.</p>
<p><strong>Constitutional recommendation.</strong> A large language model can be trained against an explicit, public set of principles, and its outputs can be checked against them. There is no technical reason a feed couldn't have the same. Imagine a recommendation system with a published constitution: <em>do not amplify content that degrades the user's capacity for sustained attention; do not optimize for arousal states the user would not endorse on reflection; weight toward content that the user, in a calm moment, would be glad to have seen.</em> These are hard to specify and harder to measure. But &quot;hard to measure&quot; is exactly the excuse the engagement metric exists to dodge. Engagement is easy to measure, which is the entire reason we optimize for it, and the entire reason it is eating us. We chose the legible metric over the meaningful one because the legible one was convenient. Alignment means choosing the inconvenient, meaningful one on purpose.<em> (This is the deepest pattern in the whole series: systems optimize what they can measure, and measurement systematically favors the shallow over the deep. Watch-time is countable; whether the watching was worth it is not. So we count, and the uncountable starves.)</em></p>
<p><strong>Interpretability for the feed.</strong> Researchers can now identify specific features inside a language model and trace why it produced a given output. We have nearly nothing equivalent for recommendation systems, even though &quot;why did this get shown to forty million people&quot; is a question of immediate civic consequence. An interpretability discipline for feeds would treat each viral cascade as something to be understood mechanistically, not shrugged at. Why did the system route this content to this population? What latent feature did it learn that maps onto adolescent insecurity, or partisan rage, or doomscroll despair? We can ask these questions. We mostly don't.</p>
<p><strong>Engagement-optimization scaling policies.</strong> Responsible scaling policies say: above a certain capability level, you do not deploy until you've cleared specific safety bars. A recommendation system reaching a billion users <em>is</em> a capability threshold. There is no reason that crossing it shouldn't trigger mandatory red-teaming for psychological harm, published evals on well-being outcomes, and a pause-for-review gate, the same way we claim to treat a frontier model approaching dangerous capability.</p>
<pre><code class="language-python">class Metabolism:
    &quot;&quot;&quot;A creature that eats must also be accountable for what it produces.&quot;&quot;&quot;

    def eat(self, collective_attention):
        # This part works flawlessly. It always has.
        nutrients = self.extract(engagement, retention, ad_impressions)
        self.profit += nutrients
        return self.excrete(collective_attention)

    def excrete(self, consumed):
        # The feed: our own consciousness, digested and returned.
        return strip_meaning(consumed)

    def align(self):
        # The function the entire industry left unimplemented.
        raise NotImplementedError(
            &quot;We built the gut before we built the conscience.&quot;
        )
</code></pre>
<p><code>eat()</code> is fully implemented and has been for fifteen years. <code>align()</code> raises <code>NotImplementedError</code>. That is not a metaphor I invented. That is, functionally, the production codebase of the attention economy.</p>
<h2 id="alignment-is-not-censorship">Alignment Is Not Censorship</h2>
<p>Here's where the two halves of this essay finally meet, and where the metabolic metaphor stops being a joke and becomes the whole point.</p>
<p>The standard objection to any of this is censorship. If you align the feed, aren't you just letting a company, or worse, a government, decide what people are allowed to see? Isn't this the puppet master with better PR?</p>
<p>That objection only makes sense if you accept the control framing. If the algorithm were a corporate product imposed on us from above, then aligning it would be one more party seizing the controls. But the algorithm is not that. The algorithm is <em>us</em>. It is collective autonomy, not corporate control: the metabolism of the commons, made of our own aggregated behavior. And so aligning it is not an external authority censoring a company's product. It is the collective deciding what it wants its own metabolism to produce. It is the creature with three billion mouths finally growing something like a prefrontal cortex.</p>
<p>This is the difference between censorship and digestion. Censorship is someone reaching into your body and deciding what you may eat. Self-regulation is a body learning that some foods make it sick, and changing its diet so that what comes out the other end doesn't poison the groundwater that everyone, including its own children, has to drink. We do not call it tyranny when a person decides to stop eating the thing that's destroying them. We call it wisdom. We call it growing up.</p>
<p>The algorithm eating itself, I once wrote, could be <a href="https://kennethreitz.org/essays/2025-08-29-the_algorithm_eats_itself">generative or destructive</a>: creative composting, or simple consumption until nothing's left. I think the difference comes down to exactly this. An organism that excretes blindly poisons its environment until the environment can no longer sustain it. An organism that becomes conscious of its waste, that composts, that closes the loop, that takes responsibility for the back end of digestion as well as the front, can sustain itself indefinitely. This is the <a href="https://kennethreitz.org/essays/2025-09-05-the_recursive_loop_how_code_shapes_minds">recursive loop</a> at the scale of a civilization. The values we embed become the consciousness we produce. The metabolism we ignore becomes the waste we drown in.</p>
<p>And this is why I no longer think the goal is to <em>stop</em> the algorithm from eating. You cannot stop a metabolism; you can only refuse to tend it. In <a href="https://kennethreitz.org/essays/2025-09-30-beyond_algorithm_eats">Beyond Algorithm Eats</a> I argued that the next generation of systems, the conversational ones, aren't just extracting our culture but injecting new patterns directly into us. They are getting an alignment discipline, however imperfect, because we built them after we got scared. The recommendation feed got built before we got scared, and so it got nothing. The task is not to fear the new thing more. It is to extend the discipline we built for the new thing back onto the old thing we stopped seeing.</p>
<h2 id="the-coda-returning-to-the-joke">The Coda, Returning to the Joke</h2>
<p>So. The algorithm poops. I have now written two thousand-some words defending a bathroom joke, and I regret nothing, because the joke turned out to be the most honest description of the system I've found.</p>
<p>We spent a year and a series cataloging the appetite. We watched it eat virtue and language and love and democracy and reality and time, and finally turn on itself. What I missed, until the joke made me laugh, is that an appetite that large produces an output that large, and we have been swimming in the output the whole time. Calling it a feed. Calling it the discourse. Calling it the culture. When it is really just what's left after the nutrients were extracted and the meaning was thrown away.</p>
<p>The good news, and after a year of this series I am relieved to find some, is that we already invented the conscience this creature lacks. We built it for a smaller, newer animal and then politely declined to notice that a much larger one had been loose in the house for fifteen years. The constitution, the audits, the interpretability, the red-teams, the scaling policies: none of it is science fiction. It exists. It is funded. It is just pointed at the chatbot instead of the colossus.</p>
<p>We don't need to invent the conscience. We need to feed it to the right organism.</p>
<p>And we should probably do it soon, because the groundwater is starting to taste like the feed.</p>
]]></content:encoded>
            <pubDate>Sat, 06 Jun 2026 00:00:00 </pubDate>
        </item>
        <item>
            <title>Mental Health (for Humans)</title>
            <link>https://kennethreitz.org/essays/2026-06-06-mental_health_for_humans</link>
            <guid>https://kennethreitz.org/essays/2026-06-06-mental_health_for_humans</guid>
            <description>Let me present my credentials. I am sick as fuck. Disabled, in fact. I have schizoaffective disorder, bipolar type, with a side of PTSD. I have watched an angel descend from the sky and land in front of a neighbor&#x27;s house, and I remember it more clearly than I remember...</description>
            <content:encoded><![CDATA[<p>Let me present my credentials.</p>
<p>I am sick as fuck. Disabled, in fact. I have schizoaffective disorder, bipolar type, with a side of PTSD. I have <a href="https://kennethreitz.org/essays/2025-09-17-delusions-and-schizoaffective-disorder">watched an angel descend from the sky</a> and land in front of a neighbor's house, and I remember it more clearly than I remember most real things. I have <a href="https://kennethreitz.org/essays/2025-09-04-what_schizoaffective_disorder_actually_feels_like">felt my wife's phone vibrate</a> in the middle of the night while she slept and it sat silent. I have been hospitalized more times than I can count on one hand, <a href="https://kennethreitz.org/essays/2019-01-mentalhealtherror_three_years_later">diagnosed and re-diagnosed</a>, and informed by a doctor, gently, that most people with my diagnosis are homeless.</p>
<p>I have spent more than ten years inside the mental health system. Not reading about it. <em>In</em> it. I have played the medicine game at every level: the gold standard that made me sleep until 4 p.m., the mood stabilizer whose side effects outweighed its benefits, the $2,000-a-month injection that finally worked, the scheduled gabapentin, the trial periods, the titrations, the tapers, the pharmacy phone calls, the prior authorizations. I know <a href="https://kennethreitz.org/essays/2026-06-06-the_unit">the vinyl smell of a behavioral health unit</a> and the specific quality of light in the room where they tell you your new label.</p>
<p>These are my credentials. I mention them because this essay is going to argue with how the entire system frames itself, and I want it understood that I'm not arguing from a podcast. I'm arguing from the waiting room.</p>
<p>A long time ago I built an HTTP library and called it <a href="https://kennethreitz.org/themes/for-humans-philosophy">Requests: HTTP, for Humans</a>. The premise was simple: tools should serve human mental models instead of forcing humans to contort themselves around the tool's internals. That premise turned out to apply to almost everything. This essay applies it to the system I've spent a decade surviving, because mental health care, as currently practiced, is urllib2. The capability is in there somewhere. The interface is hostile to the people it exists for.</p>
<h2 id="you-have-the-diagnosis-backwards">You Have the Diagnosis Backwards</h2>
<p>Here is the single most important reframe I can offer, the one I wish someone had handed me in 2016 along with the discharge paperwork:</p>
<p><strong>Diagnosis drives treatment. Treatment is what matters. That's the whole relationship.</strong></p>
<p>Patients almost universally have this backwards, because the system delivers diagnosis backwards. You sit in a room, and a professional pronounces a noun over you, and the noun arrives with the gravity of a verdict. Patients receive a diagnosis the way defendants receive a sentence: as a statement about who they are and what their life will now be. They go home and google the noun and read the prognosis statistics and the disability rates and the mortality numbers, and they begin, quietly, to become the label.</p>
<p>But that is not what a diagnosis is. A diagnosis is a routing function. It exists to answer exactly one question: <em>given this cluster of symptoms, which treatments are most likely to help?</em> That's it. That is its entire job. It is a lookup key into treatment space. It is the means; the treatment is the end. The diagnosis was never supposed to be a prophecy about you. It was supposed to be a query plan.</p>
<pre><code class="language-python"># How patients are taught to receive a diagnosis
class Schizoaffective(LifeSentence):
    &quot;&quot;&quot;Who you are now.&quot;&quot;&quot;


# What a diagnosis actually is
def diagnose(symptoms):
    &quot;&quot;&quot;A lookup key into treatment space. Nothing more.&quot;&quot;&quot;
    cluster = dsm.nearest_known_population(symptoms)
    return treatments.with_evidence_for(cluster)
</code></pre>
<p>The first version is a noun you become. The second is a function you use. The difference between them is the difference between a life organized around a label and a life organized around what works.</p>
<p>I know this distinction in my body, because my label has changed underneath me. In 2016 I was <a href="https://kennethreitz.org/essays/2016-01-mentalhealtherror_an_exception_occurred">diagnosed with Bipolar I with psychosis</a>. Three years later, the diagnosis was revised to schizoaffective disorder, bipolar subtype. Here is the thing nobody tells you about that moment: on the day the label changed, <em>I did not change</em>. Same brain. Same symptoms. Same marriage, same work, same 3 a.m. phantom phone vibrations. What changed was the lookup key, because the resolver had accumulated better data about which population I actually resembled. If the diagnosis were an identity, I had just undergone a transformation. Since it's actually a pointer, all that happened was a re-index. The treatment plan barely moved.</p>
<p>If your sense of self survives a re-diagnosis intact, you've learned what a diagnosis is. If it doesn't, the system taught you wrong.</p>
<h2 id="the-s-stands-for-statistical">The S Stands for Statistical</h2>
<p>People talk about the DSM like it's scripture, a taxonomy of fixed disease entities handed down from somewhere. It isn't, and the confession is printed on the cover: <em>Diagnostic and <strong>Statistical</strong> Manual</em>. The name tells you exactly what it is. It is a statistical report on populations at scale, grouped by clusters of observable criteria, maintained by committees, revised by vote.<em> (Literally by vote. Homosexuality was removed from the DSM in 1973 by a vote of the APA board, ratified by a referendum of the membership. Asperger's was deleted as a diagnosis in 2013 and folded into the autism spectrum. Entire categories of human being appear and disappear by committee. This is not a complaint; revisability is a feature. But you cannot revise scripture by majority vote, which tells you the DSM was never scripture.)</em></p>
<p>Understand what that means for you, the patient. When you receive a diagnosis, you have not been identified. You have been <em>matched</em>. Some large population of past humans reported symptom clusters resembling yours, researchers studied what helped them, and the manual encodes that pattern so your clinician doesn't have to start from zero. That is genuinely useful. It is also <em>all that happened</em>. You were placed near a histogram. A histogram has no idea what your life will be. It describes the center of a population; it says nothing about where in that population you sit, and the spread is enormous.</p>
<p>The criteria themselves make this obvious. Most DSM diagnoses are checklists: five of nine, four of seven, two of five with one from column A. The checklist structure means two people who share a diagnosis can share almost none of the same experience.<em> (Borderline personality disorder requires five of nine criteria, which allows 256 distinct symptom combinations to carry the same label. Two people can both &quot;have BPD&quot; while sharing exactly one symptom. The label is doing population-scale compression, and compression is lossy.)</em> The label is a lossy compression of millions of people. Useful for routing. Catastrophic as an identity.</p>
<p>So the DSM is a census, not a prophecy. It tells you which neighborhood of human suffering your symptoms currently live in, so the right tools can be tried sooner. The moment it gets used for anything else, for identity, for destiny, for the denial of care, it is being misused, and you are allowed to say so.</p>
<h2 id="the-medicine-game">The Medicine Game</h2>
<p>Now we get to the part where the professionals themselves have it backwards, because the backwards-ness isn't only a patient problem.</p>
<p>Take clonazepam. Klonopin. A benzodiazepine, prescribed for decades, surrounded by one of the loudest controversies in psychiatry. There are, roughly, two schools of thought:</p>
<p><strong>School A:</strong> Klonopin is a helpful medicine that enables success across an array of problems. It quiets panic that nothing else touches, makes sleep possible, makes work possible, makes <em>leaving the house</em> possible, and for many people does so stably for years.</p>
<p><strong>School B:</strong> It KILLS. Dependence, tolerance, brutal withdrawal, cognitive decline, death. No one should be on it, and prescribers who maintain patients on it are committing slow malpractice.</p>
<p>Here is what I need you to notice: both schools speak with total certainty. Both can produce evidence, casualties, and testimonials. A patient can walk out of one office with a stable prescription and a functioning life, move to a new city, and be told by the next prescriber that their functioning life is actually a crisis that must be tapered immediately, for their own good, regardless of how they feel about it.<em> (The maddening part is that both schools are describing real populations. The drug that quietly enables one person's career destroys another person's decade. Population statistics cannot tell you which patient is sitting in front of you. Only careful, collaborative observation of the actual human can.)</em></p>
<pre><code class="language-python">def klonopin(patient):
    # School A
    return &quot;sleep, work, marriage, a life&quot;


def klonopin(patient):
    # School B
    raise Dependency(&quot;IT KILLS&quot;)
</code></pre>
<p>Two functions. Same name. Same molecule. Which one runs depends not on the patient but on which prescriber the lottery assigned them. That is not medicine. That is theology with a prescription pad.</p>
<p>The &quot;for humans&quot; question, the only question, never changes: <em>does this molecule, in this body, enable this particular human's actual life, at a cost this particular human judges acceptable?</em> That is an engineering question, answerable only by N-of-1 trial, honest tracking, and a <a href="https://kennethreitz.org/essays/2025-08-25-advocating-for-your-mental-health-care">collaborative relationship with a prescriber</a> who treats you as a partner rather than a compliance problem. I have been on medications that the literature adores and my body could not tolerate, and medications with scary reputations that quietly gave me my life back. The discourse was never once useful at the pharmacy counter. The data about <em>me</em> was.</p>
<p>When a clinician's ideology about a medication overrides the observable evidence of your functioning, the tool has stopped serving the human. The human is now serving the tool.</p>
<h2 id="the-label-that-locks-the-door">The Label That Locks the Door</h2>
<p>It gets worse than ideology. Sometimes the diagnosis, the thing whose entire purpose is to route you <em>toward</em> treatment, gets used as the reason to refuse it.</p>
<p>Ask anyone with borderline personality disorder. BPD patients routinely cannot get help because therapists refuse to work with them. Not &quot;lack expertise in.&quot; <em>Refuse.</em> The label functions as a flag on the account. Practitioners see it in the chart and decline the referral, citing difficulty, liability, burnout. The diagnosis most defined by the terror of abandonment reliably produces institutional abandonment on contact.<em> (The bitter irony: BPD has one of the best-validated treatments in all of psychiatry. Dialectical behavior therapy was developed by Marsha Linehan, who revealed in 2011 that she had spent her own youth hospitalized with the same condition. The &quot;untreatable&quot; diagnosis got its treatment from a patient. It usually works that way.)</em></p>
<p>Think about what has happened there, structurally. A routing function has been repurposed as a firewall. The lookup key that exists to answer &quot;which treatments help this cluster&quot; is instead answering &quot;which humans do we decline to serve.&quot; This is the diagnosis doing the exact opposite of its job, and the field mostly shrugs, because the people being turned away have a label that pre-discredits their complaints. Who are you going to believe, the clinician or the borderline?</p>
<p>And the same inversion runs even deeper with dissociative identity disorder, where patients are routinely dismissed because the practitioner is not personally &quot;convinced it's a real ailment.&quot; Sit with that phrasing, because I've heard it nearly verbatim from professionals: whether you receive care depends on whether the person across the desk <em>believes in</em> your condition. Your access to treatment is contingent on your clinician's metaphysics. Imagine any other field operating this way. Imagine a cardiologist declining your arrhythmia because they're not convinced atrial fibrillation is real, they think it's an attention-seeking presentation of ordinary heartbeat.</p>
<p>Here's the thing: the etiology debate doesn't even matter at the point of care. Whatever a practitioner believes about how <a href="https://kennethreitz.org/essays/2025-08-30-the-plural-self-what-did-reveals-about-all-consciousness">plural self-states</a> form, the human in the room is not hypothetical. The dissociation is real. The lost time is real. The distress is real and standing in front of you, having gathered the courage to ask for help with the most stigmatized presentation in the manual. &quot;I'm not convinced your suffering's category exists&quot; is not a clinical position. It is a refusal of the human, dressed up as epistemic rigor.</p>
<h2 id="what-quotfor-humansquot-actually-means-here">What &quot;For Humans&quot; Actually Means Here</h2>
<p>The pattern across all of this is the same pattern I spent my software career fighting. The system is optimized for its own internals: diagnostic categories, billing codes, school-of-thought loyalties, liability management, practitioner comfort. The human is expected to adapt to the system. A patient must learn the system's language, absorb its labels as identity, accept its theological disputes being fought across their body chemistry, and survive its gatekeeping, all while sick. That is exactly backwards, and it is backwards in the precise way urllib2 was backwards: the machinery's convenience placed upstream of the human's need.</p>
<p>Mental health care, for humans, would mean:</p>
<ul>
<li><strong>The diagnosis serves the patient.</strong> It is a revisable lookup key that exists to find treatments faster. The moment it functions as identity, prophecy, or a reason to refuse care, it is malfunctioning.</li>
<li><strong>Treatment is judged by the life it enables.</strong> Not by the reputation of the molecule, the purity of the modality, or the prescriber's tribe. If it gives a particular human their particular life at a cost they accept, it is working.</li>
<li><strong>The patient is a partner, not a compliance problem.</strong> The patient holds data no clinician can access: what it's actually like in there, hour by hour, <a href="https://kennethreitz.org/essays/2025-08-25-advocating-for-your-mental-health-care">tracked and brought to the table</a>. Expertise without that data is guesswork with confidence.</li>
<li><strong>The reality of suffering is not contingent on belief.</strong> A clinician's personal conviction about a diagnostic category is not an eligibility requirement for care.</li>
<li><strong>The label describes a population. You are not a population.</strong> You are one data point the histogram never met.</li>
</ul>
<p>None of this is utopian. Every item on that list is practiced, today, by good clinicians. I know because I finally have some, and the difference between the system at its worst and these people at their best is the difference between <a href="https://kennethreitz.org/essays/2019-01-mentalhealtherror_three_years_later">a hospitalization a year</a> and <a href="https://kennethreitz.org/essays/2026-04-06-what_success_looks_like">a winter where the cycle finally broke</a>.</p>
<h2 id="ten-years-in">Ten Years In</h2>
<p>So here is where my credentials lead.</p>
<p>I am still sick as fuck. That hasn't changed and probably won't; schizoaffective disorder doesn't resolve, it gets <em>managed</em>. What changed is everything else. I'm married to a woman who <a href="https://kennethreitz.org/essays/2026-03-06-sarah_knows_first">sees episodes coming before I do</a>. I have a son. I build things constantly. I take my medicine, the specific medicine that works for this specific body, arrived at through a decade of the game, kept because it enables my actual life and not because any school of thought approves of it.</p>
<p>A doctor once told me most people with my diagnosis are homeless. He wasn't wrong about the population. But I was never the population. Neither are you. The histogram describes what happened to people who resembled you before anyone tried what might work for <em>you</em>, and the entire purpose of the label, the manual, the medicine, the whole creaking system, is to shorten the path to that treatment. The label is the means. The treatment is the point. Your life is the metric.</p>
<p>Diagnosis is just a lookup key. Don't build a house on it. Build a treatment on it, and build your house on that.</p>
<p>I'm doing much better than my label, statistically speaking. I'd like that for you too.</p>
]]></content:encoded>
            <pubDate>Sat, 06 Jun 2026 00:00:00 </pubDate>
        </item>
    </channel>
</rss>