1. 28

I’ve been trying to come up with a user interface that is both novel, mostly intuitive and beautiful. The last requirement is pretty subjective but I’ve found examples online from terminal based ones like htop or nerdtree to ones that are visually impressive, if not heavy on the processing. I was hoping that someone else might know of some that left an impression for one reason or another. Digital, physical or maybe even completely useless eye candy would apply.

I figured since we seem to have a technical bent our opinions on UI would differ from the designers that usually dream them up.

  1. 10
    1. 2

      Something very similar to this is described in The Humane Interface.

    2. 7

      If htop is interesting, check out btop too https://github.com/aristocratos/btop#screenshots - the UI is much more interesting.

      For mostly-intuitive-if-you-know-the-domain, have a look at DAWs and synthesizers (and their plugins). They’re often trying to manage how to put as much info as possible on the screen. See https://www.reaper.fm/ (user guide has lots of screenshots) and https://vcvrack.com/

      From more obscure corners, there’s a js port of the PS1 Serial Experiments Lain story/game: https://3d.laingame.net/

      Just interesting, not novel, there’s the futuristic web theme https://arwes.dev/

      1. 7

        Pry is an in-process debugging/introspection CLI for Ruby programs. It’s the most productive and user-friendly command-line interfaces I’ve used. You can cd into objects or stack frames, ls to view the current scope’s bindings and methods, and of course evaluate expressions and view documentation. It’s like ipython’s CLI debugger with more features. The screencasts they link from the website don’t seem to render correctly but you can still right click into those frames to watch them full screen.

        Pry is one of those tools that I always miss, and can never replace in a new language. Visual debuggers like Chrome’s might have a more fancy GUI, but I’m nowhere as productive inspecting and debugging as I was in PRY.

        1. 6

          As a keyboard warrior, I may be an outlier. But give me a command palette and I’m happy.

          1. 3

            I found it interesting to look at stop watch apps on mobile devices. They offer many more capabilities but few are able to leverage them. Tasks a stop watch could solve:

            • start and stop multiple stop watches together or sequentially
            • take a split time for individual or all running stop watches. The result could be either the lap time (since the last event) or the elapsed time for that stop watch.
            • combine a stop watch with a countdown timer: count down from a set time, then start the stop watch
            • make sure this is usable in the dark or with wet fingers. Your phone might not unlock when your fingers are wet ..
            • keep the stop watch running in the background
            • control a group of stop watches from another device - with people at start, finish and intermediate points all operating a group of stop watches
            • label stop watches and save results, export results
            • maybe combine with a camera - take a photo and embed the current timers into the photo
            1. 3

              Magit. I’ve written a bit about it here. It scores very high on both efficiency and discoverability.

              In a sense, it’s the old boring menu-bar with alt-mnemonics, but with slightly different emphasis.

              1. 3

                Also: 💡 from IDEs – a context aware command palate: https://rust-analyzer.github.io/blog/2020/09/28/how-to-make-a-light-bulb.html.

              2. 3

                A couple of good counter-arguments are QEMU and GCC.

                QEMU’s command-line launcher’s options are unintuitive at best. At worst, it’s sort of a mess. QMP more than makes up for this, however. Its dense JSON is simple to parse in any language, or dictate by hand for manual intervention.

                The sheer number of features provided by GCC is outrageous! Linker flags don’t help in the matter. Writing Make can be tedious. GCC’s man pages are descriptive and helpful, but hard to search.

                UX is as important as UI. Lowe’s hardware store (USA) recently switched from a text-based point-of-sale system that any cashier could quickly memorize and fly though to a touch-screen interface that is not as helpful to the end-user.

                A program needs user input. An accessible interface guarantees this.

                1. 2

                  It’s not much, but I had started to collect information on “human computer interfaces” on are.na: https://www.are.na/not-me-ux9fk5xt85m/human-computer-interface

                  Also, I think that radial menus are underrated, although I just realized that they are often used in video games nowadays.

                  And I agree with @freddyb, command palettes are the best, especially when they show the shortcuts for the commands and sorts the commands intelligently (by context and frequency and recency of use).

                  1. 1

                    The video game Startopia had a very cute feature in its UI. There are time sensitive notifications in that game, which you either react during a short period where they’re relevant, or you miss out on whatever they’re telling you about. e.g. “We’re passing through a solar, would you like me to reconfigure the photovoltaics to get us some free energy?”

                    The way this gets treated in the UI is that there’s a queue of icons on the left side of the screen, one for each notification. If you click on one you’ll get a little popup providing info or asking for a decision. New icons drop in from the top. When you deal with an icon or it expires by itself it fades out and slides away, then any icons above it drop down. Each icon has a picture (that represents what kind of thing it is) and possibly a colour code (I can’t remember if they used colour coding to indicate severity of an event).

                    1. 1

                      That’s kinda how notifications work on Android. I use Signal and if I see a notification on the destop client the notification on the phone is cancelled and disappears as being irrelevant.

                      1. 1

                        Oh cool! I haven’t seen that in action but I suspect it may just be that none of the apps I use ever bothered to explicitly support it.