My family company is a wholesale distribution firm (with lightweight manufacturing) and has been using the same TUI application (on prem unix box) since 1993. We use it for customer management, ordering, invoicing, kit management/build tickets, financials - everything. We've transitioned from green screen terminals to modern emulators, but the core system remains. I spent many summers running serial and ethernet cables.
I left the business years ago to become a full time software engineer, but I got my start as a script kiddie writing automations for this system with Microsoft Access, VBA, and SendKeys to automate data entry. Amazingly, they still have a Windows XP machine running many of those tasks I wrote back in 2004! It's brittle, but cumulatively has probably saved years of time. That XP machine could survive a nuclear winter lol.
I recently stepped back in to help my parents and spent a day converting many of those old scripts to a more modern system (with actual error-handling instead of strategic sleep()s and prayers) using Python and telnetlib3. I had a blast and still love this application. I can fly around in it. Training new people was always a pain, but for those that got it—they had super powers.
This got me thinking: Are other companies still using this type of interface to drive their core operations? I’m reflecting on whether the only reason my family's business still uses this system is because of the efficiency hacks I put in place 20+ years ago. Without them, would they have been forced to switch to a modern cloud/GUI system? I’m not sure if I’m blinded by nostalgia or if this application is truly as wonderful as I remember it.
I’d love to hear if and how these are still being utilized in the real world.
P.S. The system we use was originally sold by ADP and has had different names (D2K, Prophet21). I believe Epicor owns it now (Activant before).
P.P.S. Is anybody migrating their old TUI automation scripts to a more modern framework or creating new ones? I’m super curious to compare notes and see what other people are doing.
Moving to a web based system meant we all had to use mice and spend our days moving them to the correct button on the page all the time. It added hours and hours to the processing.
Bring back the TUI!
When I worked ar Sherwin Williams, I got good enough with the TUI that customers could rattle off their orders while I punch it into the computer in real time.
It's absolutely crazy that a well designed TUI is so much faster. It turns out that if you never change the UI and every menu item always has the same hotkey, navigating the software becomes muscle memory and your speed is only limited by how fast you can physically push the buttons.
The program had many menu options added and removed over the decades, but the crucial part is that the hotkeys and menu indexes never, ever changed. Once you learn that you can pop into a quick order menu with this specific sequence of five keys, you just automatically open the right menu the moment a customer walks up. No thought, just pure reflex.
UX absolutely peaked with TUIs several decades ago. No graphical interface I've ever seen comes even close to the raw utility and speed of these finely tuned TUIs. There is a very, very good reason that the oldest and wealthiest retail businesses still use this ancient software. It works, and it's staggeringly effective, and any conceivable replacement will only be worse. There simply is no effective way to improve it.
Edit: I will say that these systems take time and effort to learn. You have to commit these UI paths to memory, which isn't too hard, but in order to be maximally effective, you also have to memorize a lot of product metadata. But the key is that it really doesn't take longer than your ordinary training period to become minimally effective. After that, you just pick up the muscle memory as you go. It's pretty analogous to learning touch typing without trying. Your hands just learn where the keys are and after enough time your brain translates words into keystrokes without active thought.
It's a beautiful way to design maximally effective software. We've really lost something very important with the shift to GUI and the shunning of text mode.
But, we also have some power users who absolutely swear by it, and we offer some power user features for them :-)
* full readline integration, so there's a command history, Ctrl-R reverse search in the command history etc.
* tab completion for many prompts
* a generic system where outputs can be redirected to a pager, a physical printer, "wc" (word count), into a file etc.
* tabular data also has an alternative CSV representation
* generic fast-jump into menus. This works by supplying commands on the command line, and transitioning to interactive mode when the command list has run out
This is all built in-house; the first git commit is from 1997 but that was "import from CVS" and already 20k LoC, so the actual origins go back further.
It's written in Perl with no framework, just libraries.
vDos (vdos.info) was a huge life saver for this application. It's similar to DOSBox, but more tailored to business applications. The big issue was always to find compatible printers for the old application, vDOS includes some emulation to print to any Windows printer.
There might be free alternatives to vDos, but it worked very well and is reasonably priced.
About training new staff, there's actually studies done on it: https://pmc.ncbi.nlm.nih.gov/articles/PMC2655855/
My 2 cents is that GUI is good for exploring new software, while TUI is wonderful if you already have a mental map of what you're doing. So for everyday used software I would definitely hope that more TUI's where used.
A key thing modern replacements lose is the input buffer: One can type multiple screens ahead. In a modern GUI application I can enter a shortcut, but then have to wait till the corresponding view/popup/window appears and registered it's event handlers till I can put in the next command. In a mainframe-style TUI, if I remember the sequence, I can type ahead the shortcuts and input for next screen(s) before it's ready. For the experienced user, who runs the same sequence often this is really efficient.
I was about to say that's what keeps Sungard in business, but then I googled and saw they are no longer in business. So maybe it is starting to die down.
Some of the fastest manual data entry I've ever seen was by operators entering claim information into a medical billing system based on MUMPS.
Keep all hands and feet away.
Modernizing will roll some of that back; I would only consider it if there’s a plan to be around for the years it will take to get good again.
https://hackaday.com/2021/10/06/atari-st-still-manages-campg...
I have also met some people who worked at large old insurance companies. They originally used old mainframes and TUI, and the companies still exist. They told me of various things that were done. Of course migrations happened. And interfaces were built so that modern systems could speak with the old, sometimes via terminal emulator. And of course, some old systems still in use far beyond their time.
At that time their 'web store' just put paid orders in a queue and a room full of humans typed the orders into the green screen which had all the actual inventory.
At first, my wife was pretty disappointed — as a computer science teacher, wasn't I supposed to know how to build a “real” app? But a few years later, she doesn't want anything else. I even offered to have one of my students create a nicer UI without changing the engine or database, but by now she's completely used to the terminal menus.
The tool keeps a database, collects data through dialog forms, generates PDF invoices with groff, and launches Thunderbird when needed (to send invoices, etc.).
Probably a big chunk of businesses that developed their core systems before the PC era. I don't know if they still use it, but Avis Rent-a-car's main application used by its front-line people was a TUI like that, and the front desk people could fly around int it (like you said).
But most developers ape current trends rather than actually figuring out what would work best, so I'd guess very few user-facing TUIs are being built now.
And therein lies the rub: if the process works, and modern software doesn’t necessarily offer any better value proposition, then there’s no real reason to migrate. For a lot of companies, the status quo might literally be all they’ll ever need, and IT’s role is to just keep it up, available, and secure as times change. Sure, I’ll side-eye a theater using a Windows box as an intermediary for Ticketmaster to run transactions against their old AIX rig collecting dust in a corner of a closet, but if it works and it’s secure, well, more power to them keeping costs down.
The advice I’d give is not to knock something just because it doesn’t fit current narratives around technology. Our jobs - first and foremost - are to build and support solutions that amplify productivity of humans in a way they can use without external support; whether it’s an ancient TUI or a modern GUI isn’t as relevant as its efficacy.
And if anyone suggests rewriting it, fire them.
Most people are running on 90s-2000s era stuff rather than TUIs.
For the most part, it works well, and is not very costly.
Check out Sage100... flexible, cheap, on prem... runs everything from job / work tickets to inventory, purchasing, financials, payroll, etc.
Aint sexy but it works!
He showed me his workflow in detail. It's a beautiful software that does everything he needs.
And notice it's only 3.8 MB - smaller than many SaaS software webpages that offer lesser functionality.
[1] https://vetusware.com/download/FloorPlan%20Plus%203D%203.01/...
https://www.pcworld.com/article/2562588/this-us-business-sti...
https://www.reddit.com/r/Commodore/comments/avv1j1/this_olda...
https://groups.google.com/g/comp.sys.cbm/c/LuLJihA1NCU?pli=1...
I've seen even older in use. There's an auto parts store in the capital city of Costa Rica which was still running dBase III for its inventory system on a green phosphor screen IBM PC. Not sure if that store is around post-pandemic but it certainly was running around 4 or 5 years ago. Wish I got a video but it's in a particularly sketchy area that I don't really have any reason to return to.
Also, if anyone else ever has to dump an old database to CSV or whatever, I found perl to be the best tool for the job as it handles old encodings just fine. You can go from ancient database to spreadsheet really easy this way. Here's the ticket:
As you'd expect with having a TUI the users can absolutely fly through it. It's extremely efficient for them.
Of course, if that's a factor I'm guessing it's a small one in comparison to expectations about what "modern" software should look like.
And if you stretch the definition of TUI a bit, the Bloomberg terminal is a fascinating example.
I've done exactly this for the likes of JP Morgan Chase. Many of their core banking systems are some COBOL/Fortran mainframe (that I know nothing about) but the interface through a TUI client. When they have a desire to work in a more modern fashion, it's SendKeys to the rescue. There's definitely still a lot of TUI's that run the world.
https://www.trojmiasto.pl/tv/Commodore-64-maszyna-do-wywazan...
The web failed to live up to the early promises in a lot of ways. We have complicated frameworks, complex architectures, browser headaches, etc. and what we got out of it are user interfaces that are slower than what we replaced and entire categories of bugs that didn't exist before. There's so much extra bullshit in place to overcome the fact that we are using a stateless protocol designed to deliver text documents.
The only things I would really be concerned about with your family company's app are maintainability, availability of security updates, and the use of obsolete software like XP. It sounds like you're already modernizing the code. That old OS is a disaster waiting to happen though.
I like the idea of an internal enterprise app running in the terminal on a reliable FreeBSD or Linux machine. The people who have to live in that app will be faster with a keyboard-driven workflow. A web front end is for customers and situations where you prioritize looks and accessibility over speed and usability. If you implement the the business rules in a modern middle tier and have a good database backing it, you can have the best of both - TUI for internal users and slap on a web front end for external users.
Later that same year Jurassic Park premiered at the same location. Again, every geek for miles around beat a path to the theater. But this time when I arrived, the line was hundreds of people deep and it took about 45 minutes to get to the head of the line (good thing we got there early.) When I got up to the cashier I found they had a new Windows-3.1 based ticket dispensing system. You said how many tickets you wanted and the cashier moved the mouse over a text field, took their hands off the mouse to type "1" or "2" or whatever. If you bought a child's ticket or a senior ticket, that went in a different form field. Then the cashier put their hands back on the mouse, scrolled down and hit the "calculate" button. It told them how much cash to take. They took their hands off the keyboard to collect the cash and then pressed the "dispense tickets" button. Thankfully, the system seemed to actually dispense tickets without crashing. (Windows 3.x had a very bad reliability reputation.)
What had taken 10-15 seconds with the "old school" interface now took about a minute.
Never let anyone tell you "the new system" is better just because it is new.
[[ Also, about this time I remembered Jef Raskin going on about keyboard interfaces, but this was long before the publication of The Humane Interface. And I know we're using the initialism "TUI" in this thread to mean "Text UI", but some people use it to mean "Tactile UI." No one ever got fired for recommending a React Single Page App optimized to quickly swap pages on the current model iPhone. Whether or not that's the best interface for the application is irrelevant. ]]
Where can I find these TUI applications to look at?
IIRC it has transactions so you can build up a reservation and make queries in the process. There's even test properties in production so you can practice making/reserving/retrieving reservations.
We were also tasked with adding new process automation and tooling. Instead of rewriting the system, we reverse engineered the database format and wrote additional tools and utilities around the core tooling, using more modern frameworks. I think this was the right choice and everyone was happy: they didn't have to relearn years of muscle-memory and business process built around the BASIC system, but we could iterate in a modern programming environment.
It wouldn't be surprising if the system was still in use, there was nothing wrong with it and it worked great.
Later they had some GUI that was used to open ... a terminal of some sort for the same TUI. The GUI made it slower, somehow.
My buddy and I requested access and learned how to use it. Not only did it streamline our process, it allowed us to do everything, where the GUI often omitted certain tasks forcing us reps to call customer service (for example, providing customers with credits after fixing their accounts).
So we lived with both the GUI up for when management walked by and relied on the TUI when we needed/wanted to work quickly.
I bet the system hasn't changed a bit. But I still live in the terminal quite a bit these days.
Been experimenting with charmbracelet's[2] stuff recently to do something similar. Still very early stages so nothing to show off yet but would highly recommend it for anyone else looking into creating a TUI app/business.
[1] https://www.terminal.shop/ [2] https://github.com/charmbracelet
The speed was incredible once you got proficient. Once you got the muscle memory down you could punch in any single pizza order in less than a second. Even something complicated like different toppings on the halves was NBD. Pizza Hut was always coming up with these ridiculous gimmicks and the system could accommodate them seamlessly. Just incredible.
This system probably quietly saved the company millions in its time.
I look forward to my great grandchildren rediscovering the TUI.
I've seen many of these systems over the years. Before I moved into software full time, the company I was working for was transitioning from a TUI to a GUI based system. The long time sales and warehousing staff absolutely hated it. Which, yes, is par for the course with any new system. But, I really believe there is an (potential) efficiency to a TUI system that makes it superior to a GUI when dealing with prototypical business operations (order entry, inventory lookup, etc).
Which makes me think, is there a market for "modern" TUI systems?
That’s what’s so efficient about TUIs for local software. You typically can’t do that in web apps. Not that it’s impossible, but it’s far from the default.
I have never seen people move through a GUI that fast. They were lightning quick with it. They were like an veteran accountant with a ten-key adding machine. It was amazing, and pretty damn sobering when you think how much work we spend on GUIs.
But here’s the nice thing: I converted everything in a Flask app with React frontend.
The nicest thing is that besides using a modern relational DB, I write everything to keep old db files synced so that I can still run the old app in DosBox…and keep the new stuff in Docker.
It works, flawlessly:-)
The callcentre however still used the TUI for all customer inquiries; it was only the customers who got a pretty interface to view their details.
Depending on which system you were logged into, you had a green screen (production) or magenta (development).
Separately, I have spent the last three years building a web app that replaced a heap of automation scripts for a ~50 person business. These were much more modern than what the OP describes but it had some of the same qualities. The scripts mostly generated google sheets and emails. The replacement is a python web app using SQLite. Moving the company data into a proper database has been a very significant step for them. In some ways, the project feels a lot like custom business software that got built in the 90s.
Why? Token cost. He’ll of a lot cheaper to use an LLM than a vision model for something like automating apps, or enabling your app to be agent-friendly at a low cost.