The relationship between human expression and machine instruction.
For much of my early twenties, the child who once devoured books and played with words felt increasingly distant. University, work, and the endless scroll of the internet slowly replaced the books I once reached for. Reading was no longer the consuming passion it once was, and naturally, the urge to write seemed to fade alongside it.
This was a far cry from my Year Six self, who was âvotedââas in, Miss Keys had hastily conjured up and scribbled downââMost Likely to Become a Pulitzer Prize-Winning Journalistâ, with evidence of this achievement immortalised in the yearbook. I was, after all, an editor of our school newspaper, responsible for such âPulitzer Prize-winningâ entries as âYear Ones Re-enact the Royal Wedding of Prince Harry and Kate Middletonâ. Despite this apparent journalistic trajectory, my written language-based medium of choice was not accurate re-tellings of events, nor winding and dramatic narratives. It was poetry.
Poetry played by different rulesârules that gave me room to sidestep my perfectionist tendencies. Poetry was a way to abstract my inner thoughts enough for it to be out there in the world. I could be cheeky, or I could be melancholy. I could play with form and metre, and occasionally rhyme. So why did I lose all of that fervour in time?
âNatural language - language that has developed in the usual way as a method of communicating between people, rather than language that has been created, for example, for computers.â
â Cambridge Dictionary
At the age of 15, I stumbled into Computer Science. This was less the result of a carefully
considered career path and more because GCSE History wasnât working out (I was convinced my
teacher was playing favourites). Computer code was less forgiving than poetry: depending
on the language, a missing semicolon could summon a wall of ANGRY RED TEXT.
Yet the possibilities of what you could create with it felt limitless. Programming quickly
became another medium to unleash my creativity whilst simultaneously scratching the
mathematical and logical problem-solving itch I had inside my brain. Outside of class
time, I could wrangle bits and bytes into âartâ: programs that used parametric equations
to draw patterns, interactive fiction, portfolio websites, and very incomplete physics
engines.
I felt incredibly lucky that, at such a young age, I had found a creative outlet that could also become my livelihood. I did not yet realise that turning a passion into a profession would change my relationship with it.
â
It should come as no surprise that today I am a software engineer. I have spent thousands of hours writing code in service of solving problems, meeting requirements, and shipping features. Although my job continues to satisfy and stimulate me, the time and energy I once had to create purely for myself became harder to find. Without the space to create purely for enjoyment, I gradually lost the motivation to make things outside of work. I read less. I wrote less. Whether it was a consequence of my declining mental health, my endless consumption of brainrot, or simply the gradual loss of those habits, I began to feel less fluent in natural languageâboth written and spoken.
Every weekday, I spend half of my day in another languageânot with humans, but with machines. Programming languages are, by design, narrower than natural language. They have defined vocabularies, strict rules, and explicit meanings; if you write something syntactically valid, the machine can process it. There is no hidden meaning to infer, no tone to misread, and no social context to navigate. In a programming language, you cannot commit a faux pas; you can only write something that is understood or something that is not. Perhaps that was part of what made programming languages so comforting to me.
âThe Analytical Engine has no pretensions whatever to originate anything. It can do whatever we know how to order it to perform.â
â Ada Lovelace, 1843
A programming language may be designed to communicate instructions to machines, but it must also
communicate ideas between humans. To make this possible, programming languages borrow from natural
language, using familiar words such as function, break, and execute. Beyond their mechanical
purpose, the words and structures chosen by a programmer can carry meaning for the humans who read
them. In this way, source code itselfânot just the compiled resultâcan be semantically rich.
Maybe that was why I found myself returning to code when I thought I had lost my relationship with language. During a particularly chaotic post-breakup Hot Girl Summerâąâoverwhelmed by the numerous messy situations I had created by cramming Tinder dates between the monotony of a 9â5âI found myself craving an outlet for all the thoughts I had accumulated.
I realised that I had not lost the craft of language entirely. I had simply become fluent in another one. Although my dwindling exposure to creative writing had left me feeling like I could no longer write prose or poetry in plain English, programming languages had given me another way to experiment with words, structure, and meaning. It was the same reason I had loved poetry as a child: poetry was never just about arranging words according to rules; it was about finding unexpected meaning within those constraints. Perhaps code was not so different.
It turns out this idea already had a name: code poetry.
return last victim; package body; exit crypt (time, times & "half a time") & close it, select (quickly) & warn your next victim; AFTERWORDS: tell nobody. wait, wait until time; wait until next year, next decade; sleep, sleep, die yourself, die at lastâ Excerpt from Black Perl by anonymous, 1990
Code poetry describes work that exists somewhere between traditional poetry and source codeâwriting
that can be read by both humans and machines. I hadnât set out to find a literary movement; I had
simply noticed a familiar feeling while programming. Learning that others had noticed it too gave me
the confidence to treat the idea seriously. I began experimenting with the form myself, writing a
TypeScript code poem: undefined.ts.
And just like that, I felt like I had my voice returned to me.
â
Like natural language, code has power. The same ability to encode human intent into instructions can be used to build tools that connect people, or tools that cause harm. Behind every program is a person making choices about what to express, what to prioritise, and what kind of world to build.
Code is both powerful and poetic.