Saturday, January 16, 2010

Reviewing the Google Chrome

Google has invested a huge quantity of money and marketing for its Chrome browser. Sometimes people install it then use it without knowing that they changed their browser, by having only followed the link in the top right.

People install Chrome by clicking the link in Google page.

Many computer engineers know that this navigator has many advantages and technological power as being the fastest browser (for its Javascript interpreter/PseudoCompiler, and also from a usability PoV), the use of the best html/CSS engine (webkit), the SKIA library for showing graphics (few people know about this library now being called/integrated as chromium, firefox itself use cairo for rendering).

So, after all of this, is it only a bunch of technology assembled in disorder ?
From my point of view, and after having some human computer interaction courses, I started to view things in a different ways. And I have detected these points :

  • The application of Fitts Law

Tabs are placed in the top of the screen, so the virtual growth of buttons are bigger, and we can switch tabs a lot easier than the traditional way.
(Apple use the same law from ages having always the menu in the top of the screen)

  • Reducing human errors
People can make errors easily when trying to switch from one tab to another, when the width of the tab is too small, the probability of making the mistake of closing the tab rather than switching to it.
Google removes the close button when the tabs width is too small.

  • Better feedback

I really enjoyed the search function, when I search Google tries to indicate the word positions inside the document but also in the right and exactly in the sliding bar. Every small yellow line indicates the word position.

  • Better use of the screen

In Chrome, all the screen is used, no status bars, when there is a need to show something, it is shown using the needed place.

  • Better interaction :

When closing a tab, the next close button comes to the current mouse cursor to facilitate closing others. (closing tab is contagious ?)
The tabs are redrawn only when you move your mouse outside the tabs.

Being different form Firefox, Chrome have only one place to enter urls, text search and every things.
The browser is intelligent enough to know what the user wants.

  • Better usability :

In Chrome, every text input is resizable. When it is not wide as you need, just make it bigger.

Many other details exist (I speak about "Chrome only" features) and needs to be cited here, but these are the most important one.
This doesn't mean that Chrome is perfect. It has some problems dealing with RTL texts like Arabic sites that aren't shown correctly.
And the recovering of a crashed/closed browser (it exists but I feel it very bad). Some times I can't see the recovering button but in Firefox it is always present after a crash.

Visualization of Algorithms, how should it be ?

Last days, while I was teaching a student some sorting algorithms. I asked myself how can I explain it the easiest way. The evident solution was to use some visualization tips.
OK OK, I say some "InfoViz", but then, the big question would stay the same : HOW ?

According to the human-computer interaction course I have got, Humans don't react like machine, they should have "Mental Models" to manipulate information and resolve problems. We don't have one Human mental model but we are sure about some reactions.
According to (Philip Johnson-Laird, 1983), humans need examples to how a mathematical functions work (hmmm, we don't speak about math nerds here...), so when we see a formula, we need to play it on some examples in order to construct our mental model.

Visualization of BubbleSort algorithm on a sample data.

So, to understand an algorithm, we should see it running on a sample data step by step, and then we should select the best data to not fall in a trivial example and this is another problem...

But, why we don't add a step in between ?
We have the algorithm coded in some language in one side, and the algorithm running in the other side.
Maybe adding the visualization of the algorithm itself can help the reader constructing quickly his mental model and reducing the time needed to see the algorithm running on data.

Some people tried to visualize algorithms by translating loops directly using schematics like these :

Explaining the multiplication µAlgorithm inside the µProcessor and introducing the Booth Algorithm.

Another almost useless technique for visualization I have seen in a site

But can we mix the algorithm itself and the data manipulation in the same place ? I have produced this figure from my own thoughts but really, we should think in a new way than everybody is following.

Searching for a new and better figures to help construct quickly the mental model.

In the last figure, arrows explain movement, the limits are nicely seen and understood, and it is clear that the second variable start its position from i and not from zero.
Can we ameliorate this figure and prove this way of representation scientifically ?
Maybe it can be a good point to start from.