My Dev setup on Mac
I’ve been asked a couple of times about my dev environment: what apps I’m currently using, and how I do use them. I’m going to try and sum it all up, going from terminal to text editor of choice and some of the plugins I have on them.
Text editor
Sublime Text 2 may be downloaded and evaluated for free, however a license must be purchased for continued use. There is currently no enforced time limit for the evaluation.
I haven’t updated to Sublime Text 3 yet. Actually, I still don’t see the point of upgrading.
Packages:
- BracketHighlighter Bracket and tag highlighter for Sublime Text
- Codeigniter Snippets A list of codeigniter snippets for Sublime Text 2
- DocBlockr DocBlock comments in Javascript, PHP, CoffeeScript, Actionscript, C & C++
- Emmet (ex-Zen Coding) for Sublime Text
- Git Plugin for some git integration into sublime text
- GitGutter A Sublime Text 2/3 plugin to see git diff in gutter
- SideBarEnhancements Enhancements to Sublime Text sidebar. Files and folders.
- Theme - Nexus Dark custom UI theme for Sublime Text 2 Theme
- Tomorrow Color Schemes Tomorrow Color Schemes for SublimeText 2
Settings:
{
"auto_complete_commit_on_tab": false,
"bold_folder_labels": true,
"caret_style": "smooth",
"color_scheme": "Packages/Tomorrow Color Schemes/Tomorrow-Night.tmTheme",
"detect_indentation": false,
"draw_white_space": "all",
"fallback_encoding": "UTF-8",
"file_exclude_patterns":
[
"*.pyc",
"*.pyo",
"*.exe",
"*.dll",
"*.obj",
"*.o",
"*.a",
"*.lib",
"*.so",
"*.dylib",
"*.ncb",
"*.sdf",
"*.suo",
"*.pdb",
"*.idb",
".DS_Store",
"*.class",
"*.psd",
"*.db"
],
"folder_exclude_patterns":
[
".svn",
".git",
".hg",
"CVS",
".hgcheck"
],
"font_face": "Inconsolata",
"font_options":
[
"no_bold",
"subpixel_antialias"
],
"font_size": 13.0,
"highlight_line": true,
"highlight_modified_tabs": true,
"ignored_packages":
[
"Vintage"
],
"line_padding_bottom": 3,
"line_padding_top": 3,
"match_brackets": true,
"match_brackets_angle": true,
"match_brackets_braces": true,
"match_brackets_content": true,
"match_brackets_square": true,
"rulers":
[
95
],
"scroll_past_end": true,
"show_full_path": true,
"tab_size": 4,
"theme": "Nexus.sublime-theme",
"translate_tabs_to_spaces": true,
"trim_trailing_white_space_on_save": true,
"vintage_start_in_command_mode": true,
"word_wrap": true
}
Version Control
For version control I use Git. Along with that I normally use one git-GUI called SourceTree.
SourceTree is a free Git & Mercurial client for Windows or Mac. I specially like this one because it has Git-Flow already out of the box.
Along with this I also use those two packages for Sublime. Specially when I want to do something quick like a diff or change branches. That way, I don’t need to go into my Terminal or SourceTree so often.
Terminal
ZSH is a must have. And if you want to use it like me you’ll need the oh-my-zsh awesome sauce.
oh-my-zsh is an open source, community-driven framework for managing your ZSH configuration. It comes bundled with a ton of helpful functions, helpers, plugins, themes, and few things that make you shout…
Here’s my ZSH config:
# Path to your oh-my-zsh configuration.
ZSH=$HOME/.oh-my-zsh
#Set name of the theme to load.
# Look in ~/.oh-my-zsh/themes/
# Optionally, if you set this to "random", it'll load a random theme each
# time that oh-my-zsh is loaded.
ZSH_THEME="miloshadzic"
# Aliases
alias zshconfig="st ~/.zshrc"
alias ohmyzsh="st ~/.oh-my-zsh"
alias vhosts="sudo nano /etc/apache2/extra/httpd-vhosts.conf"
alias st='/Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl'
alias ll="ls -lG"
alias la="ls -AG"
alias l="ls -FG"
alias ls="ls -G"
alias restarta="sudo apachectl restart"
alias update-php="sudo curl -s http://php-osx.liip.ch/install.sh | bash -s 5.4"
alias ctags="`brew --prefix`/bin/ctags"
alias ctagsbuild="ctags -R -f .tags"
# Set to this to use case-sensitive completion
# CASE_SENSITIVE="true"
# Comment this out to disable weekly auto-update checks
# DISABLE_AUTO_UPDATE="true"
# Uncomment following line if you want to disable colors in ls
# DISABLE_LS_COLORS="true"
# Uncomment following line if you want to disable autosetting terminal title.
# DISABLE_AUTO_TITLE="true"
# Uncomment following line if you want red dots to be displayed while waiting for completion
# COMPLETION_WAITING_DOTS="true"
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
plugins=(git github git-flow brew django node perl rails rails3 mercurial)
source $ZSH/oh-my-zsh.sh
unsetopt correct_all
# Customize to your needs...
export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin
PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
Markdown
I write all my blog posts in Markdown. I could do it right on my blog, but I do most of my writing when I don’t have a connection. So I need a Markdown app. Mou app is my favourite. One of the best features is that I can include my blog css and see exactly how my post is going to be like while I write it.
PHP Environment
Most developers using PHP probably use MAMP, personally I don’t like it. I use a simple binary package where you can install or update your php with just one terminal command using curl.
curl -s http://php-osx.liip.ch/install.sh | bash -s 5.4
Database management
Most of my projects are using mySQL. Installing mySQL is quite easy, but the best free tool for database management is probably Sequel Pro.
Office Apps
These days I actually use the bundle from Apple, since it’s free and it’s a good alternative to the expensive Microsoft one.
Browsers
Email Client
Sparrow has been acquired by Google, hence the development stopped. However, this is still my favourite email client.
Cloud Storage
Calendar
For calendar I use the calendar app for mac, synced with my Google account, since I use Android there’s no need for the iCloud stuff here.
Package manager
Homebrew is the missing package manager for OS X, specially if like me, you had bad experiences with MacPorts.
Social apps
We all need to socialize every now and again. For that I use the following.
Let me know what alternatives you are using besides the ones I listed.