A Korean client, someone I'd like to work with properly one day, asked me for a couple of changes. They had an old program showing hourly output on a screen above a production line, and they wanted it to run against a different server. That's all. A couple of changes.
I opened the old program to see what I was dealing with.
Everything on the screens below is made-up demo data. Not one real number from the line.
It was written in a language that stopped being supported in 2008, last touched in early 2024 by a vendor nobody could reach anymore. Every shift time, every break, every hourly target, the cycle time, even the database password, was compiled into the program itself. If the line wanted a new plan for tomorrow, somebody had to find the original vendor and ask for a recompile.
It asked the production database about fifty questions every second, all day, every day. Millions of queries a day against a server that runs the line.
It forgot everything at midnight. A new day, a clean board, yesterday gone. Nobody could look at last Tuesday.
And the night shift number had been wrong for years. A copy-paste mistake: from midnight to six in the morning, one column was quietly showing the other column's count. Nobody noticed, because there was nothing to compare it to.
I could have patched it. That's what was asked. But I couldn't put my name on a wrong number and walk away.
I rebuilt the whole thing from nothing. Kept every number, every column, the three shifts and the 24-hour grid exactly as the operators know them, because people on a line don't need a new screen, they need the same screen that's right. There's even a theme that looks pixel-for-pixel like the old board, next to the new dark one.
It runs on a Raspberry Pi the size of a pack of cards, plugged in between their server and the TV. It never writes to their database. It reads, once every five seconds, one light question instead of fifty a second. Nothing is installed on their server. Nothing on it changes.
It works completely offline. The plant network has no internet and never will, so everything the app needs is inside the box: fonts, libraries, the lot. Updates come on a USB stick. And the boxes can talk to each other over that closed network, which is where the next part comes in.
Everything it reads, it keeps. Every hour of every shift goes into its own history on the Pi. Seven days, thirty, ninety, a year, any range you like. For the first time the line has a memory.
The shift plan is entered once and the hourly targets work themselves out from the real working minutes, so the first hour, the lunch hour and the last hour get lower targets and the day still adds up. Breaks and shift times are editable in an admin panel, by someone with a password, and every change is written down: who, when, what it was, what it became.
And exports, because a screen on a wall is not a report. Put a USB stick in, choose the dates and the shift, and it writes three files: an Excel sheet for whoever needs to add things up, a password-protected PDF for whoever needs to print it, and an HTML file that opens on any laptop with no internet and looks exactly like the app, charts and all, for whoever needs to stand in a meeting room and show it.
It speaks English and Korean. It always starts in English, because that's what they asked for, and that one I did as asked.
None of the rest was requested. Not the history, not the exports, not the alerts, not the admin panel. That's what I'd want if it were my line, from the years I spent managing people and production before I ever wrote a line of code. So I built it the way I'd build it for myself.
Ninety-nine percent, which anyone who builds anything knows is the longest one percent there is. Two hundred and twenty-five automated checks pass. The demo runs. The next step is plugging it into their real server, read-only, and watching it match the line.
In two weeks I show it to the people who asked for a couple of changes. They don't know yet. I've been rehearsing how to say "I didn't do what you asked, I did this instead" so it sounds like good news.
There's no contract. Nothing was promised. If they don't want it, I'll have built the best production board I know how to build, for a line I'll never see again. I can live with that.
Next: one more Raspberry Pi, the manager. It sits in the office and reads every line's box over the plant's own closed network, never the internet, and puts all four lines on one screen. Which line is running, which one is behind, which one has stopped, right now, without anyone walking to the floor. Each line keeps its own box and its own history. The manager just listens. That one is in progress.