samedi, janvier 15, 2011

HTML5 & CSS3 READINESS

Here is an interestzing way of displaying information I found at http://html5readiness.com/
Click on the image below to dynamically see data:

vendredi, janvier 07, 2011

Dimensions Treemap using Protovis

Based on Treemap from protovis design in javascript, I have now a treemap with 3 dimensions.

Click on the image below to see it in action (because my post does not allow it to be dynamically displayed).



3 Dimensions are:
  1. definition of groups that share the same kind of color
  2. each square with it's area
  3. each square is more or less dark and more or less saturated
This is something that you I use to display a status of issues on a bunch of projects. For instance we develop several keyboards and mice at the same time.
  1. The yellow group of color could group all keyboard projects.
  2. square area is proportional to the total number of bugs for this project
  3. square darkness and saturation/alpha is proportional to the number of open bugs for this project

lundi, décembre 27, 2010

Chinese language to dominate the internet

What is interessant in the format of this visualization is earth at the center that stresses the fact that we are talking about world wide statistics.

We can also notice how internet growth in China is presented as a subset of the first graph.

jeudi, décembre 09, 2010

How to conduct a braimstorming session

Before brainstorming session:
·         Define a one sentence clear and focused objective.
·         Choose participants
o    Select a diverse and eclectic team
o    assign leader role (who is also a timekeeper)
o    assign script role (to write ideas on whiteboard)
·         Prepare material
o    whiteboard
o    clean wall
o    lots of post-it notes and markers

During actual brainstorming session:
1.     Write the one sentence clear and focused objective on white board
2.     Let wild ideas flowing
·         script writes ideas as they come on another whiteboard (meanwhile ideas are also written on post-it notes)
·         probably ideas will start with the most rational ones, but don't stop at the 1st good idea that comes, spend more time than you think, letting people write and post their ideas
3.     Classify/group ideas written on post-it notes by main topic
4.     Precise/detail main objective in SMART statements
5.     Remove ideas that cannot fit SMART objective 
6.     Vote on remaining ideas
  1. Assign actions items to follow on most promising ideas

lundi, novembre 01, 2010

Logitech Wireless Solar Keyboard K750 Firmware

Our keyboard embedded software team built the firmware for the Logitech Wireless Solar Keyboard K750. It was a tough project, because while we have extensive experience at Logitech Switzerland to use and manage regular and rechargeable batteries, here, we entered new area ... under the Sun.


Here are some of the new challenges that we had to tackle:
  • How much solar cell space do we need for an average user?
  • Who is the average user, someone living at the equator or a norvegian living above the polar circle?
  • Where do people work at home, in a cellar or near a wide window?
  • How long shall the keyboard work in total darkness?
  • How big should we make the energy reserve?
  • How to increase "battery" life by decreasing power consumption while keeping good keyboard performance?
The small energy reserve (a button battery) has electrical characteristics that are quite different from the batteries we were used to (especially the battery internal resistance). This had great impacts on the firmware which was "asked" to optimize power consumption, latencies, etc...

For instance we cut power supply if you leave a book on your keyboard. If we did not do that, you would temporary "kill" your keyboard until sufficiently recharged, which may take quite a long time depending on the light it gets.

We also worked closely with the software team for defining and developing a solar widget. We added a very basic "luxmeter" to measure the light that the solar cells are receiving. This is a gadget that was not required to have the keyboard working, but we felt it was a nice to have for users. Now for those who are using the keyboard at Logitech, we like to measure our light environment from time to time.

I hope we tackled all issues successfully. The customers will tell us, and we are eager to get their feedback through forums or Amazon.
Read more on Logitech's blog here.

vendredi, octobre 29, 2010

A history of world GDP

Unknown source :(

What would have been good is to have a definitions of the countries boudaries accross time. Anyway it gives a good idea of the trends.

vendredi, septembre 24, 2010

generating Innovation by linking different fields

About the T9 inventor:
King had an uncanny ability to look at problems from various angles, discovering new ways to solve complex issues, recalled Mason Boswell, a Seattle patent attorney who worked closely with the inventor.

“He would often ask questions that connected two fields in a way I had not thought of but that clearly pointed the way to interesting innovation,” said Boswell. “He also had a point of view five to 10 years into the future, thinking about devices in a way that transcended current hardware limitations and going more to what could be common down the road.”

Read also about Triz: http://en.wikipedia.org/wiki/TRIZ

lundi, juillet 26, 2010

Creativity is not top priority for the emergence of an innovation culture

Posted by: innovtoday @ http://innovtoday.wordpress.com/2010/07/06/creativity-is-not-top-priority-for-the-emergence-of-an-innovation-culture/

An injection of creativity serum for all employees – if such a thing was ever invented – is not what the enterprise seeking to become more innovative needs ... So, if it is not creativity, what will make the difference? My top-three critical success factors are:

* Setting the strategic challenge
* Getting out and making connections
* Driving ideas through the stage-gate.

vendredi, juillet 23, 2010

Apple an innovative company

By John C. Dvorak 
From the iPod to the iPhone to the iPad, Apple has a nearly perfect track record of re-energizing lackluster product spaces.
Apple is doing nothing more than addressing exactly what is wrong with all of the previous initiatives.

jeudi, juin 17, 2010

searching for a director job position: do not forget professionals...

I am heavily involved in social networking (LinkedIn, Viadeo, Xing, Rozee), and I noticed that job positions at director's level often do not appear in "standard" social networking sites.

The best way to find these director job position is to send your resume to "professional" recruiters, such as  Hays, Michael Page & co.

mardi, juin 01, 2010

2010 - Trends of next years: oil spills, strikes in China...

Oil spills: worse may be to come...
Worse may be to come. One industry insider, who asked not to be named, said: "Major spills are likely to increase in the coming years as the industry strives to extract oil from increasingly remote and difficult terrains. Future supplies will be offshore, deeper and harder to work. When things go wrong, it will be harder to respond."

Wage raises and first strikes in China
FOSHAN, CHINA/TOKYO, May 31 (Reuters) - Workers at a strike-bound Honda Motor parts factory in southern China pressed on with a drive to win higher wages on Monday while the carmaker lured back many to partly resume production. read more

guardian.co.uk, Friday 28 May 2010 at Foxconn in Longhua, Guangdong province
And this morning the firm raised the base salary by 20%, which labour activists say will keep it narrowly ahead or in line with a rise in the minimum wage. read more

Chinese wages pose questions for exporters: Analysts at UBS, for example, estimate that Foxconn’s 30 per cent wage increase will translate into a 20 per cent reduction in company earnings this year. read more

vendredi, mai 07, 2010

Liz Taylor knows it...

 Andy Warhol wrote : "What’s great about this country is that America started the tradition where the richest consumers buy essentially the same things as the poorest. You can be watching TV and see Coca-Cola, and you know that the President drinks Coke, Liz Taylor drinks Coke, and just think, you can drink Coke, too. A Coke is a Coke and no amount of money can get you a better Coke than the one the bum on the corner is drinking. All the Cokes are the same and all the Cokes are good. Liz Taylor knows it, the President knows it, the bum knows it, and you know it.........." The Philosophy of Andy Warhol (From A to B & Back Again)

mercredi, avril 21, 2010

An History Of Inventors

Good insight into inventors personality and more generally on the way innovation occurs.

mardi, avril 20, 2010

dimanche, avril 11, 2010

3 most important questions to ask as a recruiter or to answer as a job applicant

 All questions asked during an interview for a job come down to one of the 3 following questions:
  1. Can the person do the work (qualifications)?
  2. Will the person do the work (motivation)?
  3. Will the person fit in company/team (adaptability)? 
The goal of the interview is that the interviewer has a clear view on answers on these 3 questions.

Read details and slightly different views here:
Ms. Sarah Zulfiqar wrote: We look for the following 4 A’s in a candidate:
  • Attitude (behavior and posture)
  • Appearance (attire and expression)
  • Aptitude (skills and talent)
  • Agility (communication skills)
Generally an individual excludes the first 2 A’s and concentrate on the last two. Observing the attitude of the interviewee helps the interviewer to determine if the candidate will fit in the prevailing organizational culture and environment. Appearance indicates interviewee’s interest towards the job and respect for the employer. According to a wise saying “You dress for the person you are going to meet and not for yourself.”

    jeudi, avril 08, 2010

    lambdaj errors explained

    java.lang.IllegalAccessException: Class ch.lambdaj.proxy.ProxyIterator can not access a member of class XYZ with modifiers "public" at line forEach(products_byname).cropDefects();
    assuming List products_byname = new List();
    means that class Product should be made public.

    java.lang.IllegalAccessException: Class ch.lambdaj.proxy.ProxyIterator can not access a member of class XYZ with modifiers "" at line forEach(products_byname).cropDefects();
    means that method cropDefects() should be made public.

    java.lang.RuntimeException: It is not possible to create a placeholder for class: java.lang.reflect.Field at line List l_null_fields = select(l_fields,having(on(Field.class).get(this),nullValue())); means that you encountered a Limitation of lambdaj caused by the Java language specification because Field is a final class.


    java.lang.IllegalArgumentException: forEach() is unable to introspect on an empty iterator. Use the overloaded method accepting a class instead at line forEach(defects).updateBugActivity(stateArray); means that you encountered a Limitation of lambdaj caused by the Java language specification because defects is an empty list.

    mercredi, avril 07, 2010

    Java program using lambdaj


    Today, I did the same thing (i.e. no for or while statements), but using lambdaj java library.

    There is still a for statement but if you make country as an object and not a string then you can use lambdaj features.

    1 Have a list of people belonging to various countries:
    European people: [Eric from France, Martine from France, John from Great-Britain, Martha from Great-Britain, Carine from France, Gerd from Deutschland, Giuseppe from Italia, Martha from Deutschland]

    2 Get the different countries:

    European countries: [Great-Britain, France, Italia, Deutschland]

    3 List the people that belong to each country
    :
    People from: [France]: [Carine from France, Eric from France, Martine from France]
    People from: [Deutschland]: [Gerd from Deutschland, Martha from Deutschland]
    People from: [Great-Britain]: [John from Great-Britain, Martha from Great-Britain]
    People from: [Italia]: [Giuseppe from Italia]

    Here is the code:
       1 import static ch.lambdaj.Lambda.*;
       2 import ch.lambdaj.group.*;
       3 import java.util.List;
       4 import java.util.Arrays;
       5 import java.util.Set;
       6 
       7 
       8 public class Europeans1 {
       9 
      10         static List<People> l_europeans = Arrays.asList(
      11                         new People("Eric", "France"),
      12                         new People("Martine", "France"),
      13                         new People("John", "Great-Britain"),
      14                         new People("Martha", "Great-Britain"),
      15                         new People("Carine", "France"),
      16                         new People("Gerd", "Deutschland"),
      17                         new People("Giuseppe", "Italia"),
      18                         new People("Martha", "Deutschland"));
      19 
      20         public static void main(String[] args) {
      21                 System.out.println("European people: "+l_europeans);
      22                 Group<People> g_countries = Groups.group(l_europeans, 
      23                         Groups.by(on(People.class).getNationality()));
      24                 Set<String> set_countries = g_countries.keySet();
      25                 System.out.println("European countries: "+set_countries);
      26                 for(String s_country:set_countries) {
      27                         print_inhabitants(s_country);
      28                 }
      29         }
      30 
      31         static void print_inhabitants(String s_country)  {
      32                 System.out.print("People from "+s_country+": ");
      33                 List<People> l_inhabitants = select(l_europeans,
      34                         having(on(People.class).getNationality(),
      35                         org.hamcrest.Matchers.equalTo(s_country)));
      36                 forEach(l_inhabitants).printFirstName();
      37                 System.out.println("");
      38         }
      39 }

    dimanche, avril 04, 2010

    Java vs Haskell


    At that time I did not know it, but I was doing some kind of functional programming. I discovered Haskell a few weeks ago, and I duplicated what I did in Java.

    As you can guess the Haskell code is way shorter, and goes even a little further.

    1 Have a list of people belonging to various countries:
    European people: [Eric from France, Martine from France, John from Great-Britain, Martha from Great-Britain, Carine from France, Gerd from Deutschland, Giuseppe from Italia, Martha from Deutschland]

    2 Get the different countries:

    European countries: ["Deutschland","France","Great-Britain","Italia"]

    3 List the people that belong to each country
    :
    People from: [France]: [Carine from France, Eric from France, Martine from France]
    People from: [Deutschland]: [Gerd from Deutschland, Martha from Deutschland]
    People from: [Great-Britain]: [John from Great-Britain, Martha from Great-Britain]
    People from: [Italia]: [Giuseppe from Italia]

    Here is the code:
    import Data.List
    import Data.Function

    le = [
    ("Eric", "France"),("Martine", "France"),
    ("John", "Great-Britain"),("Martha", "Great-Britain"),("Carine", "France"),
    ("Gerd", "Deutschland"),("Giuseppe", "Italia"),("Martha", "Deutschland")
    ]

    dla xs = "European people: " ++ show [ fst x ++ " from " ++ snd x | x <- xs]
    lc xs = [ head y | y <- group(sort([ snd x | x <- xs]))]
    dlc = "European countries: " ++ show(lc le)

    lpc5 xps = groupBy (\x y -> snd x == snd y) (sortBy (compare `on` snd)([ xp | xp <-xps ]))
    lpc9 xps = unlines [ "People from " ++ show (snd (head xp)) ++ ":" ++ (show [fst x | x<-xp ]) | xp <-xps ]
    fait9 = do { m <- [lpc5 le]; lpc9 m }
    dlad = [ dla le, dlc, fait9 ]

    main = putStrLn (unlines(dlad))