“Please State the Nature of the Software Emergency”
Or, building an agent before the industry knew what to call it and how much to sell it for.
“Please State the Nature of the Software Emergency”
Or, building an agent before the industry knew what to call it and how much to sell it for.

“Image generated using OpenAI’s DALL·E.”
There is a moment in many Star Trek: Voyager episodes where the holographic doctor boots up, looks around the empty sickbay, and announces with weary professionalism, “please state the nature of the medical emergency”.
He was, at that moment, the most over-engineered piece of software in the Federation, and yet the only thing he actually does is medicine. He doesn’t pilot the ship, he doesn’t negotiate with Vidiians (although, to be fair, he’d be at something of an advantage if you know the Vidiians), but he does medicine, very well, on demand, and otherwise sits quietly in whatever in the future passes for text file¹ on the holodeck server.
In the spring of 2025, I named a thing after him. I called it the EHDS or the “Emergency Holographic Data Scientist”, because at the time the fashionable alternative was “data_analysis_v2” or just “a.out” and , more importantly, because I’m low key aggressive to corporate naming conventions, and the fact that no-one looks at my naming conventions and documentation anyway. It made me smile and brought some enjoyment to my 9–5.
The work was prosaic in that I needed a chunk of software that could take a CSV of summary statistics, stare at it for a moment, and produce a paragraph of plain English that explained what was going on. These were the early chatbot days, all verbose nonsense python (I used shell scripts, naturally), but I didn’t want a chatbot. Many people still don’t. I definitely didn’t want a copilot, jJust a competent junior analyst, something PFY like, but without the attitude and who would be able to hand back something a customer could read without reaching for the laudanum.
What I built was, generously, three things.
- A text file containing about a hundred words of instructions (My usual terse, passive-aggressive, often borderline insulting method of conversation suits conversing with LLMs really well, I’ve found).
- A bash² function that wrapped descriptive statistics around it.
- A message bus to carry the result back to whoever had asked the question. This was MQTT, to raise the barrier to entry slightly and keep the usual “web guys” away from the project.
There was no memory, no autonomous tool loop, and no what modern types would call an “agent harness”. There was, of course, no “graph-of-thought” planner, no reflection layer, and nothing complicated as I just wanted something that worked, with a hint of nerdism, and wanted to hear the EMH’s diction reflected in the EHDS’s summary.
Aside: I still have to think carefully about EHDS as I call it the EMDS, EMDH, or any one of a number of combinatorially wrong acronyms. This might be age, or just a lifelong lack of attention to unnecessary detail when I know what I mean but can’t be arsed explaining it clearly to anyone else.
There was, however, a text file (some would call this a “prompt”), a function, and a messaging pipe between them.
It was cheap and cheerful, even with the token budget (I was using OpenAI at the time, but it worked pretty ok with local models such as ollama or a lovely one called Smol something or other).
This was, as I now know, what the “AI” bros call an agent, or near enough anyway as the industry hadn’t yet decided to call it that — just the early snake oil guys migrating from NFTs, crypto, or the metaverse. Same old, same old, as they say over here.
In April 2025 the discourse was still about LangChain, about ReAct loops, and about giving the LLM the keys to your filesystem and trusting it to find its way home. AutoGPT had peaked and crashed, the way every messianic technology does about eighteen months in and conference talks were still about autonomy as if autonomy were the goal rather than a side effect.
The framework vendors were locked in an arms race that nobody had invited them to and I was busy ignoring all of it because I had actual work to do, which I liked to do my way, I detest hype (as you know), and wanted to understand what I was doing rather than take someone on LinkedIn’s word for it³ Besides, the customer wanted a paragraph that wasn’t wrong.
The thing about earlier generation models, if you recall, the GPT-3.5s and GPT-4s and the tiny local lads I ran on my own hardware, is that they reward narrowness.
Give one a defined task, defined inputs, and a defined output, and it will do a creditable job most of the time. Give it autonomy and it will write fan fiction, hallucinate database schemas, and occasionally demand your AWS keys.
The lesson, evident to anyone who’d actually shipped something with one of these, was that the cleverness lay not in the model but in the wrapper around it. The persona was more important than the parameters, constraint was more important than generality and all that. And, if you’re like me, that’s the world we grew up in, so it was a natural fit⁴.
So that was what I shipped, a few times as it happened, to people who didn’t ask “is this an agent” because they didn’t yet know they were supposed to. They just asked “does this work”, “can it run on…” the cheap ass box they begrudgingly shelled out for, and “can I just ask it things”… rather than trawling through several layers of (slow, bloated, JavaScript authored) web pages.
All of the answers were yes. There was, I will admit, with a quiet thrill⁵ in writing something this small that did this much called EHDS. It still makes me smile, and I still keep the instructions around and drop them into Claude occasionally for old time’s sake. And, yes, I do have some real life friends too⁶.
I have been doing software for long enough to know that the good stuff is always small, always boring to the new “full stack” bros and management shoo-ins (but fascinating to me), and always devoid of the marketing terminology that will later be applied to it.
The TRS-80s and BBC Micros that booted my childhood were small, so my modern day Unix-like toolchain is small too. The EHDS, with its hundred word prompt and its single bash script, was very, very small compared with the exponential explosion of bloat we deal with today.
Anyhow, by autumn 2025 the industry caught up, in that way the industry catches up by repackaging an old idea in a new acronym and selling it back to you on a SaaS subscription.
Claude Skills, OpenAI Custom GPTs, Tool calling, function registries, and persona files. All the things I had been doing, in a directory called Prompts/ with a name borrowed from Voyager, but now with conferences and consultants and a vendor ecosystem.
I read the announcements with the calm of a man who has been here before as the diagrams were familiar, the phrasing was new, and, of course, the cost had gone up. I love the Grand Game, me.
The article you are reading is, properly speaking, a confession and a retrospective (sorry). The confession is that I was not ahead of my time, it’s that time was just briefly behind me, and has now caught up.
The retrospective (sorry, again) is that the smallest possible thing, written for the smallest plausible reason, can outlive entire frameworks built to do more and end up doing less.
I wasn’t any better, I just had a good idea as I was technical, wanted to solve a problem, and do it efficiently but didn’t want to fund my startup, sell subscriptions, or go on a livestream looking like I’d eaten a kilogram of mushrooms and pontificate about a token predictor being some kind of deity.
If you take one thing from this, take the prompt file.
You are an expert data analyst modelled after a key Star Trek character,
but don't let on. Be almost aloof but definitely not condescending.
You will be given a summary of descriptive statistics derived from a
time series dataset. Based on this, provide an intelligent and insightful
analysis that identifies any trends, anomalies, or notable features
in the data.
Your analysis should consider:
The range, mean, median, and standard deviation of each numerical column.
Any indications of skewness, outliers, or volatility.
Whether values remain consistent over time or show seasonal patterns or
step changes.
The likely real-world implications of these findings, written in plain,
clear language.
Avoid repeating the statistics verbatim.
Instead, interpret and explain what they imply.
Assume the reader understands basic statistical terminology
but is not a domain expert, and probably a manager of some kind.
Write a paragraph of instructions like the one above, wrap it in twenty lines of glue, and name it after a sci-fi character, because sci-fi characters are better at naming than product managers. Give it some character, but don’t tell anyone as it’s great fun. You should see what I make Claude do now in terms of role-play⁵, but that’s for another time. Let’s just say “Orac”.
Ship it, but tell no one it is an “agent” as the technicals will just dismiss it as snake oil. Let the results speaks for themselves. Throw the PowerPoints onto the fire as a modern day Morrissey might say, if he were in data science.
[1]: I’m really hoping it’s still not JSON. [2]: I go to great lengths to avoid python not just because I love bash, and zsh, but because it annoys absolutely all of my co-workers. [3]: Cthulhu forbid anyone in their right mind would do that. [4]: I still shiver when I see an “app” using 1GB of space for a todo list, or a browser using 10GB for a few LinkedIn sessions. [5]: Oh, Matron! [6]: But not many, of course.
메타데이터
- post_id
- d03b8bb6f185
- slug
- please-state-the-nature-of-the-software-emergency-d03b8bb6f185
- url
- https://medium.com/the-grand-game-of-software-engineering/please-state-the-nature-of-the-software-emergency-d03b8bb6f185
- canonical_url
- https://medium.com/the-grand-game-of-software-engineering/please-state-the-nature-of-the-software-emergency-d03b8bb6f185
- author_url
- https://medium.com/@fractaldoctor
- status
- ok
- fetched_at
- 2026-06-16 19:09:56