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
bash to 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.
However, my current gold standard for terminals is Hyper. I have been using it for many years and it was built by the folks at Vercel, who you may have heard of.
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
asdf supports auto switching versions of tools as you change directories in
your terminal, so if you create a
.tool-versions file and specify the versions
there, you can magically use the correct versions for every project, as soon as
cd into that directory! 🎉