Wednesday, August 25, 2010

How to add activities to redmine timesheet plugin?

I am using redmine, a great project management web application, and added littestream timesheet plugin.
If you want to add timesheet activities, you can't do it from the UI. You need to add it directly into mysql db like that:
insert into enumerations values (10,'Experimental Development', 3, 0, "TimeEntryActivity", 1, NULL, NULL)
insert into enumerations values (11,'Scientific Research', 4, 0, "TimeEntryActivity", 1, NULL, NULL)
Don't forget to set property the id and the position.
select * from enumerations;
| id | name | position | is_default | type| active | project_id | parent_id |

Wednesday, July 21, 2010

patching class function in python

Today we had to patch a class function in production. Monkey patching can become tricky if reference are kept at several place like pointer in C and C++.
Here is a simple example on how to make sure all references will use the new definition.
class Foo:
def f(self):
print "default f"

def newf(self):
print "newf"

Foo.f.im_func.func_code = newf.func_code
This is another reason why interpreter language like python are so powerful.

Tuesday, June 1, 2010

Before filing Software Patents, wait for Bilski case resolution

The big upcoming US case regarding software patents is In re Bilski. The Supreme Court has been sitting on it for months now. "Bilski" an ongoing set of patent cases that will change the patentability of software in the USA. The Bilski patent itself is a business method patent, not a software patent.

The 2008 ruling of the Court of Appeals for the Federal Circuit (CAFC) was broad enough to reject Bilski's patent and a certain category of software patents.

The Supreme Court agreed to review the CAFC's ruling (as Bilski v. Kappos), and the judges raised the issue of software during the hearing.

The Supreme Court's ruling could greatly change the patentability of software patents, business method patents, and the middle ground of e-commerce patents.

If you are looking for US patent news, I recommend patentlyo.

Tuesday, May 18, 2010

Easy Presentation Slides with Latex-Beamer

If you are looking for an elegant way to create slides like the ones I have presented at montreal-python, I recommend latex-beamer.
Here is a example in 6 simple steps:
  1. mkdir trial; cd trial
  2. sudo aptitude install latex-beamer
  3. wget http://mlboost.svn.sourceforge.net/viewvc/mlboost/doc/ml-python-mtl-april2009.tgz
  4. tar -zxvf ml-python-mtl-april2009.tgz
  5. pdflatex ml-python-mtl-april2009.tex
  6. xpdf ml-python-mtl-april2009.pdf
IF you don't remember latex syntax, you can use:
When you start using latex, you never want to go back. Content and visualization should be well isolated/separated.

Saturday, May 15, 2010

Future of Quebec Software Engineer

Currently, new Software Engineer have an easy live. With a shortage of resources, you don't have to be good to find a job. When employers are desperately looking for people, they take what they can and don't complain too much about it (in this context, they feel lucky). As an example, ETS Software engineer students can choose between 17 intern offers. Will the situation change in the future?
  1. For a long time, Canadian dollar was low which makes Quebec and Canadian Software engineer pretty cheap, unfortunately it is changing and it is already not true anymore. They are starting to be expensive. Many software jobs in Québec are related to US company having an office in Canada and many others rely on US clients.
  2. Easy tax credit for experimental development and scientific research will be harder to get since Canadian governmental is back to deficit and Quebec is facing aging population and reduced number of tax payers. For more info, check this post.
  3. Outsourcing, a cheaper and more accessible alternative. As a example, when more Indians will be able to speak comprehensible English, they will become a real danger. Many companies start using cheap remote resource or use outsourcing service like rentacoder to lower down their cost.
  4. Due to globalization and near US market, many companies will prefer perfectly fluent English average engineer as oppose to great engineer with lack of English skills.
  5. Due to globalization and near US market, many companies will promote perfectly fluent English average engineer as oppose to great engineer with lack of English skills.
Unlike Doctors with powerful Professional College, software engineer don't have reserved acts that reduce competition and provide job security, they don't have the luxury to not be competitive.

What should future Francophone engineer need to success and be more competitive in this changing landscape?
  • They need to be fully bilingual (btw, many company don't consider Francophone university because they know that most of their software engineers aren't bilingual)
  • They need management skills. Ability to manage technical people is rare and critical to the success of projects, company are more aware of it and are desperately looking for it. Increase success rate of project is critical.
  • They need leader and decision maker, not only a work force.
  • They need writing and communication skills. Technical people who neglect this will pay the price in the long run. Without those skills, it is hard to evolve in the upper level of a company.
  • They need conflict, negotiation skills. Engineers forget that their job is on average 20% technical and 80% HR related. Resolving human related problems is important part of software engineer work.
But the most important is that companies need decision makers who see the big picture, not only throw-able/easy replaceable work force.
Outsourcing is out the door and software engineer have to better understand the idea of comparative advantages because their cheaper advantage is getting away.
Too expensive non perfectly bilingual engineers with lack of management and communication skills jobs will face increase outsourcing pressure.

Friday, May 14, 2010

Disruptive business model: Lew Cirne, serial entrepreneur on the future of Enterprise Software etc.

I really like New Relic founder (Lew Cirne) point of view about the evolution of business model with the web. Basically, massive sale overhead is not require anymore which lead to reduce drastically software cost and free resource to do better software. Most of the time, software satisfaction is low because monetary resource are sucked by so many overhead layers and isn't use to make better software. You should read his posts:

Software transition: recipe for a disaster

Everyone knows that software has a life cycle and dies at some point. If your software is part of your day to day operations, you can't fail in managing its transition. If you want to reduce the probability of success of the transition, here are some rules to follow:
  1. Don't plan transition
  2. Don't communicate transition plan if you have one
  3. Promote non-skilled people to decision positions
  4. Kill initiative/ignore message (ex: kill messenger and think the problem is gone)
  5. Avoid long term planning (ex: use argument like business moving too fast)
  6. Don't put a technical team lead
  7. Don't do follow-up of team requests
  8. Don't involve HR to smooth transition
  9. Don't hire pro-actively
  10. Don't prepare a B plan
  11. Don't involve and/or update your team on the transition plan
  12. Don't give overall project responsibility to anyone
  13. Stay in a reactive mode
  14. Don't communicate info in daily meeting
  15. Don't ensure you have a good pulse of your team
  16. Give too much power to people who don't understand software process
  17. Like Greenspan, dream the magic hand will fix everything magically (people might not compensate for bad decisions eternally)
  18. Expect people to stay
  19. Don't make difference between maintenance & development cost
  20. Let non technical people take technical decisions
  21. Ignore problems
  22. Don't recognize people work in crisis
  23. Allow managers to not be able to evaluate technical people
  24. Consider Indian outsourcing can solve everything
  25. Think people are easily replaceable
  26. Don't talk about carrier evolution to your crew
If you are lucky, you will have to replace your team one by one but they could resign all in a short time and put your business in a major crisis situation. Don't forget, there is no free lunch.