DEV Community

Rafael Gomes (Gomex)
Rafael Gomes (Gomex)

Posted on • Updated on

What I should install on my Mac?

Starting the year, I decided to do a backup and format my Macbook, restart from scratch. I am an ops guy. My setup is based on tools to create and manage automated infrastructure, SaaS services, and containers.

I started a twitter thread (Portuguese only) to get some good options.

I created this article to document the setup to myself and share it with the community to receive more feedback too. Please share your opinions.

.1. Using brew

Everybody that uses Mac should use brew to install your packages, if you don't use it, please consider this as my first recommendation of this article.

The brew is a tool to install packages on your Macbook using a CLI command

brew install package_name

Brew has an outstanding feature to install all packages that you need using just one command and one file with the complete list of apps.

To use it you need to create a Brewfile with the list following this convention:

tap "homebrew/bundle"
tap "homebrew/cask"
tap "homebrew/core"
cask "alfred"
brew "jq"

To understand the Brewfile: tap is the repository to get the app, cask is to install this app using cask and brew using brew. Please read this document (https://apple.stackexchange.com/questions/125468/what-is-the-difference-between-brew-and-brew-cask) to understand the difference between brew and brew cask.

When you have this file, you need to run this command:

brew bundle install

Here is my Brewfile.

.2. Applications outside brew

You can't find some apps at brew, and because of it, I will explain first the apps that you should install using other methods.

.2.1. Amphetamine

The simple app used to keep your Mac awake on a specific time frame. This is really useful on presentations, can you imagine your Mac hibernate in the middle of your talk because you didn't use your power supply? Amphetamine can save you.

.2.2. Oh My ZSH

Do you use a zsh shell? If yes, you should consider this community-driven framework for managing your zsh configuration.

.3. Generic apps (Using Brew)

I will separate the details of apps (using brew) in two categories:

Generic: Apps that everyone could install. These are not related to my role.
Automation: Apps related to my role (Infrastructure Automation).

.3.1. Firefox and Chrome

I don't need to explain these. IMHO it would be best if you had both because you need to troubleshoot problems of web apps in a particular browser.

.3.2. Iterm2

This terminal is impressive. So many features and it is more beautiful than the regular Mac terminal too.

.3.3. Slack

This is used by all companies that I already worked, and we can't avoid to install it. This app has relevant problems to consume CPU and RAM memory, but we need to have it.

.3.4. Spectacle

You can find useful shortcuts to manage your app windows. Because of it, you need to install another tool to give you options. The Spectacle app is a good option. This app is no longer being actively maintained, but they are effortless. I am still using it.

My best shortcut is

control + CMD + F

to force my apps's windows to use all the space available on the screen and don't enter in "full screen mode".

If you wanna try another option, you may install Rectangle.

.3.5. Telegram

IMHO the best chat app ever, simple, clean, and enjoyable features (poor security, I know). This tool is really used for the Brazillian IT community (i.e., Dockerbr group has ~5k members).

.3.6. Whatsapp

This app is viral in Brazil, most people use this, and we can't avoid it to talk with families and friends outside the "tech world".

.3.7. Transmission

IMHO the most straightforward BitTorrent client for Mac.

.3.8. Spotify

"Spotify is a digital music service that gives you access to millions of songs." I love songs, if you like it too, you may install and pay for it.

.3.9. Flycut

"Flycut is a clean and simple clipboard manager for developers. Every time you copy code pieces Flycut store it in history. Later you can past it using Shift-Command-V even if you have something different in your current clipboard. You can change hotkey and other settings in preferences."

.4. Automation apps (With Brew)

.4.1. Visual Studio Code

"Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications." Microsoft won this "race". IMHO VScode is the better code editor.

.4.2. JQ

If you need to handle data on JSON format, this tool may help you. JQ is considered the sed of JSON documents. You can learn more about this tool here.

.4.3. Nmap

If you need to check open ports and other network discoveries, you should consider to install it. You can install plugins to extend the tool, and they have a vast community with a lot of documents and new ideas of usage too.

.4.4. Watch

If you need to run the same command continuously to refresh the data (.i.e., ps to check process), you should use the watch to don't add too many entries on your shell history and keep it updating until you are free to check something else.

.4.5. Docker

If you use containers these days, probably you should install this app. This app is Docker for Mac and provides you a virtual machine to build/use your Linux docker images on your Mac.

I use docker to run other binaries and avoid the necessity to install it. For example:

docker run -it -v $PWD:/app -w /app --entrypoint="" terraform:light sh

I can use the terraform, and I didn't install it on my Mac, and I can specify the version of terraform too.

.4.6. Docker Compose

This tool is handy to set up a sophisticated container set up locally. If you work with containers, you should install it.

.4.7. Kubernetes-cli

If you work with Kubernetes, you need this tool. This is the CLI binary to interact with your Kubernetes cluster.

.4.8. Popeye

If you use Kubernetes, this tool can help you a lot. You can use it to scan your Kubernetes cluster, and popeye will give you a report with possible problems on your resources and configuration.

.4.9. Stern

Do you need to troubleshoot Kubernetes pods? This tool can help you to "tail" multiple pod's logs of a Kubernetes cluster.

.4.10. Kubectx + Kubens

Do you use multiple clusters/namespaces Kubernetes? This tool can help you to switch cluster and namespace smoothly.

.4.11. Insomnia

Do you need to test REST or GraphQL API? This straightforward tool can help with that. You may use postman, this is an alternate option.

.4.12. Dash

Dash is an API Documentation Browser and Code Snippet Manager. The best thing is that you can search offline too.

.5. Thanks

Top comments (10)

Collapse
 
moopet profile image
Ben Sinclair

"Opensource" isn't a price! Some things are "open source" but you have to pay a licence fee to use them, for example.

Collapse
 
gomex profile image
Rafael Gomes (Gomex)

That's true ;) but I added that to understand the difference between "free" and "Opensource". All opensource products just need to pay a license to get support ;) I will think about another term to use instead. Thanks for your feedback.

Collapse
 
ghost profile image
Ghost

what about licensing: (paid|freeware|opensource)?

I understand the POV of Free Software people, but they really choose an ambiguous name. If you have to explain the name: "as free as in beer", you have a bad name my friend.

If they wanted to be clear about freedom they should have used a language that made clear the distinction like LibreOffice crowd did.

Thread Thread
 
moopet profile image
Ben Sinclair

The trouble with that is that you assume that licensing(paid) and licensing(opensource) are mutually exclusive, but they're not.

Thread Thread
 
ghost profile image
Ghost • Edited

then:

Price: (free|paid)
Licencing: (propietary|opensource)

in any case, what FOSS sw is forcefully paid?, could FOSS sw be paid only? if you have all the ingredients how can you force a payment?

Thread Thread
 
gomex profile image
Rafael Gomes (Gomex)

Great! I will update soon ;)

Thread Thread
 
gomex profile image
Rafael Gomes (Gomex)

Done ;)

Collapse
 
ghost profile image
Ghost

Linux!, sorry, I couldn't resist. Have you checked out Ansible? and I quote "Ansible is an open-source software provisioning, configuration management, and application-deployment tool". It doesn't require anything on the target side besides SSH, and is so easy to use that is even useful to setting up your collection of Raspberry Pi.

Collapse
 
mpinheir profile image
Marcelo Pinheiro

Thank you for the great contribution. Very helpful.

Collapse
 
jdforsythe profile image
Jeremy Forsythe

Highly recommend the relatively new Docker CLI UI, lazydocker