My personal mid 2014 MacBook Pro has served me well. I have had countless hours of internet surfing, playing music, editing photos, coding java/ go/ python, running kubernetes, doing taxes, managing vacation plans and other home projects.

Professionally, I have a relatively more recent 2019 Intel MacBook Pro. However, I still like my older and personal laptop. I do not like the new touchbar nor the new butterfly keyboard. Going from MagSafe charger to USB-C also seemed like a step in the wrong direction.

When the new M1 MacBook Pro launched, I landed in the sweet spot of an intersecting need and a good product being available. The new M1 Pro laptops undid a lot of my complaints: the MagSafe charger made a comeback, the keyboard didn’t suck, the useless touchbar went away, and ports like HDMI and SD card slot were added back as well!

In addition, I kept on reading reviews on just how performant and energy efficient the new M1 ARM chips were, specifically the part where the new MacBook Pros could last for hours without charging. I just had to have it!

My home set up is relatively simple:

  • Each person in the family has their own MacBook Pro
  • We own a couple of iPads, but really use them only on vacations
  • There is a shared raspberry pi 4 server, and has 8 TB disks attached for backups and source code management (git)

As I’ve matured as a software engineer, like many others I’ve gravitated towards configuration management. I wrote a small setup.sh script, which I run and maintain at all times for software configuration. It is not as fancy as using nix, but still pragmatic enough for a software engineer to feel in control.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# package managing all software on my machine

# start off by installing xcode
which git > /dev/null || xcode-select --install

# install homebrew
which brew > /dev/null || /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# mac customizations
# quicklook plugins
brew install --cask qlcolorcode qlstephen

# browsers
brew install --cask google-chrome firefox

# terminals, ides
brew install --cask iterm2

brew tap homebrew/cask-fonts
brew install --cask font-iosevka

brew install tree

brew tap railwaycat/emacsmacport
brew install --cask emacs-mac

brew install go

if [ ! -d $HOME/.config/oh-my-zsh ]; then
  ZSH=$HOME/.config/oh-my-zsh sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
fi

# colorize program text files using ccat
brew install chroma

brew install pass

# ssh key management
# ------------------
# [generate new key for new machine]
# $ ssh-keygen -t rsa
# [copy over the public key to ssh server authorizedkeys]

Brew install pyenv
brew install pyenv-virtualenv

# python & kasa setup
# -------------------
# $ pyenv install 3.10.5
# $ pyenv virtualenv 3.10.5 kasa-plug
# $ kasa discover

brew install yt-dlp/taps/yt-dlp

brew tap homebrew-ffmpeg/ffmpeg

brew install homebrew-ffmpeg/ffmpeg/ffmpeg --with-fdk-aac

brew install pwgen

brew install cmake

brew install hugo