After read the MSDN documentation for SDK. I installed the SDK example on the device and tested them out. Microsoft provides two ways to programming Surface device. WPF and XNA.
There are some WPF controls for Surface. In my opinion, the most usable control is the scatter view. Anyway, the scatter view makes multi-person application possible. XNA can certainly be used in applications which are not game related, however, most of the time, WPF is sufficient to build a decent application.
Drag and drop action is no longer fancy for programming. So the first demo application I looked into is the Item Compare, which utilize the vision system to interact with physical object. The logic of the application is fairly simple. It reads the value of the tag as a key to search the corresponding content from an external XML file and then display the content to users. This is the basis which other applications can build on. Your applications can use tagged object as basic look up key, or you can implement different command based on tag value. For example, value 01 will trigger music function, value 02 will start video stream and put value 01 and 02 both on the screen will fire zoom in event.
Problem found about tagged object. Using Data Visualizer to test the value of your tagged object. You will find that if the tag is not flat enough or too thin(just a piece of paper) will cause the vision system to get incorrect tag value.
Problem found in other sample application.
1. The elapsed time which the system fired for touch point move event is too long to catch the speed of finger move. If you try ink canvas then you would find that if you draw a line using your finger in a very fast speed then there will be a lot of small gap among the line.
2. The user experience to scale, rotate, move controls(image, video etc) is not smooth and responsiveness enough. Especially the rotate and move action, the lag is too obvious to have decent feedback. However, it would be over killed to override the default animation function.
From next post I will start doing some small demo applications which are related to my project - interactive board for indigenous community. The proposed application is a big map which is the area of the indigenous land. So indigenous students can touch mountains, rivers to learn the history of their home. Thus, the current task is to find out how to build the map.