Live data from Hacker News

Ask HN: My family business runs on a 1993-era text-based-UI (TUI). Anybody else?

news.ycombinator.com

301–310 of 315 posts

Re: Ask HN: My family business runs on a 1993-era text-based-UI (TUI). Anybody else?

#301

Earlier quoted context omitted.

> 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. Bloomberg Terminal basically. And then because of muscle memory, it's so hard for users to get used to another system. And then they…

A single $250 payment per head for training is quite cheap if you consider the hours saved at not waiting for awfully slow SSO redirections to complete and web page refresh.

It was a 3 day online course that I had to pay for out of pocket during my internship. :(

Granted, that internship led me to where I am now, so I'm not complaining.

Re: Ask HN: My family business runs on a 1993-era text-based-UI (TUI). Anybody else?

#302

Many (most?) older retail businesses still use TUIs. They're reliable, consistent, and orders of magnitude faster than GUI systems. 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 it…

> 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. Bloomberg Terminal basically. And then because of muscle memory, it's so hard for users to get used to another system. And then they…

I worked for a small company that had a project with Bloomberg. We went to the office downtown, and being the clueless Upstate hick that I was, I saw the text-based UI up on a screen and asked my boss — a little too loudly — if we were at an auto parts store.

"Shhhhh! That's the Terminal!"

Re: Ask HN: My family business runs on a 1993-era text-based-UI (TUI). Anybody else?

#304

I'm starting to maintain a COBOL codebase for my dad's small business. It uses MicroFocus's runtime so it runs fine on Windows 10/11 (but I'm trying to migrate it to OpenCOBOL). He helped write a good chunk of it, but doesn't make any major changes to it anymore. I'm not confident enough to make major changes to it, but I fix some bugs here and there. I ended up writing a python script to parse the database layout fo…

This prompted me to check if MicroFocus was still in business. It's a little complicated. Also, the Wikipedia article mentions Ryan-McFarlan - a COBOL and FORTRAN compiler company. I miss the 80s...

https://en.wikipedia.org/wiki/Micro_Focus

Re: Ask HN: My family business runs on a 1993-era text-based-UI (TUI). Anybody else?

#305
post #181

Many (most?) older retail businesses still use TUIs. They're reliable, consistent, and orders of magnitude faster than GUI systems. 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 it…

> UX absolutely peaked with TUIs several decades ago. I'm going to push back a little on that. For several years, MacOS followed a strong UX convention with consistent keyboard shortcuts, menus, layout order, and more. Similarly, Microsoft started with the same, but with everything reversed. At the time, most major cross-platform apps followed these conventions. Two periods broke these rules: the expansion of web app…

Since GUIs are not scriptable, unlike command-line TUIs, a GUI can never be as fast or as customizable as a TUI, which makes them inherently less usable. It doesn't help that the Mac was partially inspired by the work of Jef Raskin, who was religiously opposed to customization.

Re: Ask HN: My family business runs on a 1993-era text-based-UI (TUI). Anybody else?

#307
In this thread:

- people with seriously thick rose colored glasses

- hazy fever dream of TUI applications

- folks not understanding that gui applications definitely can have shortcuts like TUI -- it comes down to design and the developer(s) making it

Re: Ask HN: My family business runs on a 1993-era text-based-UI (TUI). Anybody else?

#308

Earlier quoted context omitted.

That is not unique to TUIs, but also possible in GUIs where the developers care, and in some games (try the GUI ("tiles") version of Brogue). You can definitely make a GUI that updates in an instant and be fully keyboard-driven, even if that may have been more common last century.

We’re comparing TUI with web browsers for good reason. I don’t see any reason to add game engines to that debate. I have never seen a business client move any application from a TUI to a Unity based UI. I’ve never even heard of anyone considering a game engine in the architecture of a business application. So what you’re saying may well be true but it’s akin to a rare mythical creature, does it even exist?

That was not what I tried to say. Brogue, like other similar games, can be played in a TUI mode, in the terminal, or with a GUI. Same game, just different UI implementations, and both tend to be about equally laggy, or usually the GUI version is probably less laggy, since you can just blit glyphs without the overhead of terminal escape codes etc to draw the same symbols in the TUI. And Brogue just uses SDL, not a game engine, so that is not relevant at all.

But your snarky reply is probably also wrong anyway, since I would be surprised if there is no business software made using game engines. Tesla is known to have used (but not anymore?) Godot for making GUIs for their in-car displays for instance. I have bought applications (not games) made using both Godot and Unity. Not saying it would be a great idea, in general, to use those engines for business applications, but people are not known for always using the best possible tools, are they, and it certainly would work in theory?

Not very familiar with Unity, but Godot has very nice GUI widgets. Same style of WYSIWYG editor like old Visual Basic or Delphi really. You drag widgets to place them on the screen, set properties, add scripts to react to different events. The entire Godot IDE itself, a very non-trivial application, is implemented using Godot's own GUI framework.

https://docs.godotengine.org/en/stable/tutorials/ui/index.ht...

Re: Ask HN: My family business runs on a 1993-era text-based-UI (TUI). Anybody else?

#309

Earlier quoted context omitted.

> We've really lost something very important with the shift to GUI and the shunning of text mode. GUIs can have keyboard shortcuts too. I'm an artist and I work two-handed: right hand moves the stylus around the screen, left hand floats around the keyboard and changes tools, summons control panels, etc. Whenever I try a different program than the one I'm used to, and have to poke at icons with my right hand because I…

We solved this with mnemonics (underlined letter is the shortcut) but then got rid of them for some reason

Doesn't work with internationalization. P for Pencil is great in English. P for Crayon en Français? Non.

Doesn't work with reassignable keys, either. If I wanna reassign the shortcut for "pencil" to "d" because it's easier to hit with my left hand then that's my own business.

Re: Ask HN: My family business runs on a 1993-era text-based-UI (TUI). Anybody else?

#310
I had the great fun, no sarcasm, of modernizing a TUI system that had been in use at a company from the mid to late 80s. It was a DOS app, I don't recall the name, that let you build "screens". Each screen would have multiple fields, possibly multiple pages, and would write data to a CSV (colon separated file) with a max size of 2MB. Each screen had its own file, and screens could not "talk" to other screens. Each screen had 3 modes, search, data entry, and record paging. There was a fourth type of screen called a report. This was basically the search screen, with slightly different operators that would mainly produce counts of whatever fields were being searched for, and would send that to a printer.

The search was interesting. I don't remember the specifics of it, but it was fairly powerful. A user would enter values in fields they wanted to search on. Say they wanted to find a customer named Bill who had ordered in the last 30 days. They would move the cursor to the First name field, enter "Bill" ^ "William" (the caret being the OR operator, I do remember that one), then move to the Order field and enter "30D-", hit enter, and get their records back.

The company had about 20 of these screens, and the way they used the program was fun. Everyone in the office had a Windows computer with a network drive that pointed at the storage server. The storage server had all of the screens CSV files. There was one screen in particular that everyone used. It was the product orders screen. When someone in the office was using it, they flipped a switched on the wall next to their computer that turned on a small red light for everyone else letting them know that the product screen was in use, and no one else could touch it. Once the light went off, someone else could jump in. I heard that it was usually a race to be the next one to use it, and arguments would pop up if someone was hogging the product orders screen.

I was brought in around 2009 to modernize the system. I was told that it has to look, feel, and work exactly like the old one, but be multi user. They also gave me a list of 15 of the screens that they really needed implemented in the new system. Being that I am a web developer, that is what I reached for. PHP backend, a JS frontend, and MySQL for all the data. The first order of business was ingesting all of the CSV's, and then relating all of the data. With orders, work orders, customers, company contacts, people contacts, inventory, etc this took awhile. Next was building the API to access the data. This was fairly simple. The truly hard part was the frontend. At that point, I had little to no JS experience, but I soon learned.

By the end, I had a website that when loaded had a main menu that looked exactly like the main menu of the old app. Each screen was listed with a keyboard shortcut next to it that would load a particular screen. By default screens were in search mode. I spent a lot of time with the built in help menus of the old program, and talking to the people who used it, to get a list of all of the search functions and how they worked. Then had fun writing a parser for this that would translate the searches into SQL queries.

Hitting Page Down while in search mode would start paging through records. The challenge here was the speed. In the old app, they had at most 2MB of data on a local file. The new system of course was a web page calling an API, which was querying a database that had 30 years of data in it. Users biggest complaint is that this was just way to slow. So I reached for the new at the time web workers API to preload 100 records in the background so that paging through records became nearly instant. And this worker would start filling the record cache once it got about half way through its current list.

One of the most challenging things in the build was the keyboard navigation. In the old app, if you pressed the down arrow you would move to whatever field was directly under the current field. But, if that field overlapped 2 fields below it, and the cursor was in the far right of the field, and the user pressed down, it would move to the first location in the right side field that was under it. I basically came up with a mapping system for fields so that when a user pressed the down arrow it always went to the correct field. Another fun part was the left and right arrows. If there was no data in the field, it would just move to the next field left or right. But, if there was data in the field, it would only move left if you were at the start of the field, or right if you were at the last character written in the field.

Another challenge was keyboard shortcuts. There were key press handling libraries at the time, but none of them did quite exactly what I needed, especially with each screen mode having slightly different shortcuts. This lead to me writing my own keyboard handling library that was aware of what state it was in.

And something I had fun building was the printing capability. The old app had a companion app that could be sent data, and it would put it into a pre-built form that was then sent to a printer. So something like an invoice would be created, data was sent to the other app, it had a pre-built invoice form with a company header, and data placeholders for all the incoming records, and print that out. For my solution, I had a print.css file for each screen. When a user hit the Print Screen button the page would swap in the print.css, trigger a Ctrl-P, wait for the user to select print in the browser, then swap back to the normal css file.

I got to do so many things with a web app that first of all I didn't know were possible, and second, I haven't had the pleasure of doing since that app.

To this date, its the most fun I have had working on any project, and its still in use today. So in another 15 years, maybe someone else will have to come along and update my web TUI to whatever new technology is around.

Post reply on HN