Miles to go …

December 20, 2006

Syndication, Aggregation & Protocols

Filed under: web2.0 — arungupta @ 9:56 am

In my previous Web 2.0-related blogs, I talked about What is Web 2.0 ?, What is AJAX ? and AJAX: jMaki Framework. Switching gears, this blog will talk about another technology that enable the principles of Web 2.0, i.e. RSS/Atom.

Lets begin with English meaning of the terms "syndication" and "aggregator" first. 

Syndication means:  "The act of syndicating a news feature by publishing it in multiple newspapers etc simultaneously"

Aggregator means: "An online feed reader, generally used for RSS or Atom feeds to keep track of updates to blogs, news sources, and other websites"

Any content over the web, that changes frequently or at irregular intervals, needs a mechanism to inform it’s audience about the updates. RSS and Atom are XML formats designed to generate "syndicated feeds" to publish such frequently updated content. Each feed contain details about the title, a short summary, link to the detailed entry and metadata. This content could be either the entire website or, more interestingly, just a specific section of the website targeted towards an audience. The audience of the content uses "feed aggregator" to fetch the feeds, organize the results, and read the contents. is the standard way to identify syndicated content. The XML format defined by RSS and Atom is really simple leading to it’s exponential growth (also 1, 2, 3)  in the recent years.

A detailed history of how RSS evolved over multiple versions, in the past 7 years, is available here. A concise history, with a tabular difference of different RSS versions, is available here. RSS 2.0 is the most feature rich version and stands for "Really Simple Syndication". It defines an XML format to publish frequently updated content of your website. An non technical introduction to RSS explains how RSS feed is generated. For example, an RSS feed to my blog is given below. This feed cannot be directly viewed in the browser (both Firefox 1.5.x+ or IE6) as they both have a default stylesheet that displays it nicely formatted in HTML. The XML data (as shown below) behind the feed can be viewed using "View Source" option on the page. 

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="http://blogs.sun.com/roller-ui/styles/rss.xsl" media="screen"?>
<rss version="2.0"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:atom="http://www.w3.org/2005/Atom" >
<channel>
 <title>Miles to go ...</title>
 <link>http://blogs.sun.com/arungupta/</link>
 <atom:link rel="self" type="application/rss+xml" href="$url.feed.entries.rss($model.categoryPath, $model.excerpts)" />
 <description>Arun Gupta&apos;s Weblog</description>
 <language>en-us</language>
 <copyright>Copyright 2006</copyright>
 <lastBuildDate>Tue, 19 Dec 2006 11:10:03 -0800</lastBuildDate>
 <generator>Apache Roller (incubating) 3.2-dev(20061208101134:ag92114)</generator>
 <item>
 <guid isPermaLink="true">http://blogs.sun.com/arungupta/entry/running_san_francisco_marathon_2007</guid>
 <title>Running San Francisco Marathon 2007</title>
 <dc:creator>Arun Gupta</dc:creator>
 <link>http://blogs.sun.com/arungupta/entry/running_san_francisco_marathon_2007</link>
<pubDate>Tue, 19 Dec 2006 10:34:09 -0800</pubDate>
 <category>Running</category>
 <category>marathon</category>
 <category>running</category>
<description>As if one marathon was not

During the history of RSS, there were multiple versions (0.90, 0.91, 0.92, 0.93, 1.0, and 2.0) all of which had shortcomings and multiple incompatibilties. To overcome the political (different camps own these versions and claiming to be correct) and technical difficulties, Atom syndication format was published as an IETF "proposed standard" (IETF terminlogy defined by RFC 2026) in RFC 2487.  Like RSS, Atom also defines an XML format to public frequently updated content of your website. For example, an Atom feed to my blog (viewed using "View Source" option) looks like:

<?xml version="1.0" encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="http://blogs.sun.com/roller-ui/styles/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom">
 <title type="html">Miles to go ...</title>
 <subtitle type="html">Arun Gupta&apos;s Weblog</subtitle>
 <id>http://blogs.sun.com/arungupta/feed/entries/atom</id>
 <link rel="self" type="application/atom+xml" href="$url.feed.entries.atom($model.categoryPath, $model.excerpts)" />
 <link rel="alternate" type="text/html" href="http://blogs.sun.com/arungupta/" />
 <updated>2006-12-19T11:10:03-08:00</updated>
 <generator uri="http://rollerweblogger.org" version="3.2-dev(20061208101134:ag92114)">Apache Roller (incubating)</generator>
 <entry>
 <id>http://blogs.sun.com/arungupta/entry/running_san_francisco_marathon_2007</id>
 <title type="html">Running San Francisco Marathon 2007</title>
 <author><name>Arun Gupta</name></author>
 <link rel="alternate" type="text/html" href="http://blogs.sun.com/arungupta/entry/running_san_francisco_marathon_2007"/>
 <published>2006-12-19T10:34:09-08:00</published>
 <updated>2006-12-19T10:34:09-08:00</updated>
 <category term="/Running" label="Running" />
 <category term="marathon" scheme="http://rollerweblogger.org/ns/tags/" />
 <category term="running" scheme="http://rollerweblogger.org/ns/tags/" />
 <content type="html">As if one marathon was not

A comprehensive comparison of Atom 1.0 and RSS 2.0 highlights the differences between two formats. The key difference between the two formats is given below:

  • The biggest complaint about RSS is that the format is "lossy" and does not preserve the type of data. Atom maintains the type and therefore allows wider variety of payloads.
  • RSS 2.0 specification is copyrighted and frozen. Atom 1.0 is published as a "proposed standard" in IETF and is extensible.
  • RSS 2.0 feeds cannot be auto-discovered. Atom feeds can be auto-discovered using IANA-registered MIME type application/atom+xml.
  • RSS 2.0 supports no schema. Atom 1.0 includes RelaxNG schema that allows checking for validity of data.

As evident, Atom has some significant advantages over RSS 2.0 and is now more commonly used. For example weblogs.java.net (based on Moveable Type) and blogs.sun.com (based on Roller) both offer Atom 1.0 feeds. Bloglines, the most popular web-based aggregator, supports all the RSS and Atom formats. A known list of Atom 1.0 consumers and  Atom 1.0 Feeds shows the growing adoption of Atom 1.0.

Blogging, news content syndication, podcasting are the most common usage of syndication/aggregation. 

In my next blog, I’ll talk about Rome and how it makes it easy to work in Java with most syndication formats.

Technorati: Blogging Syndication Aggregation Feeds RSS Atom Web 2.0 Technology

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • DZone
  • email
  • StumbleUpon
  • Technorati
  • Twitter
  • Slashdot

December 19, 2006

Running San Francisco Marathon 2007

Filed under: Running — arungupta @ 10:34 am

As if one marathon was not enough, I registered for San Francisco Marathon scheduled for Jul 29, 2007. I was thinking of delaying the the registration a few days but Tier 1 is already sold out and I don’t want to miss out the option of running on Golden Gate Bridge, yet again. After all, San Francisco is #1 running city.

15,000 runners are expected . The first half is always the fun part and there are cheer stations and music stations planned almost each mile during the second half. I plan to start practice next month and I’ll definitely need to practice lots of hill runs. From my previous half marathon experience, miles 10-12 were really steep. The course description gives you an idea of all the beautiful landmarks (Fishermans’s Wharf, San Francisco Bay, Marina, Presidio, Golden Gate Park and many others) crossed during the run, well it’s 26.2 miles so gotta cover good part of the city :)

And I found a buddy at work who has done multiple Boston Marathon and a PR of 2:28. This is going to be fun!

Check out the holiday survival guide to watch those extra pounds and squeezing your runs to survive this merry season.

Technorati:

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • DZone
  • email
  • StumbleUpon
  • Technorati
  • Twitter
  • Slashdot

December 15, 2006

Meaning of del.icio.us

Filed under: web2.0 — arungupta @ 8:00 am

I’ve always been wondering the meaning of dots in del.icio.us. The wikipedia entry explains it well:

The del.icio.us domain name is a popular example of a domain hack, an unconventional combination of letters to form a common word or phrase. del.icio.us, though not the first domain of this nature, is the best-known and most frequently accessed domain hack, and the Yahoo! acquisition is the highest-profile acquisition of a domain in this category. However, delicious.com also redirects to the del.icio.us website.

Technorati: del.icio.us wikipedia

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • DZone
  • email
  • StumbleUpon
  • Technorati
  • Twitter
  • Slashdot

December 14, 2006

Web services native support in Java6

Filed under: webservices — arungupta @ 10:00 am

A new thread started on TheServerSide prompted by Dims post on "Why bundling JAX-WS in Java6 was a bad idea!". Let me explain why I don’t agree.

 I still remember JavaOne 2005 technical keynote getting applauds from everybody when bundling Web services in Java6 was announced. An approximate 5000 developer audience thrilled that Web services will be available natively in Java6.

JAX-WS 2.0 is a JCP standard (JSR 224) that enables Web services support in a standard way. Here are some of the salient features:

  • Supports SOAP-based and REST-based services
  • Supports both Java-first and WSDL-first programming model equally
  • Enables POJO-based Web services
  • Descriptor free programming
  • Uses industry proven JAXB RI for data binding
  • Integrated with NetBeans 5.5 hiding all the tools/config details
  • Tested extensively for interoperability

Mainly because of timing constraints, JAX-WS 2.0 (and not 2.1) was included in Java6. However the currently bundled JAX-WS implementation is very powerful and allows you to develop/invoke SOAP-based and REST-based services. If you want to enable different WS-* specifications (such as WS-Security, WS-Reliable Messaging and WS-Secure Conversation) then you can download WSIT builds and configure them on Java6 (another blog on that later) and there by WSIT-ifying your Java6.

Web services and Scripting are the two most talked about features in Java6 as is evident by a short list of links below (there are many more):

In all, I strongly believe, more as a technology user, that adding basic Web services support to Java6 is the first step. There is always a balance between providing an out-of-the-box experience or asking them to download additional stuff and go through configuration. I believe in simplicity and that’s what we have tried to achieve by adding Web services support in Java6. You’ll see more sophisticated additions in the versions to come.

Technorati: Java6 JDK JAX-WS Web Services

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • DZone
  • email
  • StumbleUpon
  • Technorati
  • Twitter
  • Slashdot

Roller, Sun and Web 2.0 tags

Filed under: web2.0 — arungupta @ 8:00 am

blogs.sun.com (the blogosphere of all Sun employees) allows each blog entry to be directly posted to a social bookmarking website, for example submit them to del.icio.us, dig them on Digg, discuss on Slashdot and other Web 2.0 sites. And it enables that by providing additional macros that can be specified in the page template. Once the macros are saved to the page template and the blog page is refreshed, all entries are updated with an icon and a link for the website. For example, going forward all my blog entries here will have an icon and link to del.icio.us (social bookmarking), furl (personal web archive), simpy (social bookmarking), slashdot (news for nerds), technorati (blog search engine), and digg (community-based popularity website). If you are a Sun employee, send me an email and I’ll send you the instructions to include these icons in your blog. 

Yet another way Sun has embraced Web 2.0.

Technorati: Web 2.0 Roller Social bookmarking

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • DZone
  • email
  • StumbleUpon
  • Technorati
  • Twitter
  • Slashdot

December 13, 2006

jMaki: AJAX Framework

Filed under: web2.0 — arungupta @ 11:10 am

In a previous blog, I talked about AJAX. You can read about different AJAX design strategies, their pros/cons and when to use. This blog introduces you to jMaki.

Originally the project, jMaki, started as a wrapper for existing AJAX frameworks giving access to the JavaScript widgets from JSP pages or JSF components. And so the name, jMaki, where "j" is for JavaScript and "maki" is a Japanese word to "wrap" was sufficient. Even the logo for jMaki, a "j" as the cursive foot of the Chinese character meaning wrapper, was self describing. In that role, jMaki provides access to widgets from existing AJAX frameworks such as Dojo, Scriptaculous, Google Web Toolkit and Yahoo UI Library. A jMaki wrapper over several components from a variety of frameworks can be seen in this widget gallery. A more complete collection of widgets, organized by their framework, is available here. In the past few weeks, the project has transformed into a complete AJAX framework that provides a lightweight model for creating JavaScript centric AJAX-enabled web applications using Java (Java Server Pages and Java Server Faces), PHP 5.x, and Phobos (another of Sun’s Web 2.0 offering, more on this later).

jMaki framework, as explained earlier, decouples the presentation logic and underlying data using Widget Model, Client Services, Layouts and Client Runtime on the presentation layer (a.k.a. Client Side Components) and Server Side Runtime and XmlHttpProxy on the data layer (a.k.a. Server Side Components). The original intent of the project, wrapper for existing AJAX frameworks, is now served by the Widget Model.

After reading all the details, it’s time to try some code. Before you begin, I recommend watching this screen cast that introduces you to jMaki and walks you through the steps of developing a web application using jMaki plug-in in NetBeans. Using the screen cast, here are the steps that I followed:

  1. Download NetBeans 5.5.
  2. Download the NetBeans Ajax Update Center Module. I preferred the update center module over the jMaki plug-in NBM file (NetBeans module) as that allows me to download any related goodies (such as Phobos plugin) as well.
  3. Install the downloaded plug-in following the instructions. The updated AJAX Update Center module screen shot is available here.
  4. Create the web application following the steps in screen cast. 
  5. NetBeans 5.5 comes pre-bundled with Apache Tomcat  5.5.17. Go to the "Runtime" tab of NetBeans IDE (default short cut is Ctrl + 5), select the "Bundled Tomcat (5.5.17)", right click and select "Start" to start the Tomcat.
  6. Just for fun, I added the SuDoKu widget.
  7. Once the application is deployed (in step 4) then it can be viewed at http://localhost:8084/WebApplication1 (8084 is the default port, WebApplication1 is context root of your application).

And, with these steps, I could develop a simple rich internet application in few minutes. Once all the configuration is setup, it would take less than a minute to add a pre-built jMaki widget into your web application.  The beauty of using JavaScript is that once the web application is deployed, adding new widgets to the page is drag-drop-save-refresh cycle, there is no separate deployment cycle.

Sang Shin (of JavaPassion.com fame) has created a great hands on lab that walks you through the basics of using jMaki widgets. In a later blog, I plan to talk about how to create a jMaki widget from scratch and wrap a widget from one of the existing toolkits.

Technorati: AJAX Sun Web 2.0 jMaki

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • DZone
  • email
  • StumbleUpon
  • Technorati
  • Twitter
  • Slashdot

December 12, 2006

Gmail error: “Oops… the system was unable to perform your operation”

Filed under: General — arungupta @ 3:44 pm

For the past few days, I’ve been getting the following popup when I open Gmail account in my Firefox 2.0.

After I click this irritating error box 13 times (it’s always that exact number) then the box disappears and I can view all my emails correctly. I get this similar error on IE 7 as well but there it disappears in 2 times only. I tried different browsers, cleared cookies, different machines, different operating systems but in vain. Other friends were able to access the account just fine so I was wondering. Finally, I googled the error code and found the solution at Gmail Help Center. Basically, the solution is to access the account through secured interface available at https://mail.google.com. Now, I could not find any explanation of the problem but the proposed solution indeed got rid of the popup.

Technorati: Gmail

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • DZone
  • email
  • StumbleUpon
  • Technorati
  • Twitter
  • Slashdot

December 11, 2006

JavaOne 2007 – Java and beyond

Filed under: General — arungupta @ 10:27 am

Reminds me of "To Infinity and Beyond" by the famous Disney character Buzz Lightyear. A brief description of Buzz Lightyear is:

"He’s the ultimate good cop. Buzz proudly fights for all that is good and pure in the universe. His toughest fight is against the greatest threat ever known to the Galactic Alliance…the most nefarious force of evil in the universe…the diabolical fiend known as the Evil Emperor Zurg."

I see a direct correlation of this with how JavaOne 2007 includes interesting and compelling topics that range across the spectrum of development both for Java and beyond. This year, the conference is being expanded so that while Java is at the core, with significant emphasis on Java EE , Java SE and Java ME there are ample opportunities to present in such areas as:

  • Scripting in PHP, JavaScript, Ruby, Python and more
  • Web 2.0 technologies and mashups
  • Open Source and community development (which includes Java, OpenSolaris, OpenOffice and others)
  • Compatibility and Interoperability

The tracks are defined here and the Call for Papers end Dec 15th, this Friday. So if you have a hot Java technology topic, specific tips or tricks that you believe will help developers, then please go to http://www.cplan.com/sun/javaone07/cfp and submit your session abstract.

The Buzz Lightyear, as you realize, in this case is the COMMUNITY … all of YOU. The community has defined what Java is and is now defining the future technology landscape as well. The greatest threat, as I see, is the platform vendor lock and not giving customers the option to choose.  With that, let me restate the description above one more time with some words rephrased:

"The Community is the ultimate good cop. The community proudly fights for all that is good and pure in the software ecosystem. Their toughest fight is against the greatest threat ever known to the customers…the most nefarious force of evil in the universe…the diabolical fiend known as the Vendor Lock In."

Once again, the Call for Papers deadline is Friday, December 15th, 2006, so if you have a talk you would like to submit, please do so asap.

Technorati: JavaOne Java Disney

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • DZone
  • email
  • StumbleUpon
  • Technorati
  • Twitter
  • Slashdot

December 8, 2006

What is AJAX ?

Filed under: web2.0 — arungupta @ 9:29 am

This is a follow up blog from here. It provides a brief description of the most prominent technology, AJAX, that enable the principles of Web 2.0.

AJAX stands for Asynchronous JavaScript and XML. This term was first introduced by Jesse James Garrett in February 2005. It is a set of technologies used to develop interactive web applications without requiring a complete page refresh. This is achieved by decoupling user’s interaction with the web application and the web application’s interaction with the server. The presentation control logic is embedded as JavaScript code snippets in the web page and the bulk of data is kept on the server. Any request from user to the web application that does not require a round trip to the server, for example data validation and displaying a different view of the pre-loaded data, is handled by this code. If data needs to be fetched from the server then this intermediate code makes an asynchronous request to the server without any interruption of user’s interaction with the application. This allows a clear separation between presentation logic and the underlying data.

AJAX achieves this using the combination of following set of technologies:

  • XHTML and CSS for presentation
  • DOM for accessing parts of the page that needs to be refreshed
  • XMLHttpRequest for asynchronous exchange with the server
  • XML, Text or HTML as the format for data exchange
  • JavaScript to bind all of these pieces together.

There are several Ajax frameworks available that combines all these technologies together and ease the rapid development of Ajax-based applications. These frameworks offer JavaScript functions on the client-side to send request to the server and processes the requests, searches for the data and transmits them to the browser on the server-side. All of this done by hiding the differences between different browser and JavaScript runtime environments. Ajaxian.com has a survey of the most popular AJAX frameworks. These frameworks are getting richer and providing a comprehensive set of libraries ranging from DOM manipulation to animation framework to complicated layout widgets. However if there is a need to write your own custom widget then you can consider following the JavaScript recommendations for AJAX component writers. AJAX with the Java Platform explains the anatomy of an AJAX interaction in detail and has other useful resources on AJAX.

AJAX enables rich internet applications and is one of the most prominent technology to enable principles of Web 2.0. Read how Gmail, Google Suggest and Google Maps use AJAX to provide a richer, faster and more usable interaction. In my next blog entry, I’ll talk about jMaki and my experience of developing a Web application using the recently released jMaki 1.0 beta.

Technorati: AJAX Sun Web 2.0

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • DZone
  • email
  • StumbleUpon
  • Technorati
  • Twitter
  • Slashdot

December 7, 2006

JAX-WS 2.1 is final

Filed under: webservices — arungupta @ 10:42 am

JAX-WS 2.1 (JSR 224) Maintenance Release has been approved by the JCP. Thanks to all the Expert Group members for providing feedback and making yet another landmark in Java Web services standards roadmap.

The change log, specification and RI EA3 are available for you to explore. Read Vivek‘s blog for details on the new features available in EA3. Here is the list of features in EA2 and EA1. The latest RI Users Guide describes in detail the features along with code samples. Nightly builds are available here.

The EA3 build is already integrated in the latest GlassFish v2 b26 build.

Technorati: JAX-WS GlassFish

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • DZone
  • email
  • StumbleUpon
  • Technorati
  • Twitter
  • Slashdot
« Newer PostsOlder Posts »

The views expressed on this blog are my own and do not necessarily reflect the views of Oracle.
Powered by WordPress