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.

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))

    mercredi, mars 24, 2010

    Getting Haskell XML Toolbox to run on windows

    First of all, as of today (march 2010), you have to use the version 8.3.2.
    you'll need to install tagsoup-0.6: link
    cabal install tagsoup-0.6

    then you'll need to install curl:
    basically it does not work.

    you must install cygwin with curl libraries installed.

    running cabal install curl under cygwin will give you some errors even when following these advice: Installing curl from hackage on Cygwin
    but do the asked copy anyway because, it maybe useful for the final solution.

    you can also try to run these commands instead of running cabal link
    download curl from http://hackage.haskell.org/packages/archive/pkg-list.html
    cd xxx/curl-1.3.5
    runhaskell Setup.hs configure --extra-include-dirs=c:/SandBox/cygwin/usr/include --extra-lib-dirs=c:/SandBox/cygwin/lib
    you'll get an error but continue with the next commands.
    runhaskell Setup.hs build
    runhaskell Setup.hs install
    it will tell can't find curl lib.
    I can also remember that I had to hardcode some values in curl.c because it could not find the ones defined in curl.h

    What I finally did, and I think that is the only thing you need to do:
    get the win32 generic version of libcurl from http://curl.haxx.se/download.html : http://www.gknw.net/mirror/curl/win32/curl-7.20.0-devel-mingw32.zip
    extract the zip
    copy all the lib/*.lib in the lib directories from cygwin and haskell_ghc
    copy bin/*.* in the cabal_haskell/bin directory where tagsoup.exe is already present.

    install hxt
    then either run cabal install hxt-8.3.2 or download the hxt package and run
    cd xxx/hxt-8.3.2
    runhaskell Setup.lhs configure
    runhaskell Setup.lhs build
    runhaskell Setup.lhs install



    vendredi, mars 19, 2010

    Getting Haskell Running on Eclipse - 2010 updated

    I wanted to get Haskell running on Eclipse so I tried to do as the video below is saying:

    The problem I got when following the video is that it did not work exactly as shown, so, here is my modest contribution to give additional hints on how to have Haskell running on eclipse.

    install haskell eclipse plugin
    get http://hackage.haskell.org/platform/
    install
    get http://cvs.haskell.org/Hugs/pages/downloading.htm
    install
    get http://www.haskell.org/cabal/download.html
    execute "cabal" in a dos windows and follow instructions
    http://imonad.com/blog/2009/10/installing-haskell-plugin-for-eclipse/
    in C:\Program Files\Haskell\bin
    execute "cabal update" in a dos windows
    execute "cabal install scion" in a dos windows
    in C:\Program Files\Haskell\bin you should find scion-server.exe that you'll need it in haskell preferences.

    dimanche, février 28, 2010

    Innovation: a bunch of posts that I appreciated

    Innovation for the Long Term (Three Horizons model)
    3 Horizons:
    • Horizon 1: Extend and defend core businesses
    • Horizon 2: Build emerging businesses
    • Horizon 3: Create viable options
    How this could apply to Google for instance:

    • How can we leverage our core competencies to tackle this new market?
    • How much money can we make and whats the plan to make it?
    • Have you done enough research on the idea and do you need more money to make it happen?
    • Who else is doing this, and if no one is, why?
    • How big is the market and will consumers want this solution?

    • observe
    • build something somewhat different
    • experiment and learn faster

     

    Using rivalry to spur innovation

    Less in line with mainstream R&D practices: the degree to which Renaissance creativity was built on professional rivalries—like the ones between Leonardo, Michelangelo, Raphael, and Titian—that are commonly viewed as some of the most productive in history. It may be that by overlooking the potential of rivalry, modern R&D organizations are missing an opportunity to promote ground-breaking innovation.


      mercredi, février 24, 2010

      Future of Requirement Management Tools

      I've been looking at Requirement Management tools for 5 years now.

      Requirement Management tools are all evolving towards a common view. They now offer the same kind of functionalities, in a similar way.

      For instance, a few years ago, for most of the tools, the way to present requirements was only available as a list of requirements title. To look at the requirements details, you had to click on the specific requirement.
      Now most of them, are offering a "word document view", where requirements can be displayed as a word document with chapters.

      In the future, my feeling, is that what will be important is, not the functionalities offered by the tool itself, but the level of integration with test management, change/bug management and code source file management tools.

      One of the main functionality of a Requirement Management tool is traceability. Traceability between marketing and technical requirements and specifications. This is today handled correctly by most RM tools, but an advantage comes when you can also link requirements with tests and build some test coverage tools for instance.

      And we can go further by extending tracceability to changes/bugs and even source file.

      Here is a view that summarizes my point:

      One of CMMI Requirement Management specific practice says: ["SP 1.4 Maintain Bidirectional Traceability of Requirements" - Maintain bidirectional traceability among the requirements and work products.].
      Using closely linked/integrated test management, change/bug management and code source file management tools is an "easy" way to achieve this goal.