Friday, September 11, 2009

Wave @ Adobe

Today, we are involved in many activities on web. Be it social networking, forums, blogging, shares or anything that is of our interest. We also want to keep ourselves updated on the latest happenings of our interest. ¬¬¬¬What do we do to see if there has been any update on the website we are following? We simply navigate to the website login and check if there has been any update or not. Well, if I look at it from the productivity and ease of use perspective, it sucks. I need to constantly navigate to the websites of my interest and see if there has been any update. Many times there would be no update and we would be wasting our time in just checking that there is nothing new. Also, I need to open many websites to get to the updates of my interest in all the areas I like.

How about a notification system right there on your desktop which keeps track of all the websites of your interests and notifies you of any update which has taken place? That’s what Adobe Waves does. Adobe Wave is a combination of Adobe Wave Publisher Portal, Adobe Wave Services and Adobe Wave Desktop Client. Publishers need to use REST API to publish the updates of their websites in the form of notifications. Each notification contains a direct link to the update on publisher’s website. These notifications can be customized for branding with logo, background colors etc.

Users need to install Adobe Wave Desktop Client on their desktop. Since this is an AIR application, users also need to have AIR runtime installed. Once installed, user can configure the client to follow websites of his interests. If the website requires login credentials, the client will ask the user for it once. Adobe Wave is committed to not share user’s personal information with anyone including login credentials. User can stop following any website anytime. Whenever, there is an update on the websites a user is following, Adobe Wave will display a notification on the desktop itself.


Looks good to me…What do you say...?

Monday, July 27, 2009

Wave @ Google

Google Waves is an exciting collaboration and communication platform to be released later in the year of 2009. This is, as conceived by Google, not only a platform but also a product and protocol. Waves will open new dimensions for collaborating and communicating on the web. Some of the most popular methods of collaboration and communication on the web are E-Mail, Instant Messaging, Blogs, Social Networking Websites and Wiki. Waves aim to bridge the gap between all these methods and provide one platform to integrate all of these.

The philosophy of Waves is to have single application providing various types of collaboration and communication methods. A conversation thread is called Wave in Waves product. A user starts communicating with another user by creating a new wave and adding participants in that wave. Following are some of the cool features of wave communication:

  • A configurable feature to see what the other user is typing character by character, without waiting for the user to press Done button. This is how Waves extend the functionality of Instant Messaging.
  • The wave acts as an email once the communication is over as it sits in the inbox of each participant. Other participants can reply to this wave just like an email.
  • New participants can be added at any point of time in the conversation and they can see the whole thread of communication and participate in that.
  • If someone wants to reply in the context of some text lying somewhere in the middle of the whole conversation thread, they can just select the text and reply there. This reply will appear ‘inline’ with the text making it more relevant in the context. A Participant can choose to send the replies to only selected participants.
  • Waves can correct the spelling not just by looking in a dictionary for words but it also senses the context and it suggests correct word in the context of the sentence. It also has the support for right to left text with multilingual support.
  • All the participants can take part in editing one wave concurrently (which is live and seen by all participants as it is being edited). One of the reasons you would do that is to take meeting notes while allowing other participants to add/modify notes on the fly without waiting to receive emails from everyone for their notes. Creating a design document collaboratively is another application for this feature. The edited part by other participants than the originator of the wave will be seen as highlighted part making it easy to figure out what was edited. This can also be considered as wiki functionality where participants can edit the document collaboratively.
  • A wave can contain links to other waves making it possible to jump between waves easily.
  • One of the powerful features is to be able to embed a wave in a website. Embedding a wave on a website will provide all the controls to reply back and participate in the conversation.
  • A wave has the support for Google Search which displays the search results right there and links can be embedded in the wave from that search. No need to go to Google Search in a separate window.
  • Waves can also be integrated with numerous applications such as Twitter, Orkut, Bug Tracking systems, Mobiles, Google Maps etc.
  • Integrating Waves with Google Maps not only inserts the map in a wave but also fully functional. If a participant zoom in/out or move the location, other participants also see that live making it possible to discuss holiday plans online.
  • Developers can create extensions which extend the functionality of a wave and can be embedded within a wave. These extensions may be developed for various needs including polls or games. These extensions also update their states on the fly as participants interact with them. One example for such extension is Polly which allows the participants to conduct polls and see the results live with graphs etc. A chess game is another example.
  • Another powerful feature of Waves is to playback the whole threaded discussion. As a new participant is added, he can playback the conversation and see how the discussion took place. Another application is to see all the moves in a chess game. This can also be used for the functionality of source safe as all the versions of the conversation are stored.
  • Waves have the support for rich media including images, audio and video embedding in the wave communication which are seen by the participants of the communication the moment these are added in the wave. Participants can drag and drop media elements from desktop into a wave.
  • All features of Waves have been developed using HTML and JavaScript. Drag and Drop requires a plug-in but Google is proposing this feature also to be built into web browsers itself.
  • Google Waves is open source.

A short note on Google Waves being a Product, Platform and Protocol.

Product: Google Waves is a product with its own set of functionalities as mentioned above, look and feel etc.

Platform: Google Waves functionality can be extended with the help of extensions allowing developers to add more power and fun to waves.

Protocol: Other companies, individuals can develop their own version of Google Waves product and Google is still committed to support the communication with these products no matter if these are the competitors. One such product which exists is ACME Waves. Users of both these products will be able to communicate using their own products.

You can watch a full demo of Google Waves here.

Wednesday, July 8, 2009

Getting Started with Flex – for Newbies

Relax and enjoy working in Flex is what I would like to tell you guys. Flex is a wonderful tool for developing Rich Internet Applications with ease. Pre-requisite to learn Flex is just basic programming logics. Flex takes care of many things for you on its own.

As a Flex developer, you first need to understand its architecture. Flex has component based architecture. That means Flex will provide (or you can create your own) components, you will use these to layout your application and write business logics. In Flex, there are two ways of developing an application, MXML or/and ActionScript 3.

MXML is an xml based language developed by Macromedia before Adobe Systems acquired Macromedia. There is no official meaning for the acronym MXML, but the backronym used by some developers is “Magic eXtensible Markup Language”. MXML is primarily used to layout the application interface (which can be done in Design View of Flex builder which eventually generates MXML tags). However, MXML can also be used to write business logic or application behavior for small applications. MXML can be used in conjunction with Action Script to write complex business logic for applications. It gives an opportunity to a person with not very strong in programming background to be able to develop RIA with ease.

ActionScript is Object Oriented programming language with all the features a programming language provides. ActionScript can be used to write complex business logics for the applications. It can be mixed with MXML code or can be kept in separate files to improve maintainability. You can write your own classes, create custom components and use them in your applications.

The output of a Flex application is SWF which is targeted to Flash Player 9 or above and it runs within a browser. Flex has some effects and transitions which can be used to create cool interfaces. One can also extend and create his own effects in Flex.

Flex applications run on client side and have no direct access to database resources or other resources which are not allowed to be accessed by client applications. However, Flex applications do have a way to connect with such type server side resources with the help of Web Services or Remote Procedure Calls. You can use server side technologies such as Java, .Net to write Web Services and access them in Flex to provide dynamic data.

Application development in Flex can be done by using free open source Flex SDK or Flex Builder 3 (Flex 3 is the latest version of Flex and the next version will be called Gumbo) Software provided by Adobe. Flex Builder can help a developer accelerate application development. If you are looking forward to develop RIA in Flex, there are many nice books available along with the resources/tutorials provided on Adobe site. Some of the books you may consider are McGraw Hill’s ‘Flex 3 A Beginners Guide’ or ‘The Essential Guide to Flex 3’ by friends of ED.

Happy Learning…

Getting Started with Flex – for Java Developers

Good news for you guys. If you are a Java developer and want to learn Flex then you are in a great demand. Many Flex applications are developed in conjunction with Java where client server architecture is required. Java is a preferred choice for developing server side solutions and Flex for developing rich client applications. You will have an edge over others as you will know both.

Flex applications are just like Java applets which run on client computer and can connect with server side applications for business logic and data. However, Flex is much richer in user experience because of its support for rich media, effects and interactive elements.

I will be repeating some of the text from my previous post ‘Getting Started with Flex – for Flash Developers’ as this is applicable to Java developers as well. In Flex, there are two ways of developing an application, MXML or/and ActionScript 3. MXML is an xml based language developed by Macromedia before Adobe Systems acquired Macromedia. There is no official meaning for the acronym MXML, but the backronym used by some developers is “Magic eXtensible Markup Language”. MXML is primarily used to layout the application interface (which can be done in Design View of Flex builder which eventually generates MXML tags). However, MXML can also be used to write business logic or application behavior for small applications. MXML can be used in conjunction with Action Script to write complex business logic for applications. It gives an opportunity to a person with not very strong in programming background to be able to develop RIA with ease.

Flex has component based architecture. It is shipped with many exciting components for developing Rich Internet Applications. Developers can create their own controls in MXML or Action Script to write the business logics or application behaviors. These components can be compared with Java Beans. The output of a Flex application is SWF which is targeted to Flash Player 9 or above. Flex has some effects and transitions which can be used to create cool interfaces. One can also extend and create his own effects in Flex.

As I said earlier Flex applications run on client side and have no direct access to database resources or other resources which are not allowed to be accessed by client applications. However, Flex applications do have a way to connect with such type server side resources with the help of Web Services or Remote Procedure Calls. As you are coming from Java background, you can use Java to write Web Services and access them in Flex to provide dynamic data.
Application development in Flex can be done by using free open source Flex SDK or Flex Builder 3 (Flex 3 is the latest version of Flex and the next version will be called Gumbo) Software provided by Adobe. Flex Builder can help a developer accelerate application development. If you are looking forward to develop RIA in Flex, there are many nice books available along with the resources/tutorials provided on Adobe site. Some of the books you may consider are McGraw Hill’s ‘Flex 3 A Beginners Guide’ or ‘The Essential Guide to Flex 3’ by friends of ED.

Happy Learning…

Wednesday, June 24, 2009

Gear it up – Web applications go offline

Gears is an exciting addition to web application development strategies. It opens a new dimension for web applications. Gears is an open source browser extension which extends the functionality of a browser and enables web developers create applications which can work offline. Gears does this with the help of three core modules LocalServer, LocalDatabase and WorkerPool.

A local server is used to cache web application resources such as html pages, images etc. to enable the application work in offline mode. Local database allows the developer to retrieve/store data locally on the user’s computer while working offline. This database can then be synchronized with the remote database while working online. Worker thread pool allows heavy duty operations in the background making the application more responsive.

The architecture of Gears is such that it allows the developer to write code which rather than contacting remote database directly works with an intermediate object which can be considered as Data Switch. This object can then figure out whether to retrieve the data from a local database or contact remote database for latest information. The developer can choose to develop the application as either Model or Modeless. In Model applications users can choose to work online/offline whereas in Modeless it happens seamlessly in the background. The developer can also choose to enable certain features of the application work offline while making certain feature work only online as those features might require updated data. The data synchronization can also be done either manually, letting the user specify when to synchronize or it may happen in the background without user’s intervention.

Gears do implement security features as well. It requires user’s permission to allow Gears to be able to make the applications work offline as Gears allow the developers to write the content on user’s machine. Also, the applications can access the databases created by that application and capture urls from the same origin. It is still in consideration to allow applications from other origins to access resources of different origins.

Though Gears is a beta release yet and considered to be a developer only release, you may find some samples on http://code.google.com/apis/gears/sample.html. It would be nice to see how exciting applications can be developed with Gears.

Tuesday, June 16, 2009

Getting Started with Flex – for .Net Developers

Though I would not recommend, but if you really want to do a comparison then you can compare Flex with ASP.Net. Like ASP.Net, Flex is also used to develop Rich Internet Application. Apart from the file format and programming language, the other main difference would be that ASP.Net runs at server and can access server side resources directly but Flex works only on client side and has no access to server side resources such as databases directly. However, Flex applications can access the resources such as images, xml files without any server side scripting.

.Net developers who want to learn Flex would be at ease in one aspect that Flex has similar IDE for development (if you are using Flex Builder) as you use in Visual Studio. Just like .Net, Flex development is also comprised of using controls and programming them if required. The difference is in the programming language. You will be using action script 3 for writing business logics.

I will be repeating some of the text from my previous post ‘Getting Started with Flex – for Flash Developers’ as this is applicable to .Net developers as well. In Flex, there are two ways of developing an application, MXML or/and ActionScript 3. MXML is an xml based language developed by Macromedia before Adobe Systems acquired Macromedia. There is no official meaning for the acronym MXML, but the backronym used by some developers is “Magic eXtensible Markup Language”. MXML is primarily used to layout the application interface (which can be done in Design View of Flex builder which eventually generates MXML tags). However, MXML can also be used to write business logic or application behavior for small applications. MXML can be used in conjunction with Action Script to write complex business logic for the applications. It gives an opportunity to a person with not very strong in programming background to be able to develop RIA with ease.

Developers can create their own controls in MXML or Action Script to write the business logics or application behaviors. Unlike ASP.Net in which the output is html, the output of a Flex application is SWF which is targeted to Flash Player 9 or above. Flex has some effects and transitions which can be used to create cool interfaces. One can also extend and create his own effects in Flex.

As I said earlier Flex applications run on client side and have no direct access to database resources or other resources which are not allowed to be accessed by client applications. However, Flex applications do have a way to connect with such type server side resources with the help of Web Services or Remote Procedure Calls. As you are coming from .Net background, you can use .Net to write Web Services and access them in Flex to provide dynamic data.

Application development in Flex can be done by using free open source Flex SDK or Flex Builder 3 (Flex 3 is the latest version of Flex and the next version will be called Gumbo) Software provided by Adobe. Flex Builder can help a developer accelerate application development. If you are looking forward to develop RIA in Flex, there are many nice books available along with the resources/tutorials provided on Adobe site. Some of the books you may consider are McGraw Hill’s ‘Flex 3 A Beginners Guide’ or ‘The Essential Guide to Flex 3’ by friends of ED.

Happy Learning…

Wednesday, May 13, 2009

Getting Started with Flex – for Flash Developers

The good news is that you are at your brother’s home if you are coming from Flash AS 3 background. As it happens with siblings, there are many similarities as well as differences between the two. Flash started as an animation tool and grew up to RIA development. Flex on the other hand has born with the objective of providing an integrated environment to develop RIA with ease.

Flash developers who want to get started with Flex need to unlearn few things along with keeping few things from Flash development experience. One of the major differences between Flash and Flex is that Flex does not have the concept of timeline. It does not even give you any tool for designing a simple line. All it has is components which are called controls in Flex. There are various types of controls such as layout controls, UI controls, charting controls, data connectivity controls etc. These controls can be either visual or non-visual. The application development in Flex is done with the help of Flex provided or custom controls.

In Flex, there are two ways of developing an application, MXML or/and ActionScript 3. MXML is an xml based language developed by Macromedia before Adobe Systems acquired Macromedia. There is no official meaning for the acronym MXML, but the backronym used by some developers is “Magic eXtensible Markup Language”. MXML is primarily used to layout the application interface (which can be done in Design View of Flex builder which eventually generates MXML tags). However, MXML can also be used to write business logic or application behavior for small applications. MXML can be used in conjunction with Action Script to write complex business logic for the applications. It gives an opportunity to a person with not very strong in programming background to be able to develop RIA with ease.

Developers can create their own controls in MXML or Action Script to write the business logics or application behaviors. The output of a Flex application is SWF which is targeted to Flash Player 9 or above. Anyone coming from Flash needs to understand that Flex is an application development platform. It does not give any environment to create animations as created in Flash. However, Flex does have some effects and transitions which can be used to create cool interfaces. One can also extend and create his own effects in Flex.

Application development in Flex can be done by using free open source Flex SDK or Flex Builder 3 (Flex 3 is the latest version of Flex and the next version will be called Gumbo) Software provided by Adobe. Flex Builder can help a developer accelerate application development. If you are looking forward to develop RIA in Flex, there are many nice books available along with the resources/tutorials provided on Adobe site. Some of the books you may consider are McGraw Hill’s ‘Flex 3 A Beginners Guide’ or ‘The Essential Guide to Flex 3’ by friends of ED.

Happy Learning…

Tuesday, May 5, 2009

Can Flex be used in e-learning?

...And my first reaction to this was WHY NOT? Flex gives me many reasons to use it for developing e-learning solutions. E-learning is not just limited to page turner today. RIA has made an entry in e-learning industry as well. Well, one may argue that Flash can also be used for developing e-learning solutions with RIA at its heart. True and it has been used quite successfully until now. But Flex has certain advantages over that. The biggest reason why I would prefer Flex over Flash is that it distinguishes between a programmer and designer. They both can focus on their specialized areas while working for the common goal.

One of the most exciting features of Flex is its layout controls which give me immense flexibility and ease to create templates for an e-learning solution. Layout controls is revolutionary addition in Flash platform. While I talk in favor of Flex, I do not want to disgrace Flash. After all it’s Flash which made it possible to have a wonderful tool like Flex. Flash is an awesome tool with its own capabilities. But Flex takes over advantage when it comes to programming a solution. Actually, Flex and Flash both complement each other really well. The integration between Flex and Flash is amazing. Skinning has been made so easy with Flash being integrated so nicely with Flex. We anyways need Flash for developing animations which will further be integrated with the solution built in Flex.

Flex has some more exciting features such as transitions, effects, CSS support, enhanced XML support, wide range of UI controls, Accessibility support and many more to make it a suitable candidate for developing e-learning solutions. Even a non-programmer can also develop complex solutions by just using MXML.

In a nutshell, Flex and Flash do complement each other. These need to be used together to develop an overwhelming e-learning experience. Flex helps programmer and Flash helps designer to exhibit their capabilities and creativity while giving immense flexibility and ease.