←back to thread

320 points IroncladDev | 1 comments | | HN request time: 0.303s | source
Show context
godelski ◴[] No.43670410[source]
I'm terminally terminal, but I'll be honest, I'm a bit confused by this. If it is trying to be what I think it is, I *really* want this. But to be a bit blunt, it also feels a bit cargo-culty. To look like the thing but not be like the thing. I'm not saying this to discourage you, because if you are trying to make a web interface that I can fully use via keybindings then please for the love of god keep developing, I want it more than anything.

But the reason it feels so off, or uncanny valley, to me is it looks like what someone thinks a vim interface is, but doesn't feel that way. No buttons work for me other than "/", but that is a pretty common binding on websites anyways. going to the examples page, things feel more weird. I can do {c,d,l,n} to change my theme and {1..5} to access options, but other than that, nothing works. I see <C-i> for inbox but what does this mean? Control + i? (the usual meaning) That doesn't work. Is it command + i? That doesn't work. The annotation is reminiscent of vim and the landing page looks like vim, so am I in command mode? But then why are there no motions? Is this emacs? Oh, I do search and can go to the style-guides page and h,j,k,l motions work. Oh, l takes me to the right pane? Why is H,M,L missing?

To be fair, a lot of TUIs have these same uncanny feelings, but I want to draw your attention to this as it appears people like me are your target audience and I do want this product, so I really do want you to understand what I need and how my space works. There is a lot of method to the madness with vim. A lot of people make the mistake of trying to memorize commands instead of memorizing patterns. There's too much in vim to memorize all individual commands, but if you approach it in the way of there are motion keys and action keys then honestly, you can be highly functional in vim in an after noon! (vimtutor does communicate this btw) So the things like how the theme switching and application switching feel very non-intuitive to me. I have to learn something new but it throws me off because visually it looks like I should be doing another set of patterns. For the theme switching I would expect to do something like `:colorscheme dark` or have some action associated with this (idk, c would be find since you aren't going to be cutting text?) and then an associated motion. The application switching I would want to move like I do with buffers. gt and gT to cycle through, 1gt to go to the email (first), 5gt to all components (5th).

So I love the idea and really, I do want this thing to exist. But at the same time it feels like bizarro land to me. Many TUIs make these same mistakes and it leaves me with the same feelings. What I really want is for the wheel to not be reinvented. In a typical webpage I can surprisingly use a lot of keyboard commands and even use some motions. But what things like vim are very useful for is the movement. It is not a text writer, it is a text editor. So it is important that I be able to have fine control and be able to move through a document (page) quickly. It is important that there is this synergy of combinations of motions and commands (or some other philosophy!) that I can learn the basic rules from and then extrapolate from there. This is the thing that gives me superpowers in the terminal, and this is the exact reason I so desperately want something like this around the web. But I also understand why this is difficult and often missed. After all, most vim users I know never learn the vim meta. But I really want to speak up, not to talk you down but because I really want to see something like this succeed and I want you to understand where these "super powers" come from. It's non-obvious unless you get deep into it, but there is a connecting philosophy that allows people to know how to do something new without having ever been told. You get to a point in vim where it is speaking a language and that is the end goal. Do not design one offs and just maps to useful motions, a good interface has to be a language because the goal is to communicate with the machine.

I hope this makes sense. I really do want to see this thing become a reality. To bridge this gap between our worlds.

replies(1): >>43670610 #
osel ◴[] No.43670610[source]
Do you know of any good resources that discuss TUI user interaction/research?

I'm working on a new project to build some simple workflow applications for business, and one of the aspects I would like to attempt to resolve is the speed of input. It is painful watching operators work with modern GUI inputs, particularly web based as the mouse work slows them down horrendously. And keyboard 'shortcuts' where they exist are often anything but, as the entire GUI model assumes a mouse (or on the web a Document) first.

It is like you mention about this CSS library, it kind of misses the point in that the awesomeness of TUI is not in the appearance, but rather how workflows that the constraints of a keyboard-first interface enforce allow creative and highly efficient solutions.

When all you have is a mouse everything becomes a click, and that is a horrible way to input data.

replies(2): >>43670886 #>>43670927 #
1. godelski ◴[] No.43670886[source]
I don't, but I hope someone else does. I can speak the language but I doubt I could teach it.

People see the aesthetics and appreciate the beauty but the best way I can describe the problem is it's like trying to write poetry in a language you do not understand. You can get the rhythm and tone but it has no substance. The aesthetics are driven from the language, the way we play, the way we speak. There's something natural to this but only when you're fluent. The art is a reflection of us. It looks like something you pull from outside, a craft to hone, a monument to build; but it will always miss because it is an expression, a feeling, it comes from you.

I don't know how to describe it like a linguist would describe a poem. There's depth they see that I don't. I only know the feel, the way Sylvia Plath can make me feel but Su Shi never will. I can appreciate it from afar but it remains foreign. I do not know the language, the culture, the context, so I can only be a stranger as if looking through glass.

But I do know this. We programmers often fail to see when building and designing things. The Zen of it is to use your things the same way you use the grass under your feet or the air you breathe. It feels weird to call the ground a tool but you use it to move. I certainly do not have the right words but I hope the meaning is clear. The point is to build something that feels as natural as the air you breathe. A space to live in and makes you feel free. It's okay if this has to be learned but there's something more I don't know how to describe. It's like saying it's okay to learn a new language but recognizing that the concept of language itself is natural and part of us. Even without a language we still speak, there is a drive to make sound, to communicate, to express. It makes language inevitable yet as difficult to describe in detail as the beating of your own heart. It's just you