Dev Env

Sure, we all do it and everyone has their own reasons for what they use or its a Docker container. Am I right? Okay so apart from using Docker and fancy volume mounts, I like the tools to be as close as possible to my editor so it can validate the package is loaded or linter and format my files or run some FN that a REPL can try out. If you are liking how that sounds then read on!

Why I did this

Building a working deveopment environment is unique to many people and teams. There are many situations that make this process go in different directions, but at its core, there are some ideas that make for an improved position to allow for nimble growth and additions:

  1. Try to not use global as much as possible
    • This means use as many utilities installed to your locally home/project directory instead of the global environment (excluding containers)
    • Less root based access rights needed for modifying settings
    • Multiple versions allowed to be installed
  2. Keep your $PATH clean
    • Less work for your shell to scan of directories of executables available
    • Clear understanding of what is taking presedence
    • Adding/Removing what is needed is very clear of wher its happening
  3. Before going to docker
    • All of this is before going to docker, by that I mean you can choose your version(s) and then grab the docker image you want to use
    • Keeping the editor close to the REPL or pkgs: Your editor will work better when given the tools it can find from an installed tool
    • Experimenting
    • Steps taken here result in docker layers later

What I use

SpacemacsMy current editor of choice
brewNot a big fan, but used after I have found other ways to install things on a Mac
ctrl + x + eEdits a command line with my selected editor
dockerContainers and experimentation
git configSet git per main directory for personal and professional projects
libshMy own tools that I have found useful for improving the shell experience
mkdocsAllows for easy documenting of projects using MarkDown
oh-my-zshHas some good features for managing the ZSH prompt with prompts and plugins
powerline fontsMakes my terminals look nice with icons and unicode characters
pyenvAllows me to select python version without disturbing the installed one
rvmAllows me to select a Ruby version without disturbing the installed one
tfenvAllows me to select a Terraform version without disturbing the installed one
tgenvAllows me to select a Terragrunt version without disturbing the installed one
.editorconfigAlign your team to the same settings of indenting/tabs-vs-spaces/etc…