2018 update: I keep an updated list of all the things I use (including programming tools) in my list of things.
I've been on Macs since I was 10 years old. I love them obsessively, but my needs for Mac OS X as a developer are more than the operating system comes with by default.
Over the years I've added layers and layers of tweaks and customizations to make my MacBook a coding and productivity powerhouse. Here's a list of the things I can no longer live without.
Applications #
- Chrome: most of my work is in web development. Chrome is the best browser, and it's lovely syncing all of my user settings and history across all of my computers and devices.
- iTerm2: a better terminal for your Mac. I set up a system wide hotkey,
⌘ + ~
, to get a terminal to cover the left half of my screen at any time. You can set this iniTerm / Preferences / Keys
underHotkey
: You can adjust the appearance of this window underAppearance / Hotkey Window
: - Sublime Text 2: the best text editor for any language. Be sure to enable Vintage Mode to enable vim keybindings, learn how to use multiple cursors, install Package Control (and learn how to install packages, like language packs for syntax highlighting), and install a nice theme and font (I like soda and Anonymous Pro).
- jitouch: customize trackpad gestures. Here's the configuration I use: And my iTerm and Sublime specific tweaks:
- Typinator: text expand shortcuts. Example: if I type "mye" it expands to my email address, "myph" my full phone number, "mladt" an MLA formatted date for today (like 2 April 2014), "dt" for a sortable date for naming files (like 2014-04-02), "edt" for a unix timestamp (like 1396416206), and "lod" for
ಠ_ಠ
. - f.lux: adjusts your screen brightness at night so it's easier on the eyes.
- Backblaze: cheap full hard drive cloud backup service. Use with Time Machine for double safety.
- Alfred: scriptable application launcher and system shortcut... thing. This can quadrouple your productivity on a mac.
- Fantastical: a calendar that understands natural language a system keyboard shortcut away (I use
ctrl + space
).
Command Line Tools #
- brew:
apt-get
for mac. - zsh: better than bash. Command autocompletion, color-coding, and a more customizable command prompt.
- pry: if you use Ruby (which you should - it's great), it's a better
irb
. Stickbinding.pry
anywhere in your code to go into an interactive REPL.
ZSH/bash shortcuts #
Here's a list of my handy git aliases:
export GIT_EDITOR="vim"
alias gs='git status '
alias ga='git add '
alias gap='git add -p' # patch mode
alias gb='git branch '
alias gc='git commit'
alias gd='git diff'
# alias go='git checkout ' # need this for "go" compiles
alias gh='git hist'
alias gha='git hist --all'
alias gp='git pull'
alias gpgp='git pull && git push'
And a fantastic system for marking and jumping to specific folders:
export MARKPATH=$HOME/.marks
function jump {
cd -P $MARKPATH/$1 2>/dev/null || echo "No such mark: $1"
}
function mark {
mkdir -p $MARKPATH; ln -s $(pwd) $MARKPATH/$1
}
function unmark {
rm -i $MARKPATH/$1
}
function marks {
\ls -l $MARKPATH | tail -n +2 | sed 's/ / /g' | cut -d' ' -f9- | awk -F ' -> ' '{printf "%-10s -> %s\n", $1, $2}'
}
alias j="jump"
alias m="mark"
For example, I marked my project directory for Textbooks Please with:
cd LONG/DIRECTORY/THAT/TAKES/A/LONG/TIME/TO/TYPE/textbooksplease
m tbp
And now I can jump to that directory from anywhere with:
j tbp
System Tweaks #
- Enable hot corners in
System Preferences / Mission Control / Hot Corners
. I like top right for mission control, bottom right for desktop, top left for screensaver, and bottom left for application windows. - Enable tap to click in
System Preferences / Trackpad / Point & Click
. - KeyRemap4MacBook: use it to remap caps lock - the most useless key in prime real estate - to
ctrl
when held andesc
when pressed. Just checkControl L to Control L (+ When you type Control L only, send Escape
in system preferences after installing. Edit: this functionality was moved to PCKeyboardHack (thanks @Splendor!). XCode / preferences / Downloads and install Command Line Tools
to install missing build tools.- faster expose and mission control animations:
defaults write com.apple.dock expose-animation-duration -float 0.1 && killall Dock
I hope this helps to make you as productive as possible on your Mac!
If you're more command line inclined, I recommend this 2012 article about using tmux, vim, and zsh together.
If you enjoyed this list, check out this [similar compilation of developer tools by hacker Samy Kamkar(http://samy.pl/tools). Samy's website also has some neat stuff.