Friday, July 11, 2014

The Power of Truth

Truth is the ultimate goal. It is above everything else what lightens the darkness of our days. This spiritual light brings hope to the darkest corner of the mind. In the End, it is the only thing to do. When we are born, we know nothing about this world. As we grow older, we aspire to know more because it is what allows us to feel fulfilled. It is the ultimate goal.

Truth steers us in the correct direction; without it we are aimless. How can we make the correct choices without the correct information? The only way to have knowledge of the future is to have true information about the present. It is the only way to move ahead in life. The group with the most perfect information about the present will be able to make the best move and attain the best position. On the long run, the only goal is to have more truth. This will guarantee success by being able to predict a future farther away and thus to lay trap for your enemy. Truth will create a true plan.

Tuesday, November 20, 2012

The Organizational Champion - You Need Champions to Win Championship

The organizational champion is someone who does not see leadership as an end in itself. A champion takes the lead not for himself, but for the good of the organization and the people within it. He does his job out of love for people rather than for his own selfish desire. He uses his own personal values to make decision for the benefit of all. A champion is an enlightened leader. A champion will always be looking for the best win-win scenarios. Champions are not a new breed of leaders; they have been around for century, but the newly fast-pacing world, which we are living in, makes them more relevant today.

Traditional hierarchical organizations are slow to respond to disruptive event because of the time it takes for the information to reach the top heads and for the relevant orders to get back to the bottom of the hierarchy. With champions at every level of your organization, the answer to a disrupting event is immediate because every champion will take matters into their own hand following the company values and their values to create an appropriate plan of action. This allows your organization to move faster and appropriately during difficult time by improving innovation at all level.

It might be an accurate description that managers would appreciate the impact of a champion on their team. However, cultivating champions and managing them require a greater commitment than simply overseeing transactional staffers who put in their time, meet their deadlines, and tend to do their task lists. Champions don’t respond to the usual management techniques. People with drive toward possibilities come alive in spite of fear or intimidation, certainly not because of it. Organizational champions think less about following procedures within a role and more about their potential to have an impact on a business and on a society. Champions don’t accept jobs. They accept missions. A job description on a sheet of paper is just a starting point for them.

Companies should have their fair share of champion. Presidents and CEOs should trust their champion with the more challenging tasks. The benefits far outweigh the risk. For more information about organizational champion, you should read “The Organizational Champion – How to Develop Passionate Change Agents at Every Level” by Mike Thompson.

Tuesday, November 06, 2012

The Art of Negociation

I found a pretty interesting article about the difference between cultures during negociation.

Power Distance
Geert Hofstede is an organizational anthropologist from the Netherlands who did his research within large, multinational corporations. It should be applied to negotiations outside commercial settings with care, but it is useful to look at it because of the dimensions of difference he identified across national cultures. Hofstede uses the idea of power distance to describe the degree of deference and acceptance of unequal power between people.Cultures where there is a comfort with high power distance are those where some people are considered superior to others because of their social status, gender, race, age, education, birth, personal achievements, family background or other factors. Cultures with low power distance tend to assume equality among people, and focus more on earned status than ascribed status. Generally, the more unequally wealth is distributed, the higher will be the power distance in any national setting. According to Hofstede, national cultures with a high power distance include Arab countries, Guatemala, Malaysia, the Philippines, Mexico, Indonesia, and India. Negotiators from these countries tend to be comfortable with
  • hierarchical structures,
  • clear authority figures, and
  • the right to use power with discretion.
Countries with a low power distance include Austria, Denmark, Israel, New Zealand, Ireland, Sweden, Norway, Finland, Switzerland, Britain, and Germany. Negotiators from these countries tend to be comfortable with
  • democratic structures and flat organizational hierarchies,
  • shared authority,
  • the right to use power only in limited circumstances and for legitimate purposes.

Sunday, December 18, 2011

Votator : A polling website using the Condorcet Method

I have relaunched the website It used the Condorcet Method with Schulze dropping. I find that it is the best and most fair technique to count vote.

I have made many improvement compared to the original website. Votator now support login and can now invite your friend to participate privately to your poll. There is no better way to make a quick group decision. ☺

Friday, November 18, 2011

Integer Math

Here is some C code to calculate the Greatest Common Divisor and the Least Common Multiple of an array of number. I hope you enjoy.

 Copyright (c) 2011, Louis-Philippe Lessard  
 All rights reserved.  
 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:  
 Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.  
 Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation
 and/or other materials provided with the distribution.  
 unsigned gcd( unsigned a, unsigned b );  
 unsigned gcd_arr(unsigned * n, unsigned size);  
 unsigned lcm(unsigned a, unsigned b);  
 unsigned lcm_arr(unsigned * n, unsigned size);  
 int main()  
      unsigned test1[] = {8, 9, 12, 13, 39, 7, 16, 24, 26, 15};  
      unsigned test2[] = {2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048};  
      unsigned result;  
      result = gcd_arr(test1, sizeof(test1) / sizeof(test1[0]));  
      result = gcd_arr(test2, sizeof(test2) / sizeof(test2[0]));  
      result = lcm_arr(test1, sizeof(test1) / sizeof(test1[0]));  
      result = lcm_arr(test2, sizeof(test2) / sizeof(test2[0]));  
      return result;  
  * Find the greatest common divisor of 2 numbers  
  * See  
  * @param[in] a First number  
  * @param[in] b Second number  
  * @return greatest common divisor  
 unsigned gcd( unsigned a, unsigned b )  
  unsigned c;  
  while ( a != 0 )  
    c = a;  
    a = b%a;  
    b = c;  
  return b;  
  * Find the least common multiple of 2 numbers  
  * See  
  * @param[in] a First number  
  * @param[in] b Second number  
  * @return least common multiple  
 unsigned lcm(unsigned a, unsigned b)  
   return (b / gcd(a, b) ) * a;  
  * Find the greatest common divisor of an array of numbers  
  * See  
  * @param[in] n Pointer to an array of number  
  * @param[in] size Size of the array  
  * @return greatest common divisor  
 unsigned gcd_arr(unsigned * n, unsigned size)  
      unsigned last_gcd, i;  
      if(size < 2) return 0;  
      last_gcd = gcd(n[0], n[1]);  
      for(i=2; i < size; i++)  
           last_gcd = gcd(last_gcd, n[i]);  
      return last_gcd;  
  * Find the least common multiple of an array of numbers  
  * See  
  * @param[in] n Pointer to an array of number  
  * @param[in] size Size of the array  
  * @return least common multiple  
 unsigned lcm_arr(unsigned * n, unsigned size)  
      unsigned last_lcm, i;  
      if(size < 2) return 0;  
      last_lcm = lcm(n[0], n[1]);  
      for(i=2; i < size; i++)  
           last_lcm = lcm(last_lcm, n[i]);  
      return last_lcm;  

Monday, September 05, 2011

Software Defined Radio - Radio420x

I have been working during the last few month on a high performance Software Defined Radio RF front-end called Radio420X. I am pleased to announce that the performance are awesome and that the product is now available for order. Check it out :

Friday, March 11, 2011

GTD - day schedule

This is a typical day of a stress free "Getting Things Done" user. ☺

Saturday, March 05, 2011

Getting Things Done: The Art of Stress-Free Productivity

I have recently discovered the GTD philosophy (Getting Things Done). It has helped me live a stress-free life and increase my productivity. It really do works!

You will learn more about GTD at and

I have my own flow chart to process incoming request and information. It is based on the one suggested by GTD but with a few added tweak. I though I'd share it with you.

Wednesday, September 30, 2009

Fast average calculation for website

In this article, I will explain how to efficiently calculate the average user rating of a zillion post or more generally how to calculate an average value when data comes at interval and the average need to be recalculated every time.

The arithmetic mean is calculated using the following formula :

If we add another value the formula becomes :

The interesting part is how we can calculate the new value B from the last average value A :

We need 3 values to calculate the new average : the last average, the last count of values contained in the last average and a new value to be considered. Put simply, we need to multiply the last average by the number of value in it and add the new value to be counted in the average. Then we divide the result by the new number of value in the average.

This is good enough method to calculate an average. It's a bit less precise than the usual method because of rounding error, but it's still much more precise than needed for any website use. Off course, you would need to store the average and the value count in a DB.

Monday, September 07, 2009

Pyrit - WPA PSK security and FPGA

Pyrit is an open-source tool allows to dictionary attack a WPA PSK handshake. I'm fairly impressed. It is written in Python and uses C bindings to do the crunching work. It's also able to use OpenCL, NVIDIA CUDA and ATI Stream to speed up 10x the calculation.

I believe a FPGA could be used to speed up even more the calculations. In any case, that is left to see. I'll be working on a VHDL prototype during the next few weeks.

Monday, June 15, 2009

Evolving Building

I saw a documentary about the conception of the Burj Dubai Tower. It was pretty impressive. They showed how they tested the structure using test model and computer simulation. They iterated through many variations of the structure during many years.

I recognize a pattern in this. This methodology is similar to Genetic Algorithm. A genetic algorithm uses a simple natural process.

  1. Generate new solutions to the problem

  2. Test the solutions

  3. Eliminate unworthy one

  4. Repeat until the best individual is good enough

Like in any other industry, I believe it would be beneficial for architect to use tools that would accelerate their works. This is not a totally new idea as it have already been applied to city planning. The architect would input in the software the constraint imposed by the location of the building. Then the software would generate new solutions from the nearly infinite pool of possibility. The tough part is to design a fitness function (a mathematical function that define how good a building design is) that would contain the intricate knowledge from the master architect. I strongly believe that computer simulation would accelerate tall building design. I'm adding this to the list of my research interest!

Tuesday, June 02, 2009

Windows 7 first impression

For now, I had no major problem. The install went smoothly. It took 2 reboots and about 20 minutes for Windows 7 RC1 to install. The first thing I have noticed is that the driver for my video card is integrated (NVIDIA) so I don't have to suffer from a low resolution during the install of the various device drivers.

Here a list of new functionalities or changes I've noticed:

  • Better organized control panel

  • The ability to burn .iso CD image directly from Windows

  • New task bar. The windows group by task (application) and are merged with the quick launch bar

  • Microsoft Paint have been updated (Nice!) ☺

  • I find the overall GUI to be smoother

  • I can't find how to deactivate windows 3D effects which I find annoying

more later

Wednesday, May 20, 2009

A web site launch

Today, I'm launching a new web site : It's not quite like other poll web site you can find on the Internet. Most of them use simple majority to find the winner to a poll or rank the poll's choice according to the % of vote they get. Instead, uses a new method (1997, relatively new for the voting theory community), the Schulze method. It allows the poller to gather and consider the whole range of voters preference.

Let me explain a bit. Usually when you take a poll, you only give your favorite choices out of a list of a few choices, but Votator asks the user to rank the choices from first to the last using an intuitive GUI. Then, Votator uses this information to rank the choices from first to last. It ranks the candidates by comparing every candidates with every other candidates, so it counts how often a candidate is ranked better than another candidate in every ballot. When a candidate wins in this fashion against every other candidate he is considered the winner.

I hope you enjoy using this tool.

Friday, February 27, 2009