DEV Community

Cover image for MacBook : Dev Setup
Stefanos Vardalos
Stefanos Vardalos

Posted on

MacBook : Dev Setup

MacBook Readt

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 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. 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 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 which can be applied on most other apps/editors as well, although i went with Material Colors. 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!. 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 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

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.

Oldest comments (1)

Collapse
 
rhymes profile image
rhymes

Love how Node seems to be ever present in developers setups these days, even for developers who don't use it as a web framework :-)