Super Spread Sheet S³

Or little computing tricks and hacks

Tag Archives: workflow

git: comparing with remote branches

I have a Rails app which is deployed in Heroku and its source is in bitbucket. In Heroku I have in fact two instances: staging and production. When I came back after a break on the project, I wanted to compare what was deployed or committed where, as I knew that a JavaScript bug had prevented me to have a full deployment.

git works with branches so the comparison I want to make, takes place between branches, regardless of where they are located.

To lists local and remote branches, run the command:

git branch -a

The output for my app looks something like this:


The first line is the local working branch, the second in the remote master branch in bitbucket, the last two lines are the production and staging branches in heroku.

I can simply run git diff with the name of the two branches to get a detail description, line by line, of the differences:

git diff remotes/heroku/master remotes/staging/master

To get the list of only the files that are different, use the following command:

git diff --stat --color master remotes/heroku/master



The Future Programmer

In the month-long adventure I had in my home country and talked about here, I had to experience first hand the combination of badly designed computer systems in a bureaucratic setting in a place where processes and flows are not always well defined.

In order to make a shipment of personal effects, I needed to register in an office that would not register me because I do not live in the country and it is against the law to register me. Yet, another division of that same department needed that same paper for the shipment. After a lot of negotiations in all directions like in a spider web, the infinite loop was broken and I would be able to get a special temporary registration. Except, nobody really knew how to do it. While I was sitting at this office, I could see these people trying to help, spending endless time in front of a series of screens, entering information over and over again, just to hit a brick wall. Later, I was told that one section needed to create my account, and was having a lot of problems doing so, so that another section could activate my account. And these two sections could not influence the other, not even interface with each other.

I don’t know how many times have I been told that “the system does not allow me to…” and the reason is very often unknown. It is not because is against the rules. It is simply not known. These so-called intelligent systems are invading our power of doing everyday things and it is scary.

The future of any new society needs skilled programmers. Lots of them. But not the kind that can program any given algorithm to perfection. Those are needed too, but they are not sufficient. The kind I’m talking about is the kind who can understand design; can describe, create, and modify processes and workflows with interactions and dependencies. Otherwise the current crisis in these office buildings is going to spread and get worse. The normal citizen will be able to achieve less in more time. Bureaucracy will just have a great place to hide.


Upon my return to Montreal in my search for a new opportunities, somebody suggested that I should apply for a Business Analyst position because my background would fit the job description. And ironically, the description of this role is exactly what I’m describing here. The difference is that the business analyst, while knowing about programming, does not do the programming him or herself, but must understand technical issues and communicate flawlessly with the programmers. So if the analyst can understand what the user needs and wants, and convey this to the top-notch programmer, in other words, can make the bridge between the normal user and the programmer and/or designer, excellent systems will be created. The challenge is to get rid of the “if”.