DEV Community

Cover image for Set up My Computer with Me!
Ali Spittel
Ali Spittel

Posted on

Set up My Computer with Me!

I just bought my first ever personal Mac, and I thought it was a good opportunity to document my process of setting it up, and all the things I install!

I expected to focus on the things that were difficult to install and that gave me issues throughout the process, but I can happily say that I didn't run into any issues while getting everything set up! So, here's what I did and why!

Chrome

I use Chrome pretty exclusively, and I have for a while. It's developer tools are great. I struggle on Safari, so this is the first thing I got set up! I just downloaded it through Safari. I synced my settings and favorites by signing into my G-Mail account.

Spectacle

Spectacle is a window management tool so that you can use keyboard shortcuts to move around windows on your monitor. I have been using this for awhile, and I'm completely dependent on it -- I really struggle to navigate computers without it to be honest! This one was important! I also downloaded this one through the browser, I wanted it set up before I did anything else.

Homebrew

Homebrew is a package manager you to install stuff really easily on MacOS. I honestly couldn't imagine getting anything installed without it at this point.

Here's the command to install it:

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Languages

The three languages I normally write code with on my personal computer are Python, Ruby, and JavaScript.

Ruby

I use rbenv for setting up Ruby environments. It allows you to easily switch between versions, and set them for different projects. I set my global Ruby version to 2.5.1 which is the version dev.to uses!

$ brew install rbenv

I then added eval "$(rbenv init -)" to my .zshrc (which would be your Bash Profile if you don't use Zsh). This just loads rbenv automatically whenever I open up my terminal.

$ rbenv install 2.5.1
$ rbenv global 2.5.1

Python

Python was my first programming language, and it is still the one I have the most professional experience with. There are a lot of ways to get Python installed, but I personally prefer installing it without Anaconda. I find that I have fewer installation issues down the road. It also automatically installs pip (the Python package manager) so I don't have to worry about setting that up down the road.

I also installed IPython right away since I use that pretty much every day for testing pieces of code.

$ brew install python3
$ pip3 install ipython

Node

The third language to set up is Node. This one is usually not too bad, I haven't had too many Node installation issues in the past.

$ brew install node

Developer Tools

Visual Studio Code

I've been using Visual Studio Code as my text editor for a while, and I obsessed with it. I have a full post on my setup.

I use brew to install it, though for applications you want a desktop icon for, you add cask on, and it will do that for you!

$ brew cask install visual-studio-code

Git

Git is pretty important; it's definitely a must install! I again installed it through HomeBrew.

$ brew install git

I also set up a global .gitignore so that certain files are always excluded from version control.

Then, I set it up so that I use Visual Studio Code instead of Vim for Git.

$ git config --global core.editor 'code --wait'

I also set up my GitHub SSH keys so that I don't have to type in my password all the time.

Fira Code

I use the Fira Code font for both my terminal and VS Code. I love the ligatures and how it looks!

$ brew tap caskroom/fonts
$ brew cask install font-fira-code

Sketch

I use Sketch for all of my design work -- here's a little bit more about my work flow.

$ brew cask install sketch

Zsh + ITerm2

I use Zsh with ITerm2 for my terminal setup. You can read all about that here! I installed ITerm2 with Homebrew. Zsh comes installed on Macs, though I used oh-my-zsh to finish the setup process.

$ brew cask install iterm2
$ sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Other Stuff

Fantastical

I also installed Fantastical2. It is an improved Google Calendar that allows you to sign in with multiple accounts and view all of your calendars as once. For me, this is critical since I have work, blog, and personal calendars. I accidentally double booked myself once by looking at the wrong calendar, so I'm very careful about checking all of them now!

Slack

Even though Slack is mostly for work, I also have a couple organizations that are social, so I have those on my personal computer as well. They are mostly the ones for meetups in my area. I again used Homebrew to install it.

$ brew cask install slack

Desktop Background

I use Design Love Fest for all of my desktop backgrounds. They are so pretty, and they post a set of them each week, so there's always a new one for me to use. I'm using this one for my new computer.

Conclusion

This whole set up took very little time and went super smoothly. I've had a lot of installation issues in the past, so I was super surprised, to be honest! Feel free to tweet me your favorite apps that I should install!

Oldest comments (66)

Collapse
 
ben profile image
Ben Halpern

Awesome post! This is a really under-served part of the process.

Collapse
 
acedmynewts profile image
Chanell

Great post. This week was my first time actually using the terminal to install things on my mac

Collapse
 
brittanygrebnova profile image
Brittany

Thank you for your post! As elementary as it seems, where do you access the terminal to install things on a Mac? I also just ordered one myself after only using PC's my whole life. I've read a few of your posts since recently joining Dev.to and they are delightful : )

Collapse
 
rhymes profile image
rhymes • Edited

Hi Brittany, as all the best mensplainers forged by millennia of patriarchy, I insert myself to... give you an explanation Ali could have perfectly given herself:

you can open the default Terminal by going to Applications -> Utilities and in there you'll find the Terminal app.

My preference though is towards iTerm2 which is a better terminal.

This is a rundown that might help to install iTerm or other apps that are not packaged with brew: howtogeek.com/177619/how-to-instal...

Welcome to the Mac world. I'm sure you'll get used to it!

Collapse
 
alephnaught2tog profile image
Max Cerrina

Hi Brittany, as all the best mensplainers forged by millennia of patriarchy, I insert myself to... give you an explanation Ali could have perfectly given herself:

Literal LOL and well played, sir 😁

Thread Thread
 
rhymes profile image
rhymes

:-D

Collapse
 
aspittel profile image
Ali Spittel

haha thanks for answering faster than me! Great explanation!

Collapse
 
aspittel profile image
Ali Spittel

Haha thank you rhymes! Awesome explanation. I also use spotlight search which you can get to with cmd + space. Then you can type in terminal in order to get to it.

Collapse
 
thebouv profile image
Anthony Bouvier

cmd + space is how I launch everything pretty much. And I only started using it this year, though I've used OS X since launch. Love it.

Collapse
 
marcoramires profile image
R A M I R E S

Thanks for the post!

I would highly recommend you using NVM and RVM to manage different versions of Node and Ruby. Postman (getpostman.com/) is always on the top of my list as well.

Collapse
 
ahmadawais profile image
Ahmad Awais ⚡️

Nice article.

I strongly suggest not using brew for Node. I used to use nvm and then n but both had major load time issues with terminal opening up time. Happy with asdf so far.

Collapse
 
aspittel profile image
Ali Spittel

Oh cool -- will look into that. Thanks!

Collapse
 
ahmadawais profile image
Ahmad Awais ⚡️

I am recommending against using nvm as your terminal startup time becomes 4sec slower with that.

Collapse
 
nikoheikkila profile image
Niko Heikkilä

Since you are familiar with rbenv I can recommend also pyenv which is a fork of it. Doesn't really need more introduction. 🔥

pyenv / pyenv

Simple Python version management

Simple Python Version Management: pyenv

Join the chat at https://gitter.im/yyuu/pyenv

Build Status

pyenv lets you easily switch between multiple versions of Python. It's simple, unobtrusive, and follows the UNIX tradition of single-purpose tools that do one thing well.

This project was forked from rbenv and ruby-build, and modified for Python.

Terminal output example

pyenv does...

  • Let you change the global Python version on a per-user basis.
  • Provide support for per-project Python versions.
  • Allow you to override the Python version with an environment variable.
  • Search commands from multiple versions of Python at a time This may be helpful to test across Python versions with tox.

In contrast with pythonbrew and pythonz, pyenv does not...

  • Depend on Python itself. pyenv was made from pure shell scripts There is no bootstrap problem of Python.
  • Need to be loaded into your shell. Instead, pyenv's shim approach works by adding a directory to your $PATH.
  • Manage virtualenv. Of course, you…
Collapse
 
aspittel profile image
Ali Spittel

Oh interesting! I always use virtual environments for my projects, which kind of takes care of this for me. Thank you for sharing!

Collapse
 
onmyway133 profile image
Khoa Pham

Wow, you write a lot. We have many tools in common hackernoon.com/20-recommended-util...

 
ahmadawais profile image
Ahmad Awais ⚡️

Oh, I am dead sure. I have profiled my startup times. You can search for that as well so many people have this issue.

Collapse
 
dotnetcoreblog profile image
Jamie • Edited

Have you ever looked into automating this?

I've built a .NET Core global tool which allows me to install all of the software that I need on a new computer. Once I've installed the .NET Core runtime, I can issue a single command and everything will be installed and set up for me.

The same thing can be done using shell scripts, obviously, but I'm a bit of a .NET Core maniac.

Collapse
 
rhymes profile image
rhymes

I can't argue with automation but is it worth it in this case though?

I have had 3 Macs in 12 years (the last one is at 5/6 years and counting) and I just had to plugin the Time Machine backup disk to have everything ready in a couple of hours from scratch.

Collapse
 
dotnetcoreblog profile image
Jamie

That's a good point for Macs (which also extends to Linux boxes), but for those of us who have to support Windows boxes it's useful to be able to nuke and restore a machine as quickly as possible (without having to use a custom system image).

Collapse
 
equiman profile image
Camilo Martinez

I like .Net Core a lot. Can I see this script?

Collapse
 
dotnetcoreblog profile image
Jamie

It's currently closed source. But essentially it:

  • Uses Nate McMaster's CommandLineUtils as a base
  • Figures out which OS its running on
  • Reads a list of applications from a json file (including any CLI switches for installers)
  • Loops through the applications and installs them

I'll see whether I can produce a limited, open source version over the weekend.

Collapse
 
aspittel profile image
Ali Spittel

The whole set up took around 20 minutes, so I think it might not be time efficient. I did think about writing a shell script, and I may do that. My one issue is that I have switched between Windows/Mac/Linux relatively frequently in my career so I'm not sure if it would be worth writing one.

Definitely a cool idea!

Collapse
 
starbist profile image
Silvestar Bistrović • Edited

Here are my 2 cents:

Happy coding!

Collapse
 
defman profile image
Sergey Kislyakov

I didn't know about code --wait (or code-insiders --wait). Thanks for that! I thought it's not possible to edit git messages in VSCode at all.

Collapse
 
shriharshmishra profile image
Shriharsh

Intersting to see that most of the things were installed via brew. I didn’t know we could use brew for slack or VS Code

Collapse
 
bramus profile image
Bramus! • Edited

To automate this for me (including OS settings and other stuff such as SSH keys) I've created freshinstall:

bramus / freshinstall

So you want to set up a new Mac aye?

###############################################################################################################################################
#                                                                                                                                             #
#   :::::::::: :::::::::  ::::::::::  ::::::::  :::    ::: ::::::::::: ::::    :::  ::::::::  :::::::::::     :::     :::        :::          #
#   :+:        :+:    :+: :+:        :+:    :+: :+:    :+:     :+:     :+:+:   :+: :+:    :+:     :+:       :+: :+:   :+:        :+:          #
#   +:+        +:+    +:+ +:+        +:+        +:+    +:+     +:+     :+:+:+  +:+ +:+            +:+      +:+   +:+  +:+        +:+          #
#   :#::+::#   +#++:++#:  +#++:++#   +#++:++#++ +#++:++#++     +#+     +#+ +:+ +#+ +#++:++#++     +#+     +#++:++#++: +#+        +#+          #
#   +#+        +#+    +#+ +#+               +#+ +#+    +#+     +#+     +#+  +#+#+#        +#+     +#+     +#+     +#+ +#+        +#+          #
#   #+#        #+#    #+# #+#        #+#    #+# #+#    #+#     #+#     #+#   #+#+# #+#    #+#     #+#     #+#     #+# #+#        #+#          #
#   ###        ###    ### ##########  ########  ###    ### ########### ###    ####  ########      ###     ###     ### ########## ##########   #
#                                                                                                                                             #
###############################################################################################################################################

So you want to set up a new Mac aye?

Good, ./freshinstall will help you out with that.

Collapse
 
equiman profile image
Camilo Martinez • Edited

Good, I'll pick some that I don't know.

Maybe my post can help you too.