I recently upgraded to Yosemite and wiped my whole computer. I have everything backed up, so I could do a restore, but it is so freeing to start fresh. I made a few delibrate decisions when reinstalling to see if I couldn't preserve the cleanliness a little more effectively this time.
I fully commited myself to (Homebrew) Cask and won't go back. It feels so much nicer to install all my apps via the CLI than going to some site downloading installing blah blah blah. It makes managing my apps more declarative. But this brought up an interesting point for me, because I am in no way going full hog down this path. For instance I am not keeping my OS X preferences in a dot file, nor backing all my configs up to a Github repo. I am trying to balance organizational complexity with reproducability.
But anyway, yeah Cask is great. Another advantage of using Cask is that if an app I use isn't on there, or is outdated, it forces me to contribtue back to their repo, and so make it easier for the next person in front of me.
Docker For All
I also decided to use Docker excusively for all app development. I can get started using the simple
brew cask install boot2docker, and I am ready to develop any app. Especially since Docker announced offical language repos it has become even simpler to turn any project into a docker project. For example, a recent site I have been working on for school required a static site generator. My
Dockerfile was as simple as
FROM python:2-onbuild RUN staticjinja build
That's it. It knows to pick up my
requirements.txt and install everything then run that command. How nice is that? No worrying about python version. No worrying about any version. ALL DEVELOPMENT MUST HAPPEN IN DOCKER. I love it.
There is one big pain point with docker, at present, on Macs. That is shared volumes, which turns out to be a rather important feature. For instance, this dockerfile won't don anything if the Docker OS doesn't share the folder with the host OS. It will simply generate some static files in Docker conatiner in a VM, where they are useless. You would think it would as easy as using the
--volume argument with Docker, but currently
boot2docker doesn't exactly work. In the next release, they will enable home folder sharing by default, but for now you have to do this weird samba sharing thing.
...is really pretty. So that is fun.