:::: MENU ::::

Microsoft Surface – A big name for a small device

Back in 2008 when Microsoft revealed Surface in CES, there was much excitement around what this Minority Report age device could bring to the market. Now after 4 years of hopeful waiting, Microsoft comes up with yet another post-PC device, the Surface Tablet. Choosing a second-hand name and renaming the old thing is itself a curious matter.

I have to admit there is much to like about it, but it will need impressive Metro apps to become actually worth buying is what makes the next year or so quite interesting for Microsoft. Remember Blackberry Playbook?

Thinking positively, there are tribes of superstar .NET developers and Microsoft might be able to take back what Apple stole in the enterprise market with the recent iPad fever among executives. Office, Sharepoint, Dynamics, and other Microsoft flagship business software could really help Surface to get momentum. The enterprise deserves a nice and fully functional tablet that offers more than merely glits.

On the other hand, with the radically new Metro UI and having already both users and developers scared enough, we should just wait and see if this whole new “Cool Microsoft” revolution will steal the show or will be another Vista fiasco.

Speaking of fiasco, Microsoft competing with other vendors, could become an itchy situation between old friends who were buying the expensive and mostly underwhelming Windows OS for years.

At end of the day, I think the big dinosaur will survive. Microsoft looks at RIM as a cautionary tale (I hope). You can fail from trying too hard as much as you can fail from not trying at all (read RIM). I really hope that Microsoft pulls this one off successfully and get creative in their marketing department, who I suspect were hired from another galaxy.

How NOT to group your checkboxes

“Global Unsubscribe” shouldn’t be grouped with the others.

Here is to not making it clear for the user if you’re hiding an option on purpose or you’re just being lazy.

Based on the title, by checking “Global Unsubscribe” I actually want to receive “Global Unsubscribe”.


A recent school project got us excited to explore the idea of mapping the trees of city of Vancouver in a more practical way. My friends and I had a fruitful meeting today with @daeaves who has extensive information and experience in this subject.

There is a tree mapping platform, OpenTreeMap, to start with. It seems to be a well maintained code, it’s on Python and needs Tomcat for the starters.

Now I have see if we can use it as the base or it’s cheaper to get something started from scratch in-house. We don’t need anything complicated for the first phase, but as usual we enjoy (very) limited resources including time.

David had good insight and useful suggestions that I need to consider too.

We’ll see.

Playing with data structures in Ruby


I’ve been trying to sort a mixed array in Ruby the shortest way. Each element of the array by itself is a mixed array of a number and and a hash:

a = [
  [0, {:a=>"31", :b=>"21"}],
  [1, {:a=>"32", :b=>"11"}],
  [1, {:a=>"25", :b=>"19"}],
  [0, {:a=>"12", :b=>"10"}]
#sort by first item of each row (number)
a.sort{|x,y| x[0]  y[0]}
#sort by the first item in the hash
a.sort{|x,y| x[1][:a]  y[1][:a]}

Note: I initially posted this as a question on Stackoverflow and got different but correct answers.

Finding common elements

To find common elements between a number of arrays, simply add them to a hash and use the & operator, which creates a new array from two existing arrays containing only elements that are common to both arrays, omitting duplication. (See Techtopia)

a1 = [[1, 2, 3], [1, 2, 2], [2, 2, 3], [3, 2, 1]]
a2 = [[1, 2, 1], [1, 2, 2], [2, 2, 4], [3, 2, 1], [1, 2, 3]]
a3 = [[1, 2, 3], [1, 2, 2], [2, 2, 3], [3, 2, 1], [2, 2, 2]]
hash = {i1: a1, i2: a2, i3: a3}
common = hash.values.inject{|x, y| x & y}

What I can do with Ruby in just one line fascinates me.