Between Slashdot, Barrapunto, PHP forums, and the avalanche of development blogs popping up, the daily routine of opening twenty tabs by hand had become unmanageable.

Until recently I used desktop clients like FeedDemon, or sometimes the Bloglines website, which was pretty good. But I always ended up frustrated with the same problem: what I read on my work computer didn't sync with what I read on my home PC. I ended up losing track or reading the same thing twice. A disaster. However, about a month ago, the folks at Google launched Google Reader, and after tinkering with it daily and putting it to the test, I can confidently say it's the ultimate RSS reader.

The end of local clients and the magic of AJAX

Ever since I ditched Internet Explorer for Firefox, and especially since I got my long-awaited Gmail invite, it's clear to me that the web is mutating. What Google has done with this reader is apply the same AJAX (Asynchronous JavaScript and XML) architecture that already blew our minds in Gmail and Google Maps.

What fascinates me on a technical level is the fluidity of the invention. Goodbye to heavy page reloads. The XMLHttpRequest object works in the background continuously, querying the server and fetching fresh content. You click the next article button and the text appears almost instantly by manipulating the DOM. They are pushing the limits of what JavaScript can do on the client, and the performance in the browser is spectacular.

Importing your life in OPML: Code laid bare

If you want to start using it, the transition couldn't be simpler. If you already use another feed manager, you don't have to enter URLs by hand one by one. The universal standard for exchanging subscription lists is OPML (Outline Processor Markup Language), which deep down is just structured, beefed-up XML.

So you can see how it works under the hood and lose your fear of it, an exported OPML file has a very clean structure. If we open one with our favorite editor, we'll see something like this:

<?xml version="1.0" encoding="ISO-8859-1"?>
<opml version="1.1">
  <head>
    <title>Mis Feeds Técnicos</title>
    <dateCreated>Mon, 05 Dec 2005 01:23:45 GMT</dateCreated>
  </head>
  <body>
    <outline text="Programación y Sistemas">
      <outline text="Slashdot" type="rss" xmlUrl="http://rss.slashdot.org/Slashdot/slashdot" htmlUrl="http://slashdot.org/"/>
      <outline text="Barrapunto" type="rss" xmlUrl="http://barrapunto.com/index.rss" htmlUrl="http://barrapunto.com/"/>
    </outline>
  </body>
</opml>

To import it into Google Reader, the workflow is by the book: 1. You go to the settings of your current reader (e.g., RSS Bandit or FeedDemon) and use the Export to OPML option. 2. You save the generated file to your local drive. 3. You log into Google Reader, go to the Import/Export tab, select the XML, and you're set.

In a matter of seconds, its parser devours the XML, processes the nodes, and replicates your category tree in the left sidebar. It doesn't fail.

The hacker interface and the "Web 2.0" paradigm

The graphical interface is very spartan, typical of Google: neutral colors and lots of whitespace. But honestly, that's all you need to focus on reading. The golden touch is that they've implemented native keyboard shortcuts. Pressing the 'j' key jumps you to the next post and 'k' takes you back to the previous one. You feel like you're navigating text from Vim in your Linux console. Once your muscle memory gets used to this, having to use the mouse feels slow and outdated.

Even so, there's room for improvement. I still find it incredible that, Google being the search giant, they haven't yet included an internal search engine to look up keywords within my own RSS feeds. I suppose it's just a matter of time before they integrate it in a future update.

We've spent most of this year, 2005, hearing the concept of "Web 2.0" everywhere. At first, I thought it was pure marketing charlatanism, your typical buzzword bubble to inflate startups. But seeing how these tools manage to centralize information and work so well from the web client, I'm starting to change my mind. Consuming APIs asynchronously is transforming the way we program. If ADSL connections in Spain keep improving and we move past the miserable megabyte, I'm sure that in a few years we'll stop installing local applications. Everything will live inside the browser.

The social side of Google Reader

Another feature that surprised me is the ability to "share" items. Google Reader lets you star an article or simply click a share button, which generates a public page with your recommendations.

It's a very organic way to filter internet noise: instead of searching for content blindly, you trust the judgment of other developers you follow. Technically, this is brilliant because Google is building a social graph based on real interests and information consumption, which goes way beyond a simple search engine.

Furthermore, they've introduced a feature that has me hooked: the ability to add comments to the articles you share. This allows your contacts to see not just the link, but also your technical opinion or a clarification on the code. Honestly, with this interaction layer, Google Reader is becoming the best internet social network for us; it's like a global, distributed forum where the conversation revolves around quality content, not unnecessary noise.

Long live Google.