diff --git a/.aliases b/.aliases
new file mode 100644
index 0000000..b89b042
--- /dev/null
+++ b/.aliases
@@ -0,0 +1,55 @@
+# Aliases ######################################################################
+
+# List
+alias ll='ls -lahpF' # Ubuntu & Mac compatible
+
+# Reload the shell (i.e. invoke as a login shell)
+alias reload="exec $SHELL -l"
+
+# Network
+alias ip="dig +short myip.opendns.com @resolver1.opendns.com"
+alias flush="dscacheutil -flushcache" # Flush Directory Service cache
+
+# Git
+alias cola='(~/git-cola/bin/git-cola &)'
+alias dag='(~/git-cola/bin/git-dag &)'
+
+# Vim
+alias gvim="gvim 2>/dev/null"
+
+# Temp Dir
+alias tmp="cd `mktemp -d 2>/dev/null || mktemp -d -t 'mytmpdir'`"
+alias tmpf="vim `mktemp 2>/dev/null || mktemp -t 'mytmpfile'`"
+
+# Tmux
+alias ta="tmux attach-session -t"
+alias tc="tmux new-session -s"
+alias tl="tmux list-sessions"
+
+# Screen
+alias sc="screen -S" # Create
+alias sl="screen -ls" # List
+alias sr="screen -r" # Resume
+
+# DOCKER #######################################################################
+
+# Aliases
+alias dl='docker ps -lq'
+alias dlc='docker ps -a'
+alias dli='docker images -a'
+
+# Kill all running containers.
+alias docker_killall='docker kill $(docker ps -q)'
+
+# Delete all stopped containers.
+alias docker_cleanc='printf "\n>>> Deleting stopped containers\n\n" && docker rm $(docker ps --no-trunc -aq)'
+
+# Delete all untagged images.
+alias docker_cleani='printf "\n>>> Deleting untagged images\n\n" && docker images -q --filter "dangling=true" | xargs docker rmi'
+
+# Delete all stopped containers and untagged images.
+alias docker_clean='docker_cleanc || true && docker_cleani'
+
+################################################################################
+
+# vim: ft=sh
\ No newline at end of file
diff --git a/.aprc b/.aprc
new file mode 100644
index 0000000..7b8be5d
--- /dev/null
+++ b/.aprc
@@ -0,0 +1,7 @@
+AwesomePrint.defaults = {
+ :indent => -2,
+ :color => {
+ :hash => :pale,
+ :class => :white
+ }
+}
diff --git a/.bash_completion b/.bash_completion
new file mode 100644
index 0000000..8f83419
--- /dev/null
+++ b/.bash_completion
@@ -0,0 +1,6 @@
+# Bash Auto Complete ##########################################################
+
+# Add tab completion for SSH hostnames based on ~/.ssh/config, ignoring wildcards
+[ -e "$HOME/.ssh/config" ] && complete -o "default" -o "nospace" -W "$(grep "^Host" ~/.ssh/config | grep -v "[?*]" | cut -d " " -f2- | tr ' ' '\n')" scp sftp ssh;
+
+# vim: ft=sh
diff --git a/.bash_profile b/.bash_profile
new file mode 100644
index 0000000..63d0592
--- /dev/null
+++ b/.bash_profile
@@ -0,0 +1,13 @@
+# Load environment variables
+[[ -s $HOME/.vlad ]] && source $HOME/.vlad
+
+# System functions and aliases
+[[ -s $HOME/.functions ]] && source $HOME/.functions
+[[ -s $HOME/.aliases ]] && source $HOME/.aliases
+[[ -s $HOME/.osx ]] && source $HOME/.osx
+
+# Load bash
+[[ -s $HOME/.profile ]] && source $HOME/.profile
+[[ -s $HOME/.bashrc ]] && source $HOME/.bashrc
+
+# vim: ft=sh
diff --git a/.bashrc b/.bashrc
new file mode 100644
index 0000000..88e878d
--- /dev/null
+++ b/.bashrc
@@ -0,0 +1,104 @@
+# ~/.bashrc: executed by bash(1) for non-login shells.
+# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
+# for examples
+
+# If not running interactively, don't do anything
+case $- in
+ *i*) ;;
+ *) return;;
+esac
+
+# don't put duplicate lines or lines starting with space in the history.
+# See bash(1) for more options
+HISTCONTROL=ignoreboth
+
+# append to the history file, don't overwrite it
+shopt -s histappend
+
+# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
+HISTSIZE=1000
+HISTFILESIZE=2000
+HISTIGNORE="ls:cd:cd -:pwd:exit:date:* --help";
+
+# Prefer US English and use UTF-8
+export LANG="en_US.UTF-8";
+export LC_ALL="en_US.UTF-8";
+
+# Don’t clear the screen after quitting a manual page
+export MANPAGER="less -X";
+
+# check the window size after each command and, if necessary,
+# update the values of LINES and COLUMNS.
+shopt -s checkwinsize
+
+# Case-insensitive globbing (used in pathname expansion)
+shopt -s nocaseglob;
+
+# Autocorrect typos in path names when using `cd`
+shopt -s cdspell;
+
+# make less more friendly for non-text input files, see lesspipe(1)
+[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
+
+# Highlight section titles in manual pages
+export LESS_TERMCAP_md="${yellow}";
+
+# set a fancy prompt (non-color, unless we know we "want" color)
+case "$TERM" in
+ xterm) [ "$COLORTERM" == "gnome-terminal" ] && color_prompt=yes;; # Ubuntu
+ xterm-256color) color_prompt=yes;;
+esac
+
+# check for color support
+if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
+ color_prompt=yes
+else
+ color_prompt=no
+fi
+
+if [ "$color_prompt" = yes ]; then
+ PS1="\[$(tput bold)$(tput setaf 2)\]\u\[$(tput setaf 7)\]@\[$(tput setaf 4)\]\h:\[$(tput setaf 6)\]\w $ \[$(tput sgr0)\]"
+else
+ PS1='\u@\h:\w\$ '
+fi
+unset color_prompt
+
+# enable color support of ls and also add handy aliases
+export CLICOLOR=1
+export LSCOLORS=GxFxCxDxBxegedabagaced
+if [ -x /usr/bin/dircolors ]; then
+ test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
+ alias ls='ls --color=auto'
+ alias grep='grep --color=auto'
+ alias fgrep='fgrep --color=auto'
+ alias egrep='egrep --color=auto'
+fi
+
+# colored GCC warnings and errors
+export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
+
+# Grep colors
+export GREP_OPTIONS='--color=auto'
+
+# Alias definitions.
+if [ -f ~/.bash_aliases ]; then
+ . ~/.bash_aliases
+fi
+
+# Add tab completion for many Bash commands
+if which brew > /dev/null && [ -f "$(brew --prefix)/etc/bash_completion" ]; then
+ source "$(brew --prefix)/etc/bash_completion";
+elif [ -f /etc/bash_completion ]; then
+ source /etc/bash_completion;
+fi
+
+# GNU Core utilities
+if which brew > /dev/null && [ -d "$(brew --prefix coreutils)/libexec/gnubin" ]; then
+ export PATH="$PATH:$(brew --prefix coreutils)/libexec/gnubin"
+ export MANPATH="$MANPATH:$(brew --prefix coreutils)/libexec/gnubin"
+fi
+
+# RVM
+[[ -s "${HOME}/.rvm/scripts/rvm" ]] && source "${HOME}/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
+[[ -r $rvm_path/scripts/completion ]] && . $rvm_path/scripts/completion
+export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting (needs to be last)
diff --git a/.functions b/.functions
new file mode 100644
index 0000000..774501b
--- /dev/null
+++ b/.functions
@@ -0,0 +1,98 @@
+### Functions #################################################################
+
+## Logging stuff.
+function e_header() { echo -e "\n\033[1m$@\033[0m"; }
+function e_ok() { echo -e " \033[1;32m✔\033[0m $@"; }
+function e_error() { echo -e " \033[1;31m✖\033[0m $@"; }
+function e_warn() { echo -e " \033[1;33m $@\033[0m"; }
+function e_arrow() { echo -e " \033[0;34m➜\033[0m $@"; }
+function e_footer() { echo -e "\n\033[1m$@\033[0m\n"; }
+
+# $1 => error message, $2 => exit code
+function e_abort() { e_error $1; exit $2; }
+
+## OS detection
+is_osx() { [[ $(uname) == Darwin ]] || return 1; }
+is_linux() { [[ $(uname) == Linux ]] || return 1; }
+is_ubuntu() { [[ "$(cat /etc/issue 2> /dev/null)" =~ Ubuntu ]] || return 1; }
+
+# Start an HTTP server from a directory, optionally specifying the port
+server() {
+ local port="${1:-8000}";
+ sleep 1 && open "http://localhost:${port}/" &
+ # Set the default Content-Type to `text/plain` instead of `application/octet-stream`
+ # And serve everything as UTF-8 (although not technically correct, this doesn’t break anything for binary files)
+ python -c $'import SimpleHTTPServer;\nmap = SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map;\nmap[""] = "text/plain";\nfor key, value in map.items():\n\tmap[key] = value + ";charset=UTF-8";\nSimpleHTTPServer.test();' "$port";
+}
+
+#Extract most know archives with one command
+extract () {
+ if [ -f $1 ] ; then
+ case $1 in
+ *.tar.bz2) tar xjf $1 ;;
+ *.tar.gz) tar xzf $1 ;;
+ *.bz2) bunzip2 $1 ;;
+ *.rar) unrar e $1 ;;
+ *.gz) gunzip $1 ;;
+ *.tar) tar xf $1 ;;
+ *.tbz2) tar xjf $1 ;;
+ *.tgz) tar xzf $1 ;;
+ *.zip) unzip $1 ;;
+ *.Z) uncompress $1 ;;
+ *.7z) 7z x $1 ;;
+ *) echo "'$1' cannot be extracted via extract()" ;;
+ esac
+ else
+ echo "'$1' is not a valid file"
+ fi
+}
+
+# Make a directory and jump directly into it
+mkd() { mkdir -p "$1" && cd "$1" ;}
+
+## VMware
+vmware_install() {
+ (
+ cd `mktemp -d`
+ sudo apt-get --quiet --yes install build-essential linux-headers-$(uname -r)
+ tar zxvf /media/$(whoami)/"VMware Tools"/VMwareTools-*.tar.gz
+ sudo ./vmware-tools-distrib/vmware-install.pl -d
+ )
+}
+vmware_refresh() { sudo vmware-config-tools.pl -d ;}
+
+# DOTFILES
+# Create links for dotfiles
+link_dotfiles(){
+ [[ -n $@ ]] || return 1
+
+ e_header 'Symlinks'
+ bakdir="$HOME/dotfiles.bak/$(date "+%Y_%m_%d-%H_%M_%S")"
+ mkdir -p $bakdir && e_ok "Backups will be saved in '$bakdir'\n"
+
+ (
+ cd $HOME
+ for dotfile in $@; do
+ dot=$(basename $dotfile)
+ old=${HOME}/${dot}
+
+ if [[ -s $old ]]; then # IF old file exists
+ if [[ -L $old ]]; then # Replace if old file is a symlink
+ rm $old && \
+ ln -sfn $dotfile $old && \
+ e_ok "Replaced link for $old to $dotfile"
+ else # Backup old file if it's not a symlink
+ mv $old $bakdir && \
+ e_ok "$old saved at $bakdir"
+ ln -s $dotfile $old && \
+ e_ok "Linked $old to $dotfile"
+ fi
+ else # Create symlink if the oldfile doesn't exist
+ ln -sfn $dotfile $old && \
+ e_ok "Linked $old to $dotfile"
+ fi
+ done
+ )
+}
+
+# vim: ft=sh
diff --git a/.gemrc b/.gemrc
new file mode 100644
index 0000000..ef73538
--- /dev/null
+++ b/.gemrc
@@ -0,0 +1,2 @@
+gem: --no-ri --no-rdoc
+
diff --git a/.gitconfig b/.gitconfig
new file mode 100644
index 0000000..c02f3bf
--- /dev/null
+++ b/.gitconfig
@@ -0,0 +1,35 @@
+[alias]
+ st = !git fetch && git status
+ co = checkout
+ ci = commit
+ br = branch
+ mg = merge --no-ff
+ lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative --all --decorate
+ smup = !"git fetch && git pull origin master && git submodule foreach --recursive git fetch && git submodule foreach --recursive git pull origin master && git commit -a -m 'Submodule updates' && git push"
+ cm = !"git add -A; git ls-files --deleted -z | xargs -0 rm -f; git commit -v"
+ cmm = !"git add -A; git ls-files --deleted -z | xargs -0 rm -f; git commit -m"
+ wip = !"git add -A; git ls-files --deleted -z | xargs -0 rm -f; git commit -m \"WIP\""
+ unwip = !"git log -n 1 | grep -q -c WIP && git reset HEAD~1"
+
+[core]
+ autocrlf = false
+ excludesfile = ~/.gitignore.global
+
+[color]
+ ui = auto
+ diff = auto
+ status = auto
+ branch = auto
+ interactive = auto
+ grep = auto
+
+[push]
+ default = tracking
+
+[include]
+ path = ~/.gitconfig.private
+
+[filter "media"]
+ required = true
+ clean = git media clean %f
+ smudge = git media smudge %f
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..c2dea5b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,30 @@
+# Private
+.vlad
+.ssh
+.keys
+.gem
+.dockercfg
+.gitconfig.private
+
+# Ignore any file with '.local' in the name
+*.local*
+
+# Folder view configuration files
+.DS_Store
+Desktop.ini
+
+# Thumbnail cache files
+._*
+Thumbs.db
+
+# Files that might appear on external disks
+.Spotlight-V100
+.Trashes
+
+# Vim
+[._]*.s[a-w][a-z]
+[._]s[a-w][a-z]
+*.un~
+Session.vim
+.netrwhist
+*~
diff --git a/.gitignore.global b/.gitignore.global
new file mode 100644
index 0000000..2e5579a
--- /dev/null
+++ b/.gitignore.global
@@ -0,0 +1,17 @@
+syntax: glob
+.#*
+[#]*#
+*~
+.*.sw?
+.sw?
+Session.vim
+tags
+.DS_Store
+.DS_Store?
+._*
+.Spotlight-V100
+.Trashes
+ehthumbs.db
+Thumbs.db
+.AppleDouble
+scratch.*
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..e6d3b18
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,66 @@
+[submodule ".vim/bundle/nerdtree"]
+ path = .vim/bundle/nerdtree
+ url = git@github.com:scrooloose/nerdtree.git
+[submodule ".vim/bundle/supertab"]
+ path = .vim/bundle/supertab
+ url = git@github.com:ervandew/supertab.git
+[submodule ".vim/bundle/vim-fugitive"]
+ path = .vim/bundle/vim-fugitive
+ url = git@github.com:tpope/vim-fugitive.git
+[submodule ".vim/bundle/vim-nerdtree-tabs"]
+ path = .vim/bundle/vim-nerdtree-tabs
+ url = git@github.com:jistr/vim-nerdtree-tabs.git
+[submodule ".vim/bundle/vim-rails"]
+ path = .vim/bundle/vim-rails
+ url = git@github.com:tpope/vim-rails.git
+[submodule ".vim/bundle/vim-ruby"]
+ path = .vim/bundle/vim-ruby
+ url = git@github.com:vim-ruby/vim-ruby.git
+[submodule ".vim/bundle/vim-template"]
+ path = .vim/bundle/vim-template
+ url = git@github.com:thinca/vim-template.git
+[submodule ".vim/bundle/delimitMate"]
+ path = .vim/bundle/delimitMate
+ url = git@github.com:Raimondi/delimitMate.git
+[submodule ".vim/bundle/nerdcommenter"]
+ path = .vim/bundle/nerdcommenter
+ url = git@github.com:scrooloose/nerdcommenter.git
+[submodule ".vim/bundle/tabular"]
+ path = .vim/bundle/tabular
+ url = git@github.com:godlygeek/tabular.git
+[submodule ".vim/bundle/vim-statline"]
+ path = .vim/bundle/vim-statline
+ url = git@github.com:millermedeiros/vim-statline.git
+[submodule ".vim/bundle/syntastic"]
+ path = .vim/bundle/syntastic
+ url = git@github.com:scrooloose/syntastic.git
+[submodule ".vim/bundle/vim-puppet"]
+ path = .vim/bundle/vim-puppet
+ url = git@github.com:rodjek/vim-puppet.git
+[submodule ".vim/bundle/vim-surround"]
+ path = .vim/bundle/vim-surround
+ url = git@github.com:tpope/vim-surround.git
+[submodule ".vim/bundle/vim-repeat"]
+ path = .vim/bundle/vim-repeat
+ url = git@github.com:tpope/vim-repeat.git
+[submodule ".vim/bundle/vim-colors-solarized"]
+ path = .vim/bundle/vim-colors-solarized
+ url = git@github.com:altercation/vim-colors-solarized.git
+[submodule ".vim/bundle/ultisnips"]
+ path = .vim/bundle/ultisnips
+ url = git@github.com:SirVer/ultisnips.git
+[submodule ".vim/bundle/vim-rvm"]
+ path = .vim/bundle/vim-rvm
+ url = git@github.com:tpope/vim-rvm.git
+[submodule ".vim/bundle/vim-snippets"]
+ path = .vim/bundle/vim-snippets
+ url = git@github.com:honza/vim-snippets.git
+[submodule ".vim/bundle/molokai"]
+ path = .vim/bundle/molokai
+ url = git@github.com:tomasr/molokai.git
+[submodule ".vim/bundle/vim-airline"]
+ path = .vim/bundle/vim-airline
+ url = git@github.com:bling/vim-airline.git
+[submodule ".vim/bundle/ctrlp"]
+ path = .vim/bundle/ctrlp
+ url = git@github.com:kien/ctrlp.vim.git
diff --git a/.irbrc b/.irbrc
new file mode 100644
index 0000000..5c7e58b
--- /dev/null
+++ b/.irbrc
@@ -0,0 +1,18 @@
+require 'irb/completion'
+require 'irb/ext/save-history'
+
+begin
+ require "awesome_print"
+ AwesomePrint.irb!
+rescue LoadError
+end
+
+IRB.conf[:SAVE_HISTORY] = 999
+IRB.conf[:EVAL_HISTORY] = 999
+IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb_history"
+IRB.conf[:AUTO_INDENT] = true
+IRB.conf[:USE_READLINE] = true
+IRB.conf[:PROMPT_MODE] = :SIMPLE
+IRB.conf[:LOAD_MODULES] |= %w(irb/completion stringio enumerator ostruct)
+
+$: << '.'
diff --git a/.osx b/.osx
new file mode 100644
index 0000000..4b747e3
--- /dev/null
+++ b/.osx
@@ -0,0 +1,19 @@
+# MAC SPECIFIC
+is_osx || return 1
+
+# Load Boot2Docker variables
+b2d() {
+ $(boot2docker shellinit 2>/dev/null) || boot2docker start && \
+ $(boot2docker shellinit 2>/dev/null)
+}
+
+# ALIASES
+
+# Suspend
+alias away='/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend'
+
+# Show/hide hidden files in Finder
+alias show="defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder"
+alias hide="defaults write com.apple.finder AppleShowAllFiles -bool false && killall Finder"
+
+# vim: ft=sh
diff --git a/.profile b/.profile
new file mode 100644
index 0000000..5931bfa
--- /dev/null
+++ b/.profile
@@ -0,0 +1,14 @@
+# ~/.profile: executed by the command interpreter for login shells.
+# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
+# exists.
+# see /usr/share/doc/bash/examples/startup-files for examples.
+# the files are located in the bash-doc package.
+
+# the default umask is set in /etc/profile; for setting the umask
+# for ssh logins, install and configure the libpam-umask package.
+#umask 022
+
+# set PATH so it includes user's private bin if it exists
+if [ -d "$HOME/bin" ] ; then
+ PATH="$HOME/bin:$PATH"
+fi
diff --git a/.tmux.conf b/.tmux.conf
new file mode 100644
index 0000000..15bb3eb
--- /dev/null
+++ b/.tmux.conf
@@ -0,0 +1,32 @@
+# 256color mode
+set -g default-terminal "xterm-256color"
+
+# Watch for activity in background windows
+setw -g monitor-activity on
+set -g visual-activity on
+
+# Misc
+set -g history-limit 9999999
+
+# set first window to index 1 (not 0) to map more to the keyboard layout...
+set -g base-index 1
+setw -g pane-base-index 1
+
+# remap prefix to Control + a
+set -g prefix C-a
+# bind 'C-a C-a' to type 'C-a'
+bind C-a send-prefix
+unbind C-b
+
+# Reload config
+unbind r
+bind r source-file ~/.tmux.conf
+
+# Xterm
+setw -g xterm-keys on
+
+# Mouse
+set -g mode-mouse on
+set -g mouse-resize-pane on
+set -g mouse-select-pane on
+set -g mouse-select-window on
diff --git a/.vim/autoload/pathogen.vim b/.vim/autoload/pathogen.vim
new file mode 100644
index 0000000..a13ae08
--- /dev/null
+++ b/.vim/autoload/pathogen.vim
@@ -0,0 +1,347 @@
+" pathogen.vim - path option manipulation
+" Maintainer: Tim Pope
+" Version: 2.3
+
+" Install in ~/.vim/autoload (or ~\vimfiles\autoload).
+"
+" For management of individually installed plugins in ~/.vim/bundle (or
+" ~\vimfiles\bundle), adding `execute pathogen#infect()` to the top of your
+" .vimrc is the only other setup necessary.
+"
+" The API is documented inline below.
+
+if exists("g:loaded_pathogen") || &cp
+ finish
+endif
+let g:loaded_pathogen = 1
+
+" Point of entry for basic default usage. Give a relative path to invoke
+" pathogen#interpose() (defaults to "bundle/{}"), or an absolute path to invoke
+" pathogen#surround(). Curly braces are expanded with pathogen#expand():
+" "bundle/{}" finds all subdirectories inside "bundle" inside all directories
+" in the runtime path.
+function! pathogen#infect(...) abort
+ for path in a:0 ? filter(reverse(copy(a:000)), 'type(v:val) == type("")') : ['bundle/{}']
+ if path =~# '^\%({\=[$~\\/]\|{\=\w:[\\/]\).*[{}*]'
+ call pathogen#surround(path)
+ elseif path =~# '^\%([$~\\/]\|\w:[\\/]\)'
+ call s:warn('Change pathogen#infect('.string(path).') to pathogen#infect('.string(path.'/{}').')')
+ call pathogen#surround(path . '/{}')
+ elseif path =~# '[{}*]'
+ call pathogen#interpose(path)
+ else
+ call s:warn('Change pathogen#infect('.string(path).') to pathogen#infect('.string(path.'/{}').')')
+ call pathogen#interpose(path . '/{}')
+ endif
+ endfor
+ call pathogen#cycle_filetype()
+ if pathogen#is_disabled($MYVIMRC)
+ return 'finish'
+ endif
+ return ''
+endfunction
+
+" Split a path into a list.
+function! pathogen#split(path) abort
+ if type(a:path) == type([]) | return a:path | endif
+ if empty(a:path) | return [] | endif
+ let split = split(a:path,'\\\@]','\\&','')
+ endif
+endfunction
+
+" Like findfile(), but hardcoded to use the runtimepath.
+function! pathogen#runtime_findfile(file,count) abort "{{{1
+ let rtp = pathogen#join(1,pathogen#split(&rtp))
+ let file = findfile(a:file,rtp,a:count)
+ if file ==# ''
+ return ''
+ else
+ return fnamemodify(file,':p')
+ endif
+endfunction
+
+" Section: Deprecated
+
+function! s:warn(msg) abort
+ echohl WarningMsg
+ echomsg a:msg
+ echohl NONE
+endfunction
+
+" Prepend all subdirectories of path to the rtp, and append all 'after'
+" directories in those subdirectories. Deprecated.
+function! pathogen#runtime_prepend_subdirectories(path) abort
+ call s:warn('Change pathogen#runtime_prepend_subdirectories('.string(a:path).') to pathogen#infect('.string(a:path.'/{}').')')
+ return pathogen#surround(a:path . pathogen#slash() . '{}')
+endfunction
+
+function! pathogen#incubate(...) abort
+ let name = a:0 ? a:1 : 'bundle/{}'
+ call s:warn('Change pathogen#incubate('.(a:0 ? string(a:1) : '').') to pathogen#infect('.string(name).')')
+ return pathogen#interpose(name)
+endfunction
+
+" Deprecated alias for pathogen#interpose().
+function! pathogen#runtime_append_all_bundles(...) abort
+ if a:0
+ call s:warn('Change pathogen#runtime_append_all_bundles('.string(a:1).') to pathogen#infect('.string(a:1.'/{}').')')
+ else
+ call s:warn('Change pathogen#runtime_append_all_bundles() to pathogen#infect()')
+ endif
+ return pathogen#interpose(a:0 ? a:1 . '/{}' : 'bundle/{}')
+endfunction
+
+if exists(':Vedit')
+ finish
+endif
+
+let s:vopen_warning = 0
+
+function! s:find(count,cmd,file,lcd)
+ let rtp = pathogen#join(1,pathogen#split(&runtimepath))
+ let file = pathogen#runtime_findfile(a:file,a:count)
+ if file ==# ''
+ return "echoerr 'E345: Can''t find file \"".a:file."\" in runtimepath'"
+ endif
+ if !s:vopen_warning
+ let s:vopen_warning = 1
+ let warning = '|echohl WarningMsg|echo "Install scriptease.vim to continue using :V'.a:cmd.'"|echohl NONE'
+ else
+ let warning = ''
+ endif
+ if a:lcd
+ let path = file[0:-strlen(a:file)-2]
+ execute 'lcd `=path`'
+ return a:cmd.' '.pathogen#fnameescape(a:file) . warning
+ else
+ return a:cmd.' '.pathogen#fnameescape(file) . warning
+ endif
+endfunction
+
+function! s:Findcomplete(A,L,P)
+ let sep = pathogen#slash()
+ let cheats = {
+ \'a': 'autoload',
+ \'d': 'doc',
+ \'f': 'ftplugin',
+ \'i': 'indent',
+ \'p': 'plugin',
+ \'s': 'syntax'}
+ if a:A =~# '^\w[\\/]' && has_key(cheats,a:A[0])
+ let request = cheats[a:A[0]].a:A[1:-1]
+ else
+ let request = a:A
+ endif
+ let pattern = substitute(request,'/\|\'.sep,'*'.sep,'g').'*'
+ let found = {}
+ for path in pathogen#split(&runtimepath)
+ let path = expand(path, ':p')
+ let matches = split(glob(path.sep.pattern),"\n")
+ call map(matches,'isdirectory(v:val) ? v:val.sep : v:val')
+ call map(matches,'expand(v:val, ":p")[strlen(path)+1:-1]')
+ for match in matches
+ let found[match] = 1
+ endfor
+ endfor
+ return sort(keys(found))
+endfunction
+
+command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Ve :execute s:find(,'edit',,0)
+command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vedit :execute s:find(,'edit',,0)
+command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vopen :execute s:find(,'edit',,1)
+command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vsplit :execute s:find(,'split',,1)
+command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vvsplit :execute s:find(,'vsplit',,1)
+command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vtabedit :execute s:find(,'tabedit',,1)
+command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vpedit :execute s:find(,'pedit',,1)
+command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vread :execute s:find(,'read',,1)
+
+" vim:set et sw=2 foldmethod=expr foldexpr=getline(v\:lnum)=~'^\"\ Section\:'?'>1'\:getline(v\:lnum)=~#'^fu'?'a1'\:getline(v\:lnum)=~#'^endf'?'s1'\:'=':
diff --git a/.vim/bundle/ctrlp b/.vim/bundle/ctrlp
new file mode 160000
index 0000000..b5d3fe6
--- /dev/null
+++ b/.vim/bundle/ctrlp
@@ -0,0 +1 @@
+Subproject commit b5d3fe66a58a13d2ff8b6391f4387608496a030f
diff --git a/.vim/bundle/delimitMate b/.vim/bundle/delimitMate
new file mode 160000
index 0000000..fe1983c
--- /dev/null
+++ b/.vim/bundle/delimitMate
@@ -0,0 +1 @@
+Subproject commit fe1983cfa1cf0924ac9b2b8576255daffd36afbf
diff --git a/.vim/bundle/molokai b/.vim/bundle/molokai
new file mode 160000
index 0000000..db8ce13
--- /dev/null
+++ b/.vim/bundle/molokai
@@ -0,0 +1 @@
+Subproject commit db8ce13b3737d3ddea8368498183d7c204a762eb
diff --git a/.vim/bundle/nerdcommenter b/.vim/bundle/nerdcommenter
new file mode 160000
index 0000000..6549cfd
--- /dev/null
+++ b/.vim/bundle/nerdcommenter
@@ -0,0 +1 @@
+Subproject commit 6549cfde45339bd4f711504196ff3e8b766ef5e6
diff --git a/.vim/bundle/nerdtree b/.vim/bundle/nerdtree
new file mode 160000
index 0000000..3b98a7f
--- /dev/null
+++ b/.vim/bundle/nerdtree
@@ -0,0 +1 @@
+Subproject commit 3b98a7fcae8f9fff356907171f0406ff8cd28921
diff --git a/.vim/bundle/supertab b/.vim/bundle/supertab
new file mode 160000
index 0000000..b0ca47f
--- /dev/null
+++ b/.vim/bundle/supertab
@@ -0,0 +1 @@
+Subproject commit b0ca47f4570385043f270f9278ba6d50d1d2fa00
diff --git a/.vim/bundle/syntastic b/.vim/bundle/syntastic
new file mode 160000
index 0000000..b340672
--- /dev/null
+++ b/.vim/bundle/syntastic
@@ -0,0 +1 @@
+Subproject commit b340672bd03d877ede83f95ccec6a98bbd536d42
diff --git a/.vim/bundle/tabular b/.vim/bundle/tabular
new file mode 160000
index 0000000..60f2564
--- /dev/null
+++ b/.vim/bundle/tabular
@@ -0,0 +1 @@
+Subproject commit 60f25648814f0695eeb6c1040d97adca93c4e0bb
diff --git a/.vim/bundle/ultisnips b/.vim/bundle/ultisnips
new file mode 160000
index 0000000..7df82bb
--- /dev/null
+++ b/.vim/bundle/ultisnips
@@ -0,0 +1 @@
+Subproject commit 7df82bbe5357e42c7539299726e9cccfe6323e85
diff --git a/.vim/bundle/vim-airline b/.vim/bundle/vim-airline
new file mode 160000
index 0000000..6387268
--- /dev/null
+++ b/.vim/bundle/vim-airline
@@ -0,0 +1 @@
+Subproject commit 6387268f13c513d8afeb98d0621bd3da8219dfc6
diff --git a/.vim/bundle/vim-colors-solarized b/.vim/bundle/vim-colors-solarized
new file mode 160000
index 0000000..528a59f
--- /dev/null
+++ b/.vim/bundle/vim-colors-solarized
@@ -0,0 +1 @@
+Subproject commit 528a59f26d12278698bb946f8fb82a63711eec21
diff --git a/.vim/bundle/vim-fugitive b/.vim/bundle/vim-fugitive
new file mode 160000
index 0000000..2c8461d
--- /dev/null
+++ b/.vim/bundle/vim-fugitive
@@ -0,0 +1 @@
+Subproject commit 2c8461db084d205903a792a23163faa546f143c9
diff --git a/.vim/bundle/vim-nerdtree-tabs b/.vim/bundle/vim-nerdtree-tabs
new file mode 160000
index 0000000..0decec1
--- /dev/null
+++ b/.vim/bundle/vim-nerdtree-tabs
@@ -0,0 +1 @@
+Subproject commit 0decec122e9bb3e9328b01fa20a9650e79cc6ca7
diff --git a/.vim/bundle/vim-puppet b/.vim/bundle/vim-puppet
new file mode 160000
index 0000000..d881b93
--- /dev/null
+++ b/.vim/bundle/vim-puppet
@@ -0,0 +1 @@
+Subproject commit d881b93dc4a8ed1374ad44439aeeb47808a6b91a
diff --git a/.vim/bundle/vim-rails b/.vim/bundle/vim-rails
new file mode 160000
index 0000000..18b5806
--- /dev/null
+++ b/.vim/bundle/vim-rails
@@ -0,0 +1 @@
+Subproject commit 18b5806910df63d65206593cd2001807d01cd083
diff --git a/.vim/bundle/vim-repeat b/.vim/bundle/vim-repeat
new file mode 160000
index 0000000..5eba0f1
--- /dev/null
+++ b/.vim/bundle/vim-repeat
@@ -0,0 +1 @@
+Subproject commit 5eba0f19c87402643eb8a7e7d20d9d5338fd6d71
diff --git a/.vim/bundle/vim-ruby b/.vim/bundle/vim-ruby
new file mode 160000
index 0000000..4661bf7
--- /dev/null
+++ b/.vim/bundle/vim-ruby
@@ -0,0 +1 @@
+Subproject commit 4661bf70f428c0436ea60d9ba515b4b8dca73f0d
diff --git a/.vim/bundle/vim-rvm b/.vim/bundle/vim-rvm
new file mode 160000
index 0000000..06bc52c
--- /dev/null
+++ b/.vim/bundle/vim-rvm
@@ -0,0 +1 @@
+Subproject commit 06bc52c308c27b6e4eb41c744494ffc6dbb30f49
diff --git a/.vim/bundle/vim-snippets b/.vim/bundle/vim-snippets
new file mode 160000
index 0000000..42f8ee2
--- /dev/null
+++ b/.vim/bundle/vim-snippets
@@ -0,0 +1 @@
+Subproject commit 42f8ee269c88e67ccb4a9694b7b7e2b9cdb6c1c3
diff --git a/.vim/bundle/vim-statline b/.vim/bundle/vim-statline
new file mode 160000
index 0000000..45d369e
--- /dev/null
+++ b/.vim/bundle/vim-statline
@@ -0,0 +1 @@
+Subproject commit 45d369eff6e2c5441ba21918825a8c215a44a951
diff --git a/.vim/bundle/vim-surround b/.vim/bundle/vim-surround
new file mode 160000
index 0000000..fa433e0
--- /dev/null
+++ b/.vim/bundle/vim-surround
@@ -0,0 +1 @@
+Subproject commit fa433e0b7330753688f715f3be5d10dc480f20e5
diff --git a/.vim/bundle/vim-template b/.vim/bundle/vim-template
new file mode 160000
index 0000000..24687c1
--- /dev/null
+++ b/.vim/bundle/vim-template
@@ -0,0 +1 @@
+Subproject commit 24687c1a59cb2828be4aec21ec75103d22a1c71e
diff --git a/.vimrc b/.vimrc
new file mode 100644
index 0000000..d8d5df1
--- /dev/null
+++ b/.vimrc
@@ -0,0 +1,227 @@
+"Use Vim settings, rather then Vi settings (much better!).
+"This must be first, because it changes other options as a side effect.
+set nocompatible
+
+"activate pathogen
+execute pathogen#infect()
+syntax on
+filetype plugin indent on
+
+" SETTINGS --------------------------------------------------------------------
+
+" Theme
+colorscheme molokai
+set background=dark
+
+" Change key key
+let mapleader=","
+
+" Misc
+set backspace=indent,eol,start "allow backspacing over everything in insert mode
+set history=1000 "store lots of :cmdline history
+set showcmd "show incomplete cmds down the bottom
+set showmode "show current mode down the bottom
+set number "show line numbers
+set incsearch "find the next match as we type the search
+set hlsearch "highlight searches by default
+set wrap "dont wrap lines
+set linebreak "wrap lines at convenient points
+set wildmode=list:longest,full "make cmdline tab completion similar to bash
+set wildmenu "enable ctrl-n and ctrl-p to scroll thru matches
+set wildignore=*.o,*.obj,*~ "stuff to ignore when tab completing
+set t_Co=256 " Tell the term has 256 colors
+set hidden " Hide buffers when not displayed
+set noeb vb t_vb= "disable beep
+set visualbell "flash screen on beep
+set cursorline " Highlight the current line
+set colorcolumn=80 " Lines longer than 80 chars
+set shellcmdflag=-lc " set the ! shell to be a login shell to get at functions and aliases
+set showmatch " Show matching braces.
+set ttyfast " Fast terminal connection
+set virtualedit=block
+
+"default indent settings
+set shiftwidth=2
+set softtabstop=2
+set tabstop=2
+set expandtab
+set autoindent
+set smarttab
+
+"folding settings
+set foldmethod=indent "fold based on indent
+set foldnestmax=3 "deepest fold is 3 levels
+set nofoldenable "dont fold by default
+
+"some stuff to get the mouse going in term
+set mouse=a
+set ttymouse=xterm2
+
+" Unix
+set encoding=utf8
+set fileencoding=utf8
+set fileformat=unix " file format Unix dammit
+set fileformats=unix,dos " file format Unix dammit
+
+" Spell check
+set spell spelllang=en_us
+map sn :setlocal nospell " disable it
+
+" Swap files
+set directory=/tmp
+
+" Line wrapping on by default
+set wrap
+"set linebreak
+
+" Search options
+set incsearch " incremental searching on
+set hlsearch " highlight all matches
+set ignorecase " Ignore case when searching
+set magic " Set magic on, for regular expressions
+set smartcase
+
+" Visual highlight
+hi Visual term=reverse cterm=reverse guibg=Grey
+
+" Listchars
+set list
+if (&termencoding ==# 'utf-8' || &encoding ==# 'utf-8') && version >= 700
+ let &listchars = "tab:\u21e5\u00b7,trail:\u2423,extends:\u21c9,precedes:\u21c7,nbsp:\u26ad"
+ let &fillchars = "vert:\u259a,fold:\u00b7"
+else
+ set listchars=tab:>\ ,trail:-,extends:>,precedes:<
+endif
+
+" END SETTINGS ----------------------------------------------------------------
+
+" MAPPINGS --------------------------------------------------------------------
+
+" Remove highlighted search
+"nnoremap :noh
+"nnoremap [ [
+
+" Will allow you to use :w!! to write to a file using sudo if you forgot to sudo
+" vim file (it will prompt for sudo password when writing)
+cmap w!! %!sudo tee > /dev/null %
+
+" Cut Copy Paste
+if has('unnamedplus')
+ set clipboard=unnamedplus
+else
+ set clipboard=unnamed
+endif
+vnoremap p "0p " Replace without yanking
+
+" Select all text
+nmap ggVG
+
+" Moves line up or down
+nmap :.m+
+nmap :-m.k
+
+" Search for the word under cursor in current dir
+map :execute "vimgrep /" . expand("") . "/gj **" cw
+
+" Mappings to access buffers
+" ,. : list buffers
+" ,b ,n ,g: go back/forward/last used buffer
+" ,1 ,2: go to buffer 1/2 etc
+nnoremap . :ls
+nnoremap b :bprevious
+nnoremap n :bnext
+nnoremap g :e#
+nnoremap 1 :1b
+nnoremap 2 :2b
+nnoremap 3 :3b
+nnoremap 4 :4b
+nnoremap 5 :5b
+nnoremap 6 :6b
+nnoremap 7 :7b
+nnoremap 8 :8b
+nnoremap 9 :9b
+nnoremap 0 :10b
+
+" END MAPPINGS ----------------------------------------------------------------
+
+" PLUGINS ---------------------------------------------------------------------
+" UltiSnips
+let g:UltiSnipsSnippetDirectories=["vim-snippets/snippets"]
+
+" Airline
+let g:airline#extensions#tabline#enabled = 1
+let g:airline_powerline_fonts=1
+
+" Ruby
+imap end-cc
+let g:rubycomplete_buffer_loading = 1
+let g:rubycomplete_classes_in_global = 1
+let g:rubycomplete_rails = 1
+
+" NERDTree {
+"map l :NERDTreeFindw
+noremap :NERDTree
+noremap :NERDTreeClose
+let g:NERDTreeShowBookmarks = 1
+let g:NERDTreeShowHidden = 1
+let g:NERDTreeMouseMode = 2
+let g:NERDTreeChDirMode = 2
+let g:nerdtree_tabs_open_on_gui_startup = 0
+let g:nerdtree_tabs_open_on_console_startup = 0
+let g:nerdtree_tabs_smart_startup_focus = 1
+let g:nerdtree_tabs_synchronize_view = 1
+let g:nerdtree_tabs_meaningful_tab_names = 1
+"}
+
+" Tasklist {
+let g:tlWindowPosition = 1 " Open window at the bottom (use 0 for top)
+" }
+
+" ACK
+"let g:ackprg="ack-grep -H --nocolor --nogroup --column"
+
+" Minibuffer Explorer Settings
+let g:miniBufExplMapWindowNavVim = 0
+let g:miniBufExplMapWindowNavArrows = 0
+let g:miniBufExplMapCTabSwitchBufs = 1
+let g:miniBufExplMapCTabSwitchWindows = 1
+let g:miniBufExplUseSingleClick = 1
+let g:miniBufExplModSelTarget = 1
+
+" END PLUGINS -----------------------------------------------------------------
+
+" COMMANDS --------------------------------------------------------------------
+
+command Todo noautocmd vimgrep /TODO\|FIXME/j ** | cw "Look for notes
+command Spaces autocmd BufWritePre * :%s/\s\+$//e " Delete all trailing whitespace
+
+" END COMMANDS ----------------------------------------------------------------
+
+" OS SPECIFIC ----------------------------------------------------------------
+
+if has('mac')
+ set guifont=DejaVu\ Sans\ Mono\ for\ Powerline:h12
+elseif has('win32') || has('win64')
+ set guifont=Consolas:h9
+ set lines=35 columns=150 " Window height & width
+ set dir=$TEMP
+else
+ set guifont=Monospace\ 9
+ set lines=45 columns=150 " Window height & width
+end
+
+" Tab Navigation
+nmap :tabprevious
+nmap :tabnext
+map :tabprevious
+map :tabnext
+imap :tabpreviousi
+imap :tabnexti
+nmap :tabnew
+imap :tabnew
+
+" END OS SPECIFIC ----------------------------------------------------------------
+
+" FUNCTIONS -------------------------------------------------------------------
+
+" END FUNCTIONS ---------------------------------------------------------------
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..04d393d
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,13 @@
+Copyright (C) 2015 Vlad Ghinea
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/bin/updt b/bin/updt
new file mode 100755
index 0000000..927e399
--- /dev/null
+++ b/bin/updt
@@ -0,0 +1,85 @@
+#!/usr/bin/env bash
+
+## Update
+
+COMMAND=$1
+AVAILABLE='
+ all
+ ubuntu
+ brew
+ vim
+ aws
+ ruby
+ cola
+ docker_images
+'
+
+. ~/.functions
+
+updt_ubuntu() {
+ is_ubuntu || return
+ sudo apt-get --quiet --yes update
+ sudo apt-get --quiet --yes upgrade
+}
+
+updt_brew() {
+ is_osx || return
+ brew doctor
+ brew update
+ brew upgrade
+ brew cleanup
+}
+
+updt_vim() {
+ (
+ [[ -d ${HOME}/.vim ]] && cd ${HOME}/.vim || return
+ curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
+ # TODO Parallel git submodule foreach "(git fetch && git reset --hard origin/master) &"
+ git submodule foreach --recursive "git fetch && git reset --hard origin/master"
+ )
+}
+
+updt_ruby() {
+ env | grep -q ^rvm_version= || return
+ rvm get stable
+ gem update --system
+ gem update
+}
+
+updt_cola() {
+ is_linux || return
+ (
+ COLADIR="${HOME}/git-cola"
+ if [ -d $COLADIR ]; then
+ cd $COLADIR && git remote update
+ if [ $(git rev-parse HEAD) != $(git rev-parse @{u}) ]; then
+ git reset --hard origin/master
+ fi
+ else
+ cd $HOME && git clone git://github.com/git-cola/git-cola.git
+ fi
+ )
+}
+
+updt_docker_images() {
+ which docker > /dev/null || return
+ for img in $(docker images 2>/dev/null | awk '$0 !~ // {print $1":"$2}' | tail -n +2 | sort -u); do
+ docker pull $img
+ done
+}
+
+updt_aws() {
+ sudo pip install --upgrade awscli
+}
+
+updt_all() {
+ for cmd in $AVAILABLE; do
+ [[ "$cmd" != 'all' ]] && updt_$cmd
+ done
+}
+
+if [[ "$AVAILABLE" =~ "$COMMAND" ]]; then
+ updt_$COMMAND
+else
+ e_abort "$COMMAND is not valid. Available commands are: $AVAILABLE"
+fi
diff --git a/install b/install
new file mode 100755
index 0000000..83588e4
--- /dev/null
+++ b/install
@@ -0,0 +1,37 @@
+#!/usr/bin/env bash
+
+###############################################################################
+# This script installs the dotfiles
+# @author Vlad Ghinea
+###############################################################################
+
+# Exit immediately if a command exits with a non-zero status
+set -e
+
+# Read dotfiles directory
+DOTFILES="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+# Load system functions
+if [[ -s $DOTFILES/.functions ]]; then
+ source $DOTFILES/.functions && \
+ e_header 'Set-up System' && \
+ e_ok 'Loaded system functions'
+else
+ echo " [FATAL] '.functions' file was not found"; exit 1
+fi
+
+# Link dotfiles (excluding unnecessary files and including some nondot)
+link_dotfiles $(find $DOTFILES -maxdepth 1 -name '.*' \
+ ! -path '*/.git' \
+ ! -path '*/.gitignore' \
+ ! -path '*/.gitmodules' \
+ ! -path '*/.DS_Store' \
+ -o -name 'bin')
+
+e_header 'Permissions'
+find ~/bin/ -type f -exec chmod 755 {} \; && \
+ e_ok '~/bin/* is set to 755'
+find ~/.ssh/ -type f -name 'id_*' -exec chmod 600 {} \; && \
+ e_ok '~/.ssh/id* is set to 600'
+
+e_footer 'Done' && exit 0