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…