Thursday, June 21, 2012

Open Source




If you want to deploy quickly with a small team of people, the only way to do that is to leverage open source as much as you can. Any work that results in more open source software being utilized, is work worth pursuing.


Software Developers in an agile process are not application developers, they are open source software implementers. There job is to identify places where open source can be implemented, and then do the work to implement that solution.


Agile software developers should only be writing algorithms if that algorithm has never been written before. Hint: most algorithms have already been written.


Sure, you can write it yourself and keep it closed source and charge others to use it (instead of releasing it for free), but then you wouldn’t get the benefit of having other peopel contribute bug fixes for you. I had my first pull request the other day for one of my github projects. It was a real eye opening experience to witness a bug magically fixed without me doing anything. How great it is to be an open source developer.

Why I stopped using virtualenv



I’ve decided to stop using virtualenv entirely. No more longer with local development, no longer with I deploy my stuff either. Why? Because virtualenv is evil. What is it’s purpose? To tie tour project to an environment frozen in time. When a new version of django is released, instead of updating your project to use the newest features, you end up telling yourself “Why bother with all that work, thats what virtualenv is for!” You’ve now just made  locked yourself into using that outdated version of django forever. Virtualenv encourages this sort of thing to happen.

I don’t use virtualenv at all. I install everything to global site-packages. On a practically daily basis, new features and implementations are being added to the open source oeuvre. On the rare event that a new version of django (or any other 3rd party I use) breaks my application, then and only then will I reach for virtualenv. Then I file a bug report, and then I wait for the bug to be fixed so I can get rid of virtualenv again.

I don’t hate virtualenv, I’m just weary of it. I don’t want to let it become a crutch. Thats why I don’t use virtualenvwrapper. I want my virtualenv experience to be painful.


A while ago I stopped using virtualenv when I deploy, but for completely different reasons. Its does not make sense in the day and ago of cloud computing to have two projects running on the same machine. Back in the shared hosting days, virtualenv was a must, but now we just spin up a new instance.