miguel laginha blogs here

(mainly) geekish jibber-jabber

Three things I learned at the 2014 Open Knowledge Festival

Put your money where your agile mouth is

So, this happened a while back..


Look, I haven’t been around that long - definitely no longer than those guys - and I don’t know that much about #noestimates, but I do know one thing. If you’re doing business with software, you can’t dissociate the way you work with the way you’re making money.

And I’m not even advocating agile pratices here. If you want or need to waterfall, just do it. If you want to be radically agile, just do it. But you need to be coherent!


just assume you’re actually pretending to “do” agile because it gets you customers and that what you really want is a nice estimate upfront (no matter how unrealistic) and a nice gantt chart just to feel safe.

That’s probably it.

On Turning 30 • Cap Watkins

The Farnam Street

Since I began working as a software developer, I’ve always been an avid reader of both books and blogs that would help me technically. I started buying books and collecting RSS feeds on ruby / rails, then I broadened my interests to include frontend / design stuff and then topics outside computer science such as motivation, leadership, behavioural economics and phsycology. There are still lots of technical topics that I’d like to know more of and even experiment, but as I have become more of a team lead and taken on more professional responsability at my workplace, I’ve come to value my performance as someone who manages other people’s work and not as a software programmer myself.

So.. considering that I can’t read all of the Internet, I’ve gradually given up exploring the ruby weekly, python weekly, postgres weekly, HTML5 weekly and Sidebar newsletters, and I just settled for the Farnam Street blog, which I find fascinating. Besides being very active, it covers a lot of the topics I mentioned earlier plus some others such as sleep, decision making, neuroscience, etc. It meets my curiosity for knowing how I think and why I think and behave the way I do, and there are lots of quotations from books you can buy online, if you want to learn more. Overall, I think it is the right material for knowing yourself better and take better control of yourself, which translates directly on my daily life. Personal and professional.

I’d encourage you to give Farnam Street a shot.

Python development on Mavericks using fish shell

Lately I’ve been experimenting a bit with Python and several frameworks, mostly for getting up to speed and having fun. Most of my work no longer implies programming on a daily basis but I do miss it and sometimes I spend some of my free time programming because of that.

Usually, the first challenge is to setup the development environment. A sane one. Regarding the python ecosystem, that means using a version manager (such as py-env, that replaced pythonbrew), virtualenv and possibly virtualenvwrapper. All of this may be trivial using bash or even z-shell, but I’m using fish shell for a few months and I’d like to keep it that way. Plus, it’s a challenge.

So, here’s what I’ve found that works on mavericks:

First off, enable pyenv support on fish shell. There may be other ways to do so, but I’m currently using oh-my-fish, a clone of the popular oh-my-zsh. This project is easily installed and contains plugins you can enable by editing “~/.config/fish/config.fish“ to include the line:

set fish_plugins brew django pyenv python # other plugins

This sets the ground for pyenv to work nicely. Install py-env using homebrew:

brew install pyenv

From this point onwards, you may choose to install virtualenv manually or use pyenv-virtualenv, as suggested by the author. I’ve done this using homebrew again, using the latest development release:

brew install —HEAD pyenv-virtualenv

..and everything works, so far.

Personally, I find the pyenv / pyenv-virutalenv combo a bit confusing, because the virtualenvs aren’t totally scoped to python versions. For instance, you can’t create two virtualenvs with the same name, even if they “belong” to different python versions (say, 2.7.3 and 3.3.2). Also, if you type

pyenv versions

you get all python versions AND virtualenvs mixed. Example:

pyenv versions snapshot

If you want to use a virtualenv, you have to treat it as any other python version, using

pyenv local django # the same way you would type pyenv local 2.7.3

Confusing, right? Especially coming from rvm or rbenv. Anyway, it works!

I have also tried installing pyenv-virtualenvwrapper but couldn’t make it work :( I think that’s because virtualenvwrapper is not compatible with fish shell. Anyway, I’ve found an interesting project called virtualfish which seems to provide that functionality. I might give it a go sometime.

Well, I hope it helps!

How to be the Boss Your Team Deserves: Stop Coding!