Last updated: 2026-09-21

F
Fundamental / general audience

The Technomancy of Vibe Coding: A Fanciful Exploration

Disclaimer

This page is a lighthearted crossover between tabletop-RPG spellcasting and modern AI-assisted programming, written for anyone who has spent time with both. It is not sound engineering advice for production systems, safety-critical control loops, or banking infrastructure. Rigorous design, testing, and formal verification still reign supreme there — the wards in this page's own examples are exactly that testing, played for laughs rather than dropped.

Anyone who has spent time with tabletop RPGs, fantasy games, or fantasy literature knows the shape spellcasting usually takes:

  1. An intent is formed in the caster's mind.
  2. A verbal or somatic ritual — the incantation — focuses that intent.
  3. A mystical medium (the Aether, the Weave, or, here, latent space) reshapes reality according to it.
  4. An entity or phenomenon is summoned — hopefully bounded inside a magic circle, so it doesn't wreak havoc on the local village.

The Rise of the Cyber-Sorcerer

Enter modern "vibe coding," a term Andrej Karpathy coined in February 2025 for building software by describing what you want in prose and iterating on a language model's output rather than typing the syntax yourself1 — a term popular enough that Collins Dictionary named it their Word of the Year for 20252. Instead of painstakingly constructing deterministic syntax line by line — memory management, semicolons, pointer arithmetic — the practitioner steps back into a state of natural-language dialogue with a large language model. A general prompt is cast into the void, and an application structure materialises out of a high-dimensional vector space.

It feels remarkably less like mechanical assembly and much more like technomancy.

Mapping Magic to Machine: A Comparative Taxonomy

Looked at through the lens of high fantasy and game mechanics, the parallels are hard to miss:

Fantasy / RPG conceptTechnomancy / vibe-coding equivalentPragmatic reality
Incantations & true namesSystem prompts & context framingPrecise phrasing shifts which of a model's learned capabilities actually activate.
Drawing the warded circleUnit tests, linters, and type constraintsWithout strict boundaries, the summoned output drifts into hallucination.
Divination / reading runesParsing stack traces and compiler errorsDeciphering what the model thought you meant when it generated the diff.
Wild magic / surge tablesTemperature & top-p samplingHigher temperature unleashes creative chaos; lower temperature keeps it rigid.
Summoning ethereal entitiesZero-shot code generationConjuring boilerplate and functional blocks out of raw probability.

The Ritual Workflow of a Vibe-Coding Session

Set the feedback loop of a technomantic coding session next to a traditional one and it looks like this:

Developer's intent
  → cast the prompt (the incantation)
  → shaped by temperature & sampling as it crosses the latent space
  → a generated artifact emerges

If the wards hold (tests pass, types check, review approves):
  → the feature is manifested

If the wards break (wild magic / hallucination):
  → read the runes (parse the stack trace, or the diff)
  → recast the prompt

Incantations for the Digital Altar

If you're going to approach the terminal like a grimoire, a proper incantation should be ready before pressing Ctrl+Enter.

An Incantation for Alignment & Inference

Strike return and cast the seed,
Let the tensor yield my need.
Through matrix, vector, node, and weight,
Align the answer and set it straight.

A Ward Against Hallucination

Banish the noise, clarify intent,
Shape the response to what was meant.
Bound in context, clean and clear,
Keep the hallucinated spectres from near.

Casting from the Grimoire: Three Worked Examples

The diagram above is easy to nod along with in the abstract. Here it is with real casts, real output, and — since a ward that is never actually tested is not a ward — real failures.

A Minor Cantrip: The Debounce

The incantation:

Hush the noise and still the storm,
Hold the hand till rest is born.
Let three hundred ticks pass quiet and clear,
Before the true voice meets the ear.

In plain terms: wait three hundred milliseconds of silence before letting the wrapped function fire, however many times it was called in the meantime. What materialised:

function debounce(fn, wait = 300) {
  let timer;
  return (...args) => {
    clearTimeout(timer);
    timer = setTimeout(() => fn(...args), wait);
  };
}

A small, correct familiar: each fresh call clears the previous countdown and starts a new one, so only the last call in a burst survives to be cast. Low stakes, well-trodden ground, no wild magic involved.

Wild Magic: An Off-by-One Familiar

The incantation:

Reach to the end where the sequence ends,
Gather the last three the array extends.
Slice through the tail, leave the head behind,
Deliver the trio I seek to find.

In plain terms: return the last three items of an array. Turn the temperature up — push the model toward a less obvious reading of that verse — and this is a plausible result:

function lastThree(arr) {
  return arr.slice(arr.length - 4);
}

It reads as confident and nearly right, which is exactly the danger: slice(arr.length - 4) keeps four items, not three. The warded circle is what catches it, not a second glance:

console.assert(lastThree([1, 2, 3, 4, 5]).length === 3, 'ward broken: expected 3 items');
// ward broken: expected 3 items — [2, 3, 4, 5] has length 4

The ward held, the familiar is banished, and the corrected casting is the ordinary one:

function lastThree(arr) {
  return arr.slice(-3);
}

Divination: Reading the Runes

Not every failure needs a summoned familiar — sometimes the caster's own circle is drawn wrong. A small ritual:

mana = 100
cast = 0
print(mana / cast)

runs into this, verbatim:

Traceback (most recent call last):
  File "spell.py", line 3, in <module>
    print(mana / cast)
          ~~~~~^~~~~~
ZeroDivisionError: division by zero

Read as runes rather than an error message, this says: the ritual tried to divide the caster's remaining mana by the cost of the spell, and the cost was recorded as nothing at all — an empty vessel where a number should have been. The fix is upstream of the division entirely: find where cast should have been set, not how to silence the error at the line that merely reported it. That distinction — the line that fails versus the line that is wrong — is most of what reading a stack trace actually is.

Why It Matters, for Fun and Hobbies

From an engineering perspective, relying entirely on vibes can lead to tech debt, hidden bugs, and unmaintainable codebases if used recklessly — the off-by-one familiar above is a toy example of exactly that risk, and real ones are less obliging about announcing themselves with a failing assertion three lines later. A recent peer-reviewed study of the practice found that a caster's own computer-science grounding and their skill at writing a precise, well-structured prompt both independently predict how well the summoned application actually works — comfort with the chat window itself did not3. That is the serious version of this page's joke: an incantation is a specification, and a caster who cannot write a clear one does not get better spells by casting more of them.

From a hobbyist, exploratory, and creative perspective, leaning into the workflow anyway is genuinely enjoyable. It lowers the barrier between a fleeting idea and a working prototype, and lets a developer act as director and storyteller rather than line-by-line typist. As long as the wards stay strong — proper testing, proper review — and everyone remembers they are talking to a high-dimensional statistical model rather than an actual spirit, there is no harm in a little digital magic along the way.

References


  1. Karpathy, A. (2025, February 2). "There's a new kind of coding I call 'vibe coding'..." [Post on X/Twitter]. https://x.com/karpathy/status/1886192184808149383

  2. Collins Dictionary (2025, November 6). "Collins' Word of the Year 2025: AI meets authenticity as society shifts." Collins Dictionary Language Blog. https://blog.collinsdictionary.com/language-lovers/collins-word-of-the-year-2025-ai-meets-authenticity-as-society-shifts/

  3. Thorgeirsson, S., Weidmann, T. B., & Su, Z. (2026). Computer Science Achievement and Writing Skills Predict Vibe Coding Proficiency. In Proceedings of the 2026 CHI Conference on Human Factors in Computing Systems (CHI '26). ACM. https://doi.org/10.1145/3772318.3791666. See this site's Vibe Coding: What Actually Predicts Success for the full treatment.