You Don't Need
github.com
github.com
Either way, I think log files of actions taken are much more debuggable than watching a computer control the gui.
Their current tool Automator is supposed to do this, but I don't know how widely it's supported. I suspect just like everything else, it has niche of users who love it and depend on it. It's not something your typical Mac user would think to reach for.
I actually built one of these hybrids for a piece of chip design software, where scripting is very much expected. Architectural bonuses were that it was almost like having a GUI microservice; it could iterate separately, be written in a different language, and crash separately too.
Subjective. However, if you can type at a reasonable speed, the terminal is faster than moving a mouse around.
Now, GUI makes more sense for many things. Kinda hard to edit video without a GUI (but if someone has a command-line-driven video rendering editor, let me know - I want to explore this.) Visual programming wouldn't be 'visual' without GUI.
There is a linear editor called AviSynth that's relatively popular and very Windows-based.
Wait, does anyone actually use the aalib output? I thought it was a joke.
Even common commands have this problem — for example, I don't copy files all that much, so when I do, I frequently forget that cp takes -R instead of -r.
The annoying ones on linux are chmod/chown, they take -R only.
EDIT: it's OS specific in the sense that these programs follow the OS's convention, I expect BusyBox cp, a lightweight Linux version of cp, has the same options as GNU cp
(The gif is a little slow, but you can obviously move through them a fast as you can hit the keys)
Have you heard of one of the most popular visual editor called 'vi' (short form of 'visual')?
But of couse I don't use it. Once you know Emacs well, you won't either. :-)
Straight up.
apt-get /pip /equivalents are all astonishingly efficient methods of installing programs. Have seen many non-tech inclined people change their mind quickly once being exposed to it.
Perhaps we should be asking people to try first? A gui is a necessity in certain situations, but it shouldn't be lore.
Demand more and you will get more.
Or to address your point more directly: for many tasks the GUI may seem easier at first, but a modest investment in CLI techniques can yield far greater dividends, over time.
And then there's all the conceptual and dependency bloat that GUIs impose on a project, over time.
CLIs are about memorizing what you can do.
One suits computers and the tiny amount of population with aspergers, the other suits normal people.
CLIs are idiotic. Why can't you just click a button and be done, certainly not sit there and spend 20 minutes figuring out what the fuck -g means or if knockut-sortable is missing an o.
It's utterly ridiculous that you're discussing this and just shows how many of you are utterly brainwashed by utterly useless trivia that your computer should be memorising for you but your fellow programmers are too lazy to implement GUIs for.
I honestly can't comprehend that you so gleefully spend your time so pointlessly, you should be spending your brains on solving actual life and business problems, not memorising the syntax of CLIs you'll use once every 3 months, or worse still, never again, or virtually useless regex syntax.
Using guis and managing a server without a CLI is a very annoying situation.
There are other things where using a GUI is way nicer, like complicated partial git commits.
Also thanks for informing me that I have aspergers, guess I'll have to go have a doctor check that out ;)
On the topic, some GUIs are idiotic. A command takes a second to type, but a complicated GUI may take multiple buttons, menus, etc. that take almost forever to navigate.
> I'm a developer
> useless regex
I don't know what kind of developing you do but regexes are massively useful if you do any sort of string handling or input checking.
> CLIs you'll use once every 3 months
Funny, I spend 90% of my time in a CLI. I don't spend my time memorizing stuff, the commands I use frequently are committed to muscle memory, the rest I look up. If you spend time with the CLI you learn to look stuff up not too inefficiently. Looking for a menu entry in a GUI is more painful to me than reading/grepping a man page.
Sounds like you really hate CLIs, I hope you don't have to use them too often, there's no reason why everyone has to use them, but I promise you, there are hundreds of thousands if not millions of productive CLI users out there.
Because there isn't a button to just do everything I want to do and if there was I'd have to find it amongst a million buttons.
This makes me skeptical that you're a programmer, because you just described programming. CLIs are everywhere in programming, and if you haven't written a script you prototyped on a command line, you can't be very experienced as programmer.
However, I spent a decade working in .NET on Windows – mostly before PowerShell became popular/usable. A lot of good, experienced programmers in that space rarely used a CLI. I personally had some batch scripts that I used often, but for most people on my team, the CLI was just used for infrequent admin tasks, e.g., debugging a networking issue, restarting IIS, etc. No part of the daily programming workflow depended on a CLI.
I've also worked around some iOS developers, and their workflow seemed similar in that most of them rarely used the terminal for anything beyond infrequent admin tasks or maybe version control.
So yeah, I live in the shell, and it's hard to imagine anyone working in Ruby (or Python or server-side JS) for long without heavy CLI usage. I love the power and composability of the command line, but I also understand that not everyone does and not everyone needs to.
Edit: This might be a flawed analogy, but my feelings on this are similar to my feelings on an IDE vs a text editor. I've become a somewhat passionate vim user, but I wouldn't negatively judge a .NET developer for using Visual Studio nor an iOS developer for using Xcode.
Dump 150 table database, both schema and data. Except two tables, for which you need only schema. Then compress, encrypt & email.
With CLI I can spend 10 minutes looking up documentation, shove command into shell, start it and go to lunch. If I need to something like that again, I can Ctrl-R it, tune and launch again in couple minutes.
But maybe there is a button I can just click?
I sometimes wonder if our ability to imagine what visual interfaces can do is limited by our experience with current GUIs. Right now, as other have pointed out, we're limited by the fact that GUI interfaces aren't really composable the way CLI commands are.
But what if we had something that is composable -- maybe something like Smalltalk on steroids -- where every program is a living object that can describe in detail what it does? Then, you'd be able to ask the program what inputs it requires, what its abilities are, and what outputs it can provide.
With something like that, it would be possible to visually put together interesting combinations of programs that we might not have created otherwise. Sort of the like what Bret Victor describes in 'Inventing on Principle'[1] where certain solutions to problems become much more apparent when you can manipulate things and try out new combinations quickly. I'm certain things like this exist (and have existed) in various forms, but I don't think we've explored the concept as fully as we can.
On the other hand, though, I agree with a quote from Eben Moglen earlier in this thread where he talked about 'point and grunt' interfaces. We've been iterating on the same paradigm for a long time. Touchscreens are better in some ways, and worse in others. We gain more physical interactivity with our devices, but we lose a lot of precision because we're now just smacking meat sticks against a pane of glass.
But you know, it's easy for me to sit here and complain about this on the internet. Actually doing something about it is much harder. Maybe it's time for me to fire up Smalltalk and give it a try. :)
CMD --help
man CMD
Tab competition
Command line history search
[QUOTE] ... to me, GUIs are like a caveman language where you have to grunt (click) and wave your hands (mouse) at the computer until it does what you want. (imagine the mouse pointer as your hand, then say "ugh" every time you click to mean "ME WANT THAT".) if whoever wrote the gui didn't add a feature that you can specifically communicate with an exact grunt and wave sequence, you're out of luck and have to ask the developer to add that.
Shell scripting is like spoken language, a much more natural and powerful way to communicate what you want to do. instead of every developer having to reimplement functionality for crawling a tree and doing something, one guy just writes the 'find' command and it's usable in conjunctions with other commands. [/QUOTE]
source: https://hydrogenaud.io/index.php?PHPSESSID=ae25885agmimsrj76...
> In 1979, when I was working at IBM, I wrote an internal memo lambasting the Apple Lisa, which was Apple`s first attempt to adapt Xerox PARC technology, the graphical user interface, into a desktop PC. I was then working on the development of APL2, a nested array, algorithmic, symbolic language, and I was committed to the idea that what we were doing with computers was making languages that were better than natural languages for procedural thought. The idea was to do for whole ranges of human thinking what mathematics has been doing for thousands of years in the quantitative arrangement of knowledge, and to help people think in more precise and clear ways. What I saw in the Xerox PARC technology was the caveman interface, you point and you grunt. A massive winding down, regressing away from language, in order to address the technological nervousness of the user. Users wanted to be infantilized, to return to a pre-linguistic condition in the using of computers, and the Xerox PARC technology`s primary advantage was that it allowed users to address computers in a pre-linguistic way. This was to my mind a terribly socially retrograde thing to do, and I have not changed my mind about that. I lost that war in the early 1980s, went to law school, got a history PHD, did other things, because the fundamental turn in the technology - which we see represented in its most technologically degenerate form, which is Windows, the really crippled version. I mean, I use Xwindows every day on my free-software PCs; I have nothing against a windowing environment, but it`s a windowing environment which is network transparent and which is based around the fact that inside every window there`s some dialogue to have with some linguistic entity.
Edit: it's also apparently one source for Eben's idea that I read a while ago but couldn't find again, about the switch from fighting over crypto for privacy to fighting over crypto for DRM (though it seems like in past few years we've gone back to fighting over crypto for privacy again).
"It could make more impact if it actually explained tasks that are harder to do in GUI than in the command line, such as massive renaming of the files, filtering files depending on content and so on."
It seemed to me his assertion wasn't "the CLI is bad and we shouldn't use it," but rather that the linked "You Don't Need the GUI" piece doesn't make a particularly good case.
And, I admit I agree. There are things that a CLI is much better at, especially if you're a developer, but there are other things that a GUI is arguably better at, sometimes even if you're a developer. If I have a bunch of files that need to be committed to a git repository and I want to commit the changes in multiple commits so they're related by topic, it's faster to select and commit each set of files with GitUp than it is using git's CLI. I find myself switching between the terminal and Finder on a fairly routine basis depending on what the task is.
tl;dr: GUI aficionados really should learn the CLI, but the reverse is also true. I can't speak for every GUI out there, but there's a lot you can do in macOS's that I think people don't really take advantage of.
It is partially possible via svn commit `select-files ./path/to`, except cancel part.
If you type svn commit ./path/to/<Star><Star><tab> It launches a fuzzy Finder (within the terminal) that you can use to recursively search through `to`. You can use the arrow keys and enter to navigate and select. Imo it's faster than a gui would be.
TortoiseSVN was a breakthrough for me. After switching to git, it was painful to try to remember all the different commands, wade through commit logs and find the hashes of commits. I see TortoiseGit exists, but since my org is still on SVN i haven't really given it a try.
Database admin, same thing. CLI clients such as sqlplus or pgsql are ok, but I'll never be able to commit to memory the various commands to show tables, show all databases, describe a table, etc. The one exception is the mysql client which has sane defaults and easy-to-remember commands. I frequently switch dbs, so this is a must. Pgadmin, sql developer and even the buggy MySql Workbench are all more pleasant to work with than CLI, in most cases.
But this are just my preferences. If the CLI works better for everyone else, then great. Maybe I'm missing something, and maybe someone would give me a pointer to unlock the magic of CLI in these scenarios that would make me more productive
Aside from large integrates, everything that the people working on my project do is drom the GUI.
Magit https://github.com/magit/magit is definitely the best user interface I've tried for version control. I still drop to the command line occasionally, but it's not as productive unless I'm doing something unusual.
SQL Server Management Studio is also much better than any command line database tool I've used. For any action you can do in it, you can hit a 'generate script' button which you can use to automate what you just did. This is a fantastic feature, because using the GUI becomes a better way to discover and understand the CLI underlying it.
However, the linked repo in the original article simply presents a few commands for copying, moving and zipping files. This is useless and will not convince anybody that they do not _need_ a GUI. It makes a very poor case. If you know what terminal is and how to launch it you already know way more than that article shows, if you don't then there is no way it will convince you that you do not need something like Finder.
sudo apt-get install foo
sudo apt-get install bar
cd ~/somewhere
sudo nano something, change these lines
The same instructions for Windows involves screen after screen of text interspersed with annotated pictures of dialogs, which become obsolete when the OS is revised.In fact, I've seen an increasing number of Windows installation tips being given in CLI terms:
windows+R cmd
enter this command
It would be interesting to see some sort of tool, online or within the system, where you enter a command string and it explains what the command does.- Open the Store - Search for "Name of App" - Click Install
Bonus, this works for GUI software managers in Linux distributions which use them. Unifying the process simplifies most instructions greatly. I think the simple existence of Linux package managers, and the push to use them by the community, helps tremendously with this perceived ease. The installation complexity is largely solved by the package repository maintainers.
On the flip side, software which is not distributed with the OS can have very complex installation requirements even with command line instructions. Sometimes it's as easy as:
- ./configure - make install
But more often than not, you need to manually hunt down dependencies, and if the system uses automake / cmake and requires you to satisfy conditions for a build, those can get hairy and cryptic fast. I've gotten better at it over the years, but I wouldn't call this process any easier than a step-by-step installation wizard in a GUI.
Simply not true. More often than not you'll get static binaries. And if the software is supported by a commercial team, any dependencies on your supported platform are already tested and working.
1: https://hglabhq.com/documentation/installation/installing-hg...
Is it an MSI? If not it should be...
To install:
C:\> MSIEXEC /I /QB software-name.MSI
To remove: C:\> MSIEXEC /X /QB software-name.MSI
(/QB tells msiexec to install the app with the default options, and throw up no gui dialogs)Admittedly we're missing a good online universal repository system on Windows, but hopefully one day that'll change.
sudo apt install foo`apt search`/`apt-cache search`
`apt install` /`apt-get install`
Though, I prefer pacman/pacaur interface, even if it is less intuitive at first, but I won't use Arch on servers.
"apt-get" is meant to be used in scripts/automation. "apt-get install foo" will always behave the same way with the same params.
In Windows 10: Windows Key + type name of app + click Install button. No dialogs.
CLI is great for advanced users, but I think GUI is probably best for the vast majority of computer users.
I was hoping for actual small common cases where people use JS to do something that's super easy with CSS, like animations.
To be sure, lots of projects have the opposite problem, but SPAs aren't some make-work conspiracy, they have real use.
I didn't actually say anything about microservices. I think that may have also been a win, but it is much less clear-cut. Backing the front-end with a single monolithic API server would have been an improvement over the hybrid page generation / API approach we ended up with.
These are all just my own personal conclusions, and others who also worked on the project may not agree with me, but I'm just not convinced by the backlash against js-heavy web apps, because I believe I've felt the pain of going the opposite route in the wrong case.
Add to that, that you then have by necessity an API you can use for other systems to interact with yours (or just to build some quick one off scripts) and the advantages are even clearer.
Some beliefs which are frequently displayed in these parts:
> Money on chairs / desks / PCs are no object because developers cost money, not those things
> Ship quickly and iterate
> Make it, make it work, make it fast
> Write code your successor can maintain
And then HN goes ahead and upvotes a boast about spending their (expensive) time unpicking libraries from code.
The point of "you might not need X" is to encourage package maintainers to keep their sub-package footprint small, not that end-users shouldn't use X.
I'm sure you'll be back to suggest that you've delivered "500% speed-up" or some other nonsense metric and I look forward to that.
Ultimately, custom business owned code which attempts to deliver the value of angular is just a future maintenance nightmare, and I say that as someone who really doesn't like angular.
If you really replaced angular with a "javascript one-liner" I'd like to see that line!
Ultimately, custom business owned code which attempts to deliver the value of angular is just a future maintenance nightmare, and I say that as someone who really doesn't like angular.
I suspect the problem the commenter is hinting at concerns situations where people think they need the "value of {angular,react,bootstrap,whatever}" when really they don't.
When You-Dont-Need-Windows, You don't need this either. Do you?
Coming from a Linux user, for most people, Windows is the only usable non-Apple-hardware OS, unfortunately.
Case 1: Religious/moral people: If you are using unauthorized (pirated?) copies of windows, isn't it like stealing? Think of the amount you are stealing just by installing M$-something, Adobe something, etc.
How can you wish that your money/wealth shouldn't be stealed when you steals somebody else's money?
Case 2: Business people: Have you ever contacted M$ for support? Then why would you pay them, just for something that runs viruses smoothly, and occasionally having blue screen of death?
Case 3: Personal: I came to know that I was like a frog in a well when I was introduced to GNU/Linux. Thanks to Microsoft for wasting my 10 years of time. Now I know about windows, may be more than some windows admin would do, just because I don't use windows anymore!
Serious GNU/Linux users may not have a solution known for an immediate problem. But they know how to find a solution or where to look for it.
Of course, if someone is interested in learning more about Linux, I'll happily teach them as much as they want to know and give them my opinions of the advantages of using Linux. But unless the person is already open to hearing my opinions on the topic, it tends to be a waste of both of our time.
It doesn't check everything and has some bugs. osslsigncode goes most of the way there but you have to write a lot of the remaining parts yourself using a combination of openssl C API and add a ton of extra C code.
And this is the kind of crypto that is challenging to get exactly right with no vulns especially in C/C++.
~~No external dependencies~~ Builds a statically linked Chrome, so just `npm install` and you're good to go
Without it is is just a waste of time.
The first one I tried (CSS only accordion) takes you to a site where the author himself says that this is an experiment and was not meant for use in production (no IE support).
Also, compatibility for these noon lodash methods are chrome and Firefox.