RSSCalendar.com

Another interesting blog app.

CNet - RSS Gets Down to Business: The RSSCalendar program allows users to convert and publish their calendar data as an RSS feed. Friends, co-workers and customers can subscribe to the calendar feed and automatically receive notices of new appointments, which can be viewed through an RSS reader or imported to a Web-based calendar or Microsoft Outlook.

Geary vs. Raible

Noted Java expert, author, and stand-up comedian David Geary uses his new JRoller blog to answer Matt's Raible's complaints about JSF in point-by-point fashion. See also, the Server Side flame-a-thread on Matt's post. Nice to see some spirited discussion of JSF. BTW, I just bought Geary's new JSF book: Core Java Server Faces.

Blog apps roundup

Some interesting blog apps that I noticed this week:

  • mOlympics: Russell Beattie introduced mOlympics, a blog aggregator that combines Olympics related news stories into a mobile-friendly news portal. Russell's aggregator allows him to set up an "aggregated mobile news site for any topic." Each story is avaliable in regular Web flavor and WML via Googles WML proxy service. Russell wonders about the legality of aggregator content created by others without their permission, and so do I.

  • Simon Brown released an early verison of his Pebble-specific Deskblog product. The screenshots look very nice.

  • Erik Hatcher reviews Mike Clark's new book Pragmatic Automation and mentions that the book includes a blog app that enables Cruise Control to RSS. On first glance, it appears that the blog app is simply a Log4J appender that writes to RSS format.

Hurricane Charley

The storm that devastated Florida and that appeared to be making a run at Raleigh fizzled out, fell apart, and passed right by. We got quite a lot of rain over the last couple of days due to the twin storms and we had to keep an eye on the new last night due to the tornado warnings, but that is the extent of the damage in Raleighwood. We lucked out on this one and so did Jamaica.

Osbald's Roller hacks

Richard Osbaldeston has been doing some Roller macro hacking. His most recent post on the topic explains how to set the title of your Roller weblog to be the same as the title of your most recent weblog entry. We'll have to work on that because it really shouldn't be that hard to do.


del.icio.us

Udell on tagging discipline

Web as platform noodling

Kottke on feed processing/filtering/formatting

Personal vs. corporate blogging

Mark Pilgrim explains the difference.

Lance on the perfect weblog system

and gender issues

Finally... Interactive JavaDocs

- Javalobby launches jdocs.com with comments and RSS.

Sealing deals faster... with Roller.

Business Week: Jonathan Schwartz, president and chief operating officer of server maker Sun Microsystems (SUNW ), first suspected that his blog was a success when his salespeople began reporting that customers were reading his posts and sealing deals faster.

Schwartz saw that as irrefutable proof that his blog, started on June 28, was a gold mine.


How Rome works.

I spent some time exploring the new Rome feed parser for Java and trying to understand how it works. Along the way, I put together the following class diagram and notes on the parsing process. I provide some pointers into the Rome 0.3 Javadocs, but, because this summary is based on the latest Rome codebase from CVS you will notice that some class and interface names have changed.

You don't need to know this stuff to use Rome, but it you are interested in internals you might find it interesting.

Notes on the Rome parsing process

Rome is based around an idealized and abstract model of a Newsfeed or "Syndication Feed." Rome can parse any format of Newsfeed, including RSS variants and Atom, into this model. Rome can convert from model representation to any of the same Newfeed output formats.

Internally, Rome defines intermediate object models for specific Newsfeed formats, or "Wire Feed" formats, including both Atom and all RSS variants. For each format, there is a separate JDOM based parser class that parses XML into an intermediate model. Rome provides "converters" to convert between the intermediate Wire Feed models and the idealized Syndication Feed model.

Rome makes no attempt at Pilgrim-style liberal XML parsing. If a Newsfeed is not valid XML, then Rome will fail. Perhaps, as Kevin Burton suggests, parsing errors in Newsfeeds can and should be corrected. Kevin suggests that, when the parse fails, you can correct the problem and parse again. (BTW, I have some sample code that shows how to do this, but it only works with Xerces - Crimsom's SAXParserException does not have reliable error line and column numbers.)

Here is what happens during Rome Newsfeed parsing:

diagram of Rome classes and the parsing process.
  1. Your code calls SyndFeedInput to parse a Newsfeed, for example (see also Using Rome to read a syndication feed):
  2. URL feedUrl = new URL("file:blogging-roller.rss");
    SyndFeedInput input = new SyndFeedInput();
    SyndFeed feed = input.build(new InputStreamReader(feedUrl.openStream()));
    
  3. SyndFeedInput delegates to WireFeedInput to do the actual parsing.
  4. WireFeedInput uses a PluginManager of class FeedParsers to pick the right parser to use to parse the feed and then calls that parser to parse the Newsfeed.
  5. The appropriate parser parses the Newsfeed parses the feed, using JDom, into a WireFeed. If the Newsfeed is in an RSS format, the the WireFeed is of class Channel and contains Items, Clouds, and other RSS things from the com.sun.syndication.feed.rss package. Or, on the other hand, if the Newsfeed is in Atom format, then the WireFeed is of class Feed from the com.sun.syndication.atom package. In the end, WireFeedInput returns a WireFeed.
  6. SyndFeedInput uses the returned WireFeedInput to create a SyndFeedImpl. Which implements SyndFeed. SyndFeed is an interface, the root of an abstraction that represents a format independent Newsfeed.
  7. SyndFeedImpl uses a Converter to convert between the format specific WireFeed representation and a format-independent SyndFeed.
  8. SyndFeedInput returns to you a SyndFeed containing the parsed Newsfeed.
Other Rome features

Rome supports Newsfeed extension modules for all formats that also support modules: RSS 1.0, RSS 2.0, and Atom. Standard modules such as Dublic Core and Syndication are supported and you can define your own custom modules too.

Rome also supports Newsfeed output and for each Newsfeed format provides a "generator" class that can take a Syndication Feed model and produce from it Newsfeed XML.

Learning more

I've linked to a number of the Rome 0.3 Tutorials, here is the full list from the Rome Wiki:

  1. Using Rome to read a syndication feed
  2. Using Rome to convert a syndication feed from one type to another
  3. Using Rome to aggregate many syndication feeds into a single one
  4. Using Rome to create and write a feed
  5. Defining a Custom Module bean, parser and generator
Conclusion

Overall, Rome looks really good. It is obvious that a lot of thought has gone into design and a lot of work has been done on implementation (and docs). Rome is well on the way to "ending syndication feed confusion by supporting all of 'em" for us Java heads.

Please leave a comment if I have gotten something wrong.


Hey, I wrote that

GRASS GIS logo

I just had a "hey, I wrote that!" moment. I was reading a Windley post about an OSCon 2004 talk about the open source GRASS GIS, I followed a link to the slides, and found my self looking at a screenshot of d.profile, a program I wrote back in 1990. I've been doing this open source stuff for a long time.

LifeBlogger!

Via Russell Beattie: LifeBlogger is an interesting little blog app developed by Erik Thauvin that enables Nokia Lifeblog users to post items from their Lifeblog to their real blog - via the Blogger API.

Atom API guide

Ben Hammersly has posted a draft chapter on the Atom API from a new book on Movable Type: A guide to using the Atom API implementation within MT3.


Are you blogging at work?

Weblogs have been appearing all over the intranet where I work and I keep hearing about behind-the-firewall blogs at other companies. I've heard of folks who are blogging their weekly status reports, using blogs as personal notebooks at work, and creating newsfeeds for CVS, bug trackers, and other systems. Still, I get the feeling that most weblog-at-work deployments are experimental - just grass roots efforts to put weblogs in place to improve collaboration and communications and to see what happens. Am I wrong about this?

Traction Software sells "enterprise weblog software" and has put together an interesting list of weblog use cases, summarized below. Are you doing any of these uses cases? Are you blogging at work and, if so, what use cases are you finding most useful?

Traction Software's weblog use cases:

  • Personal Notebook
  • Scientific Research
  • Corporate Communications
  • Program Management
  • Product Management
  • Operations Log
  • Community of Practice
  • Internal News
  • Exception Reporting
  • Human Resources
  • Public, Investor, and Customer affairs
  • Account Team Communication
  • Law Firms and Litigation Support
  • Law Enforcement

Roller roundup.

I've been so busy with other projects, my day job, vacation, and being a Dad that I haven't been able to do much Roller development at all. That's a shame, because we are so close to a Roller 1.0 release. We also need a bug fix release from the Roller 0.9.8 branch, but that is probably not going to happen until things slow down a bit. My development efforts have been at a near standstill, but I've been keeping an eye on Roller. Here's a round-up of recent Roller developments.

John Hoffman of Sun has been giving some thought to the Roller main page and has introduced an interesting sortable interface for blogs.sun.com. John laments the fact that Roller supports only MySQL. With a couple of code changes, Roller 0.9.8 can be made to support PostgreSQL. Roller 1.0 will support PostgreSQL right out of the box.

Lance has been working on improving Roller's search interface and making numerous other fixes.

One blogger tried to install Roller on JBoss and didn't get very far, but I'm not sure why because he does not provide any specifics. Andy Depue is also working on getting Roller to run on JBoss, and trying to get some help on the mailing lists.

I'm not sure why Roller on JBoss is such a pain, but blogger Jeff Sheets observes that Roller on Tomcat just got a whole lot easier thanks to the Roller Demo bundle. I called it the Roller Demo bundle because I'm concerned about supporting HSQLDB for "production" blogging. Should I be?

A couple of JRoller users have complained about the Roller editors recently, so when I heard about the FCK editor I took note. I'm playing with it now in my Roller sandbox, but I'm a little discouraged that it does not support Safari.

It's kinda cool to see a Business Week about a Roller blog entry, even if it doesn't actually mention Roller.


Annotations are not for configuration

Thank goodness for that.

Atom and Cool URIs: dogma, idealism, expediency

Excellent summary of both sides of this important argument.

Tuesday at the RTP-WUG: a big chunk of Webshere for free.

IBM has agreed to release to the open-source Eclipse project key tooling components that until now were exclusively part of the WebSphere Studio product line.  This move is being keenly anticipated as it will greatly enrich Eclipse Development.  Jim Zhang will talk on the new Eclipse Web Tools.
For more information, see the Research Triangle Park Websphere User Group's Web site. Bill Dudney has documented some of the contributions on his Eclipse Live blog.

« Previous page | Main | Next page »