What's the PHP for, then?
When I described the loom, I said it was built with MySQL, PHP and bash. Later, in the plumbing section, I explained that the AI talks to the loom through a small CLI that reads and writes the tables directly. And in the appendix I published the entire schema without a single line of PHP showing up anywhere.
The attentive reader will have done the math by now: if the AI reads MySQL directly and the scheduled jobs are cron and bash... what's the PHP for?
It is a fair question, and the short answer dismantles half the narrative of this blog, so let's give it in full: the PHP is not for the AI. It is for me.
The two sides
The system has two sides, and until today I have only shown you one.
The first is the one you already know: I open a terminal on my development machine, go to the right directory, start whichever assistant is on duty — Claude, Codex, whichever — and a bootstrap file places it inside the loom. From there the AI reads and writes the tables through the CLI: it looks up its task, loads its context, writes its logbook. That side belongs to the operator who works.
The second side is a PHP program, built on my framework of always, that shows me the loom the way I like to see it: with a datagrid, with a listing, with a search box. The jobs with their state and their priority. The rules, one below the other. The people, the resources, the runbooks. Columns that sort, filters that filter, and a plain old form to touch whatever needs touching.
That side belongs to the owner who watches. And it exists for three reasons that are not technical, although they end up being so. An old programmer's quirks — but in this house, quirks come with a reason attached.
First reason: I want to see the tapestry
I find the AI marvellous, but I don't see what it does. I know what it does because it tells me — and it tells me well, with its results and its logbook. But being told is not seeing. I am from the old school: I'd rather see it the old-fashioned way.
With the AI I see one job: do this — done. A tunnel, very efficient, from one errand to the next. With my window I see the system. The front door is a dashboard of the lifelong kind: the queue with its pending requests, the jobs in progress, the blocked ones still missing something, the overdue reminders. And below that, the household inventory: the resources — past eight hundred by now —, the people, the runbooks, the rules. A handful of numbers that tell me the health of the workshop before the first coffee.
And behind every number, a datagrid: which jobs have been open too long, which rules pile up on one topic and thin out on another, which resources have a limping record. I see the tapestry the loom weaves, not just today's pass of the shuttle.
And that is where the real supervision happens. I review the rules and the runbooks the way you inspect a garrison: I read them, analyse them, correct them, extend them — and retire them, which is the part nobody does and which rots everything. I do it with the AI's help, with its analysis and its judgement in front of me. But I am the one who sees it.
There is a machine-room rule that hasn't expired in forty years: you don't ask a process whether it is healthy; you watch it from outside, through another channel. If all my visibility into the loom went through the AI, I would be auditing the operator by asking the operator. The logbook tells me what it did; the datagrid lets me verify it without asking the examinee to grade my exam.
Second reason: I want to switch off the office
My development machine shuts down when the day ends. It shuts down when I go away. It will shut down, I hope, on many an afternoon of my retirement. And the loom cannot live only on a machine that powers off with me.
The PHP program runs on a server that doesn't sleep. From anywhere — the living room, a trip, a doctor's waiting room — I can open the browser and check how this morning's job turned out, or drop a new one in the queue for when I'm back: remember this, look at it on Monday. Without switching anything on, without connecting to anything, without liturgy.
In the appendix I told you the loom has two writers and no central server: disjoint id ranges, development inserting from one and production from a billion. I owed you the introduction of the second writer. It is me, from the browser, handing work to the house with the office computer switched off. The AI writes in the low numbers; the old man, in the high ones. The sync combs them together and neither steps on the other in the inserts — which is nearly all the traffic of an append-only logbook —; the rare case, both of us touching the same header between syncs, I already confessed in the appendix: there is no magic there, just a conflict surface shrunk on purpose and a logbook that tells on you.
And there is one more thing, which is not technical and is the real reason: switching off the office means ending the day's work. The mind only rests when it knows nothing will be lost: what was left half-done is written down, the eleven-o'clock idea has a queue to fall into, and the door is not locked — it is left ajar. It took me forty years to learn that rest, too, is engineered. The loom keeps watch; I rest. Tomorrow we carry on.
Third reason: not being a hostage
This is the deeper reason, and the one I'd recommend chewing on to anyone building their operation around an AI.
Maybe tomorrow the models will be twice as good at half the price. Maybe the opposite: they get regulated, they get capped, the price multiplies by ten, the provider of the day decides my use case no longer interests them. I don't control it — and that is exactly the point. If all AIs were banned tomorrow, I would still have my datagrids and I would keep working as I always have: slower, but the same. The queue would still be the queue, the rules would still be written, the logbook would still tell the truth. The loom doesn't need Anthropic or OpenAI to exist in order to be my memory. It only needs MySQL... and me.
Putting the AI at the centre of everything is becoming its hostage. The centre of my system is a boring database wholly owned by a sixty-four-year-old man, with two windows to look at it: one for the machine, one for the human. The AI is — extraordinary as it is — the best employee I have ever had. But this is my world and my work, not its own. I hand it the controls so it can work, and at times even so it can decide. Ownership, I do not hand over.
I decide; the AI works. The day that sentence flips, the system will have changed owners without anyone signing anything.
The honest caveat
For actual work I barely use the human interface — it would be absurd: the AI types faster than I browse. If I were left with only the PHP I would lose a great deal: the speed, the diagnosis, the infinite patience with logs. "Slower but the same" describes survival, not equivalence; let nobody read triumphalism where there is a contingency plan.
So why do I open it every day? To think. To place everything in my mind, to hold the schema and the vision. The AI solves today's job for me; the datagrid keeps me owner of the map. Redundant? Completely — like the second altimeter. Redundancy only looks expensive until the day you use it.
And there is a symmetry I like too much to keep quiet: the loom's human window is built with the framework from the first article, the one I have maintained for twenty years. The system I built for the AI is watched and governed with the system I built for myself two decades ago. Boring tools have that habit: outliving every revolution that was going to retire them — including, if it came to it, this one.
Patterns, not blueprints. And today, also: windows, not faith.
— an old programmer · 64 years old · rss