Remix.run Logo
CGamesPlay 17 hours ago

(Article is from 2023, so the title should be updated to say "32 years ago", or something)

The biggest loss in TUIs is the latest wave of asynchronous frameworks, which bring the joy of dropped keypresses to the terminal.

In any TUI released before the year 2000, if you press a key when the system wasn't ready, the key would just wait until the system was ready. Many TUIs today still do this, but increasingly frequently (with the modern "web-inspired" TUI frameworks), the system will be ready to take your keypress, and discard it because the async dialog box hasn't registered its event listener yet.

Other than that antipattern, TUIs are doing great these days. As for terminal IDEs, Neovim has never been more featureful, with LSPs and other plugins giving all the features this article discusses. I guess it isn't a mouse-driven TUI, so the author wouldn't be interested, but still.

cameldrv 16 hours ago | parent | next [-]

Yes. Back in the DOS days, and even before, when people used actual terminals, there was a keystroke buffer. You'd see people who really knew the interface fly through tasks being multiple keystrokes ahead of the UI. Stuff would just flash onto the screen and disappear as it processed the input that was already in its buffer. It should be possible to implement this with modern frameworks, but it requires thought.

acuozzo 13 hours ago | parent | next [-]

> You'd see people who really knew the interface fly through tasks being multiple keystrokes ahead of the UI.

I remember.

This, unfortunately, killed people: Therac-25. Granted, the underlying cause was a race condition, but the trigger was the flying fingers of experts typing ahead, unknowingly having been trained to rely on the hardware interlock present in older models.

eviks 2 hours ago | parent [-]

> This, unfortunately, killed people: Therac-25. Granted, the underlying cause was a race condition

So it didn't kill people, something else was that cause

markus_zhang 16 hours ago | parent | prev | next [-]

Yeah. I used to work as a phone surveyor, the one you hate. Our software is a terminal connected to a mainframe. I got used to it after a few weeks and was very productive.

Costco Canada vision shops still use a terminal connected to an AS/400 machine as I snooped around last month.

Twirrim 15 hours ago | parent | next [-]

In the late 90s I was required to slowly replace dumb terminals with PCs. One of the older ladies taking phone orders was most put out by this, understandably. She was lightning fast on that terminal. She'd never used a PC (I hit on the idea of using solitaire to learn to use a mouse, which worked amazingly well), and was never able to get to the same speed with one as she'd done on her dumb terminal. It's hard to beat the performance of dedicated devices.

roelschroeven 12 hours ago | parent | next [-]

While I agree that dedicated devices can be more efficient than Windows-style user interfaces, and even more so than browser-based user interfaces, many people don't use those modern interfaces in efficient ways.

I have observed countless times how many people fill in a field, than move their hand to the mouse to move the focus to the next field or button, than move their hand back to the keyboard, instead of just pressing tab to move the focus. It's painful to watch. Knowing just a few keyboard shortcuts makes filling in forms so much faster.

Things are getting worse, unfortunately. Modern user interfaces, especially in web interfaces, are made by people who have no idea about those efficient ways of using them, and are starting to make it more and more difficult to use any other method than keyboard -> mouse -> keyboard -> mouse -> ... . Tab and shift-tab often don't work, or don't work right. You can't expand comboboxes with F4, only the mouse. You can't type dates, but have to painstakingly select all the parts in inefficient pickers. You can't toggle options with the spacebar. You can't commit with enter or cancel with esc.

thequux 15 hours ago | parent | prev | next [-]

I recall reading somewhere that the entire point of solitaire (at least the original implementation that came with windows 3) was to teach users how to click and drag, so I'm not surprised that it was good for teaching your colleague how to use a mouse

int_19h 8 hours ago | parent | prev | next [-]

An inventory management app was one of my first paid software engineering projects. Sometime in early 00s I had to rewrite it for Windows because the ancient DOS codebase had a bunch of issues running on then-modern Windows versions. I sat down with the users and watched how they were using the DOS version, including the common patterns of keyboard navigation, and then meticulously recreated them in the WinForms version.

For example, much of the time would be spend in a search dialog where you had a textbox on top and a grid with items right below. In the TUI version, all navigation was with arrow keys, and pressing down arrow in the textbox would move the focus to the first item on the grid. Similarly, if you used up arrow to scroll through the items in the grid all the way to the top, another press would move the cursor to the textbox. This was not the standard focus behavior for Windows apps, but it was very simple to wire up, and the users were quite happy with the new WinForms version in the end.

kccqzy 7 hours ago | parent [-]

The world needs more of this. It is nowadays rare for programmers to sit down with users and observe what they are doing. Instead we have UX designers designing the experience and programmers implementing that.

ssl-3 13 hours ago | parent | prev | next [-]

In my own little world, I saw this first with mail and news readers. It was fast and simple to read mail and news with pine and tin: The same keystroke patterns, over and over, to peruse and reply to emails and usenet threads.

As the network ebbed and flowed, email too-often became unreadable without a GUI, and what was once a good time of learning things on usenet became browsing web forums instead. It sucked. (It still sucks.)

In the greater world, I saw it happen first at auto parts stores.

One day, the person behind the counter would key in make/model/year/engine and requested part in a blur of familiar keystrokes on a dumb terminal. It was very, very fast for someone who was skilled -- and still pretty quick for those who hadn't yet gotten the rhythm of it.

But then, seemingly the next day: The terminals were replaced by PCs with a web browser and a mouse. Rather than a predictable (repeatable!) series of keystrokes to enter to get things done, it was all tedious pointing, clicking, and scrolling.

It was slow. (And it's still slow today.)

bionsystem 13 hours ago | parent | prev [-]

I saw this at an airport. Took the same plane twice, one year apart, in between they had replaced the terminal by a web UI. First trip it took 15 seconds from the hostess (well into her 50s) to find my booking and print my pass. Second trip (on the web UI), it took 4 hostesses to team up for something that felt like 5 good minutes to do the same thing.

snovymgodym 15 hours ago | parent | prev [-]

Costco still uses AS/400 company-wide for their inventory system I think

markus_zhang 14 hours ago | parent [-]

Interesting. Looks like it suits them perfectly. I wonder if the AS/400 is running in an emulator or on a real machine.

snovymgodym 14 hours ago | parent | next [-]

I doubt it, probably just running on a regular Power ISA rack mount server from IBM. Though I guess technically all IBM i aka AS/400 is running on an emulator.

https://en.wikipedia.org/wiki/IBM_i#Technology_Independent_M...

snuxoll 13 hours ago | parent [-]

Nope, we still have an IBM i deployment kicking around at $DAYJOB, it's running natively on POWER hardware. Way back in the days of the original OS/400 running on AS/400 hardware, IBM had the foresight to have applications compile to MI (Machine Interface) code; which is a bytecode format closer to something like LLVM IR instead of something like JVM or CLR bytecode. When a PGM object is copied or created on an IBM i system, TIMI (Technology Independent Machine Interface) takes the MI code and translates it to a native executable for the underlying platform.

We probably still have a couple of PGM objects kicking around on our modern POWER hardware that were originally compiled on an old AS/400 system, but they run as native 64-bit POWER code like everything else on the machine.

The IBM midrange line gets a lot of undue disgust these days, it's not sexy by any means, sure, but just like anything running on modern day Z/OS you know that anything you write for it is going to continue to run decades down the line. Well, as long as you limit the amount of stuff you have running on 'modern' languages; because Java, Node, Python, Ruby, etc. are all going to need upgrades while anything written in 'native' languages (RPG, COBOL, C/C++, CL) compiles right down to MI and will keep working forever without changes.

sillywalk 13 hours ago | parent [-]

Nitpick:

The Machine Interface dates back to AS/400's predecessor, the System/38.

snuxoll 7 hours ago | parent [-]

Thanks, I was desperately trying to remember because I swore there was something beforehand, but It's been a very long time since I did the reading.

sillywalk 13 hours ago | parent | prev [-]

As far as I know, there are no AS/400 emulators.

It's still updated by IBM and runs on POWER. It's just called "i" now.

I believe the naming went something like AS/400->iSeries->System i->System i5->i

misnome 14 hours ago | parent | prev | next [-]

Fun story: When I worked at blockbuster I had my computer access revoked and summoned to explain because a colleague told management I was “hacking” when they saw me doing this on the computer system.

teeray 13 hours ago | parent | next [-]

Makes me wonder if that’s where the TV trope of a hacker flying through screens faster than you can see came from

p_l 13 hours ago | parent | prev [-]

Was that still on the VMS-based blockbuster video system?

Weird question, but I accidentally ended up with one of those in my hands that ran in probably non-blockbuster place from 1996 to 2000 :)

Matumio 15 hours ago | parent | prev [-]

Remember the venomous, desperate BEEP! when the keystroke buffer was full. (Or was it when pressing too many keys at once?) Like a tortured waveform generator constantly interrupted by some higher-priority IRQ. Good times.

a3w 17 hours ago | parent | prev | next [-]

Rough quote: "in 1984 we had at my house",

so even 41 years seems to be in the scope.

I was expecting

- early projects that ended in Visual Studio 1.0 or NetBeans soon after, (2 to 9 years too early for them)

not

- "vim (1991) was not out yet" (not-a-quote, but my feeiling upon looking at ncurses instead of floating windows)

projektfu 14 hours ago | parent | next [-]

I snickered a little because I know Visual Studio didn't have a version 1.0. Wikipedia identifies the first version as Visual Studio 97, which was at version 5.0. I remember before that there was "Microsoft Developer Studio 4.0" which came out around Windows 95, and could run on 95 or on NT 3.51. There was a Visual C++ 1.0 and a Visual Basic 1.0 released at different times. Meanwhile there were also the workhorses, Microsoft C and MASM. In those days, Borland and Watcom were real competitors to Microsoft for C and C++.

roryirvine 14 hours ago | parent | prev [-]

Yeah, by 1995, Visual Basic / C++, Delphi / Borland C++, and Symantec C++ were all-conquering.

A few years before, it was very different - VisualAge and Rational Application Developer were the big names in the early 90s in "professional" IDEs. Interface Builder for university spin-outs or funky startups (and SunWorks / Forte Studio for the less-funky ones). CodeWarrior on the Mac (perhaps with THINK! hanging on too). I think Softbench was popular for scientific software, but I never actually saw it myself.

And then just a few years later, the rise of Java turned things upside down again and we got Jbuilder, Visual Cafe, & NetBeans as the beginning of yet another new wave. The Visual Studio suite really began to take off around then, too.

In short, the 90s were a time of huge change and the author seems to have missed most of it!

calenti 13 hours ago | parent [-]

An all-in-one like Rational Rose may be making a comeback in terms of these agentic AI projects, because now you actually can turn a spec into code without layers of tagging and UML.

karmakaze 17 hours ago | parent | prev | next [-]

I wasn't paying attention to when 30 years ago actually was...

So disappointing to expect a GUI Smalltalk System Browser and seeing DOS TUIs.

And then delight recalling Turbo C/Pascal and MS C 4.0 with CodeView that even worked in 43 or 50 line modes.

jll29 16 hours ago | parent | next [-]

Yes, me too, I was expecting either Smalltalk or LISP machine GUIs.

Having said that, some old TUIs were clearer and faster even on weaker hardware. This should be a lesson for us today. Color transitions and animated icons flying over the desktop are NOT what I need, but speed, clarity, and discoverability of more rarely used functionality are vital.

igouy 15 hours ago | parent [-]

May 1988 -- Smalltalk/V 286 -- on IBM-PC, PS/2 or compatible, with an 80286 or 80386

"INTRODUCTION TO THE SMALLTALK/V 286 ENVIRONMENT"

http://stephane.ducasse.free.fr/FreeBooks/SmalltalkVTutorial...

pjmlp 15 hours ago | parent [-]

That was my introduction to Smalltalk.

igouy 14 hours ago | parent [-]

ditto

So much better than the TUI Smalltalk/V

bryantnyc 5 hours ago | parent | prev [-]

Anyone else on here recall IBM VisualAge for Smalltalk -> VAST, or Cincom Smalltalk?

rkagerer 14 hours ago | parent | prev | next [-]

Yes! That phenomenon drives me crazy. I used to be able to use a computer at warp speed by staying ahead of its responses with chains of rapid keyboard shortcuts etc. Now it's like I'm trying to sride through molasses.

heresie-dabord 16 hours ago | parent | prev | next [-]

When people love an IDE product so much that they can't work without it, they have overspecialised to their detriment. And possibly to the detriment of the code itself.

> As for terminal IDEs

The GNU/Linux terminal is the killer app. Multiple terminals in a tiling window manager is peak productivity for me. (Browser in a separate virtual workspace.)

And modern scaling for a big display is unbeatable for developer ergonomics.

EbEsacAig 15 hours ago | parent | next [-]

> When people love an IDE product so much that they can't work without it, they have overspecialised to their detriment.

I think you are wrong.

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

Being extremely good at something increases the gap between said something and everything else. That doesn't mean being extremely good at the first thing is "over-specialization to detriment". If someone is equally mediocre at everything, they have no such gap, so no "over-specialization to detriment"; but is that really worth desiring? I think not.

jancsika 14 hours ago | parent | next [-]

> Being extremely good at something increases the gap between said something and everything else.

You're also potentially over-specializing at one level while at the same time neglecting other levels.

Musicians run into this problem when, for example, they rely solely on muscle memory to make it through a performance. Throw enough stress and complicated music at them and they quickly buckle.

Meanwhile, a more seasoned performer remembers the exact fingers they used when drilling the measure after their mistake, what pitch is in the bass, what chord they are playing, what inversion that chord is in, the context of that chord in the greater harmonic progression, what section of the piece that harmonic progression is in, and so forth.

A friend of mine was able to improvise a different chord progression after a small mistake. He could do this because he knew where he was in the piece/section/chord progression and where he needed to go in the next measure.

In short, I'm fairly certain OP is talking about these levels of comprehension in computer programming. It's fine if someone is immensely comfortable in one IDE and grumpy in another. But it's not so fine if changing a shortcut reveals that they don't understand what a header file is.

mxkopy 15 hours ago | parent | prev [-]

What if the IDE is a LeapFrog 2-in-1 Educational Laptop

johnebgd 15 hours ago | parent [-]

If you make usable products that solve problems for others from that then it’s a great IDE…

pjmlp 15 hours ago | parent | prev | next [-]

As someone that started when only rich people could afford GUIs, I don't understand what is killer app about it.

We used text terminals because that is what we could afford, and I gladly only start a terminal window when I have to.

eikenberry 14 hours ago | parent [-]

The killer thing about it is that it is a gateway to the shell, all the command line tooling and the best cross-platform UI.

pjmlp 13 hours ago | parent [-]

Xerox PARC, Atari, Amiga and many others had shells, without needing to live on a teletype world.

It is only cross platform as long as it pretends to be a VT100.

eikenberry 12 hours ago | parent [-]

It's not about needing to live in a teletype world, it is about how language/text is just a better interface for a general use computer. Computers primary feature is that they are programmable and an interface that allows you to take advantage of that is superior to one that doesn't. The programmable GUIs all failed to gain traction (smalltalk and like), that left the shell (and maybe spreadsheets) as the best UI for this. Though as AIs mature we might see a shift here as they could provide a programmable interface that could rival shell scripting.

pjmlp an hour ago | parent | next [-]

Great that Microsoft, Apple and Google are on the right path then, with AI voice controlled and gestures OSes.

int_19h 7 hours ago | parent | prev [-]

The reason why GUIs became so popular so quickly after they were introduced is because text is not "just a better interface for a general use computer".

Like OP, I remember the days when command line was all you had, and even then we used stuff like TUI file managers to mitigate the pain of it.

wat10000 15 hours ago | parent | prev | next [-]

Why is it to their detriment? It's not like they're stuck with it forever. "Can't work without it" is really "won't work without it because they prefer installing it over going without."

rpodraza 15 hours ago | parent | prev [-]

Good luck writing Java with notepad.

pjmlp 15 hours ago | parent | next [-]

We did that back in 1996, however the sentiment applies to most languages.

Example Notepad versus Turbo C++ described on the article.

int_19h 7 hours ago | parent | prev | next [-]

Was literally a thing in some colleges.

anthk 15 hours ago | parent | prev [-]

Tons of people did that but with nvi/vim and calling javac by hand.

constantcrying 15 hours ago | parent | prev [-]

People really should stop doing TUIs. Basing software around an ancient legacy paradigm of character grids is pretty silly. From my personal experience, people who talk about how much stuff they do in TUIs usually are mostly tech illiterate and all great devs I know use graphical tools in almost every situation.

>As for terminal IDEs, Neovim has never been more featureful, with LSPs and other plugins giving all the features this article discusses. I guess it isn't a mouse-driven TUI, so the author wouldn't be interested, but still.

Neovim instantly becomes a better piece of software if you use a GUI frontend. The terminal puts in arbitrary limitation and inconsistencies. Why anyone would use and interface paradigm which can not do color in a sane way is beyond me. Just use the GUI, it is better in every way.

invader 14 hours ago | parent | next [-]

People should also stop using terminal emulators. It is pretty silly to base software around ancient printing terminals. Everyone knows for a fact that only tech illiterates use a console instead of a GUI. Since all great devs use a GUI. Just a fact.

Also, people should stop playing 2D games. It is pretty silly to base your entertainment on ancient technology when modern GPUs can render super-complex 3D scenes.

And don't make me start on people who still buy vinyl...

anthk 13 hours ago | parent | next [-]

Current GPU's can't compete with my brain 'rendering' a Slash'em/Nethack scene with my pet cat while I kick ass some foes with my Doppleganger Monk full of Wuxia/Dragon Ball/Magical Kung Fu techniques.

rkomorn 14 hours ago | parent | prev | next [-]

Honestly hard to disagree with your first point even though it's sarcasm.

It's still quite easy to end up with a terminal you need to reset your way out of (eg with a misguided cat), not to mention annoying term mismatches when using remix/screen over SSH, across OSes, or (and this is self inflicted) in containers.

constantcrying 14 hours ago | parent | prev [-]

Completely disingenuous. Stop the snark.

For UI there exists a straight up superior alternative, which keeps all of the benefits of the old solution. Neovim is just straight up better when used outside of a terminal emulator.

What is true for TUI vs. GUI is not true for CLI vs. GUI (or TUI for that matter) pretending the argument I made applies to the later is just dishonest. You can not replace CLI interfaces adequately by GUI or TUI interfaces, you can totally replace TUI Interfaces by GUI. See neovim as an example. It is superior software when used outside of the terminal.

eikenberry 14 hours ago | parent | prev | next [-]

TUIs are the best cross platform apps. They run on all the major and minor platforms in general use. GUIs cannot compete with browsers being the next closest thing. They can be integrated with the shell and also work perfectly well remotely w/o issues. TUIs are superior in many ways to GUIs and have a place in the ecosystem.

constantcrying 12 hours ago | parent [-]

TUIs do not even run the same across terminal emulators.

It is a total joke to call something which depends on how the underlying terminal emulator interprets specific ANSI escape sequences "multi platform".

yoz-y 15 hours ago | parent | prev | next [-]

Most of my work is done on remote machines. Nothing beats tmux+tuis in this paradigm.

pjmlp 15 hours ago | parent [-]

I rather stick with RDP, or browser based workflows.

yoz-y 13 hours ago | parent [-]

They are fine, however RDP requires more bandwidth and most of the stuff I run is terminal commands anyway.

Company I work for has a great browser based IDE but that’s something I would never setup and maintain for a personal project.

mlyle 15 hours ago | parent | prev | next [-]

Modern terminals do color just fine-- 24 bit color support has existed since 2010-ish, and been mainstream since 2015.

There's nothing wrong with graphical IDEs... or text user interfaces. Great developers use both. Low effort troll is low effort.

calenti 13 hours ago | parent [-]

+1 - crap code can come out of notepad / emacs / vi or IDE-flavor-of-the-day or even the AI code sausage maker. Testing, specification, knowing what you are building and why still matters.

pjmlp 15 hours ago | parent | prev | next [-]

Agreed, we used TUIs because we couldn't afford anything better on MS-DOS, CP/M, 8 bit home computers.

People on better systems like the Amiga and Atari were already past that.

anthk 11 hours ago | parent [-]

Vim was born in Amiga and Amiga OS came with some Emacs clone.

pjmlp an hour ago | parent [-]

I surely don't remember such clone.

As for where Vim was born, hardly matters, it was someone with UNIX culture background, that happened to own an Amiga.

uniclaude 3 hours ago | parent | prev [-]

SSH comes to mind.