Recently in Atom Category

Atom standards including the Atom Syndication Format (RFC 4287) and the Atom Publishing Protocol (RFC 5023).

  1. Aug09

    Apple My iTunes widgets

    My iTunes Widgets

    Apple is syndicating iTunes purchase history and user reviews as Flash widgets and Atom feeds under a new program called My iTunes Widgets. Any iTunes Music Store customer can opt-in to sharing their subscribed podcasts, purchased music, music video, TV shows, movies, and positive reviews through an account preference set in the iTunes application. iTunes customers can choose from 5 different Flash widget styles in three different height and width combinations for easy embedding on social networking sites and blog sidebars.

    Atom file

    The underlying Apple Atom feed references custom iTunes descriptors under the "im" namespace. Podcasts are a contentType of "Podcast" which is really just Apple's take on nested category elements without a declared scheme. My recent music purchases include a 30-second preview as an enclosure, links to artist, album, and genre pages, release dates, price, and multiple album cover thumbnails. Here is a link to my 40 most recent iTunes purchases in Atom format and the associated My iTunes widget configuration page for the curious.

    Widget markup

    Apple syndicates its Flash widgets as one long URL served by Akamai. If the widget separated out its Flash file and its FlashVars the widget would be better cached across the Web as a single Flash object.

    Personalization

    These new feeds from Apple make it even easier for external websites to integrate your purchase history into a recommendation engine. Apple is the most popular music store and podcatcher by a large margin, and these new Atom feeds power new types of music experiences. Apple is only syndicating iTunes Music Store behavior, not your entire music library history, which seems like a good privacy trade-off for the mass market.

  2. Aug17

    Rewriting Digg feeds using Atom 1.0

    Digg logo with feed icon

    Digg currently uses RSS 2.0 as a lightweight API, adding their own namespaced elements to explain Digg-specific values within the XML. The current Digg feed reinvents some elements (digg:category???) I feel could be better marked up with existing standards and namespaces. I'll use Digg's data in this post to show how some complex data and relationships can be expressed using Atom 1.0.

    Simplifying drives adoption

    It's important to express your data inside pre-defined elements and attributes when possible for easy parsing by the many feed libraries used by developers all over the web. PHP developers don't write their own parsers, they use something like Magpie instead. Python developers might use Universal Feed Parser. Windows developers might use the Windows RSS Platform. Each abstracted view of your feed might hide your proprietary namespaced data or at least make it more difficult for a programmer to access your one-off namespace.

    Feed-level Identifier

    <id>tag:digg.com,2006:technology</id>

    Globally unique identifiers are a good thing. They help aggregators figure out when they have seen a particular resource in the past, and store or display that information accordingly. You can use a URL as your identifier, but URLs do tend to cycle and may not represent the same resource throughout time. The tag URI scheme, RFC 4151, is another way to create an unchanging, globally unique URI as in the example above. See Mark Pilgrim's How to make a good ID in Atom for more information.

    Simple List Extensions

    <cf:treatAs>list</cf:treatAs>
    <cf:sort ns="http://digg.com/docs/diggrss" element="diggCount" label="Digg Count" data-type="number" />

    Digg's feed is an ordered list and therefore a good candidate for Microsoft's Simple List Extensions namespace. The first line excerpted above defines Digg's feed as a list. The second line defines a sort option that may be rendered in a user interface such as Internet Explorer's feed view allowing someone to sort by the number of "diggs" received by any one item.

    Multiple link relations

    <link rel="via" type="text/html" href="http://example.com/news.html" />

    A Digg story page is the appropriate HTML link alternate for the feed, but it is possible to provide additional meanings and links for the individual story. The via value signifies the source of information for the entry, which in this case is the URL originally submitted to Digg.

    Published vs. Updated

    A Digg story is originally published when a user submits information for the first time to Digg's servers. The story is continually updated as members leave comments and "digg" actions throughout time. The Atom 1.0 specification defines updated as "modified in a way the publisher considers significant" which in this case could mean new comments, new diggs, or significantly buried by the user base.

    Categories

    <category scheme="http://digg.com/" label="Tech Industry News" term="tech_news" />

    Categories can be limited in scope and apply to a certain scheme. A category value is defined by the term element, and the label makes it a bit more pretty for your readers. Some aggregators might append the term value to your defined scheme, giving readers a way to dive into a particular topic right away.

    Comment information

    <link rel="replies" type="text/html" href="[digg comments url]" thr:count="101" thr:updated="2006-08-16T22:12:48Z" />

    The Atom Threading Extensions help publishers define information about comment counts and the location of comments about the entry, among other things. The example above defines where users can read comments about the entry, the number of comments available at last update, and when the last comment was submitted for a given story.

    Citing the source

    I defined the Digg submitter using the source element including username, profile picture, profile web page, a feed of all submissions by that user, and his last submission.

    Conclusion

    There are many ways to express data and take advantage of deployed feed aggregators in the market today. The Atom 1.0 IETF standard is about 9 months old and introduces new ways of describing data able to be understood by a widely distributed number of feed parsers and interpreters. Digg is just one example of translating data described in a format such as HTML into easily digestible individual entries in Atom.

  3. Jul07

    Google Sitemaps and Atom 1.0

    If your site currently generates an Atom feed for use as a Google Sitemap you may want to hold back upgrading your feed to Atom 1.0. Google Sitemaps currently accepts Atom 0.3 only and will throw errors when it encounters the Atom 1.0 feed.

  4. Jul04

    DeWitt on Atom syndication 1.0

    DeWitt Clinton:

    My recommendation to application developers today is to use Atom 1.0, not RSS, as the basis for your content syndication.

    DeWitt is the lead engineer at Amazon's A9 search engine. He took a pretty detailed look at RSS 2.0 and Atom as part of A9's syndication efforts (including OpenSearch) and shared some of his thoughts today on his blog. He appreciates the detailed implementation of the Atom Syndication Format allowing more lossless expression of data between content publisher and parser.

  5. Jul01

    Atom 1.0 now default option

    About a year ago I said I would switch my blog's Atom output from 0.3 to 1.0 once Bloglines, NetNewsWire, and NewsGator supported the new format. Bloglines now supports Atom 1.0, so I just flipped my Atom feed over from 0.3 to 1.0.

    Everything should transition smoothly.

  6. Jun20

    You down with A.P.P.?

    Lately when talking about the Atom Publishing Protocol I can't help but think of O.P.P. from Naughty By Nature. I don't remember how it first got in my head, but now that it's there I feel the need to share this brain worm.

    Naughty By Nature

    You down with A.P.P.? Yeah, you know me.

    A.P.P. how can I explain it
    I'll take you frame by frame it
    To have y'all jumpin' shall we singin' it
    A is for Atom
    P is for Publishing scratchin' letters
    The last P...well...that's not that simple

    Geeky protocols meet early 90s rap music. Army with harmony.

  7. Jan04

    Atom-formatted resume and podcast

    Atom logo

    Last weekend I decided to break free of the standard boring job résumé or CV and express my job history in the Atom syndication format complete with audio enclosures. Syndication geeks may appreciate the implementation details.

    I used the published and updated dates to represent my start and end dates. My first day on the job seems like a good match for the published element's intended use as the "time of the initial creation or first availability" and my last day on the job is the last time the entry was "modified in a significant way" or updated. Since updated is a required entry element and I am currently employed at Technorati the time of my job's initial creation and last significant modification are the same and my most recent entry contains identical values for published and created

    I used link relationships of "related" to specify further reading material such as a more in-depth text version of my résumé or my blog homepage. I created categories to match keyword searches or job classifications by an aggregator.

    I much prefer a conversation to a set of bullet points so I decided to spice up the podcast with some audio content summarizing my responsibilities and accomplishments at various companies. All summaries are less than two minutes and correlate with the extended version of my résumé. I added iTunes duration to indicate the length of each podcast.

    A final step was the addition of geographical coordinates for location-based searches.

    Job aggregation sites may be able to used standardized formats such as Atom to make job listings and work history available to a larger set of users. I just did it for fun as a way for the résumé format to be a little less dull.

    Tags: , , ,

  8. Jul15

    Atom 1.0 template for Movable Type

    I just finished my Atom 1.0 feed template for Movable Type. I believe it is compliant with the Atom 1.0 specification and my feed validates according to Feed Validator.

    I will not switch my blog's advertised Atom feed from 0.3 to 1.0 until Bloglines, NetNewsWire, and NewsGator support Atom 1.0 format.

    Tags: ,

  9. Mar16

    Atom syndication format draft feed

    I just finished my implementation of the latest draft of the Atom syndication format specification. I am currently publishing an Atom feed written to the new specification. If you use Movable Type you may be interested in my template.

    I used permalinks for my id and I realize permalinks are not a permanent identifier throughout time, space, and switching weblog platforms. The id element is changing with each version and I will sit back and watch for best practices before updating my template.

Niall Kennedy Niall Kennedy is a web technologist in San Francisco, California in the United States. I am very interested in the world of... MORE »

Search this weblog:

Subscribe:

Conference: Widget Summit

Widget Summit attendee button

Latest feature: Widget development

Archives: Popular Categories

Sites: More from Niall