Live data from Hacker News

How I'm still not using GUIs in 2019: A guide to the terminal

lucasfcosta.com

111–120 of 248 posts

Re: How I'm still not using GUIs in 2019: A guide to the terminal

#111
post #80

Earlier quoted context omitted.

>This isn't Starcraft, very few developers are limited by their APM throughput through the UI. Made me smile. This is a great analogy. Tactics vs strategy. You can become more efficient at low-level tasks by doing faster text editing. However, as you get into actual software engineering, the first time you need to do some semantic refactoring will wipe out any time you saved through low-level efficiency.

> However, as you get into actual software engineering, the first time you need to do some semantic refactoring will wipe out any time you saved through low-level efficiency. That applies to Java and C# only, where the language grammar is so simplified that you can be 99% confident semantic refactoring didn't screw your code up. > You can become more efficient at low-level tasks by doing faster text editing. It's not…

> Also, for actual software engineering, nothing beats a pen and a piece of paper.

Sometimes I use pen and paper quite effectively, but between the slowness of writing and the difficulty of editing, I wouldn't describe it as ideal.

Re: How I'm still not using GUIs in 2019: A guide to the terminal

#112

> GUIs are bloatware. This is only true, firstly, when what you're trying to represent can be accurately, completely, and most concisely represented by plain text. That's actually a fairly narrow range, unless you're a programmer. And secondly, it's only true when you're not interested in using common interface conventions to teach your users how to use your program. While that can certainly be done -- the -? and --h…

> This is only true, firstly, when what you're trying to represent can be accurately, completely, and most concisely represented by plain text. That's actually a fairly narrow range, unless you're a programmer.

You would be surprised. I encourage you to visit the lands of Emacs at some time. The reason Emacs feels like an OS is because it turns out that quite a lot of tasks can be accurately, completely and concisely represented as text on a 2D grid, and doing so enables interoperability features that are close to impossible to achieve with GUIs.

> And secondly, it's only true when you're not interested in using common interface conventions to teach your users how to use your program.

Well, the difference between a tool and an educational toy is that the former is optimized for productivity, not ease of learning. I'm not saying that productive interfaces need to require a PhD to use; there are ways to make user-friendly advanced UIs - but reducing functionality for the sake of just easing the learning curve is optimizing for popularity, not utility.

> it's much easier when there are UI guidelines [0] that everybody sticks to simply by virtue of how GUIs tend to work (i.e., there are existing common libraries to describe the interface in predictable ways).

Which no one gives a flying fuck about these days, because everything is web driven now, and the no.1 rule of webapps is that everyone invents their own variations of GUI, inconsistent with every other variation, and lacking any interoperability.

> Exactly what have you had to do to learn how to use web pages? Like, since the 90s when Mosaic would still render most websites. You haven't. It's point, click, scroll, and type.

I think you're confusing lack of functionality with lack of learning need. You have to learn to operate almost every website anew. There's just so little you can do on a modern website with modern browser, that it doesn't feel like a chore. Scroll, point, click. Oh, "weather forecast", click. Select city. Click. Select date. Click. They're not even optimized for consumption - just for ad exposure. Your typical experience with CLI/TUI is with tools optimized for providing value to the user. You may need to spend some more time up front figuring things out, but as a reward, you get much faster repeated access, better data, better control over format, _only_ data you need and zero noise. Is this for everyone? No. You do something once every year, point&click is fine. Stuff you do regularly? Web is wasting your life.

> You've gone to brand new websites, potentially written by people who don't speak your language, and you've been able to use the site because there's a shared convention that everybody uses.

That shared convention - "use mouse to click on stuff" - is about as deep as the convention of "pressing buttons on keyboard types letters in". It doesn't make you comprehend websites. It only limits the scope of your initial confusion to "I don't need a keyboard for this (unless there are forms)".

> nearly 50 years after vi was first introduced, it's still notoriously difficult to learn

It's not difficult. It's just people have been trained to have a strong aversion to learning, where it comes to computers. Everything must be easier to use than your hair dryer, or it's garbage.

To anyone who believes this, that vim is hard to learn: I ask you to do this challenge. Fire up vimtutor, spend 10 minutes on it, report back whether it's still hard.

--

I may sound confrontational here, but it's really just out of care. Truth be told, love of GUIs and the web, and allergy to CLI and TUIs is just reducing your own power in using computers. If one has better things to do, that's fair. But if one's spending a lot of time doing stuff on a computer, it's worth learning to do it well.

Re: How I'm still not using GUIs in 2019: A guide to the terminal

#113

The world moved from CLIs to GUIs. Guis have not only persisted, they've improved. If someone insists on using a CLI and nothing else, after all these years of the world having moved to GUIs, I wonder what prejudice is behind it. How, reasonably, can all these tools beat a thing like Visual Studio? Must limit job opportinities too...?

> If someone insists on using a CLI and nothing else, after all these years of the world having moved to GUIs, I wonder what prejudice is behind it. No prejudice.. I run a dev/comms box on a Raspberry Pi Zero W that has 512Mb of RAM. I originally set it up with a lightweight GUI which would actually start up but was pointless to try and use for anything. Reverting back to CLI meant that I could now "do stuff", and I…

That's nothing, I do BASIC on a Commodore 64. 70mb of RAM -- pssah! The average developer workstation probably has 32GB of RAM, a fast SSD, and huge monitors but 64k is all you really need.

Re: How I'm still not using GUIs in 2019: A guide to the terminal

#115

Earlier quoted context omitted.

> "I don't think the argument itself is Java. I think the argument is that heavy, corporate projects (typically written in Java or C#) can have lots of benefit from IDEs." I think this for me is the gist of the problem... A lot of corporations prefer these large monolithic codebases, with a thousand different interfaces and abstract classes. I think this is a mistake in design, and prefer simple applications with sim…

It's not inherently a problem, but I do think that there are certain measures that can be taken to reduce code bloat, stack size, and development time. Someone else already noted that large business software can be a bit complicated solely based on the business needs. Regulatory rules and the ability to audit certain actions in the financial industry tend to add a bit of complexity to business logic, and those are co…

This has nothing to do with their core point. Yes, Java sucks. This doesn't prove that IDEs suck too. They make Java bearable. They can make editing simpler languages better as well.

Re: How I'm still not using GUIs in 2019: A guide to the terminal

#116
post #6
post #4

I like command-lines. I don't like TUIs. Here's the litmus test for whether a program truly belongs there: Would it shit the bed if its stdout was a printer?

So you edit with ed? :). Also anything wrapped inside tmux would definitely defecate if hooked up to printer. Some jobs are interactive. TUIs ain't bad for those.

If it "defecates if hooked up to a printer", it's not going to be useful in a Unix-style text pipeline, either.

So, what benefit do applications like emacs or vim (which are, fundamentally, keyboard-driven GUI applications, even if they're running in text-mode) gain by being stuck in a terminal? It's a simple least-common-denominator that's easy to push over a slow SSH connection, but why wouldn't I want to relax some of those limitations when I'm working locally?

Re: How I'm still not using GUIs in 2019: A guide to the terminal

#117

I always find the benefits of portability to be a rather funny one: It's always immediately followed by 800 lines of dotfiles that do an incredible amount of customization. The IDE vs. vim/emacs purist debate is always crazy to me. There are some places where IDE's are almost certainly better: Java in a large project in IntelliJ has to be 100x better than in Vim. For new languages or languages where there isn't subst…

Only a sith speaks in absolutes. I have known several vim purists who are extremely productive in Java/Scala/Kotlin. I both understand and respect your preference for Intellij. But, your dismissiveness of others is misguided.

"Only a sith speaks in absolutes"

Do you recognize the irony in that statement?

Re: How I'm still not using GUIs in 2019: A guide to the terminal

#118

Earlier quoted context omitted.

What? iterm2 is the only OSX program in that list of five. [edit] Plus, his whole point is that you don't need a GUI to get work done. Not, that you don't need software at all.

Saying that you should learn the terminal because a machine may not have Atom or Sublime is sort of saying that an advantage of the terminal is that you don't have to install additional software, isn't it?

Nah, that sounds just like short for "I sometimes wear the devops hat" - that is, the author probably has to switch computers regularly. Productivity as a devops/sysadmin has different requirements than regular developer productivity. In the former case, you'd prefer standard terminal apps and default settings. In the latter, you'd customize the hell out of your CLI and editing experience.

Re: How I'm still not using GUIs in 2019: A guide to the terminal

#119

Earlier quoted context omitted.

Only a sith speaks in absolutes. I have known several vim purists who are extremely productive in Java/Scala/Kotlin. I both understand and respect your preference for Intellij. But, your dismissiveness of others is misguided.

Sure, there are definitely some folks who are excellent in those languages with Vim. But when you think about the amount of time that's required to make Vim comply, the amount of mental state that's required to manage the things that could have been taken care of by an IDE, I can't help but challenge the idea that there's nothing possibly better than tools. By analogy, I don't believe that a chainsaw is either a bad…

When comparing vim and intellij,

vim is a lot closer to the chisel, while intellij is closer to the chainsaw.

Re: How I'm still not using GUIs in 2019: A guide to the terminal

#120
post #18

I'm a game developer mainly writing/reading/debugging C++ on a codebase that's well over a million lines of code. As with most game-dev I'm developing almost entirely using Visual Studio, and I can't imagine trying to navigate code using a terminal based editor. Maybe it's just because this is what I'm used to, however I just don't see how some of the tools would even be displayed in a terminal (parallel stacks windo…

For games, especially non-trivial ones, GUIs are fucking great. I couldn't possibly imagine writing game code without them. Anything else really visual, like CSS, and I need a GUI to feel productive. It's because the changes in the system are dynamic and cascade in unexpected ways. You make a box a little thinner and a heading flows to a new place and now the space between the heading and the image is off, etc. But I…

> Anything else really visual, like CSS, and I need a GUI to feel productive. It's because the changes in the system are dynamic and cascade in unexpected ways. You make a box a little thinner and a heading flows to a new place and now the space between the heading and the image is off, etc.

Do you have some GUI for manipulating CSS with click&drag? Otherwise, isn't this use case handled by having an editor and a browser simultaneously open, and connected via live code reload. A web IDE can do this, but any other editor can do this too.

This approach does work in gamedev too, but it's not popular - mainly because languages supporting REPL-driven development on live images are not popular in this sector.

I agree though that there are tasks where GUIs are superior. But we're not talking about "regular" GUIs here, but domain-specific ones. Say, 3D editing. I can't imagine doing that from Emacs - the interface would heavily retard the feedback loop, in the same way GUIs slow you down when writing code. But then, Blender shows how one can apply Vim philosophy to 3D editing, resulting in a tool that embraces power users while still being GUI-driven.

Post reply on HN