Friday, December 19, 2008

Microsoft Surface Applications

Surface technology is a promising innovation that produces an instant WOW reaction universally. While designing applications in this platform, your objective is to create an assessment in your customers that you provide technologically advanced solutions and at the same time provide valuable applications that will help them compete effectively in the market place. The objective of this paper is to provide a framework for discussing adoption strategies.

So, what does this new technology buy us that other technologies already in the market place do not provide? What is it that creates the WOW factor?
  1. Large display: This provides the ability to view large amounts of data. This is especially useful in analytical applications.
  2. Multi-Touch Screen Manipulation: Using multiple fingers and hands makes user-interaction simpler and more effective.
  3. Multi-User Collaboration: This is a huge paradigm shift that will open doors for radical applications.
  4. High Quality Images: This does to PCs what HD has done for TV.
  5. Integration with Mobile Devices: It can interact with cell phones, cameras, and other media devices.
  6. Identify Physical Objects: When an object is placed on the Surface, it can be recognized and interacted with.
  7. Holograms: This is futuristic, but coming soon

What are the boundaries and limitations for the applications we create? This is not a comprehensive list, but a beginning.
1. Security
a. Display of personal information
b. Multi-user interaction
2. Common area applications vs. confidential area applications
3. Table top vs. Wall mounted
4. etc.....

These are some good examples of early adoption of this technology:

  1. AT&T is the first to introduce surface apps in its retail locations.
  2. Popular Mechanics:
  3. Microsoft Blog:

Smart Clients

I heard a lot of talk about smart clients and so I decided to investigate what they are and this is a report of my findings. It is not a comprehensive study by any means, but it is an excellent starting point and lays down the framework for further research.


Smart Client
Smart client isn't a technology, and it isn't any specific architecture. It is a concept and a style of application that combines the best of both Windows applications and Web applications. They combine the best features of Windows desktop applications, such as rich user experiences and the ability to use local resources, with the best features of Web applications, namely the ability to be centrally deployed and managed.

Smart client means different things to different people. However, these four characteristics define a Smart Client application:

  1. Offline Capable: Smart clients provide users the ability to access critical business functions regardless of the availability or quality of a user’s network connection.
  2. Rich User Experience: Smart clients provide an interactive and highly responsive user interface. By moving some of the processing to the client, smart clients minimize the need to contact the server. Such applications are also called rich Internet applications (RIA)
  3. Intelligent Install and Update: Smart client applications manage their deployment and update in a much more intelligent way than traditional rich client applications. Applications can be updated while running and can be deployed on demand by clicking on a URL.
  4. Access Local Resources: A smart client may take advantage of the local CPU, memory, disk, or any local devices connected to the client, such as a scanner, telephone, or bar-code/RFID reader. But it may also take advantage of local software, such as Microsoft Office applications, or any installed line-of-business (LOB) applications that interact with it.

AJAX (Asynchronous JavaScript And XML) is a group of interrelated Web development techniques used for creating interactive Web applications or rich Internet applications. With AJAX, Web applications can retrieve data from the server asynchronously in the background without interfering with the display and behavior of the existing page.


JavaScript Libraries
These are typically open source libraries that can be incorporated into a Web application development environment with minimal effort. They provide innovative widgets, animation abilities, and developer functionality to simplify development of Rich Internet Applications. Some frameworks are more elaborate than others, and some of them even provide an IDE for development and test, which is typically not free. These libraries are browser independent.

Microsoft has introduced its own JavaScript library as a standalone component that can be used with Microsoft Visual Studio development environment. It has also been integrated into Visual Studio 2008, and the functionality can be used seamlessly in the development environment.

Examples include JQuery, SmartClient, Prototype,, MooTools, dojo, ASP.NET AJAX, and many more.

Plug-in Frameworks
Plug-ins are components that run within a browser and provide a sandboxed environment for the client application to function in. Plug-ins come with development frameworks to create Rich Internet Applications. These are typically commercial products and not Free Open Source Software (FOSS). They come with an extensive array of easy to use widgets integrated in the IDE, but sometimes they are very specialized for a specific purpose, like animation. They may also provide plug-ins for multiple operating systems, browsers, and devices. Because these are sandboxed environments, they do not provide direct access to local devices and resources.

Use of these technologies as the main UI development framework entails total redevelopment of the entire UI layer and retraining of developers in a new development paradigm. It also couples us very tightly to a vendor-specific technology.

Available Products

  1. Microsoft Silverlight: Microsoft Silverlight enables features, such as animation, vector graphics, and audio-video playback, that characterize rich Internet applications. It is compatible with multiple Web browser products used on Microsoft Windows and Mac OS X operating systems. A third-party free software implementation named Moonlight is under development to bring compatible functionality to GNU/Linux.
  2. Adobe Flex: This is a collection of technologies released by Adobe Systems for the development and deployment of cross platform rich Internet applications based on the proprietary Adobe Flash platform. Traditional application programmers found it challenging to adapt to the animation metaphors, upon which the Flash Platform was originally designed. Flex seeks to minimize this problem by providing a workflow and programming model that is familiar to these developers. MXML, an XML-based markup language, offers a way to build and lay out graphic user interfaces. Interactivity is achieved through the use of ActionScript, the core language of Flash Player.
  3. Sun JavaFX: JavaFX is a family of software products for creating rich Internet applications. The JavaFX products can build applications for desktop, mobile, TV, and other platforms. The primary component of JavaFX is JavaFX Script, a declarative language intended to make UI development easier to for programmers.

Mixed Mode Development Model
This is a development paradigm that uses both JavaScript libraries and plug-in frameworks. One strategy could be to use JavaScript for most of the functionality and use plug-ins (like Flash) where absolutely necessary. This provides the capability of using specialized components when required while retaining flexibility in development and runtime environments.

Other Vendor Technologies
These technologies are significantly different from each other and cannot be categorized with others.

  1. Windows Presentation Foundation (WPF)
    Microsoft’s WPF provides an entirely new programming model for building applications with a clear separation between the presentation layer and business logic. It provides the necessary tools and structure for UI designers and developers to collaborate effectively. WPF applications can be deployed on the desktop or hosted in a Web server. WPF provides an integrated multimedia development framework, resolution independence, smoother graphics through use of vector graphics, and usage of newer hardware features, like Graphical Processing Unit (GPU). For all these reasons, this can be considered a leapfrogging technology.
  2. Adobe AIR (Adobe Integrated Runtime)
    Adobe AIR is a cross-platform runtime environment for building rich Internet applications using Adobe Flash, Adobe Flex, HTML, or AJAX, that can be deployed as a desktop application. Adobe positions it as a browser-less runtime for rich Internet applications that can be deployed onto the desktop, rather than a fully-fledged application framework. Adobe AIR applications have to be packaged and installed on the client machines, and this can be done manually or via standard browser functionality.
  3. GWT (Google Web Toolkit)
    Google Web Toolkit is an open source software development framework to create applications in Java. These applications can be compiled into either Java byte code or AJAX applications. They can be run as desktop applications in the Java Virtual Machine or as Web applications.


Choice of technology is dependent on a variety of factors:

  1. New development vs. upgrading existing project.
  2. Available technical expertise
  3. Application usage paradigm
  4. In-house application vs. ISV model
  5. etc....


and many more....