Back to the grind

We just returned from a most excellent spring-break trip down to Georgia for some sight-seeing in Atlanta and a family re-union in Callaway Gardens. I had hoped to get some serious work done on my ROME chapter, which is due Wednesday, but that didn't work out so well. I did get some work done, but I'm definitely gonna blow my deadline. That's OK, I had fun instead. The kids did too. We did the new Georgia Aquarium, which was incredibly crowded but well worth the effort. The next day, the kids managed to sit still through the Cyclorama, which you'll find interesting even if you have only a passing interest in Civil War history. We also had a wonderful dinner at Mu Lan with my parents, thanks in part to little Leo, who slept right through dinner.

Callaway Gardens was beautiful and the villa we picked was the perfect spot for a small family reunion and multi-birthday celebration -- we celebrated my dad's 70th, my grandmother's 90th birthday and others. We visited the butterfly house, the vegetable gardens and then I ducked out on the birds of prey show to get some work done. We also pored over a small mountain of unsorted memorabilia and most of the items pictured on this page about my great great great grandfather James Mason.

Now it's back to the grind. The ROME chapter is a little more difficult that I had thought as I'm finding some deficiencies in ROME (some are my fault) and fighting an overwhelming urge to fix them or at least document them in depth.

Roller 2.2 coming soon


We're on the third release candidate now, so expect Apache Roller 2.2 (incubating) real soon now. There's a What's New doc on the Roller wiki in case you're wondering what's coming up.

Today's links [March 27, 2006]

Mutli-domain support in Roller?

Trygve Lie on the roller-dev list: We have spent a lot of time evaluating (almost one year now) different blog software and we also have one installation of your largest competitors running (Drupal, which we are not happy with) as an pilot and we have found Roller to be way ahead of all other blog solutions out there when it comes to technical architecture. But, no blog solution has this multi domain support. I think such a support would be a benefit for a whole new set of Roller users (and possible contributors).
I totally agree. Unfortunately, getting big changes into an open source project is difficult when you have no committers on the project (and the current committers have other pressing priorities), but I think Trygve and the team from LinPro AS are taking the right approach. I want to encourage them to work with the Roller community to make this work. Even if this specific multi-domain implementation doesn't end up in the Roller core, we'll all benefit from this discussion.

Blojsom 3.0


For Blojsom 3.0, David Czarnecki is injecting a Hibernate backend into the codebase via Spring and working to keep the easy-install in place. It should be very interesting to watch his progress.

Grazin' Roller OPML


Your Roller bookmarks are available in OPML format. That means you can graze them at Grazr.com. Your URLs look like this:
    http://<hostname>/roller/flavor/<username>?flavor=opml&path=<path>

So, for example, you can see all of my bookmarks here:
    http://rollerweblogger.org/flavor/roller?flavor=opml
    (or view them in grazr.com)

And my blogroll is here:
    http://rollerweblogger.org/flavor/roller?flavor=opml&path=/Blogroll
    (or view it in grazr.com)

Tags: topic:[opml], topic:[blogging]

Windows RSS chapter complete


My blog's been silent since Wednesday because I've been devoting every evening hour and all weekend to finishing the new chapter 6 on the Windows RSS platform for RSS and Atom in Action. I finished about 20 minutes ago and I'm ready to hand the chapter off to the editors. I think it's the longest chapter in the book (but I won't know until it is typeset). Here's the outline as it stands today:
  • Windows RSS platform overview
    • Browse, search and subscribe with IE7
    • Windows RSS platform components
      • The Feeds API
      • The Common Feed List
      • The Feed Store
      • The Download Manager
      • Microsoft's newsfeed list and sharing extensions
  • Managing subscriptions with the Common Feed List
    • Manging subscriptions
    • Keeping track of what's been read
    • Getting started with the Common Feed List
      • Adding the Feeds API to your project
      • Walking the feed folder hierarchy
    • Ceating subscriptions
      • Newsfeed update interval
      • Download enclosures or not?
    • Monitoring events
  • Parsing newsfeeds with the Feeds API
    • Simple newsfeed parsing example
    • Parsing extension elements and funky RSS
      • The Common Feed Format
      • Parsing item summaries with the Feeds API
  • Windows RSS platform newsfeed extensions
    • The Common Feed (CF) extensions
    • The Simple List Extensions (SLX)
    • The Simple Sharing Extensions (SSE)
  • Summary
I'm finished with the 1st draft, but I've still got some unanswered questions about the Windows RSS platform. I wrote to Robert Scoble and he hooked me up with Sean Lyndersay and Walter VonKoch of the Microsoft RSS team. I sent them a list of about 10 questions yesterday. If I can, I'll post the Q&A here.

Next up is the new chapter 7 on parsing feeds with ROME.

Tags: topic:[ie7], topic:[rss], topic:[atom], topic:[vista], topic:[rome]

Please host the Windows RSS Feed Normalizer

Sam Ruby: It seems self evident to me that the Microsoft Feed API is going to be important enough that people are going to want to make sure that their feeds work well with this new platform.

However, not everybody is in a position where they have ready access to a machine running Windows XP Service Pack 2 (SP2) with IE7Beta 2 Preview loaded on it.

So, to make life easier, I’ve converted Dave Johnson’s program to a web application, and I’m looking for volunteers to host it.  If you are in aposition to help with a public server, please leave a comment herewith your URL.
The Feed Normalizer makes it easy for you to see how the Windows RSS platform normalizes your feed, or any feed for that matter. Let's help the Microsoft Feeds API live up to it's package name, which, by the way, is Microsoft.Feeds.Interop.

Maybe some of the RSS Team bloggers would like to help?

Tags: topic:[ie7], topic:[rss], topic:[atom], topic:[vista]

Data loss sucks

James Snell: IE7’s feed reader support isn’t all that bad, but if MS wants developers to use it as a foundation to build new, interesting applications, MS needs to get out the way and provide an implementation that let’s developers work with the data as it exists out on the web. Normalizing subscribed feeds to their version of RSS is troublesome at best.
Tags: topic:[ie7], topic:[rss], topic:[atom], topic:[vista]

Surprise visitor at the meet-up

Congressman Brad Miller (house.gov/bradmiller) and his campaign manager PJ Puryear showed up at Cafe Cyclo tonight for the Raleigh blog meet-up to learn more about blogging and connect with fellow bloggers. How cool is that! I don't think he expected to run into a bunch of geeky tech bloggers, but despite that we had a great time talking blog search and RSS and politics (apparently, everybody present was a democrat). And, I made sure to get in a word or two about the evils of DRM and the broadcast flag. Check out Josh's and Bill's blogs for more about the evening.

Also... I almost forgot to mention that I got to take a behind the scenes look at the IBM  DeveloperWorks Roller implementation. Bill logged in and showed me around. They're still on Roller 2.0, so they don't have comment management/moderation, but they do have tagging and they've made a couple of small layout changes to the editor/admin UI.

Raleigh bloggers meet-up 6:30PM tonight at Cafe Cyclo


I forgot to post the reminder this morning, but what the heck it's not too late. Join us at Cafe Cyclo in Cameron Village to talk blogs, podcasts and whatever else is on your mind.  We meet at 6:30PM and usually break up around 9PM. Josh has the details.

Today's links [March 21, 2006]


FeedsManager.Bastardize()*


OK, I've got the latest IE7 build, the one Microsoft is handing out at MIX06. It took me a bit longer than I had expected to change my examples to compile with the new Feeds API included in the new build. They changed the Feeds namespace to Microsoft.Feeds.Interop and made a bunch of other little changes. So all I have for you tonight is one little example of weirdness.

Let's say you have a feed that uses the RSS 2.0 <description> element to hold a short summary of each item and the funky <content:encoded> element to hold the full content of each item (just like Dave Winer's Wordpress feed does). When the Feeds API reads your feed, it converts it to a normalized (but currently not valid, due to some bugs) form of RSS 2.0 that uses a mix of RSS and Atom 1.0 elements. For funky RSS elements, it uses Atom. So you end up with something like this:

Item contains

<description>
    Short summary of item content
</description>
<content:encoded>
   Full content of the item
</content:encoded>

Feed API normalizes to

<atom:summary type="html">
   Short summary of item content
</atom:summary>
<description>
   Full content of the item
</description>

The old switcharoo, eh?

Here's a more complete example: a source feed in RSS 2.0 format and the same feed in Feeds API normalized normalized format. I've also got an Atom example: source and normalized.

That's pretty weird alright, but they're on the right track. They're using Atom elements to model RSS. Now, if they'd just follow that line of thinking to it's logical conclusion and use Atom as the normalized feed format, they might actually be able to please the assholes and protect the morons of this world.

Tags: topic:[rss], topic:[atom], topic:[feeds], topic:[ie7], topic:[vista], topic:[mix06]

* The title of this post refers to the FeedsManager.Normalize() method which takes an Atom 0.3, Atom 1.0, RSS 1.0 or RSS 2.0 feed and normalizes it to Feeds API RSS 2.0 format. To be clear about this, I'm using this little C# program to get at the normalized feeds:
using System;
using System.Xml;
using System.IO;
using Microsoft.Feeds.Interop;
namespace BlogApps_Chapter06 {
class Normalize {
static void Main(string[] args) {
string url = args[0];
FeedsManager fm = new FeedsManagerClass();
IFeedFolder rootFolder = (IFeedFolder)fm.RootFolder;
IFeed feed = null;
if (!fm.IsSubscribed(url)) {
feed = (IFeed)rootFolder.CreateFeed(url, url);
} else {
feed = (IFeed)fm.GetFeedByUrl(url);
}
feed.Download();
string xml = feed.Xml(feed.itemCount,
FEEDS_XML_SORT_PROPERTY.FXSP_PUBDATE,
FEEDS_XML_SORT_ORDER.FXSD_ASCENDING,
FEEDS_XML_FILTER_FLAGS.FXFF_ALL,
FEEDS_XML_INCLUDE_FLAGS.FXIF_CF_EXTENSIONS);
StreamWriter sw = new StreamWriter(File.OpenWrite(args[1]));
sw.Write(xml);
sw.Close();
}
}

}

New build of IE7 is available


I spent the weekend writing about IE7 and the Microsoft Feeds API -- and my chapter is due at the end of the week, so this is perfect timing for a new build. I'll re-run my experiments with the new one and tell you about some other "interesting" findings later tonight. The closer I look, the funkier it gets.

Roller swallows IBM



Yum, very tasty. What's for dessert?

I fully agree with James, BTW.

Re: Experimenting with the MS Feeds API


I'm seeing lots of interest in my MS Feeds API post yesterday, sparked by links from Sam Ruby, Dave Winer and Randy Morin. Some people might have gotten the impression that I was criticizing the decisions Microsoft made in mapping RSS elements and extension elements to the Feeds API object model. I wasn't.

I think Microsoft made pretty good choices, given the simplified object model that they're working with. If somebody is using funky RSS, then they mean it. For example, if somebody declares the Content Module namespace and uses the <content:encoded> namespace in their feed, then that's probably the content that they want folks to use. I think that's the philosophy Microsoft used in making those decisions, except for prefering <pubDate> over <dc:date>, which I don't understand.

The problem is, the Feeds API object model is a little too simple. Like RSS 2.0, it doesn't model the common things that bloggers do like having both a summary and content for each item, or having  name and/or e-mail address for each author. That's why people use extensions like the <content:encoded> and <dc:creator> (or prefer Atom, which does a better job of modeling those common things). I hope Microsoft will fix this by improving the object model and if they do, they won't have to make as many choices about which elements to use.

Snarkstream


Robert writes that my snarky "get a clue" comment about Google and Atom in my del.icio.us bookmark collection is inappropriate, constitutes harassment and is "the sort of behavior the Atom community is supposedly above." Has he got a point? Do I owe Google an apology?

Experimenting with the MS Feeds API


The Windows RSS platform includes a Feeds API that parses all forms of RSS and Atom to a simplified  object model.

For example, an Item object has an Author property and not an author name, author e-mail and author URI which are all possible in Atom. And, an Item object has a Description field and not description and content (as in Wordpress feeds) or summary and content (as in Atom feeds).

So, how does the Feeds API decide how to map elements to this  simplified object model? I did some C# experiments and here are some of my findings. Note that the Feeds API is beta software and will certainly change for the better (I hope) by the time it is released in IE7 and Windows Vista.

 Item contains
 Feeds API returns
<dc:creator>dave</dc:creator>  item.Author = "dave"
<author>dave@example.com</author> item.Author = "dave@example.com"
<author>dave@example.com</author>
<dc:creator>dave</dc:creator>

item.Author = "dave"
   (prefers funky RSS)
<description>my desc</description>
<content:encoded>my content</content:encoded>
item.Description = "my content"
   (prefers funky RSS)
<pubDate>
   Thu, 9 Mar 2006 23:13:04 -0500
</pubdate>
item.Date =
   "
3/10/2006 4:13:04 AM"
   (uses GMT)
<pubDate>
  
Thu, 9 Mar 2006 23:13:04 -0500
</pubdate>
<dc:date>

   2004-08-19T11:54:37-08:00

</dc:date>
item.Date =
   "
3/10/2006 4:13:04 AM"

   (prefers core RSS element)
<atom:summary>my summary</atom:summary>
<atom:content>my content</atom:content>
item.Description = "my content"

First, it's interesting that those funky RSS elements that Winer dislikes are preferred over the core RSS elements in important places. And second, what if you're not happy with Microsoft's mapping choices in this area?

For example, how do you get both description and content from those Wordpress feeds? Wordpress (and Typepad) uses the <description> element as a summary and the funky <content:encoded> element for the full content (see Winer's own Wordpress.com feed for example). You've got to parse the XML yourself. The Feeds API tries to makes that easy by providing both the XML for the entire feed and the XML fragment for each item, but I think most developers would prefer to have a more complete object model.

See also: What's up with the Windows RSS Platform

Tags: topic:[rss], topic:[atom], topic:[feeds], topic:[ie7], topic:[vista]

The never ending story of RSS and Atom in Action


You know last week, when I said the book was ready to go to the printers and would be available this week as an e-book? We'll, I was wrong.

While we waited for Atom protocol to stabilize, things changed in the world of C# and Java feed APIs. Microsoft introduced the Windows RSS platform and a pre-release of the Windows Feeds API is available in the IE7 beta. And ROME has come along way too; now with Atom format 1.0 support and a growing list of extension modules. We decided that we just couldn't publish a book on RSS and Atom without covering the Windows RSS platform and ROME in-depth. So now I'm under the gun again, writing away into the wee hours of the night. I should be done by April 14th and, with luck, the book will be out in late May, just in time for JavaOne. That explains my sudden interest in the Windows RSS platform.

The kids hate it, but I think it's for the best. Manning will have the very first book that covers the Atom protocol (with a working client and server), the Windows RSS platform and ROME in-depth. It'll definitely be worth the wait.

Tags: topic:[atom], topic:[rss], topic:[ie7], topic:[atom protocol]

Today's links [March 13, 2006]

  • Windows RSS Platform
    Niall Kennedy also blogged about Windows RSS plaform this past weekend
  • Common Feed Errors
    Sam Ruby posts "An analysis of a week’s work of click-throughs on Feed Validator"

« Previous page | Main | Next page »