RSS and Atom in Action
Web 2.0 Building Blocks
Dave Johnson
  • March 2006
  • ISBN 9781932394498
  • 400 pages
  • printed in black & white

RSS and Atom in Action is organized into two parts. The first part introduces the blog technologies of newsfeed formats and publishing protocols—the building blocks. The second part shows how to put those blocks together to assemble interesting and useful blog applications.

In keeping with the principle behind Manning's "In Action" series, this book shows the reader, through numerous examples in Java and C#, how to parse Atom and RSS format newsfeeds, how to generate valid newsfeeds and serve them efficiently, and how to automate blogging via web services based on the new Atom protocol and the older MetaWeblog API. The book also shows how to develop a complete blog client library that readers can use in their own applications. The second half of the book is devoted to a dozen blog apps—small but immediately useful example applications such as a community aggregator, a file distribution newsfeed, a blog cross-poster, an email-to-blog gateway, Ant tasks for blogging software builds, and more.

Table of Contents show full

foreword

preface

acknowledgments

about this book

Part 1 Programming the writable web

What you need to know first

What you need to know about Java or C#

What you need to know about web development

Web services

Java web development

C# web development

Running scheduled tasks

What you need to know about XML

Java XML tools

C# XML tools

Blog technology terminology

The components we’ll use

Blog application building blocks

Organization of the book

The Blogapps examples

Summary

1. New ways of collaborating

1.1. Research blogging

1.2. Status blogging

1.3. Build blogging

1.4. Blogging the business

1.5. Nina’s and Rangu’s grand plan

1.6. Summary

2. Development kick-start

2.1. Blog server setup

2.2. The Blog Poster example

2.2.1. Invoking Blog Poster

2.3. Blog Poster for Java

2.3.1. Running Blog Poster for Java

2.4. Blog Poster for C#

2.4.1. Running Blog Poster for C#

2.5. Summary

3. Under the hood

3.1. Anatomy of a blog server

3.1.1. Blog server data model

3.1.2. Anatomy of a blog entry

3.1.3. Users, privileges, and group blogs

3.1.4. Blog server architecture

3.2. Anatomy of a wiki server

3.2.1. Wiki server data model

3.2.2. Wiki server architecture

3.3. Choosing a blog or wiki server

3.3.1. Narrowing your choices

3.3.2. Comparing blog and wiki servers

3.4. Summary

4. Newsfeed formats

4.1. The birth of RSS

4.1.1. RSS 0.91

4.1.2. The elements of RSS 0.91

4.2. The RDF fork: RSS 1.0

4.2.1. The elements of RSS 1.0

4.2.2. Extending RSS 1.0 with modules

4.3. The simple fork: RSS 2.0

4.3.1. The elements of RSS 2.0

4.3.2. Enclosures and podcasting

4.3.3. Extending RSS 2.0

4.4. The nine incompatible versions of RSS

4.5. The new standard: Atom

4.5.1. Atom by example

4.5.2. Atom common constructs

4.5.3. The elements of Atom

4.5.4. Atom identifiers

4.5.5. The Atom content model

4.5.6. Podcasting with Atom

4.6. Summary

5. How to parse newsfeeds

5.1. The possibilities

5.2. Parsing with an XML parser

5.2.1. Parsing RSS 1.0

5.2.2. Parsing RSS 2.0

5.2.3. Parsing Atom

5.3. Parsing with a newsfeed library

5.3.1. The Universal Feed Parser for Python

5.3.2. The ROME newsfeed utilities

5.3.3. Jakarta Feed Parser for Java

5.3.4. The Windows RSS Platform

5.4. Developing a newsfeed parser

5.4.1. AnyFeedParser for Java

5.5. Fetching newsfeeds efficiently

5.5.1. HTTP conditional GET

5.5.2. Other techniques

5.6. Summary

6. The Windows RSS Platform

6.1. Windows RSS Platform overview

6.1.1. Browse, search, and subscribe with IE7

6.1.2. Components of the Windows RSS Platform

6.2. Managing subscriptions with the Common Feed List

6.2.1. Getting started with the Common Feed List

6.2.2. Creating subscriptions

6.2.3. Monitoring events

6.3. Parsing newsfeeds with the Feeds API

6.3.1. A simple newsfeed parsing example

6.3.2. Parsing extension elements and funky RSS

6.4. Windows RSS Platform newsfeed extensions

6.4.1. Common Feed (CF) extensions

6.4.2. Simple List Extensions (SLE)

6.4.3. Simple Sharing Extensions (SSE)

6.5. Summary

7. The ROME newsfeed utilities

7.1. Introducing ROME

7.1.1. How ROME works

7.1.2. ROME limitations

7.1.3. The ROME subprojects

7.2. Parsing newsfeeds with ROME

7.2.1. Parsing to the SyndFeed model

7.2.2. Parsing funky RSS

7.2.3. Parsing to the RSS model

7.2.4. Parsing to the Atom model

7.3. Fetching newsfeeds with ROME

7.3.1. How the ROME Fetcher works

7.3.2. Using the ROME Fetcher

7.4. Generating newsfeeds with ROME

7.5. Extending ROME

7.5.1. The ROME plug-in architecture

7.5.2. Adding new modules to ROME

7.5.3. Overriding ROME

7.6. Summary

8. How to serve newsfeeds

8.1. The possibilities

8.2. The basics

8.2.1. Which newsfeed formats to support?

8.2.2. How to indicate newsfeeds are available?

8.2.3. Static or dynamic?

8.2.4. Which generator?

8.2.5. Ensuring well-formed XML

8.2.6. Validating newsfeeds

8.3. File Depot examples

8.4. Generating newsfeeds with Java

8.4.1. Implementing the File Depot in Java

8.4.2. Generating the File Depot newsfeed in Java

8.4.3. Serving the File Depot newsfeed in Java

8.5. Generating newsfeeds with C#

8.5.1. Implementing the File Depot in C#

8.5.2. Generating the File Depot newsfeed in C#

8.5.3. Serving the File Depot newsfeed with C#

8.6. Serving newsfeeds efficiently

8.6.1. Server-side caching

8.6.2. Web proxy caching

8.6.3. Client-side caching

8.6.4. Compression

8.6.5. Caching and compression in a Java web application

8.6.6. Caching and compression in a C# Web application

8.7. Summary

9. Publishing with XML-RPC based APIs

9.1. Why XML-RPC?

9.1.1. Making a method call

9.2. The Blogger API

9.3. The MetaWeblog API

9.3.1. The same metadata as RSS

9.3.2. Six new methods that complement the Blogger API

9.4. Building a blog client with C# and XML-RPC

9.4.1. Why a blog client library?

9.4.2. Three blog client library interfaces

9.4.3. Implementing the blog client library in C#

9.5. Using the blog client library

9.6. Summary

10. Publishing with Atom

10.1. Why Atom?

10.1.1. Why not XML-RPC or SOAP?

10.2. How Atom protocol works

10.2.1. Discovery and collections

10.2.2. Atom protocol from the command line

10.2.3. Discovering Atom resources and services

10.2.4. Posting and updating blog entries

10.2.5. Posting and updating media files

10.3. Building a blog client with Atom protocol

10.3.1. Atom does more

10.3.2. Expanding the blog client interfaces

10.3.3. Atom blog client implementation

10.3.4. Atom blog client in action

10.4. Summary

Part 2 Blog apps

11. Creating a group blog via aggregation

11.1. Introducing Planet Tool

11.2. Configuring Planet Tool

11.3. Creating templates for Planet Tool

11.4. Running Planet Tool

11.5. Planet Tool object reference

11.6. Under the hood

11.7. Summary

12. Searching and monitoring the Web

12.1. Technorati.com: Conversation search engine

12.1.1. Subscribing to Technorati watchlists

12.1.2. Monitoring tags with Technorati

12.2. The Technorati API

12.2.1. Getting a Technorati API key

12.2.2. Calling the Technorati API

12.3. Other blog search services

12.4.1. Open Search description format

12.4.2. Open Search result elements

12.5. Summary

13. Keeping your blog in sync

13.1. Designing Cross Poster for C#

13.1.1. Design limitations

13.2. Configuring Cross Poster for C#

13.3. The code for Cross Poster for C#

13.4. Running Cross Poster for C# and Java

13.5. Summary

14. Blog by sending email

14.1. Designing Mail Blogger for C#

14.2. Configuring Mail Blogger for C#

14.3. The code for Mail Blogger for C#

14.4. Running Mail Blogger for C# and Java

14.5. Summary

15. Sending a daily blog digest by email

15.1. Designing Blog Digest for C#

15.1.1. Design limitations

15.2. Configuring Blog Digest for C#

15.3. The code for Blog Digest for C#

15.4. Running Blog Digest for C# and Java

15.5. Summary

16. Blog your software build process

16.1. Blogging from Ant

16.1.1. Base blog task

16.1.2. Post blog entry task

16.1.3. Post blog resource task

16.2. Summary

17. Blog from a chat room

17.1. A wiki-blogging chatbot

17.1.1. Chat Blogger design

17.1.2. Chat Blogger guidelines

17.1.3. Chat Blogger configuration

17.1.4. Chat Blogger construction

17.1.5. Chat Blogger implementation

17.1.6. Running Chat Blogger

17.2. Summary

18. Distribute files podcast style

18.1. Designing FileCaster

18.1.1. The podcast server

18.2. Implementing FileCaster

18.3. FileCaster upload page

18.4. FileCaster newsfeed

18.5. Running FileCaster

18.6. Room for improvement

18.7. Summary

19. Automatically download podcasts

19.1. Designing FileCatcher

19.2. Implementing FileCatcher

19.3. Running FileCatcher for C#

19.4. Summary

20. Automatically validate newsfeeds

20.1. Getting started

20.1.1. Setting up Python

20.1.2. Setting up Feed Validator

20.2. Implementing auto-validator

20.3. Running auto-validator

20.3.1. Using Windows Scheduled Tasks

20.3.2. Using UNIX cron

20.4. Summary

21. The best of the rest

21.1. Monitor anything

21.1.1. Monitor the weather

21.1.2. Shop with your newsfeed reader

21.1.3. Use newsfeeds to monitor eBay auctions

21.1.4. Monitor upcoming events via calendar newsfeeds

21.1.5. Turn mailing lists into newsfeeds

21.2. Syndicate everything

21.2.1. Syndicate operating system and network events

21.2.2. Syndicate vehicle status

21.2.3. Syndicate your logs

21.3. Tag the Web

21.3.2. Create a tagged photo blog with Flickr.com

21.3.3. Tag your blog entries with Technorati Tags

21.3.4. Geotag the Web

21.4. Aggregate yourself

21.4.1. Create an aggregated blog with Planet Tool

21.4.2. Mix your own newsfeeds with Feedburner.com

21.5. Get the word out

21.5.1. Bring your bloggers together with aggregation

21.5.2. Bring bloggers together with tagging

21.5.3. Track news and blogs to find the conversations

21.6. Open up your web site

21.6.1. Open up your site with newsfeeds, protocols, and tagging

21.7. Build your own intranet blogosphere

21.7.1. Unite internal communities with aggregation

21.7.2. Build a folksonomy of your intranet

21.8. Blog your software project

21.8.1. Use newsfeeds to syndicate source code changes

21.8.2. Pull software documentation from a wiki

21.9. Summary

index

What's inside

  • Traces the evolution of newsfeed formats and explains the pros and cons of each
  • Explains server technology in depth as well as guidelines for choosing blog or wiki server software
  • Explains howto develop a complete Atom client library

About the author

Dave Johnson is an experienced software developer, technology enthusiast, and expert in blog technologies. He started blogging in 2002 using Java-based blogging software that he developed called Roller. Roller now drives the ground-breaking employee blogs at Sun Microsystems, is used by thousands of bloggers on JRoller.com and other sites, and is a successful open source project. Dave now works at Sun where developing Roller and promoting blog technologies is his full-time job. He lives in Raleigh, North Carolina.


combo $39.95 pBook + eBook
eBook $31.99 pdf + ePub + kindle

FREE domestic shipping on three or more pBooks