The Return of the Command Line Interface
avc.com
avc.com
— Eben Moglen, interview, 2000¹
``` Moglen believes the idea of proprietary software is as ludicrous as having "proprietary mathematics" or "proprietary geometry." This would convert the subjects from "something you can learn" into "something you must buy", he has argued. ```
I sort of wish this voice command line was better documented, as it would make the tools more useful compared to a world where we try random sayings, and get disappointed when the software fails.
I love the way that there's formal-speak for machines that everyone just knows, and expert systems to help with complex requests.
Even in the context of a graphics editor, though, where a GUI makes a lot of sense generally, I often find myself wishing for a way to actually specify operations using some language rather than using the GUI.
For instance, I select a layer, and then want to move it exactly 50 pixels down, and then rotate it 45 deg and halve its intensity. Using the GUI for that is often a cumbersome, if straightforward series of steps that require a lot of busywork, and in many cases I have to very careful if I want precision (e.g. carefully looking at the edge guides to make sure I move the mouse exactly 50 pixels). For an experienced user, an equivalent textual command to do the same thing would probably be far quicker and more precise (assuming a halfway decent implementation).
Really you often just want a system that's flexible enough to seamlessly integrate both types of interface[+], and let the user choose which is best for them and the specific task at hand, hopefully allowing the user to use the GUI at first (for ease), and learn equivalent textual commands as he gains more experience...
Unfortunately that's not only more work to implement, but runs afoul of those usual villains in any human endeavour, religion (not "real" religion :) and tribalism... ><
[+] Of course, there are actually more than just two choices. For instance there's a common split between "quick and simple" textual commands, like a typical unix shell, and "real language" textual commands, e.g. allowing commands to be specified in Lua or some other "real" language. Similarly GUIs can come in a wide variety of flavors.
same with excel btw.
Adobe of course was intimately involved at the very birth of the GUI, so I'm not expecting it to change its culture anytime soon, but that's probably a lost opportunity. Its products are some of the most complex around and would benefit the most.
Really, in both cases, some things are implicit and other things are explicit, these aspects really don't set the two worlds apart. But trying to teach or instruct someone, it's much easier to communicate a specific command-line command, than explain where to click / drag (especially when GUIs are re-designed all the time).
Somehow ipython notebooks are a nice attempt at blending both. You have an easy linear visible state, yet you compose words.
This work wonders in systems where complete set of commands is (semi-)fixed, like Cisco IOS CLI. *nix CLI is somewhat behind on this front, unfortunately.
It would be great to be able to do stuff like grep the address book to extract contact details, edit a config file to change ring tone, manage alarms with cron use apt to update all apps etc.
I use my phone (2 to 3 year old Android) as my alarm clock. If I want to sleep in for an extra 20 mins tomorrow I need to.
1. Press clock button. 2. Press Alarm button 3. Deselect my current alarm to deactivate it 4. Press Add Alarm 5. Tap repeatedly on the "scroll wheels" to select correct time
If the phone had something resembling a CLI you could just echo the newtime + Alarm into the scheduler.
Another example I get a text message from someone who is not a contact. I want to save that number I have to open the message takes about 5 or six clicks to "copy" the number into address book.
Why can't I drop to command prompt "echo Phone no. Name >> address book
If you're a developer and have the time and effort required, you could always root/jailbreak your phone and fix the issues you have for yourself.
EDIT: it is also likely that people have already solved it, or made tools that can solve it. I know people are already running cronjobs on their iPhones, there's even an scheduling automation app and so on.
And then you accidentally use ">" instead of ">>". Woops.
Microsoft Bob'ifying software development = McDonalds
The Ying: Complex systems require the ability to automate instructions and tasks, including low level and high level tasks and without being inhibited or insulated by the glory of a gui.
The Yang: Automation promises to simplify complex systems and which sometimes results in GUIs.
(and while I'm at it they aren't capitalized either)
"Don't call it a comeback, I been here for years"
Here's our Pipem pitch at Tech Wildcatters demo day this summer: https://www.youtube.com/watch?v=o_0DSmZhLGw