@@zzrroott6459 Like 95% of computer users, those that use them not for programming and things but for office work or to browse the internet or chat or play games. The most that an average person would do in the terminal/command prompt is copypaste a magic command they saw on a website to do a magic thing
"I dont know what he did , or how he did it , but i want that" is exactly what i told myself when i watched you code for the first time , and decided to learn vim.
Funnily enough, mine was "I know what he did, I don't know how he did it, but I don't want to have to do that". I quite like my setup, even if it's inefficient by his standards, I like the simplicity of just typing. I almost don't use shortcuts except find and replace, save variants and a few movements modifiers.
I accidently got into Vim after doing a bunch of SSH stuff on my local server. Then installed Neovim a few weeks later and never looked back. It makes coding like playing an RTS game.
@@demolazer this is my biggest W. As I moved over to neovim I always had a good text editor available that I knew when entering our servers at work as vim is a default on many systems.
It really is. I remember eclipse and netbeans had it at IBM back in the early 2000s. It was a game changer. When VIM got it, it made my life about 1000% more productive. I went from taking a week to code something, to rendering it out in like 30 minutes.
Running on the CLI is bad though. It's better to have the logic separated from the CLI into it's own library so applications don't need to deal with spawning processes, parsing stdout etc.
Make is a graph resolver, not just a command runner. See Buildroot as an example. Make does have C-shaped defaults (like, it knows to run "cc" on .c files to get .o files by default), but that's because of how it has been used for decades. I'm using it to rebuild _swaths_ of RPM packages in correct order for a custom package repository at work.
the W in helix for me is it's always visual, I can see everything that is going happen before it happens, and the motions are different because of this focus on select then action
The terminal is nice because its a standard interface to everything. Without it, each application needs to waste tons of effort creating an entirely new interface that never needed to exist. For the non-programmers, it also helps with awareness of the filesystem, which is generally good for keeping your files organized.
I only got into Linux in January this year but I've since fully embraced the terminal. I even made my own bespoke nvim + tmux setup from scratch. Combine that with zsh and zoxide, it's insanely OP. And to think I didn't have this RAW POWER a year ago.
@@ItsBarmanji oh i didn't even know about kickstart. i just did a basic file structure with nvim/lua/plugins/ & configs/ and copied over some of the nvchad files and keybindings. had to add a lot of plugins nvchad didn't have tho.
People have no idea how expensive syntax highlighting would have been. Yes we thought of it (and type ahead) but when you are working in a few k you need disc access to run a spell checker.
This is why I love to keep old machines alive. Running an 8088, 286, 386, 486 system really drives home how limited those machines were. The modern programming paradigm that relies on seemingly infinite CPU, infinite RAM, infinite storage, and numerous cores was simply impossible on those systems.
@@potato9832 There's also some virtue to programming with hard limits. It's not just nostalgia. John Carmack has said that having such difficult limits to work with is one of the reasons he was able to be so innovative and creative.
@@smort123eh, you might. If, for example, some JS-brained dev decided his special-sauce "isInRange( )" function that runs every frame for every entity needs to use a raycast from library A and a sweep function from library B to sweep the entirely of a sphere, you're going to have a lot of raycasts, which will generate a lot of normal vectors, which means whatever function calculates the normal vector is going to show up big on the flame graph. Then someone is going to call in a consultant to fix the offending function instead of the problem, because why would we do something silly like subtracting vectors? Sounds like straight psycho behavior if you ask me.
Helix is an experience you just get after using it. Not having to keep state in my head is subtle but impactful experience. You just need to use it to understand it.
totally agree, it's such a great editor, I still use vim when I'm pair programming as nobody uses Helix, but it's such a fantastic editor, everything working out of the box, fast, reliable, battery included, the keybindings are so good, the only reason I can't go back to any other editor is that nobody have multicursor like helix does
@@pierreollivier1 I have to disagree. I wan to expand/shrink above the start line / below the end line without moving the cursor and I can't. I'm not saying vim can do this (I don't know), but I believe helix cannot. Not out of the box, and not even via config as I understand.
Just now i switched to Ubuntu removing windows 11 from my laptop, it's been 1 month into my first intership, and i think it's gonna be great from now on 🎉
The Onion had a great video about the new Mac laptop that replaced the keyboard with a single wheel for input. That is what using a pointy-clicky interface is like for things that aren't inherently pointy-clicky.
I think you have it reverse but I get your point. Keyboard power users have less keys on their keyboard. I've seen a Chad use a 25 key keyboard and he was zooming man. He types surprisingly fast, you would think the use of layers would slow down your typing speed, but the extra key presses is negated by the fact that your fingers don't need to travel. Anyways the single wheel is extreme, but there is something to be said about less input choices being more efficient to a certain degree
I describe using the mouse as being like a young kid in a sweet shop going 'left a bit, left a bit more, no right, right a bit, now up a bit, now down a bit, yes!!! that one!!! I want that one!!!'. Whereas the more mature parent can just say 'half a pound of lemon sherbets please'. CLI's take longer to learn, just like more advanced English compared to the kid's pointing at things, but once learned, they are capable of easily expressing things in a few keypresses that would take ages to articulate using the mouse. I do most of my file management using the CLI. The main thing I use the GUI file managers for are either dragging files into applications (e.g. videos into Da Vinci or audio clips into Reaper), or (in Windows) when you can select columns like frame rate or size, or such, and the details view shows you information more easily than running a command to e.g. list files and their durations and frame sizes and rates. The other thing that non-Cli people don't appreciate is scripting. You can automate a common task with a short script. I have many such small scripts. One is a 'power rename', where I type 'filesrx "hello (\\w+)" "world \1" *.txt' and it will do a regex search and replace in all specified filenames. Doing that kind of rename with a GUI file manager would be a nightmare of manually renaming files one by one. And a GUI app that does power rename with regex's would take dozens of source files and hundreds of times more code than the 120 lines if python filesrx takes. Then (once you have cygwin and bash installed on Windows and macos), those scripts and shell environment work identically on Macos, Windows, and Linux (no matter what desktop environment, if any, you are using). Thus, you learn once, rather than learn many different interfaces, and learn them again when e.g. MS chooses to redesign the control panel into settings.
I think the world would be a better place if more people shared their workflows. In my experience, observing which tools and processes someone uses can be the easiest way I've unlocked significant productivity gains in my everyday life. But maybe that's the sauce reserved for the top shelf.
I was in a college class and I was 23 and one of my classmates who was in his 40s straight up said, "Real men use command line." From then, I've been messing with command line. Now, I'm 40 and it's the thing I use almost entirely in my career. lol
similarly in Maya, when you open the output window you can see that literally every single click you do has an accompanying command line input, it's actually pretty cool and is an interesting insight into how exactly 3d models are stored and edited. I imagine there's a ton of scripting / fine tuning you can do with the CLI. Or if you just want to bevel an edge, it's probably quicker to type the command than click through the interface.
@@moonasha Actually I did AutoCAD for civil engineering, or land development. Ended up leaving but that's a different story haha. Really it's more that there's about 75 different commands you need, and each of those commands have a few quirks and subsets you internalize, but once you do you can fly through drafting and all that.
Helix for me sold me on two things that aren't the motions: multicursor which is something I am more comfortable with from Sublime, and sensible defaults. The LSP in helix is out of the box functional and easy to configure. It genuinely taught me how to use the LSP in neovim better because it finally made some of the rough spots make sense when I didnt have to deal with it anymore. It is definitely not as fully functional as neovim yet, but its a great developer experience and deserves the attention its getting.
I learned touchtyping this year. I helped myself a little by scrubbing all the letter stickers off my keys, so I got only black keys on my keyboard. But what's really really weird, it's that when I look at the keyboard I type much faster. weird huh? Like 30 years prior I was typing when looking, never trying to learn touchtyping until recently.
To be fair, I don't like CMake either. Disclaimer: I have not looked to deeply into CMake. All I know is, that every f-ing time a project uses it, I'm having a lot of troubling getting anything to compile. So it's probably more of a Skill issue, than anything else. It's just easier for me to write pure Makefiles by hand, than using a pseudo language that makes a Makefile for me.
I don't understand why devs that make cli tools are allergic to screenshots and examples. I get you don't want to write docs. No one wants to write it but the least you can do is copy and paste the terminal output into the readme.
1995 is important for the explosion of GUI usage because that's when windows 95 came out. Win95 made dial up connection with the internet super easy. That's when internet usage exploded. Thus bringing many people not into computers to become every day users.
@@drooplug I was really young, so I don't know how it worked, but I definitely was using it (Trumpet sounds familiar), and there was definitely a version of IE.
@@sophiophile Yes, you could use Windows 3.1 to get online (that's what I used), but win95 made the process incredibly easy. And with the adoption if win95, the use of DOS significantly declined.
43:45 Not only that, but it's literally impossible to deal with spaces in paths with Make's syntax (sometimes it's not your choice). Not hard, straight up impossible.
I switched to helix because of multiple cursors, and selection-then-command is just more automatic for me. There are things I can do in Helix which while I'm sure could be done in Neovim, I don't find obvious.
Don't know if true, but I heard that line by Newton (if I can see further than others, than it's because I stand on the shoulders of giants) was a dig against a contemporary scientist that was small.
I've been a VIM guy for like 11 years. Today I "apt-get install neovim". I'm going to try it again -- prime made me try it again. I tried helix earlier this year and uninstalled it within 3 hours. P.S. That 10 year old being banned for saying "LSP is older than me." is crazy. Somebody sign him up -- 10 years listening to a programming channel. Crazy. when I as ten I was trying to get my G.I. Joe ship to float in the tub.
CLI frickin rules. It's better than stpd laggy and bugy UI. You can specify any parameters, you can copy and paste that command, you can AUTOMATE literally anything that has CLI
Given that automation and integration are the soul of programming, how on earth would you work with a mode of operation that you can not automate and integrate?
One of the biggest reasons for cli's comeback is the better terminal emulators. Kitty graphic protocol made cli development a breeze and then other terminals started adopting it.
Helix motions do have an advantage over vim... or rather the command set overall does: It's actually consistent. Implementation-wise it comes with batteries included, no need to download three plugin managers to manage your fifty plugins to have lsp, fuzzy file search, and git annotations in the gutter (doesn't come with lsp servers and git, of course, just knows how to talk to either). If you already have a vim set up YMMV, I was certainly of the "I don't care about my config give me a sensible and powerful default" type (spacevim), if you're just starting out it's not even a question go with helix. If you're using emacs don't switch to helix, you first have to atone by using ed for a month. If you have been using evil mode this is shortened to a symbolic five minutes.
Personally, I prefer vim and kakoune motions. Helix feels like a worst of both worlds situation. I do agree that helix’s configuration is a god send. Install helix and your language servers and…that’s it. My config file is like 10 lines, and I read the entirety of the helix documentation in 10 minutes.
I fully agree with you Prime on the availability and ease of both Navigation and Documation within your toolset as compared to other features such as syntax highlighting or autocomplete. The latter two are good and useful features and tools, however the previous two saves you a lot more time and resources in the long run.
CLI through docker exec -it for mosquito is magical been making a json encoder for the dynamic security plugin to dynamically manage MQTT clients and using the command line tool to figure out response json is really needed.
Best thing I learn recently is that `less` can pipe part of output to arbitrary command (typing `mX` to mark line and `|X` to sent all from current line to mark `X`)
I know there are tools to remember & replay mouse moves and clicks, but it's so much easier to repeat and automate with a CLI. 5:05 We had a Multics machine when I was a rodent.
I used fish for quite a while and loved it, but in firmware development a surprisingly high amount of vendor “software” is just badly supported scripts, and fish had a tendency to break everything. Using zsh means I get all the nice features + consistent environment that does not randomly explode.
I use helix and dont perticularly care for its specific motions, helix could have the exact same motions as vim and i would still use helix. i experimented with (n)vim before but could never get the hang of it, what made me use helix over (n)vim are 2 things 1. that i dont have to set it up to have features like LSP suport 2. and the more important part that helix shows you a little window in the right bottom corner of ways how to finish a started motion with a discription of what that motion does, that made learning the motions easier and it reduces the cases where one is hinderd by not knowing a motion. by now i know the motions i use constantly by heart but for stuff i use rarely i can still be unsure about the motions and that window is a realy nice fallback to have as it means that i dont have to look those motions up
Still looking for a good replacement for make cause I hate it Maybe eventually I'll make enough of my own replacements until one is good enough to be desired by other people Also the argument about make always being available doesn't always mean it's the best... It gives no chances for anything new, ever. One day something popular enough might be a "default" for many anyway, either from OS or from their own toolset installations, but it has to be given that chance first
I thought that was a cool thing in powershell. It has its own weirdnesses though. Some of that is just paradigm differences but some are definitely head-scratchers.
I personally use git with a UI tool instead of the command line. I did a few pushes via the command line a few times just to get the hang of it, but otherwise kept using the UI. It's just so much more convenient to see changes as well as discard single lines of changes and whatnot
Those two things are the only two things i use a "GUI" for, but everything else, even resetting a whole file, i use the terminal. I put GUI in quotes, because I use the fact that VSCode marks which lines are different and an easy way to revert the lines im on. I likely would do the same, or use the terminal, if i didnt use vscode. I use `git status` and `git diff` if i want to get all changes
I was into CLI's before it was cool. Actually, before there was anything else, then when it was cool, mostly now when it's not, but I am looking forward to being considered a rock star again. :)
One other comment, having read the linked article, is that while there are newer improved substitutes for e.g. find, (in this case fd), if you are e.g. ssh'ing to your webhost, on that webhost you likely only have standard find, vim, etc, not fd , ripgrep, neovim. It pays to learn to use the old faithful standard utilities even if you daily drive the newer replacements.
While I appreciate the desire for sane defaults that show off the features of a utility, the author of this article kind of seems to be missing the point. It almost comes off to me as a very mild form of anti-intellectualism. That's maybe a bit dramatic, but I think it gets my point across. Most of these tools are designed by and designed for power users. I know how I want my command line to behave. I know how I want my editor to behave. And I can tell you, my goal behavior is not whatever the developer decided the defaults were. From that perspective, it's actually much easier for me to configure a tool like this when I can just enable things I want, rather than having to go through and disable things as well. Having sane defaults can be fine, but the idea of designing software to minimize configuration as much as possible seems to me like a very slippery slope that leads to bad software in this context. Just learn your tools--you should be doing it anyway and it's really not that hard.
Helix = not the constant headaches of configs in neovim. It's why I went back to Mac after several years of LInux. I don't want to fool around with a million configs.
Only time I need to touch a config file outside of my codebase in linux is when i need to add something to the PATH. what are yall doing that causes you to constantly need to open configs? I am using Ubuntu with KDE and have never needed to open a config file outside of my .zsh and that one time i needed to open a .desktop file because I was doing goofy shit
This is really simple, right? We, as an industry, reject using full-blown GUIs for cloud machines. So all of those administration tasks either need their own bespoke web application, or some CLI / TUI that you can install and run without the fuss. Cloud was booming just before COVID. Then that happened, and it exploded in growth while everyone also had the time on their hands to focus on "get stuff done" projects.
I always thought it a shame that attempts to combine CLI and GUI were so rare. Both have their strengths so why not use both? Software like Eagle, Inkscape and GIMP use it well to extend power and allow scripting. Imagine a version of explorer (for example) where you could click individual files to select them or enter a regex like \*jun\*.txt
I didn't know the CLI had gone anywhere. I always have CLI access. Either I log in to a command line interface or I run a terminal program for CLI access. The terminal program has at least three and sometimes six tabs open giving me multiple CLI access points to the machine at the same time.
One of the first things I did when I started working was to learn the CLI. I mean I went from a C64 > PC in one jump so it made sense. I also learned all of the keyboard shortcuts for my tools. Didn't touch a mouse. The downside was that the world ran Windows back then, there wasn't such thing as a choice. I've long since switched to Linux + MacOS so all of that effort was wasted.
When the Woz booted up the Apple I - back in the computer club days - he'd spend roughly 20 minutes typing in the Basic interpreter, from memory, in hex codes - because he had no storage...
I use sed, awk, grep, xargs, wc, tail, sort, uniq, etc etc .. every day, all day. It's not that I'm more effective in the terminal, it's more like I'd be completely handicapped without the terminal. I literally would not be able to work if I was limited to GUI-tools.
Add alias functionality for user customization for ya IP. Personalized stereognostic senses unlocked if the tradeoffs is not too bad for performance cost, and mem management.
I love using VIM on servers, and am constantly using command line because im a senior se/devops/cloud guy and a sysadmin apparently. For whatever reason though when I'm writing code its always in intellij ultimate. Im in and out of so many languages, i just enjoy navigating and the searching/refactoring tools.
Me neither, and I'm a zoomer. Granted, I've created a whole 3 branches other than the main branch created by git init because I am a certified noob, but that's a whole other problem.
22:00 Imagine 100 years in the future. Uganda has become a wealthy country. They achieve the lowest amount of wealth in-equality. The poorest children are equal to U.S. upper middle class in the 1980s. Some random developer opens vim and is greeted with. "Help the children in Uganda"
Here's a mild response to fish: It's cool. Wont use it on my next dev machine, for the same reason you said - too much to learn for too little benefit. I have it for a couple of years now, and once in a while i need to do something off the beaten path, which means googling for 15 mins at least.
I really enjoy making CLI apps. Often I'll make one to test code with with a variety of different input types. Shout out to Cobra in Go and Typer in Python, two of my favourites.
3:00 I think, the best argument for command line is , that you can just copy-paste commands instead of clicking through GUis. Especially if you don't know, what you are doing, you can just google the command, or a coworker can send you the command, and then you paste it and it probably does, what you want. Maybe you have to insert the correct filenames or something. Or especially when using AI, you can just ask the AI "how to resize all your images in one folder and subfolders to a maximum of 1920×1080 without changing the aspect ratio in the fish shell", and it probably gives you a command, which just works.
This is the answer: find /path/to/folder -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" \) -exec convert {} -resize '1920x1080>' {} \; But I didn't try.
@@Karurosagu Sure. Being able to copy-paste scripts is an argument, why command line might be even more beginner friendly, especially with the raise of AI.
@@yjlom And yeah, of course you should check your program. If something looks weird, don't just run it. But still not a bad argument against command line for beginners.
It's funny because even Microsoft is doing a big push for CLI for a lot of their stuff including that horror show erp that you talked about where they are accurately pushing for CLI to get rid of powershell dependencies and things like that that all break when they upgrade
My weaponized autism is incredible at remembering faces and things that have happened in my life, but I really struggle to remember static things like the names of people and productw, or even things like my own zip code. It literally takes a couple of years for me to memorize my zip code if I move. Unfortunately this also applies to shortcuts. I have to use the mouse a lot despite having started writing code almost 40 years ago as a young kid. That said, I like the way Zellij works. I'm striving to try and do way more on the keyboard despite my broken brain and this is one of the things that will help me get there.
theres alot of great hauk TUIs nowadays, theres some pretty good rust libraries to make some. i like `bottom` as an alteranative to `top`-like programs
As a new Linux Desktop user, ZelliJ is awesome (I set it in my bashrc to always run). When I broke my Linux install I could use Links2 CLI Browser in one pane and in the other be on the command line trying fixes and I didn't have to learn a bunch of keybinds to save my own ass.
"people who can only use with a ui TOOL and not CLI at all..." and i'm one of those people, and i see no shame in it, it's immensely stupid to repeat keystrokes over and over especially i have problem motor functions.. and brakes my focus, have to repeat them over , using a CLI has it's place when if you have an operation you need to repeat over and over, doing it in cli is a waste of time.
Hence scripting and command-line-recall. Also command line substitution: (^*.txt^*.jpg). I use CLI because it's *less* work. (Though GUI certainly is superior in some contexts). Once you've got your scripting right, you hand it off to a cron job then let the computer take care of it forever.
@@chaos.corner that's what i thought, but essentially, if I'm developing and i need an often required cli , i will turn it into a batch file, and in order to avoid getting out of my editor i will find away to have it as a shortcut, which is essentially re-buidling an IDE. if i have issues with GIT for example there's always git console in an IDE that tells me exactly what it does, but for the most part, fetching/commit/pull/push/stash, there's no reason not to use an IDE tools .
OTOH, I find it more annoying clicking on the same series of buttons in a GUI, for who knows how many times. Once I type a command in the terminal, it's available for recall, even years later (I preserve my command line history). Nice to also have the context (surrounding commands) available. GUI doesn't offer any of that in any normal setting.
Back? Never left.
Don't call it a comeback, I been here for years 🎶
They were always there
in your /bin/
yeah wtf is this guy saying. Who doesn't use the terminal
@@zzrroott6459 Like 95% of computer users, those that use them not for programming and things but for office work or to browse the internet or chat or play games. The most that an average person would do in the terminal/command prompt is copypaste a magic command they saw on a website to do a magic thing
Yeah this is kind of what I was thinking too >w< whoever made the reddit post seems a little confused
"I dont know what he did , or how he did it , but i want that" is exactly what i told myself when i watched you code for the first time , and decided to learn vim.
yDeezNutz
I absolutely love Vim, especially paired with i3wm. I can turn an entire workspace into an IDE with a few terminal windows, resized to my liking.
Funnily enough, mine was "I know what he did, I don't know how he did it, but I don't want to have to do that". I quite like my setup, even if it's inefficient by his standards, I like the simplicity of just typing. I almost don't use shortcuts except find and replace, save variants and a few movements modifiers.
I accidently got into Vim after doing a bunch of SSH stuff on my local server. Then installed Neovim a few weeks later and never looked back. It makes coding like playing an RTS game.
@@demolazer this is my biggest W. As I moved over to neovim I always had a good text editor available that I knew when entering our servers at work as vim is a default on many systems.
tab autocompletion is the greatest invention since sliced bread.
It really is. I remember eclipse and netbeans had it at IBM back in the early 2000s. It was a game changer. When VIM got it, it made my life about 1000% more productive. I went from taking a week to code something, to rendering it out in like 30 minutes.
Close second is itellisense!
I don't ned a fancier new cli. I need applications that run on the cli, that I can use faster than clicking around on a website.
Running on the CLI is bad though. It's better to have the logic separated from the CLI into it's own library so applications don't need to deal with spawning processes, parsing stdout etc.
Sounds like a skill issue
Use Vimium C. You can press f and then a key combo to click any button.
@@Spiderfffun yes, that's a bandaid.
@@TragicGFuel yeah but you cant expect most web things to switch to TUI/CLI. Imagine youtube on the command line.
Make is a graph resolver, not just a command runner. See Buildroot as an example.
Make does have C-shaped defaults (like, it knows to run "cc" on .c files to get .o files by default), but that's because of how it has been used for decades.
I'm using it to rebuild _swaths_ of RPM packages in correct order for a custom package repository at work.
I love Make. There are not many non-linear programming languages!
the W in helix for me is it's always visual, I can see everything that is going happen before it happens, and the motions are different because of this focus on select then action
The terminal is nice because its a standard interface to everything. Without it, each application needs to waste tons of effort creating an entirely new interface that never needed to exist. For the non-programmers, it also helps with awareness of the filesystem, which is generally good for keeping your files organized.
Note this advantage goes away if you start using ANSI escape codes more complicated than coloured text.
I only got into Linux in January this year but I've since fully embraced the terminal. I even made my own bespoke nvim + tmux setup from scratch. Combine that with zsh and zoxide, it's insanely OP. And to think I didn't have this RAW POWER a year ago.
i did 6 months before you although I copied lot of nvim tmux config from prime but ya its insane how efficient I have become.
@@ItsBarmanji I copied lots of stuff from NVChad config, especially the keybindings.
@@krtign99 the c-d c-u zz
And leader pv are just insane rest comes with kickstart.
@@ItsBarmanji oh i didn't even know about kickstart. i just did a basic file structure with nvim/lua/plugins/ & configs/ and copied over some of the nvchad files and keybindings. had to add a lot of plugins nvchad didn't have tho.
@@krtign99 that must have been a long process. But anyways we both made our way somehow!
Well I am in clg 1st yr. Wbu
People have no idea how expensive syntax highlighting would have been. Yes we thought of it (and type ahead) but when you are working in a few k you need disc access to run a spell checker.
This is why I love to keep old machines alive. Running an 8088, 286, 386, 486 system really drives home how limited those machines were. The modern programming paradigm that relies on seemingly infinite CPU, infinite RAM, infinite storage, and numerous cores was simply impossible on those systems.
@@potato9832 There's also some virtue to programming with hard limits. It's not just nostalgia. John Carmack has said that having such difficult limits to work with is one of the reasons he was able to be so innovative and creative.
@@P-39_Airacobra You woulnt write the fast inverse square root algorithm on a modern machine
@@smort123 I was talking about design more than minute details of optimization
@@smort123eh, you might. If, for example, some JS-brained dev decided his special-sauce "isInRange( )" function that runs every frame for every entity needs to use a raycast from library A and a sweep function from library B to sweep the entirely of a sphere, you're going to have a lot of raycasts, which will generate a lot of normal vectors, which means whatever function calculates the normal vector is going to show up big on the flame graph. Then someone is going to call in a consultant to fix the offending function instead of the problem, because why would we do something silly like subtracting vectors? Sounds like straight psycho behavior if you ask me.
Helix is an experience you just get after using it. Not having to keep state in my head is subtle but impactful experience. You just need to use it to understand it.
totally agree, it's such a great editor, I still use vim when I'm pair programming as nobody uses Helix, but it's such a fantastic editor, everything working out of the box, fast, reliable, battery included, the keybindings are so good, the only reason I can't go back to any other editor is that nobody have multicursor like helix does
@@pierreollivier1 I have to disagree. I wan to expand/shrink above the start line / below the end line without moving the cursor and I can't. I'm not saying vim can do this (I don't know), but I believe helix cannot. Not out of the box, and not even via config as I understand.
@@someman7 I think you are looking for x/X at least in my editor that's how I expand up or down.
Neovim is better.
@@someman7 x as many times as you wish and then alt-; to swap back the cursor to anchor
Just now i switched to Ubuntu removing windows 11 from my laptop, it's been 1 month into my first intership, and i think it's gonna be great from now on 🎉
Nice, the market is growing. Now it is time for us divide the TUI / CLI application development into two (FE, BE), and apply react components for TUI.
Easy there Satan!
Were they ever gone?
no.
and this isn't for humour.
The title makes absolutely no sense
@@chri-k I use them. You use them. Most normies don't.
You use the CLI for maximum efficiency and control. I use it to look like a hacker at the airport. We are not the same.
The Onion had a great video about the new Mac laptop that replaced the keyboard with a single wheel for input. That is what using a pointy-clicky interface is like for things that aren't inherently pointy-clicky.
I think you have it reverse but I get your point. Keyboard power users have less keys on their keyboard. I've seen a Chad use a 25 key keyboard and he was zooming man. He types surprisingly fast, you would think the use of layers would slow down your typing speed, but the extra key presses is negated by the fact that your fingers don't need to travel.
Anyways the single wheel is extreme, but there is something to be said about less input choices being more efficient to a certain degree
I describe using the mouse as being like a young kid in a sweet shop going 'left a bit, left a bit more, no right, right a bit, now up a bit, now down a bit, yes!!! that one!!! I want that one!!!'. Whereas the more mature parent can just say 'half a pound of lemon sherbets please'. CLI's take longer to learn, just like more advanced English compared to the kid's pointing at things, but once learned, they are capable of easily expressing things in a few keypresses that would take ages to articulate using the mouse. I do most of my file management using the CLI. The main thing I use the GUI file managers for are either dragging files into applications (e.g. videos into Da Vinci or audio clips into Reaper), or (in Windows) when you can select columns like frame rate or size, or such, and the details view shows you information more easily than running a command to e.g. list files and their durations and frame sizes and rates.
The other thing that non-Cli people don't appreciate is scripting. You can automate a common task with a short script. I have many such small scripts. One is a 'power rename', where I type 'filesrx "hello (\\w+)" "world \1" *.txt' and it will do a regex search and replace in all specified filenames. Doing that kind of rename with a GUI file manager would be a nightmare of manually renaming files one by one. And a GUI app that does power rename with regex's would take dozens of source files and hundreds of times more code than the 120 lines if python filesrx takes.
Then (once you have cygwin and bash installed on Windows and macos), those scripts and shell environment work identically on Macos, Windows, and Linux (no matter what desktop environment, if any, you are using). Thus, you learn once, rather than learn many different interfaces, and learn them again when e.g. MS chooses to redesign the control panel into settings.
I think the world would be a better place if more people shared their workflows. In my experience, observing which tools and processes someone uses can be the easiest way I've unlocked significant productivity gains in my everyday life. But maybe that's the sauce reserved for the top shelf.
I was in a college class and I was 23 and one of my classmates who was in his 40s straight up said, "Real men use command line."
From then, I've been messing with command line. Now, I'm 40 and it's the thing I use almost entirely in my career. lol
I never got the memo that cli went away.
33:31 zellij does a good job of key binding tutorials by default making it a much better experience to learn than screen or tmux
35:04 it was coming right up lol
Someone should make a TUI interface for awk just so it can be called "awk TUI".
Doesn't quite make sense when the original meme was HawkTua
@@SimGunther men of culture will get it
men of culture always get it
Men of culture I see you
No
@@lastmanstanding5423Culture?? That meme was the lowest IQ meme of the decade
remember, switching to your terminal is always faster than loading up guis
19:34 Goodness heck kid unknowingly talked himself into the Shadow Realm
It might have not even been a kid, but they had to send that message, truly a Twitch moment.
@@allesarfint One of the Twitch moments of all time.
tldr solves most of the problems for cli tools i don't use frequently enough to memorize
that and fzf history search
also I always forget tar flags, always, without fail, idk why
i have a function “tldr” that fzf over tldr pages (with preview) when called without arguments, or passes them to tldr when called with arguments
I frequently use tldr for tar because I also can't remember, it's gotten better but still can't completely remeber @@inertia_dagger
@@loo_9why not share it with us?)
I did AutoCAD professionally for 2 years and when you get really good at it its literally 90% CLI. Thats how I got CLI-pilled.
similarly in Maya, when you open the output window you can see that literally every single click you do has an accompanying command line input, it's actually pretty cool and is an interesting insight into how exactly 3d models are stored and edited. I imagine there's a ton of scripting / fine tuning you can do with the CLI. Or if you just want to bevel an edge, it's probably quicker to type the command than click through the interface.
@@moonasha Actually I did AutoCAD for civil engineering, or land development. Ended up leaving but that's a different story haha.
Really it's more that there's about 75 different commands you need, and each of those commands have a few quirks and subsets you internalize, but once you do you can fly through drafting and all that.
@@isaac10231id like to see mspaint do that too, should be simpler
For me, 1% CLI is too much. I'm pushing for cliser to zero. When I design an application, the UI supports all functionality. CLIs are so 1990s.
@@isaac10231how would you, for example, select what edge to bevel ik the cli? Do you just have to memorize the ID of every feature?
Helix for me sold me on two things that aren't the motions: multicursor which is something I am more comfortable with from Sublime, and sensible defaults. The LSP in helix is out of the box functional and easy to configure. It genuinely taught me how to use the LSP in neovim better because it finally made some of the rough spots make sense when I didnt have to deal with it anymore.
It is definitely not as fully functional as neovim yet, but its a great developer experience and deserves the attention its getting.
I learned touchtyping this year. I helped myself a little by scrubbing all the letter stickers off my keys, so I got only black keys on my keyboard.
But what's really really weird, it's that when I look at the keyboard I type much faster.
weird huh?
Like 30 years prior I was typing when looking, never trying to learn touchtyping until recently.
To be fair, I don't like CMake either.
Disclaimer: I have not looked to deeply into CMake. All I know is, that every f-ing time a project uses it, I'm having a lot of troubling getting anything to compile. So it's probably more of a Skill issue, than anything else. It's just easier for me to write pure Makefiles by hand, than using a pseudo language that makes a Makefile for me.
I don't understand why devs that make cli tools are allergic to screenshots and examples. I get you don't want to write docs. No one wants to write it but the least you can do is copy and paste the terminal output into the readme.
putty log printable output file is all i need really
1995 is important for the explosion of GUI usage because that's when windows 95 came out. Win95 made dial up connection with the internet super easy. That's when internet usage exploded. Thus bringing many people not into computers to become every day users.
I think this started with 3.1. But yeah.
@@sophiophile Dial-up networking was not available in 3.1. You had to use third party software like Trumpet Winsock and it was tricky to get right.
@@drooplug I was really young, so I don't know how it worked, but I definitely was using it (Trumpet sounds familiar), and there was definitely a version of IE.
@@sophiophile Yes, you could use Windows 3.1 to get online (that's what I used), but win95 made the process incredibly easy. And with the adoption if win95, the use of DOS significantly declined.
@@drooplughey just how old are yall man😅??
I dont know why, but i quite adore the way you enthusiastically pronounce certain words (such as JSON, SQL, et. al)
43:45 Not only that, but it's literally impossible to deal with spaces in paths with Make's syntax (sometimes it's not your choice). Not hard, straight up impossible.
I switched to helix because of multiple cursors, and selection-then-command is just more automatic for me. There are things I can do in Helix which while I'm sure could be done in Neovim, I don't find obvious.
Between this and htmx, my 41 year old self has never felt happier
Don't know if true, but I heard that line by Newton (if I can see further than others, than it's because I stand on the shoulders of giants) was a dig against a contemporary scientist that was small.
I've been a VIM guy for like 11 years. Today I "apt-get install neovim". I'm going to try it again -- prime made me try it again.
I tried helix earlier this year and uninstalled it within 3 hours.
P.S. That 10 year old being banned for saying "LSP is older than me." is crazy. Somebody sign him up -- 10 years listening to a programming channel. Crazy. when I as ten I was trying to get my G.I. Joe ship to float in the tub.
It’s not very unusual. When I was 8, I was already making basic Batch scripts. And that was absolute pain.
@@xanderplayz3446 Same
CLI frickin rules. It's better than stpd laggy and bugy UI. You can specify any parameters, you can copy and paste that command, you can AUTOMATE literally anything that has CLI
Given that automation and integration are the soul of programming, how on earth would you work with a mode of operation that you can not automate and integrate?
One of the biggest reasons for cli's comeback is the better terminal emulators. Kitty graphic protocol made cli development a breeze and then other terminals started adopting it.
Helix motions do have an advantage over vim... or rather the command set overall does: It's actually consistent. Implementation-wise it comes with batteries included, no need to download three plugin managers to manage your fifty plugins to have lsp, fuzzy file search, and git annotations in the gutter (doesn't come with lsp servers and git, of course, just knows how to talk to either). If you already have a vim set up YMMV, I was certainly of the "I don't care about my config give me a sensible and powerful default" type (spacevim), if you're just starting out it's not even a question go with helix. If you're using emacs don't switch to helix, you first have to atone by using ed for a month. If you have been using evil mode this is shortened to a symbolic five minutes.
Personally, I prefer vim and kakoune motions. Helix feels like a worst of both worlds situation. I do agree that helix’s configuration is a god send. Install helix and your language servers and…that’s it. My config file is like 10 lines, and I read the entirety of the helix documentation in 10 minutes.
I fully agree with you Prime on the availability and ease of both Navigation and Documation within your toolset as compared to other features such as syntax highlighting or autocomplete. The latter two are good and useful features and tools, however the previous two saves you a lot more time and resources in the long run.
CLI through docker exec -it for mosquito is magical been making a json encoder for the dynamic security plugin to dynamically manage MQTT clients and using the command line tool to figure out response json is really needed.
Best thing I learn recently is that `less` can pipe part of output to arbitrary command (typing `mX` to mark line and `|X` to sent all from current line to mark `X`)
@@von_nobody yooo
I wish I could remember that channel who talked about overhauling the entire CLI experience in every conceivable way.
I know there are tools to remember & replay mouse moves and clicks, but it's so much easier to repeat and automate with a CLI.
5:05 We had a Multics machine when I was a rodent.
I also want to be like that someone who is good as cli and people can just admire and get inspired to move to cli.
I didn't even know CLI was not still around. Most of the tools I've had to learn to use were only CLI
in fact CLI is the best way to automate stuff!
I used fish for quite a while and loved it, but in firmware development a surprisingly high amount of vendor “software” is just badly supported scripts, and fish had a tendency to break everything.
Using zsh means I get all the nice features + consistent environment that does not randomly explode.
I use helix and dont perticularly care for its specific motions, helix could have the exact same motions as vim and i would still use helix. i experimented with (n)vim before but could never get the hang of it, what made me use helix over (n)vim are 2 things
1. that i dont have to set it up to have features like LSP suport
2. and the more important part that helix shows you a little window in the right bottom corner of ways how to finish a started motion with a discription of what that motion does, that made learning the motions easier and it reduces the cases where one is hinderd by not knowing a motion. by now i know the motions i use constantly by heart but for stuff i use rarely i can still be unsure about the motions and that window is a realy nice fallback to have as it means that i dont have to look those motions up
Still looking for a good replacement for make cause I hate it
Maybe eventually I'll make enough of my own replacements until one is good enough to be desired by other people
Also the argument about make always being available doesn't always mean it's the best... It gives no chances for anything new, ever. One day something popular enough might be a "default" for many anyway, either from OS or from their own toolset installations, but it has to be given that chance first
Emacs is a fully customisable system.
It's sad it doesn't have a nice text editor
It takes a lifetime to learn, so the sooner you start, the longer it takes
Too bad the I.R.S. does not have an emacs package so I can send my taxes to them thru emacs...
I always used the cli! I’m a Unix junky, have been for 34 years.
51:25 He wasn't insulting Newton but complimenting him 😭 the dyslexia making him shoot at an innocent person
They were saying that Newton was insulting Hooke (calling him short), not that someone was insulting Newton?
Edit: oh nvm
Powershell 7 is a modern shell env. It pipes objects in stead of text
shorter names in PS would make it easier to work with it tho
If I have to touch a windows machine I just put Cygwin on it and move on.
Powershell 1 did the same IIRC. It has it's own share of problems.
@@Karurosaguuse aliases
I thought that was a cool thing in powershell. It has its own weirdnesses though. Some of that is just paradigm differences but some are definitely head-scratchers.
I wish I could always work in the terminal. CLI for lyfe!
I personally use git with a UI tool instead of the command line. I did a few pushes via the command line a few times just to get the hang of it, but otherwise kept using the UI. It's just so much more convenient to see changes as well as discard single lines of changes and whatnot
Those two things are the only two things i use a "GUI" for, but everything else, even resetting a whole file, i use the terminal. I put GUI in quotes, because I use the fact that VSCode marks which lines are different and an easy way to revert the lines im on. I likely would do the same, or use the terminal, if i didnt use vscode. I use `git status` and `git diff` if i want to get all changes
I was into CLI's before it was cool. Actually, before there was anything else, then when it was cool, mostly now when it's not, but I am looking forward to being considered a rock star again. :)
I like just a lot. It's a big improvement over make.
One other comment, having read the linked article, is that while there are newer improved substitutes for e.g. find, (in this case fd), if you are e.g. ssh'ing to your webhost, on that webhost you likely only have standard find, vim, etc, not fd , ripgrep, neovim. It pays to learn to use the old faithful standard utilities even if you daily drive the newer replacements.
My Dad first day of taking drafting was like learn Autocad CLI, its harder but worth it trust me. biggest lesson he ever gave me.
While I appreciate the desire for sane defaults that show off the features of a utility, the author of this article kind of seems to be missing the point. It almost comes off to me as a very mild form of anti-intellectualism. That's maybe a bit dramatic, but I think it gets my point across. Most of these tools are designed by and designed for power users. I know how I want my command line to behave. I know how I want my editor to behave. And I can tell you, my goal behavior is not whatever the developer decided the defaults were. From that perspective, it's actually much easier for me to configure a tool like this when I can just enable things I want, rather than having to go through and disable things as well. Having sane defaults can be fine, but the idea of designing software to minimize configuration as much as possible seems to me like a very slippery slope that leads to bad software in this context. Just learn your tools--you should be doing it anyway and it's really not that hard.
I was there, thousand years ago, riding vim+eclim before lsp :)
Helix = not the constant headaches of configs in neovim. It's why I went back to Mac after several years of LInux. I don't want to fool around with a million configs.
Only time I need to touch a config file outside of my codebase in linux is when i need to add something to the PATH. what are yall doing that causes you to constantly need to open configs? I am using Ubuntu with KDE and have never needed to open a config file outside of my .zsh and that one time i needed to open a .desktop file because I was doing goofy shit
This is really simple, right? We, as an industry, reject using full-blown GUIs for cloud machines. So all of those administration tasks either need their own bespoke web application, or some CLI / TUI that you can install and run without the fuss.
Cloud was booming just before COVID. Then that happened, and it exploded in growth while everyone also had the time on their hands to focus on "get stuff done" projects.
I always thought it a shame that attempts to combine CLI and GUI were so rare. Both have their strengths so why not use both? Software like Eagle, Inkscape and GIMP use it well to extend power and allow scripting. Imagine a version of explorer (for example) where you could click individual files to select them or enter a regex like \*jun\*.txt
I didn't know the CLI had gone anywhere. I always have CLI access. Either I log in to a command line interface or I run a terminal program for CLI access. The terminal program has at least three and sometimes six tabs open giving me multiple CLI access points to the machine at the same time.
One of the first things I did when I started working was to learn the CLI. I mean I went from a C64 > PC in one jump so it made sense. I also learned all of the keyboard shortcuts for my tools. Didn't touch a mouse. The downside was that the world ran Windows back then, there wasn't such thing as a choice. I've long since switched to Linux + MacOS so all of that effort was wasted.
I’m a fish user and and I’m happy to stay in my fish lane and let the plebs use their inferior shell without interference 😂
When the Woz booted up the Apple I - back in the computer club days - he'd spend roughly 20 minutes typing in the Basic interpreter, from memory, in hex codes - because he had no storage...
They never went away
I use sed, awk, grep, xargs, wc, tail, sort, uniq, etc etc .. every day, all day. It's not that I'm more effective in the terminal, it's more like I'd be completely handicapped without the terminal. I literally would not be able to work if I was limited to GUI-tools.
Add alias functionality for user customization for ya IP. Personalized stereognostic senses unlocked if the tradeoffs is not too bad for performance cost, and mem management.
I use CLI when it makes sense to, and GUI when that makes sense.
10:27 this is a POSIX jab, maybe even linux kernel jab
I love using VIM on servers, and am constantly using command line because im a senior se/devops/cloud guy and a sysadmin apparently. For whatever reason though when I'm writing code its always in intellij ultimate. Im in and out of so many languages, i just enjoy navigating and the searching/refactoring tools.
24:00 navigation is nice, but refactoring assistance is great!
CLI:s make me feel comfortable. GUI:s are scary.
exactly how I feel...
it's like talking to an old friend
Bespoke administration web applications are scary.
Thanks for outing me as a dinosaur. I didn't even know about the git switch command :D
It takes years to understand its true power
Me neither, and I'm a zoomer. Granted, I've created a whole 3 branches other than the main branch created by git init because I am a certified noob, but that's a whole other problem.
@@mage3690 I'm using checkout -b and checkout all the time. I have no excuse. Well perhaps one. It just works.
@@mage3690 I am also a zoomer, i create like 4 branches a day and havent heard of it lol
after 5 years:
assembly made a comeback
22:00 Imagine 100 years in the future. Uganda has become a wealthy country. They achieve the lowest amount of wealth in-equality. The poorest children are equal to U.S. upper middle class in the 1980s. Some random developer opens vim and is greeted with.
"Help the children in Uganda"
Here's a mild response to fish:
It's cool. Wont use it on my next dev machine, for the same reason you said - too much to learn for too little benefit.
I have it for a couple of years now, and once in a while i need to do something off the beaten path, which means googling for 15 mins at least.
AutoCAD is so much faster when you use the CLI. There are times you have to use the mouse, but most of the time, nothing is as fast as the CLI.
you made me realize how how old I am - we just didn't have any alt in the 80ies
Yazi with image preview is nuts! I want to live on the CLI now!
lf … nnn… ranger… joshuto… fff…. Etc etc. Though yazi is … blazingly fast.💨
Editor-senpai going hard with the edits
DEC had images in the terminal in the 80s with sixels.
I really enjoy making CLI apps. Often I'll make one to test code with with a variety of different input types. Shout out to Cobra in Go and Typer in Python, two of my favourites.
3:00 I think, the best argument for command line is , that you can just copy-paste commands instead of clicking through GUis.
Especially if you don't know, what you are doing, you can just google the command, or a coworker can send you the command, and then you paste it and it probably does, what you want.
Maybe you have to insert the correct filenames or something.
Or especially when using AI, you can just ask the AI "how to resize all your images in one folder and subfolders to a maximum of 1920×1080 without changing the aspect ratio in the fish shell", and it probably gives you a command, which just works.
This is the answer:
find /path/to/folder -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" \) -exec convert {} -resize '1920x1080>' {} \;
But I didn't try.
please do not run programs you don't understand
non-interactive CLI tools are programmable and scriptable, that's why they are so powerful, it's not just about copying and pasting commands all over
@@Karurosagu Sure. Being able to copy-paste scripts is an argument, why command line might be even more beginner friendly, especially with the raise of AI.
@@yjlom And yeah, of course you should check your program. If something looks weird, don't just run it.
But still not a bad argument against command line for beginners.
It's funny because even Microsoft is doing a big push for CLI for a lot of their stuff including that horror show erp that you talked about where they are accurately pushing for CLI to get rid of powershell dependencies and things like that that all break when they upgrade
What!? They are dumping power shell now? Omg. Rule #1, never adopt anything from MS c’ause they are guaranteed to drop it.
My weaponized autism is incredible at remembering faces and things that have happened in my life, but I really struggle to remember static things like the names of people and productw, or even things like my own zip code. It literally takes a couple of years for me to memorize my zip code if I move. Unfortunately this also applies to shortcuts. I have to use the mouse a lot despite having started writing code almost 40 years ago as a young kid.
That said, I like the way Zellij works. I'm striving to try and do way more on the keyboard despite my broken brain and this is one of the things that will help me get there.
Nothing is easy, it's just habits, there are so many ways to do something
"Nobody uses bash thinking bash is good"
*Windows Command Line user clears throat*
Mmm... TUI...
0:44 Anders Backend mentioned
Learning programming and pursuing software engineering to stay relevant to your content
Unfortunately haptics are not good enough for touch touch typing yet, though
theres alot of great hauk TUIs nowadays, theres some pretty good rust libraries to make some. i like `bottom` as an alteranative to `top`-like programs
point is CLI makes us use our brain think figure out even doing some of the basic operations
There actually is a back button in VSCode, but it's the mouse button 5..
As a new Linux Desktop user, ZelliJ is awesome (I set it in my bashrc to always run). When I broke my Linux install I could use Links2 CLI Browser in one pane and in the other be on the command line trying fixes and I didn't have to learn a bunch of keybinds to save my own ass.
Hashicorp HCL2 for the config in Go. Definitely bubbletea for the TUI though.
Sane!
"people who can only use with a ui TOOL and not CLI at all..." and i'm one of those people, and i see no shame in it, it's immensely stupid to repeat keystrokes over and over especially i have problem motor functions.. and brakes my focus, have to repeat them over , using a CLI has it's place when if you have an operation you need to repeat over and over, doing it in cli is a waste of time.
Hence scripting and command-line-recall. Also command line substitution: (^*.txt^*.jpg). I use CLI because it's *less* work. (Though GUI certainly is superior in some contexts). Once you've got your scripting right, you hand it off to a cron job then let the computer take care of it forever.
@@chaos.corner that's what i thought, but essentially, if I'm developing and i need an often required cli , i will turn it into a batch file, and in order to avoid getting out of my editor i will find away to have it as a shortcut, which is essentially re-buidling an IDE.
if i have issues with GIT for example there's always git console in an IDE that tells me exactly what it does, but for the most part, fetching/commit/pull/push/stash, there's no reason not to use an IDE tools .
OTOH, I find it more annoying clicking on the same series of buttons in a GUI, for who knows how many times. Once I type a command in the terminal, it's available for recall, even years later (I preserve my command line history). Nice to also have the context (surrounding commands) available. GUI doesn't offer any of that in any normal setting.
@@jonathanjohnston9272 i agree, clicking on a series of buttoins defeats the point of having those