Michael Yuan

“Science is a wonderful thing if one does not have to earn one’s living at it” — Albert Einstein

January 20th, 2008

Is the prius hard to drive?

New York Times had an article on The Risk of Innovation: Will Anyone Embrace It?. Overall, I think the article made some excellent points on how people embrace or resist innovations. It is a great read for people who try to sell new technology solutions to the general public.

However, I think the primary example used in the article was all wrong: The article talks about how the controls in Toyota Prius are un-intuitive (e.g., tap twice to start the car), and customers embrace the inconvenience anyway since Prius represents the kind of “green” innovation people want to be part of. Well, as a Prius owner, I can tell you that the “un-conventional” control is exactly what prompted me to buy a Prius. If I want conventional controls, I would have bought a Camery Hybrid or a Civic Hybrid — neither of those hybrids are sold nearly as hot as the Prius. Why?

The Prius has a rather large price premium over a comparable Corolla. Even with gas price at $3 per gallon, it still makes little economic sense to buy a Prius over a Corolla. The Prius is a “statement car” or a “fashion car”. People buy it for the same reason they pay extra for a low end luxury car. It is hence essential for Toyota to distinguish the Prius from the Corolla — to make people feel that they are driving a totally different car, not only in gas milage but also in “look and feel.” I think the “feel” of an “futuristic” car is what made a lot people forking over the extra cash.

The “usability barrier” here accelerates the adoption of innovation rather than impeding it. I think this is lesson we could also learn in designing a consumer mobile application. :)

May 18th, 2007

com.sun.robot.humanoid — the Office Toy in JBoss/RedHat Austin

Phillip and I bought the "Java robot" from JavaOne, and decided to keep it in the office as an "office toy". This is easily the coolest geek toy I have seen in years. It can walk around, sit / get up, pick up stuff with its hands, speak / sing (plays any MP3), play video / games on its LCD screen, and even take pictures. It detects and responds to sound, visual objects, and colors. It can even automatically recognize and follow humans. Of course, it can be remotely controlled as well.

Picture 7.png

But the best feature of all is that the robot runs Linux and can be programmed via a simple Java API! There is a simple Java wrapper class that allows your application to interact with all sensors and motors on the robot. You typically run your application in a loop, and try to make the robot respond to events coming in from the sensors. I have not tried but here is some sample code from the SDK. You are smarter than the robot and can figure out what it is supposed to do. :) Isn't that COOL!

JAVA:
  1. Humanoid humanoid = Humanoid.getInstance();
  2.  
  3. ... ...
  4.  
  5. while (true) {
  6.   // Turn off the bright LED in the eyes.
  7.   humanoid.enableLED(false);
  8.            
  9.   // Look around.
  10.   humanoid.VISION.track();
  11.            
  12.   // Check for color red in vision field. Run to red.
  13.   if (humanoid.VISION.getTarget(Vision.RED)) {
  14.     // Turn on the LED in eyes to signal that it sees RED
  15.     humanoid.enableLED(true);
  16.                
  17.     // Advance on target.
  18.     humanoid.WALK.walk(Walk.FORWARD_GAIT1, 10);   
  19.                
  20.     // Are we at the bump?
  21.     If (humanoid.TOUCH_LEFT_FOOT_FRONT.isTriggered()||
  22.               (humanoid.TOUCH_RIGHT_FOOT_FRONT.isTriggered()) {
  23.       // We are done.
  24.       break;
  25.     }
  26.   } else {
  27.     // Do not see RED in current vision field -- so the robot moves around to search for RED
  28.     boolean wanderLeft = 1 != rand.nextInt(1);
  29.              
  30.     // Wander left or right
  31.     if( wanderLeft ) {
  32.       humanoid.WALK.turnRight(2);
  33.     } else {
  34.       humanoid.WALK.turnRight(2);
  35.     }
  36.              
  37.     // Walk forward a bit
  38.     humanoid.WALK.walk(Walk.FORWARD_GAITFAST, rand.nextInt(3) + 3);
  39.   }
  40. }
  41.  
  42. // Raise the arm to declare victory
  43. humanoid.SHOULDER_LEFT_SERVO.moveToPosition(
  44.   humanoid.SHOULDER_LEFT_SERVO.maxPosition() / 4,
  45.   humanoid.SHOULDER_LEFT_SERVO.maxSpeed());
  46.  
  47. // Take a picture of the RED target and display it on the LCD
  48. String pictureFile = humanoid.CAMERA.takePhoto(0);
  49. humanoid.CAMERA.displayImage(pictureFile, 5000);
  50.  
  51. // Say something
  52. humanoid.AUDIO.playClip(mission_accomplished.mp3);
  53. ... ...

The robot is BIG -- it was a challenge to bring it back from San Francisco. :) Just notice how big it is compared with Phillip's 19" monitor in the background.

Picture 6.png

Anyway, we have not officially started playing with it yet (product release deadlines! ;) ). I will continue to blog about it here in this blog as we discover its features. If you have ideas on applications, leave a comment -- we might implement it and post a video!

February 21st, 2007

The return of mobile browser (Nokia N80 screenshots)

As a Java (J2ME) guy, I have always been bullish on the "rich/smart" client when it comes to mobile applications. I have seen the rise and fall of WAP. The poor usability of WAP browsers and the lack of WAP content has nearly killed the platform. I have used Opera browser on my Nokia 6600 to access "regular" web sites. But it works unreliablly with T-Mobile's $5/mo all-you-can-eat data plan (t-zones), and frankly, the web pages do not look very good when they are "reformatted" by Opera to fit the small screen. In real life, I do not know anyone who uses a phone-based browser on a regular basis. People use voice, messaging, audio/video players, and specialized rich apps such as Google Local Mobile and Yahoo! Go, but not the browser. Given the vast amount of content available on the web, it seems like a huge waste ...

However, just as we are about to give up mobile browsers, two new phones changed my mind. First, of course, is the Apple iphone. It has a really impressive Safari-based browser. We all saw the demo and I will not bore you with the details. But then, I got a new Nokia N80 and tried out its browser. I have to say that it completely blown me away. I have been getting my usual news update (digg / slashdot / cnn / nytimes / dzones / theserverside / infoq / javablogs etc.) almost exclusively on this phone in the past week and the user experience has been supurb. So, what makes the web browser on Nokia N80 so great? Well, here are some of things I liked ...

* Renders all web sites with complex CSS and JavaScript. Well, a browser would not be very useful if it cannot render most of the web pages out there. This browser renders nearly all web sites I visited including this blog and most of the CSS/JavaScript heavy web 2.0 sites. The visual elements and layout of the site is rendered almost exactly as how they would appear on a desktop browser. It does not, however, work with heavy AJAX sites like the Google Map (but that is what Google Local Mobile is for :) ), or flash heavy sites like YouTube.

Digg home page (notice the visual elements and JavaScript-based ads are rendered)
Screenshot0007.jpg

New York Times home page (notice the layout is rendered correctly)
Screenshot0016.jpg

* Provides a thumbnail view of the entire page with one keystroke or while you are scrolling. Since most web sites are not designed for small mobile phone screens. A fair amount of scrolling with the joystick is typically needed to view the entire page. The browser has a very nice feature to display the whole page in thumbnail and show the region that is currently visible on the screen. This is especially useful if you are already familiar with the site and know what information you are looking for.

Scrolling view of this blog
Screenshot0006.jpg

New York Times scrolling view
Screenshot0014.jpg

* High fidelity screen. The screen resolution on the Nokia N80 is 352x418. It is incrediblly bright and crisp -- you can see tiny letters on it. Just checkout the above screen shots. That really helps viewing text intensive web pages. Yet, the screen size is just the regular mobile phone screen size. Actually, the phone is one of the smallest I have owned.

* Reformat text columns. Even the high resolution screen cannot accomodate large text columns on some web sites. Instead of requiring the user to scroll left and right to finish long lines of text, the browser reformats large text columns to fit inside the screen. That is very useful when you read news articles or blogs.

Read a story on New York Times
Screenshot0015.jpg

Read a discussion thread on digg
Screenshot0010.jpg

* Quick zoom in and zoom out. If you think the text letters are too small to see, you can quick zoom in and zoom out on any part of the page with few keystrokes.

Zoom out and move around on the digg home page
Screenshot0041.jpg

* Supports WiFi as well as GPRS/EDGE/3G. The browser works reliablly with my home WiFi and my t-zones GPRS service. To be able to use the fast WiFi network on my coach while I am watching TV is an important feature to me.

Select my home WiFi as the access point
Screenshot0013.jpg

* Deep integration with the phone. A big advantage of the built-in browser on the phone is that it integrates directly with other software components on the phone. For instance, if you open a picture in the browser, it would provide an option to save it as use as the phone's wallpaperl; if you open a MP3 file, the phone's built in MP3 player would kick in to play it and offer you a choice to use it as ringtone etc. I really miss this level of native integration when developing apps in the J2ME sandbox!

Download and play a MP3 file
Screenshot0017.jpg

Anyway, I just think that the Nokia NSeries phones have done some great innovation when it comes to mobile browsers. It is rumored that this browser is also based Safari (like iphone) and will be open sourced soon. I think that would be really exicting times ahead of us. :)

November 11th, 2006

The Prestige

We went to watch the move "The Prestige" today (Pre-order DVD). Very good movie. It is part scifi, part mystery, and part drama. The fast switching between threads and the back-and-forth timeline keep the audience on the edge all the time. (Remember, this is from the director who brought us Momento). This is simply excellent story telling. And there is a surprise ending where the magic is revealed and the real life begins -- "the prestige" -- so to speak.

ThePrestige.jpg

The real world rivalry between Nikola Tesla and Thomas Edison presented in the SciFi context is just hilarious.

Anyway, I like it a lot. If you are geek, you probably would too. :) Go watch it.