[Barcamp slide] new things in interface design with Modern UI style applications

oday, I have a presentation in Barcamp Sai Gon 2012 about the “Modern UI” and the new things it brings to the interface designer. I have shared it in my SkyDrive and everyone who is interested in can see online now. This is its content.

  • About the name of “Modern UI” and the name of “Metro”
  • The different views of a Windows 8 Modern UI styled application: portrait view, landscape view, snapped view and fill view
  • New navigation UX with Semantic Zoom, FlipView control and Group ListView/GridView
  • New commanding UX with the Appbar and the Charms
  • New application output message system

Well, this is my slideshow. Feel free to leave any comment here to help me improve it.

Tips: Get the color value of a single point in the Adobe Illustrator

One day, when design the landing page of my new project, I have a trouble when trying to get the color value of a point in Adobe Illustrator with the eye drop tool. It returned me the gradient pattern of the source object instead of the only color value of the pixel. After a quick search, I found a simple way to solve this problem.

The case-study

This section describe my situation, if you just want to know the solution, you can jump to the next section.

We have two objects in the AI window, one is filled with a gradient. Now, we want to fill the target object (the circle) with the color of a point in the source object. As a result, we have to know the color value of that point.

The case-study: what is the color of that point?
The case-study: what is the color of that point?

The first thing I think to do is looking at the Info panel (Ctrl + F8). However, as you can see in the figure below, the Info panel does not show the color value of the current pixel, but the pattern (color, gradient or pattern name) of the file and border of the source object.

 The Info panel with the soure object selected
The Info panel with the soure object selected

If we use the Eye drop tool (Ctrl + I) now, the target object will have the same border and fill pattern as the source one, when what we need is only the color of a specified point (or pixel).

The eye drop tool with the target object selected
The eye drop tool with the target object selected

The key of the magic

Yep, this is exactly what most people desire when looking at this post. To get only the color of a point (or pixcel) instead of the whole pattern of the object it belongs to, we press Shift key when using Eye drop tool. See the figure bellow. The fill color of the target object is a solid color now, not a gradient anymore.

 The eye drop tool with the magic key
The eye drop tool with the magic key

Note: I use Adobe Illustrator CS4 in this example, I don’t know what happens in other version, but I think there will be not many differences.

Type binding comparision

The concept of binding and type binding

In general case, binding is an association, such as between an attribute and an entity or between an operation an a symbol – Concept of programming language 9th Edition. A binding can take place at language design time, language implement time, compile time, load time, link time or run time. We call the time when the binding takes place is binding time.

Before referencing a variable, the variable must be bound to a data type – what we call a type binding. Base on the binding time and how the type is specified, we have some kinds of type binding:

  • Static binding: the binding first occurs before run time and remains unchanged through the program execution. There are two type of static binding:Explicit static binding: the programming language set the type of a variable by using some statement which list variable names and specify that they are a particular type.

    Implicit static binding: the variable type is set by a default convention instead of a declaration statement.

  • Dynamic binding: the type of a variable is specified in an assignment statement. It can be changed during the program life.

Static binding: explicit vs. implicit

Explicit static binding Implicit static binding
reduce the reliability: prevent the compilation process from detecting programmer errors
A namespace can be used to avoid some disadvantages. The name of a specific type must begin with a particular special character.
Some languages Most programming languages designed since the mid-1960s (except Perl, JavaScript, Ruby an ML) Fortran (when not explicitly declared), BASIC

Static binding vs. dynamic binding

Static binding Dynamic binding
Cannot process data without knowing the data type Provide more programming flexibility: we can write a program working with a variable even when we have not known its type yet.
The compiler can detect the fault in type binding time. However, some languages such as Fortran, C/C++ which have some rules to automatically convert the type of the RHS to the type of type of the LHS have the same disadvantage as using dynamic binding Reduce the reliability: the error detection capability of the compiler is diminished. Incorrect type of the right side of an assignment is not detected as an error; rather, the left side is converted to the incorrect type.
The cost of implementation The type checking ran before the run rime, so there is no cost of type checking in the program execution. The type checking must be done at run time, which requires the variable must have a addition descriptor and makes the storage used for a variable must be variable
Usually use complier Usually use interpreter due to the difficulty of building machine code without knowing the type of operants
Some languages C/C++, Java, Pascal, Fortran, BASIC JavaScript, PHP, Python

Setup development evironment for SCALA 2.9 and Netbeans 7.0 in linux (Ubuntu 11.04)

Install scala

  • Go to https://www.scala-lang.org/downloads and get the tgz package for Unix, MacOS X, Cygwin. The current latest stable release is scala 2.9.1
  • Suppose that the downloaded package is in your home directory, open the terminal and type these lines:
    $> tar -xvf scala-2.9.1.final.tgz
    $> sudo mv scala-2.9.1.final/ /usr/share/scala/

    Remember to replace the 2.9.1 by your scala version

  • The next thing to do is register the SCALA_HOME and PATH environment variable. To do this, open the ~/.profile file and add these new lines to the end of the file
    export SCALA_HOME=/usr/share/scala
    export PATH=$PATH:$SCALA_HOME/bin
  • Log out and the log in again. Test you installation by typing this command in the terminal. If the terminal change to scala> then you have successfully installed scala.
    $> scala

Install the Netbeans plugin

I use the nbscala plugin to develop scala projects. To use this plugin in Netbeans 6, you can use the Netbeans plugin management in Tools > Plugins. For Netbeans 7.0, you can do as below:

The first scala application

Now, you can create your first scala project in Netbeans. Just create a new project and keep the default settings, you will have a Hellow world scala application. Click Run. If the the string Hello world is printed in the output then your Netbeans is ready.

Review – CityLife 2008 – Great city building simulation game for middle class computer

System requirement


System: Intel Pentium IV 1.5 GHz or equivalent
RAM: 256 MB
Video Memory: 64 MB
Hard Drive Space: 4000 MB
Operating System: Windows XP/Vista/7


System: Intel Pentium IV 2.5 GHz or equivalent
RAM: 512 MB
Video Memory: 128 MB
Operating System: Windows XP/Vista/7


CitiLife 2008 is a city building and management simulation PC game with the modern-date context. I’m using a middle class computer with on-board graphic card and have tried the following three games: Sim City 4 (and its expansion Rush Hour), Sim City Society (and its expansion Destination) and CityLife 2008. In my opinion, CityLife 2008 has many good point when compare with the others.

HDD space required

Only need 4GB HDD space, CityLife 2008 requirement is acceptable when comparing to others city sim games, for example, CityLife XL take over 8GB space in your HDD or Sim City Society with 3GB required.


Although Sim City 4 has a lower system requirement for graphic, the game does not run as smoothly as CityLife 2008, especial when our city becomes larger. Besides, the Sim City 4 is a very old game and it does not support 16:9 wide screen. Its brothers, Sim City Society have a great graphic, but, it take so large RAM when the city and doesn’t for computers like mine.


The main goal when playing CityLife 2008 is to reconcile the relationship between six social class: Elites, Suits, Blue Collars, Have-Nots, Fringes, vĂ  Radical Chics. A long with widen your city area, you have to support the minimun demand of each class and avoid cultural conflict in you city.

First person camera angle

This is a interesting feature of CityLife 2008. You can “walk” the streets, take a look at the harbor, views the citizens daily life, … as you are in the city yourself. Sometimes, you can take beautiful snapshots and share them with your friends.

Transport system

There is only road transport in CityLife 2008. But, you can construct you road system more freely. The corners are not just right angel, it can be any angel as you want. There is not traffic jams in CityLife 2008.

The last thing in this post, this is my screenshot folder on picasa https://picasaweb.google.com/letrunghieu.cse09/Citylife2008Screenshot?authuser=0&feat=directlink