💻 Basic developer configs for your M1 Mac.
Tags: tutorial, productivity, m1mac
Published: 2022-01-27 00:55:22

👋🏽 Hello everyone! It’s been a week since my last post... time goes by quickly 😅 But enough of reflections. As you can see in the title, I would like to share with you my setup I created for developing within my M1 Mac 💻. 

It’s been no secret that many technologies did not work well enough or needed to run via emulation during the first months of the Apple Silicon. And, although the transition for developers to adapt their software to the ARM architecture is happening as fast as expected, even in 2022 it is tricky for new developers to adapt their workflow in these machines. Thus, I will present to you the steps and programs I installed within my Mac in order to fulfill a mobile/MERN web app developer; as well as a CS Student during its lasts semesters profile 🚀.

## 〉Terminal. The main reason developers love UNIX

Starting with the basics, I was expecting to use the pre-installed Terminal app for all those hacker-like movements we, as developers, must do to eat. However, after reading reviews I decided to install [iTerm2](https://iterm2.com) instead. It is fast and lightweight (as you might expect from a terminal app) but its main advantage over the Apple version is its capacity of customization. 

![My Terminal](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0wndchk1dpjfliklwm15.png) 

To have a similar setup like mine, use: [ohMyZsh](https://ohmyz.sh) to make easier the customization process, alongside [powerlever10k](https://github.com/romkatv/powerlevel10k) to theme things up. Furthermore, in order to have a clearer and more descriptive step-by-step guide for this tools, I encourage you to follow these two videos: [video 1](https://youtu.be/0MiGnwPdNGE) and [video 2](https://youtu.be/KwYqtbSwnH8). 

In addition, I would like to mention that these computers have git installed. Thus, you could check you git version in your terminal using `git --version`

![Git I have installed](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1l0fsv97n43s4nu2t94p.png) 

## 〉PM. Why should you have one in Mac?

A packet manager (PM) is a must-have tool for developers since it makes things easier (software installation or even languages integration). The most popular one in macOS is [Homebrew](https://brew.sh) and its installation process is as simple as following all the steps it describes once you copy the next line in your terminal: `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`

## 〉Apps. The most obvious yet the most needed feature 

I must say that this section took me a month to be finished in my Mac due to the lack of optimization with a few apps. But, as the time I’m writing this I can say that the following apps run perfectly and without Rosetta2:
- **Xcode** (for Apple-only applications): A few note here. My installation took over 5 hours long (even though I was directly connected to my router). Thus, I recommend you to install this with time.
- **Android Studio** (for Android-only applications): Now that the Bumblebee release is available I can tell that Android studio, even its emulator, runs as expected. 
- **Figma** (for app design): It is a sketch like tool and has a very complete free version. However, in its [web page](https://www.figma.com/downloads/) you can apply for a free premium account if you are a student. So, use your student mail on this one 😉. 
- **Visual Studio Code**: The text editor of my choice. [Download](https://code.visualstudio.com) it and be pleased with its capacities. However, be cautious since its web page presents you the universal verison of the app. Scroll down and download the Apple Silicon version. Furthermore, in the future I’m planning to show what extensions I use, so, be tuned:D

## 〉Web tools. I couldn’t think of a catchy subtitle

Finally, one of the tools I use the most is Node JS. To install it we will use Homebrew and NVM (why nvm? ‘cause it makes version management easier and less messier), thus, is important to do so once you have installed that packet manager. In your terminal type `brew install nvm`. The first time you type this command it will not let you use nvm since there is not a proper usable PATH within your mac. Fortunately, Alex Ziskind did a wonderful [video](https://youtu.be/AEuI0PBvgfM) that tells us the right directions to follow in order to properly add NVM to our system. As a summary of his amazing job, we must do:
1. Create the nvm directory using: `mkdir ~/.nvm`. You can type this command wherever you are located within the terminal path. However I recommend you to do it in your home route 🏠
2. Open your `/.zshrc` file in any text editor (if you use VS Code type: `code .zshrc`) and add the following lines of code:
```
local brew_path="/opt/homebrew/bin"
local brew_opt_path="/opt/homebrew/opt"
local nvm_path="$HOME/.nvm"

export PATH="${brew_path}:${PATH}"
export NVM_DIR="${nvm_path}"

[ -s "${brew_opt_path}/nvm/nvm.sh" ] && . "${brew_opt_path}/nvm/nvm.sh" # This loads nvm
[ -s "${brew_opt_path}/nvm/etc/bash_completion.d/nvm" ] && . "${brew_opt_path}/nvm/etc/bash_completion.d/nvm"
```
3. Save the file and type: `nvm help` to see if you did everything correctly. If you did, you will see a lot of information in your terminal. 
4. Finally, to install the latest version of node type `nvm install node`. However, if you need another verision, you can type `nvm install numberOfVersion` (eg. `nvm install 14`).

## Conclusion

You did it to the end. Thank you so much ❤️! This guide was simple yet I hope you find it useful. I am concerned that I did not mentioned how to add important technologies (such as python 3.x) but expect those iterations to this guide soon 😉. 

Programen bonito 💻!