Published on 30 Sep 2017
Yesterday I replaced my old Macbook Pro with a new one. I got the new Retina MBP with the TouchBar, which meant that I have to take a bit of a risk, because the new TouchBar and the new keyboard were a bit of an unknown for me.
Why did I replace it? It seems that at my current workplace I will be able to use my own notebook due to an introduction of a BYOD (Bring Your Own Device) policy and my old one just doesn’t have the capability to run the environment I need to run there. I am working on reducing those requirements to a level where an 8GB notebook is enough, but it is probably still some months away. Also, the thing is 4 years old! Actually, I am very happy about that, and I do hope that this one will repeat that experience. I do hope that I’ll have 4 or 5 good years with this.
But anyhow, not it sits on my desk (and I am writing this post on it), and I wanted to share the setup process I am using to configure my primary development environment, so here it is.
My first impressions on the new machine is that it is a very nice machine. There are some differences compared to what I am used to, but after a few hours it seems totally OK. I was worried about the keyboard, but after using it form a few hours, my worries are gone. About the TouchBar … eh, it needs some getting used to. I have no big trouble hitting the esc keys, but it’s not as firm as I’d want to. I kinda miss the feedback for hitting it right now. We’ll see how it works out in the end.
After the initial configuration (you know: iCloud, Touch ID, disc encryption, etc), and the update to High Sierra, I started to set up this as my primary develoment machine. Which means that I need a couple of things:
When I set up a new computer I always start with a new SSH key. I use mine to log in to Github and Gitlab, but I do not use PGP, so this method is suitable for me for now. Generating one is as simple as:
ssh-keygen -t rsa -b 4096 -C "email@example.com"
Afterwards I just update these keys on the respective sites and I am good to go.
I still need to automate some things, but it’s getting better. I still have to manually download iTerm2, and configure git with:
so that XCode doesn’t get in my way anymore. But afterwards I can just use my dotfiles repository with the following command:
git clone --recursive firstname.lastname@example.org:sandor-nemeth/dotfiles.git
--recursive part is important because that checks out all submodules
which I have in the repository, therefore I get
tpm (tmux plugin manager) right away. Afterwards I just need to link a few
files to the home directory:
ln -s ~/dotfiles/zsh ~/.oh-my-zsh ln -s ~/dotfiles/.zshrc ~/.zshrc ln -s ~/dotfiles/zsh-theme/gitster.zsh-theme ~/dotfiles/zsh/themes/ ln -s ~/dotfiles/.tmux.conf ~/.tmux.conf ln -s ~/dotfiles/tmux ~/.tmux ln -s ~/dotfiles/vim ~/.vim ln -s ~/dotfiles/.vimrc ~/.vimrc
and my command line is all set up.
Next step is to set up the applications I’ll need. For this I normally use homebrew, so first I install that:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
And then there is something I didn’t know before, but I added it now:
I can write a file called
Brewfile residing in my home directory, and there
I can define all the things I want to have installed from brew, which is pretty
neat. Here is how my Brewfile looks like at the moment:
tap 'caskroom/cask' tap 'caskroom/fonts' tap 'homebrew/php' brew 'zsh' brew 'zsh-completions' brew 'tmux' brew 'git' brew 'npm' brew 'php71' cask 'java' brew 'maven' brew 'gradle' cask 'google-chrome' cask 'spotify' cask 'slack' cask 'docker' cask 'vlc' cask 'alfred' cask 'font-fira-code' cask 'font-source-code-pro' cask 'font-hack' cask 'visual-studio-code' cask 'jetbrains-toolbox'
This is pretty neat. With this file I practically installed everything I want to have, without any further configuration. It may be that later a few things will be added to the file, but initially this is a good start.
And with this, the setup is practically completed! All I need now is to style the environments how I like them, and that’s it. But that is for another post.