MacBook : Dev Setup
Tags: macbook, macos, laptop, developer
Published: 2018-11-12 15:31:52

---
title: "MacBook : Dev Setup"
published: true
description: "How to setup your brand new MacBook"
tags: ["MacBook" , "macOS" , "Laptop" , "developer"]
cover_image: "https://thepracticaldev.s3.amazonaws.com/i/jxko7f76d34zh2ek29sx.jpg"
---

![MacBook Readt](https://thepracticaldev.s3.amazonaws.com/i/jxko7f76d34zh2ek29sx.jpg)

I have been using mostly linux for many years now but, I just got a new Macbook Pro (2018). I had moderate previous experience with macOS before but I never had one of these machines as my main gear. After my initial "wow" moments with its screen and some "wtf" moments with its (lack of) ports, I started migrating my enviroment and searching for whatever I had to install to make this beast my own. Below is a step by step guide of this procedure which covers almost all my needs as a Java / Javascript Developer, although most parts can be valuable to most people as well.

---

# The missing package manager

Before everything else, we should install Homebrew, the missing package manager for MacOS. Homebrew is mainly used for installing packages and command line utilities but, it can also be used to install normal non-open source applications.This will help a lot with the installation of all the remaining software and packages you will need and also maintaining them ( removing , cleaning dependencies etc ). To do that, open a terminal and run the below command.

```
≈/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```
Just follow some on screen instructions and after that is finished, move over to the good stuff.


# Terminal on steroids

I use terminal a lot during my daily work so this was the first part I tried to upgrade. After some searching i found iTerm2 which covers all the features I was used to with my previous terminals ( tilix on Linux, cmder on Windows ). You can download it from its official [page](https://www.iterm2.com/index.html) or, use homebrew that we previously installed :
```
brew cask install iterm2
```

After the install there are countless things you can tinker on this app but with some more steps we will get a lot more. Next we should change the default unix shell of MacOS from Bash to Z shell. There are various pros to this move like better auto-completion and command history. Zsh comes installed on MacOS but it is better to install its latest version so, type this on your terminal.
```
brew install zsh
```
After that check your version :
```
zsh --version
```
_at the time of writing this, it should be zsh 5.6.2_

Next make zsh the default unix shell :
```
chsh -s $(which zsh)
```
Now we can either live with just the zsh or we can install a framework that will bring along many new plugins and themes for our shell. There are various choices here but the one I got in the end is [*oh my zsh*](https://github.com/robbyrussell/oh-my-zsh). To install it just type :
```
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
```
Now we can enable whichever plugin we want from the various that the [framework bring along](https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins) or new ones found online. To enable the plugins you like, you have to edit your .zshrc file.
```
vi ~/.zshrc
```
There you must find the plugins array and add the ones that you want.

*some notable mentions here, zsh-syntax-highlighting and zsh-autosuggestions *

Lastly, we should install a prefered theme for iTerm2. Easiest solution would be [dracula](https://draculatheme.com/) which can be applied on most other apps/editors as well, although i went with [Material Colors](https://github.com/MartinSeeler/iterm2-material-design). Just download the preffered one and apply it through the Preferences page of iTerm2.

# Brew up your Dev stack

Now that we have our terminal set up, we can start installing all the required applications. Most of the work below can either be done through Homebrew or by downloading everything from their respective websites. There is one other thing that especially developers will need and that is the need to keep multiple versions of SDK's installed on your machine. Homebrew by default installs the latest one and, for some packages there *might* be some older versions, but that is not the normal case. For that firstly we will install another tool, the [SDKMAN!](https://sdkman.io). Go on your terminal, type the below command and follow the on-screen instructions.
```
$ curl -s "https://get.sdkman.io" | bash
```

 A list follows with some pretty basic installs that I, and most of us, will have to do.

*   Java SDK
```
sdk install java
```
*   gradle
```
sdk install gradle
```
*   mysql
```
brew install mysql
```
*   mongodb
```
brew install mongodb
```
*   elasticsearch
```
brew install elasticsearch
```

Now, before we move over to actual applications, NodeJS is also required. For this we need the nvm tool to be able to install and change into multiple Node version. Either install the tool itself with : 
```
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
```
or install the [zsh-nvm](https://github.com/lukechilds/zsh-nvm) which will take care of easily upgrading nvm later on. After nvm's installations just install (latest or specific verions) node by typing :
```
nvm install node
```
which will install latest nodeJS and acompany npm.

Now, lets finish this up with some tools and required editors of choice. I needed the MySQL Workbench, Docker, GitKraken as my git GUI client, PostMan for API Testing, Android Studio for Android Development, Toolbox by Jetbrains which will handle WebStorm for Javascript projects and IntelliJ for Java projects. Furthermore I usually also use SublimeText or Visual Studio Code for simpler things. All the above can be installed with Homebrew so you could just type :
```
brew cask install \
    mysqlworkbench \
    docker \
    gitkraken \
    postman \
    android-studio \
    jetbrains-toolbox \
    sublime-text \
    visual-studio-code
```
After some time everything will be downloaded and installed, ready to use.
# Required Generics

Lastly, I made a list of some generic applications that will be needed during daily use, based on personal choice.

```
brew cask install \
    gimp \
    skype \
    viber \
    slack \
    google-chrome \
    microsoft-office \
    spotify \
    vlc \
    evernote \
    the-unarchiver
```
---
![MacBook Readt](https://thepracticaldev.s3.amazonaws.com/i/wfaaze654a3vneu2wcvx.jpg)

After all these are done installing, I felt like my new and powerfull MacBook is ready to replace my old Dell as my daily driver. Many of these would not apply to anyone but following brew / cask installs it should be a breeze to set up a new machine and have it ready to use in no time.