Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Install Mac

Setup Catalina


  • Displays:
    • Arrangement: uncheck mirror
    • For each monitor: select scaled and more space; use sRGB for color
  • Mouse: uncheck scroll direction natural
  • Dock: shrink size down; minimize using scale effect
  • Spotlight: uncheck everything
  • Internet Accounts: enable Gmail
  • Accessibility:
    • Zoom: check use scroll with modifier, use cmd-key
    • Pointer Control: click trackpad options, check enable dragging, three fingers
  • Bluetooth: show in menu bar
  • Sound: set default alert sound to "Pop", check show volume in menu bar
  • Printers: add printer
  • Keyboard:
    • Keyboard: Touch bar shows Fn keys
    • Keyboard: Customize control strip and add sleep button
    • Text: Uncheck add period with double-space
    • Text: Uncheck smart quotes and use straight ' and "
    • Input sources: Uncheck show input menu in menu bar
  • Date/Time: Clock: check display with seconds; check show date


  • Click on desktop, press Cmd+Shift+A, and drag Applications folder to the left of Downloads
  • Right click on Applications folder in dock and check 'list'
  • Right click on Downloads folder and check 'list'
  • Open a finder window and enter Cmd+Comma (for Preferences)
    • General: new finder windows show home directory
    • Advanced: Keep folders on top: check both checkboxes; select search current folder

Poweruser tweaks

defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode  -bool true # expand save dialog
defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode2 -bool true # expand save dialog
defaults write _FXShowPosixPathInTitle -bool true; killall Finder # show path in finder
defaults write com.googlecode.iterm2 QuickPasteBytesPerCall -int 1024 # slow down iterm2 pasting
defaults write com.googlecode.iterm2 QuickPasteDelayBetweenCalls -float 0.05 # slow down iterm2 pasting
defaults write PMPrintingExpandedStateForPrint2 -bool true # expand Chrome's print dialog

App Store

  • monosnap
  • divvy
    • enable accessibility in settings
    • start at login
    • global shortcut: opt+cmd+down
    • other shortcuts: left, right

Allow sudo without a password

sudo visudo

# insert 'NOPASSWD' in following line:


Set default shell back to bash

sudo chsh -s /bin/bash
chsh -s /bin/bash


sudo scutil --set HostName      ice # Common usage
sudo scutil --set LocalHostName ice # Bonjour
sudo scutil --set ComputerName  ice # Finder, friendly name

Copy bashrc file

curl -L > ~/.bashrc


# copy the Xcode.xip file to the Desktop
# double-click to extract Xcode
# move Xcode to /Applications

# install command-line tools
xcode-select --install

# accept the license
sudo xcodebuild -license accept


ruby -e "$(curl -fsSL"
brew install openssl coreutils ssh-copy-id wget git readline mc tree bash-completion jq htop-osx gpg
# NOTE: to use GNU utils, ensure PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"

Homebrew casks

brew tap homebrew/cask-versions
brew cask install google-chrome
brew cask install dropbox
brew cask install visual-studio-code-insiders
xattr -d "/Applications/Visual Studio Code -"
ln -sf "/Applications/Visual Studio Code -" /usr/local/bin/code
brew cask install github
brew cask install iterm2
brew cask install beyond-compare
brew cask install cleanmymac
brew cask install sketch
brew cask install slack
brew cask install imageoptim

brew cask install virtualbox
brew cask install skyfonts
brew cask install avibrazil-rdm

brew cask install sequel-pro # mysql GUI
brew cask install postico # postgres GUI
brew cask install postman # webdev
brew cask install android-studio
brew cask install java

brew install crystal
brew install golang
brew install python
pip install --upgrade pip

brew install diff-so-fancy # nice git diff helper
brew install nghttp2 # modern version of ab

Install Vim (see

mcd ~/.vim/autoload
curl -LSso ~/.vim/autoload/pathogen.vim

mcd ~/.vim/colors

mcd ~/.vim/bundle
git clone
git clone
git clone


# more complete config
cat <<END >> ~/.vimrc
" vim config

"let g:airline_powerline_fonts=1
"let g:Powerline_symbols='unicode'

set nocompatible                  " Must come first because it changes other options

" Enable pathogen
execute pathogen#infect()

syntax on                         " Use syntax highlighting
"filetype plugin indent on         " Enable plugins

"set backspace=indent,eol,start    " Intuitive backspacing
"set hidden                        " Handle multiple buffers better.

set ruler                         " Show cursor position.
"set number                        " Show line numbers. -> This is handled via Ctrl+N

set incsearch                     " Highlight matches as you type
set hlsearch                      " Highlight matches

set ignorecase                    " Case-insensitive searching
set smartcase                     " But case-sensitive if expression contains a capital letter

set ttyfast                       " Send more characters for redraws

set mouse=a                       " enable mouse in all modes
set ttymouse=xterm2

set laststatus=2                         " always show the status bar
set statusline=[%n]\ %<%.99f\ %h%w%m%r%= " main status, file name, etc.
set statusline+=\ \ %-12(R:%l\ C:%v%)   " position in rows and cols
set statusline+=\ \ %-14(0x%B\ (%b)%)   " character under cursor
set statusline+=\ \ %P                  " percent through file

color benlight

set title                         " Set the terminal's title
set scrolloff=3                   " Show 3 lines of context around the cursor

" need to make sure these are okay to use...
set tabstop=2                     " Global tab width.
set shiftwidth=2                  " And again, related.
set expandtab                     " Use spaces instead of tabs

" set directory=$HOME/.vim/tmp//,.  " Keep swap files in one location

function! LineNoCycle()
  if (&number == 1)
    set nonumber
    set relativenumber
  elseif (&relativenumber == 1)
    set norelativenumber
    set number

nnoremap <C-n> :call LineNoCycle()<cr>

" Press enter to clear last search
nnoremap <cr> :noh<cr><cr>:<backspace>


# enable irb history
cat <<-END > ~/.irbrc
require 'irb/ext/save-history'

if defined? IRB.conf
  IRB.conf[:SAVE_HISTORY] = 500
  IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb_history"

# suppress extra documentation
echo 'gem: --no-document' > ~/.gemrc

# install ruby tools
brew install ruby-install chruby
source /usr/local/opt/chruby/share/chruby/
source /usr/local/opt/chruby/share/chruby/

# install ruby
time ruby-install -c -j$(sysctl -n hw.logicalcpu) ruby-2.6.5 -- --disable-install-doc
echo "2.6" > ~/.ruby-version
exec bash
chruby 2.6.5; gem update --system && gem update --default && gem update; echo $ver > ~/.ruby-version

# gem update --default

# optional `chruby-auto` script (chmod to 755)
#!/usr/bin/env bash

source "${0%/*}/../share/chruby/"
source "${0%/*}/../share/chruby/"

ruby "$@"


git clone
cd flutter # add this directory/bin to PATH
flutter version 1.9.1+hotfix.5
sudo gem install cocoapods
flutter doctor


sudo install -d -m 775 /usr/local/n
sudo chown -R $(whoami) $(brew --prefix)/*
brew install n
n latest

# NOTE: Next line shouldn't be needed after the above 'sudo install -d -m 755 /usr/local/n'
# sudo chown -R $(whoami) /usr/local/lib/node_modules/


brew install mysql
mysql.server start
mysqldump -u root -t mysql user -w"user='root'" | grep '^INSERT ' | sed "s/root/`whoami`/" | mysql -u root mysql # clone root
mysqladmin -u root reload

# might be needed
mysql mysql -u root -p -e "insert into user values ('localhost','$(whoami)','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'mysql_native_password','','N','2019-06-26 16:12:05',NULL,'N','Y','Y',NULL,NULL,NULL,NULL); flush privileges;"

# load time zones
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql

# needed for MySQL dev libs
gem install mysql2 -- --with-cflags=\"-I/usr/local/opt/openssl/include\" --with-ldflags=\"-L/usr/local/opt/openssl/lib\"



shreeve@ice ~> brew list

adns			ghostscript		libev			llvm@6			pv
autoconf		git			libevent		llvm@8			python
automake		glib			libffi			lua@5.1			python@2
aws-elasticbeanstalk	gmp			libgcrypt		mackup			readline
awscli			gnu-sed			libgpg-error		midnight-commander	rename
bash-completion		gnupg			libheif			mongodb@3.6		ruby-build
bdw-gc			gnutls			libidn2			mpfr			s-lang
bfg			go			libimobiledevice	msgpack			shared-mime-info
bison			gradle			libksba			mysql			sqlite
c-ares			graphicsmagick		libmaxminddb		ncurses			ssh-copy-id
ccache			grep			libmpc			nettle			swig
chruby			hexyl			libomp			nghttp2			telnet
cmake			htop			libplist		nmap			tig
cocoapods		icu4c			libpng			node			tmate
coreutils		ideviceinstaller	libsmi			npth			tmux
crystal			ilmbase			libssh			oniguruma		tree
crystal-icr		imagemagick		libssh2			openexr			unbound
csvkit			ios-deploy		libtasn1		openjpeg		usbmuxd
diff-so-fancy		isl			libtiff			openssl			watch
dnsmasq			jansson			libtool			openssl@1.1		webp
expect			jasper			libunistring		p11-kit			wemux
fcgi			jemalloc		libusb			p7zip			wget
fish			jpeg			libxml2			pcre			x265
freetype		jq			libyaml			pcre2			xsv
fswatch			lazygit			libzip			pinentry		xz
gdbm			libassuan		little-cms2		pkg-config		yarn
gettext			libde265		llvm			postgresql

shreeve@ice ~> brew cask list


Backing up a drive

rsync -av --exclude='*/node_modules/*' /Users/shreeve/Data/Work/Code /Volumes/General/Snapshots/Steve/20191011/shreeve/Data/Work/Code
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.