Vibe-coding spaghetti: Unpacking an AI metaphor for biology

I recently saw a post on Bluesky just saying “Coconuts”. Intriguing! Underneath was a screenshot of a tweet which was even more intriguing.

The tweet said: “A techbro told me that biology is easy because DNA is just code, right? I told him that DNA is 4 billion year old, completely undocumented, vibe-coded spaghetti, built by a blind evolutionary algorithm, which codes for its own compiler and runtime environment. His confidence popped like a balloon.”

This was followed by: “I think of that programmer investigating Team Fortress 2, who found a jpg of a coconut in the game files and has no idea what it’s doing there but if you remove it the game doesn’t start. Biology is full of coconuts”

When I saw ‘vibe-coded spaghetti’ I laughed, as I just pictured an entanglement of spaghetti representing the messiness of biology. So, I posted the question: “Finally a new metaphor for biology??” Reading some of the replies it gradually dawned on me that there was much more to this nice new AI metaphor for biology than I had thought.

After a brief chat with an AI expert, that is, Claude, it became clear to me yet again that one can only infer the meaning of a metaphor based on one’s existing knowledge, and that knowledge varies from person to person, or indeed between a person and an AI. While some people, like me, just find the juxtaposition of vibe-coding and spaghetti funny, others can extract much more meaning or quite different meanings from this metaphor and its context, especially if they know something about coding. So, what is going on here?

In this post, I’ll first try to fathom what the vibe-coding tweet was about, then what the coconut comment was about. Then I’ll say something about the reactions this post elicited. On the way, I’ll engage in a lot of conceptual unpacking of metaphors and sometimes nested metaphors. (Unpacking is of course itself a metaphor that can be extensively unpacked!) At the end, I’ll say something about metaphor, mapping and knowledge and about how the limits of our knowledge define the limits of our metaphor understanding.

Unpacking the tweet

What is going on in that tweet? It’s basically a rather sophisticated rebuttal of the facile way of saying that biology is easy because DNA is just a code. The techbro saying ‘it’s just code’ implies that DNA/biology is something legible and manageable, whereas DNA/biology is the opposite. Let’s dissect the tweet step by step with the help of Claude.

The tweet makes clear that, unlike a normal computer code, the ‘DNA code’ is (a) undocumented, that is to say, there are no comments, no ‘changelog’ or curated record of changes; (b) there is no architect who can explain decisions (the word ‘blind‘ echoes ‘the blind watchmaker‘); (c) it’s vibe-coded spaghetti, that is to say, it has evolved under pressure to work, not to be elegant or comprehensible – we’ll unpack that further below; (d) it’s self-compiling (where compiling is the process of converting human-readable code into machine-readable code), that is to say, the genome encodes the very machinery (ribosomes, polymerases) needed to read and execute itself, which has no real software equivalent.

And, of course, it’s also 4 billion years old, which, as Claude reminded me, means that it has 4 billion years of technical debt with no refactoring sprints. Ah, I had to interrupt Claude there and ask what ‘technical debt’ and ‘refactoring sprint’ meant.

Apparently, ‘technical debt’ is what accumulates when you build something quickly and messily — taking shortcuts, not documenting things, bodging solutions — because you need it to work now. Like financial debt, it’s borrowed time (based on the conceptual metaphor ‘time is money’). Eventually you have to pay the debt back by going back and fixing all those shortcuts… except often you never do, and the interest keeps accumulating. Every quick fix on top of a previous quick fix is more debt piling up. The system keeps working but becomes increasingly fragile and incomprehensible. (And as we’ll see later on, it might contain ‘coconuts’).

This metaphor of ‘technical debt’ works for biology. Every evolutionary ‘solution’ is essentially a shortcut that worked well enough at the time. The eye’s blind spot, the backwards wiring of the retina, that ridiculous recurrent laryngeal nerve (I’ll get back to that) — all of it is technical debt that never got paid back because evolution has no mechanism for doing so. It just keeps borrowing.

‘Refactoring sprint’ refers to a short, focused burst of work where a software team deliberately goes through existing code to tidy it up, reorganise it, make it more elegant and readable, that is, cleans up the mess they made while building things quickly. And, of course, that never really happens in biology.

As you can see, the original metaphor for biology or DNA as just a code was quite simple and easy to understand. By contrast, the rebuttal metaphor, while at its core (vibe-coding spaghetti) simply funny, is more difficult to understand. One needs to do a lot of unpacking – just like in biology. The additional metaphor of ‘technical debt’ introduced by Claude to explain the original metaphor makes that point nicely. The financial metaphor inside the computing metaphor applied to biology demonstrates the nested quality of many metaphors. It’s metaphors all the way down.

Unpacking spaghetti

Let’s now home in on the metaphor that made me chuckle: ‘vibe-coding spaghetti’. That alone is quite complex. I didn’t know (a) that ‘spaghetti code’ is a well-established term in programming and refers to code where the logic is so tangled and convoluted that trying to follow it is like trying to trace a single strand of spaghetti through a bowl – no clear structure, everything intertwined with everything else. I didn’t know (b) that there is something called ‘spaghetti code’, referring to ‘code’ in DNA that consists of remnants of ancient viruses and duplicated genes that no longer work but are still replicated every time a cell divides.

As for vibe-coding, that phrase only really entered the Zeitgeist in early 2025 when Andrej Karpathy popularised it. Applying it to biology is almost certainly a fresh coinage.

Interestingly, the ‘vibe-coding spaghetti’ metaphor itself builds on an older metaphor, that of ‘legacy code’ or, indeed, ‘spaghetti code’, metaphors that have been used in biology/bioinformatics for quite some time. The recurrent laryngeal nerve, which we encountered above, is a classic example. It’s a nerve that routes absurdly down into the chest and back up to the larynx, which in a giraffe is several metres of pure technical debt – remember technical debt!

But vibe-coding adds something the older framings didn’t quite capture, namely the specific sense of ‘it works but nobody, including the author, fully understands why’. ‘Legacy code’ implies there was once a plan. ‘Spaghetti code’ implies mess. Vibe-coded implies a kind of confident ignorance during construction, which maps onto natural selection surprisingly well. Evolution doesn’t have intent or foresight; it just iterates on ‘does this roughly work right now?’ – what François Jacob called tinkering. This is almost a dictionary definition of vibe-coding.

To summarise, the rebuttal metaphor the tweeter used to argue against the techbro’s simplistic framing of DNA as just a code hits in three blows by saying that, no no DNA is not like that, it’s ‘undocumented’ (no explanation of how or why it works); it’s vibe-coded (built without a real plan); and it’s spaghetti (structurally tangled and impossible to follow).

For a non-coder and technophobe like me, ‘vibe-coded spaghetti’ just reads like a wonderfully absurd image, while for a coder the whole tweet has hidden depths of inference and, indeed, insult. This means that the tweet works on two (or more) levels simultaneously. Coders get the technical jokes; everyone else gets a vivid nonsense-food metaphor that somehow feels right. Depending on their background knowledge, readers of the tweet can plunge to different inferential depths, with some, like me, staying very much on the surface. This also means they can engage with the tweet in different ways when discussing it, making jokes about it or associating jokes with it. We’ll get back to that once we have unpacked the second part of the tweet, namely the coconuts.

Unpacking coconuts

As somebody in the chat pointed out, the coconut story (about finding a jpg of a coconut in a game file that couldn’t be removed because otherwise the game wouldn’t work) is probably just a myth, but it is a good story – and as somebody else said, it is might be rooted in reality, where the coconuts are actually mushrooms.

Be this as it may, in biology it is coconuts all the way down, so to speak. ‘Coconuts’ make up about 98.5% of the human genome. They are what was once dismissed as ‘junk DNA’ and is now sometimes still called ‘dark DNA’, although we know a lot about them. We now know that they are not just useless fillers, but that ‘non-coding DNA’ tell genes when and how to work. They may not build proteins themselves, but if you ‘delete’ or mutate them, the whole system can crash. 

That’s the general story about non-coding coconuts (and there is much much more), but, as Philip Ball pointed out in the chat: “Of course, in genomics it often goes the other way: ‘If you remove this essential bit of ‘code’, the system won’t work… Uh wait, yes it does.’”…

Biology is full of load-bearing mysteries where a coconut might be regulating your immune system, or doing nothing, or both, and removing it kills the organism or not. It’s not only metaphors but also coconuts all the way down and it’s complicated.

Packing jokes into metaphors

Reactions to the post/tweet varied according to people’s background knowledge or whether they picked up on the vibe-coding or the coconuts. There were comments about the ‘coconuts’ being a myth, about the limits of the code metaphor in biology and limits of the vibe-coding and coconut metaphors.

There were also humorous references to an XKCD cartoon on DNA and how complicated it is; a cartoon strip depicting someone as believing the universe is elegant, made of lisp programming language coding, but God saying it’s actually just held together with perl (that again would need a lot of unpacking for non-coders); another cartoon of an amateur biologist saying “Nature is a beautiful weave of wonder” and the geneticist saying “God it’s held together by duct tape and zip ties in here”. These visual comments make the debate about the DNA code multi-modal and bring levity to the topic.

Sticking with the (just) code theme, DeVore then quipped: “I think ‘just code’ is fair enough…. The runtime environment is freakin’ bonkers and the stack is utterly ludicrous!” Great, I could get a feel for the point they were making, but I was not sure what ‘stack’ meant. I know, I know, silly me. So, I asked Claude and we unspooled or unpacked the whole comment/metaphor together (one advantage of using Claude is that you can ask silly questions).

In computing ‘stack’ refers to the layers of technology that sit on top of each other to make a system work. A ‘tech stack’ might be the database at the bottom, then the server software, then the application code, then the interface the user sees. Each layer depends on the ones below it.

DeVore is essentially saying that yes, DNA might fairly be called ‘code’, but the environment that runs it (the cell, the body, the developmental context) is wild, and the stack of layers involved is almost incomprehensibly complicated.

This comment makes a concession to the techbro followed by a rug-pull: ‘sure, call it code if you like, but have you seen what it runs on’? This maps well onto biology. The genotype is just the top layer, and beneath it is billions of years of increasingly baffling infrastructure all the way down, including coconuts….

Unpacking metaphors in conversation

We all know about metaphors. They map knowledge from a source domain, such as journey, onto a target domain, such as love (‘Love is a journey’) and we say things like: “They have reached a crossroads in their relationship”. This is well-known stuff and it provides insights into ‘conceptual metaphors’. But what happens to metaphors in conversations is much wilder and can be quite funny. One can perhaps talk about ‘conversational metaphors’, and, as we have seen, they pack a punch and their unpacking reveals hidden layers of complexity.

In this case, a rather creative ‘conversational metaphor’ (‘vibe-coding spaghetti’, used as a rebuttal for a conceptual metaphor, namely ‘DNA is a code’) caught my eye. Ah, I thought an AI metaphor for biology! I pulled the thread and suddenly I was knee-deep in coconuts, XKCD comics, hilarious gifs, gaming mythology and a conversation with an AI that introduced me to new metaphors and answered questions about old ones. That’s perhaps a good example of how metaphor and science communication work in the wild — messily, collaboratively, across platforms, with jokes mixed in.

But let’s get back to the conceptual mapping between source and target domain. What happens here depends not only on the mapping between source and target, but also on how much the knowledge of the creator of the metaphor and the knowledge of its interpreter map onto each other.

To give one simple example that gets us a bit away from the vibe-coding whirlwind. I once said in a talk that somebody had commented on a philosophy book by saying that it was ‘just pop-tart philosophy’ – an example of a creative metaphor. Now, I was speaking in Germany and nobody in the muesli eating audience had ever heard of a pop-tart. So, most of the audience desperately tried to map aspects of pop music or certain insulting words for women onto what I had said and these mappings failed. Embarrassing…

We can only understand a metaphor and each other if we share certain types of knowledge. Understanding is tiered by background knowledge. The ‘pop-tart philosophy’ metaphor was an example of a failure in mapping because of a gap in background knowledge between speaker and hearers. The ‘vibe-coding spaghetti’ metaphor is an example of different levels of mapping between tweeter and interpreter depending on whether the mapping relies on knowledge of food alone or also on knowledge of coding and of ‘spaghetti code’ as an embedded metaphor.

That brings us to the issue of nested metaphors. Metaphors are like Russian dolls. While we may be able to unpack one doll we may fail to unpack another. Language is complicated. It too is not just a code! And beware: There might be coconuts inside the dolls….

To unpack the meaning of a creative metaphor like ‘vibe-coding spaghetti’, we need background knowledge (of food and/or coding). We also need knowledge of other metaphors, or we might use other metaphors to clarify the meaning of the creative metaphor. That’s what I discovered in my interaction with Claude which turned out to be a hermeneutic circle of conversational metaphor interpretation — between an AI and myself. Claude and I brought completely different knowledge bases to the conversation, and meaning emerged from the gap between them.

Image: Wikimedia Commons: Russian dolls: The original matryoshka set by Zvyozdochkin and Malyutin, 1892


Discover more from Making Science Public

Subscribe to get the latest posts sent to your email.

Comments

3 responses to “Vibe-coding spaghetti: Unpacking an AI metaphor for biology”

  1. David C Avatar
    David C

    the genome encodes the very machinery (ribosomes, polymerases) needed to read and execute itself, which has no real software equivalent.

    But viewed from a different angle (spatial metaphor!) software does have a very close equivalent. In a way it’s the essence of what software does. When Turing originally conceived imaginary machines that could do specific arithmetic tasks, like adding two numbers it had read from a paper tape and then writing the sum back to the tape, a different design of machine was needed for every kind of task. Then he wondered, what if the design of the machine were also to be written on the tape together with the data? Then, a single more versatile machine could be used to read the design information, and mimic that kind of machine when processing the data. This was the ‘Universal Turing Machine’, and the design information for the specific machine it was to emulate on each occasion was the essence of what we now think of as a computer program or algorithm.

    Like

  2. christophweigelberlin Avatar
    christophweigelberlin

    yes, these ‘vibe coded spaghett’ had the old twitter vibe. as a biologist myself, I had to chuckle over the following half sentence “…built by a blind evolutionary algorithm, which codes for its own compiler and runtime environment.” this will haunt me when I prepare spaghetti aglio&olio the next time (soon enough). and then, of course, the ‘coconut’ metaphor was priceless – how often have I run into one of these nuts in my own research without ever coming up with the proper name/term. thanks for this blog post, brigitte, and a happy easter! christoph

    Like

    1. bnerlich Avatar

      I am glad you enjoyed it! And a happy Easter to you too. 🐰🐰🐇

      Like

Leave a comment

Discover more from Making Science Public

Subscribe now to keep reading and get access to the full archive.

Continue reading