6 ms·
Honestly curious - why do people live mostly in their terminal? Is it a productivity thing?
by shay_ker 7y ago
Honestly curious - why do people live mostly in their terminal? Is it a productivity thing?
- iwalton3 7y agoIn my experience, it is easier to automate a workflow using command line applications. The GUI versions of tools have to try and predict every possible workflow, while terminal applications can be easily combined in scripts. That being said, there are definitely major productivity features to be had with GUIs, such as those with web browsers and IDEs.
- shay_ker 7y agowhat's an example of a workflow you've automated on a terminal?
- inetknght 7y ago-> download 1000 files using curl, then validate their checksum, then build stuff -> take an almost-CSV report generated by one piece of software, remove a bunch of extra garbage at the top to turn it into an actual CSV file, then send the CSV file to data analysis pipeline. -> join two CSV files selecting columns 2,3 from one file and 4,5 from the other file, keyed on column 1 from both files. like excel but for CSV files sized in hundreds of megabytes -> take a bunch of CSV files and pump them into a rabbitmq queue -> query whether a queue is empty. if so, start a new analysis job. if not, sleep another hour -> grep for data in a directory to find specific files containing that data, then point those paths to another service I can go on all day. CLI tools are far more wieldy than GUI tools IMO. CLI tools give me a generally-stable interface (or at the very least, a straightforward method of parsing and adapting to changes) and usually have _way_ better documentation than GUIs.
- shay_ker 7y agoMany of these actions seem like something you'd just never do in GUI though? Except maybe some of the CSV stuff.
- m_mueller 7y agoSee, there is a reason don't do this in a GUI. For a short while it looked like Apple's Automator would get there. Maybe Microsoft can crack this in a couple of years if they go nuts with python as a GUI scripting language with native OLE support.
- jankiehodgpodge 7y agoPowershell is already there.
- inetknght 7y agoAll of these actions are things which can be done in a GUI, just definitely not at the scale mentioned... certainly not at the scale mentioned and in a time-efficient manner
- shay_ker 7y agoRight exactly, they'd just be unreasonable to do in a GUI. But what about Google Docs? Admin tasks? Emails? Slack? Code review? Calendar meetings?
- ponyous 7y agoI work with React Native: 1st I setup a script to start an emulator (iOS and Android), build and deploy an app to emus, start development JS server, open vim and split the window to have a terminal ready for anything else. 2nd I automated asset creation when I receive SVG from design - it automatically generates 3 different asset sizes (as required by iOS), compresses them, moves them and names them correctly. That's just the beginning...
- dredmorbius 7y agoVirtually anything you need (or want) to do more than a small handful of times. Key elements of a decent shell tool are varables, pipes, loops, logic, and parameters. This ranges from the bog-simple (an xmessage "tea timer" that pops up a reminder after a few minutes to tell me my tea is steeped), to complex scripts. Things I've run from a shell include downloading and analysing 50,000 G+ profiles for most recent activity, literally a "bash on-liner", as described here: https://ello.co/dredmorbius/post/naya9wqdemiovuvwvoyquq https://ello.co/dredmorbius/post/naya9wqdemiovuvwvoyquq Resizing or modifying images via Imagemagick (scales to however much time and disk space you have), converting files from one format to another, generating lists of stuff for further analysis or conversion, updating a whole slew of documents in one fell swoop, creating and listening to playlists of local or remote content with mpv. You've got a ton of small, simple tools which can be combined flexibly in virtually any way you want. That's a lot of power.
- gbear605 7y agoBut this application loses all those benefits, since it's just a GUI that happens to be displayed in ASCII on a terminal.
- sachdevap 7y agoI would imagine if someone sat down to create a dashboard for the browser, it would take as much if not more work, and building interaction with each element would be a whole new thing altogether. I think the purpose of a dashboard is not to give you detailed interactions, but to let you know the status and you can take actions outside the dashboard as you like. Moreover, not so sure about this application but you can always have key shortcuts to take you to run a default task for one of the sections of the dashboard. Hence, imo, there is no real loss of functionality here.
- grimjack00 7y agoThat's one reason; familiarity is another. Depending on when and how a person started out with computers, there may have been no GUI available. My university was just getting connected to the internet about a year or so before the the web came into being. I picked up a VT125 terminal and a 1200 baud modem from ham radio flea markets, and used that setup over dialup for a couple years. No GUI, all text; programming assignments, email, web in a text browser when that was a thing, NNTP.
- tyri_kai_psomi 7y agoI have RSI in my mouse hand from pointing and clicking so much and basically my index and middle finger are constantly inflamed. The only thing that makes the swelling go down is icing, ibuprofen, and not using a mouse.
- shay_ker 7y agoI know product manager that uses a pen & touchpad to navigate websites for exactly this reason
- floatingatoll 7y agoRandomly, if you aren’t already doing so, fully submerging your hand in a container of ice water for no more than a couple minutes several times a day (ask your doctor!) is a particularly effective tendinitis icing strategy. It’s also perhaps the most painful things I’ve ever done. But it treats tendon swelling like nothing else.
- atoav 7y agointerfaces change less
- shay_ker 7y agothis actually makes sense to me
- joshbaptiste 7y agoFamiliarity and low resources needed .. I can use a $5/year natted VPS and program (via Git/Vim), run scripts, surf the web (links), chat on IRC (Weechat) and continue my Tmux/Screen workflow on basically any *nix machine with at least ~16MB memory.
- shay_ker 7y agowhy do you need to use low resources?
- joshbaptiste 7y agoNatted VPS's are usually very cheap (~$5/year) are low on resources by design and are great for pure terminal workflows.
- dredmorbius 7y agoEasier to access / run things on remote systems. Possible to create tools for use on small systems -- your DSL/Cable modem, say, which is really Just Another Linux Box, though with tiny capacity. Smaller VMs -- less system load, more available, greater flexibility. Run a shell on your Android or iOS device. Full power of the shell, scripting, and development tools. You can do more of whatever it is you want, faster, using less. It's an efficiency thing.
- leetrout 7y agoHow beneficial is surfing the web in 2019 with links? I was just using it yesterday on a raspberry pi zero and couldn’t download go from the very minimal golang.org site. I couldn’t imagine trying to use it day to day.
- joshbaptiste 7y agoindeed.. I don't do much more then the casual searching on DuckDuckGo and viewing Wikipedia articles and StackOverflow errors.
- unknown2374 7y agoIt is a productivity thing. CLI tools have consistent interfaces and once you are familiar with the common tools and workflow, it is considerably faster to do what you are looking to do. One particular trait that has personally made my workflow a lot faster is being able to repeat a command from history (by pressing Ctrl-R) and then writing only part of the command to run it. It saves a lot of time and makes it less cumbersome to type in very long commands. Now to contrast this with GUIs, even the simplest things would require me to jump through menus, type some stuff, etc. Everything in the command line is precise and repetitive steps are easy to replicate. Piping is another aspect that the command line enables, which basically feeds to output of one command into another. One common example of this is to look at lines of a log file that contain a certain set of words: `cat log.txt | grep "[ERROR]"`. But perhaps the strongest selling point of working in the command line is consistency among tools. If you want to be productive as a developer, use of various tools for doing various tasks is common. Using the CLI for all these tools keep everything a few commands away, even interoperability is enabled seamlessly due to piping and consistency. So yes, there is a fairly steep learning curve, but in my opinion learning how to use CLI tools over GUI is well-worth the hassle.
- shay_ker 7y ago> But perhaps the strongest selling point of working in the command line is consistency among tools Isn't this.... not true? A lot of the *nix commands have strong consistency, yes, but there are many commands that are just designed poorly and you can't easily pipe them. And what about widely used tools like Google Docs? How could that have a consistent interface in a terminal?
- unknown2374 7y agoGoogle Docs is not for development, perhaps I should have been clearer about that. The vast majority of tools for development, devops, system/network administration are consistent, or at the very least consistent enough that it helps towards making the workflow more productive. Not all software is suited for the terminal, that should be obvious. Like you would not want to play a graphically intensive game on the terminal because... graphics. Since you brought it up, what use-case do you have with piping Google docs exactly?
- rvense 7y agoForce of habit... I'm not really sure how I made the move, I grew up on Macs but moved to Linux (for the FREEDOM), and gradually all the GUI apps just fell away. I have a PDF reader and a browser and I think everything else is in the terminal. Occasionally I'm forced to use a Mac or Windows machine in professional situations, and it just annoys the fork out of me. I just prefer typing, and I have all the commands I need memorized to an embarrassing degree. I also appreciate the resource usage. My personal laptop is a Lenovo from 2009, and it never feels slow. It is slow for some things, like compilation, but it never feels laggy in the way a GUI can. I would never recommend to anyone that they go down this road. It's silly to think how many hours I spent learning what I know, and the main effect is that nobody but me can use my computer and I barely know how to work anyone else's. I'm wicked fast on VIM and that looks cool and all but... the bells and whistles in something like VS Code probably help more in the day-to-day as a developer. But I can't use it. I feel completely lost when I can't Control-Z and git grep, or whatever. I don't even know how to quit a GUI programme anymore.
- deleted 7y ago[deleted]
- federico_3 7y agoFaster reading: everything uses the same font, size, color and position on the screen. Your eyes don't have to constantly scan for different graphical elements across applications. (if this sounds far-fetched, try reading a book with a different font for each paragraph for 4 hours) Faster interaction: no dreaded mouse needed. UI speed: terminal application are rarely slow at it. Consistency: Works on local and remote hosts over SSH.
- hultner 7y agoEverything can be done with the keyboard and is generally scriptable, leading to high productivity but also superior ergonomics is a big part for me. My wrist joint have a tendency to crack loudly (not sure if this is the correct English term), which feels unpleasant and have been a driving reason for me personally to avoid the mouse unless absolutely necessary. Additionally to basically living in my terminal I use vim bindings in my browsers and replaced my caps-lock with the Hyper-modifier* allowing me to control almost all parts of the operating system from my keyboard and mostly from my home row. * https://github.com/suliveevil/Capslock https://github.com/suliveevil/Capslock
- lamby 7y ago> Everything can be done with the keyboard This is it for me, really. Whilst it makes it me two or three orders of magnitude slower when I have to "drive" someone else's machine, not having to switch to a mouse/trackpad really just smoothes things over and prevents jumping me outside of my "zone".
- skinnymuch 7y agoThanks for the project on Github. Seems like it has some more ideas and easier already configured things over my usage of karabiner elements just for hyper key. Though I use Hammerspoon for shortcuts already.
- unixhero 7y agoIt's almost ASMR for me to work in the terminal.
- drinfinity 7y agoBecome a developer, then you will understand. It is like asking why mechanics have a lot of tools around them.
- shay_ker 7y agoThis is the most zaney gatekeeping I've seen, even for HN standards
- skinnymuch 7y agoDevelopers don’t need to be super terminal centric. Common sense alone would dictate tons aren’t.
- biztos 7y agoI do both, all the time. I always have at least two different browsers open and several productivity apps. And an iTerm window with several tabs, or if I'm doing sysadmin-y stuff then several such windows. For me the terminal is mostly used for these things: 1) A stable/reproducible Linux environment in which to test and run code. 2) A place to use UNIX tools to quickly do things that would take a long time, or maybe not be possible, in my (fairly large) collection of GUI apps. In particular one-off searching and manipulation of text files, log streams, etc. Plus if I want to make small edits to a file, I can do this faster in vim than in TextMate or Sublime. And I sometimes run apps like "calc" in my terminal out of habit. YMMV on that kind of stuff, but for the two reasons above, if you are a developer of server software then this is much of your life. I prefer to use GUI apps for some things, but I totally get it that others don't. Once you're at home in the terminal, it's tempting to want everything to live there. But if you're like me and prefer a GUI client for source control, you can easily have both!
- stjohnswarts 7y agoNerd cred.
- luxcem 7y agoUsing a mouse / pad break the flow, makes you move your hands out of the keyboard inducing delay (positing on the mouse, repositioning on the keyboard). Usually point and click takes more time than a shortcut. Makes you more prone to Carpal Tunnel Syndrome. For me it's mostly about comfort than productivity, productivity is a nice side effect. As a coder I don't spend most of my time typing code but thinking and reading so pure typing speed is non relevant for productivity.