Monday, December 14, 2009

Up and Atom

It's been about three or four years since an explosion of hype detonated under a series of web technologies -- REST services, Atom Publishing Protocol (APP), and plain old HTML.  That's a long time in the world of technology.  But, despite the fact that I'm a development technology omnivore, I haven't done much with that particular stack of technologies. One reason is that, on the surface, it felt like going backwards.  In the early days of the web, I got freelance development work creating simple, static HTML pages.  Text editors like BBEdit allowed me to sling angle brackets and create miracles such as a page with links and images. I graduated from there to JavaScript, to ASP, to creating intranet applications for worldwide behemoths with heavyweight technologies.


Another reason REST hasn't moved to the top of my "to-do" list is that I spend my professional life in the Microsoft stack.  In large segments of that world, there's a perception that the web technologies are a solved problem.  Essentially, anything you want to do with REST services, you could also do with SOAP or WCF-based services. Microsoft also offers plenty of alternatives for syndication. And the tooling does the heavy lifting.  Microsoft's tooling makes it conceivable that you could create a sophisticated web application without the vaguest notion of the underlying protocols.


I understand that there are compelling arguments for using the resurgent HTML-based technologies, but the fact remains that they have not penetrated the consciousness of many Microsoft developers.  The story is not that compelling for people who have already built up a skill set in the world that Microsoft has constructed for developers.


A couple things led me back to HTML.  A group of Linux/Python developers was embedded at a client I was working with.  Not surprisingly, they found the vagaries of the corporate SharePoint API to be oppressive, and they were looking for some REST-based goodness to ease the pain. I'm a Python enthusiast, (and they were paying), so I took the work.  Python also led me onto Google's App Engine.  I'm working on a personal project that requires deep understanding of the APIs to the various Google services. I knew (superficially) that Google has an extensive set of APIs into their services, based on REST and APP.  I figured that I could leverage Python client APIs.  It didn't work out that way. Google's Python client lagged behind the Atom Service.  It even lagged behind the .NET client API (which was right in my back yard).


As these personal projects generally go, I chase what's interesting.  Without a paying client to keep me walking in a straight line, the shiny objects divert my path.  And so in this case, it became REST and Atom.  My framework for approaching them became the GData APIs.  But it also brought in a whole different set of concepts.  I'm starting with the low level protocols and moving outward into various tools. It's an ongoing process. I plan to write about it as I learn. So far, we're talking about GData, the current .NET and Python GData client APIs, Microsoft's low-level HTML libraries, a little something called the REST Starter Kit, SyndicationFeed objects, and on and on.  Some of it is pretty esoteric on the surface, but easy at the core.  I'll try to leave behind a trail of breadcrumbs that I could not find when I was searching for information.


What I've gained so far is a deeper understanding of why vanilla HTTP and HTML has made a resurgence. And I've gained a deeper appreciation for what the people who develop for it have accomplished.  I was there (many years ago) when there was a general flight from HTTP.  There was a sense that we needed to move up another layer of abstraction -- that HTTP and HTML were too thin a reed to hang important  work on.  A lot of people thought the web needed to be "improved".  As the industry went elsewhere, a lot of smart people kept working away on HTML.  Pushing the limits, and inventing new idioms.  The world is better for it, and I find myself rediscovering some of its mysteries.


What it means for you, mythical reader, is that I'll try to share some of what I've found.

Acronym roundup:
REST - Representational State Transfer
SOAP - Simple Object Access Protocol
ASP - Active Server Pages
WCF - Windows Communication Foundation
API - Application Programming Interface