Saturday, November 08, 2008

The future is smart clients

Technologies come and go. Some become part of our lives. Some don’t. Some are just fillers. Some are ahead of their times. While others, serve as a base for new ones.

Software developers have used and programmed many. Architectures have selected the best that suits the purpose. But everyone knows we are still working on and looking for new ones. As we get one working, our expectations increases and we want to build more advanced and suitable technologies. Frameworks gets deviced once we have a clear understanding of what we want to achieve, how we want others to use it, and how will it impact future developments.

With Internet, the world became a village. Today, with the coming of mobile and embedded devices the applications are on move. We want information not just on our desks, but anywhere and wherever we are. And it’s not just about being connected, we want our data even in offline or disconnected mode.

We mastered the ins and outs of stand-alone applications, spent a lot on the client-server environments, moved to web pages and web applications and then entered the world of services. All these technologies are now playing a very important role in what’s called as 'smart clients'. These are applications which run on multiple platforms, customized by role, both in online and offline modes, with capabilities to synchronize data with multiple devices.

Multiple platforms: Smart applications will work on our desktops, mobile phones, PDAs, Mobile Internet Devices (MID), web applications, widgets, and any embedded device that user has access to. All have different presentation modes, and functionality depends of device specifications. Some will just be read-only, while others provide full experience.

Customized by role: In the world of applications-on-move, not all devices have the capability or complexity to handle everything. More importantly not everyone requires ever feature of the application. Smart-clients will enable application customization so that only relevant portions/features are available. This not only makes the application less bulky on resource constrained devices, but also serves the security and resource control requirements.

Online/Offline modes: These intelligent applications can detect networks and switch modes accordingly. In online mode application is fully functional. Data caching enables offline mode. While in offline mode, the application simulates an online behavior. Some functionality is disabled to protect data ACIDity and protect the user against the usage of stale data for decision making. But the overall experience is same as online mode. Any data that is to be sent to the server is queued until connection is found, and the lowest cost connection is used for communication.

Synchronization: We now live in a world of one-person-multiple-devices. Smart clients are responsible for not just synchronizing data between the client and the server, but also within all the devices a person use. This enable data availability at all times.

One excellent source of information on smart clients is Microsoft's Smart-client architecture http://msdn.microsoft.com/en-us/library/ms998506.aspx

More coming in with details on each of the features of smart-applications… keep watching…

Thursday, August 30, 2007

Components components all around ...

We are now moving towards more organized application development process. This has been made possible due to the presence of well designed frameworks which bring with them best-practices and turn recommendations into required features. Such a development happens when designers and developers focus on building blocks for the application in a well planned manner. These components are reusable object and interact with each other for implementing the desired functionality. XML is now serving the role of integrating these components, facilitating exchanges of information between components, providing validation and controlling application flow. There is a huge market for such components. Organizations are now focusing on different verticals but a lot needs to be done on the horizontal front as well. The good thing for computer people is that it requires less effort and things are more predictable in horizontals. This is still to be conquered and has lots of scope.

This new paradigm is also bringing with it a new software role – integrators. These will be the people who will study different frameworks and components available for there domain. Unlike software engineers, these are right people to build software for them. I believe that the person who knows what he needs from a computer program is the only right person to build it. And this is what used to happen when computers were new. If a physicist wanted to compute the result of some of his findings he would code it, he never went to a software engineers. But yes he needed the OS, libraries and languages built by software people.

Availability of GUI tools will make it very easy for integrators to built applications. AI will make things more manageable and predictable for them.

The role of software engineers will focus on building components for the verticals and horizontals. This will ease their lives too – instead of building large and complex systems, they will focus on a well defined goal.

Welcome to the world of organized software practices.

Thursday, August 23, 2007

XML and type checking

A lot has been talked about XML – its benefits and how it simplifies application development and integration.

XML has brought a new application development. This facilitates declarative programming which was considered unique to SQL and other 4G languages.

This paradigm is now irradiating type checking and hence introducing loosely typed data usage. Its only when such applications are run, you see the crash screen..

Ecosystem providers should take this into account by following either of these approaches
1. Use DTD or schemas in addition to some validation mechanism to ensure type checking
2. Use XML only for integration with external system.

… more on this later …

Tuesday, July 24, 2007

my first live online meeting demo !!!!

Yupiiiiiii .... today was my first live online meeting demo... we are making a mobile phone application for one of our client ... the meeting was in US and my job was to sent database update command [I won't disclose the technology used ;) ... and by no means will I discuss the implementation :P ] from a mobile phone (which has our sender application) in India to a mobile phone (which has our application) in US .... wonderful experience !! just loved it !!!!

Saturday, July 21, 2007

From concepts to implementation

In mobile world we deal more with concepts than with implementation. The advantange is that we learn more and build a strong base ... the other-side is that your estimates go haywire if you consider just the implementation. For example, not only you have to know about Caching Application Block, but you also need to know how to make it yourself :) since you might not find an implementation.

... more on this later ...... keep watching ...

The first rule of security is that you have to assume the client's been compromised

... more coming-up soon .....

Thursday, July 12, 2007

oops !!!

We are not in the era of procedural-languages wherein calling a function will do the required action. We now deal with objects, functions behavior depending upon the state of the object. So it is very important that the before trying/suggesting anything, we know the context where the thing will be used and the object's currect state.