Most computer scientists I know don't like computers either. What we all like is that within them lies a whole new universe with the infinite possibilities of math, yet a strong connection to the physical world. At least, until it breaks.
I personally tend to dislike people who proudly claim their ignorance about computers, usually with the underlying purpose of distinguish themselves from me, the supposedly technical rat.
I mean, I don't know jack about ancient literature or medicine, but it's not something I'm proud of, and I don't go around bragging on my ignorance for sure.
Not sure if this is the case, but it's something I noticed more than once in my daily life.
Right, I've also seen this and wonder where it comes from.
I think it's part of them acknowledging that knowing about computers in this age is very important, and feel that they should learn more about them, but are reluctant due to time constraints / feeling then can't understand the maths / etc.. so they find excuses why it is uncool.
Technologists aren't free from this "fallacy" either. For example, when they hate on marketing ("I don't want to learn about marketing as it's all bullshit"), or when people from one technical field hate on another ("back end? man, that's just engineering, it's all about UI these days...").
In the case of hate on computers, it's usually combined with some component of nostalgia; What do we need computers (and computer people) for? Weren't we better off in slower times, without all the flashy stuff?
My favorite comparison in proclaiming ignorance is the English (or pick your non-science teacher category) teacher that proclaims they can't "do" math. Asking the opposite question, is it okay for any teacher to be illiterate? Just because something is difficult does not make it okay to shrug off as unnecessary.
IMO If you claim to be a programmer, you ought to have a whine-free good grasp (at least) of the tools necessary to be successful.
I don't believe it is fair to compare it with marketing. Most tech guys could learn much of it if they needed to but like me they find marketing to be dirty and scummy.
Unfortunately things don't get sold on their technical merits...
this article had a completely opposite point, there was no disregard for computing, he specifically says he loves what can be done with modern computing.
the ignorance stated was trying to bring up a point that I fully agree with, a lot of us dont actually care about the computer, I dont program because I like typing out arbitrarily defined syntax, I dont learn algorithms because they are "fun" I build applications that work on the computer because I want people to use them, I want to build tools that help peoples lives or help them do their jobs
I was not specifically talking about the case of the article.
And I did mention your case in my post; you might not care about the back end (algorithms, bit/byte pushing, compilers, etc) but it is important anyway. Your pretty UIs for helping people in their lives (I don't mean to discount that -- it's really important) won't go anywhere without the infrastructure.
Everyone has their preferred area, and the fields together are important. We could just as well stop boasting how our work was somehow better so we can be proud we don't care about someone elses work...
I don't think he takes pride in ignorance. I think he's criticizing computer interfaces for requiring obscure knowledge unnecessarily. And I completely agree with that.
I think current computing UIs are horrible, in the same way that the Nokia UI was bad, but only became visible upon the release of the iPhone.
I think it's different -- for example, many of us love to drive cars, and are very happy we don't have to understand anything under the hood.
This was not the case, say, 80 years ago. Computers are still at the stage where, to use them to their full potential, you have to understand their inner workings far more than many people would like.
I'm a programmer, but I feel the same way -- I look at programming as a means to an end, and even get depressed when I realize the proportion of my life I've spent delving into CSS float or z-index intricacies, or the finer points of compatibility with IE.
"I think of non-GUI programs in the same way as I do about going camping. Some people love sleeping in a tent and getting up in the night to walk in the rain to poo in a hole they’ve dug behind a tree. I spend a considerable portion of my income on a house with a heating system and three flushing toilets, so there’s no bloody way I’m going camping."
This became true over time for me. My attitude to camping has changed as I've aged. I used to enjoy roughing it but now I prefer not spending time putting my tent up when I arrive somewhere and taking it down in the morning. I used to enjoy coding with text editors and the shell but now I like the comfort of my IDE.
It's good to know how to put up a tent though, 'cause you never know where you'll end up.
You may think it a badge of honour that you can do "$ git rm -cached readme.txt" from memory. I think you’re burying your turds with a trowel in a thunderstorm.
This makes no sense. Firstly he says that he refuses to use anything with a command line .. then he says "accessible HTML isn’t that hard, really". Well, that's text based isn't it? How can you condemn text based control in one context and praise it in another?
In a great many cases it is impossible to make a GUI to perform every conceivable action you want to do. You need to drop down to a more basic level, and that inevitable means text, whether it be programming languages (like HTML) or command lines. Drawing some arbitrary line based on when you in particular decided to stop learning new things is pretty meaningless.
1. I'm a libertarian interested in changing the world towards a stateless society.
2. The best way to change the world is to change incentives
3. The best way to change incentives is to use technology
My interest in tech is thus opportunistic. I don't get excited by beautiful code as such.
Bruce compares using CLI tools (git rm –cached readme.txt) to camping in harsh weather and then goes on to say:
> I spend a considerable portion of my income on a house with a heating system and three flushing toilets, so there’s no bloody way I’m going camping.
Let me kindly remind you that every comfy house is built on ground first pioneered by people enduring hardships of camping. Not because they wanted to punish themselves, but because they were working on the frontier and pushing bounds forward. It's thanks to them -- both the well known explorers and the John Does of the frontier -- that all lands, once devoid of civilization, became user-friendly.
You may want to live in the suburbs of GUI, that's cool; I'd rather git-commit myself to the frontier and git-push forward, for much is still to be discovered and conquered. And there's great sense of adventure and camaraderie around there :-)
-- wanders off to work on that pesky little website
> Let me kindly remind you that every comfy house is built on ground first pioneered by people enduring hardships of camping.
I think Bruce is on about the people who have a comfy house, but still choose to endure the hardships of camping. That, he feels (and I couldn't agree more), is more like masochism than like pioneering.
For example, I really don't see why 'git commit -a -m "turd"' is pioneering while right-click, Commit, check boxes, enter "turd", click "Ok" is not.
Pretty much this. Call me an elitist or a backwards conservative[1] for this, but there is absolutely no way a GUI will ever be faster and more productive than using the CLI for pretty much all tasks I can currently think off (that don't inherently require a GUI, like Graphic Design etc).
Mind you though, I'm not saying that a GUI is unproductive or bad in any way. Just that it's almost always less efficient if you know what you're doing.
[1] Just for the record, I'm on GNU/Linux since about a year now. At first I was like "wtf CLI" myself. Then I slowly learned to appreciate it. So I'm not someone who's been using CLI since the dawn of Unix and is waving his cane at the kids on his lawn.
I'm definitely diving off into an OT area here but I'm going to bite anyway.
"For example, I really don't see why 'git commit -a -m "turd"' is pioneering while right-click, Commit, check boxes, enter "turd", click "Ok" is not."
I agree with you, if the GUI you're talking about is some wonderful Git GUI and you like it, awesome. I got the impression from the post that this author isn't impressed by people using Git at all: "I’m scared of Git and Subversion."
I think that's what the grandparent was talking about regarding the frontiers. Git (and Hg, and Darcs, and Bazaar...) is on the frontier, and this means that it's a bit rough and ready. But a lot of people find it productive and useful and the benefits outweigh the costs of reading manpages to find argument flags.
That's kind of how I feel about Git GUIs, since many of them are still rough and ready, and just aren't as powerful as the CLI (see TortoiseGit, where you cannot interact with the index, and the Eclipse plugin, which doesn't support submodules and makes some infuriating decisions about how to manage more than one Eclipse project inside a Git repo). But if you're more productive with a GUI than the Git CLI, great!
I just get the feeling that the OP isn't interested in better tools for the sake of better tools, which is a bit disingenuous since Opera and the web and all the great stuff he talks about wouldn't have been possible if we were still using punch cards.
>I think Bruce is on about the people who have a comfy house, but still choose to endure the hardships of camping.
I don't get that analogy. My house may be comfy, but I can't travel with it, and I'd rather have to endure such hardships than being stuck at home all year. And camping is still the cheapest (and for some, the only affordable) way to travel.
Indeed, git commit is not pioneering. But git ls-tree ... | xargs git show ... | sed ... | xargs git add may be.
To innovate, to push the envelope you need to put pieces together. Until somebody invents and popularizes a way to compose [1] GUI widgets as easily as CLI programs via something like a pipe operator, CLI remains the only composable toolkit. We have, as of yet, no interconnectable GUI replacement for find, grep, xargs, sed etc.
Today's GUI widgets are individual nodes. Connected with sneakernet at best -- that's Copy+Paste for ya. No matter how great each node is, there is very little cooperation, little synergy effect. What we need is like the Internet -- live, vibrant network with rich interconnects, and ease to create new ones with few clicks. Only CLI is there today.
Rest assured the day of GUI will come, people are working on it all the time. But we arent' there yet, at least not when it comes to pushing the envelope.
----
[1] from user's perspective, not just programmer's
In my ideal world, there would be a method for "exposing" command-line arguments that a window manager could use to automatically generate an initial window, preferences pane, buttons, etc.
As a programmer, I'd love to simply create a nested array of options that the OS would automatically turn into a tabbed preferences panel, depending on data types and their groups.
There are plenty of programs that make 'GUI widgets' available for composition. They are all variations on the well known 'Microsoft Visio'-style interface that allows the drag'n drop creation of streams and networks of components, for various specific purposes. For instance, anyone graduating in physics doing an experiment that requires some electrical devices wired to up to each-other will be familiar with one such program (whose name escapes me at the moment).
As soon as you become a power user, using the underlying language or something similar to a CLI beats using the GUI. Distinguishing 'GUI widgets' and the ways in which you can wire them together and then actually wiring them together takes more time than doing the same thing in a CLI, for experienced users. I don't see this ever being solved.
I have an alias set up for this, so all I would have to do is 'gca "hello"'. That's a lot less typing and probably quicker then right clicking and such.
"You may think it a badge of honour that you can do “$ git rm –cached readme.txt” from memory."
Well unless you are mentally disabled, remembering that command (and a couple of thousand others) is trivial.
The title is complete nonsense. He never actually backs up the statement that he hates computers, he just rants about his love for his wheelchair (GUI).
I think he misunderstands the command line. If you have tasks you need to do a lot, such as compilation, committing a change, and so on, it's easier to use a GUI or key shortcut. There is no "badge" in typing "git commit" or "make" as you know them by heart soon enough.
But for specific manipulation of the version control system, or specific queries, a command line is much more expressive. For a lot of functionality there isn't even a (good) GUI because the use case doesn't come up enough for someone to build it, or you're doing something no one has thought of before. Sometimes you need to take the path less traveled :-)
"remembering that command (and a couple of thousand others) is trivial"
I couldn't disagree more -- one of the reasons I'm a programmer, I think, is because I'm good with concepts and bad at memory (History was my worst class). And programming, for me, is all about organizing structures.
For function calls, autocomplete and tooltips that remind me of the argument order are lifesavers for me. On the command line, I simply can't consistently remember which commands take which flags, and which parameters, in which order...
Command-line is fantastic for connecting together different processes, creating macros and scripts, etc. But not for day-to-day use. There, I agree with the article's author, command-line use is pure masochism.
A checkbox (well-labelled) takes a second to interact with. Hunting in the man pages for a command-line option? Usually around a minute. I want to spend my brain power and time on programming, not on my tools.
I'm not perfect either, I like my autocomplete and history controls as well. Hackers save time and take shortcuts, and for me that means using the command-line. I want to access the options of a program that are not found in your menus ;)
Well unless you are mentally disabled, remembering that command (and a couple of thousand others) is trivial.
It's hardly trivial. People think and remember in different ways, even those who aren't mentally challenged. Personally, I always feel like I'm speaking a foreign language when using the terminal, even though I've been using it nearly every day for several years now. However, my spatial memory is much stronger. I generally feel familiar with a new GUI pretty quickly, since I can map functionality to locations. Plus there's the visual aspect of any icons.
Shortcut keys are immensely useful once you build strong muscle memory of them, but frustrating if that's your only option. Certain programs, such as Rhino3D, give you full GUI, top menus, and a command line, (and scripting in multiple languages,) and being able to pick the way that works fastest for me for any given operation and my overall workflow is awesome.
Also, being able to just see what possible options are is important. I find it kind of cruel that modern terminals don't have a good way to do this (yeah there's tab, but it's not auto). Shells that have even a basic auto-suggest are almost delightful to use, by comparison (eg Rhino's).
I really don't understand his problem.
There's times when it makes sense to use a GUI-frontend, e.g. for `git diff`.
On the other hand, there's so many times, where a GUI hinders productivity severely.
E.g. a `find -name "*.foo" -exec mv {} . \;` in a heavily nested directory structure can be huge timesaver. Moving the desired files with a file manager would be so much more cumbersome.
There are certainly things you can only accomplish with the command line, but that's not one of them -- on Windows or Mac, just search for "*.foo", the files show up in a new window, and you drag them. If they're images, you can even produce a slideshow out of them directly.
This is all quite silly. A CLI can be at least as effective as a GUI when designed properly. Do you think you don't have to remember anything to use a GUI? Anyone that has used a graphical program understands there is still memorization involved -- you're just memorizing where that icon sits, which series of clicks you must perform and in what order, etc., instead of a list of switches. And a list of switches is often preferable once you get over the stigma of the CLI; it's much more explicit and a simple --help outputs all of your choices, (usually) in a relatively concise list. I for one find this much nicer than clicking on everything in a GUI until something works and then not being able to remember what I did; on a CLI, I can just check my command history.
The bottom line to all of this, though, is that people need to accept that if they wish to use a computer without harming themselves or others they'll need to sit down and learn a few things. It'd be good to teach people that both CLI and GUI are acceptable user interface mechanisms and that they both can work well depending on the task and implementation at hand, among other basics.
Do we get constant outrage that it requires some basic training to get a driver's license? We recognize the value of driving a car and we're willing to put in the requisite training time to get a basic understanding of how to use a car safely and properly. We are going to need to cultivate the same attitude in computers if we are going to progress in a very meaningful way.
As a driver does not necessarily have to understand the inner workings of their transmission, engine, etc., a computer operator should not have to understand the inner workings of the operating system, CPU, etc., but people need to accept that they will need some basic literacy in order to have a smooth computing experience. These are complex machines, after all, and it's almost silly that people expect to magically be able to use them with very little cognition, at least initially. There is no reason not to have basic courses that teach people fundamentals in UI design, so that they can not only use the current version of program X but also figure out how to use X+1 when the vendor decides to totally renovate the interface.
And, if we have that basic literacy, people won't be so frightened to experiment with new interfaces and learn how new things work, which is a fundamental issue for most of the persons > 40 yrs that I know who use computers regularly. People would know how to make sure their files don't get lost, how to press Ctrl+Z or find the undo option, how to read corresponding man/help pages and how to look something up on Google when extra help is needed. These are the basics to successful computer operation, and everyone would be a lot happier if they just recognized the need for this training instead of constantly demanding that their computer work as simply as their toaster.
> Do you think you don't have to remember anything to use a GUI?
This. You can't imagine how many times I stared at a screenful of buttons that looked like an airplane cockpit or something, trying to figure out where in bloody hell was the function I needed. More than once, I would find out what the button is supposed to look like through reading help docs, but then fail to find the same button on the overly complex toolbar, since the toolbar, apparently having a mind of its own, would randomly decide to hide some of its buttons so that it would not appear as daunting (looking at you, Microsoft!) Give me bloody syntax and CLI that I can look up or Google over this clusterfuck any day.
While I definitely take the side of the GUI in principle, when I think about the abominations that have been coming out of Microsoft... Not to mention the newest version of Skype...
Whatever happened to a simple text menu, organized logically and hierarchically, where you pretty much know where anything will be? And simple dialog boxes, instead of ribbon-bar-palettes that show and hide different things depending on the width of your screen?
A man page requires me to read the whole thing before I'm confident of what option I'm looking for, because it's presented as an unstructured list of parameters. A menu bar is hierarchical, and I should (theoretically) be able to find what I'm looking for quicker -- and I know if an option is disabled before trying it, and a dialog box asks me whatever else the program needs to know.
Unfortunately, Microsoft and others are abandoning the tried-and-true principles of interface design. I refuse to use anything after Word 2003, but Google Docs is generally even easier.
> A man page requires me to read the whole thing before I'm confident of what option I'm looking for, because it's presented as an unstructured list of parameters
Not necessarily. I can usually easily grep a man page for the keywords I'm looking for. Most users (even beginners) know how to search for words on a single long page of text. In fact, one of the users of my app (a content management system for biologists) has mentioned to me that he prefers to click on plain-text output instead of using default HTML paginated output because he can instantly jump to what he's looking for by using browser text search feature (I plan on providing a Javascript-based word lookup feature in the future to emulate this).
I'm the opposite. I think computers are wonderful and I love the theory behind them. I hate some of the awful abuses people have inflicted upon them (e.g. shitty software).
Also, I don't think command-line interfaces are comparable to camping in a thunderstorm. They're actually quite intuitive and fun. It just takes a couple weeks of getting used to; then you realize how powerful the command line actually is. Ask a Windows sysadmin how he spends his day; I dare you.
There is no such thing as "intuitive" when it comes to computers. All computer interfaces are different conventions. Now, some conventions are so common and so deeply learned, they seem like intuition. However, suggesting that they are intuition presents a gross misunderstanding of what intuition is.
there's nothing wrong with this approach. everybody has different hobbies and interests.
look at it this way: my friend just bought a brand new hyundai. he likes the car. it gets him places. thats all he cares about. I drive ancient cars (my current pet project is an 89 jeep, which is carbureted. what a mess). I spend the same amount of money he does on payments maintaining it, it's a lot of extra stress and time, but I love the process of it. I wait for things to break sometimes just so I can fiddle with it (basically all of the stuff jeremy clarkson has to say about MGB drivers applies to me).
to some people I am insane.
TLDR: I poop in a hole behind a tree during a thunderstorm, and that's okay with me. you think I'm crazy for apparently denying progress, I think you're crazy for hiding in your house from the world. contrast is what makes us human. etc etc.
If you like what you can do with a computer, then you like computers, even if there are aspects of computing you do not like. No one expects a person to like absolutely everything about computing, or to never get frustrated with it. (In fact, I would argue a certain amount of frustration can result in a rewarding experience.)
Conversely, no one likes computers in some sort of abstract sense apart from what you can do with computers. If computers didn't produce any output no one would be interested in them in the slightest.
What this man is basically saying is he prefers GUI as an interface but he's willing to use command line interfaces if that's the only option. Which is not very interesting.
So by many of the comments I am reading here, I get the feeling that you would all think me not a programmer's asshole because I use Notepad++ to colour my code. Guess what? Same shit, different bucket. Horses for courses, and without GUIs, computing would not be used by the masses. We'd be playing COD on our Xboxes only after typing LOAD "*",8,1. Ask Bill Gates about it some time.
46 comments
[ 3.4 ms ] story [ 83.7 ms ] threadI mean, I don't know jack about ancient literature or medicine, but it's not something I'm proud of, and I don't go around bragging on my ignorance for sure.
Not sure if this is the case, but it's something I noticed more than once in my daily life.
I think it's part of them acknowledging that knowing about computers in this age is very important, and feel that they should learn more about them, but are reluctant due to time constraints / feeling then can't understand the maths / etc.. so they find excuses why it is uncool.
Technologists aren't free from this "fallacy" either. For example, when they hate on marketing ("I don't want to learn about marketing as it's all bullshit"), or when people from one technical field hate on another ("back end? man, that's just engineering, it's all about UI these days...").
In the case of hate on computers, it's usually combined with some component of nostalgia; What do we need computers (and computer people) for? Weren't we better off in slower times, without all the flashy stuff?
IMO If you claim to be a programmer, you ought to have a whine-free good grasp (at least) of the tools necessary to be successful.
Unfortunately things don't get sold on their technical merits...
the ignorance stated was trying to bring up a point that I fully agree with, a lot of us dont actually care about the computer, I dont program because I like typing out arbitrarily defined syntax, I dont learn algorithms because they are "fun" I build applications that work on the computer because I want people to use them, I want to build tools that help peoples lives or help them do their jobs
And I did mention your case in my post; you might not care about the back end (algorithms, bit/byte pushing, compilers, etc) but it is important anyway. Your pretty UIs for helping people in their lives (I don't mean to discount that -- it's really important) won't go anywhere without the infrastructure.
Everyone has their preferred area, and the fields together are important. We could just as well stop boasting how our work was somehow better so we can be proud we don't care about someone elses work...
I think current computing UIs are horrible, in the same way that the Nokia UI was bad, but only became visible upon the release of the iPhone.
This was not the case, say, 80 years ago. Computers are still at the stage where, to use them to their full potential, you have to understand their inner workings far more than many people would like.
I'm a programmer, but I feel the same way -- I look at programming as a means to an end, and even get depressed when I realize the proportion of my life I've spent delving into CSS float or z-index intricacies, or the finer points of compatibility with IE.
This became true over time for me. My attitude to camping has changed as I've aged. I used to enjoy roughing it but now I prefer not spending time putting my tent up when I arrive somewhere and taking it down in the morning. I used to enjoy coding with text editors and the shell but now I like the comfort of my IDE.
It's good to know how to put up a tent though, 'cause you never know where you'll end up.
You may think it a badge of honour that you can do "$ git rm -cached readme.txt" from memory. I think you’re burying your turds with a trowel in a thunderstorm.
Made me laugh...!
In a great many cases it is impossible to make a GUI to perform every conceivable action you want to do. You need to drop down to a more basic level, and that inevitable means text, whether it be programming languages (like HTML) or command lines. Drawing some arbitrary line based on when you in particular decided to stop learning new things is pretty meaningless.
1. I'm a libertarian interested in changing the world towards a stateless society. 2. The best way to change the world is to change incentives 3. The best way to change incentives is to use technology
My interest in tech is thus opportunistic. I don't get excited by beautiful code as such.
> I spend a considerable portion of my income on a house with a heating system and three flushing toilets, so there’s no bloody way I’m going camping.
Let me kindly remind you that every comfy house is built on ground first pioneered by people enduring hardships of camping. Not because they wanted to punish themselves, but because they were working on the frontier and pushing bounds forward. It's thanks to them -- both the well known explorers and the John Does of the frontier -- that all lands, once devoid of civilization, became user-friendly.
You may want to live in the suburbs of GUI, that's cool; I'd rather git-commit myself to the frontier and git-push forward, for much is still to be discovered and conquered. And there's great sense of adventure and camaraderie around there :-)
-- wanders off to work on that pesky little website
I think Bruce is on about the people who have a comfy house, but still choose to endure the hardships of camping. That, he feels (and I couldn't agree more), is more like masochism than like pioneering.
For example, I really don't see why 'git commit -a -m "turd"' is pioneering while right-click, Commit, check boxes, enter "turd", click "Ok" is not.
Mind you though, I'm not saying that a GUI is unproductive or bad in any way. Just that it's almost always less efficient if you know what you're doing.
[1] Just for the record, I'm on GNU/Linux since about a year now. At first I was like "wtf CLI" myself. Then I slowly learned to appreciate it. So I'm not someone who's been using CLI since the dawn of Unix and is waving his cane at the kids on his lawn.
"For example, I really don't see why 'git commit -a -m "turd"' is pioneering while right-click, Commit, check boxes, enter "turd", click "Ok" is not."
I agree with you, if the GUI you're talking about is some wonderful Git GUI and you like it, awesome. I got the impression from the post that this author isn't impressed by people using Git at all: "I’m scared of Git and Subversion."
I think that's what the grandparent was talking about regarding the frontiers. Git (and Hg, and Darcs, and Bazaar...) is on the frontier, and this means that it's a bit rough and ready. But a lot of people find it productive and useful and the benefits outweigh the costs of reading manpages to find argument flags.
That's kind of how I feel about Git GUIs, since many of them are still rough and ready, and just aren't as powerful as the CLI (see TortoiseGit, where you cannot interact with the index, and the Eclipse plugin, which doesn't support submodules and makes some infuriating decisions about how to manage more than one Eclipse project inside a Git repo). But if you're more productive with a GUI than the Git CLI, great!
I just get the feeling that the OP isn't interested in better tools for the sake of better tools, which is a bit disingenuous since Opera and the web and all the great stuff he talks about wouldn't have been possible if we were still using punch cards.
I don't get that analogy. My house may be comfy, but I can't travel with it, and I'd rather have to endure such hardships than being stuck at home all year. And camping is still the cheapest (and for some, the only affordable) way to travel.
To innovate, to push the envelope you need to put pieces together. Until somebody invents and popularizes a way to compose [1] GUI widgets as easily as CLI programs via something like a pipe operator, CLI remains the only composable toolkit. We have, as of yet, no interconnectable GUI replacement for find, grep, xargs, sed etc.
Today's GUI widgets are individual nodes. Connected with sneakernet at best -- that's Copy+Paste for ya. No matter how great each node is, there is very little cooperation, little synergy effect. What we need is like the Internet -- live, vibrant network with rich interconnects, and ease to create new ones with few clicks. Only CLI is there today.
Rest assured the day of GUI will come, people are working on it all the time. But we arent' there yet, at least not when it comes to pushing the envelope.
----
[1] from user's perspective, not just programmer's
As a programmer, I'd love to simply create a nested array of options that the OS would automatically turn into a tabbed preferences panel, depending on data types and their groups.
I suppose it's too much to ask for...
As soon as you become a power user, using the underlying language or something similar to a CLI beats using the GUI. Distinguishing 'GUI widgets' and the ways in which you can wire them together and then actually wiring them together takes more time than doing the same thing in a CLI, for experienced users. I don't see this ever being solved.
Well unless you are mentally disabled, remembering that command (and a couple of thousand others) is trivial.
The title is complete nonsense. He never actually backs up the statement that he hates computers, he just rants about his love for his wheelchair (GUI).
But for specific manipulation of the version control system, or specific queries, a command line is much more expressive. For a lot of functionality there isn't even a (good) GUI because the use case doesn't come up enough for someone to build it, or you're doing something no one has thought of before. Sometimes you need to take the path less traveled :-)
I couldn't disagree more -- one of the reasons I'm a programmer, I think, is because I'm good with concepts and bad at memory (History was my worst class). And programming, for me, is all about organizing structures.
For function calls, autocomplete and tooltips that remind me of the argument order are lifesavers for me. On the command line, I simply can't consistently remember which commands take which flags, and which parameters, in which order...
Command-line is fantastic for connecting together different processes, creating macros and scripts, etc. But not for day-to-day use. There, I agree with the article's author, command-line use is pure masochism.
A checkbox (well-labelled) takes a second to interact with. Hunting in the man pages for a command-line option? Usually around a minute. I want to spend my brain power and time on programming, not on my tools.
It's hardly trivial. People think and remember in different ways, even those who aren't mentally challenged. Personally, I always feel like I'm speaking a foreign language when using the terminal, even though I've been using it nearly every day for several years now. However, my spatial memory is much stronger. I generally feel familiar with a new GUI pretty quickly, since I can map functionality to locations. Plus there's the visual aspect of any icons.
Shortcut keys are immensely useful once you build strong muscle memory of them, but frustrating if that's your only option. Certain programs, such as Rhino3D, give you full GUI, top menus, and a command line, (and scripting in multiple languages,) and being able to pick the way that works fastest for me for any given operation and my overall workflow is awesome.
Also, being able to just see what possible options are is important. I find it kind of cruel that modern terminals don't have a good way to do this (yeah there's tab, but it's not auto). Shells that have even a basic auto-suggest are almost delightful to use, by comparison (eg Rhino's).
I wish they would sell it.
It never does quite what I want
But what I tell it.
On the other hand, there's so many times, where a GUI hinders productivity severely.
E.g. a `find -name "*.foo" -exec mv {} . \;` in a heavily nested directory structure can be huge timesaver. Moving the desired files with a file manager would be so much more cumbersome.
The bottom line to all of this, though, is that people need to accept that if they wish to use a computer without harming themselves or others they'll need to sit down and learn a few things. It'd be good to teach people that both CLI and GUI are acceptable user interface mechanisms and that they both can work well depending on the task and implementation at hand, among other basics.
Do we get constant outrage that it requires some basic training to get a driver's license? We recognize the value of driving a car and we're willing to put in the requisite training time to get a basic understanding of how to use a car safely and properly. We are going to need to cultivate the same attitude in computers if we are going to progress in a very meaningful way.
As a driver does not necessarily have to understand the inner workings of their transmission, engine, etc., a computer operator should not have to understand the inner workings of the operating system, CPU, etc., but people need to accept that they will need some basic literacy in order to have a smooth computing experience. These are complex machines, after all, and it's almost silly that people expect to magically be able to use them with very little cognition, at least initially. There is no reason not to have basic courses that teach people fundamentals in UI design, so that they can not only use the current version of program X but also figure out how to use X+1 when the vendor decides to totally renovate the interface.
And, if we have that basic literacy, people won't be so frightened to experiment with new interfaces and learn how new things work, which is a fundamental issue for most of the persons > 40 yrs that I know who use computers regularly. People would know how to make sure their files don't get lost, how to press Ctrl+Z or find the undo option, how to read corresponding man/help pages and how to look something up on Google when extra help is needed. These are the basics to successful computer operation, and everyone would be a lot happier if they just recognized the need for this training instead of constantly demanding that their computer work as simply as their toaster.
This. You can't imagine how many times I stared at a screenful of buttons that looked like an airplane cockpit or something, trying to figure out where in bloody hell was the function I needed. More than once, I would find out what the button is supposed to look like through reading help docs, but then fail to find the same button on the overly complex toolbar, since the toolbar, apparently having a mind of its own, would randomly decide to hide some of its buttons so that it would not appear as daunting (looking at you, Microsoft!) Give me bloody syntax and CLI that I can look up or Google over this clusterfuck any day.
Whatever happened to a simple text menu, organized logically and hierarchically, where you pretty much know where anything will be? And simple dialog boxes, instead of ribbon-bar-palettes that show and hide different things depending on the width of your screen?
A man page requires me to read the whole thing before I'm confident of what option I'm looking for, because it's presented as an unstructured list of parameters. A menu bar is hierarchical, and I should (theoretically) be able to find what I'm looking for quicker -- and I know if an option is disabled before trying it, and a dialog box asks me whatever else the program needs to know.
Unfortunately, Microsoft and others are abandoning the tried-and-true principles of interface design. I refuse to use anything after Word 2003, but Google Docs is generally even easier.
Not necessarily. I can usually easily grep a man page for the keywords I'm looking for. Most users (even beginners) know how to search for words on a single long page of text. In fact, one of the users of my app (a content management system for biologists) has mentioned to me that he prefers to click on plain-text output instead of using default HTML paginated output because he can instantly jump to what he's looking for by using browser text search feature (I plan on providing a Javascript-based word lookup feature in the future to emulate this).
You get the best of both worlds -- the options are there when you're learning, and your muscle memory takes over for your highly repetitive tasks.
Also, I don't think command-line interfaces are comparable to camping in a thunderstorm. They're actually quite intuitive and fun. It just takes a couple weeks of getting used to; then you realize how powerful the command line actually is. Ask a Windows sysadmin how he spends his day; I dare you.
"More efficient after a couple weeks of getting used to", that could convince me...
"The only intuitive interface is the nipple. After that, its all learned." (http://www.greenend.org.uk/rjk/2002/08/nipple.html)
look at it this way: my friend just bought a brand new hyundai. he likes the car. it gets him places. thats all he cares about. I drive ancient cars (my current pet project is an 89 jeep, which is carbureted. what a mess). I spend the same amount of money he does on payments maintaining it, it's a lot of extra stress and time, but I love the process of it. I wait for things to break sometimes just so I can fiddle with it (basically all of the stuff jeremy clarkson has to say about MGB drivers applies to me).
to some people I am insane.
TLDR: I poop in a hole behind a tree during a thunderstorm, and that's okay with me. you think I'm crazy for apparently denying progress, I think you're crazy for hiding in your house from the world. contrast is what makes us human. etc etc.
If you like what you can do with a computer, then you like computers, even if there are aspects of computing you do not like. No one expects a person to like absolutely everything about computing, or to never get frustrated with it. (In fact, I would argue a certain amount of frustration can result in a rewarding experience.)
Conversely, no one likes computers in some sort of abstract sense apart from what you can do with computers. If computers didn't produce any output no one would be interested in them in the slightest.
What this man is basically saying is he prefers GUI as an interface but he's willing to use command line interfaces if that's the only option. Which is not very interesting.