Working in software, we know the stereotypical terminals shown in movie scenes - with green text whizzing through black backgrounds as a hacker furiously slings commands from memory onto an eight inch screen - is far from the reality of today's development.
While our day-to-day development process might not appear as exciting and action-packed as the silver screen renditions, as software developers, we do have a lot of great options to streamline our workflows by improving the style and functionality of our terminals.
One of the biggest improvements to my experience in the terminal was from switching from
fish. Fish upgrades your terminal with features like autosuggestions, that
remember commands you have run before and try to auto complete them for you, and automatically
generates auto completes for other utilities by parsing their man pages, neat!
Starship is a cross-shell prompt that is blazing-fast, and infinitely customizable. It is built in Rust, which gives it best-in-class speed and safety, to make your prompt as quick and reliable as possible. Out of the box it shows you pertinent information like what git branch you are on, what version of CLI tools you are running (e.g. node, Rust, etc), how long commands took to run, and so much more!
Yes, this font costs money, and yes it is worth spending money on. There are a lot of nice free fonts out there, and I personally used Input before, but there is just something special about MonoLisa that cannot be put into words. It just feels clean and extremely legible. Their website says it was designed "to improve developers' productivity and reduce fatigue" and I think they nailed it!
The built in terminal on Mac is decent, and has been getting some updates, but it tends to lag behind alternatives in terms of features. iTerm is another popular option, and new players to the space like Warp promise all kinds of new and exciting features.
If you have worked on multiple different projects, throughout your career, odds are you have encountered a
need to switch
ruby, etc. versions depending on the project. There are several independent tools that
exist for managing versions of these tools like nvm and rvm
but I have recently been opting more for an all-in-one solution asdf.
asdf supports auto switching versions of tools as you change directories in your terminal, so if you
.tool-versions file and specify the versions there, you can magically use the correct
versions for every project, as soon as you
cd into that directory! 🎉