Stop Making TUIs
10 points by tusharhero
10 points by tusharhero
But building good UI is very hard: this kind of code is tedious, repetitive, exacting, and gated by platform conceptual knowledge. It takes years to get good at this kind of work.Which is why I would never hand-write this program. Instead, I summoned it.
And here they lost me, as LLMs are also not good at making well designed coherent user interfaces. They make slick looking prototypes and demo material but actually making a good UI with good UX takes a holistic approach and a visual understanding LLMs fundamentally do not have. It is already difficult to make them adhere to the same patterns and practices in the area they are good in (code).
Anyway, that is where the author lost me. I did continue reading a bit but the article reads a bit like a feverish ramble as it jumps all over the place with things like this
I’m not packaging this application up. If you want it, just screenshot this section of the post and give it to Claude. It’ll build something useful. You see where I’m going with this.
No I am not, you just went on a tangent about something and then make a sudden statement about not packaging it up. There is all sorts of assumed context and subtext the author takes for granted that is not being introduced. It honestly reads a bit like this
I’m not packaging this application up. If you want it, just screenshot this section of the post and give it to Claude. It’ll build something useful. You see where I’m going with this.
This is really completely out of touch. AI psychosis. Some people think their prompted slop is so good that other people want to copy them.
LLMs are absolutely atrocious at making user interfaces so I second your sentiment. With TUIs being relatively simple and straightforward it cannot produce a ball of mud with a bow on its head that it usually does with websites (thanks to this I get an ick about websites that look even moderately like they were generated by an LLM).
Like yes it can probably create a nice demo website, but tell it to a navigation bar with slightly unconventional structure and a modal window and you will loose your mind.
I spent some time using it for prototyping a rotary mixer interface with Raylib and the results were hilariously bad.
LLMs are also not good at making well designed coherent user interfaces
This really depends on what your line for a good UI is.
I will happily argue that LLMs can produce user interfaces that are good enough for many personal tools.
Here's what I got a few months ago for my taskbar bandwidth monitoring app. It's certainly good enough to solve the problem I wanted to solve.
Simon, please don't. You don't have to defend the line for LLMs at every single turn certainly not when you set an arbitrary line yourself to argue from. To be frank it is a bit tiresome and muddies the waters.
No doubt LLMs can produce something that is "good enough" for a personal project. But if you look at the bit I quoted and the way I responded to it I'd hope it is clear enough that is not the context this was being talked about.
But good enough UI was the author's bar - especially for their chosen field of personal apps for themself, so it feels to me like you're the one straw manning the argument here, not Simon.
Simon, please don't. You don't have to defend the line for LLMs at every single turn certainly not when you set an arbitrary line yourself to argue from. To be frank it is a bit tiresome and muddies the waters.
I'm getting tired of using the "Me-too" and spam flags without any effect. I can understand HackerNews not doing anything (and even promoting his stuff), but lobsters should be different.
I stand by my comment. I think it would be a mistake for people to read your comment and assume that "LLMs are also not good at making well designed coherent user interfaces" is a universal truth. I presented my screenshot as a counter-point. That's how online conversations work!
Again, the author made a more complex argument. One I included as quote. Again, I am not arguing about models being able to do "good enough", I know they can.
I presented my screenshot as a counter-point.
But if you insist, from your screenshot alone:
Just some things that stand out at first glance. Yes, for a personal app it is likely good enough. However, a human with two functional eyeballs and a little bit eye for detail could already have made improvements on this if we wanted to take it further. The argument that you get a highly more superior UI by just summoning it, as the author quite literally says is simply false and ridiculous.
Which is also why I stand by what I am saying. The author wrote what they wrote and that simply does not hold up. There is really no need to defend this fever dream of a blog post simply because it is about AI usage. Sometimes a bad article is just a bad article.
I'm glad that my shared screenshot helped produce a more useful conversation than words alone.
But building good UI is very hard: this kind of code is tedious, repetitive, exacting, and gated by platform conceptual knowledge.
Building good UI is hard, but none of these reasons are actually why! The platform coding details are the price of entry (which arguably the AI can abstract away for you) but creating a good UX is the entirety of the hard part. It's what separates good from bad, and it's what LLMs are actually quite bad at. So if you lump together using an LLM to avoid the need to know how to code it, and letting the LLM design your UI, you're going to end up with something mediocre, as we're all seeing constantly right now.
If I make a TUI it's not because it's easier to make than a GUI because it's not, there are easy ways to make GUIs, even before AI. It's because I want it right there in the terminal, without the distraction of a separate window, and I want something more expansive than a CLI.
People will tell you that TUIs are accessible.
Who are those "People"? I'm only mildly following various terminals development spaces and I've never seen that claim.
TUIs are a consequence of the unmitigated dumpster fire that is GUI programming in the 2020s.
In the '90s making a GUI was as easy as drag and drop in Delphi or Visual Basic. Children could design a native-looking GUI. I made GUIs in these tools for fun when I was 11 years old.
30 years later GUI programming sucks so much it's not a bad option for cleaning the floor mats in your car. The dozen or so frameworks that exist all suck and every single one looks slightly different. Designing for an unknown DPI sucks. Designing UIs not knowing whether the user will be using a mouse cursor or a finger, a real keyboard or a virtual, on a horizontal or a vertical screen sucks. The resulting GUIs suck too.
TUIs win because you can make strong assumptions about how the user interacts with the software, and are thus you can make UIs that don't suck.
I am afraid that even stronger claim might be true: TUIs are good because they are unacceptable to people who push the GUIs down the slippery slope. TUIs require interaction design but strongly limit visual design. TUIs do not look corporate enough nowadays. That alone is already enough of an advantage…
I've been trying to like TUIs for years, but I've concluded I really don't. They have all the disadvantages of GUIs and all the disadvantages of CLIs.
You might change your mind by learning Lotus 1-2-3.
( https://github.com/taviso/123elf if you want to spend some time. )
The limitations forced advantages for the skilled user that were lost in the transition to GUIs. I don't say that they could not come back, but I do say that very few, if any, GUI programs learned those lessons.
While I agree that I've seen a lot of people make TUIs where a proper GUI would be more appropriate (especially with the rise of TUI frameworks), I can think of many advantages of TUIs that this post seems to ignore:
Indeed, about integrating workflows; I have a workflow which is Vim based with frequent calls to fuzzy matcher, I started with rofi and switched to fzf.
They also work elegantly over SSH connections on remote development environments and such
EDIT: that was mentioned in the post so doesn't belong into the list of ignored advantages. My bad
Okay but then I have to evaluate which Rust UI toolkit I shall use and I will never start.
Maybe maybe I should just use Electron (cue a million blog posts about resource usage).
The argument about using AI tooling making it easy to build a GUI also makes starting a project with a TUI a low risk, low decision good first step. If you later transition to a GUI it will have forced you to have worked out your keyboard interactions real well, along with compact information design.
FWIW the biggest benefit of TUIs is that constraints spur creativity. The primarily text-mode interface means that things like text boxes have to support text manipulation for power users. For example, Claude Code and Codex both support history search with ctrl-r and dropping into vim/other text editor with ctrl-g. I don't use the GUI versions of these tools but I bet this isn't supported nearly as well there.