Over the weekend, Torsten and I shipped a new release of RSS Bandit. Besides bug fixes there is one key new feature in the release, the ability to view and comment on your Facebook news feed. The flow for adding Facebook to the application is as follows. Go to the File->Synchronize Feeds menu option then select "Facebook"

synchronize_fb[1]

then go through the Facebook Connect authorization flow including optionally signing in and granting the application permission to view your news feed

allowaccess_fb%5B1%5D[1]

This creates a new feed source containing your Facebook news feed complete with inline comments as shown below

comments_fb%5B1%5D_2[1]

You can download the new release from here. More details about the bug fixes in the release are in the official RSS Bandit blog post on the release.


The primary purpose of this release (codenamed Colossus) was to bring stability to the code base before we made radical changes. With this release out of the way, we will start working on the Gambit release right away. The purpose of the next release is primarily to make RSS Bandit a more modern application that looks like it belongs on Windows 7 and Windows Vista instead of harkening back to the Office 2003 look of yesteryear.

You can see our plans for updating the RSS Bandit user interface in my blog post and prototype screenshots of the RSS Bandit ribbon. We will also support new features of Windows 7 such as jump lists. As usual, comments and feedback are welcome.

Note Now Playing: Dashboard Confessional - Stolen Note


 

Categories: RSS Bandit

In between watching the Google Wave video and Slumdog Millionaire, I got around to completing the first set of tabs for the ribbon in RSS Bandit. Screenshots are below, as usual let me know what you think.

Fig 1: The home tab. This is the default tab on launching the application. I like that formerly hidden features of the application like subscribing to newsgroups and managing podcasts are now front and center without having to compromise on the common tasks that people want to perform.

Fig 2: The ability to synchronize RSS Bandit with your Google Reader or NewsGator Online feeds is also now a lot more discoverable instead of being hidden in some obscure menu with an obscure name ("Synchronize Feeds"). 

Fig 3: The folder tab. This is menu is contextual and becomes selected when you click on a folder in the tree view. There are two features I’d like to call out in this view; Rules and Filters.

Fig 4: The rules tool is where we’ll end up placing existing and new options on behavior the user would like executed on receipt or viewing of new content.

Fig 5: The filter tool is used for filtering the items that show up in the list view. We've had several requests for this feature over the past few years but couldn’t figure out an elegant way to incorporate it into the user interface.

Fig 6: The feed tab. This is a contextual tab that is selected when you click on a feed in the tree view. One feature that I love which is now properly highlighted is that we support creating new posts in feeds that support this such as newsgroups (existing feature) or posting a new status update on Facebook if you have hooked it up as a feed source (new feature).

Fig 7: The item tab. This is the contextual tab that is highlighted when you select an item in the list view. There are no new features highlighted here. What we do think will be interesting is if we make it straightforward for existing and new IBlogExtension plugins to end up showing up in the item tab. So you should think of this tab as being extensible and should expect that some of our existing plugins (e.g. "Email This", "Post to Twitter", etc) will also end up in this tab.


 

Categories: RSS Bandit

I’ve made some more progress in integrating the Facebook news feed into the next version of RSS Bandit currently codenamed Colossus. This weekend I completed the addition of support for viewing and replying to comments in the news feed. So here are some screenshots of current comment workflow for interacting with Facebook comments

Fig 1: Viewing the comments in response to a funny status update from Anil Dash 

Fig 2: Responding to the comment by pressing "Ctrl + R" or right-clicking and selecting Post Reply.

Fig 3: The news feed on Facebook with the comment posted from RSS Bandit


The second major change coming in the Colossus release is the adoption of the design elements from the Microsoft Office fluent user interface such as the ribbon, contextual tabs, galleries and live preview. To prepare for this change, we’re first building a prototype of the redesigned user interface and once we’re happy with it we will start refactoring the RSS Bandit application to enable swapping out our existing menus and taskbars with the new interface.

Here’s where we are in the design prototype for next release. Let me know what you think in the comments.

 


 

Categories: RSS Bandit

So I’ve spent the weekend working my way through Facebook’s Open Stream API and have made a ton of progress in adding the option to read your Facebook news feed from RSS Bandit. In my previous post I should the initial screenshots where you can login to Facebook via RSS Bandit to begin the authentication process to retrieve your news feed. Below are a few more screenshots showing how much progress has been made

Requesting extended permission to read the stream

Fig 1: This is the screen where you give RSS Bandit permission to access your news feed. Note that this is different from the screen where you login to Facebook via RSS Bandit. You should only see this screen once but will get the login screen quite often unless you select the option to stay signed into Facebook via RSS Bandit.

 The Facebook news feed in RSS Bandit

Fig 2: This is what your Facebook news feed looks like in RSS Bandit with the default stylesheet for Facebook applied. As you can see from the screen shot I’ve attempted to replicate the look of the news feed as best as I can in RSS Bandit. This includes options below each item to comment or see who has liked an item.

Viewing news feed comments in RSS Bandit

Fig 3: There is also support for viewing the comments on a Facebook item inline within the Feed Details list view. Although this is different from how Facebook does it, I felt this was needed to make it consistent with the other inline comment viewing experiences within RSS Bandit.


There’s still a bunch of cleanup to do such as fix up the look of comments when you click on them and provide a way to post comments on your friends’ Facebook items. This is probably another day or so of work which I’ll do next weekend. After that it is back to fixing bugs and working with Torsten on our idea from over two years ago on how to add a Office 2007 style ribbon to the application.

Below are pictures of the initial prototypes which Torsten has dusted off and will start working on again

I’ll follow up this post with some of my thoughts on writing a desktop application that targets Facebook’s Open Stream API. The process was definitely more painful than I expected but the results are worth it which says a lot about the functionality provided by the API.


 

Categories: RSS Bandit

This blog isn’t the only place where I’ve been falling behind given my home and work responsibilities. I’ve also not been doing a great job on supporting RSS Bandit. Below is a repost of my first post in months on the official RSS Bandit website.

I’d like to apologize about the lack of updates on this site in recent months. Both Torsten and I have had the combination of work and new additions to the family at home take up a lot of our free time. I’m slowly beginning to get some time back as my son has started growing and things get less hectic at work. This weekend I started hacking RSS Bandit code again and feel it’s a good time to open up communication channels about a codename for the next release Collossus and the planned features.

Right now, I’m working on integrating support for reading your news feed from Facebook using their recently announced Open Stream API. You will be to select Facebook as a choice from the “Synchronize Feeds” menu

once that choice is made, you have to login to Facebook.

For the best experience, you should check to option to stay logged in to RSS Bandit so that we don’t have to prompt you for your Facebook username each time you run the application.

In addition, we will also be looking at bug fixes for a number of the crashing bugs that have been reported which have affected the stability of the application. We know there is at least one problem caused by the inability to render favicons in the tree view correctly which causes the application to crash. If you suspect you are hitting that problem, a temporary workaround is to disable favicons in the tree view by going to the Tools->Options menu and unchecking the option to use favicons as feed icons from the Display tab.

If you have any issues, thoughts or requests related to future versions of RSS Bandit please leave a comment in response to this post.

PS: Thanks to a tip from Mike Vernal I’ve already gotten my first improvement on this feature. The Facebook login screen look more streamlined when this is finally released instead of looking like it barely fits in the dialog box as it does above.


 

Categories: RSS Bandit

November 2, 2008
@ 02:59 PM

UPDATE: This release contained a bug which caused users to lose their feed lists on upgrading from previous versions. Please download v1.8.0.862 from here instead.

I've been talking about it for almost a year and now we've finally shipped it. To celebrate the new release, we've created a new website to capture the awesomeness of the latest version.

Download the installer from here

NEW FEATURES 
- Download manager for viewing pending podcasts/enclosures
- Ability to synchronize feeds with Google Reader, NewsGator Online and the Windows Common Feed List.
- Option to increase or decrease font size in reading pane

BUG FIXES 
- 2153584 FTP storage ignores path, always stores in root directory
- 1987359 System crashes while updating feeds
- 1974485 NewsItem copy content to clipboard only copy the link
- 1971987 Error on start: docs out of order (0 < 6 )
- 1967898 Application hangs on shut down due to search indexing
- 1965832 Exception when refreshing feeds
- 2014927 New feeds not downloaded
- 1933253 Continuously Downloading Enclosures
- 1883614 Javascript in feed content causes exceptions
- 1899299 Oldest unread message shown on alert window on new items
- 1915756 Program crash during close operation
- 1987359 System crashes while updating feeds
- 2096903 Toolbar crashes and replaced with Red X
- 1960767 Crashes on opening due to FIPS policy set on Windows Vista.

Note Now Playing: Young Jeezy - Vacation Note


 

Categories: RSS Bandit

It's been just over a month since we released the alpha of the next release of RSS Bandit codenamed Phoenix. Below are a couple of posts about the alpha from some popular blogs

The tone of the feedback was generally the same. People were very interested in the synchronization with Google Reader but were dissatisfied due to bugs or performance issues. I hadn't expected so much interest in an alpha release otherwise we would have been more diligent about bug fixing and performance improvements. Anyway, there was a ton of great feedback and we fixed a bunch of bugs including the following issues

  • Application hangs on shutdown due to search indexing [bug 1967898]
  • Feeds in tree view not sorted in alphabetical order [bug 1999533]
  • Mouse wheel doesn't work when attempting to scroll feed list [bug 1999534]
  • Removing a synchronized feed source deletes all items across all feed sources [bug 1999800
  • Exception when loading feed list from NewsGator Online [bug 2000390]
  • Feed logos are broken image links in feeds synchronized from NewsGator Online [bug 2000764]
  • Context menu for a feed source doesn't contain the option to remove the feed source [bug 2000808]
  • Exception when loading feed list from Google Reader [bug 20001419]
  • Space not accepted in Name field of Synchronize Feeds dialog [bug 20001908]
  • Google Reader synchronizes feeds but not items within feeds [bug 2001911]
  • Favorite icon not downloaded for Google Reader feeds [bug 2001915]
  • Selecting Unread Items search folder displays error message [bug 2001916]
  • Incorrect NewsGator or Google Reader password cannot be changed [2002144]
  • Crash on attempting to download an enclosure [bug 2004646]
  • Google Reader password communicated over the wire in plain text [bug 2005154]
  • Option to take over network settings from Internet Explorer does not allow specifying proxy server password [bug 2005687]
  • Unable to play a downloaded video from the Download Manager [bug 2005854]
  • Media keeps playing after closing a browser tab [bug 2014408]
  • Custom column layouts not remembered for specific feeds [bug 2022242]
  • Category dropdown in Add Subscription Wizard doesn't match selected feed source [bug 2026658]

There were also a couple of performance and memory usage improvements that were made along the way. I still have one or two issues that I've been having problems reproducing such as one situation where we end up getting a streak of timeouts while waiting for HTTP responses from Google Reader. I suspect it has to do with making lots of requests to a single domain in rapid succession if you're behind a proxy server but I might be wrong. Despite that one issue, the application is now a lot more usable and is feature complete for the release. If you hit that issue, you can either wait a couple of minutes before retrying to refresh feeds or restart the application to clear it up.

You can download the beta version of Phoenix from RssBandit.Phoenix.Beta.Installer.zip. There are two files in the installer package, I suggest running setup.exe because that validates that you have the correct prerequisites to run the application and tells you where to get them otherwise.

If you have any problems feel free to file a bug on SourceForge or ask a question on our forum. Thanks for using our software.

PS: As RSS Bandit is a hobbyist application worked on in our free time, we rely on the generosity of our users when it comes to providing translations of our application. If you look at the supported language matrix for RSS Bandit, you'll see the languages in which the application has been translated in previous versions. We would love to get translators for those languages again and for any new languages as well.  If you'd like to provide your skills as a translator to the next release of RSS Bandit and believe you can get this done in this next month or two then please send mail to . We'd appreciate your help.

Now Playing: Lil Wayne - Best Rapper Alive


 

Categories: RSS Bandit

After talking about it for months, we finally have an alpha version of the next release of RSS Bandit codenamed Phoenix. There are two key new features in this release. The first is that we've finally finished off the last of the features related to downloading podcasts. If you go to View->Download Manager you can now view and manage pending downloads of podcasts/enclosures as shown in the screen shot below.

The second feature is one I'm sure will be appreciated by peoples who like reading their feeds from multiple computers but still want a desktop-based feed reader for a variety of reasons (e.g. reading feeds from a corporate intranet while roaming your feeds from the public Web). With this feature you can have multiple feed lists which are synchronized from a Web-based feed reader such as Google Reader or NewsGator Online while still keeping some feeds local. All you need to do is go to File->Syncronize Feeds and follow the steps as shown in the screen shots below

after selecting the option to synchronize feeds you are taken to a wizard which gives some options of feed sources to synchronize with and obtains your user credentials if necessary.

once you have given the wizard your information your feed list is synchronized and every action you make in RSS Bandit such as subscribing to new feeds, unsubscribing from existing feeds, renaming feeds or marking items as read is reflected in your Web-based feed reader of choice. The experience is intended to mirror the experience of using a desktop mail client in concert with a Web-based email service and it should work as expected.

in addition you can also use Google Reader's sharing feature (or NewsGator's clipping feature) directly from RSS Bandit as shown below

I'm sure you're wondering where you can download this version of RSS Bandit and try it out for yourself. Get it here. There are two files in the installer package, I suggest running setup.exe because that validates that you have the correct prerequisites to run the application and tells you where to get them otherwise.

Please note that this is alpha quality software so although it is intended to be fully functional (except for searching within your subscriptions) you should expect it to be buggy. If you have any problems feel free to file a bug on SourceForge or ask a question on our forum

PS: If you are an existing RSS Bandit user I'd suggest backing up your application data folder just in case. On a positive note, we've fixed dozens of bugs from previous versions.

Now Playing: Young Buck - Puff Puff Pass (ft. Ky-Mani Marley)


 

Categories: RSS Bandit

After weeks of preparatory work we are now really close to shipping the alpha version of the next release of RSS Bandit codenamed Phoenix. As you can see from the above screen shot, the key new feature is that you can read feeds from Google Reader, NewsGator Online and the Windows Common Feed List from RSS Bandit in a fully synchronized desktop experience.

This has been really fun code to write and I'm pretty sure I have a pending blog post in me about REST API design based on my experiences using the NewsGator REST API. The primary work items we have are around updating a bunch of the GUI code to realize that there are now multiple feed lists loaded and not just one. I estimate we'll have a version ready for our users to try out on the 14th or 15th of this month.

Your feedback will be appreciated.

Now Playing: Ben Folds - The Luckiest


 

Categories: RSS Bandit

I'm slowly working towards the goal of making RSS Bandit a desktop RSS client for Google Reader, NewsGator Online and Exchange (via the Windows RSS platform). Today I made some progress integrating with the Windows RSS platform but as with any integration story it is some good news and some bad news. The good news can be seen in the screen shot below

RSS Bandit and Internet Explorer sharing the same feed list

The good news is that for the most part the core application has been refactored to be able to transparently support loading feeds from sources such as the Windows RSS platform or from the RSS Bandit feed cache. It should take one or two more weekends and I can move on to adding similar support for synchronizing feeds from Google Reader.

The bad news is that using the Windows RSS platform has been a painful exercise. My current problem is that for some reason I can't fathom I can't receive events from the Windows RSS platform. I can write the same code and receive events from a standalone program but for some reason the event handlers aren't received triggered when the exact same code is running in RSS Bandit. The main problem I had turned out to have been due to a stupid oversight. With that figured out we're about 80% done with integration with the Windows RSS platform. There are lots of smaller issues too, such as the fact that there is no event that indicates an enclosure has finished being downloaded although the documentation seems to imply the FeedDownloadCompleted does double duty. Or the various exceptions that can occur when accessing properties of a feed including BadImageFormatException for accessing IFeed.Title if the underlying feed file has been corrupted somehow or a COMException complaining that the "Element not found" if you access IFeed.DownloadUrl before you've attempted to download the feed.

I've used up my budget of free time for coding this weekend so I'll start up again next weekend. In the meantime, if you have any tips on working with the Windows RSS platform from C#, don't hesitate to share.

 Now Playing: Bone Thugs 'N Harmony - No Surrender


 

Categories: RSS Bandit

A couple of weeks ago I got a bug filed against me in RSS Bandit with the title Weak duplicate feed detection that had the following description

I already subscribed to "http://feeds.haacked.com/haacked" feed. Then while browsing the feed's homepage the feed autodetection gets refreshed with a "new feed found", url: "http://feeds.haacked.com/haacked/".  It is not detected as a duplicate (ends with backslash) there and also not detected in the subscription wizard.

Even though I argued that there were lots of URLs that seem equivalent to end users that aren't according to the specs I decided to go ahead and fix the two common types of equivalence that trip up end users

Within a few hours of shipping this in version 1.6.0.2 of RSS Bandit, the bug reports have started coming in hard. There's a thread in our forums with the title URL Corruption After Adding a Feed with the following complaints

After I add the feed at: http://www.simple-talk.com/feed/
I get an error in the Error Log and when I restart RSS Bandit, the URL has been truncated to http://www.simple-talk.com

Possibly related problem:
When I add "
http://www.amazonsellercommunity.com/forums/rss/rssmessages.jspa?forumID=22" then RSS Bandit slices and dices it into "http://amazonsellercommunity.com/forums/rss/rssmessages.jspa?forumID=22".
Sorry about the period outside the quotation mark. I wanted to make sure the URL was clear.

Same problem--have a feed, I've used it in the past with RSSBandit and was trying to enter it (tried the usual way first, then turned off autodiscover, then tried to change it via properties) but no matter what I do the www. in front disappears, and the feed doesn't work. http://www.antipope.org/charlie/blog-static/

Each of these is an example where the URL works when the domain is starts with "www" but doesn't if you take it out. This is definitely a case of from bad to worse. We went from the minor irritation of duplicate feeds not being detected when you subscribe to the same feed twice to users being unable to access certain feeds at all.

My apologies to everyone affected by this problem. I will be dialing back the canonicalization process to only treat trailing slashes as equivalent. Expect the installer to be refreshed within the next hour or so.

Now Playing: Young Jeezy feat. Swizz Beatz - Money In Da Bank (Remix)


 

Categories: RSS Bandit

I just realized that the current released version of RSS Bandit doesn’t have a working code name based on a character from the X-Men comic book. The previous 1.5.0.17 release was codenamed ShadowCat while the next release is codenamed Phoenix. Since the v1.6.0.x releases have been an interim releases on the road to Phoenix, I’ve decided to give them the codename Jean Grey retroactively. Now, on to the updates.

Jean Grey (v1.6.0.x) Update

The last bug fix release of RSS Bandit fixed a few bugs but introduced a couple of even worse bugs [depending on your perspective]. We’ve shipped version 1.6.0.2 that addresses the following issues

  • Application crashes with AccessViolationException on startup on Windows XP.  
  • Application crashes and red 'X' shows in feed subscriptions window on Windows XP.  
  • User's credentials are not used when accessing feeds via a proxy server leading to proxy errors when fetching feeds.  
  • Duplicate feed URLs not detected if they differ by trailing slash or "www." in the host name 
  • Application crashes when displaying an error dialog when a certificate issue is detected with a secure feed.

The first three issues are regressions that were introduced as part of refactoring the code and making it work better on Windows Vista. Yet another data point that shows that you can never have too many unit tests and that beta testing isn’t a bad idea either.

You can download the new release from http://downloads.sourceforge.net/rssbandit/RssBandit1.6.0.2_Installer.zip

Phoenix (v2.0)  Update

I’m continuing with my plan to make RSS Bandit a desktop client for Web based feed readers like NewsGator Online and Google Reader. I’ve been slightly sidetracked by the realization that it would be pretty poor form for a Microsoft employee to write an application that synchronized with Google’s RSS reader but not any of Microsoft’s, even if it is a side project. My current coding project is to integrate with the Windows RSS platform which would allow one to manipulate the same set of feeds in RSS Bandit, Internet Explorer 7 and Outlook 2007. The good news is that with Outlook 2007 integration, you also get Exchange synchronization for free.

The bad news has been having to use the RSS reading features of Internet Explorer 7 and Outlook 2007 on a regular basis as a way of eating my own dog food with regards to the integration features. It’s pretty stunning to see not one but two RSS reading applications that assume “mark all items as read” or “delete all feeds” are actions that users never have to take. When you have people writing shell scripts to perform basic tasks in your application then it is a clear sign that somewhere along the line, the user experience for that particular set of features got the shaft. 

I’m about half way through the integration after which I’ll continue with integrating with Google Reader and finally NewsGator Online using an Outlook + Exchange style model. While I’m working on this, both Oren and Torsten will be mapping out the rewrite of the graphical user interface using WPF. I’ll probably need to buy a book on XAML or something in the next few months so I can contribute to this effort. The only thing I’ve heard about any of the various books about the subject on the market is that they all seem to have had their forewords written by Don Box. Does anyone have recommendations on which book or website I should use to start learning XAML + WPF?

Now playing: Eminem - Sing For The Moment


 

It seems I missed the news when this happened last week but according to Greg Reinacker’s post NewsGator’s RSS clients are now free! 

We’ve got a lot of big news today at NewsGator.

First, we’ve got new releases of our most popular applications: FeedDemon 2.6, NetNewsWire 3.1, Inbox 3.0 (beta), and NewsGator Go! for Windows Mobile 2.0. Each of these is a pretty major release on its own - tons of new features in all of them.

But second, every one of those applications is now free! Free as in beer, that is. And add to the free list NewsGator Go! for BlackBerry as well. And not only are they free, but our online services (including synchronization) are now free as well! Not to mention our iPhone reader, HTML mobile reader, and all of the other applications that are part of our online platform.

According to Greg and Nick Bradbury, the reason they are doing this is because the bulk of their profits/revenues come from selling Enterprise licenses and the desktop readers are now being used as advertising to get enterprise customers.

They also mention that the other reason they are giving away their desktop application is that they see a lot of financial value from collecting information about what feeds their users are reading. My assumption was that this is because the demographic data is being resold to marketers although both Greg and Nick make it seem like the collection of this data is benign and only used for end user facing features. 

Anyway, this is pretty great news for fans of desktop RSS readers. If I didn’t already have RSS Bandit, FeedDemon would be my first choice when it comes to a desktop RSS reader for Windows. I also like the fact that we get a shout out as part of the setup experience for FeedDemon which is shown below

Thanks for the shout out Nick. Smile

Now that these apps are free, it does encourage us to step our game up with RSS Bandit. Right now, my thinking is that official version number for the release currently codenamed Phoenix will be RSS Bandit 2.0. This release will be deserve the monicker “2.0” for two reasons

  1. The user interface will be completely rewritten from scratch by Oren and Torsten using WPF.
  2. The application will become capable of being a full-blown desktop client to both Google Reader and NewsGator Online.

If I seem to have been blogging less, it is because I’ve been spending more time reading about code, thinking about code and writing code in my free time. I can’t wait to get the first beta out to you guys in a few months.

Now playing: Kid Rock - Welcome To The Party (Ode 2 the Old School)


 

With the v1.6.0.0 out of the door, I've shipped what I think is our most interesting feature in years and resolved  an issue that was making RSS Bandit a nuisance to lots of sites on the Internet.

The feature I'm currently working on is an idea I'm calling supporting multiple feed sources. For a few years, we've had support for roaming your feed list and read/unread state between two computers using an FTP site, a shared folder or NewsGator Online. Although useful, this functionality has always seemed bolted on. You have to manually upload and download feeds from these locations instead of things happening automatically and transparently as they do with the typical mail reader + mail server scenario (e.g. Outlook + Exchange) which is the most comparable model.

My original idea for the feature was simply to make the existing NewsGator and RSS Bandit integration work automatically instead of via a manual download so it could be more like Outlook + Exchange. Then I realized that there could never be full integration because there are feeds that RSS Bandit can read that a Web-based feed reader like NewsGator Online can not (e.g. feeds within your company's intranet if you read feeds at work). This meant that we would need an explicit demarcation of feeds that roamed in NewsGator Online and those that were local to that machine.

In addition, I got a bunch of feedback from our users that there were a lot more of them using Google Reader than using NewsGator Online. Since I was already planning to do a bunch of work to streamline synchronizing with NewsGator Online, adding another Web-based feed reader didn't seem like a stretch. I'm currently working on a command line only prototype in IronPython which uses the information from the reverse engineered Google Reader API documentation to retrieve and update my feed subscriptions. I'm about part way through and it seems that the Google Reader API is as full featured as the NewsGator API so we should be good to go.  I should be able to integrate this functionality into RSS Bandit within the next few weeks.

The tricky part will be how the UI integration should work. For example, Google Reader doesn't support hierarchical folders of feeds like we do. Instead there is a flat namespace of tag names but each feed can have one or more tags applied to it. On the flip side, NewsGator Online uses the hierarchical folder model like RSS Bandit does. I'm considering moving to a more Google Reader friendly model in the next release where we flatten hierarchies and instead go with a flat tag-based approach to organizing feeds. For the case, of feeds synchronized from NewsGator Online we will prevent users from putting feeds in multiple categories since that won't be supported by the service.

Now Playing: Eminem - Evil Deeds


 

Categories: RSS Bandit

December 26, 2007
@ 05:22 PM

The new version of RSS Bandit is now available. This release fixes a bug that causes the application to repeatedly request favicons from a feed's website in a manner that eventually resembles a denial of service attack. The new feature in this release is the [Top Stories] button.

The rationale for the new feature is given in Omar Shahine's blog post entitled Google Reader needs Mute. Omar wrote

Here is a feature that Google Reader needs: Mute.

Why, Cause subscribing to a lot of tech bloggers, a-list folks, and news outlets is extremely annoying when they write about the same thing. You get tired of seeing dozens or hundreds of posts about Kindle, Facebook, ThinkSecret and on and on.

These days I feel like my blogging info is like the local news (which I stopped watching some time back in high school).

So, please google, let me mute or mark read all feed items on a certain topic as read and save me the hassle of suffering through the repetition and pain.

The Top Stories feature is meant to target exactly this scenario. When you click on it, you get a list of the most recently popular items among your subscriptions. From there you can hit "Mark Items as Read" and mark all of the linking posts as read once you've gotten the gist of the story.

We don't have a Mute option where all posts that link to a story are automatically marked as read or deleted after being downloaded. This seems like overkill to me but would love to get some feedback from our users if this would be a desirable feature.

Translations
This release is available in the following languages; English, German, Polish, French, Simplified Chinese, Russian, Brazilian Portuguese, Turkish, Dutch, Italian, Serbian and Bulgarian.

Installer
Download the installer from RssBandit1.6.0.0a_Installer.zip . A snapshot of the source code will be available later in the week as a source code release.

New Features

  • Top Stories button shows the ten most recently popular links in your subscriptions.
  • Twitter plugin enables posting tweets about news stories or responding to tweets in an RSS feed.

Major Bug Fixes

  • Del.ico.us plugin silently fails when posting items with tags containing special characters like '#' or '+'
  • Downloading feed list from NewsGator Online deletes local machine and intranet feeds
  • KeyNotFoundException if "Mark All Items as Read" clicked shortly after changing the URL for a subscribed feed.
  • 100% CPU used when an RSS feed with no <channel> element is encountered.
  • Downloading favicons happens several times while the application is running instead of just once.
  • The "Check for updates" feature would sometimes result in the application crashing.

 

Categories: RSS Bandit

Two days ago a bug was filed in the RSS Bandit bug tracker that claimed that Slashdot is banning RSS Bandit users because the application is acting like a Denial of Service client. The root cause of the problem is a bug in the logic for downloading favicons where the application repeatedly attempts to download favicons from each site in your subscription list if there is an error accessing or processing one of the favicons in your list of subscriptions.

We will be releasing version 1.6.0.0 of RSS Bandit this weekend which remedies this problem. I plan to spend all of Saturday fixing as many bugs as I can and polishing up the Top Stories feature. We will likely ship the release sometime on Sunday. It should be noted that this release will be the first version RSS Bandit that will require version 2.0 of the Microsoft .NET Framework or later.

I’d like to apologize to everyone who has been inconvenienced by this issue. Thanks for your support and the great feedback you’ve been sending us.

Now playing: Cool Breeze - Watch for the Hook (Dungeon Family Remix) (feat. Outkast & Goodie Mob)


 

Categories: RSS Bandit

Things have been progressing well with RSS Bandit development recently. Some of our recent changes seem so valuable to me that I’ve been flirting with throwing out all our plans for Phoenix and shipping a new release right away. That’s how much I like the personalized meme tracking feature. I also fixed a bug where we continually fetch favicons for all your feeds if one of the sites in your subscriptions gives us an invalid image when we fetch its favicon. This bug affects me personally since a lot of RSS Bandit users are subscribed to my site and are polling my favicons several times an hour instead of once every startup or less. 

Despite those thoughts, we will continue with our plan to add the top 5 features for the next version of RSS Bandit which I blogged about last month. I need to do some fit & finish work this weekend on the meme tracking feature and then it is on to the next set of tasks. Torsten will be looking at ways to add UI for managing your pending and downloaded podcasts. I will be working on adding support for treating the Windows RSS platform and Newsgator Online as “Feed Sources”. This will mean that you can use RSS Bandit in standalone mode and as a desktop client for feeds that you are either sharing with Newsgator applications  (FeedDemon, NewsGator Online, Net News Wire, etc) or Windows RSS platform applications (Internet Explorer 7, Outlook 2007, etc).

For a long time, people have been asking for me to treat services like Newsgator Online in the same way an email client like Outlook treats mail servers like Exchange instead of the arms length degree of integration I’ve done in the past. It’s taken a while but I’m now going to go ahead and do just that.  

With that done, we’d probably have enough new features to ship an alpha and start getting initial feedback. I estimate that this will happen sometime in the first quarter of 2008. I also plan to go over our backlog of bugs during the holiday season and will knock out as many as I can before the alpha.

If you have any questions or comments, fire away. I’m all ears.

Now playing: Scarface - Diary of a Madman


 

Categories: RSS Bandit

November 30, 2007
@ 04:00 AM

I had some free time last night, so I ported my meme tracker in IronPython over to C# and integrated it into the RSS Bandit source tree. Below is a screenshot of the results of clicking the [Top Stories] button on my feeds today.

Screenshot of RSS Bandit 'Top Stories' Feature

Now the fun part of the code is over and the fit & finish begins. I probably need some CSS help to render that list in a style that is a little more pleasant and less utilitarian. I was going to start of by copying the TechMeme look and feel but any other suggestions are welcome.

After that I need to figure out what configuration options we should have, if any. Right now it shows the top 10 stories from the past week using a weighted scoring mechanism that rewards newly popular items and penalizes older ones. So a page with 3 links from your subscriptions today will rank higher than an item with 5 links from your subscriptions from three days ago. I’m not sure if people will want to change any of those factors (number of posts shown, the date range or the weighted scoring system) but then again I hate cluttering the UI up with configuration options that only 1% of our user base will ever use.

I should also decide if we show multiple posts from the same feed which link to the same item or just pick the newest one. Right now, I’m only showing a single post from the feed because I subscribe to planet feeds like MSDN Blogs and ASP.NET Weblogs which means that when there are announcements like the rebranding of Silverlight 1.1 to Silverlight 2.0 there are like 20 posts from those two feeds alone about it.

Finally, I was wondering about a “mark all items that reference this link as read” feature. For example, I really don’t need to read every post about Google’s clean energy aspirations or a geek dinner starring Robert Scoble and Dave Winer to get the gist of it. So being able to mark every post linking to these items as read once I read the main link would be nice. On the other hand, I am interested in all of the various opinions on Facebook Beacon from my subscriptions. So that rules out an automatic ‘mark as read’ feature which was my initial thought.  

Maybe I was wrong, there is still some fun coding left. Namaste.

Now playing: Dream - Shawty Is A 10 (remix) (feat. R. Kelly)


 

Categories: RSS Bandit

I’ve started thinking about the next release of RSS Bandit and I thought it would be a good time to share some of my thoughts with our users and see what people would like us to add, fix or otherwise improve the application. It’s hard to believe that I started working on RSS Bandit almost five years ago. In that time, we’ve had the application downloaded over a million times and at the height of it’s popularity we were seeing up to a 100,000 downloads a month when we shipped a new release. Since then the popularity of the application has waned a little with the advent of Web-based feed readers like Bloglines and Google Reader as well as the fact that the amount of work Torsten and I can get done in our spare time pales in comparison to what folks who do this for a living like Nick Bradbury can get done.

That said, there are features I want from a feed reader that I don’t get from FeedDemon or Google Reader which is why I still work on RSS Bandit and why I started this blog entry. Below are the list of features I want us to do in the Phoenix release in order of which ones are most likely to be in the final version. Let me know what you think of them.

  • Meme Tracking: I’m now officially at the point where I don’t have enough time to read all the feeds I have in my subscription list anymore. For the most part, I’ve gotten around this by browsing programming.reddit, Techmeme and Sam Ruby’s MeMeme about once or twice a day. Although they are all great, the problem I have is that there are parts of the blogosphere that none of these sites is good at tracking. For example, none of these sites is really on top of the Microsoft employee blogosphere which I’m interested in for obvious reasons.

    I've been talking about building a feature similar to FeedDemon's popular topics for a long time but I've now gotten to the point where I don't think I can get a lot of value out of my blog subscriptions without having this feature.

  • Podcast Management User Interface: We kind of ran out of time with the last release and shipped a podcast downloading feature without an actual user interface for managing your podcasts (i.e. seeing pending downloads, percent complete, etc) which is really lame. Since I don’t subscribe to a lot of podcasts, this hasn’t been an issue. However I suspect that the reason I don’t is exactly because we didn’t complete implementation of this feature.

  • Plugin Model: One of the things I haven’t liked is that sometimes I want to add a single feature but once I check it in, I still need to wait for all the features slated for that release before we can get it out to users. We could move to having more frequent releases but I’m not sure people want to deal with reinstalling the application every two months because I added a single feature. What I’d like us to build a plugin model where we can ship meaningful extensions to the core application without having it tied to a release.

    I like the multi-pronged approach taken by Windows Live Writer where there are multiple APIs provided depending on the depth of integration and complexity of the functionality you’d like to add to the application. Torsten started on this a while ago but we never got around to refactoring the proposed extensibility APIs in a way that satisfied us.

  • Feeds Grouped by Sources: Right now, I’m not really happy with the way our integration with NewsGator Online works. There’s an issue with the fact that NewsGator doesn’t know what to do with intranet feeds or feeds that are actually on your local machine (for the wacky folks that subscribe to their system event logs). In addition, folks have asked if we'll ever integrate with the Windows RSS platform and I've had concerns about that since there are features we need that it doesn't provide.

    I’ve considered that the solution to both problems is to break out the My Feeds node into three sub-nodes; RSS Bandit feeds, Windows RSS platform feeds (shared with IE, Outlook and Windows Live Mail) and NewsGator feeds. This would require some radical re-engineering since it now assumes we’ll be using three different stacks to poll for feed updates but in the long run I think this is the right approach. This is probably the most complicated and controversial feature we’ll have in the release.  

  • A Single Node Mapping to Multiple Feeds: I was recently looking at my FriendFeed page and it brought home to me that many geeks have multiple feeds that represent the content they are placing on the Web. For example, my friend Joshua Allen has a personal weblog as well as a work-related weblog. It’s really lame to have two entries for him in RSS Bandit when it’s all the same person.

    The main problems with a feature like this aren't around the complexity of the information but more around how to represent this to users in the application in a way that is understandable and easy to manage.

If you are an RSS Bandit user I’d love to hear what you think of this list. Does this list sound relevant to you or are there more pressing features you’d like to see addressed first? Also what are your pet peeves?

PS: Someone recently asked me if there are any corporate RSS Bandit users. I know a bunch of folks use it at work and that some places actually have it as part of the default install on their work PCs but don’t have any details handy. If you have any anecdotes to share, I’d appreciate it.

Now playing: G-Unit - Poppin Them Thangs


 

Categories: RSS Bandit

I'd like to say big "Thank You" to all the folks who tried out the recent release of RSS Bandit. Based on feedback from the RSS Bandit forums, it looks like so far the release was solid except for two regressons and an oversight on my part.

These issues have been fixed and we just uploaded an updated installer which can be obtained at RssBandit1.5.0.17b_installer.zip.

The issues fixed by this refresh are listed below

  • Annoying dialog box pops up instead of yellow warning bar when ActiveX warning is displayed. (bug 1796850)
  • Difference between unread count on MyFeeds node and "Unread Items" folder, (bug 1796849)
  • Folder hierarchy not uploaded when uploading feed list to Newsgator Online
  • Feed upload to Newsgator Online stops with “InvalidUrl error” if a URL that cannot be processed by Newsgator Online is encountered (e.g. intranet URLs, local file system URLs, etc).

I’m disconnecting from the grid starting tomorrow morning and shouldn’t be back online until October 1st. Try not to get into too much trouble while I’m gone. Wink 

Now playing: G-Unit - I Wanna Get to Know You


 

Categories: RSS Bandit

In a recent comment to one of my blog post Daniele Muscetta lists some of the reasons he no longer uses RSS Bandit as much as he used to...

I have been using it less and less this past year:
- at the beginning because of the troubles having it run on Vista,
- then because I really like the possibility to have my feeds everywhere instead than on one PC (I use multiple computers)
- and finally because with a web based aggregator I can immediately SHARE and MARK what I read and make it available again for other people to see. This one is a killer feature of the various google reader or bloglines... letting people make their own link blog republishing stuff they read and like. Of course I am not complaining... to do such a thing you would need an infrastructure - as opposed to just releasing a program that runs on the PC...

I agree that the ability to access your feeds from anywhere is a great advantage of Web-based feed readers. On the other hand, I haven't found a Web-based feed reader that has all of the features I've come to take for granted in RSS Bandit especially when you consider some of the extra features like downloading podcasts and being able to access newsgroups. I've always wanted to be able to provide the best of both worlds to our users which is why a few years, I added support for the NewsGator API with the intent of enabling our users get to no longer have to choose between a desktop feed reader and a Web-based one, and can use whichever they want whenever they want (i.e. the Outlook and Outlook Web Access model).

However my implementation was incomplete and I incorrectly blamed the API when in truth I didn't do a great job in understanding how the API should be used. Yesterday, I revisited the problem and fixed a number of brain dead misuses of the API in our implementation (e.g. ReplaceSubscriptions isn't a shortcut that can be used in place of multiple calls to AddSubscription and DeleteSbscription) . Now the feature works like a charm and I've created two screen casts showing  how you can get the world's best RSS reading experience for FREE, today.

RSS Bandit & NewsGator (part 1)

RSS Bandit & NewsGator (part 2)

To learn more about using this feature, you can also read the RSS Bandit documentation on using NewsGator and RSS Bandit to synchronize your feeds across multiple computers.
 

Categories: RSS Bandit

September 17, 2007
@ 04:29 AM

The final version of the ShadowCat release of RSS Bandit is now available. This release isn't about new features but instead about making the existing features work a lot better and fixing a ton of stability issues related to our usage of Lucene for search engine for our full-text search.

Translations
This release is available in the following languages; English, German, Polish, French, Simplified Chinese, Russian, Brazilian Portuguese, Turkish, Dutch, Italian, Serbian and Bulgarian.

Installer
Download the installer from RssBandit1.5.0.17b_installer.zip . A snapshot of the source code will be available later in the week as a source code release.

New Features

  • Newspaper view can be configured to show unread items in a feed as multiple pages instead of a single page of items
  • Feed list and read/unread status of news items can be synchronized with NewsGator Online (and thus FeedDemon and NetNewsWire as well).

Major Bug Fixes

  • Images show up as broken links when viewing the feed for the Facebook blog
  • Application gets lost on second screen in multi-monitor setup (bug 1288729) and incorrect dual-display handling on startup (bug 1479148)
  • Marking search engines in options doesn't register as change (bug 1782946)
  • Application crashes with "InvalidOperationException" or "Index is closed" error message. (bug 1777810)
  • Application crashes with "docs out of order" error message. (bug 1783688)
  • Synchronization with Newsgator Online does not recognize items marked as read from within RSS Bandit (bug 1368567).
  • Automatic Mark as Read behavior while scrolling sometimes stops working.
  • Deleted items show up as unread after upgrading from v1.3.0.42
  • Application displays error dialog with "UnauthorizedAccessException" or "access denied" error at random times during the day. (bug 1777411)
  • Javascript errors on Web pages result in error dialogs being displayed or the application hanging.
  • Search indexing thread takes 100% of CPU and freezes the computer.
  • Crashes related to Lucene search indexing (e.g. IO exceptions, access violations, file in use errors, etc)
  • Crash when a feed has an IRI (i.e. URL with unicode characters such as http://www.bücher-forum.de/forum/rdf.php) instead of issuing an error message since they are not supported.
  • Context menus no longer work on category nodes after OPML import or remote sync
  • Crash on deleting a feed which still has enclosures being downloaded
  • Podcasts downloaded from the http://poweruser.tv/ feed are named "..mp3" instead of the actual file name.
  • Items marked as read in a search folder not marked as read in original feed
  • No news shown when subscribed to newsgroups.borland.com
  • Can't subscribe to feeds on your local hard drive (regression since it worked in previous versions)
  • Random crashes due to error renaming file "deleteable.new" to "deletable" or "segments.new" to "segments" in search index folder.
  • Items in Atom 0.3 feeds that have a <created> date but no <issued> date show their date as the last modified date of the feed instead of the created date.
  • Images don't show up on certain items when clicking on feed or category view if the feed uses relative links such as in Tim Bray’s feed at http://www.tbray.org/ongoing/ongoing.atom.
  • Empty pages displayed in newspaper view when browsing multiple feeds under a category node.
  • Newly added feeds do not inherit the feed refresh rate specified in the Options dialog.
  • In certain cases, the following error message is displayed when attempting feed upload via FTP; "Feedlist upload failed with error: Passive mode not allowed on this server.."
  • Application crashes on startup with the COMException "unknown error"
  • None of the options when right-clicking on "This Feed" in feed properties is valid for newsgroups.
  • Crash because the application cannot modify the .treestate.xml configuration file
  • Crash when clicking on enclosure link in toast window
After the final release of ShadowCat, the following release of RSS Bandit (codenamed Phoenix) will contain our next major user interface revamp and will be the version where we move to version 2.0 of the .NET Framework. ShadowCat will be the last version of RSS Bandit that will run on version 1.1 of the .NET Framwork. You can find some of our early Phoenix screen shots on Flickr


 

Categories: RSS Bandit

September 14, 2007
@ 03:30 PM

Torsten and I just got an email asking whether RSS Bandit is an abandoned project. This is a fair question given how little activity there has been from us over the past couple of months.

The fact is that we're both pretty busy in our personal lives right now. I'm getting married a week from tomorrow and Torsten just had a baby. Since RSS Bandit is a project we maintain in our free time, it has suffered while we go through transitions on the home front. I'm about a month away from being able to dedicate any serious time to the project and Torsten is in a similar boat.

However the currently checked in code is a lot more stable than the current release since we have fixed or worked around a number of issues in Lucene.NET which we use for building the search index.  For that reason, I'll be releasing a new version of RSS Bandit this weekend which should be fix a lot of issues a number of our regular users have had with the last release.

Next month, I'll start thinking about the features I'd like to add in the next release and should be able to start writing new code again. Thanks for your patience and support.


 

Categories: RSS Bandit

It's been about a month and a half since we shipped the beta version of the next release of RSS Bandit codenamed ShadowCat. Since then we've been listening to our user feedback and have tracked down the major bugs that were causing significant instability in the application. After a lot of research and tons of negative feedback from our users we found out that the primary culprit for the significant increase in the number of crashes in the application in the most set of releases was a known issue in the Lucene search engine which powers our search feature. If we hear back from users who’ve complained that these crashes are no longer an issue, we’ll declare the release golden and start work on the Phoenix release.

You can grab the latest installer at RssBandit.1.5.0.15.ShadowCat.Beta.zip and let us know hear about your comments, complaints or kudos in the RSS Bandit forums

Major Bug Fixes Since the Previous ShadowCat beta

  • Random crashes due to error renaming file "deleteable.new" to "deletable" or "segments.new" to "segments" in search index folder.
  • Items in Atom 0.3 feeds that have a <created> date but no <issued> date show their date as the last modified date of the feed instead of the created date.
  • Images don't show up on certain items when clicking on feed or category view if the feed uses relative links such as in Tim Bray’s feed at http://www.tbray.org/ongoing/ongoing.atom.
  • Empty pages displayed in newspaper view when browsing multiple feeds under a category node.
  • Newly added feeds do not inherit the feed refresh rate specified in the Options dialog.
  • In certain cases, the following error message is displayed when attempting feed upload via FTP; "Feedlist upload failed with error: Passive mode not allowed on this server.."
  • Application crashes on startup with the COMException "unknown error"
  • None of the options when right-clicking on "This Feed" in feed properties is valid for newsgroups.
  • Crash because the application cannot modify the .treestate.xml configuration file
  • Crash when clicking on enclosure link in toast window

Now playing: Young Buck - I Know You Want Me (feat. Jazze Pha)


 

Categories: RSS Bandit

One of my favorite quotes about the art of software development is

You cannot eliminate complexity, all you can do is move it around

This is very true when it comes to designing systems. You should always look with skepticism when someone tells you that some development tool or technology eliminates complexity. Usually this means the complexity has been hidden but lurks just below the surface waiting to ensnare unwary programmers. However on certain rare occassions, the complex part of the problem is actually solved by the tool or technology effectively eliminating from the worries of the application developer. This is very rare.

A good example of a technology which eliminated complexity for application developers by moving it into the purvey of runtime frameworks is garbage collection. The complexity of memory management was eliminated as a concern of application developers and moved into the domain of application framework developers. This was a win for the industry since the complexity could be relegated to realm of language runtime gurus.

There are lots of examples of technologies that claim to "eliminate complexity" but actually just move it around in a way that makes the complexity less obvious. This is often because, the person claiming to be eliminating the complexity fails to acknowledge where the complexity lies in the first place. For example, when the .NET Framework was first shipped by Microsoft there were lots of claims that DLL Hell would now be a thing of the past. You can still find blog posts and articles like Simplifying Deployment and Solving DLL Hell with the .NET Framework from that era claiming that "DLL Hell" is solved. The problem with that thinking was that versioning and keeping libraries backwards compatible is a fundamentally hard problem that often has no good solution. At the end of the day, you only have two real choices when it comes to preserving backwards compatibility; never change the existing functionality of a library or always ensure that applications always run against the original library they were compiled against so that if the new one changes behavior, they are unaffected. Both choices are untenable which means there will always be complexity when it comes to how one handles versioning and system libraries.

It’s been about six years since the first versions of the .NET Framework were shipped and such hyperbole has died down. Today you can find posts like What A Difference A Revision Makes - IConfigMapPath Is Inaccessible Due To Its Protection Level and Microsoft .NET Patch May Make PCs Go "Haywire" which indicate that DLL Hell is still alive and well when it comes to programming against the .NET Framework.

This brings me to my point. Recently Shawn Steele of Microsoft wrote a blog post entitled Security patch MS07-040 for .Net 2.0 breaks some culture names for .Net 2.0 on Windows XP/2003/2000 where he writes

The .Net patch of July 10th, ms07-049, changes culture names to use the new names on Windows XP/2003/2000 as well as Vista...Unfortunately this change can break applications that expect the old names.  If that happens, the workaround of creating custom cultures might work for your application.

Potential problems experienced by applications could be:

  • client/server communication because one used the old names and one used the new names.  A workaround is to create custom cultures with the old names and choose a parent fallback for them.
  • Visual Studio projects probably need migrated to use the new names for the resources, otherwise there could be confusion compiling and loading resources.
  • If this is your system locale there could be problems loading resources using the old name, depending on the behavior.  In this case creating custom cultures for the old names and replacements for the new names with the old names as the parent culture may solve the problem.

This problem affects the following cultures supported by RSS Bandit; zh-CHT->Chinese (Traditional), zh-CHS->Chinese (Simplified), sr-SP-Cyrl->Serbian (Cyril), and sr-SP-Latn (Latin).

The blog post is unclear but it sounds like RSS Bandit may for our Chinese and Serbian users who have updated their versions of the .NET Framework. However I’m not 100% sure this is the case. If you are an RSS Bandit user whose environment is set to Chinese or Serbian and have applied the recent .NET Framework security patch, please respond to this comment with information about any problems you are facing or let me know if there are no problems.

Thanks for your continued support.

Now playing: T.I. - Big Things Poppin (Do It)


 

Categories: Programming | RSS Bandit

We are about ready to ship the second release of RSS Bandit this year. This release will be codenamed ShadowCat. This version will primarily be about bug fixes with one or two minor convenience features thrown in. If you are an RSS Bandit user who's had problems with crashes or other instability in the application, please grab the installer at RssBandit.1.5.0.14.ShadowCat.Beta.zip and let us know if this improves your user experience. 

New Features

  • Newspaper view can be configured to show unread items in a feed as multiple pages instead of a single page of items

Major Bug Fixes

  • Javascript errors on Web pages result in error dialogs being displayed or the application hanging.
  • Search indexing thread takes 100% of CPU and freezes the computer.
  • Crashes related to Lucene search indexing (e.g. IO exceptions, access violations, file in use errors, etc)
  • Crash when a feed has an IRI (i.e. URL with unicode characters such as http://www.bücher-forum.de/forum/rdf.php) instead of issuing an error message since they are not supported.
  • Context menus no longer work on category nodes after OPML import or remote sync
  • Crash on deleting a feed which still has enclosures being downloaded
  • Podcasts downloaded from the http://poweruser.tv/ feed are named "..mp3" instead of the actual file name.
  • Items marked as read in a search folder not marked as read in original feed
  • No news shown when subscribed to newsgroups.borland.com
  • Can't subscribe to feeds on your local hard drive (regression since it worked in previous versions)

After the final release of ShadowCat, the following release of RSS Bandit (codenamed Phoenix) will contain our next major user interface revamp and will likely be the version where we move to version 2.0 of the .NET Framework.You can find some of our early screen shots on Flickr.


 

Categories: RSS Bandit

I believe we're on track to release a new version of RSS Bandit by the end of the month. Besides the bug fixes there are two minor features we are adding. The screenshot below showss the options dialog that controls them.

The first new feature, is a fix that should fix a number of the performance problems people have when they read feeds with lots of unread items. Currently we display all the unread items in the reading pane when you click on a feed. Although this makes it convenient to read the unread items in the feed, it can take a while to render in the embedded Web browser if there are a lots of posts. To remedy this, we've introduced pagination to the reading pane. By default, we'll now show only 10 unread items per page and users can configure this to what best suits their needs.

The second feature, is actually the ability to turn off an existing feature. In the current release, the default stylesheet mimics Google Reader in that items are automatically marked as read as you scroll through the reading pane. Although a lot of our users liked the feature, a number of our users asked for a way to disable this feature. You asked, so we've delivered.

Our main problem now is how to change the CSS/HTML for the reading pane to introduce [previous page] and [next page] navigation links without making it look ugly. My CSS design skills are pretty lame.


 

Categories: RSS Bandit

May 8, 2007
@ 04:49 PM

It's been a while since I've written about RSS Bandit. In fact, I haven't written anything since we released v1.5.0.10 formerly codenamed Jubilee about two months ago. Between getting my work affairs in order to so I could travel to Nigeria, spending a few weeks there and then coming back to catch up on work, I haven't had much time for RSS Bandit. However I can now see the light at the end of the tunnel and will be able to start writing code again by this weekend.

Since we shipped the release, there have been two major issues reported which Torsten has been working on. In his post RSS Bandit and the 100% CPU issue the issue of the application using 100% CPU is addressed thusly 

Today I could track down an annoying issue: on some installations of the newer version of RSS Bandit (starting with the first betas of 1.5.0.x) it starts using 100%CPU time on a thread. As we started also to use lucene.NET with this new release I guessed it was a related issue, I was right. But as we run into multiple issues with lucene it was not obvious as a separate problem. So here it is:

We used a slightly modified version of lucene.NET to include the available language dependent analyzers and stopword filters. Before we released, I already fixed some obvious issues I got with e.g. french stemmer. Now we got more with the CJK (Japanese/Korean, bug report) and possibly Chinese analyzers. It looks like it get into a state it never returns. The attached debug callstack was very helpful to got the direction to search for! I found this: TextReader.Read(char[], int, int) was called and the return value checked against -1 only, not against 0 (zero). So I run over all analyzers to find all the places I have to change that code and here it is: the modified lucene.net.dll (zipped, 142K).

A number of users have grabbed the linked DLL and followed Torsten's instructions and fixed the problem. The second issue and solution can be found in the RSS Bandit forum post Beta Bugfix debugging version 1.5.0.12 where Torsten writes

All of you reporting/considering the lucene related indexing errors, please download and try the Beta Bugfix debugging version 1.5.0.12 from http://rssbandit.sourceforge.net/builds/RssBandit.1.5.0.12.CVS.bin.zip

Report any further issues related to lucene only as responses here (with the usual infos as OS and version etc.).

Thanks!

PS: you should delete the whole folder named "index" in the RSS Bandit user data folder before starting the application, the old index is possibly corrupted because of the errors before.

A number of users have reported getting exception messages related to the Lucene search index and this is due to threading issues we are facing while manipulating the search index. I thought I had handled all the issues in the final release but it seems I was mistaken. If you are an RSS Bandit user who has faced some of these issues, try out the version of the application fix linked above and let us know if the problem goes away.

Both of these fixes will be in an upcoming release of RSS Bandit that will ship at the end of the month. I may add a tiny feature with this bug fix release; adding pagination to newspaper views which is something I've wanted to do for at least a year now.


 

Categories: RSS Bandit

Although this has taken much longer than I expected, the Jubilee release of RSS Bandit is now done and available for all. Besides the new features there are a number of performance improvements especially with regards to the responsiveness of the application.

Major differences between v1.5.0.10 and v1.3.0.42 below

Translations
This release is available in the following languages; English, German, Polish, French, Simplified Chinese, Russian, Brazilian Portuguese, Turkish, Dutch, Italian, Serbian and Bulgarian.

Installer
Download the installer from RssBandit1.5.0.10_installer.zip . A snapshot of the source code will be availabe later in the week as a source code release.

New Features Major Bug Fixes
 

Categories: RSS Bandit

March 2, 2007
@ 12:23 AM

I just got a phone call from an RSS Bandit user whose daily workflow had been derailed by a bug in the application. It seems that we were crashing with an ArgumentException stating "Argument already exists in collection" when she tried to import an OPML file. This seemed weird because I always make sure to check if a feed URL exists in the table of currently subscribed URIs before adding it. Looking at the code made me even more confused


if(!_feedsTable.ContainsKey(f1.link)){
f1.lastretrievedSpecified = true;
f1.lastretrieved = dta[count % dtaCount];
_feedsTable.Add(f1.link, f1); /* exception thrown here */
}

So I looked at the implementations of the ContainsKey() and Add() in my data structure which lead me to the conclusion that we need better unit tests


public virtual bool ContainsKey(String key) {			
  return (IndexOfKey(key) >= 0);
}

public virtual void Add(String key, feedsFeed value) {
	if ((object) key == null)
		throw new ArgumentNullException("key");

	/* convert the URI to a canonicalized absolute URI */ 
	try{
		Uri uri = new Uri(key); 
		key = uri.AbsoluteUri;
		value.link = key; 
	}catch {}

	int index = IndexOfKey(key);

	if (index >= 0)
		throw new ArgumentException(
			"Argument already exists in collection.", "key");

	Insert(~index, key, value);
}

My apologies to any of our users who have been hit by this problem. It'll be fixed in the final release of Jubilee.


 

Categories: Programming | RSS Bandit

A few weeks ago I announced the availability of the release candidate for the Jubilee release of RSS Bandit. We got a lot of good feedback from our users on that release and have fixed a ton of bugs based on that feedback. With the addressing of these bugs we believe the product is now stable enough for a final release. Thus we have refreshed the release candidate installer and made it available at http://downloads.sourceforge.net/rssbandit/RssBandit.1.5.0.9.Jubilee.RC2.zip. Our plan is to watch for feedback on this release candidate and if there are no major issues left, then we will release a final version with a version number of v1.5.0.10 on March 3rd, 2007.

Below is an exhaustive list of the bugs that have been fixed in the past three weeks. Since there are quite a number of them, I've highlighted the fixed issues that were particularly annoying to users based on the amount of feedback we got on them.

Change Log for RSS Bandit 1.5.0.9 (Jubilee Release Candidate 2)

  • Fixed: RSS 0.91 DTDs now fetched from local machine instead of http://my.netscape.com/publish/formats/rss-0.91.dtd to cope with announcement made by Netscape that the file will stop being available on July 1, 2007.
  • Fixed: Custom actions in installer prevent installation on Windows Vista.
  • Fixed: security exception on opening Options dialog if UAC is activated or a user does not have admin privilegs
  • Fixed: Scrolling through newspaper can mark items unread if they were marked as read outside the newspaper view(bug 1641219)
  • Fixed: Selecting multiple items then right-clicking on them, deselects them (bug 1642463)
  • Fixed: Size limit on podcast folder wasn't being honored (bug 1642923)
  • Fixed: The search index somehow becomes corrupted then every couple of minutes a dialog box would pop up with the error message "Unexpected Exception on SaveApplicationState() ---> System.IO.FileNotFoundException"
  • Fixed: Marking an item as read in a search folder doesn't mark it as read in the main feed.
  • Fixed: Some feeds refuse to display with the following error message - "Error retrieving feed ... from cache: Item has already been added".
  • Fixed: Save Search button was not working in the search panel
  • Fixed (completed): Back button chevron should be removed when web browsing
  • Fixed: Feed Subscriptions Panel width was not remembered on restart (bug 1647343)
  • Feature: search folders now have a context menu entry to toggle display of full item texts (somewhat slower than show summaries)
  • Feature: the font style and color used for watched news items are now configurable via Options|Fonts dialog
  • Feature: the font style and color used for unread counters in the subscription tree is now configurable via the configuration file options (sample enables rendering similar to outlook express)
  • Feature: Open browser tabs are remembered on restart
  • Fixed: Newly launched browser tabs grab the focus instead of opening in the background (multiple related bugs reported at sourceforge)
  • Fixed: Url combobox not always in sync. with the current displayed tab
  • Partially fixed: Back button chevron should be removed when web browsing (bug 1638805)
  • Fixed: Feed with initial focus is always refreshed on startup (bug 1634694)
  • Fixed: Sometimes the toolbars replaced by giant red 'X' while browsing the Web from within the application.
  • Fixed: Option "Initiate download feeds at startup" was not being honored
  • Fixed: Restore from system tray doesn't always re-display window (bug 1641837)
  • Fixed: Upgrade IE 6 to 7: cannot use ALT-Tab to switch tabs anymore (bug 1602232)
  • Fixed: mouse wheel support for treeview re-activated (wheel-scroll while not focused)
  • Fixed: The "On initial subscription: Only download X items" setting was not obeyed.
  • Feature: Can now drag multiple urls separated by newlines to the treeview for "batch" subscribe

 

Categories: RSS Bandit

February 15, 2007
@ 04:21 PM

I feel like I've been getting a little complacent about trying out new experiences in recent years. My new year resolution was to learn new technologies outside my comfort zone and try out new experiences. So far I think I'm doing OK on the new experiences front. I've had a podcast interview with .NET Rocks show (Show #218, Scheduled Air Date: March 13th 2007) , I've tried to buy a house and learned why so many people rave about Zillow, and will be going to the happiest place on earth next week.

To keep my programming chops fresh I'd like to spend the next couple of months of my hobby time learning a new programming language and perhaps catching up on old ones which have evolved since I last paid them any attention. But first I have to get a Jubilee release of RSS Bandit out of the door. Torsten and I have been fixing bugs like mad over the past few weeks and I think we're about done with any more major code changes for this release. The last major issue is the fact that the RSS Bandit installer crashes on some versions of Vista. I've talked to Rob Mensching about this issue and my conclusion was to move a bunch of code out of the installer and into the first run experience. I'll be making that change this week and then will publish a Release Candidate 2. This RC 2 of the Jubilee release is to validate that we've fixed all of the issues that were found by our early adopters in the previous release candidate. I estimate that should take about two weeks and then we'll publish the release version of Jubilee release on March 3rd 2007.

Once this release goes out I plan to take 2-3 months off of working on RSS Bandit. During the first month and a half I plan to catch up on changes in Java and C# I haven't been keeping up on by updating my C# From a Java Developer's Perspective article I wrote when I was in college. I'm also interested in catching up on recent debates on concurrency models in programming languages such as the ones references in posts like Neil Mix's What Mean You, Threads?, Brendan Eich's Threads suck and Patrick Logan's Misguided: The Road Not To Be Travelled. I need to resubscribe to Lambda the Ultimate.

During the second half of my RSS Bandit sabbatical I plan to learn the Python programming language, specifically IronPython. To make sure I actually learn the language I need an actual programming project. I plan to build a meme tracker in Python hopefully by combining code from RSS Bandit and [OSS licences permiting] Sam Ruby's Mememe code

Once the summer hits, it'll be time to start work on the Phoenix release of RSS Bandit. My goal with this release is to solve the problems I have with http://blogs.msdn.com due to the monstrous number of posts a day. I'll tackle this in multiple ways including incorporating meme tracking as well as introducing a page model to newspaper view so that I don't have to deal with slowdowns when the embedded browser tries to render the content of 500 - 1000 blog posts at once. There will also be UI work done such as adding a podcast inbox as well as jumping on the Office 2007 ribbon bandwagon.

Now that I've actually written this down in public, I have to actually get it done. :)


 

Categories: Personal | RSS Bandit

I've mentioned in the past that I like the SessionSaver extension for Firefox and would like to implement similar functionality for RSS Bandit. I finished up this feature last night but I kept getting weird behavior. The expected behavior is that when RSS Bandit is launched it remembers the application state from the last time it was closed such as whether it was minimized to the system tray, open browser tabs, what nodes in the feed subscription tree were expanded and what news item(s) were selected. 

The weird behavior was that every once in a while when the application restarted, I'd get an InvalidActiveXStateException which was thrown from the IWebBrowser2.Navigate method when restoring the open browser tabs from the previous time the application ran. Further investigation narrowed the issue down to only showing up when the application had been minimized to the system tray when it was closed and thus being immediately minimized to the system tray when the application was restarted. 

I managed to read a comment on some forum that indicated that the problem is that IWebBrowser2.Navigate method doesn't work if the WebBrowser control isn't visible. This means that this feature won't work as smoothly as I'd like when the application is restarted after being closed from the system tray but it does get rid of the ugly exception.

I hope this blog post explains why the feature will seem wonky in this situation for our users and may prove useful to developers who come across this weird error in the future.


 

Categories: Programming | RSS Bandit

We are now feature complete for the next release of RSS Bandit and it's time to get the final bits of user testing before we declare the bits golden. You can obtain the installer from RssBandit.1.5.0.5.Jubilee.RC.zip. We've fixed a number of major bugs that were discovered during the beta including crashes related to building the Lucene search index and podcasts being repeatedly downloaded after the first successful download attempt. I'd like to thank all the  people who tried out the beta and gave us feedback. Windows Vista users should be especially happy with this release since is the first version of RSS Bandit (ever) to work on that operating systems with no problems.

The major new features and bug fixes since the last official release (v.1.3.0.42) are listed below. There will be a comprehensive list of bug fixes and new features in the announcement for the final release. New features and bug fixes since the last beta are marked as .

New Features
Major Bug Fixes
 

Categories: RSS Bandit

Recently an RSS Bandit user made a feature request on our forums about a Good Google Reader Feature and wrote

On RSS Bandit, while reading all the news from a feed at the same time on the reading pane (feed selected) and scrolling down to read all news, you scroll all the page and nothing is marked as readed. This only happen when you select the message on Feed Details. On Google Reader every new you scroll down became marked as readed automatically. It's a very simple and natural scheme. Works really well, just check out http://reader.google.com.

I checked out Google Reader and I had to agree that the feature is pretty hot, so yesterday I brushed up on my knowledge of the HTML DOM and added the feature to RSS Bandit. Below is a video showing the new feature in action

What's funny is that Andy Edmonds asked me for this feature a couple of years ago and I never attempted to add it because at the time I was intimidated by Javascript and DHTML. It turned out to be a lot easier than I thought.

RSS Bandit users can expect to see this feature in the next beta of the Jubilee release which should be available in the next week and a half. It would be sooner but unfortunately I'm on my way to Las Vegas to attend CES for most of next week and Torsten is on vacation. By the way, users of Windows Vista should be glad to know that the next beta will finally run fine on that operating system.

NOTE: The slowness in the video is due to the fact that my CPU is pegged at 100% while capturing the screencast with Windows Media Encoder. This feature doesn't noticeably affect the performance of the application while running regularly.


 

Categories: RSS Bandit

While browsing my referrer logs I noticed a lot of hits from a comment on Jensen Harris's blog post about the Office 2007 UI being licenced. Below is the comment which has driven several hundred page views on my blog

Mike Dimmick said:

As an example of how a developer could horribly misuse the Ribbon interface, see Dare Obasanjo's proposal for RSS Bandit: http://www.25hoursaday.com/weblog/CommentView.aspx?guid=29141fb4-efb0-4ae2-aba6-59ae2096feee

My reason for moving to a ribbon-like interface for the Phoenix release of RSS Bandit was because I was under the impression that the Ribbon was the wave of the future with regards to application user interfaces in Windows. However I just read a blog post by Mike Torres entitled More on the Office 2007 UI where he points out that practically every Windows application released by Microsoft this year has abandoned the traditional File menu and toolbar structure in a different way. Below are links to the screenshots from Mike's post [and one extra which was suggested by Omar]

  1. Office 2007
  2. Windows Media Player 11
  3. Windows Live Messenger 8
  4. Windows Photo Gallery
  5. Windows Live Mail Desktop
  6. Internet Explorer 7

As you can se all of the above applications which where shipped by Microsoft this year embraced the idea of getting rid of the traditional File menu and toolbars yet didn't agree on what to replace them with. As a developer of a Windows application, it is clear to me that the traditional yet consistent File menu and toolbar look is now played out on Windows. The main question is which app I should emulate. If history tells me anything, I can't go wrong betting on Office driving user expectations around what Windows applications should act and feel like. I'm glad to see Infragistics on the list of vendors who will be adopting the Office 2007 UI guidelines. This means we'll likely inherit some best practices around using the Office 2007 Ribbon for free since we now use the Infragistics NetAdvantage GUI components in RSS Bandit.

If this means, I'm going to get people like Mike Dimmick flaming me for not living up to the vision of the 'Ribbon' then so be it. I'd rather that than an application that looked old and busted instead of being the new hotness. ;)


 

Categories: Programming | RSS Bandit

I'm using the Windows Background Intelligent Transfer Service (BITS) as the technology for downloading podcasts in the background so that RSS Bandit doesn't hog too much bandwidth while downloading the latest Ze Frank video. However it came to my attention that there certain conditions that had to apply before BITS was able to be clever about downloading a file from a website in the background. The conditions are spelled out in the HTTP Requirements for BITS Downloads which states

BITS supports HTTP and HTTPS downloads and uploads and requires that the server supports the HTTP/1.1 protocol. For downloads, the HTTP server's Head method must return the file size and its Get method must support the Content-Range and Content-Length headers. As a result, BITS only transfers static file content and generates an error if you try to transfer dynamic content, unless the ASP, ISAPI, or CGI script supports the Content-Range and Content-Length headers.

This means you can't use BITS to download podcasts from the feeds of sites such as C|Net MP3 Insider because it doesn't provide a Content-Length header when retrieving podcasts. Due to this limitation I've had to implement a fallback mode where we use a direct HTTP download request to retrieve the podcast. This solution is problematic if large video files are being downloaded in this manner because all the PCs bandwidth may end up being consumed by this task. For this reason, I've borrowed a leaf from the RSS platform in IE 7 and will also only support this for podcasts that are 15MB or less.

I sampled a number of files over 15MB at http://audio.weblogs.com and didn't see many which were provided by a Web server that didn't meet the BITS requirements. Of course, I might be mistaken and there is some popular podcast which regularly provides files over 15MB and doesn't meet the conditions set forth by BITS. In that case, I'd consider upping the limit to something higher or providing some config file option to increase the limit. 


 

Categories: RSS Bandit

December 14, 2006
@ 05:09 PM

I've noticed that some problems with viewing feeds of sites hosted on TypePad for the past few months in RSS Bandit. The problem was that every other post in a feed would display raw markup instead of correctly rendered HTML. I decided to look into the problem this morning and tracked down the problem. Take a look at http://blog.flickr.com/flickrblog/atom.xml. Here are relevant excerpts from the feed


<content type="html" xml:lang="en-ca" xml:base="http://blog.flickr.com/flickrblog/">
&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;p&gt;&&nbsp;&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://www.flickr.com/gift/&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://us.i1.yimg.com/us.yimg.com/i/ww/news/2006/12/12/gtfof.gif&quot; style=&quot;padding-bottom: 6px;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;It&#39;s now easier than ever to spread joy this holiday season by giving the &lt;a href=&quot;http://www.flickr.com/gift/&quot;&gt;&lt;strong&gt;Gift of Flickr&lt;/strong&gt;&lt;/a&gt;. You can purchase a special activation code that you can give to anyone, whether or not they have an existing Flickr account. We&#39;ve even created a special Gift Certificate card that you can print out yourself, fold up and stuff in a stocking, under a tree or hidden away for after the candles are lit (of course, you can also send the gift code in an email).&lt;/p&gt;

&lt;p&gt;And it&#39;s even better to give the gift of Flickr since now your recipients will get &lt;a href=&quot;http://www.flickr.com/help/limits/#28&quot;&gt;&lt;strong&gt;unlimited uploads&lt;/strong&gt;&lt;/a&gt; — the two gigabyte monthly limit is no more (&lt;em&gt;yep, pro users have no limits on how many photos they can upload&lt;/em&gt;)! At the same time, we&#39;ve upped the limit for free account members as well, from &lt;a href=&quot;http://www.flickr.com/help/limits/#28&quot;&gt;&lt;strong&gt;20MB per month up to 100MB&lt;/strong&gt;&lt;/a&gt; (yep, five times more)!&lt;/p&gt;

&lt;p&gt;The Flickr team also wants to take this opportunity to thank you for a wonderful year and wish you and yours all the best of the season. Yay!&lt;/p&gt;&lt;/div&gt;
</content>
...
<content type="xhtml" xml:lang="en-ca" xml:base="http://blog.flickr.com/flickrblog/">
<div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://www.flickr.com/photos/eye_spied/313572883/" title="Photo Sharing"><img width="500" height="357" border="0" src="http://static.flickr.com/117/313572883_8af0cddbc7.jpg" alt="Dec 2 2006 208 copy" /></a></p>

<p><a title="Photo Sharing" href="http://www.flickr.com/photos/mrtwism/71294604/"><img width="500" height="375" border="0" alt="riding" src="http://static.flickr.com/34/71294604_b887c01815.jpg" /></a></p>

<p>See more photos in the <a href="http://www.flickr.com/photos/tags/biggame/clusters/cal-berkeley-stanford/">"Berkeley," "Stanford," "big game" cluster</a>.</p>

<p>Photos from <a href="http://www.flickr.com/photos/eye_spied/" title="Link to caryniam's photos">caryniam</a> and <a title="Link to mrtwism's photos" href="http://www.flickr.com/photos/mrtwism/">mrtwism</a>.</p></div>
</content>

So the first mystery is solved. The reason some posts look OK and some don't is that for some reason TypePad seems to alternate between escaped HTML and well-formed XHTML as the content of an entry in the feed. When the feed uses well-formed XHTML the item looks fine but when it uses escaped HTML it looks like crap. The next question is why the items aren't rendered correctly when escaped HTML is used.

So I referred to section 3.1 of the Atom 0.3 specification and saw the following

3.1.2  "mode" Attribute

Content constructs MAY have a "mode" attribute, whose value indicates the method used to encode the content. When present, this attribute's value MUST be listed below. If not present, its value MUST be considered to be "xml".

"xml":
A mode attribute with the value "xml" indicates that the element's content is inline xml (for example, namespace-qualified XHTML).
"escaped":
A mode attribute with the value "escaped" indicates that the element's content is an escaped string. Processors MUST unescape the element's content before considering it as content of the indicated media type.
"base64":
A mode attribute with the value "base64" indicates that the element's content is base64-encoded [RFC2045]. Processors MUST decode the element's content before considering it as content of the the indicated media type.

To prevent aggregators from having to use their psychic powers to determine when an item contains plain text or escaped HTML, the Atom folks introduced a mode attribute that indicated whether the content should be treated as is or should be unescaped. As you can see the default value for this is not "escaped". Since the TypePad Atom feeds do not state that the HTML content is escaped then the aggregator is not expected to unescape the content before rendering it. Second mystery solved. Buggy feeds are the culprit. 

Even though these feeds are broken it is probably faster for me to special case feeds fromTypePad than trying to track down and convince the folks at SixApart that this is a bug worth fixing. This issue will be fixed in the next beta of the Jubilee release of RSS Bandit.


 

Nick Bradbury, the author of the excellent FeedDemon RSS reader, has a blog post entitled Simplicity Ain't So Simple, Part II: Stop Showing Off where he writes

One mistake I see developers make over and over again is that we make a feature look complicated just because it was hard to create.
...
For example, the prefetching feature I blogged about last week hasn't been easy to create.  This feature prefetches (downloads) links and images in your feeds so that they're browse-able inside FeedDemon when you're working offline.  It works in the background so you can keep using FeedDemon while it does its business, and it's smart enough to skip web bugs, links to large downloads, and other items that shouldn't be cached (including items that have already been cached in a previous session).

It didn't seem like a complex feature when I started on it, but it ended up being a lot more work than I anticipated.  It could easily be an application all by itself, complete with all sorts of configurable options.

But instead of turning this feature into a mini-application, I demoted it to a lowly menu item

I've had that feeling recently when thinking about a feature I'm currently working on as part of podcasting support in RSS Bandit. The feature is quite straightforward. It is the ability for users to specify a maximum amount of space dedicated to podcasts on computer to prevent their hard drive from filling up with dozens of gigabytes of ScobleShow and Channel 9 videos. Below is a screenshot of what the option looks like.

As I started to implement this feature every question I asked myself led to two or three more questions and the complexity just spiralled. I started with the assumption that we'd enforce the download limit before files were downloaded. So if you have allocated 500MB as the maximum amount of space dedicated to podcasts and you attempt to download funny_video.mov (200MB), funny_song.mp3 (5MB) and scary_short_movie.mpg (300MB) in order then we will issue a warning or an error indicating that there won't be enough room to download the last file before attempting to download it. Here's where I got my first rude awakening; there's no guaranteed way to determine the size of the file before downloading. There is a length attribute of the <enclosure> element but it sometimes doesn't have a valid value in certain podcast feeds. Being a Web geek, I thought to myself "Ha, I can always fall back on making an HTTP HEAD request and then reading the Content-Length header". It turns out this isn't always guaranteed to be set either.

So now we have the possibility that the user could initiate three downloads which would exceed the 500MB she has allocated to enclosures. The next question was when to enforce the limit on the files being downloaded. Should we wait until the files have finished downloading and then fail when we attempt to move the downloaded file from the temporary folder to the user specified podcast folder? Or should we stop downloads as soon as we hit 500MB regardless of the state of the downloaded files which means we'll have to regularly collate the size of all pending downloads and add that to the size of all downloads in the podcast folder to ensure that we aren't over the limit? I was leaning towards the former but when I talked to Torsten he pointed out that it seems like cheating if I limit the amount of space allocated to podcasts to 500MB but they could actually be taking over 1GB on disk because I have four 300MB files being downloaded simultaneously. Unfortunately for me, I agreed. :)

Then there's the question of what to actually do when the limit is hit. Do we prompt the user to delete old files, if so what interface do we provide the user to make the user flow sensible and not irritating? Especially since some of the files will be podcasts in the podcast folder and others will be incomplete files that are pending downloads in a temp folder. Yeah, and it goes on and on.

However all our users will see is that one checkbox and field to enter the numeric value.


 

Categories: RSS Bandit

By now, hard core RSS Bandit fans have found out that the installer for the Jubilee release of RSS Bandit is available. A bunch of people have tried it out and given us a lot of good feedback on how some of our new features can be tweaked to make them even better. One of the places we got good feedback [and bug reports] has been our behavior when automatically downloading podcasts from a feed. One signficant bug is that in the beta, RSS Bandit doesn't keep track of what enclosures it has previously downloaded so it may download the same enclosures several times. However, even with this bug fixed we realized there is a problem when one first subscribes to a podcast feed especially if the feed has videos such as Microsoft's Channel 9. On the first time subscribing to that feed, RSS Bandit would automatically start downloading 2-3 gigabytes of videos from the site since that's how many are exposed in the feed. This seems like a bad thing, so we added two new options which are shown in the screenshot below

My main question is what default values we should use. I was thinking 'Only download the last 2 podcasts' and 'Only download files smaller than 500MB' as the defaults. What do you guys think?


 

Categories: RSS Bandit

We are almost feature complete for the next release of RSS Bandit and it is about time we started getting some feedback from our users. You can obtain the installer from RssBandit.1.5.0.1.Jubilee.Beta.zip RssBandit.1.5.0.2.Jubilee.Beta.zip. The major new features and bug fixes are listed below. There will be a comprehensive list of bug fixes and new features in the announcement for the final release.

UPDATE: There was an issue when upgrading from v1.3.0.42 to the Jubilee beta which is now fixed.

New Features New Features in Progress
  • Podcast inbox - This will be the similar to the podcast inbox of applications such as Doppler Radio or Juice Receiver which will allow users to keep track of pending and downloaded podcasts.
  • Revamping the search feature - We're moving the implementation of feed search to Lucene.Net from our custom feed search implementation which should make it faster and provide richer search options
Major Bug Fixes
  • Feed items appear in wrong feed folders - we now apply a set of heuristics to prevent this problem from surfacing ever again. I'm pretty sure this problem is due to bugs in HTTP Pipelining. However it is unclear whether the bugs are in the .NET Frameworks HTTP library, proxy servers that RSS Bandit is passing through or the Web servers that the application is fetching feeds from.
  • Relative Links in Atom 1.0 feeds appear incorrectly - now that this is fixed the links Tim Bray and Sam Ruby's feeds now work correctly
  • Atom feeds from the Blogger beta site show no posts when viewed in RSS Bandit - this was just a dumb bug on my part.
  • Sites with malformed cookies cause feeds not to be fetched - Specifically, fetching cookies from sites such as Windows Live Spaces results in the "An error has occurred when parsing Cookie header". Now we just ignore the error and soldier on.
  • RSS Bandit needs administrator privileges on first run - the fix for this was so esoteric it boggles my mind. 
  • RSS Bandit stops downloading feeds after a while - This was actually two bugs. The first was that the application stopped automatically downloading feeds if any of them timed out while being fetched. The other was that feeds with whitespace in the URLs were not being updated.
Major Bug Fixes in Progress
 

Categories: RSS Bandit

November 18, 2006
@ 01:40 PM

Over the past few months a number of our users have written about issues getting RSS Bandit to work in Windows Vista. A description of the kind of problems that can occur can be found in blog posts like Eric Denekamp's My RSS reader (RSS Bandit) on Vista and Arlindo Alves' My RSS Bandit on Vista. We have tracked the problem down to an issue with the SandDock GUI components that are used by RSS Bandit. In the Jubilee release we'll be moving to the Infragistics GUI components which should not have this problem. Torsten and I are committed to shipping a beta of the next release at the end of this month at which time folks running Windows Vista can test to see if this addresses their issues.

We've also started prototyping the next generation user interface for the subsequent release of RSS Bandit tentatively codenamed Phoenix. This UI will be inspired by the Office 2007 user interface. I've uploaded a couple of screenshots to Flickr. Click the images below to see larger versions of the screenshots


The goal of the Phoenix release will be to make the application look and feel like a Vista-native app.
 

Categories: RSS Bandit

A couple of days ago I wrote a post entitled Jubilee Thoughts: What is a Podcast? where I requested some feedback on the discussions Torsten and I had been having about what options we should have for configuring the podcast handling features of RSS Bandit. A couple of you responded and we've changed the UI based on your feedback. Below is a screenshot of the Attachments\Podcasts tab of the Options dialog.

When you click on the Advanced button you get the following dialog for configuring special behavior for Podcasts.

The only thing left is to actually design and implement the Podcast queue and/or Podcast inbox. At this rate we should be able to ship a beta of the Jubilee release by the end of the month.


 

Categories: RSS Bandit

Torsten created a mockup of the Options tab for Attachments & Podcasts in the next version of RSS Bandit which is currently codenamed Jubilee and we've gotten into quite a debate about it. The Attachments/Podcasts tab of the Options dialog is shown below

So what are the points of contention?

  1. Dare: We shouldn't have two download locations, one for podcasts and one for attachments
    Torsten: What about people who want to copy supported file formats to their hardware device (e.g. MP3s) but have everything else go to local folders?

  2. Torsten: My MP3 player doesn't handle subfolders well so all podcasts need to be placed in the same folder.
    Dare: Most podcast clients create a folder structure where each podcast goes into a subfolder that is named after the feed. Perhaps we need an option for 'place podcasts in subfolders named after the feed'?
  3. Dare: When creating playlists in iTunes or WMP, should we create one über-playlist with all podcasts or one playlist per feed? Perhaps we need an option for this as well?

  4. Torsten: With all these additional options perhaps we need an 'Attachments' tab and a 'Podcasts' tab?
    Dare: Wouldn't that be weird given that most of the settings from the 'Attachments' tab would apply to podcasts as well?

Let us know what you think about the various points of contention and feel free to let us know if there are other points of contention that you have with the above dialog and the discussion around it.
 

Categories: RSS Bandit

Although this sounds backwards we've completed the UI integration for podcast download settings per feed but not for global podcast download settings for RSS Bandit. Below is what the "Attachments\Podcasts" tab on the properties dialog for a feed looks like currently

I decided that we would make the "Create a playlist for downloaded podcasts in iTunes" and "Create a playlist for downloaded podcasts in Windows Media Player" would only be global settings which can't be specified per feed. Are there any obvious settings that are missing from this tab that you'd like to see? 


 

Categories: RSS Bandit

Thanks to Marc Canter's post, And what about the Aggregator Vendors? I'm reminded that there is still work to do before I've turned RSS Bandit into a satisfactory podcast client. With the basic code for downloading podcasts now implemented I've now turned my mind to how to get the downloaded rich media content onto a user's device and/or media player of choice. For the most part, I'm assuming that people are either using iTunes (version 6 or later) or Windows Media Player (version 10 or later).

Getting the music or videos onto a playlist in the users media player seems to be mostly straightforward. I've found C# sample code for creating playlists in iTunes and creating playlists in Windows Media Player. The tricky part has been figuring out how to get the music onto the users portable media player  (e.g. their iPod or Creative Zen) as opposed to their PC hard drive and creating a playlist on the device that includes the newly downloaded file. Doing the first isn't that bad if the device can be mounted as an external hard drive because the user can just specify that RSS Bandit should download files to a folder on that external drive. On the other hand, none of the sample code I've seen talks about creating a playlist on the portable media player. Any help here from my readers would be greatly appreciated. 

PS: I briefly considered embedding an instance of Windows Media Player in RSS Bandit but that seems like overkill compared to just having a [Play] button that opens the file in the user's preferred media player for that file type.



 

Categories: RSS Bandit

I found the time to start on integrating the ability to download podcasts in RSS Bandit today. One of the things I realized is that we can't make the blanket assumption that every enclosure we see in an RSS or Atom feed is a podcast. I decided that instead of only exposting enclosures as podcasts, it would be more generic and maybe more useful to treat them as file attachments to feed items.

Below is a screenshot of what this looks like

There are other bits of UI we have to add such as a download queue and a podcasts inbox. I've also been thinking of adding the option to enqueue downloaded podcasts in iTunes or Windows Media Player. I wonder if the Zune player will provide an API so I can add that as an option as well. I should ask around at  work.

I also explicitly decided against any sort of podcasts directory functionality. If we don't typically use 'blog directories' why do we need feed directories? We're about two weeks from being done with this feature after which we'll ship a beta of the Jubilee release. My current thinking is a beta before Thanksgiving in the U.S. and the final release just before the Christmas holidays.


 

Categories: RSS Bandit

I'm in the process of putting the finishing touches on the infrastructure code for downloading podcasts in RSS Bandit. The main things left are handling the uncommon cases such as password protected enclosure files and resuming downloads if the application is restarted. I should be able to make some progress with UI integration by the end of the weekend.

The current question I've been trying to figure out is what podcast feed(s) should be in the default set of feeds when a new user installs RSS Bandit. My original plan was to go with Ask A Ninja but it seems there's some weirdness in the feed where some enclosures are Flash files while the others are Quicktime movies. The feeds I'm currently considering are

Which of these do you think is a good fit for the typical RSS Bandit user? Are there other podcasts I should be considering?

Update: It seems there are even more problems with the Ask A Ninja podcast. It seems the service hosting their podcast files (such as this one) rejects HTTP requests from the Windows Background Intelligent Transfer Service (BITS). I'm not sure what to do about this problem since there doesn't seem to be a way to change the User Agent string in the HTTP requests sent by the BITS client. :(


 

Categories: RSS Bandit

I just got a comment to my previous blog post which pointed out that it's been a long time since the last release of RSS Bandit and asked whether development has stopped. Torsten and I are still hard at work on the project but development has been slow because this is a side project for both of us which we only get to work on when we have free time. Anyway here's a general status update for the next release which is currently codenamed Jubilee.

Completed Features

Features in progress

  • Podcasting support - Think of it as adding the most useful features of Doppler Radio or Juice Receiver to RSS Bandit.
  • Revamping the search feature - We're moving the implementation of feed search to Lucene.Net from our custom feed search implementation which should make it faster and provide richer search options
  • Remembering application state on restart - This will work similar to the Session Saver extension in Firefox in that open tabs and the tree view state will be remembered on restart

Major problems to fix

Postponed features

As far as dates go, the only thing I will commit to is that we will have a release this year. I expect that we will be ready to provide a beta release by the end of October or early November at the latest with a final release in time for the holiday season.
 

Categories: RSS Bandit

I just got an email from J.J. Allaire pointing me to the blog post on the Windows Live Writer plugins blog entitled Windows Live Writer Blog This for RSS Bandit which states

And now comes Blog This for RSS Bandit.

RSS Bandit is a popular feed reader (what are feeds?) which by default can Blog This with w.bloggar (a desktop blogging client) and post to del.icio.us.

1

Installation is simple albeit manual. Extract the file, highlight the files, then copy and paste them into the RSS Bandit plugins folder: not into the Windows Live Writer plugin folder.

Start RSS Bandit. See something you would like to write about? Right-click on the headline and choose BlogThis using Windows Live Writer.

Windows Live Writer launches with the Select Destination Weblog window where you select which blog to post to. Once selected it takes a moment or two and then there is your screen with the text from the feed’s post:


I just wrote about wanting to write this plugin a few hours ago. I'll probably still write one on my own and replace the w.bloggar plugin in the default install of RSS Bandit with a Windows Live Writer plugin. Perhaps even an installer for existing users who don't want to wait until the next version of RSS Bandit to get this feature? 


 

Categories: RSS Bandit | Windows Live

While working on the favicon support for RSS Bandit I've been seeing some weird errors where a favicon for a particular website (e.g. Jamie Zawinski's favicon) cause a weird out of memory exception to be thrown when trying to load the image using the FromFile() method of the System.Drawing.Image class

It turns out the problem is spelled out in KB 810109: You receive a "System.OutOfMemoryException" error message when you try to use the Bitmap.FromFile method in the .NET Framework 1.0 which reads

SYMPTOMS
When you try to load an image by using the Bitmap.FromFile method in the Microsoft .NET Framework 1.0, you receive the following error message:
    An unhandle exception of type 'System.OutOfMemoryException' occurred in system.drawing.dll

CAUSE
This problem may occur when you use the Bitmap.FromFile method and one of the following conditions is true:
•    The image file is corrupted.
•    The image file is incomplete.

Note You may experience this problem if your application is trying to use the Bitmap.FromFile method on a file stream that is not finished writing to a file.
•    The image file does not have a valid image format or GDI+ does not support the pixel format of the file.
•    The program does not have permissions to access the image file.
•    The BackgroundImage propery is set directly from the Bitmap.FromFile method.

I'm posting this here so I have a handy pointer to it once I start getting bug reports about this feature not working correctly once we ship Jubilee. This feature definitely does jazz up the look of the application, so far my favorite favicon has been from the Dead 2.0 weblog.


 

Categories: Programming | RSS Bandit

Gabe Rivera, author of Techmeme, has a blog post entitled Why I don't offer a personal filter where he writes

I'm facing another round of inquiries on personal filtering, mostly from Techmeme fans who've read Ross Mayfield's or Dare Obasanjo'sJeff Clavier and Ted Leung nearly a year ago!) recent thoughts on the matter. (Just for the record, the first round included requests from

Why don't I offer a personal filter service aka "meMeme" aka "my.memeorandum"? Briefly, filters based on the editorial approach used for Techmeme/memeorandum don't work well outside of a few topic domains (like politics and tech), because cross linking is typically too sparse to produce a compelling mix of news. Sam Ruby unintentionally confirmed this yesterday should you pause to consider what sort of daily news selection could be derived from his Venus output. While it's true that cross linking is dense in some blogospheres, these are largely the same domains already covered by my existing sites.

Why not try editorial approaches based on new kinds of semantic analyses? My belief is that the requisite technology is harder than anything powering Google News, Topix, or my current sites. Attempts based on current technologies come up woefully short, with the resulting "Daily Me" consisting of a seemingly random mix of content missing most or all "must have" articles and posts. And having the "must haves" is essential for winning the earlier adopter types that would dominate the userbase of such a filter in the first place.

I reread the output from Sam's blogroll and it reminded me that there is a difference between the scenarios that sites like Techmeme and Tailrank are interested in and the goals of a personalized meme tracker. Here are a copuple of questions to get you started on understanding the differences in implementation choices one might make between implementing a personalized meme tracker vs. a topic specific memetracker,

  1. Q: How do you deal with "noise" links such as http://del.icio.us/tag/rest or http://www.technorati.com/tag/AJAX which may be common in the feeds the user is interested in?

    A: In both cases, it would seem the first step is to hard code the application to understand certain kinds of links as "noise". The interesting question is how to deal with the introduction of new types of "noise" links to the ecosystem. A web-based application may be easily updated as new "noisy" links enter the system but things are a bit more difficult for a desktop application. Perhaps allowing users to nominate certain classes of links as noise?

  2. Q: What 'class' of news items or blog posts should be used in evaluating what is [currently] popular?

    A: It is quite obvious that simply using the entirety of the posts from a particular feed to calculate a links popularity is flawed. Using that metric, I suspect that links such as http://adaptivepath.com/publications/essays/archives/000385.php or http://scobleizer.wordpress.com/2006/06/10/correcting-the-record-about-microsoft/ would always be the most popular links from my blogroll. Using a specific date or time range (e.g. over the past 24-48 hours) seems to be what sites such as Techmeme and Tailrank seem to do. An aggregator such as RSS Bandit or FeedDemon may use other techniques such as only using 'unread' items to calculate currently popular topics.

  3. Q: How do you deal with link blogs?

    A: A number of people in my blogroll have blog posts that are basically a repost of al the links they have posted to del.icio.us that day (e.g. Stephen O'Grady and Mark Baker). Sites like Techmeme and Tailrank filter these posts because no one wants to see a bunch of headlines that are all of the form 'links for 2006-09-05' with no real content. On the other hand, if a large number of folks in my blogroll are linking to a particular news item then it is likely to be interesting to me regardless of whether there 'meaty' blog posts behind their links or just linkblog style postings.

These are a couple of the queestions that I've been pondering since I started thinking about this feature a couple of months ago. At the end of the day I think that although Gabe's perspective is useful since he did build the site that inspired this thinking, the scenarios are different enough to change some of the implementation choices in ways that may seem surprising to some.

PS: It seems Sam has already turned Gabe's feedback into code based on reading his blog post MeMeme 2.0. There are definitely interesting times ahead.


 

About six months ago, I wrote a blog post entitled Jubilee Thoughts: Tracking Hot Topics where I talked about adding meme tracking functionality similar to the features of Memeorandum and TailRank to RSS Bandit. Since I wrote that blog post I haven't written a lick of code that actually does this but I've thought and talked about it a lot. While all I've done is talk I can't help but notice that a few others have been writing code while I've been pontificating in my blog.

In his blog post entitled Spyder Spots a Memetracker Nick Bradbury writes

Andy "Spyder" Herron writes about the "personal memetracker" that's hidden in FeedDemon 2.0.0.25.

I had hoped to complete this feature by now, but as Andy points out, it still needs some work (which is why I hid it and gave it a "beta" label). If you'd like to try it out, select "Popular Topics" from the Browse menu (or just add the "Popular Topics" toolbutton to the toolbar above FeedDemon's browser).

I should add that this feature will probably be useful only to people who subscribe to a lot of feeds since it relies on common links to determine popularity. So if you're not subscribed to feeds which link to the same articles, chances are it won't show you any results.

In another blog post entitled MeMeme Sam Ruby writes

Ross Mayfield: Cue up not what is popular, or what the people I subscribed to produced.  Cue up what my social network has found interesting.
Herewith, a simple demonstration of what aggressive canonicalization can produce.  Venus may be in Python, but suppose I’m in a Ruby mood.  The cache is simply files in Atom 1.0 format, with all textual content normalized to XHTML.

Lets make a few simplifying assumptions: all posts are created equal, each post can only vote once for any given link (this also takes care of things like summaries which partially repeat content), posts implicitly vote (once!) for themselves, and the weight of a vote degrades as the square of the distance between when the post was made and now.

Here’s the code, and here’s a snapshot of the output.  The output took 6.239 elapsed seconds to produce on my laptop.  I still have more work to do to eliminate some of the self-referential links (in fact, I a priori removed Bob Sutor’s blog from the analysis as it otherwise he would dominate the results).  But I am confident that this is solvable, in fact, I am working on expanding what filters can do.  I’ll post more on that shortly.

With both Sam and Nick on the case, I'm quite sure that within the next few months it will be taken for granted that one of the features of news aggregator is to provide personalized meme tracking. Although I'm sure that we'll all use the same set of basic rules for providing this feature, I suspect that the problems that we are trying to solve will end up being different which will influence how we'll implement the feature.

For example, the main reason I want this feature isn't to track what the popular topics are across multiple blogs but instead to find what the popular topics are across aggregated blog feeds such as blogs.msdn.com and the numerous planet sites. In reading Sam's blog it seems he'd consider the same feed linking to the same news items as spam to filter out while I consider it be the only part of the feature I'd use. This issue illustrates the main problems I've had with designing the feature in my head. What "knobs" or options should we give users to control how the meme tracker decides what is interesting or not vs. what should be ignored when generating the list of 'hot topics' (e.g. the various meme trackers have said they filter out link blogs since they tend to dominate the results as well)?

Since I've decided to be more focused with regards to RSS Bandit development, I won't touch this feature until podcasting support is done. However I'd like to hear thoughts from our users in the meantime.


 

It seems I'm slightly ahead of schedule and have added most of the support required for using a website's favicons as the icons used to represent the feed in the RSS Bandit feed subscriptions tree view. Below is a screenshot of what the list of subscriptions looks like when some of the feeds have favicons.

There are still a couple of fit & finish work items to complete such as adding an option to turn off favicons for the people who find the people's choices of icons too distracting. However for the most part this feature is done.

Over the next few days, I'll start taking a look at what it means to add support for podcasting to the application. Since stumbling upon the very hilarious yet quite accurate review of Pirates of the Carribean 2 by Ask A Ninja, I've been wanting to try out subscribing to podcasts. However I'm not sure what the expected user experience should be so I'm going to try out a couple of podcast clients over the next week. So far I have Doppler Radio and Juice (formerly iPodder) on my list. Is there any other client I should be trying out? Also are there any obvious features I should or should not add?


 

Categories: RSS Bandit

One of our most common requests for improving the user interface of RSS Bandit has been to add an option so that all links clicked in the newspaper view result in tabs that are opened in the background instead of the new browser tabs stealing focus. This allows you to breeze through a newspaper view with a lot of items and click the links of the items you are interested without without having to go back and forth between the newspaper view and open browser tabs. Below is a screenshot of the new option

I've realized that it's been a long time since we shipped an RSS Bandit release and have started spending more evenings getting the code in ship shape. This evening I'll start work on the often requested feature that we utilize favicons in the tree view instead of the generic folder icon. My only question is whethere I should bother adding a flag to disable that behavior. Will mind having Dare's favicon.ico show up beside my feed instead of the boring folder icon enough to want to turn the feature off? Let me know what you think.


 

Categories: RSS Bandit

UPDATE: On inspecting the code it seems that my assertions in this post are incorrect. The change we made in the last release was not to enable Javascript by default. Instead it was to always ignore the Javascript setting chosen by the user for the newspaper view. This means that the current release of RSS Bandit is vulnerable to the majority of the flaws outlined in article linked below. I'll work on getting a release out that addresses this issue as soon as I can although this is complicated by the fact that we may not have a snapshot for the last release AND the first half of this week is very busy for me at work. If this security issue is a serious concern to you, my advice is to not use RSS Bandit until a release that addresses this issues is released or to switch to v1.3.0.29 of RSS Bandit which does honor the specified Security restrictions for the newspaper view.

A number of people have either sent me email or posted on the RSS Bandit forums asking whether RSS Bandit is vulnerable to the various issues raised in the article Blog feeds may carry security risk which states

LAS VEGAS--Reading blogs via popular RSS or Atom feeds may expose computer users to hacker attacks, a security expert warns.

Attackers could insert malicious JavaScript in content that is transferred to subscribers of data feeds that use the popular RSS (Really Simple Syndication) or Atom formats, Bob Auger, a security engineer with Web security company SPI Dynamics, said Thursday in a presentation at the Black Hat security event here.
...
"A large percentage of the readers I tested had some kind of an issue," he said. In his presentation, Auger listed Bloglines, RSS Reader, RSS Owl, Feed Demon, and Sharp Reader as vulnerable.

As protection, people could switch to a nonvulnerable reader. Also, feed publishers could ensure that their feeds don't include malicious JavaScript or any script at all, Auger said. Some services, however, rely on JavaScript to deliver ads in feeds, he noted.

To prevent this sorts of issues RSS Bandit allows users to optionally disable the running of Javascript, ActiveX or Java code in its Options dialog. Up until the last release we disabled Javascript, ActiveX and Java by default. However in the last release, we switched on Javascript by default to enable a particular features (i.e. specifically when you click on the envelope or flag on an item in the newspaper view to change the read or flagged state of an item). This means that by default RSS Bandit is vulnerable to the Javascript related issues mentioned in this article.

How to change this state of affairs is mentioned in the section of our user documentation entitled Changing the web browser security settings which has a screenshot of the Web Browser tab of the Options dialog where browser security restrictions can be set. 

Our users should configure the options to what best eases their security concerns. I'm still debating on what we need to do here in the long term but one thing I doubt we'll do is striping potentially malicious HTML tags since this seems to be a sledgehammer-like approach which may strip valid markup (e.g. <style> tags) from content. It's more likely that I'll remove our features that require enabling Javascript by default than go that route. I'd appreciate thoughts from our users on this.

Update: I was one of the developers contacted by James Snell and have failed to get back to him since I haven't gone through all of the tests he sent me yet.


 

Categories: RSS Bandit

I have some bad news and some good news. RSS Bandit is built using user interface controls that are not provided by default by the .NET Framework to enhance it's look and feel. A common practice among vendors of such user interface controls is to offer them for free to developers to gain mindshare and once these developers are 'hooked on their product' they withdraw the free version. This means that developers of applications that use these user interface controls will end up having to pay the vendors if they want to use newer versions of these controls. This has happened twice to me with RSS Bandit. The first time was when DotNetMagic went from free to being only available for purchase. The second time happened a few months ago when Divelements cancelled the free version of their controls which are used extensively in current versions of RSS Bandit.

We were in a lurch and just as I thought that I'd have to start some sort of blog fundraiser so we could pay for these controls and keep RSS Bandit free to use, Torsten was contacted by the good folks at Infragistics who've donated use of their controls to our project. This means that we'll be replacing some of the user interface controls used by RSS Bandit and adding some new functionality to the UI. See the screenshot below for some of these visual enhancements.

I'd also like to take this time to welcome Ariel Selig to the RSS Bandit development team. He's already made some decent contributions in replacing our old UI components with the new ones.


 

Categories: RSS Bandit

Some of our users have pointed out that the http://www.rssbandit.org domain which houses information about the RSS Bandit project including documentation and support forums is down. This is due to the fact that our hosting provider has taken down the site because it "uses 100% of CPU and slows down the other websites on that server" and it will not be reinstated until we fix whatever is causing this issue.

Torsten and I are trying to get this fixed as soon as possible. Thanks for your patience.

Update: The site is back up.
 

Categories: RSS Bandit

Over the weekend, I had a few hours to spend and finally added comment watching to RSS Bandit. The feature is pretty straightforward, users have the ability to mark an item as 'Watched'. Once in this state, an indication is made when there are new comments for that item. Determining whether there are new comments uses a number of mechanisms including polling the comment feed and checking the values of RSS/Atom extensions such as slash:comments and thr:count. I'm already getting a lot of use out of the feature to passively notify me of new comments to my blog

The only issue now is that there is a disagreement between Torsten and I as to what the menu interaction should be for the feature. I've currently implemented the menu option a submenu where you can select 'Watch Comments->On' or 'Watch Comments->Off' depending on whether comments are currently being watched for that item or not. See the screenshot below.

Torsten would prefer a menu option more like what Outlook Express where the menu option is a checkbox as shown in the OE screenshot below.

If you're an RSS Bandit user can you chime in with your opinion?


 

Categories: RSS Bandit

While I was in the cafeteria with Mike Vernal this afternoon I bumped into some members of the Windows Desktop Search team. They mentioned that they'd heard that I'd decided to go with Lucene.NET for the search feature of RSS Bandit instead of utilizing WDS. Much to my surprise they were quite supportive of my decision and agreed that Lucene.NET is a better solution for my particular problem than relying on WDS. In addition, they brought an experienced perspective to a question that Torsten and I had begun to ask ourselves. The question was how to deal with languages other than English.

When building a search index, the indexer has to know what the stop words it shouldn't index are (e.g. a, an, the) as well as have some knowledge about word boundaries. Where things get tricky is that a user can receive content in multiple languages, you may receive email in Japanese from some friends and English from others. Similarly you could subscribe to some feeds in French and others in Chinese. Our original thinking was that we would have to figure out the language of each feed and build a separate search index for each language. This approach seemed error prone for a number of reasons

  1. Many feeds don't provide information about what language they are in
  2. People tend to mix different languages in their speech and writing. Spanglish anyone?

The Windows Desktop Search folks advised that instead of building a complicated solution that wasn't likely to work correctly in the general case, we should consider simply choosing the indexer based on the locale/language of the Operating System. This is already what we do today to determine what language to display in the UI and we have considered allowing users to change the UI language in future which would also affect the search indexer [if we chose this approach]. This assumes that people read feeds primarily in the same language that they chose for their operating system. This seems like a valid assumption but I'd like to hear from RSS Bandit users if this is indeed the case. 

If you use the search features of RSS Bandit, I'd appreciate getting your feedback on this issue.


 

Categories: RSS Bandit | Technology

Torsten and I have started working on RSS Bandit regularly again. Last weekend I fixed a bunch of bugs including the problem that prevented IE 7 from importing OPML files from RSS Bandit. I've gotten a few emails from folks at work about that particular issue so I thought it would be good to knock that issue out early. This morning, I checked-in support for the Atom Thread Extensions which means I can now see comment counts and view comments inline on Sam Ruby's blog.

One change we're planning to make is to switch to using a full-fledged text search engine to power the search feature of RSS Bandit. Currently, we load all the text in memory and use the .NET Framework's string comparison operators to find the target text. We want to move to a model where files on disk are indexed in the background and we don't have to have stuff in memory to search it. This should significantly improve the memory consumed by RSS Bandit.

We've investigated a couple of options for our search solution. My first thought was integrating with MSN Windows Desktop Search. After exchanging some mail with various members of the team, I decided that this wouldn't meet our needs for a number of reasons

  • Users will need to have Windows Desktop Search installed so we either need to figure out how to bundle it with RSS Bandit or disable the feature if it is not installed.
  • The indexing service is file-centric. However we need to index individual RSS/Atom items within the cached RSS/Atom feeds on disk. This means we'll have to change our model to storing one file per RSS/Atom item which could lead hundreds to thousands of files per feed.
  • The biggest gotcha was that making the indexer understand the structure of RSS/Atom feeds requires writing a custom IFilter which involves gnarly C++ coding then dealing with hairy COM<->.NET interop issues. Not exactly the kind of work one wants to do in their free time.

After further investigation we've settled on Lucene.NET which doesn't have any of the aforementioned problems. However we have been dealing with some issues that could either be bugs or just a misunderstanding of how the APIs should be used. We'll keep you posted. 


 

Categories: RSS Bandit

I just saw the following post on in the RSS Bandit forums entitled Dead? where one of our users asks

Haven't seen a news update in a long time, no releases for about 5 months... is rss bandit dead? It's a nice aggregator, but there are some neat features popping up in stuff like Rss Owl / other feed readers, so I'm debating changing readers...

...but if there's going to be active improvements in the future, there's no reason for me to learn an entirely new program just to come back to rss bandit in the end. ;)

What say you, Code Writers?

This has been bothering me as well. Torsten and I have been busy with our respective day jobs. Over the past few of months, I keep telling myself I'll start work on RSS Bandit "next week" but the following week always seems busier than the last. It hasn't helped that I've had conferences, vacations or out of town visitors every other month this year. I think I have the worst of the disruptions in my schedule done for this year. In addition, the project which has been consuming the lion's share of my time at work also looks like it will soon be able to go on auto-pilot.

Although I can't give an exact date for our next release, what I can say for sure is that we will have an RSS Bandit release this summer. What I would like from our users is some feedback on the RSS Bandit road map. I don't think I'm particularly attached to the features we currently have on tap for the Jubilee release. The major reworkings I'd like to do for the next release are fixing our excessive memory consumption, improving the integration with NewsGator Online, and rewriting our multithreaded code in a way that fixes the pernicious feed mix up issue. As for new features, the ones I want primarily revolve around enclosures/podcasts and conversation tracking similar to TechMeme, Megite and TailRank.

I believe Torsten also plans to revamp our UI. What else would you like to see us do in the next release?


 

Categories: RSS Bandit

Working on RSS Bandit is my hobby and sometimes I retreat to it when I need to unwind from the details of work or just need a distraction. This morning was one of such moments. I decided to look into the issue raised in the thread from our forums entitled MSN Spaces RSS Feeds Issues - More Info where some of our users complained about a cookie parsing error when subscribed to feeds from MSN Spaces.

Before I explain what the problem is, I'd like to show an example of what an HTTP cookie header looks like from the Wikipedia entry for HTTP cookie

Set-Cookie: RMID=732423sdfs73242; expires=Fri, 31-Dec-2010 23:59:59 GMT; path=/; domain=.usatoday.com

Note the use of a semicolon as a delimiter for separating cookies. So it turned out that the error was in the following highlighted line of code


if (cookieHeaders.Length > 0) {
container.SetCookies(url, cookieHeaders.Replace(";", ","));
}

You'll note that we replace the semicolon delimiters with commas. Why would we do such a strange thing when the example above shows that cookies can contain commas? It's because the CookieContainer.SetCookies method in the .NET Framework requires the delimiters to be commas. WTF ?

This seems so fundamentally broken I feel that I must be mistaken. I've tried searching for possible solutions to the problem online but I couldn't find anyone else who has had this problem. Am I using the API incorrectly? Am I supposed to parse the cookie by hand before feeding it to the method? If so, why would anyone design the API in such a brain damaged manner?

*sigh*

I was having more fun drafting my specs for work.

Update: Mike Dimmick has pointed out in a comment below that my understanding of cookie syntax is incorrect. The cookie shown in the Wikipedia example is one cookie not four as I thought. It looks like simply grabbing sample code from blogs may not have been a good idea.:) This means that I may have been getting malformed cookies when fetching the MSN Spaces RSS feeds after all. Now if only I can repro the problem...


 

Categories: RSS Bandit | Web Development

I stopped paying attention to the syndication wars a couple of months ago. I barely have time to stay on top of all the stuff I have to worry about as part of my day job let alone keeping track of the pointlessness that is the Atom vs. RSS debate. Unfortunately, every once in a while something happens that forces me to pay attention because I'm also the project lead for RSS Bandit.

One cool thing about XML syndication formats like RSS and Atom is that they are easily extensible. This means that anyone can come up with a new extension to the RSS/Atom formats which adds a new feature but is ignored by feed readers that don't understand the extension. Some of my favorite extensions are slash:comments which provides a count of the number of comments in a feed and wfw:commentRss which provides the URL to the feed for the comments to a blog post in the feed. One of my work items for the next version of RSS Bandit is to make it easier for people to 'watch' the comments for a blog post they are interested in if it supports these extensions. That way I can get get a notification everytime some comment thread I am interested in gets new posts directly from my aggregator instead of using other tools like CoComment.

A few days ago Sam Ruby posted an entry entitled Rogers Switches! where he mentioned that he now redirects all requests for his RSS feeds to his Atom feed. This meant that in RSS Bandit I now no longer see the comment count for the blog posts in Sam's feed nor can I view the comments to his posts directly within my aggregator. Sam and I had the following exchange in his blog comments when I discovered the ramifications of his change

I was trying to figure out if I’d introduced a bug in RSS Bandit to make your comment count and inline comments disappear. Instead, it seems you have made your feed less useful as part of the fallout of yet another iteration of the eternal pissing match which is the XML syndication wars.

sigh

Posted by Dare Obasanjo at 20:25

Dare, is this is your way of saying that you don’t intend to support the Feed Thread Extension?  I’d think that you would be on the watch for it.

Posted by Sam Ruby at 22:08

I looked at the draft of the Feed Thread Extension specification Sam linked to and it seems like a reinvention of the functionality provided by the slash:comments, wfw:commentRss and annotate:reference extensions. Great, not only do we now have to deal with the an increase in the number of competing XML syndication formats due to the Atom process ...By the way, have you seen the Atom 0.3 vs. Atom 1.0 debate? I told you so... we now also have to deal with duplicates of all the popular RSS extensions as well? Give me a break!

That said, you can expect support for these new extensions in the next version of RSS Bandit. At the end of the day, what matters is building useful software for our users regardless of how many petty annoyances are thrown in our way on the road there.


 

Thanks to numerous reports from RSS Bandit users it has come to my attention that the Atom feeds provided by Google's Blogger are invalid and in many cases aren't even well-formed XML. Please fix this. I'm tired of dealing with threads like Blogspot feeds - XML Failure in our support forums.

If you'd like an example of what is wrong with your feeds. Click on http://feedvalidator.org/check?url=http://nothing-more.blogspot.com/atom.xml which shows the results of validating the feed for Derek Denny-Brown's blog. Below is the list of errors returned

This feed does not validate.

  • line 4, column 0: This feed uses an obsolete namespace [help]

    <feed xmlns="http://purl.org/atom/ns#" version="0.3" xml:lang="en-US">
  • line 4, column 0: Unexpected version attribute on feed element [help]

    <feed xmlns="http://purl.org/atom/ns#" version="0.3" xml:lang="en-US">
  • line 7, column 0: type attribute must be "text", "html", or "xhtml" [help]

    <title mode="escaped" type="text/html">only this, and nothing more</title>
  • line 7, column 0: Unexpected mode attribute on title element (7 occurrences) [help]

    <title mode="escaped" type="text/html">only this, and nothing more</title>
  • line 8, column 0: Undefined feed element: tagline [help]

    <tagline mode="escaped" type="text/html">irregular eccentic eclecticisms, di ...
  • line 11, column 0: Undefined feed element: modified [help]

    <modified>2006-03-27T00:01:47Z</modified>
  • line 12, column 0: Unexpected url attribute on generator element [help]

    <generator url="http://www.blogger.com/" version="5.15">Blogger</generator>
  • line 13, column 0: Undefined feed element: info [help]

    <info mode="xml" type="text/html">
  • line 4, column 0: Missing feed element: updated [help]

    <feed xmlns="http://purl.org/atom/ns#" version="0.3" xml:lang="en-US">
  • line 22, column 0: Undefined entry element: issued (6 occurrences) [help]

    <issued>2006-03-26T15:25:00-08:00</issued>
  • line 23, column 0: Undefined entry element: modified (6 occurrences) [help]

    <modified>2006-03-27T00:01:47Z</modified>
  • line 24, column 0: Undefined entry element: created (6 occurrences) [help]

    <created>2006-03-27T00:01:47Z</created>
  • line 27, column 0: type attribute must be "text", "html", or "xhtml" (6 occurrences) [help]

    <title mode="escaped" type="text/html">You call that Democracy?</title>
  • line 36, column 0: Missing entry element: updated (5 occurrences) [help]

    </entry>
  • line 153, column 156: XML parsing error: <unknown>:153:156: unbound prefix [help]

    ... S-X's niceties. If I knew people on the <st1:place st="on">Vista</st1:pl ...
                                                 ^

In addition, this feed has issues that may cause problems for some users. We recommend fixing these issues.

  • line 5, column 134: service.post is not a registered link relationship (2 occurrences) [help]

    ... hing more" type="application/atom+xml"/>
                                                 ^
  • line 7, column 66: text/html type used for a document fragment [help]

    <title mode="escaped" type="text/html">only this, and nothing more</title>
                                                                      ^
  • line 4, column 0: Missing atom:link with rel="self" [help]

    <feed xmlns="http://purl.org/atom/ns#" version="0.3" xml:lang="en-US">
  • line 18, column 150: service.edit is not a registered link relationship (6 occurrences) [help]

    ... emocracy?" type="application/atom+xml"/>
                                                 ^
  • line 27, column 63: text/html type used for a document fragment (6 occurrences) [help]

    <title mode="escaped" type="text/html">You call that Democracy?</title>
                                                                   ^
  • line 29, column 0: application/xhtml+xml type used for a document fragment (6 occurrences) [help]

    <div xmlns="http://www.w3.org/1999/xhtml">

Thanks for listening.


 

For the past few releases, we've had work items in the RSS Bandit roadmap around helping users deal with information overload. We've added features like newspaper views and search folders to make it easier for users to manage the information in feeds they consume. Every release I tried to make sure we add a feature that I know will make it easier for me to get the information I want from the feeds I am subscribed to without being overwhelmed.

For the Jubilee release I had planned that the new feature we'd add in the "dealing with information overload" bucket would be the ability to rate posts and enable filtering based on this rating. After thinking about this for a few weeks, I'm not sure this is the right route any more. There are tough technical problems to surmount to make the feature work well but I think the bigger problems are the expected changes to user behavior. Based on my experiences with rating systems and communities, I suspect that a large percentage of our user base will not be motivated to start rating the feeds they are subscribed to or the new items that show up in their aggregator.

On a related note, I've recently been using meme trackers like Memeorandum and TailRank which try to show the interesting topics among certain technology blogs. I think this is very powerful concept and is the next natural evolution of information aggregators such as RSS Bandit. The big problem with these sites is that they only show the current topics of interest among a small sliver of blogs which in many cases do not overlap with the blogs one might be interested in. For example, today's headline topic on Tech.Memeorandum is that a bunch of bloggers attended a house party which I personally am not particularly interested in. On the other hand, I'd find it useful if another way I could view my subscriptions in RSS Bandit pivoted around the current hot topics amongst the blogs I read. This isn't meant to replace the existing interface but instead would be another tool for users to customize their feed reading experience the same way that newspaper views and search folders do today. 

If you are an RSS Bandit user and this sounds like a useful feature I'd like to hear your thoughts on what functionality you'd like to see here. A couple of opening questions that I'd like to get opinions on include

  • Would you like to see the most popular links in new posts? For an example of what this looks like, see the screenshot in Nick Lothian's post on  Personalized meme tracking
  • How would you like to classify new posts; unread posts or items posted within the last day? The reason I ask this is that you may already have read a few posts that linked to a very popular topic, in which case should it be ranked higher than another link for which you haven't read any of the related posts but hasn't been linked to as much?
  • Would you like a 'mark discussion as read' feature? Would it be nice to be able to mark all posts that link to a particular item as read?

I have a bunch of other questions but these should do for now.


 

Categories: RSS Bandit

Recently there was a question asked on the RSS Bandit forums from a user who was Unable to Import RSSBandit-Exported OPML into IE7. The question goes

I exported my feeds from RSSBandit 1.3.0.42 to an OPML file in hopes of trying the feed support in IE7. IE7 seems to try to import, but ultimately tells me no feeds were imported. The exported file must have over a 100 feeds, so it's not that. Has anyone else been able to import feeds from RSSBandit into IE7?

I got an answer for why this is the case from the Internet Explorer's RSS team.  The reason is provided in the the RSS Bandit bug report, Support type="rss" for export of feeds, where I found out that somewhere along the line someone came up with the convention of adding a type="rss" attribute to indicate which were the RSS feeds in an OPML file. The Internet Explorer RSS team has decided to enforce this convention for indicating RSS feeds in an OPML file and will ignore entries that don't have this annotation.

Since RSS Bandit supports both RSS/Atom feeds and USENET newsgroups, I can see the need to be able to differentiate which are the feeds in an OPML file without having applications probe each URL. However I do think that type="rss" is a misnomer since it should also apply to Atom feeds. Perhaps type="feed" instead?


 

One cool side effect of the fact that so many people at Microsoft use RSS Bandit is that sometimes I get to have some of the folks who invented the technology it is built on helping me track down issues. For example, many of our users have complained about issue mentioned in the following post entitled Problems running from non-administrator account.

There's a slight problem if you run RSS Bandit from an account that isn't member of the Administrators security group.

When you run RSS Bandit (at least the first time after installing), it writes to a file called "rssbandit feed installer.InstallState" in "%ProgramFiles%\RssBandit". If you run as administrator that isn't a problem, but non-administrator accounts won't have write access to anything under %ProgramFiles%, which will prevent RSS Bandit from starting.

A workaround is to add write permission for "everyone" for that specific file.

It turns out that someone actually filed a bug against the Windows Installer team because they had problems installing RSS Bandit on their computer. Not only did the developer assigned the bug track me down to tell me what I was doing wrong in our installer but  Rob Mensching has also promised to swing by my office next week to give me some tips on writing installers.

Below is a description of what I was doing wrong from Carolyn Napier of the Windows Installer team.

If the file you’re manipulating for the feed information is in the ALLUSERS profile, then you will need to be an admin to access it. The current type specification for the custom action is 1025, which means the custom actions runs with the same privileges as the user that invoked the installation.

You can designate a custom action to run elevated (meaning at a higher privilege level) by adjusting its type. Visual Studio Installer doesn’t expose this, but you can use Orca, the MSI Table Editor, included in the Windows Installer SDK to tweak the type. (Other full-feature authoring tools make this available, like Wix, InstallShield, Wise, etc.).

Instead of 1025, make it 3073. Then your custom action will run with elevated privileges.

I installed Orca, the MSI Table Editor, and found the field she was talking about. It looks like this issue will finally fixed in the next version of RSS Bandit. Torsten has suggested that I use a full-featured installer tool instead of what ships with Visual Studio. I suspect this may be the straw that breaks the camel's back and gets me to start exploring Wix. I'll see what Rob advises next week.

I hope this post helps any other people who've had similar problems with installer projects built using Visual Studio.NET 2003.


 

Categories: RSS Bandit

February 3, 2006
@ 01:25 PM

Danny Sullivan, one of the guys behind the popular Search Engine Watch blog has written a blog post about his RSS reader of choice. The post is entitled Reading Feeds With RSS Bandit and begins

Dave Naylor and I were IMing today about IE 7's new RSS feature. He was very excited. I haven't tried it yet, but the screenshot he sent me didn't make me think it was better than the RSS Bandit feed reader I currently use. I've been meaning to write about that anyway, so this gave me an excuse.

Let me preface this by saying that everyone seems a bit different on how they read feeds. Some do it for pleasure, and they aren't worried about missing something, in the same way they might not worry if they missed a day or two of reading the newspaper. Others read for work and maybe manage a ton of feeds (that's me). Others seem to want to read one feed at a time, something I've seen some people describe as "wrong" or "stupid."

My feeling is that there is no "right" way to read feeds. Anyone who tells you that is the stupid one. What's the "right" way to read a newspaper or watch TV. Can you start with Business and then read the main news sections. Do you need to watch each program from beginning to end or is flipping allowed?

Read feeds however you want. What is helpful is to hear about how others do, because you can pick up tips or ideas on how you might improve your own reading.

I'm going to explain how I've shifted in my own reading. I hope some find that useful, but like I said, I'm not saying this is the "right" way to read nor that I use the "right" tool that everyone should use. It just what works for me.

Danny goes on to talk about the various ways one could choose to use RSS Bandit from treating it like a mail reader and viewing posts one by one as new items show up in each feed to consuming them in the "river of news" style by always reading the "Unread Items" folder. In building RSS Bandit we've tried to make it flexible so it can be adapted to multiple reading habits since as Danny says in his post there is no "right" way to read feeds. Different people find different approaches more suited to their needs. 

One thing Danny suggested which I haven't commented on before in my blog is the ability to organize feeds according to tags. I've thought about this a little over the past few weeks, specifically I've been comparing the user experience of Windows Live Favorites which is folder based with that of del.icio.us and Bookmarks in the Google Toolbar which are both tag based. One thing that seems clear is that it would be difficult to mix and atch (i.e. merge) both models. We'd probably have to let users switch between a traditional folder view which would use the current tree control and a tag view which would use a control similar to Eyefinder which mimics the Outlook 2003 user interface. Of course, this assumes that the main benefit of the tag view is so people can have feeds show up in multiple 'folders'. If people want other tag-based user interface features such as tag clouds then that would be problematic to implement as a Windows user interface component but may work as a newspaper view that is tied to the tag-based view.

The more I think about it the more I think there is definitely room for experimentation here. Now if only I could find some free time to experiment with some of these ideas. :)


 

Categories: RSS Bandit

In a recent post on the RSS Bandit forums entitled Microsoft Feeds API, one of our users asked when we plan to take addvantage of the Windows RSS Platform. Specifically the question asked was

I downloaded IE7 beta 2 preview and one of the new features is feed support. There really is no comparison between RSS Bandit and the minimilist support IE7 provideds however it is my understanding that there is more to the feed support then the basic UI IE provides. Apparently the Feed API is highly integrated into Vista and has been backported to XP as part of IE7. I would like to suggest (and I have no idea if this is even possible) that RSS Bandit embrace this new API. It's in it's early stages and I'd like to see it mature with the help of RSS Bandit into a usable common feed store for any number of apps (RSS Bandit, IE, plus anything else that decides to use it like the sample screensaver app in the API documentation.) Perhaps that's asking too much but I figured I should at least put the idea out there. It would be really great if, while surfing the net in IE I could subscribe to rss feeds using the IE mechanism, maybe take a quick look through them in IE, then later go back in RSS Bandit and be able to use the much more powerful features (such as stored searches, and folder aggregation) without having to have two copies of my actual feed lists to maintain.

Here's a link to the only info I could find on it so far:
http://msdn.microsoft.com/library/en-us/FeedsAPI/rss/rss_entry.asp

To the various people who have asked this question [including my friends on the IE team], the answer is YES we will support the Windows RSS Platform. As Walter, wrote in his post on Windows RSS Platform there are 3 main components of the platform; the Common Feed List, Feed Synchronization Engine, and Feed Store. Ideally I'd like to use all 3 in RSS Bandit but suspect that it'll be difficult to switch to using the Feed Synchronization Engine or the Feed Store provided by the Windows RSS platform. For example, our feed synchronization engine supports subscribing to USENET newsgroups which I doubt the Feed Syncrhonization Engine in the Windows RSS platform supports. On the other hand, it should be straightforward to satisfy the scenario requested in the quoted post where items subscribed in IE 7 are reflected in RSS Bandit and vice versa.

I need to work out the user interface with Torsten but it should be easy for us to support the Common Feed List. My current thinking is that we'll have a special folder for "My Internet Explorer Subscriptions" as opposed to mirroring the entire feed list in RSS Bandit within IE 7 and vice versa. Thoughts?


 

A few weeks ago I had a chat with Robert Rebholz about folksonomies, RSS and information overload. It was a rather fun discussion and he let me know about a tool he'd built called the OPML-o-mater. The way the tool works is described below, 

The OPML-o-mater delivers a personalized list of RSS feeds in an xml format called OPML. OPML files can be imported by any competent RSS Reader/Aggregator.

You want the feeds from the OPML-o-mater because they're known quality feeds -- at least they were when we entered them. Even if you already have all the feeds you need, it might be worth a look to discover if we've one or two you didn't know about.

In general it works this way:

  • We've tagged the feeds.
  • You select the tags that describe your interests
  • The OPML-o-mater finds and displays feeds associated with the tags you've selected
  • You pick the feeds you want
  • Press the generate OPML button
  • Save the OPML file to your local machine
  • Import it into your feed reader
More specifically, we've tagged all the feeds. The first column of the OPML-o-mater lists the tags. You select a single tag from column one that describes an area of interest for you. Column two displays the tags that were also used anytime the tag you selected was used to describe a url (bear in mind that a single feed/url may have many tags associated with it). In column three the feeds associated with the selection made in column one are displayed.

I think this is a very interesting way to solve the "How Do I Find Interesting Blogs?" problem which plagues users of RSS readers today. I currently am subscribed to 158 feeds in RSS Bandit. Given that there are tens of millions of blogs out there, I am sure that there are literally thousands of blogs I'd love to read if I just knew about them. The tough question for me has been how to find them and then how to integrate that process into RSS Bandit in an automated way. 

What would be cool would be for the OPML-o-mater to evolve into the equivalent of http://del.icio.us/popular/ for RSS feeds and then for it to expose an API that tools such as RSS Bandit could integrate into part of their user experience. This idea is interesting enough that I wish I had the time and dedicated server resources to build it myself.  


 

Categories: RSS Bandit | Social Software

A user of RSS Bandit recently forwarded me a discussion on the atom-syntax mailing list which criticized some of our design decisions. In an email in the thread entitled Reader 'updated' semantics Tim Bray wrote

On Jan 10, 2006, at 9:07 AM, James M Snell wrote:

In RSS there is definite confusion on what constitutes an update. In
Atom it is very clear. If <updated> changes, the item has been updated.
No controversy at all.

Indeed. There's a word for behavior of RssBandit and Sage: WRONG. Atom provides a 100% unambiguous way to say "this is the same entry, but it's been changed and the publisher thinks the change is significant." Software that chooses to hide this fact from users is broken - arguably dangerous to those who depend on receiving timely and accurate information - and should not be used. -Tim

People who write technology specifications often have good intentions but unfortunately they often aren't implementers of the specs they are creating. This leads to disconnects between reality and what is actually in the spec.

The problems with updates to blog posts is straightforward. There are minor updates which don't warrant signalling to the user such as typos being fixed (e.g. 12 of 13 miner survive mine collapse changed to 12 of 13 miners survive mine collapse) and those which do because they add significant changes to the story (e.g. 12 of 13 miners survive mine collapse changed to 12 of 13 miners survive killed in mine collapse). 

James Snell is right that it is ambiguous how to detect this in RSS but not in Atom due to the existence of the atom:updated element. The Atom spec states

The "atom:updated" element is a Date construct indicating the most recent instant in time when an entry or feed was modified in a way the publisher considers significant. Therefore, not all modifications necessarily result in a changed atom:updated value.

On paper it sounds like this solves the problem. On paper, it does. However for this to work correctly, weblog software now need to include an option such as 'Indicate that this change is significant' when users edit posts. Without such an option, the software cannot correctly support the atom:updated element. Since I haven't found any mainstream tools that support this functionality, I haven't bothered to implement a feature which is likely to annoy users more often than be useful since many people edit their blog posts in ways that don't warrant alerting the user.

However I do plan to add features for indicating when posts have changed in unambiguous scenarios such as when new comments are added to a blog post of interest to the user. The question I have for our users is how would you like this indicated in the RSS Bandit user interface?


 

Categories: RSS Bandit

It's been about three years since I first started on RSS Bandit and it doesn't seem like I've run out of steam yet. Every release the application seems to become more popular and last month we finally broke 100,000 downloads in a single month. The time has come for me to start thinking about what I'd like to see in the next family of releases and elicit feedback from our users. The next release is codenamed Jubilee.

Below are a list of feature areas where I'd like to see us work on over the next few months

  1. Extensibility Framework to Enable Richer Plugins: We currently use the IBlogExtension plugin mechanism which allows one to add new context menu items when right-clicking on an item in the list view.  I've used this to implement features such as the "Email  This" and "Post to del.icio.us" which ship with the default install. Torsten implemented "Send to OneNote" using this mechanism as well.

    The next step is to enable richer plugins so people can add their own menu items, toolbar buttons as well as processing steps for received feed items. Torsten used a prototype of this functionality to add Ad blocking features to RSS Bandit. I'd like to add weblog posting functionality using such a plugin model instead of making it a core part of the application since many of our users may just want a reader and not a weblog editor as well.

  2. Comment Watching: For many blogs such as Slashdot and Mini-Microsoft, the comments are often more interesting than the actual blog post. In the next version we'd like to make it easier to not only be updated when new blog posts appear in a blog you are interested in but also when new comments show up in a post you are interested in as well.

  3. Provide better support for podcasts and other rich media in feeds: With the growing popularity of podcasts, we plan to make it easier for users to discover and download rich media from their feeds. This doesn't just mean supporting downloading media files in the background but also supporting better ways of displaying rich media in our default views. Examples of what we have in mind can be taken from  the post Why should text have all the fun? in the Google Reader blog. We should have richer experiences for photo feeds, audio feeds and video feeds.

  4. Thumbs Up & Thumbs Down for Filtering and Suggesting New Feeds:  big problem with using a news aggregator is that it eventually leads to information overload. One tends to subscribe to feeds which produce lots of content of which only a subset is of interest to the user. At the other extreme, users often find it difficult to find new content that matches their interests. Both of these problems can be solved by providing a mechanism which allows the user to rate feeds or entries that are of interest to the user. A thumbs up or thumbs down rating similar to what systems such as TiVo use today. This system can be used to highlight items of interest from subscribed feeds to the user or suggest new feeds using a suggestion service such as AmphetaRate.

  5. Applying search filters to the list view: In certain cases a user may want to perform the equivalent of a search on the items currently being displayed in the list view without resorting to an explicit search. An example is showing all the unread items in the list view. RSS Bandit should provide a way to apply filters to the items currently being displayed in the list view either by providing certain predefined filters or providing the option to apply search folder queries as filters.

These are just some of the ideas I've had. There are also the dozens of feature requests we've received from our users over the past couple of months which we'll use as fodder for ideas for the Jubilee release.


 

Categories: RSS Bandit

December 27, 2005
@ 07:15 PM

About a month ago we released the first cut of the Nightcrawler edition of RSS Bandit and promised that there'd be a bug fix release within a month. So exactly 30 days and about 100,000 downloads later, we're shipping the bug fix version of the Nightcrawler release.

Download the installer from here. Differences between v1.3.0.38 and v1.3.0.42 below.

Translations

  • This release is available in the following languages; German, English, Brazilian Portuguese, Traditional Chinese, Polish, Serbian, Russian, Japanese, Italian, Spanish, Bulgarian, and Turkish.

Installer

  • The application can now be installed on computers that only have v2.0 of the .NET Framework available.

  • A mini-application for editing the keyboard shortcuts used by the RSS Bandit has now been added. To locate the application, look in the RSS Bandit application folder which is usually "C:\Program Files\RssBandit" for the application named ShortcutsEditor.exe

Feeds

  • Fixed issue where the subscription wizard picks the first feed found on a web page in auto-discovery mode instead of displaying the list of feeds found so users can choose which feed to add to their subscriptions.

  • Feed autodiscovery now uses the Firefox icon () which will also be used by IE 7, Outlook 12 and FeedDemon for indicating when feeds have been found on a web page within RSS Bandit.

  • The '+' that indicates that inline comments are available for a post now controlled by the Tools->Options->Display->Display Related Items as discussion threads checkbox. Note that this feature is now off by default.

  • Fixed issue that feed validation/autodiscovery/search in subscription wizard could not be cancelled

  • Fixed problems with processing titles in Atom feeds containing markup characters. We now pass all of Phil Ringnalda's Atom title test cases. .

  • Fixed issue where the title of first post in the feed is used as the feed title in some RSS 1.0 feeds..

  • Fixed issue where some comments aren't shown inline for some feeds that support <wfw:commentRss>

  • Fixed issue where the blog post is repeated as the first comment in some feeds that support <wfw:commentRss>.

Newsgroups

  • Added ability to create new posts in a newsgroup.
  • Subscribing to a newsgroup no longer asks for username and password per subscription since this information is specified when the news server was first added.

  • Subscribing to multiple newsgroups at once now supported.

  • Fixed bug where subscribing to newsgroups via Tools->Newsgroups results in 'Input string was not in a correct format' error on attempting to download posts from the newsgroup.

  • Fixed issue where downloading messages from newsgroups times out. This was fixed by setting the maximum number of items to download to 1000.

  • Fixed issue where subscribing to password protected newsgroups results in "Credentials property not an instance of NetworkCredential" error.

Synchronization with NewsGator Online

  • Fixed issue where when downloading feedlist from NewsgatorOnline the following error occurs; "Feedlist download failed with error: Object reference not set to an instance of an object".

  • Fixed issue that downloading feedlists from Newsgator Online never stops


 

Categories: RSS Bandit

We were planning to ship a bugfix release of RSS Bandit before Christmas which fixed all the major issues reported in the recently Nightcrawler edition of RSS Bandit.

Unfortunately, it seems that either due to complexity or buginess I simply can't get the NewsGator API to perform the straightforward task of marking something as read in NewsGator Online which was viewed in RSS Bandit. I spent all of yesterday afternoon plus a couple of hours this morning working on it and I've finally given up. This feature simply won't work in the bugfix release shipping later this week. Maybe I'll have better luck when we ship the Jubilee release.

To make myself feel better, I'll work on fixing some of the Atom parsing bugs reported by Phil Ringnalda and the issues with password protected newsgroups. Nothing like having your self-worth defined by how many bugs you close in a database on SourceForge.

Update: So not only have I already fixed the newsgroup issues and the problems with parsing Atom feeds pointed out by Phil Ringnalda but I just got pinged by Gordon Weakliem who is the developer of the NewsGator API. Perhaps my Christmas can be salvaged after all.


 

The number one problem that faces developers of feed readers is how to identify posts. How does a feed reader tell a new post from an old one whose title or permalink changed? In general how you do this is to pick a unique identifier from the metadata of the feed item to use to tell it apart from others. If you are using the Atom 0.3 & 1.0 syndication formats the identifier is the <atom:id> element, for RSS 1.0 it is the rdf:about attribute and for RSS 0.9x & RSS 2.0 it is the <guid> element.

The problem is that many RSS 0.9x & 2.0 feeds do not have a <guid> element which usually means a feed reader has to come up with its own custom mechanism for identifying items. In many cases, using the <link> element is enough because most items in a feed map to a single web resource with a permalink URL. In some pathological cases, a feed may not have <guid> or <link> OR even worse may use the same value in the <link> element for each item in the feed. In such cases, feed readers usually resort to heuristics which are guaranteed to be wrong at least some of the time.

So what does this have to do with the Newsgator API? Users of recent versions of RSS Bandit can synchronize the state of their RSS feeds with Newsgator Online using the Newsgator API. Where things get tricky is that this means that both the RSS Bandit and Newsgator Online either need to use the same techniques for identifying posts OR have a common way to map between their identification mechanisms. When I first used the API, I noticed that Newsgator has it's own notion of a "Newsgator ID" which it expects clients to use. In fact, it's worse than that. Newsgator Online assumes that clients that synchronize with it actually just fetch all their data from Newsgator Online including feed content. This is a pretty big assumption to make but I'm sure it made it easier to solve a bunch of tricky development problems for their various products. Instead of worrying about keeping data and algorithms on the clients in sync with the server, they just replace all the data on the client with the server data as part of the 'synchronization' process.

Now that I've built an application that deviates from this fundamental assumption I've been having all sorts of interesting problems. The most recent being that some users complained that read/unread state wasn't being synced via the Newsgator API. When I investigated it turned out that this is because I use <guid> elements to identify posts in RSS Bandit while the Newsgator API uses the "Newsgator ID". Even worse is that they don't even expose the original <guid> element in the returned feed items. So now it looks like fixing the read/unread not being synced bug involves bigger and more fundamental changes than I expected. More than likely I'll have to switch to using <link> elements as unique identifiers since it looks like the Newsgator API doesn't throw those away.

Frustrating.


 

December 5, 2005
@ 06:12 PM

Since the release of v.1.3.0.38 of RSS Bandit last week, I've read a number of posts like Scott Reynolds's complaint in his post I Love Jason Haley In A Totally Manly Non-Threatening Way. Serious. Totally Platonic where he wrote

Also, RSSBandit devs: What the F? I am using Nightcrawler Alpha, which I love, but ctrl+m no longer marks posts are read. It’s ctrl+q. Ghey. That’s a UI no-no if I ever saw one. Worse than going agains expected behavior, changing previously existant behavior arbitrarily just makes users mad. Still a great aggregator, but I’d like to hear a why on that decision.

A number of people have complained that we changed the keyboard shortcut for marking items as read from Ctrl+M to Ctrl+Q. The reason we made the change was because of a bug report we got which pointed out that (i) Outlook Express and Outlook use Ctrl+Q for marking items as read and (ii) Ctrl+Q is easier to hit than Ctrl+M on most keyboards.

Due to all the feedback we've gotten, we'll be including a keyboard shortcut editor [originally developed by Phil Haack] in the bug fix version of RSS Bandit scheduled to ship later this month.


 

Categories: RSS Bandit

November 30, 2005
@ 05:58 PM

The reviews for the most recent release of RSS Bandit have begun to flow in and they've been very positive. Below are excerpts from various blog posts and official reviews of the release.

Heinz Tschabitscher writes in the About.Com review of v1.3.0.38 of RSS Bandit

Guide Rating - rating

The Bottom Line

RSS Bandit is a nice and very capable feed reader that lets you browse news in an organized fashion. Its flexibility, virtual folders and synchronization abilities are great, but it would be even greater if it integrated with Bloglines in addition to NewsGator Online.

In his post Trying out, and loving, the new RSS Bandit Kevin Briody writes

Dare Obasanjo and team released the latest version of RSS Bandit (aka “Nightcrawler”), and I’ve got to say I’m really digging it. It is easily as fully featured as FeedDemon - my current reader - synchs with Newsgator, and has a few extra bells and whistles to boot. See comments to posts in a tree-menu drop-down is handy, and being able to customize the fonts and colors for browsing feeds is a lifesaver on the eyes.

All told, very cool. I’ll run Bandit and FD side-by-side for a while, but I may have myself a new reader.

In his post RSS Bandit rocks! Steve Lacey writes

Dare Obasanjo has just released the new version of his aggregator, RSS Bandit, and to put it bluntly, it completely rocks.

For the past eight months, I’ve been using my own home grown aggregator Katana. I wrote Katana as an experiment in C#/.Net programming and because nothing else out there did everything I wanted an aggregator to do.

Now, RSS Bandit has come forward in leaps and bounds. My favourite features?

  • The "River of News"/Newspaper view when clicking on a feed rather than the an article.
  • Great feed discovery.
  • Tabbed browsing.
  • Performance. This release is way faster than previous releases.
  • Support for folders. This is a key one that many other aggregators miss.
  • Newsgroup integration.
  • Style. Somewhere along the line, RSS Bandit got sexy…

If there’s one thing it’s missing, it’s the ability for comments to appear in the article window, inline with the article itself. I really like this feature in Katana. I’d also like some form of visual notification (article/feed in italics for example), that there are new comments available.

Other than that, I think I’m hooked. The “River Of News” view has accelerated my blog consumption.

In the post entitled RSS Bandit 1.3.0.38 on the Microsoft Show's blog it states

Dare Obasanjo released RSS Bandit 1.3.038. At first I was hesitant to download it wow, am I glad I did.

This time around RSS Bandit handled my large amount of feeds much better than prior releases (the last one I played with was .31). Huge performance boost – and my machine is not a low spec’d machine. Prior releases it would take forever to go through them all which in comparison FeedDemon blazed through it. Not this time though…RSS Bandit did great!

One feature I never really appreciated before: RSS Bandit has a folder to show feed errors. In comparison FeedDemon lists you know on the feed that there is an error but having a list is handy especially since I have monitor a lot of feeds for various purposes.

Speaking of errors, RSS Bandit used to give me errors when the feed was working. I am not getting the same amount or “wrong” errors. Yes, the occasional unable to connect which is standard with all readers. RSS Bandit is much more accurate now. I think that is why I appreciate the feature now. Since the feeds in the folder are “really” unavailable, I can better manage problem feeds.

I also love the threaded view – it really helps me keep track of the conversation, which I’ve admitted I have a problem with.

Playing with it a short time, I’m impressed with the improvements. Excellent work Dare!

In his post New RSS Bandit released Robert Scoble writes

Dare Obasanjo announces that a sizeable new release of RSS Bandit is now available. I downloaded and installed this and it looks great. This is a free RSS News Aggregator and is my favorite of the free ones out there. His post explains what’s new, but I really like that it synchronizes to NewsGator now.

I'd like to thank everyone for all the positive feedback. We definitely have more goodness planned over the next few months and will add some of the features requested above. There should be a bug fix release within the next 30 days to take care of any fatal edge case bugs which weren't found until after the release and will add a few more translations to the mix (e.g. Japanese & Russian). After that, our focus will be on the Jubilee release.


 

Categories: RSS Bandit

November 27, 2005
@ 06:23 PM

The Nightcrawler release of RSS Bandit is now done and available for all. Besides the new features there are a number of performance improvements especially with regards to the responsiveness of the application. This release is available in the following languages; German, English, Brazilian Portuguese, Traditional Chinese, Polish, and Serbian.

Download the installer from here. Differences between v1.3.0.29 and v1.3.0.38 below.

NEW FEATURES

  • NNTP Newsgroups support: Users can specify a public NNTP server such as news.microsoft.com and subscribe to newsgroups on that server. Users can also respond to newsgroup posts as well as create new posts. Permalinks in a newsgroup post point to the post on Google Groups.

  • Item Manipulation from Newspaper Views: Items can be marked as read or unread and flagged or unflagged directly from the newspaper view. This improves end user work flow as one no longer has to leave the newspaper view and right-click on the list view to either flag or mark a post as unread.

  • Subscription Wizard: The process for subscribing to newsgroups, search results and web feeds has been greatly simplified. For example, users no longer need to know the web feed of a particular web site to subscribe to it but can instead specify the web page URL and discovery of its web feed is done automatically.

  • Synchronization with Newsgator Online: Users can synchronize the state of their subscribed feeds (read/unread posts, new/deleted feeds, etc) between RSS Bandit and their account on Newsgator Online. This allows the best of both worlds where one can use both a rich desktop client (RSS Bandit) and a web-based RSS reader (Newsgator Online) without having to worry about marking things as read in both places.

  • Using back and forward arrows to view last post seen in reading pane: When navigating various feeds in the RSS Bandit tree view it is very useful to be able to go back to the last feed or item viewed especially when using the [spacebar] button to read unread items. RSS Bandit now provides a way to navigate back and forth between items read in the reading pane using the back and forward buttons in the toolbar. 

  • Atom 1.0 support: The Atom 1.0 syndication format is now supported.

  • Threaded Posts Now Optional: The feature where items that link to each other are shown as connected items reminiscent of threaded discussions can now be disabled and is off by default. This feature is very processor intensive and can slow down the average computer to the point that is unusable if one is subscribed to a large number of feeds.

  • Launching Browsers in the Background: A new Web browser can now be opened from a newspaper view without it stealing the focus of the application by holding down Ctrl when clicking a link in the reading pane.

  • UI Improvements: Icons in the tree view have been improved to make them more distinctive and also visually separate newsgroups from web feeds.

BUG FIXES

  • Scroll wheel manipulates the main window instead of the drop down list on a dialog box when the dialog box has focus.

  • Setting the default refresh rate to 0 (zero) did not disable automatic refresh of all feeds

  • No results displayed when subscribed to URLs with escaped characters such as http://blogsearch.google.com/blogsearch_feeds?hl=en&q=C%23&btnG=Search+Blogs&num=100&output=rss

  • ThreadAbortException error sometimes occurs when multiple feeds clicked on in rapid succession

  • Mark all as read in a search folder does not update the treeview state of the subscriptions

  • Refresh button for web browser refresh does not work

  • Treeview font issue. Font height may rendered way too small on high-res screen resolutions or with custom font definitions that use big fonts.

  • Keyboard shortcut for "Mark All Items As Read" changed to Ctrl+Q from Ctrl+M

  • Deleting a feed changes the selected tree node to the "My Feeds" node instead of the next node in the tree.

  • Proxy bypass server list damaged after reload of the Options dialog if more than one bypass address/server was specified.

  • Pushing [spacebar] or "Next Unread Item" when positioned in comments goes to newest unread instead of oldest unread comment.

  • The links in the Options dialog didn't work

  • Ctrl-Enter does not expand the URLs as expected

  • When uploading a feed list, the dialog box that appears on successful upload has been removed since it is redundant. .

  • The "Email This" menu option didn't work correctly

  • Crash caused if an item has already been added: "AppUserDataPath"

  • Tab controls on the Options dialog are rendered incorrectly on wide screen displays (16:9 aspect ratio)

  • Category settings don't stick for nested categories

  • Crash occurs after setting properties for a category if some feeds are not in a category

  • Toolbar state and window maximized states are not saved if appplication was closed via system tray icon context menu

  • Modifying the feedlist while loading feeds from disk or refreshing from the Web by subscribing to a new feed or deletion stops the feeds loading/downloading progress.

  • On failed authentication with credentials, we don't ignore cookies and retry one more time before giving up and reporting the failure

  • Some HTML entities are not decoded correctly in UI widgets

  • NullReferenceException error on "Update category" command

  • Access requests to comment feeds on a password-protected feed do not use the credentials used to access the main feed

  • Search criteria on search folders not reloaded correctly on restart


 

Categories: RSS Bandit

I just chatted with Torsten this morning and we've decided to ship the next release of RSS Bandit this weekend, on November 27th to be exact. As part of the final stretch, we've reached the point where we have to request for translators.

As RSS Bandit is a hobbyist application worked on in our free time, we rely on the generosity of our users when it comes to providing translations of our application. Currently we have completed translations for Brazilian Portuguese, German and Traditional Chinese. We also have folks working on Hindi and Dutch translations. If you look at the supported language matrix for RSS Bandit, you'll not that this means we don't have translators for previously supported languages like Polish, French, Russian, Japanese, Turkish or Serbian. If you'd like to provide your skills as a translator to the next release of RSS Bandit and believe you can get this done by this weekend then please send mail to . We'd appreciate your help.


 

Categories: RSS Bandit

Nick Bradbury has a post entitled An Attention Namespace for OPML where he writes

In a recent post I said that OPML would be a great format for sharing attention data, but I wasn't sure whether this would be possible due to uncertainty over OPML's support for namespaces.
...
As I mentioned previously, FeedDemon already stores attention data in OPML, but it uses a proprietary fd: namespace which relies on attributes that make little sense outside of FeedDemon. What I propose is that aggregator users and developers have an open discussion about what specific attention data could (and should) be collected by aggregators.

Although there's a lot of attention data that could be stored in OPML, my recommendation is that we keep it simple - otherwise, we risk seeing each aggregator support a different subset of attention data. So rather than come up with a huge list of attributes, I'll start by recommending a single piece of attention data: rank.

We need a way to rank feeds that makes sense across aggregators, so that when you export OPML from one aggregator, the aggregator you import into would know which feeds you're paying the most attention to. This could be used for any number of things - recommending related feeds, giving higher ranked feeds higher priority in feed listings, etc.

Although user interface and workflow differences require each aggregator to have its own algorithm for ranking feeds, we should be able to define a ranking attribute that makes sense to every aggregator. In FeedDemon's case, a simple scale (say, 0-100) would work: feeds you rarely read would get be ranked closer to zero, while feeds you read all the time would be ranked closer to 100. Whether this makes sense outside of FeedDemon remains to be seen, so I'd love to hear from developers of other aggregators about this.

I used be the program manager responsible for a number of XML technologies in the .NET Framework while I was on the XML team at Microsoft. The technology I spent the most time working with was the XML Schema Definition Language (XSD). After working with XSD for about three years, I came to the conclusion that XSD has held back the proliferation and advancement of XML technologies by about two or three years. The lack of adoption of web services technologies like SOAP and WSDL on the world wide web is primarily due to the complexity of XSD. The fact that XQuery has spent over 5 years in standards committees and has evolved to become a technology too complex for the average XML developer is also primarily the fault of XSD.  This is because XSD is extremely complex and yet is rather inflexible with minimal functionality. This state of affairs is primarily due to its nature as a one size fits all technology with too many contradictory design objectives. In my opinion, the W3C XML Schema Definition language is a victim of premature standardization. The XML world needed experiment more with various XML schema languages like XDR and RELAX NG before we decided to settle down and come up with a standard.

So what does this have to do with attention data and XML? Lots. We are a long way from standardization. We aren't even well into the experimentation stage yet. How many feed readers do a good job of giving you an idea of which among the various new items in your RSS inbox are worth reading? How many of them do a good job suggesting new feeds for you to read based on your reading habits? Until we get to a point where such features are common place in feed readers, it seems like putting the cart way before the horse to start talking about standardizing the XML representation of these features.

Let's look at the one field Nick talks about standardizing; rank. He wants all readers to track 'rank' using a numeric scale of 1-100. This seems pretty arbitrary. In RSS Bandit, users can flag posts as Follow Up, Review, Read, Reply or Forward. How does that map to a numeric scale? It doesn't. If I allowed users to prioritize feeds, it wouldn't be in a way that would map cleanly to a numeric scale. 

My advice to Nick and others who are entertaining ideas around standardizing attention data in OPML; go build some features first and see which ones work for end users and which ones don't. Once we've figured that out amongst multiple readers with diverse user bases, then we can start thinking about standardization.


 

We are getting down to the end game for getting the Nightcrawler release of RSS Bandit. This is where all the more unfun parts of the release happen such as dealing with translations and tracking down performance bugs such as memory leaks or issues with multithreading. To take my mind of some of the tedium I'm going to have to deal with today, I've decided to spend some time thinking about the Jubilee release of RSS Bandit which should ship sometime next year

One of the features I'm evaluating is Reading lists for RSS which was discussed by Nick Bradbury in a blog entry he posted last month where he wrote

Last week Dave Winer proposed the idea of reading lists for RSS, which are more-or-less OPML subscriptions. I like this idea - a lot - and in fact a few FeedDemon customers have requested this feature in the past.

In a nutshell, the idea is that you'd subscribe to an OPML document which contains a list of feeds that someone is reading, some organization is recommending, or some service has generated (such as "Top 100" list). Changes to the source OPML document would be synchronized, so that you're automatically subscribed to feeds added to the reading list. Likewise, you'd be unsubscribed from feeds removed from the original OPML.

There are a number of implementation details that would need to be worked out (ex: would a FeedDemon user really want to be automatically unsubscribed from feeds dropped from the source OPML, especially if that user had flagged some posts in those feeds for future reference?), but details aside, I'm curious whether this is something you'd like to see, and if so, how do you think the idea can be improved upon?

This feature initially made me skeptical since it seems like a solution looking for a problem. Then again I thought the same thing about enclosures in RSS and I've been proved wrong by the podcasting phenomenom. So instead of ignoring the idea I'd like to see whether our users think this feature makes sense and if so how they expect us to resolve certain problems that would arise from implementing such a feature.

The first problem that comes up in implementing RSS reading lists based on OPML is what to do when a feed is pulled from the list by the owner of the feed list. Do we automatically delete the subscription? Do we prompt the user and if they decide to stay subscribed to the feed, move it out of the reading list? Another question is how to deal with feeds that the user is already subscribed to that are in the reading list?

What do you think?
 

November 8, 2005
@ 06:41 PM

Over the weekend I got the following mail from an RSS Bandit user. The body of the message read

Have a suggestion on a set of blog entries (or articles for msdn or whatever) related to moving rss bandit to .net 2.0 / vs 2005. I’ve taken an application that uses the xpexplorerbar and imported it directly to vs 2005. I’m unable to compile due to a p/invoke issue (with LoadBitmap I believe). There is some documentation on MSDN for this, I’m sure it will be simple to correct.

In any case, RSS Bandit really is a better Windows Forms reference app than anything Microsoft is shipping with the product. It would be a very educational and worthwhile effort to document the steps required to move RSS Bandit to the new technology. As far as I’m concerned, Microsoft should champion the effort. Is there any chance this could happen?

We don't plan to move to v2.0 of the .NET Framework in the near future. RSS Bandit has a decent sized user base, with over 200,000 downloads this year. Most of these users are on v1.1 of the .NET Framework. We don't plan to move until a large number of our user base has migrated to v2.0 of the .NET Framework. Once this happens, we'll consider moving our development to .NET Framework v2.0. I assume this is about 1 to 2 years away.

I hate to promise anything so far in advance but if I have time after we port our application I will document some of the trickier issues in migrating to v2.0 of the .NET Framework. More than likely it'll just be a bunch of postsin my blog as opposed to a focused article on MSDN. I'm already so far behind when it comes to articles that I don't want to promise any more. 


 

Categories: RSS Bandit

Since the release of the installer for the alpha version of the Nightcrawler edition of RSS Bandit we have fixed a number of bugs. We worked on a number of performance issues related to the responsiveness of the application. We also fixed a number of issues with our newsgroup support including fixing issues with password protected newsgroups. We also think we tracked down the issue that led to some items occassionally showing up in the wrong feeds.

You can download the next iteration of the Nightcrawler alpha at RssBandit.1.3.0.36.Nightcrawler.Alpha.zip.

We aren't ready to release a beta version of the installer because we aren't feature complete yet. There are two features that still need to be completely implemented; downloading of Enclosures/Podcasts and notifications of new comments on "watched" posts.

Also some features need fleshing out. Torsten pointed out this morning that I need to add support for RFC 2047 so that we can handle non-ASCII author names and post titles as part of the newsgroup support. I had hoped to find a free library with code that already does that but it seems that the only ones I can find are for sale. I guess writing that code must suck so much that no one wants to give it away for free. There goes a weekend or two. :)

NEW FEATURES IN NIGHTCRAWLER

  • NNTP Newsgroups support: Users can specify a public NNTP server such as news.microsoft.com and subscribe to newsgroups on that server. Permalinks in a newsgroup post point to the post on Google Groups.

  • Item Manipulation from Newspaper Views:  Items can be marked as read or unread and flagged or unflagged directly from the newspaper view. This improves end user work flow as one no longer has to leave the newspaper view and right-click on the list view to either flag or mark a post as unread. 

  • Subscription Wizard: The process for subscribing to newsgroups, search results and web feeds has been greatly simplified. For example, users no longer need to know the web feed of a particular web site to subscribe to it but can instead specify the web page URL and discovery of its web feed is done automatically. 

  • Synchronization with Newsgator Online: Users can synchronize the state of their subscribed feeds (read/unread posts, new/deleted feeds, etc) between RSS Bandit and their account on Newsgator Online. This allows the best of both worlds where one can use both a rich desktop client (RSS Bandit) and a web-based RSS reader (Newsgator Online) without having to worry about marking things as read in both places.

  • Using back and forward arrows to view last post seen in reading pane: When navigating various feeds in the RSS Bandit tree view it is very useful to be able to go back to the last feed or item viewed especially when using the [spacebar] button to read unread items. RSS Bandit now provides a way to navigate back and forth between items read in the reading pane using the back and forward buttons in the toolbar. NEW!!!

  • Atom 1.0 support: The Atom 1.0 syndication format is now supported. 

  • Threaded Posts Now Optional: The feature where items that link to each other are shown as connected items reminiscent of threaded discussions can now be disabled and is off by default. This feature is very processor intensive and can slow down the average computer to the point that is unusable if one is subscribed to a large number of feeds.

  • UI Improvements: Icons in the tree view have been improved to make them more distinctive and also visually separate newsgroups from web feeds.

 

I've been wondering if we shouldn't just lock down this release and push out the podcasting features to the Jubilee release. What do y'all think?


 

Categories: RSS Bandit

It's been over a month since we shipped the alpha version of the Nightcrawler release of RSS Bandit. Since then we've fixed a number of annoying bugs and polished a number of our features. An example of the kind of polish we've added since the alpha is shown in the screenshot below.

There are three main classes of subscriptions we now support in RSS Bandit; feeds (Atom or RSS), newsgroups (NNTP) and search results. We made search results a first class subscription type because I suspect that subscribing to search results especially on various blog search engines is only going to increase in popularity. The process for adding a new search engine is still too "techie-focused" for my liking. I'd love it if our users would just be able to add the URL of their search engine of choice and then we check if it supports Amazon OpenSearch, if so then we add it as one of the choices for the Search Results subscription wizard. The current process for adding a search engine whose results can be subscribed to involves users adding a URL showing the query string format of the engine (e.g. http://search.msn.com/results.aspx?q={0}&format=rss where {0} is a place holder that shows where the query string should be inserted).  

I should investigate how many search engines provide an OpenSearch description documents file. If enough of them do, it may be worth the while for our users if we went ahead and supported it. That way they can just add 'http://search.msn.com' to their favorite search engine list and we autodiscover the rest.

The Newsgator API has been a source of mild frustration for me since I added support for it. The existing synchronization features in RSS Bandit involve uploading/downloading a single file containing the state of the application. The Newsgator API assumes that any application using it for synchronization is also using it as a source for RSS feeds. From my perspective this seems to be a very big assumption to make but is understandable when one considers that the original purpose of the API was for their in-house applications. This assumption manifests itself by requiring that to synchronize the state of a feed I'm subscribed to, I need to fetch its feed from Newsgator online. This means that if I'm subscribed to 100 feeds in RSS Bandit, then I might need to download up to 100 feeds from Newsgator Online as part of the synchronization process each time I sync. This makes the synchronization process a lot slower than I expected. I'm now wondering whether we should rethink the user flow for our synchronization step since currently we lock the UI while syncing to prevent users making changes while we are syncing. With synchronization to Newsgator this could take several minutes as opposed to a minute or less with our other synchronization methods. I did make some performance improvements since we shipped the alpha but it still does take a while longer than I like. :(

The winner of the RSS Bandit New Logo design contest has been announced. Congrats to Eric Winchester.

Old Logo:

New Logo:

I'd like to thank all the folks who took the time to submit entries and those who voted for their favorite logos. We greatly appreciate your support.

It is quite likely that Torsten and I will ship a 'refresh' of the alpha installer this weekend. The reason it isn't a beta is that we are not yet feature complete. The code for downloading enclosure/podcasts still isn't all there and I haven't started on my idea for 'watching' posts for new comments. With any luck we should have all this done in the next few weeks.

After the beta, we'll focus primarily on performance issues. We've already fixed a number of issues that were causing lots of CPU usage but our memory consumption still higher than I prefer. I expect that the final version of Nightcrawler will ship during the holiday season.


 

Categories: RSS Bandit

Brent Simmons has confirmed that Newsgator has purchased NetNewsWire. One of the reasons Brent gave for the purchase is excerpted below

The first is that we get requests constantly about syncing—not just better syncing, not just between copies of NetNewsWire, but with Windows RSS readers, PDAs, Outlook, and so on. People even ask us to create a website version for when they’re away from their normal computers.

We couldn’t do all this on our own—but we agree completely with NetNewsWire users who tell us that RSS is hugely important, too important to have to read the same news items twice on different computers and different devices.

NewsGator was already working on this—but they didn’t have a Mac client. It was almost like putting together a jigsaw puzzle: NetNewsWire fit right in!

Users of RSS Bandit already have access to a robust syncing mechanism that allows users to use the application on multiple computers without having to mark the same item as read twice. However there are several limitations to the mechanisms used by RSS Bandit today.

  • The user has to set up a server (FTP or WebDAV)
  • The user cannot synchronize with an online reader for the times they aren't at a PC with RSS Bandit installed
  • The user cannot synchronize with a Mac-based reader for the times they are using a Mac and not a PC

I have been hit by all three of these limitations at one time or the other this year. All three of these problems will be a thing of the past with the Nightcrawler release of RSS Bandit which will support synchronization with Newsgator Online via the Newsgator API.

Congratulations to Brent and Greg on their union. And congratulations to RSS Bandit users who will now be able to sync between NetNewsWire on the Mac and RSS Bandit on the PC.


 

Categories: RSS Bandit

I've been in the process of moving apartments so I haven't had free time to work on RSS Bandit. In the meantime, we've been getting lots of excellent bug reports from people using the alpha version of the Nightcrawler release. One of the bug reports we've gotten was that somewhere along the line we introduced a bug that caused significant memory consumption (hundreds of megabytes). Since I've been busy, Torsten tracked it down and wrote about it in his post More to Know About .NET Timers. He wrote

As you may know, .NET 1.1 supports three different Timer classes:

  1. Windows timers with the System.Windows.Forms.Timer class
  2. Periodical delegate calling with System.Threading.Timer class
  3. Exact timing with the System.Timers.Timer class

The timings are more or less accurate (see CodeProject: Multithreading in .NET), but that is not the point I want to highlight today. Two sentences from the mentioned codeproject article are important for this post:

"... Events raised from the windows forms timer go through the message pump (together with all mouse events and UI update messages)..."

and

"...the System.Timers.Timer class. It represents server-based timer ticks for maximum accuracy. Ticks are generated outside of our process..."

To report state and newly retrieved items from requested feeds we used a concept to serialize the asynchronous received results from background threads with the help of a timer. This was introduced in the NightCrawler Alpha Dare Obasanjo posted last week for external tests. Some users reported strange failures, memory hog up and bad UI behavior with this Alpha so I would suggest here to not use it anymore for testing if your subscribed feeds count is higher than 20 or 30 feeds.

The idea was not as bad as it seems to be (if you only look at the issues above). The real issue in our case was to use simply the wrong timer class! The UI state refresh includes an update of the unread counters that is reported to the user within the treeview as number postfixes and (more important here) a font refresh (as user decides, default is to mark the feed caption text bold).
...

So what happens exactly now if the timer fires? I used the CLR Profiler to get the following exiting results. The event is called in sync. with the SynchronizingObject, means Control::WndProc(m) calls calls into System.Windows.Forms.Control::InvokeMarshaledCallbacks void(), MulticastDelegate::DynamicInvokeImpl()... and then our event method OnProcessResultElapsed(). The allocation graph mentions 101 MB (44.78%) used here!
...

So what to do to fix the problem(s)? Simply use the Windows.Forms.Timer! Think about it: it is driven by the main window message pump and runs always in the right context of the main UI thread (no .InvokeRequired calls). Timing isn't an important point here, we just want to process one result each time we are called. Further: no cross-AppDomain security check should happen anymore! With that timer it is just a simple update control(s) with some fresh data!

So take care of the timer class(es) you may use in your projects! Check their implications!

Tracking down bugs is probably the most satisfying and yet frustrating things about programming. I'm glad we got to the root of this problem.

By the way, don't forget to cast your vote in the RSS Bandit Logo Design contest. The time has come for us to update the imagery related the application and we thought it'd be great t have both the new logo and the decision on what it should be in the hands of our users.

 


 

Categories: RSS Bandit

As promised in the RSS Bandit roadmap, the preview of the next version of RSS Bandit is now available for general download. You can now download it at RssBandit.1.3.0.35.Nightcrawler.Alpha.zipRssBandit.1.3.0.36.Nightcrawler.Alpha.zip.

NEW FEATURES THAT WORK

  • NNTP Newsgroups support: Users can specify a public NNTP server such as news.microsoft.com and subscribe to newsgroups on that server. Permalinks in a newsgroup post point to the post on Google Groups.

  • Item Manipulation from Newspaper Views:  Items can be marked as read or unread and flagged or unflagged directly from the newspaper view. This improves end user work flow as one no longer has to leave the newspaper view and right-click on the list view to either flag or mark a post as unread. 

  • Subscription Wizard: The process for subscribing to newsgroups, search results and web feeds has been greatly simplified. For example, users no longer need to know the web feed of a particular web site to subscribe to it but can instead specify the web page URL and discovery of its web feed is done automatically. 

  • Synchronization with Newsgator Online: Users can synchronize the state of their subscribed feeds (read/unread posts, new/deleted feeds, etc) between RSS Bandit and their account on Newsgator Online. This allows the best of both worlds where one can use both a rich desktop client (RSS Bandit) and a web-based RSS reader (Newsgator Online) without having to worry about marking things as read in both places.

  • Atom 1.0 support: The Atom 1.0 syndication format is now supported. 

  • Threaded Posts Now Optional: The feature where items that link to each other are shown as connected items reminiscent of threaded discussions can now be disabled and is off by default. This feature is very processor intensive and can slow down the average computer to the point that is unusable if one is subscribed to a large number of feeds.

  • UI Improvements: Icons in the tree view have been improved to make them more distinctive and also visually separate newsgroups from web feeds.

NEW FEATURES THAT DON'T WORK

  • Downloading of Enclosures/Podcasts
  • Comment Watch - Notifications of new comments on "watched" posts
  • Tip of the Day on Startup
  • Extensibility Framework to Enable Richer Plugins

 

Categories: RSS Bandit

For all you OneNote freaks out there, Torsten has written a plugin for sending an item from RSS Bandit to OneNote. From his post "Send to OneNote..." plugin for RSS Bandit 

You can download it here. Just expand the zip to your RSS Bandit installation sub-folder named plugins. Within the config file you can change the default note page used and some templates to format the posted item link and content.

The plugin uses the IBlogExtension interface so it should also work with other RSS readers written using the .NET Framework such as SharpReader.


 

Categories: RSS Bandit

Torsten just posted the following announcement about the RSS Bandit support forums

Because of the amount of spam from fake user/member accounts we changed the rules related to how new members are approved to use/post to our forums.

Each new user will be approved by one of the forum administrators manually. You will have to provide a VALID e-mail address while registering. So if you don't get approved within 10 minutes, please don't try again with other/changed e-mail addresses.
We are humans and need to sleep some minutes every day

If you get access, you will receive a mail from forumadmin at rssbandit.org soon...

We were getting almost a dozen spam posts a day which made the forum RSS feed completely useless. We shut down accepting new members for a few days until Torsten figured out that we could add an approval process for new member requests.

Having to deal with approving new member requests is a hassle but a lot less than having to delete posts and member accounts created by spambots. Spammers suck. 


 

Categories: RSS Bandit

As I mentioned a few weeks ago, we plan to ship an alpha of the next version of RSS Bandit [codenamed Nightcrawler] next week. So far we've been making some progress towards that goal. I checked in the changes to enable marking items as read or flagging them from the newspaper view and I've already found it to be quite useful. A screenshot is below

I've also been hard at work implementing support for synchronization with Newsgator Online via the Newsgator API. It's been more difficult than I expected but I'm sure our users will love being able to move between a web based aggregator or a desktop aggregator as the need arises but have their subscriptions and items they've read stay consistent between both places. Ideally the experience should be the same as moving back and forth between Web mail (e.g. Hotmail) and a desktop mail reader (e.g. Outlook Express).

I've also completed our support for Atom 1.0 and tested against a number of known Atom 1.0 feeds in the wild.

Torsten is working on the new subscription wizard and the podcasting support which should be finally checked in by next week. 

By the way Torsten has started an RSS Bandit new logo design contest and we'd appreciate your comments. It seems a lot of our users who use RSS Bandit from their place of work feel our current smily face icon and logo are unprofessional. I don't mind changing our application icon but would probably like to keep the smily bandit in the logo.

So it looks like we are on track for having the installer for the Nightcrawler alpha available next week. Hope you guys like the new features.


 

Categories: RSS Bandit

In every release of RSS Bandit, I spend some time working on performance. Making the application use less memory and less CPU time while adding more features is a challenge. Recently I read a post by Mitch Denny entitled RSS Bandit Performance Problems where after some investigation he found a key culprit for some of our memory consumption issues in the last release. Mitch wrote

Last weekend I was subscribed to over about 1000 RSS feeds and conicidentally last weekend RSSBandit also became unusable. Obviously I had reached some kind of threshold that the architecture of RSSBandit wasn’t designed to cope with.

My first instinct was to ditch and go and find something a bit faster – after all it is a .NET application and we know how much of a memory hog those things are! Errr – hang on. Don’t I encourage our customers to go out and use .NET to build mission critical enterprise applications every day? I really needed to take a closer look at what was going on.

In idle RSSBandit takes up around 120–170MB of RAM on my laptop. Thats more than Outlook and SQL Server, and often more than Visual Studio (except when its in full flight) but to be honest I’m not that surprised because in order for it to give me the unread items count it has to process quite a few files containing lots of unique strings – that means relatively large chunks of being allocated just for data.

I decided to look a bit deeper and run the CLR Allocation Profiler over the code to see where all the memory (and by extension good performance was going). I remembered this article by Rico Mariani which included the sage words that “space is king” and while I waited for the profiler to download tried to guess what the problem would be based on my previous experience.

What I imagined was buckets of string allocations to store posts in their entirety and a significant number of XML related object allocations but when I looked at the allocation graph I saw something interesting.

... [see http://notgartner.com/Downloads/AllocationGraph3.GIF]

As you can see there is a huge amount of traffic between this native function and the NativeWindow class. It was at this point that I started to suspect what the actual problem was and had to giggle at how many times this same problem pops up in smart client applications.

From what I can tell the problem is an excessive amount of marshalling to the UI thread is going on. This is causing threads to synchronise (tell tale DynamicInvoke calls are in there) and quite a bit of short term memory to be allocated over the lifetime of the application. Notice that there is 610MB of traffic between the native function and NativeWindow so obviously that memory isn’t hanging around.

The fix? I don’t know - but I suspect if I went in to the RSSBandit source and unplugged the UI udpates from the UpdatedFeed event the UI responsiveness would increase significantly (the background thread isn’t continually breaking into the main loop to update an unread count on a tree node).

It seems most of the memory usage while running RSS Bandit on Mitch's computer came from callbacks in the RSS parsing code that update the unread item count in the tree view within the GUI whenever a request to fetch an RSS feed is completed. Wow!!!

This is the last place I would have considered looking for somewhere to optimize our code and yet another example of why  "measurement is king" when it comes to figuring out how to improve the performance of an application. Given that a lot of the time a feed is requested there is no need to update the UI since no new items are fetched, there is a lot of improvement that we can gain here.

Yet again I am reminded that writing a rich client application like RSS Bandit using the .NET Framework means that you have to be familiar with a bunch of Win32/COM interop crap even if all you want to do is code in C#. I guess programming wouldn't be so challenging if not for gotchas like this lying around all over the place. :)


 

Categories: RSS Bandit | Technology

According to the RSS Bandit roadmap the time draws nigh for the next release of RSS Bandit codenamed Nightcrawler. As with the previous release we will have an alpha version which will be mostly feature complete, followed by a beta version which will be feature complete and then the final release. Last week, Torsten and I agreed on the following plan for the alpha version of Nightcrawler.

Release Date: August 31, 2005

New Features:

  • NNTP Newsgroups support
  • Downloading of Enclosures/Podcasts
  • Subscription Wizard replaces Add New Feed dialog
  • Fast Mode (shutting off comment threading which uses a lot of CPU)
  • Synchronization with Newsgator Online
  • Atom 1.0 Support
  • Extensibility Framework to Enable Richer Plugins
  • Item Manipulation from Newspaper Views (e.g. Mark As Read, Flagging)
  • Tip of the Day on Startup

There's also a persistent bug that has been bothering some of our users where posts from different feeds end up being mixed up. We haven't located the source of this bug but have added some tracing to the build which will be enabled in the alpha. Users who end up with mixed up feeds after the alpha can send us the trace files which should help us narrow down the source of the problem.

There are a couple of features I'd like to see in the final version such as "Comment Watching" so I can tell when a post I am interested in gets new comments. However we need to start locking down for the next release so that feature isn't likely to make it in unless I can sneak it in before the beta.  If there are other small, nice to have features you'd like to see in Nightcrawler please file a feature request in SourceForge and we'll see what we can get to before the final release.

Any comments or other feedback would be greatly appreciated. 


 

Categories: RSS Bandit

Sometime during the past week, the number of downloads of RSS Bandit from SourceForge crossed 100,000 for the most recent release and 300,000 total downloads since the project moved to SourceForge a year and a half ago. This isn't bad for a project that started of as a code sample in an MSDN article a few years ago.

However even though Torsten and I have been improving the original code for about two years now there is still a bunch of work to do. Some of these areas for improvement were recently pointed out by Jack Vinson in his posts RSSBandit Thoughts and More RSSBandit Experience. Below are his comments and responses from me.

"Next unread item" means the oldest unread item, rather than the youngest.  This seems to run counter to most of the aggregators, which present the newest unread item.  Interestingly, the "newspaper" view shows items in reverse chronological order.

I like to read posts in the order they were written especially when a newer post might be a follow up to an older post [as is the case with the latter post by Jack]. In general, I don't think anyone has really complained about this before.

Space bar goes to "next unread," rather than doing a "scroll" in the current reading pane window when viewing in newspaper mode.  If the reading pane has focus, it will scroll there.  When reading a single post, it does scroll as expected.

The behavior of going to the next unread item on hitting space bar predates the newspaper view. The problem we had when coming up with newspaper views was how to integrate both features in a way that was intuitive. The main issue here being that if the space bar scrolls you through the newspaper and you scroll half way down then click somewhere else, do you expect that half the posts from the newspaper view should be marked as read or stay unread? We didn't have a good idea of what the right choice would be so we punted on the problem by not scrolling in the newspaper view when you hit space but instead keeping the old "Next Unread" behavior.

RSS Bandit is much more sensitive to errors in the feeds - more accurately, it tells me that there are errors in some feeds.  They provide a "feed error" folder that lists problems as they arise.  But I see that the feeds it has trouble with work fine elsewhere.  Not good.

Some of the errors we report really aren't worth showing to end users. Things like HTTP timeouts and the like are really transient issues that are more likely due to the user's network than a problem with the feed. We need to do some filtering of these errors in future releases.

I can't get the full text on excerpt-only feeds.  This is probably the biggest loss of moving from the old reader.

If the feed only has excerpts, how do we get the full text of the entry?

I like the newspaper view, when I select a folder (they call them "categories").  Articles are listed in descending order, but are grouped by feed.  I don't quite understand how the feeds are sorted (it's not by the feed with the most recent article is at the top.)  This is a handy mode for reading unread stuff once or twice a day.

I like this feature as well. In the next version we'll be adding the ability to flag or mark items as read/unread from the newspaper view. The feeds should be sorted by the order the appear in the tree view.

RSS Bandit is a stand-alone application, but it uses the Internet Explorer engine to render HTML and XSLT.  By default, it opens links in tabs within the app.  You can also have it open links in the default browser.  I like the tabs in the application.  Now I need to find out if there are keyboard shortcuts for navigating the tabs.

Tabbed browsing is definitely cool. You can navigate between tabs by pressing the Ctrl+Tab or Shift+Ctrl+Tab keys. It's pretty sweet.

The BlogJet This plug-in works in the reading windows.  But the BlogJet This plug-in for IE does not work in the tabs that open within RSS Bandit

Weird. I'm not sure why this is the case but can look into it.

Email this only emails the URL of the post.  I'd rather it give the entire text (HTML) of the item (along with the URL). 

I've kind of wondered about this myself but since no one has ever really complained I never changed it. Are there other RSS Bandit users out there that would prefer that "Email This" sent the body of the post and not just the URL as it does today?

I'm not quite clear on how the user interface is responding. Sometimes I will select a folder/category that has updated feeds, and I will get a view that lists just the new entries. Other times the newspaper will show both new and old entries. The topic list always shows both the new and old.

For search folders the newspaper view shows all the items in the folder while for regular feeds or folders/categories it shows the unread items.

One can create search folders to display ONLY unread messages, for example.
It seems slow, but this is my complaint with many of these apps. Maybe I just read too many feeds. Marking about 80 unread items read (when in the "unread view") took quite a while. Even 28 unread items took 10-15 seconds to "process." This seems to be a memory issue, because the next time I hit "mark all read" in the same usage session, it is much faster.

I agree that it does seem to take far too long for an operation like "Mark All Read" to be performed in a search folder. I'll work on improving the performance of this for the next version.

There seems to be no easy way to tell the software that I'm offline and to not bother downloading.

Go to the File menu and select "Work Offline". We also detect if you select this option directly from Internet Explorer as well.

When it's checking feeds, it eats a lot of resources. So much so, that I can't even scroll the current window, much less select a new feed to read. (Outlook has been doing the same thing to me lately.)

Downloading feeds is pretty CPU intensive for us. Not because of the actual downloading of the files but because we run the algorithm that infers relationships across different posts so we can show them as threaded conversations. I hacked on this code during the last release but only made it slightly less CPU intensive. I've considered just having an option to turn off this feature for the folks who'd rather have a more responsive UI than the threaded conversation feature.


 

Categories: RSS Bandit

As the developer of an RSS aggregator I'm glad to see Microsoft's Simple List Extensions for RSS. Many of the aggregator developers I spoke to at Gnomedex this weekend felt the same way. The reason for being happy about these extensions is that they provide a way to fix a number of key feeds that are broken in RSS aggregators today. This includes feeds such as the MSN Music Top 100 Songs feed, iTunes Top 25 Songs feed and Netflix Top 100 Movies feed.

The reasons these feeds appear broken in every aggregator in which I have tried them is covered in a previous post of mine entitled The Netflix Problem: Syndicating Ordered Lists in RSS. For those who don't have time to go back and read the post, the following list summarizes the problems with the feeds

  1. When the list changes some items change position, new ones enter the list and old one's leave. An RSS reader doesn't know to remove items that have left the list from the display and in some cases may not know to eliminate duplicates. Eventually you have a garbled list with last week's #25 song and this weeks #25 song and last month's #25 song all in the same view.

  2. There is no way to know how to sort the list. Traditionally RSS ggregators sort entries by date which doesn't make sense for an ordered list.  

The RSS extensions provided by Microsoft are meant to solve these problems and improve the current negative user experience of people who subscribe to ordered lists using RSS today.  

To solve the first problem Microsoft has provided the cf:treatAs element with the value "list" to be used as a signal to aggregators that whenever the feed is updated that the previous contents should be dumped or archived and replaced by the new contents of the list. That way we no longer have last week's Top 25 song list comingled with this week's list. The interesting question for me is whether RSS Bandit should always refresh the contents of the list view when a list feed is updated (i.e. the feed always contains the current list) or whether to keep the old version of the list perhaps grouped by date. My instinct is to go with the first option. I know Nick Bradbury also had some concerns about what the right behavior should be for treating lists in FeedDemon.

To solve the second problem Microsoft has provided the cf:sort element which can be used to specify what elements on an item should be used for sorting, whether the field is numeric or textual so we know how to sort it and what the human readable name of the field should be when displayed to the user. I'm not really sure how to support this in RSS Bandit. Having every feed be able to specify what columns to show in the list view complicates the user interface somewhat and requires a degree of flexibility in the code. Changing the code to handle this should be straightforward although it may add some complexity.

On the other hand there are some user interface problems. For one, I'm not sure what should be the default sort field for lists. My gut instinct is to add a "Rank" column to the list of columns RSS Bandit supports by default and have it be a numeric field that is numbered using the document order of the feed. So the first item has rank 1, the second has rank 2, etc. This handles the case where a feed has a cf:treatAs element but has no cf:sort values. This will be needed for feeds such as the Netflix Top 100 feed which doesn't have a field that can be used for sorting. The second problem is how to show the user what columns can be added to a feed. Luckily we already have a column chooser that is configurable per feed in RSS Bandit. However we now have to make the list of columns in that list configurable per feed. This might be confusing to users but I'm not sure what other options we can try.


 

Stephen O' Grady has a blog post entitled Gmail Fighting Off Greasemonkey? where he writes

I'm not sure of the reasoning behind it, but it appears that Google may have made some behind the scenes changes to Gmail that disrupted the scipts and extensions I rely on to get the most out of my account. One of the Apache devs noted here that his Greasemonkey enabled persistent searches were no longer functioning, and in the same timeframe I've lost my delete key. It's not just Greasemonkey scripts, however, as my Gmail Notifier extension for Firefox has apparently been disabled as well. While it's Google's perogative to make changes to the service as necessary for maintenance or other reasons, I'm hoping this is not a deliberate play at preventing would-be participants from enhancing the value of Google's service. It's remarkable how much less useful Gmail is to me when I have to log in to see if I have mail, or can't easily delete the many frivolous emails I receive each day (yes, I'm aware that I can use a POP client for this, but I'd rather not).
...
Update: As one reader and a few posters to the GM listserv have noted, one thing that's disrupted a variety of user scripts has been the fact that the domain to Gmail has changed from gmail.google.com to mail.google.com. While simply adding the domains into the GM interface had no effect on my Gmail, a reinstallation of a version of the script with updated domain returned my beloved Delete button. What do developers think of this change with Google's service? Here's one take from the GM list: "I noticed [the domain change] too. Why they can't just leave it alone, I can't understand." To be a bit less harsh, while Google probably had good reasons for making the change, it would have been great to see them be proactive and notify people of the change via their blog or some other mechanism.

I find this hilarious. Greasemonkey scripts work by effectively screen scrapping the website and inserting changes into the HTML. Stephen and others who are upset by Google's change are basically saying that Google should never change the HTML or URL structure of the website ever again because it breaks their scripts. Yeah, right.

Repeat after me, a web page is not an API or a platform.  

Speaking of apps breaking because of GMail domain changes it seems RSS Bandit users were also affected by the GMail domain name change. It looks like we have a problem with forwarding the username and password after being redirected from https://gmail.google.com/gmail/feed/atom to https://mail.google.com/gmail/feed/atom. I'll fix this bug in the next version but in the meantime RSS Bandit users should be able to work around this by changing the URL manually to the new one. My bad.


 

Categories: RSS Bandit | Technology

I've been really busy at work and haven't had free time left over to do significant work on RSS Bandit for the past few weeks. I should have some more free time starting this weekend and will begin to start making progress again. In the mean time there have been decisions made which are probably worth sharing.

Synchronization with Bloglines and Newsgator Online
I've mentioned in the past that I'd like the next version of RSS Bandit to be able to synchronize it state with a user's account in Newsgator Online or Bloglines. However I've also mentioned the various limitations of the Bloglines sync API which make it less than ideal as a way to synchronize the state of a desktop RSS reader with an online aggregator. On the flip side, I've had some discussions with folks at Newsgator which imply that I'll be able to get a full synchronization API from them by the time Nightcrawler ships.

My current decision is that I am dropping plans for supporting synchronizing RSS Bandit with Bloglines due to the limitations of its API which is guaranteed to leave users with a poor user experience. Instead the only new synchronization target added in the next release will be Newsgator Online.

Newsgroup support
One interesting problem that came up when integrating newsgroups into the RSS Bandit  user interface was what to use as permalinks for newsgroup posts. Thankfully, Google Groups comes to the rescue here. All newsgroup posts are given a permalink that maps the the Google Groups URL for that message ID. This works fine with public newsgroups that are archived by Google but leads to broken links for internal newsgroups. I think this is a decent trade off.

The screenshot below shows this feature in action

Subscription Wizard
Given that we now provide the ability to subscribe to both newsgroups and RSS/Atom feeds we've decided to revamp the feed subscription mechanism. We'll be adding an "Add Subscription" wizard which gives people the option of adding an RSS or Atom feed, a newsgroup, a web page (which we then scour for feeds) or a search term (which we map to an MSN Search or Feedster search results feed). My initial instinct with the last option was to just go with PubSub but it doesn't seem to have a straightforward mechanism for people to create search feeds programmatically. REST wins again.

Screenshot below 


 

Categories: RSS Bandit

Over the past week and a half, I've been fixing bugs in the implementation of newsgroups support in RSS Bandit. Yesterday I celebrated getting the last major networking issue being fixed by posting a somewhat empty message to the microsoft.public.xml newsgroup from RSS Bandit. The main thrust of what's left is for Torsten and I to decide how we want newsgroups to be exposed in the user interface.

It is time to start thinking about another item on the roadmap for our next release. This time I want to focus on what we'll do to better support RSS enclosures and podcasting. If you are unfamiliar with either of these concepts, you should read Dave Winer's blog post Payloads for RSS from 2001 which describes the concept of subscribing to digital media content such as songs and videos as opposed to just text as is common today.  

Although I am not interested in any of the amateur talk radio or audioblogging that is typically associated with podcasting I still think this is a very interesting development that should be supported by RSS Bandit. I would love to be able to subscribe to the G-Unit website and get new songs that have been released to the public or subscribe to the various XBox 360 rumor mills to get new videos of game demos.

Below is a list of features I'd like to see in RSS Bandit.

  1. Ability to download RSS enclosures to a folder of my chosing. This folder can be configured per feed so I can have some stuff go to C:\G-Unit and other stuff go to C:\XBox360.
  2. A list of files currently being downloaded or that have been downloaded.
  3. A download meter to indicate how much of a file has been downloaded.
  4. Ability to add files to my Windows Media Player or iTunes playlist of my choosing on successful download. The level of configurability of this feature will depend on how much work is entailed. :)

If you have any ideas that I have left out or comments about the above list, just go ahead and reply to this post.


 

Categories: RSS Bandit

I intended that we'd have newsgroup support in the last version of RSS Bandit but eventually we had to pull it out so we could get the release out earlier. I can definitely promise that you will be able to subscribe to whatever newsgroups tickle your fancy in the Nightcrawler release of your favorite RSS reader.

I've checked in support to finally enable this functionality into CVS. There are still some bugs to work out such as dealing with various funky headers and binary attachments as well as design questions such as whether to merge the UI for subscribing to feeds and newsgroups or keep them separate.

Below is a screenshot showing the microsoft.public.xml newsgroup (note that the dates might be wrong)


 

Categories: RSS Bandit

From Greg Reinacker we find out that Newsgator Acquires FeedDemon and Nick Bradbury confirms this in his post NewsGator Acquires FeedDemon, TopStyle...and Me!. I think this is a great acquisition for Newsgator. Acquisitions are usually about getting great people, key technology or lots of users. With this acquisition Newsgator gets all three although it'll be interesting seeing how they manage to deal with rationalizing the existence of two desktop clients even if one of them is a Microsoft Office Outlook plugin.

I think this will have an interesting ripple effect on the aggregator market. Both Nick & Greg have already raised the bar for RSS readers to include synchronization with a web-based aggregator. Desktop aggregators that don't do this will eventually be left in the dust. So far Newsgator Online and Bloglines have been the premiere web-based aggregators but its been difficult building applications that synchronize with them. Newsgator Online doesn't seem to have any public documentation about their API while the Bloglines API is not terribly useful for synchronization.

This definitely puts pressure on Bloglines to provide a richer API since two of the most popular desktop aggregators on the Windows platform will now have a richer synchronization story with its most notable competitor. It also puts pressure on other desktop aggregators to figure out a strategy for their own synchronization stories. For example, I had planned to add support for synchronizing with both services in the Nightcrawler release of RSS Bandit but now it is unclear whether there is any incentive for Newsgator to provide an API for other RSS readers. Combining this with the fact that the Bloglines API isn't terribly rich means I'm between a rock and a hard place when it comes to providing synchronization with a web-based aggregator in the next version of RSS Bandit.

Sometimes I wonder whether my energies wouldn't be better spent convincing Steve Rider to let me hack an API for http://www.start.com/1. :)


 

I recently stumbled on a post entitled The end of the quest for the perfect RSS reader which made my day. The author wrote

RSS readers have lately been appearing all over the place, however, until recently I wasn’t able to find the perfect one. My needs are not huge. I want a reader which can synchronize feeds and read posts between several PCs, have a useful and selectable notification mechanism so I don’t miss important news, but still don’t get bothered with less important ones, display feeds in a tree without favicons, be robust and fairly fast, provide descent search functionality and saved searches, flag news items for easy follow up and review.

I have tried most of the existing Windows and web based aggregators, and each one had some of these missing. I recently checked the new version of RSS Bandit and my quest for the perfect RSS reader seems to have come to an end. RSS Bandit features all I need and provides even more nice goodies like integrated Feedster and Google searches.

If you are not completely satisfied with your reader, give RSS Bandit a spin. You won’t regret it.

It's really good to see people getting so much use of my favorite RSS reader. Of course, there is still a lot of interesting stuff we'd like to add to make it even better. Check out the roadmap for the Nightcrawler release to see where we plan to go in the next release.

If you currently aren't an RSS Bandit user but would like to try it out, download the latest version from here.


 

A recent favorable review of RSS Bandit on About.com pointed out a missing feature that I've seen more and more of our users asking for. The bottom line of the review reads

RSS Bandit is a nice and very capable feed reader that lets you browse news in an organized fashion. Its flexibility, virtual folders and synchronization abilities are great, but it would be even greater if it integrated with Bloglines and NewsGator Online, too.

Although we have various options for using RSS Bandit from multiple computers, many users find them inaccessible because they don't have access to an FTP server or a WebDAV server. Also in certain cases, one may not want to install RSS Bandit on a machine that was being used temporarily but instead use a Web application which could then be synchronized with RSS Bandit later on.

The main reason I didn't include syncing to Bloglines in the Wolverine release is that the Bloglines sync API is not very rich. RSS Bandit users can flag posts, delete them, mark read posts as unread and so on. None of this functionality is supported by the Bloglines sync API. Similarly users cannot add or delete feeds using the Bloglines sync API. This means that there really isn't any way I could fully synchronize the state of an RSS Bandit instance with a person's Bloglines subscriptions. It seems the API was designed with the assumption that the user would be using Bloglines as their primary RSS reader not the other way around.

The way FeedDemon got around this problem was to create a separate channel group for Bloglines subscriptions which has limited functionality compared to other channel groups but is synchronized with the user's Bloglines subscriptions. This looks like the only reasonable approach as opposed to waiting indefinitely for the Bloglines sync API to develop more functionality.

The above argument also applies to syncing with the Newsgator Online service.

In the Nightcrawler release I'll ensure that we provide syncing to both Bloglines and Newsgator Online. However this will be via synchronized channel groups which won't be compatible with the existing synchronization mechanisms that use FTP and WebDAV today.


 

Categories: RSS Bandit

April 12, 2005
@ 04:44 PM

This is primarily a bug fix release that fixes a couple of issues that weren't caught in beta testing for the previous release.

Download the installer from here. Differences between v1.3.0.26 and v1.3.0.29 below.

----

FEATURE: The 'Take over proxy settings from Internet Explorer' feature now supports proxy configuration scripts.

FEATURE: Traditional Chinese translation added.

FIXED: Application would crash on startup with the following error message; "ArgumentOutOfRangeException: Length cannot be less than zero"  

FIXED: Dates in the RFC 822 format not containing the seconds caused problems

FIXED: Search scope settings in search folders are lost after restart of the application

FIXED: A web search engine cannot be removed from the list of defined search engines

FIXED: Column layouts not synchronized during remote storage

FIXED: RSS 2.0 feeds with extension elements before the <rss> element could not be read

FIXED: HTTP Digest authentication was not supported for feeds

FIXED: Enable Alert Windows for New Items setting resets on remote feedlist download or on restart

FIXED: Feed Desktop Alerts now display the newest item(s) first

FIXED: Feeds with invalid value in the HTTP "Last-Modified" header could not be read.

FIXED: Application would crash with the following error message; "NullReferenceException caused in WinGuiMain.SaveUIConfiguration() at ThreadedListView.FeedColumnLayoutFromCurrentSettings()"


 

Categories: RSS Bandit

Yesterday I saw the post entitled Running RSS Bandit on linux? where the author wrote

I am seriously thinking about throwing windows out of the window and moving back to linux for my home desktop.
The programs I use the most, like Eclipse, Firefox or Thunderbird, all run perfect on linux.
But there is one thing that is keeping me from switching right now: I am pretty hooked up to RSS Bandit, the C# based rss aggregator. One very nice feature is for example the possiblity to remotely storing the read state of the feeds.
Now the problem is that this application needs the .NET framework to run. I know there is a linux alternative for the .NET framework called Mono, but I don't have any experience with that.
Maybe this is a silly question, but would it be possible to make RSS Bandit run on linux using Mono?

It's rather flattering to know that at least one person finds RSS Bandit useful enough that it's all that's standing in the way of switching operating systems.

With regards to whether it is possible to run my favorite RSS reader on Mono, I doubt that will be possible. We use COM & Win32 interop in a bunch of places including when communicating with the Internet Explorer component.

 


 

Categories: RSS Bandit

Recently I was chatting with Steve Rider on the Start.com team about the various gotchas awaiting them as they continue to improve the RSS aggregator at http://www.start.com/1/. I mentioned issues like feeds which don't use title's like Dave Winer's and HTML showing up in titles.

I thought I knew all the major RSS gotchas and RSS Bandit handled them pretty well. However I recently got two separate bug reports from users of WordPress about RSS Bandit's inability to handle extension elements in their feed. The first complaint was about Kevin Devin's RSS feed which couldn't be read at all. A similar complaint was made by Jason Bock who was helpful enough to debug the problem himself and provide an answer in his post RSS Bandit problem fixed where he wrote

I can't believe what it took to fix my feed such that Rss Bandit could process it.

I'm just dumbfounded.

Basically, this is the way it looked:

						<rss xmlns:blog="urn:blog">
   <blog:info directory="JB\Blog" />
   <channel>
      <!--  Channel stuff goes here... -->
   </channel>
</rss>

				

This is what I did to fix it:

						<rss xmlns:blog="urn:blog">
   <channel>
      <!--  Channel stuff goes here... -->
   </channel>
   <blog:info directory="JB\Blog" />
</rss>

				

After debugging the Rss Bandit code base, I found out what the problem was. Rss Bandit reads the file using an XmlReader. Basically, it goes through the elements sequentially, and since the next node after <rss> wasn't <channel>, it couldn't find any information in the feed, and that's what was causing the choke. Moving <blog:info> to the end of the document solved it.

The assumption I made when developing the RSS parser in RSS Bandit was that the top level rss element would have a channel element as its first child element. I handle extension elements if they appear as children of the channel or item element since these seem logical but never thought anyone would apply an extension to the rss element. I took a look at what the RSS 2.0 specification says about where extension elements can appear and it seems my assumption was wrong since it states

RSS originated in 1999, and has strived to be a simple, easy to understand format, with relatively modest goals. After it became a popular format, developers wanted to extend it using modules defined in namespaces, as specified by the W3C.

RSS 2.0 adds that capability, following a simple rule. A RSS feed may contain elements not described on this page, only if those elements are defined in a namespace.

Since there is no explicit restriction of where extension elements can appear it looks like I'll have to make changes to be able to expect extension elements anywhere in the feed.

My apologies to the folks who've had problems reading feeds because of this oversight on my part. I'll fix the issue today and refresh the installer later this week.

 


 

While at ETech I got to spend about half an hour chatting with Steve Gillmor about what he's called "the attention problem" which isn't the same thing as the attention.xml specification. The attention problem is the problem that faces every power users of XML syndication clients such as RSS Bandit or Bloglines. It is so easy to subscribe to various feeds that eventually readers get overwhelmed by the flood of information hitting their aggregator's inbox. Some have used the analogy "drinking from a firehose" to describe this phenomenon.

This problem affects me as well which is the impetus for a number of features in the most recent release of RSS Bandit such as newspaper views which allow one to view all the unread posts in a feed in single pane, adding more sortable columns such as author and comment count to the list view, and skim mode ('mark all items as read on exiting a feed or category'). However the core assumption behind all these features is that the user is reading every entry.

Ideally a user should be able to tell a client, "Here are the sites I'm interested in, here are the topics I'm interested in, and now only show me stuff I'd find interesting or important". This is the next frontier of features for RSS/ATOM aggregators and an area I plan to invest a significant amount of time in for the next version of RSS Bandit.

In my post Some Opinions on the Attention.xml Specification I faulted the attention.xml specification because it doesn't seem to solve the problems it sets out to tackle and some of the data in the format is unrealistic for applications to collect. After talking to Steve Gillmor I realize another reason I didn't like the attention.xml spec; it ignores all the hard problems and assumes they've been solved. Figuring out what data or what algorithms are useful for determining what items are relevant to a user is hard. Using said data to suggest new items to the user is hard. Coming up with an XML format for describing an arbitrary set of data that could be collected by an RSS aggregator is easy.

There are a number of different approaches I plan to explore over the next few months in various alphas of the Nightcrawler release of RSS Bandit.  My ideas have run the gamut from using Bayesian filtering to using the Technorati link cosmos feature for weighting posts [in which case I'd need batch methods which is something I briefly discussed with Kevin Marks at Etech last week]. There is also weighting by author that needs to be considered, for example I read everything written by Sam Ruby and Don Box. Another example is a topic that may be mundane (e.g. what I had for lunch) and something I'd never read if published by a stranger but would be of interest to me if posted by a close friend or family member.

We will definitely need a richer extensibility model so I can try out different approaches [and perhaps others can as well] before the final release. Looks like I have yet another spring and summer spent indoors hacking on RSS Bandit to look forward to. :)


 

March 20, 2005
@ 07:40 PM

This is the final release of the version formerly codenamed "Wolverine". This is the most significant release to date and has a ton of cool features. Enjoy.

Download the installer from here. Differences between v1.2.0.117 and v1.3.0.26 below.

FEATURES:

Newspaper styles: Ability to view all unread posts in feeds and categories or all posts in a search folder in a Newspaper view. This view uses templates that are in the same format as those used by FeedDemon so one can use RSS Bandit newspaper styles in FeedDemon and vice versa. One can choose to specify a particular stylesheet for a given feed or category. For example, one could use the slashdot.fdxsl stylesheet for viewing Slashdot, headlines.fdxsl for viewing news sites in the News category and outlook-express.fdxsl for viewing blog posts.

Column Chooser: Ability to specify which columns are shown in the list view from a choice of Headline, Topic, Date, Author, Comment Count, Enclosures, Feed Title and Flag. One can choose to specify a column layout for a particular feed or category. For example, one could use the layout {Headline, Author, Topic, Date, Comment Count} for a site like Slashdot but use one like {Headline, Topic, Date} for a traditional blog that doesn't have comments.

Item Deletion: News items can be deleted by either using the [Del] key or using the context menu. Deleted items go to the "Deleted Items" special folder and can be deleted permanently by emptying the folder or restored to the original feed at a later date.

Category Properties: It is now possible to specify certain properties for all feeds within a category such as how often they should be updated or how long posts should be kept before being removed.

del.icio.us Integration: Users who have accounts on the del.icio.us service can upload links to items of interest directly from RSS Bandit.

Skim Mode: Added option to 'Mark All Items As Read on Exiting a Feed'

Scoped Search: Searches can be restricted to specific feeds or categories. So now one can create searches like finding all unread messages that are a week old which contain 'Microsoft' in the title from the Slashdot, InfoWorld or Microsoft-Watch feed.

Search Folder Improvements: Made the following additions to the context menu for search folders; 'New Search Folder', 'Refresh Search', 'Mark All Items As Read' and 'Rename Search Folder'. Also deletion of a search folder now prompts the user to prevent accidental deletion

Subscribing to Web Search Results: Previous versions allowed users to search Web search engines from RSS Bandit, add search engines of their choice as well as specify whether the results were RSS or not. In this version, users can now subscribe to RSS search results after they are returned. By default, MSN Search and Feedster are installed as web search engines with RSS results.

UI Improvements: Tabbed browsers now use a multicolored border reminiscent of Microsoft OneNote.

Identities: One can create multiple personas with associated information (homepage, name, email address, signature, etc) for use when posting comments to weblogs that support the CommentAPI.

Proxy Exclusion List: Users can specify domains which should be accessed directly instead of via the proxy server when making HTTP requests

HTTP Cookie Support: We now support HTTP cookies when requesting feeds.

Delta Encoding in HTTP Support: We support the RFC3229+feed technique when downloading feeds as described at http://bobwyman.pubsub.com/main/2004/09/using_rfc3229_w.html

Better SSL Certificate Error Handling: If there is a problem with the SSL certificate of a site RSS Bandit now provides a dialog with the error information so users can make an informed decision instead of just erroring.

BUG FIXES:

* Fixed issue where a feed with an invalid XML character is encountered it fills the Feed Errors folder with repeated messages whose title begins with "Refresh feed '' failed with error:[], hexadecimal value [] is an invalid character..."

* Comments now sorted from oldest to newest

* Comments now sorted visually differentiated from posts that link to an entry

* Fixed issue where we can't get title from feed that requires username/password in the New Feeds dialog even if they are specified

* Automatic feed detection now ignore feeds a user allready subscribed to

* Fixed issue with ObjectDisposedException sometimes thrown when notification windows pop up

* Fixed issue where if the URL for a feed is changed using the Properties dialog then all old posts are deleted

* Fixed issue where WordPress comment feeds don't show up in RSS Bandit because they use wfw:commentRSS instead of wfw:commentRss

* Clicking on a category node now shows all items from feeds in nested categories as well as child feeds instead of showing items from child feeds only

* Flagged items no longer marked as unread when placed in a flagged item folder

* Fixed issue where updating a search folder's properties leads to duplicate search folders being created

* Fixed issue where errors on loading a cached feed file prevent the feed from being updated from the Web

* Fixed issue where if RSS Bandit is not yet running and you select "Subscribe in default aggregator" within the web browsers context menu or provide url's at the command line, it displays an empty category dropdown.

* URLs containing Cr/Lf no longer cause an error on startup due to a data format XML schema exception

* Locate Feed feature now recognizes Atom autodiscovery links on Blogspot blogs

* Fixed issue where startup position of main window not correct on multi-screen systems

* Fixed issue where we get a feed error when an item in the feed contains an empty slash:comments element


 

Categories: RSS Bandit

The Wolverine release of RSS Bandit has entered its final stretch; the bug count is under 15 from a high of over 50, the codebase is frozen except for critical fixes, and translations have started to trickle in. It is looking like the final version number for Wolverine will be v1.3.0.25 but don't quote me on that just yet.

Torsten and I have started talking about what we'd like to see in the following release, currently codenamed Nightcrawler. Over the next few weeks I'll be sharing some of our thoughts on where we'd like to see RSS Bandit go and eliciting feedback from our users. The first topic I have in mind is building a richer extensibility model. Torsten and Phil have discussed this issue in their blogs in the posts Fighting Ads and  Building a Better Extensibility Model For RSS Bandit respectively. As Phil wrote

Currently, the only plug-in model supported by RSS Bandit is the IBlogExtension interface. This is a very limited interface that allows developers to write a plug-in that adds a menu option to allow the user to manipulate a single feed item.

The ability to interact with the application from such a plug-in is very limited as the interface doesn't define an interface to the application other than a handle. (For info on how to write an IBlogExtension plug-in, see this article.)

Despite the limitations of IBlogExtension, it has led to some interesting plugins such as my plugin for posting links to del.icio.us from RSS Bandit.  This was actually a feature request which I fulfilled without the user having to wait for the next version of RSS Bandit. I'd like to be able to fulfill more complex feature requests without having users wait for the next version. Given the small number of IBlogExtension plugins I've seen come from our user base I'm pretty sure that it is quite likely that a richer plugin model would just end up mostly being used by Phil, Torsten and myself.  However I'd still like to get some feedback from our users about where they'd like to see more extensibility. Below are some of the extensibility points we've discussed along with usage scenarios and possible risks. I'd like to know which ones our users are interested in and would consider writing plugins with.

Feed Preprocessing

Plugins will be able to process RSS items just after they have been downloaded but before they are stored in RSS Bandit's in-memory and on-disk caches. This is basically what Torsten describes in his post Fighting Ads.

Use Case/Scenario: A user can write a plugin that assigns scores to news items according to the user's interests (e.g. a Bayesian filter) then annotates each news item with its score. For example, for me posts containing 'XML' or 'MSN Spaces' would be assigned a score of 5 while every other post could be assigned a score of 3. Then I could create a newspaper style that either grouped posts by their ranking or even filtered out posts that didn't have a certain score.

Another potential use case is pre-processing each news item to filter out ads as Torsten did in his example.  

Risks: My main concern with this approach is that badly written plugins could harm cause problems with the normal functioning of RSS Bandit. For example, if a plugin got stuck in an infinite loop it could hang the entire application since we'd never get back news items from the pre-processing step. Given that this is an instance of the halting problem I know we can't solve it in a general way so I may just have to acept the risks.

Pluggable protocols

Every once in a while, users ask for RSS Bandit to support other data formats and protocols than just RSS & Atom over HTTP. For example, I'd like us to support USENET newsgroups while I've seen a couple of requests that we should be able to support subscribing to POP3 mail boxes.

Ideally here we'd have a plugn infrastructure that allowed one to plugin both the parser and the protocol handler for a given format. The plugin would also specify the URI scheme used by the newly supported format so that RSS Bandit would know to dispatch requests using that plugin

Use Case/Scenario: In the case of USENET support the user would provide a plugin that knew how to parse messages in the RFC 822 format and how to fetch messages using NNTP. The USENET plugin would also register itself as the handler for the nntp and news URI schemes. The user could then subscribe to newsgroups by specifying a URL such as news://news.microsoft.com/microsoft.public.xml in the new feed dialog.  

Risks: Same as with Feed Preprocessing.

Hosted Winforms Applications

A user could add a .NET Winforms application  to RSS Bandit. This application would appear as a tab within the main Window and all its functionality could be used from RSS Bandit. There would also be some hooks for the application to register itself within the RSS Bandit main menu as well as mechanisms to pass information back and forth between the hosted application and RSS Bandit.

Use Case/Scenario: One would be able to host blog posting clients such as IMHO in RSS Bandit. The blog client would be distributed and updated independently of RSS Bandit.

Risks: This would be a great deal of work for questionable pay off.

Pluggable Storage

RSS Bandit currently caches feeds as RSS files on disk, specifically at the location C:\Documents and Settings\[username]\Application Data\RssBandit\Cache. It should be possible to specify other data storage sources and formats such as a relational database or Atom feeds.

Use Case/Scenario: A user can write a plugin that stores all RSS Bandit's feeds in a local Access database so that data mining can be done on the data.

Another use case is writing them to disk but in a different format than RSS. For example, one could write them to disk using the format used by another application so that the user could use both applications but have them share a single feed cache.

Risks: The same as with Feed Preprocessing.


 

Categories: RSS Bandit

February 22, 2005
@ 05:36 PM

The next release of RSS Bandit is scheduled for next month. However we've hit a bit of a snag with regards to translations to langauges other than English. We currently have translators signed up for Japanese, Simplified Chinese, Hindi, Turkish, Brazilian Portueguese, and German. The problem is that in the previous version of RSS Bandit we had translations for a larger set of languages but haven't gotten any responses from the original translators for this new version. This means the next version of RSS Bandit may not be localized in Polish, French and Russion even though the previous one was.

If you'd be interested in translating RSS Bandit to your native language or acting as a proof reader for one of our existing translations please contact us at the email address provided below.

RSS Bandit development team contact email address
 

Categories: RSS Bandit

February 16, 2005
@ 04:17 PM

From the first day we added the Search Folder feature to RSS Bandit, I've wanted to be able to create a folder that contained unread messages that are a week old which contain 'Microsoft' in the title from the Slashdot, InfoWorld or Microsoft-Watch feed. However the existing Search Folder feature did not allow you to restrict the targets of a search to particular feeds or categories. The back end code to do this has existed for a while but Torsten never got around to adding the UI for this, until yesterday. It's looking like the Wolverine release is shaping up to be the best release yet.


 

Categories: RSS Bandit

We are now feature complete for the next release of RSS Bandit. Interested users can download it at RssBandit.1.3.0.18.Wolverine.Beta.zip. All bugs specific to the previous alpha release have been fixed. The next steps for us are finish working on documentation, translations and fixing any bugs that are reported during the beta with the intention of shipping a final release in the next two weeks.

Check out a screenshot of the Wolverine Beta which shows some of the new features such as newspaper styles and the additional columns in the listview. The major new features are listed below but there are couple of minor ones such as proxy exclusion lists and better handling of SSL certificate issues which aren't listed. There will be a comprehensive list of bug fixes and new features in the announcement for the final release.

NEW FEATURES (compared to v1.2.0.117)

  • Newspaper styles: Ability to view all unread posts in feeds and categories or all posts in a search folder in a Newspaper view. This view uses templates that are in the same format as those used by FeedDemon so one can use RSS Bandit newspaper styles in FeedDemon and vice versa. One can choose to specify a particular stylesheet for a given feed or category. For example, one could use the slashdot.fdxsl stylesheet for viewing Slashdot, headlines.fdxsl for viewing news sites in the News category and outlook-express.fdxsl for viewing blog posts.  

  • Column Chooser: Ability to specify which columns are shown in the list view from a choice of Headline, Topic, Date, Author, Comment Count, Enclosures, Feed Title and Flag. One can choose to specify a column layout for a particular feed or category. For example, one could use the layout {Headline, Author, Topic, Date, Comment Count} for a site like Slashdot but use one like {Headline, Topic, Date} for a traditional blog that doesn't have comments.

  • Category Properties: It is now possible to specify certain properties for all feeds within a category such as how often they should be updated or how long posts should be kept before being removed. 

  • Identities: One can create multiple personas with associated information (homepage, name, email address, signature, etc) for use when posting comments to weblogs that support the CommentAPI.

  • del.icio.us Integration: Users who have accounts on the del.icio.us service can upload links to items of interest directly from RSS Bandit.  

  • Skim Mode: Added option to 'Mark All Items As Read on Exiting a Feed' 

  • Search Folder Improvements: Made the following additions to the context menu for search folders; 'New Search Folder', 'Refresh Search', 'Mark All Items As Read' and 'Rename Search Folder'. Also deletion of a search folder now prompts the user to prevent accidental deletion

  • Item Deletion: News items can be deleted by either using the [Del] key or using the context menu. Deleted items go to the "Deleted Items" special folder and can be deleted permanently by emptying the folder or restored to the original feed at a later date.

  • UI Improvements: Tabbed browsers now use a multicolored border reminiscent of Microsoft OneNote.

POSTPONED FEATURES (will be in the NightCrawler release)

  • NNTP Support
  • Synchronizing state should happen automatically on startup/shutdown
  • Applying search filters to the list view 
  • Provide a way to export feeds from a category

 

Categories: RSS Bandit

Coincidentally just as I finished reading a post by Tim Bray about Private Syndication, I got two bug reports filed almost simultaneously about RSS Bandit's support for secure RSS feeds. The first was SSL challenge for non-root certs where the user complained that instead of prompting the user when there is a problem with an SSL certificate like browsers do we simply fail. One could argue that this is the right thing to do especially when you have folks like Tim Bray suggesting that bank transactions and medical records should be flowing through RSS. However given the precedent set by web browsers we'll probably be changing our behavior. The second bug was that RSS Bandit doesn't support cookies. Many services use cookies to track authenticated users as well as provide individual views tailored to a user. Although there are a number of folks who tend to consider cookies a privacy issue, most popular websites use them and they are mostly harmless. I'll likely fix this bug in the next couple of weeks.  

These bug reports in combination with a couple more issues I've had to deal with while writing  code to process RSS feeds in RSS Bandit has givn me my inspiration for my next Extreme XML column. I suspect there's a lot of mileage that can be obtained from an article that dives deep into the various issues one deals with while processing XML on the Web (DTDs, proxies, cookies, SSL, unexpected markup, etc) which uses RSS as the concrete example. Any of the readers of my column care to comment on whether they'd like to see such an article and if so what they'd want to see covered?


 

Categories: RSS Bandit | XML

The folks behind FeedBurner have a blog post about RSS Market Share which discusses the distribution of aggregators they see polling their most popular feeds. They write

...RSS Client market is not yet consolidating, it's expanding. There were 409 different clients polling the top 800 FeedBurner feeds in September and now there are 719 different clients. FeedBurner actively catalogs the behavior and specifications for hundreds of these user-agents...

...This list is heavily skewed toward aggregators used on blog feeds, since most of our feeds are from blogs. This list might read quite differently for more traditional media feeds such as Reuters, NYT, CNET, etc. On a similar theme, individual publishers will notice that the overall market share may be wildly different from their own feed's market share. Simply removing our top 10 feeds from this data results in a wildly different market share list, possibly because of clients that ship with one or more of our top 10 feeds as a default. All of this pointing to the caution not to read too much into this single data point. We could make qualifications about everything on the list. Your mileage may vary, caveat emptor, mea culpa, c'est la vie..

Top 20 RSS clients across FeedBurner most highly subscribed 800 feeds as of January 6, 2005

Aggregator Name (Market Share Percentage)
1. Bloglines (32.86%)
2. NetNewsWire (16.95%)
3. Firefox Live Bookmarks (7.78%)
4. Pluck (7.20%)
5. NewsGator Online(4.45%)
6. (not identified) (4.07%)*
7. FeedDemon (3.83%)
8. SharpReader (3.27%)
9. My Yahoo (2.58%)
10. iPodder (2.42%)
11. NewsGator (2.23%)
12. Thunderbird (2.13%)
13. RSS Bandit (1.12%)
14. NewsFire (1.05%)
15. iPodderX (1.02%)
16. Sage (0.71%)
17. FeedReader (0.67%)
18. RssReader (0.54%)
19. LiveJournal (0.46%)
20. Opera RSS Reader (0.45%)

Although interesting, their numbers probably aren't reflective of the reality of the RSS aggregator market share. LiveJournal has over 5 million accounts with at least half of them being active users. I suspect there are far more people using their LiveJournal friends page as an RSS aggregator than the entire top 10 list combined.

However this does bring up a question I've been considering for a while. What should be the default feeds in an RSS Bandit installation? Besides the various RSS Bandit feeds we also subscribe the user to the RSS feeds for Microsoft Watch, Yahoo! News, BBC, Rolling Stone, Slashdot, Boing Boing and InstaPundit. I've been considering removing a few of these feeds such as InstaPundit since I don't read it regularly but the one or two times I've read it I didn't think much of it. I've also considered adding more blogs I read such as Robert Scoble or Dave Winer.  

Given that RSS Bandit is moderately popular with about 50,000 downloads of the most recent version and about 130,000 total downloads over the past year I'm sure we'd be contributing a decent amount of readership to whatever feeds we install as default. Therefore I'd like some ideas from our users on what you think the best mix of feeds should be for folks installing RSS Bandit for the first time which in certain cases may be their first RSS aggregator.


 

Categories: RSS Bandit

An RSS Bandit user has created the RSS Bandit Flagged Item Merge Utility. The description of its usage states

If you use RSSBandit as your feedreader, you've probably used the Flag Item feature to store interesting articles for future access. However, if you use RSSBandit on multiple computers, your flagged item lists aren't synchronized. While you could upload your data to a central location, I find it more convenient to use a USB Memory Stick to keep these flagged item lists. I wrote this utility to synchronize from various lists to your main list. Get it here.

Usage: Select your main flagitems.xml file as the RSS Bandit Flag File and the file you want to merge into it as the Import File and hit Start. The application will display the items that it imported successfully or failed.

Although it is quite cool to see people writing tools to work with RSS Bandit, the fact is that you can already get this functionality out of RSS Bandit without resorting to tools. One of the options in the Remote Storage tab of the Tools->Options menu is 'File Share'. Although this option states that it only works on network shares it also works on local drives as well. So this means you can select an external drive such as "H:\" or whatever drive letter the USB keychain maps to and then synchronize with that.

That way all you need to synchronize RSS Bandit between two machines would be your USB keychain. I guess this means we should probably update the text of that dialog to explain that it's actually any drive not just network shares.


 

Categories: RSS Bandit

As promised in the RSS Bandit roadmap, the preview of the next version of RSS Bandit is now available for general download. You can now download it at RssBandit.1.3.0.12.Wolverine.Alpha.zip.

NEW FEATURES THAT WORK

  • Newspaper styles: Ability to view all unread posts in a feed in a Newspaper view. This view uses templates that are in the same format as those used by FeedDemon so one can use RSS Bandit newspaper styles in FeedDemon and vice versa.

  • Per feed newspaper styles: Ability to specify a particular stylesheets for a given feed. For example, one could use the slashdot.fdxsl stylesheet for viewing Slashdot, headlines.fdxsl for viewing news sites and outlook-express.fdxsl for viewing blog posts.

  • Skim Mode: Added option to 'Mark All Items As Read on Exiting a Feed' 

  • Search Folder Improvements: Made the following additions to the context menu for search folders; 'New Search Folder', 'Refresh Search', 'Mark All Items As Read' and 'Rename Search Folder'. Also deletion of a search folder now prompts the user to prevent accidental deletion

  • Item Deletion: News items can be deleted by either using the [Del] key or using the context menu. Deleted items go to the "Deleted Items" special folder and can be deleted permanently by emptying the folder or restored to the original feed at a later date.

  • UI Improvements: Tabbed browsers now use a multicolored border reminiscent of Microsoft OneNote.

  • Limited NNTP Support: Ability to add a news server via the Tools->Newsgroups menu items. Once added the available news groups on that news server can be queried.

NEW FEATURES THAT DON'T WORK

  • Subscribing to newsgroups
  • Ability to filter items in list view by some search parameters
  • Option of automatic upload/download of RSS Bandit state for synchronization purposes 
  • Column chooser to enable users pick what columns show up in the list view.

For a detailed log of the differences between the Wolverine alpha and v1.2.0.117 check out the RSS Bandit changelog


 

Categories: RSS Bandit

While taking a lunch break I decided to finish up implementing full support for FeedDemon newspapers in RSS Bandit. With my checkin a few minutes ago it is now possible to use the various custom newspaper styles for FeedDemon in RSS Bandit and vice versa. More importantly one can now view all items in a feed at once in the reading pane instead of just reading them one at a time.

Actually that is incorrect.

My goal was that one should be able to view all items in a feed in the newspaper view. However it seems I hit some performance issues using the System.Xml.Xsl.XslTransform class in the .NET Framework. Applying a newspaper view on 3 months of posts in a high traffic feed such as the InfoWorld feed took 10 to 15 seconds to display which was a bit too long especially since other tasks would be going on in the background at the same time which would make it take even longer. So the compromise I reached was that clicking on the a feed node in the tree view shows only the unread posts in the newspaper view. Below are links to screenshots of various newspaper views running in RSS Bandit

  1. Outlook 2003 (RSS Bandit style)
  2. PopBox Blue (FeedDemon style)
  3. Headlines (FeedDemon style)
  4. Sticky Notes (one of Radek's FeedDemon styles)

One thing I've noticed is that different feeds tend to benefit from different styles. For example, I'd prefer to read news sites like Wired or Slashdot with the Headlines style while I'd rather read traditional blogs with a style closer to Sticky Notes or PopBox Blue. This should be a fairly straightforward feature to add and the infrastructure code already exists. The question is whether any user besides me will utilize all this configurability. :)

There is also the feature that FeedDemon has where clicking on a ".fdxsl" file from within the application automatically downloads and installs the style. Although convenient this seems like a security issue. This would mean that the file would be written to “C:\Program Files\RssBandit\templates” which may require running as Administrator. If we keep this feature we might have to move the templates to a user specific folder. What do you RSS Bandit users think?


 

Categories: RSS Bandit

When I first started working on RSS Bandit I wanted an application that looked and acted as much like Microsoft Outlook as possible. Two years and over a hundred thousand downloads latter I realize that there are a number of drawbacks to using this model for reading feeds [or any information for that matter]. Mike Torres describes some of these reasons in his post Why I dig Bloglines, he writes

Part of the problem for me is that applications that look and feel like Microsoft Outlook tend to make me feel like I am working, and I am immediately in "information overload" mode (we get hundreds of pieces of email each day at Microsoft.)  Catching up with friends, reading Scripting.com, or checking out Engadget shouldn't be tedious.  But for some reason, it was.  Until I switched to Bloglines.
...
Anyway, here is what I like about Bloglines:

...
  • I can scan dozens of feeds in less than a minute.  With NewsGator for Outlook and other Outlook-style interfaces, it just simply took longer.  Probably because Bloglines shows me the feed in the way it is supposed to be presented - reverse chronological order on a single page.  Not as individual messages that I have to click through. 
...

This is the bane of the current information viewing model paradigm favored by email and newsgroup readers which many RSS aggregators have decided to inherit. The major problem is that the Outlook mail reading paradigm has a fundamental assumption which turns out to be flawed. It assumes you want to read every item you get in your inbox. This flawed assumption leads to the kind of information overload that hampers the productivity of lots of people I know at work. I've met several people who seem to always have hundreds unread items in their email inbox. For this reason I always have to learn who's easier to reach via IM or swinging by their office in person than sending them mail.

Most people I know get four classes of messages in their information aggregators (I am lumping reading email, reading news and reading RSS/Atom feeds into a single category). These are

1. notifications (checkin mails, comments to my blog, etc)
2. headlines (email newsletters, feeds from news sites, etc)
3. messages sent directly to me or that is similarly relevant
4. messages sent to an interest group I am a part of (XML-DEV mailing list, comp.text.xml newsgroup, etc)

The problem is that the typical Outlook inspired information aggregator treats all of the above as being of equal relevance. Even though Outlook does provide mechanisms for managing assigning relevance to incoming messages, they are either hard to find or cumbersome to use.

This is definitely one of the areas that needs to be improved in the world of information aggregators in general and RSS/Atom readers in particular. There are a number of features that I'm working on for the next version of RSS Bandit aimed at making it easier for people to consume information from various sources in a flexible manner according to what relevance they place on the information source.


 

Torsten has been hard at work on the UI for managing newsgroups in the next version of RSS Bandit. Below is a screenshot of what is currently checked into CVS. We'd love to hear any comments you have.

For example, the View menu behaves like a tabbed pane but we decided against tabs for some technical reasons. Is this confusing? Also I've suggested that we change the buttons on the top left named 'Identity' and 'News Server' to 'Add Identity' and 'Add News Server' to separate the fact that those buttons perform actions while the ones on the right act more like tabs in a tabbed pane. Agree? Disagree?

Speaking of which I need to test the code that handles binary attachments so if you know any public news servers that allow you to subscribe to binary newsgroups, let me now. Unfortunately there aren't any binary newsgroups on news.microsoft.com.


 

Categories: RSS Bandit

November 26, 2004
@ 05:52 PM

This morning I updated the RSS Bandit road map. Mostly we punted a bunch of low priority features to a future release codenamed 'Nightcrawler'. We also took one or two features out of the 'Wolverine' release. The current plan is to ship a beta of 'Wolverine' next month with the big features being the ability to delete items, newspaper views that are 100% compatible with FeedDemon Newspapers and being able to read & post to USENET newsgroups. Afterwards a final version will show up at the end of January or early in February at the latest.

There are also dozens of bug fixes in the 'Wolverine' release. Thanks a lot to the numerous users who took the time to submit bug reports and have been patiently waiting for a release with their fixes. We are now approaching the end game, a lot of the hard work's been done in the underlying infrastructure and the rest of the work left is fairly straightforward.


 

Categories: RSS Bandit

I was procrastinating this morning from doing any real work and stumbled on a feature request in the RSS Bandit feature request database on Sourceforge requesting that we support adding links to http://del.icio.us from RSS Bandit. For those who are unfamiliar with the site, del.icio.us is a social bookmarks manager. It allows you to easily add sites you like to your personal collection of links, to categorize those sites with keywords, and to share your collection not only between your own browsers and machines, but also with others

Since RSS Bandit supports the IBlogExtension plugin interface I thought it would make more sense to implement this as a plugin that should just work in any .NET Framework based RSS aggregator that supports it. It took about two hours to put it together and now you can simply drop the DeliciousPlugin.dll file in the plugin folder of RSS Bandit, SharpReader or NewsGator and get the ability to post item links to http://del.icio.us.  

Download it from here: DeliciousPlugin.zip

Configuration
The first thing you have to do is configure the plugin by specifying your username and password. There is also the option of changing the del.icio.us API URL which isn't needed at the current time. The only reason that is there is because the del.icio.us API documentation states that the URL will change in the near future. The screenshots below should show how what this looks like

and this is the configuration dialog

Posting Links
The dialog box for posting enables you to edit the URL, description and associated tags before submitting to the site. If any of these fields isn't filled then this is considered an error and no submission is made. Below is a screenshot of the post dialog.

Known Issues
There seems to be a problem posting URLs that contain the '#' character. The website accepts the links without error but they don't show up in your inbox. I'd appreciate any pointers from anyone who can tell me what I did wrong.


 

Categories: RSS Bandit

I checked in the basic infrastructure for adding support for deleting items in RSS Bandit this weekend and Torsten made a first pass at the UI. The screenshot below shows the feature as currently checked into CVS. The main pieces left are to ensure that this works smoothly with synchronization so that if I sync from home my work instance of RSS Bandit knows which items I deleted while at home.


 

Categories: RSS Bandit

There was a recent posting on the RSS Bandit bug forum entitled Weblog comments do not appear in listview where the author wrote

I use Wordpress to generate my site feed (http://www.chaoszone.org/index.xml). Wordpress supports wfw:commentRSS, but RSS Bandit is unable to show comments for posts in this feed inside the listview (the way it does for Dare's and other MSDN weblogs). Instead, I have to click through to go to the comments page.

I've since tweaked the basic Wordpress RSS2 generator routine to include slash:comments -- a temp feed is available here: http://www.chaoszone.org/rss-with-slashcomments.xml

Since the element in question is supported by RSS Bandit and I can view comments just fine in any dasBlog or Community Server::Blogs (formerly .TEXT) weblog I assumed this was a bug in WordPress. Eventually I tracked down the problem to an issue of capitalization.

The element in question is called wfw:commentRss in Chris Sells' original specification but incorrectly transcribed as wfw:commentRSS in Joe Gregorio's list of the wfw namespace elements. Since it looks like at least one blog tool uses the latter capitalization the next version of RSS Bandit will support both versions of the element. This means that comments to blog posts on WordPress-based blogs will now show up in the next version of RSS Bandit.


 

Categories: RSS Bandit

I've been watching the hype about podcasting with some wariness but it looks like it is here to stay. I just noticed that Greg Reinacker (NewsGator) and Nick Bradbury (FeedDemon) have announced that they will have better support for RSS 2.0 enclosures and thus podcasting. This weekend I also started the roots of getting podcasting support into RSS Bandit, Torsten will likely finish this work once he is done with the GUI for NNTP newsgroup support.

Speaking of podcasting and RSS 2.0 enclosures, I agree 100% with Joshua Allen's points in his post, History of Podcasting. He wrote

Dave Winer doesn't want to end up like Eric Bina, written out of the history of a creation he helped usher into reality.  Adam steps up to make sure Dave gets credit.  This time, there is less reason to worry.  First, the WWW (which Eric helped enable) is now an independent and democratic public record which can triangulate the major media.  And blogs, which Dave helped enable, are one source of that public record.  The public record shows that Dave was planning “Radio” via RSS for a very long time.  Dave has talked about these ideas for a long time, but I have to admit that I wasn't quite prepared for how fast it would actually happen.  I believe credit goes to Adam for such a fast and effective bootstrap, but it also proves that all of the work on RSS laid a good foundation for quick incremental innovation.  

I also think that one of the major success factors was that the nattering nabobs ignored podcasting and dismissed it until it was too late to inject their stop energy.  Many of the nabobs were so convinced of their own stories about “RSS is broken”,  that it never occured to them that something like podcasting could be successful.  They were so busy trying to reinvent RSS that they ignored an idea that Dave has been giving away for free for years. 

There's a lot of innovation and interesting end user applications that can be built on RSS today. However many XML syndication geeks are prideful and would rather reinvent the wheel than use existing technology to solve real world problems.


 

October 28, 2004
@ 06:00 PM

Most people looking for a free RSS reader on Windows tend to gravitate towards SharpReader since it is the most popular one on Windows and the first they hear about. Recently I've begin to see more posts from people who've grown tired of its limited feature set and plain user interface that have switched to RSS Bandit.

In his post Vote With Your Download Dave writes

For the longest time I’ve used Sharpreader as my RSS reader. I had had some problems about which I contacted the SharpReader people. I think I sent two e-mails but never got a response. So I started looking.

I found RSS Bandit and I’m all about it now. I like the interface a little better and it’s got lots of nifty features that SharpReader doesn’t. (screenshots are here). So since both of these are free, and RSS Bandit is Open Source even, I can Vote with my download.

In his post RssBandit is awesome!  Imran Koradia writes

I've been using SharpReader for a while since that's the first one that turned up in google's search results on searching for an rss reader :) ! And considering I'm really lazy switching utility software even when it would seem the most logical thing to do, I've stayed on SharpReader for a while until yesterday. I finally switched to RssBandit. Not that SharpReader is bad, but RssBandit is more feature rich and looks way cooler than SharpReader :) I love the tabs that they've got since IE doesn't have them (which is the only reason why I switched to Netscape - I have no problems with IE as such otherwise..). Ofcourse, I could also use the local MSDN help to browse with multiple tabs but that somehow doesn't seem like a good idea to me..

We will be adding a lot more features and eye candy in the next release. There are one or two things SharpReader does that RSS Bandit doesn't such as the ability to delete posts which I'll be adding to RSS Bandit this weekend.  If you liked the last release then the next one will rock your world. I can't wait. ;) 


 

Categories: RSS Bandit

As has been pointed out by others you can read your GMail inbox in any Atom-enabled aggregator that supports secure feeds. I just subscribed to my GMail inbox in RSS Bandit and it worked like a charm. Screenshot below.


 

Categories: RSS Bandit

Looking at the monthly download statistics for RSS Bandit I see that there were over 20,000 downloads for the month of September and we've hit over 100,000 total downloads [across all versions] since the project moved to SourceForge last December.

Thanks to everyone out there using RSS Bandit especially those who've been providing us feedback on how to make it an even better aggregator. You guys rock.

If you are a new user don't forget to read the RSS Bandit Product Roadmap and tell us what you think.


 

Categories: RSS Bandit

In recent times I've been pitching the concept of a digital information hub to various folks at work.  Currently people have multiple aplications for viewing and authoring messages. There are instant messengers, email clients, USENET news readers and RSS/Atom aggregators. All of these applications basically do the same thing; provide a user interface for authoring and viewing messages sent by one or more people to the user.

Currently the split has been based on what wire protocol is used to send and receive the messages. This is a fairly arbitrary distinction which means little to non-technical users. The more interesting distinction is usage patterns. For all of the aforementioned application types messages really fall into two groups; messages I definitely will  read and messages I might want to read. In Outlook, I have messages sent directly to me which I'll definitely read and messages on various discussion lists I am on [such as XML-DEV] which I might want to read if the titles seem interesting or relvant to me. In Outlook Express, there are newsgroups where I read every message and others where I skim content looking for titles that are of interest or are relevant to me. In RSS Bandit, there are feeds where I read every single post (such as Don's or Joshua's blogs) and those where I skim them looking for headlines (e.g. Blogs @ MSDN). The list goes on...

The plan I've had for RSS Bandit for a while has been to see if I can evolve it into the single application where I manage all messages sent to me. Adding NNTP support is a first step in this direction. Recently I realized that some other folks have realized the power of the digital information hub; Google.

However Google has decided to bring the mountain to Mohammed. Instead of building an application that manages messages sent via all the different protocols in a single application they've decided to expose the major classes of messages as Atom feeds. They already provide Atom feeds for weblogs hosted on Blogger. Recently they've experimented with Atom feeds for USENET groups as well as Atom feeds for your GMail account. This means instead of one application being your digital information hub, any Atom savvy client (such as RSS Bandit) can now hold this honor if you use Google as your online content provider.

This is very, very interesting. I'm beginning to really like Google.


 

Categories: RSS Bandit | Technology

September 29, 2004
@ 08:33 AM

The Bloglines press release entitled New Bloglines Web Services Selected by FeedDemon, NetNewsWire and Blogbot to Eliminate RSS Bandwidth Bottleneck has this interesting bit of news

Redwood City, Calif.--September 28, 2004 -- Three leading desktop news feed and blog aggregators announced today that they have implemented new open application programming interfaces (API) and Web Services from Bloglines (www.bloglines.com) that connect their applications to Bloglines' free online service for searching, subscribing, publishing and sharing news feeds, blogs and rich web content. FeedDemon (www.bradsoft.com), NetNewsWire (www.ranchero.com), and Blogbot (www.blogbot.com) are the first desktop software applications to use the open Bloglines Web Services.

Bloglines Web Services address a key issue facing the growing RSS market by reducing the bandwidth demands on sites serving syndicated news feeds. Now, instead of thousands of individual desktop PCs independently scanning news sources, blogs and web sites for updated feeds, Bloglines will make low-bandwidth requests to each site on behalf of the universe of subscribers and cache any updates to its master web database. Bloglines will then redistribute the latest content to all the individuals subscribed to those feeds via the linked desktop applications -- FeedDemon, NetNewsWire or Blogbot -- or via Bloglines' free web service.
...
Bloglines Web Services Enable Synchronization for Desktop News Aggregators "Our customers have been looking for the ability to synchronize their feed subscriptions across multiple computers," said Nick Bradbury, founder of Bradbury Software and creator of FeedDemon, the leading RSS aggregator for Windows. "By partnering with Bloglines, we are now able to offer the rich desktop functionality FeedDemon customers have come to expect, with the flexible mobility and portability of a web service."

There are two aspects of this press release I'm skeptical about. The first is that having desktop aggregators fetch feeds from Bloglines versus the original sources of the feeds somehow "eliminates the RSS bandwidth bottleneck". It seems to me that the Bloglines proposal does the opposite. Instead of thousands of desktop aggregators fetching tens of thousands to hundreds of thousands of feeds from as many websites instead it is proposed that they all ping the Bloglines server. This seems to be creating a bottleneck to me, not the other way around.

The second aspect of the proposal is that I call into question is the Bloglines Sync API. The information on this API is quite straightforward

The Bloglines Sync API is used to access subscription information and to retrieve blog entries. The API currently consists of the following functions:

  • listsubs - The listsubs function is used to retrieve subscription information for a given Bloglines account.
  • getitems - The getitems function is used to retrieve blog entries for a given subscription.

All calls use HTTP Basic authentication. The username is the email address of the Bloglines account, and the password is the same password used to access the account through the Bloglines web site.

I was interested in using this API to round out the existing feed synchronization support in RSS Bandit. In current versions a user can designate a file share, WebDAV server or FTP server as the central location for synchronizing multiple instances of RSS Bandit. I investigated what it would take to add Bloglines as a fourth synchronization point after reading the aforementioned press release and came to the conclusion that the API provided by Bloglines falls short of providing the functionality that exists in RSS Bandit today with the other synchronization sources.  

The problems with the Bloglines Sync API include

  1. The Bloglines Sync API only allows clients to retrieve the subscribed feeds. The user has to login to the Bloglines site to perform feed management tasks like adding, deleting or modifying the feeds to which they they are subscribed.
  2. No granular mechanism to get or set the read/unread state of the items in the users feed list. 

These limitations don't make using the Bloglines Sync API a terribly useful way for synchronizing between two desktop aggregators. Instead, it primarily acts as a way for Bloglines to use various desktop aggregators as a UI for viewing a user's Bloglines subscriptions without the Bloglines team having to build a rich client application.

Thanks, but I think I'm going to pass.


 

In the comments to my recent blog post RSS Bandit Gets Around Phil Weber asked Dare: In addition to manual deletion, please consider offering an option to "Automatically delete posts older than X days." Flagged posts should not be auto-deleted. Thank you! This functionality already exists in RSS Bandit. You can set it on a per feed level and have a global default setting as well. The user interface for it is misleading which is probably why most people don't know it exists. The fields called "Max Item Age" and "Default Maximum Item Age" should actually be labelled as "Delete Items Older Than" instead. I'll probably change the text in the code after posting this blog entry. Click below to see screenshots of this feature.
 

Categories: RSS Bandit

September 14, 2004
@ 08:35 AM

I installed Windows 2003 Server on the machine that this weblog runs on this morning. This should get rid of those pesky "Too Many Users" errors due to connection limits in Windows XP Professional which was the previous OS on the machine. It took me all day to figure out how to give ASP.NET write permissions for my weblog so if you attempted to post a comment in the past 24 hours and got an error message I apologize. Things should be fine now.

 


 

Categories: Ramblings | RSS Bandit

September 10, 2004
@ 05:29 PM

In a post entitled Report From the Intel Community Tim Bray writes

This has nothing to do with a California chip maker. Rather, its about a trip I recently took to a conference called Intelink, where the people gather who run one of the worlds biggest and most interesting intranets; the one that serves the community of U.S. Intelligence professionals
...
I was amused to note that on one of the sub-intranets distinguished by being loaded with particularly ultra-secret stuff, they were offering RSS Bandit for the people to download and use.

That's an awesome endorsement. I'm always surprised by the people I find using RSS Bandit whether it is a bunch of U.S. intelligence professionals or high school girls from Singapore. There's a lot that still needs to be done to make consuming information from syndication feeds a truly optimal experience but RSS Bandit gets closer to what I see as the ideal each day. The big focus for the next release will be making it easier to organize, locate and manage information within the aggregator.

Speaking of positive endorsements, here's one on the memory usage characteristics of RSS Bandit from Wesner Moise in his post NET vs Native Performance

The working set for SharpReader is 30Mb, FeedDemon is 23 Mb, and RSS Bandit is 4 Mb in their initial configuration on my machine. (In comparison, the working set for MS Word and MS Excel are about 18 Mbs.) So, actually in their bare configuration, RSS Bandit is the tightest of them all, even considering that RSS Bandit also uses the .NET runtime. However, the working set of .NET applications have a significantly higher variance than native applications. While RSS Bandit was idle, I watch the working set figures initially progress to 13 MBs, then in an instant fall down to 6.5MB, as it appears a collection has occurred. The working set oscillated in an ever narrowing range (down to a range between <3Mb to 6Mb) that apparently reflected dynamic tuning by CLR. Native applications, in contrast, normally have zero variance in working set during idle.

The contrast between SharpReader and FeedDemon is more a reflection of the difference between a free application written as a hobby and a professionally written commercial application, and less as a indicator of Delphi's inherent performance advantage over C#. Performance issues with NewsGator, an Outlook-based reader, which I believed is managed, are likely due to the very high overhead and poor performance of OLE automation in general.

The biggest performance issues with RSS Bandit are memory usage and slowdown when performing IO intensive operations like loading feed files from disk on startup or downloading lots of feeds for the first time. There are many approaches we've considered for resolving the memory issues. The first thing we will do is the easiest, making it possible for people to delete posts from feeds they are subscribed to. This would lead to less news items being held in memory when the application is running this reducing memory consumption.

I've also considered creating a 'memory lite' mode where some memory intensive features are disabled to reduce the memory usage of the application but the few people I've talked this over with have mentioned that memory usage has not been enough of a problem to forego features.


 

Categories: RSS Bandit

If you use RSS Bandit and recently installed .NET Framework 1.1 SP1 you may have noticed that you started getting errors of the form

Refresh feed 'SomeCategory\SomeFeed' failed with error: The underlying connection was closed: The server committed an HTTP protocol violation.

This is due to changes made to the System.Net.HttpWebRequest class to make it more compliant to the HTTP specification. For example, it now errors when fetching the Microsoft Research feeds because the web server returns the Content-Location header as "Content Location" with a space. The fix is straightforward and involves placing the following element as a child of the configuration element within the rssbandit.exe.config file in the C:\Program Files\RssBandit folder.

<system.net>
 <settings>
  <httpWebRequest useUnsafeHeaderParsing="true" />
 </settings>
</system.net>

This is also taken care of by v1.2.0.117 of RSS Bandit. When running it detects whether this option is available and enables it automatically so you don't have to mess around with XML configuration files.


 

Categories: RSS Bandit

Yesterday I installed .NET Framework v1.1 service pack 1 and it messed up my ASP.NET permissions. I decided to use this opportunity to kill two birds with one stone. My weblog is currently hosted on my Windows XP machine using IIS meaning that there are several limitations on the web server. The limitation on number of connections means several times during the day people get "Too Many Users" errors when connecting to this website.

I decided to install Apache and try out Movable Type 3.1. That led to a wasted morning trying to install various Perl modules. I tried some more when I got back from work and eventually gave up. Torsten gave me some tips this morning which fixed my ASP.NET permissions and my weblog is back up.

In the mean time it turns out that the v1.2.0.114 SP1 installer for RSS Bandit turns out to have had a number of  issues. If you're an RSS Bandit user please upgrade to v1.2.0.117.


 

Categories: Ramblings | RSS Bandit

August 31, 2004
@ 05:52 AM

This release fixes a number of bugs in v1.2.0.114. Major features will show up in the next release as described in the RSS Bandit product roadmap.

Download the installer from here.  Differences between v1.2.0.117 and v1.2.0.114 below.

UPDATE: v1.2.0.117 replaces v1.2.0.114 SP1

  • FEATURE: French translation added.

  • FEATURE: Double clicking on an item in the list view opens the link in a new browser tab.

  • FIXED: In certain situations RSS Bandit crashes with the following error message 'StartMainGui() exiting main event loop on exception.'

  • FIXED: Mouse wheel now supported in embedded Web browser pane.

  • FIXED: Changing the maximum item age for a feed does not refresh the feed and download old items still available in the feed.

  • FIXED: Synchronizing feed lists caused exceptions if categories were renamed, moved or deleted.

  • FIXED: Feeds that use 302 redirects with relative URIs as the location no longer result in 'Unsupported URI format' errors

  • FIXED: Fetching feeds behind a proxy no longer results in 'The remote server returned an error: (407) Proxy Authentication Required.' when the feed references a DTD

  • FIXED: Duplicate entries when the title of an item changes

  • FIXED: Relative URIs in images and links show up with about:blank as their base URI for certain XSLT templates.

  • FIXED: Space bar sometimes does not always move to the next unread item

  • FIXED: Environment variables are not accepted within Options|Remote Storage configuration protocol "File Share"

  • FIXED: Toolbars don't remember that their visible state on restart when RSS Bandit closed via system tray context menu

  • FIXED: Feeds returning HTTP 410 status code now disabled automatically and report the error "The requested resource is not longer available"


 

Categories: RSS Bandit

August 22, 2004
@ 02:53 AM

It seems a number of people are now using RSS Bandit v1.2.0.114 SP1 release candidate 1 and so far it doesn't seem like we've gotten any reports of crashing related to opening new browser tabs which plagued v1.2.0.114. However there are some bugs, in changing the feed parsing code to use less memory I ended up introducing a bug where Atom 0.3 feeds are no longer updated. This bug has since been fixed along with a few others. Torsten and I will likely produce a release candidate 2 next weekend.

The progress on the Wolverine release is slow and steady. We recently had to reorganize the code due to my pending addition of NNTP support to make the names and behaviors of certain internal classes less focused on RSS and more on processing news items be they RSS items, Atom entries or USENET posts. I should be checking in the infrastructure for NNTP support by the middle of next week. Once that is done the next major piece of work will be adding the ability to delete posts which is made trickier by the fact that we have to make sure that information is passed along when synchronizing instances of RSS Bandit. 

Now that Hotmail has begun to deliver on the announced 250MB of space for free users it is seeming more and more attractive to add Hotmail as a synchronization source for RSS Bandit users. It would be very cool if all you had to do was enter your Hotmail username and password then RSS Bandit simply used one of your Hotmail folders for synchronizing between instances without requiring you to setup an FTP or WebDAV server as is currently needed. I've talked to some people who work in the MSN/Passport part of MSFT such as Omar Shahine, Joshua Allen and Julien Couvreur about the feasibility of using Hotmail in this way from a .NET Framework application. They all implied it won't be easy. Since I spoke to them I've found an an article about talking to Hotmail from C# and a spec for the HTTPMail protocol which Outlook Express uses to talk to Hotmail. It probably won't be easy but it doesn't look like it'll be too hard either.

Back to coding.


 

Categories: RSS Bandit

According to the RSS Bandit Product Roadmap there should is a service pack for the current version of RSS Bandit scheduled for release at the end of the summer. The primary issues that  will be fixed by the service pack are

  1. There is a memory corruption bug that manifests itself by RSS Bandit crashing with the following error message, StartMainGui() exiting main event loop on exception.
  2. When RSS Bandit is configured to use proxy settings from Internet Explorer sometimes downloading certain feeds fails with the error (407) Proxy authentication required even though one can access these feeds directly using a web browser with no problem

There are also a number of smaller bug fixes such as better mouse wheel support and no longer producing duplicate entries when the title of an entry changes in the RSS feed. If any of these problems have affected you then download RssBandit1.2.0.114SP1_RC1.zip and give us feedback on whether these issues have been fixed or not.

I've started working on the Wolverine release more. The first thing I'll be implementing is NNTP support. So far I've figured out how to list newsgroups on a server, fetch posts, post responses aand the like. One of the questions I'm interested in users answering is whether newsgroups should be put in a seperate category from feeds in the tree view or whether we shouldn't differentiate between newsgroups and feeds in the tree view so one could have a category that contained both feeds and news groups. I'm also interested in finding public NNTP servers so I don't end up coding against just the pecularities of the news.microsoft.com server.


 

Categories: RSS Bandit

July 25, 2004
@ 12:30 AM

Recently there have been some complaints about duplicate entries showing up in RSS Bandit. This is due to a change I made in the most recent version of RSS Bandit. In RSS 2.0 there is an optional guid element that can be used to uniquely identify an item in an RSS feed. Unfortunately this element is optional so most aggregators end up using the link element instead in feeds that don't use guids. 

For the most part this worked fine. However I stumbled across a feed that used the same link for each item from a given day; the Cafe con Leche RSS feed. This meant that RSS Bandit couldn't differentiate between items posted on the same day. This was particularly important when tracking what items a user has read or whether an item has already been downloaded or not. I should have pinged the owner of the feed to point this problem out but instead I decided to code around this issue by using the combination of the link and title elements for uniquely identifying items. This actually turned out to be worse.

Although this fixed the problems with the Cafe con Leche RSS feed it caused other issues. This means that any time an item in a feed changed its title but kept the permalink the same (for example, if a typo was fixed in the title) then RSS Bandit thinks it's a different post and a duplicate entry shows up in the list view. Since popular sites like Boing Boing and Slashdot tend to do this almost every other day it means I turned a problem with a niche site that affects a few users to one that affects a number of popular websites thus affecting lots of users.

This problem will be fixed in the next version of RSS Bandit.


 

Categories: RSS Bandit

During the most recent Download.Ject Internet Explorer incident [which was significant enough I saw newspaper headlines and TV news reports advicing people to switch browsers] I got some requests from RSS Bandit users to switch the browser used by RSS Bandit since they'd switched from using Internet Explorer due to security concerns.

Torsten and I looked around to see how feasible this would be and found the Mozilla ActiveX control which enables one to embed the Mozilla browser engine (Gecko) into any ActiveX application. The control implements the same APIs as the Internet Explorer control so it may be straightforward to make this change. 

I have some concerns about doing this.

  1. We've had weird interactions with COM interop between RSS Bandit and IE which result in weird bugs like dozens of IE windows being spawned and most recently memory corruption errors. I am wary of moving to an unknown quantity like Gecko and facing similar issues without the benefit of having a background of working with the component.

  2. There's a question of whether we replace our dependency on IE or ship an option to use Gecko instead of IE. Or whether we just ship a Gecko version and an IE version. The installer for the Mozilla ActiveX control is currently larger than the RSS Bandit download so we'd more than double the size of our download if we tied ourselves to Gecko.

I'm curious as to what RSS Bandit users think. Currently I don't think I'm going to add making such a switch to our plans but I am always interested in feedback from our users on what they think the right thing to do should be.


 

Categories: RSS Bandit

Torsten has a blog post about an interesting bug in RSS Bandit. If you are subscribed to both Joe Gregorio and Ian Hixie's blogs then one of the entries in Ian Hixie's blog appears with the wrong date. The blog post that appears with the incorrect date is the post State of the WHAT from Ian Hixie's blog which is linked to from Joe Gregorio's post 3270 Redux. Instead of being dated 2004-06-29 as appears in Ian's RSS feed it is dated 2004-06-05 which is the same date as from Joe's post.

The problem arises from a workaround we came up with to deal with feeds that don't provide dates. Many users dislike feeds that don't have dates and prefer that we display some default date for such feeds. What we ended up doing was using the date the item was seen in the feed as the date for each item. In many cases this date isn't accurate. Sometimes the inaccuracy of this date is particularly glaring when a post from a feed with dates in it links to one with no dates in the feed because it may look like a feed is linking to a post in the future. For example, Joe Gregorio's post dated 2004-06-05 links to a post made by Ian Hixie on 2004-06-29. In this case, this is valid because Joe Gregorio went back and edited his blog post but didn't update the date in his feed. However RSS Bandit thinks this discrepancy in the dates is because we guessed the date for the entry in Ian's blog and thus corrects it by aligning it with the date from Joe's entry. The rationale for this behavior is that guessing that an undated entry was posted on the same day as someone linked to it is more accurate than guessing that it was posted when it was fetched. The bug is that when we use this heuristic we don't check to see if the entry whose date is being adjusted is actually an undated entry.

This has been fixed in the current codebase. The next question is whether we should actually be adjusting dates in this manner in any case.


 

Categories: RSS Bandit

July 6, 2004
@ 07:48 AM

To help both our users and the RSS Bandit development team I have produced an RSS Bandit Product Roadmap. From the introduction to the roadmap

As the user base and development team of RSS Bandit has grown the need for planning and strategy documentation for future versions of RSS Bandit has become self evident. This document describes the goals for future versions of RSS Bandit as well as provide a plan for achieving these goals. As RSS Bandit is an Open Source project worked on by members of the RSS Bandit community in their free time these plans and goals will not be fixed which is why this document is a living document available on the wiki. There are three primary goals of this road map

  • it is a way to communicate to our end users what features are planned for the next release
  • it communicates the prioritization of various features as well as defines owners for feature areas
  • it defines the requirements of each feature in enough detail that the RSS Bandit development team can implement these features

At the current time this road map describes the future of the current version of RSS Bandit (v1.2.0.114) and the following version. Since we do not know the what version number an RSS Bandit release will use until it is released we will use code names for future releases. The release following v1.2.0.114 is codenamed Wolverine after the character from the X-Men comic book.

This document is primarily for the benefit of Torsten, Phil and myself although I am sure our users will find it of interest as well. If you have any feedback on the roadmap, let me know by posting a comment.


 

Categories: RSS Bandit

July 4, 2004
@ 04:24 AM

I just noticed that the most recent version of RSS Bandit has had over 20,000 downloads in just over a month. It seems like every day I find a new blog post from someone who's switched to RSS Bandit or just started using it as their first aggregator describing their improved user experience compared to other aggregators. Thanks for the support, there is even better stuff on the way.

I've been busy with work so in the meantime Torsten and Phil have been working on bug fixes for some of our most pressing user requests. In between releases we try to produce stable builds which early adopters can test to see if certain persistent bugs have been fixed. These RSS Bandit daily builds do not have an installer but can be downloaded and run directly by double-clicking on the RssBandit.exe icon after unzipping the folder. For example, the 6/15/2004 build fixes an issue with downloading feeds from behind a firewall. It should be noted that these interim builds are not expected to be release quality and have not been tested as rigorously as a full release that ships with an installer. However if you are interested in keeping pace with RSS Bandit development and providing feedback in making it an even better aggregator then keeping up with our daily builds is one way to do that. 

My workload at my day job has eased, so in the next few weeks I have time to work with Torsten on fixing a number of our reported bugs as well as prioritizing and implementing various feature requests. One thing I have noticed is that a number of people would like to get insight into our plans for the next release. The first cut at this was my prioritized Top 10 list of features for the next version of RSS Bandit. However that list doesn't take into account a number of smaller feature items we'd like to do nor does it give much detail about what we will do. Both Torsten and Phil would like to see proper specifications for the next release (requirements document, design docs, etc) which I'd gladly write since writing specs is something I was doing for fun before it became my day job. However this is work that would take away from coding time and since there'd only be one or two other readers of the document(s) I'm unsure as to whether just adding more detail to our existing communication practices isn't a better bet for the long run.

Whatever is decided, we will be blogging about features as they are being implemented and providing builds which showcase the new features so we can get feedback from users.  The only question is how detailed we will be about discussing features before they actually show up as downloadable bits.


 

Categories: RSS Bandit

I recently wrote that I want to make RSS Bandit compete more with commercial aggregators which elicited a comment about what exactly this means. Primarily it means that it is my intention that we should support what I consider are the three primary differentiating features of the commercial desktop aggregators I've seen (NetNewsWire, FeedDemon and NewzCrawler). The features are

  1. Newspaper Views: FeedDemon has the ability to display news items in a newspaper view which is a feature that Torsten batted around a few months ago but decided not to do because we didn't think it was that useful. However now that I read a number of feeds that tend to publish 30 - 50 items a day, being able to view the entries in a single page actually would be useful. My goal is for this feature to be 100% compatible with FeedDemon newsjpaper views meaning that you can use existing FeedDemon newspapers such as Radek's newspaper views for FeedDemon with RSS Bandit.

  2. WYSIWYG Weblog Editor: This feature was on my old RSS Bandit wishlist but I never got around to implementing it because of my displeasure with the MetaWeblog API. I've been waiting for the Atom project to produce a SOAP based API with built in authentication that would be widely supported by blogging tools before implementing this feature but it is now clear that such a specification won't be finalized anytime soon.  Since I don't do much GUI work I'll definitely need help from either Torsten or Phil with getting this done.

  3. NNTP Support: The promise of providing a uniform interface to various discussion forums whether they are Web based discussions exposed via RSS or in USENET is too attractive to pass up.

Of course, we will also fix the various bugs and respond to the various feature requests we've gotten from a number of our users. Torsten is currently on vacation and I'll most likely be gone for a week later on this month so development probably won't start in earnest until next month. Until then keep your feedback coming and thanks a lot for using RSS Bandit.


 

Categories: RSS Bandit

Bryan Kam has reviewed a couple of free RSS aggregators for Windows. Below are excerpts of his reviews including his final choice  

I began with the aptly-named and small FeedReader 2.5. While it has all the basic features covered, it lacks a lot of things I like...Score: 3/10. Fast but featureless.

Next I tried Sharpreader 0.9.4.1. This is a pretty good one, which features different sorting, various update times, alerts, inherited properties, can import/export OPML...It would take 40+ MB RAM on my desktop computer, and sometimes would take 100% cycles for no reason...Score: 5/10. Full of features, but slow as hell!

Another one I tried a while back was Syndirella 0.9b. While I was not a big fan of the Windows 3.1-esque interface, it does have a rudimentary scraper... This is great for sites that don't offer feeds. Other than that, though, this reader is pretty lacking, not even having categories which are a necessity in my opinion. Score: 5/10. Nice scraper, the rest kinda sucks.

Currently I'm using Abilon 2.0, which has many of the features I like...The interface is divided into three vertical columns: the far left is the list of feeds, the middle is the items in the selected feed, the right is the detail for the selected item. I find this very weird. Score: 7/10. It's got the goods, it's small, but it's not fun to use.

Okay, another brief RSS reader review. This one is called RSS Bandit and I've discarded Abilon in favor of it...Feature-wise it's pretty standard. The little slide-up alerts, which many of these readers have, is actually reliably click-able in this program...Another good feature is its "Locate RSS" feeds which attempts to find a feed for whatever websites or keywords you enter.8/10. Decent, but lacks that extra something.

It's good to read first hand accounts of what people like or dislike about RSS Bandit especially when compared to other RSS aggregators. I tend to agree with Bryan that RSS Bandit currently leads the pack amongst the major free RSS aggregators for Windows. The next release will aim at being competitive with commercial aggregators such as FeedDemon and NewzCrawler.

This should be a fun summer.  


 

This is mostly a bugfix release. Major features will show up in the next release scheduled for the end of the summer or later.

Download the installer from here. Differences between v1.2.0.112 and v1.2.0.114 below

  • FEATURE: Local search now supports boolean operators so one can write queries like "IBM | Microsoft & !Java" which means search for entries containing Microsoft or IBM but not Java. Queries can also be grouped with parenthesis such as "iPod & (iTunes | (Apple & !fruit))". Thanks to Brian Leonard for the patch.

  • FEATURE: Tree view and list view now support the scroll wheel on Microsoft Intellimouse. 

  • FIXED: "My Feeds" root node displays incorrect unread messages count after remote synchronization.

  • FIXED: Installed version doesn't support Windows XP themes.

  • FIXED: home/end key pressed in the listview don't refresh the detail pane

  • FIXED: Changes on the Options|Feeds default refresh rate dropdown inputbox are not immediatly validated.

  • FIXED: Locating feeds by keyword caused an exception on searches that contains non-ASCII characters.

  • FIXED: Internal browser is not able to display web pages with frames.

  • FIXED: Synchronizing state through WebDAV doesn't use proxy information.

  • FIXED: Temporary search results are no longer persisted (or synchronized).


 

Categories: RSS Bandit

Every couple of months someone asks me why I haven't written up my thoughts about the current and future trends in social software, blogging and syndication as part of a Bill Gates "Think Week" paper. I recently was asked this again and I'm now considering whether to spend some time doing so or not. If you are unfamiliar with a "Think Week", below is a description of one taken from an interview with Bill Gates

I actually do this thing where I take a week and I call it "Think Week" where I just get to go off and read the latest Ph.D. theses, try out new technologies, and try and write down my thoughts about where the market is going. Things are going fast enough that instead of doing one think a year, last year I started doing two a year. And that’s one of the most fun parts of my job. So, you know, not only trying things out, but seeing how the pieces fit together and thinking ahead what kind of software will that require, that’s a big part of my job. And I get lots of great ideas coming from the people inside Microsoft, whether it’s sending e-mail, or meeting with me, and it’s important for me to synthesize that and so there’s a lot of thinking that I’ve got to do. And, you know, that’s fun.

I have been balking at writing one for a few reasons. The first was that it seems like a bunch of effort for relatively small return [the people I know who've written one first hand got the equivalent of a "virtual pat in the back"], the second was that I didn't think this topic would be interesting enough to get past the layer of VPs and technical assistants that probably screen these papers before Bill Gates reads them.

After thinking about this some more it seems that I was wrong about whether BillG would be interested in this topic given his recent endorsement of blogging and syndication. I still don't think much would come out of it but I've now see myself bursting with a lot of ideas about the current and future landscape of blogging and syndication technologies that I definitely want to write something down anyway regardless of who reads it. If I write this paper I plan to make it available online along with my other writings. The question is whether there are any folks out there interested in reading such a paper? If not, it is easier for me to just keep notes on the various ideas and blog bits & pieces of the ideas as I have been doing thus far.

So what do you guys think?


 

Categories: Ramblings | RSS Bandit

Ryan Farley has a blog post entitled In Search of the Perfect RSS Reader where he compares a number of the most popular desktop aggregators for Windows in search of the best of breed application. Ryan compared RSS Bandit, SharpReader, Newsgator, FeedDemon, SauceReader and Gush. The application that Ryan rated as the best was RSS Bandit. He writes

 RSSBandit
RSSBandit has the best of everything. One of the things that I was wanting in an aggregator was support for the CommentAPI so I could read and post comments from it. RSSBandit has a nice interface and has a really clean and professional look to it. I like nice looking software. For me, that was one of the biggest things in the favor of RSSBandit. I love the “auto-discover” feeds, where you can scan a given URI for feeds. Search folders and some cool searching features. Written in .NET (I love to support the cause). Also, when a post is updated, it just updates the content of the post (seems to pull it each time you view it instead of caching it?). I like that it does not pull down a second copy of the post, however I do wish it would somehow indicate that the contents of the post has changed. The only gripes I had about RSSBandit are very small (and they're not really gripes, just small things I'd change if it were mine). I hate the splash screen. It is ugly and does not match the rest of the clean and XP/Office/VS/etc look of the application. Also, I don't like the icon. The smiley-face with the eye-patch. Give me a break. I don't really care for silly looking software (at least since it is open source I can change that myself if I really want to). But overall, a completly awesome job Dare (and other sourceforge team members)

Mad props go to Torsten and Phil Haack who contributed a great deal to the most recent release. We've tried to address a lot of user pain points in dealing with RSS Bandit and there's still a lot of stuff we can do to make information management with an aggregator even better.

Thanks to all the users who gave us feedback and helped us improve the application. Expect more.


 

Categories: RSS Bandit

One of the problems I have at work is that I have 3 applications open for participating in online community. I have Outlook for email, RSS Bandit for blogs & news sites and Outlook Express for USENET newsgroups. My plan was to collapse this into two applications by adding the ability to read USENET newsgroups to RSS Bandit. However recently I discovered, via a post by Nick Bradbury that

Hey, just noticed that the Google Groups 2 BETA offers Atom feeds for each group. To see feeds for a specific group, use this format:

http://groups-beta.google.com/group/NAME-OF-GROUP/feeds

Here are a few examples:

So I'm now at a cross roads. On the one hand I could abandon my plans for implementing USENET support in RSS Bandit but there is functionality not exposed by Google Groups ATOM feeds currently. I can't view newsgroups that aren't public nor can I actually post to the newsgroups from the information in the feed currently.  I see two options

  1. Implement a mechanism for posting to newsgroup posts viewed via the Google Groups ATOM feeds from RSS Bandit. Don't worry about adding USENET support for the case of people who want to read newsgroups not indexed by Google.
  2. Implement the ability to view and post to any USENET newsgroups using RSS Bandit. This may also include figuring out how to deal with password protected newsgroups. 

The Program Manager in me says to do (1) because it leverages the work Google has done, it requires minimal effort in me and doesn't require significantly complicating the RSS Bandit code base. The hacker in me says to do (2) since it provides maximum functionality and would be fun to code as well. What do RSS Bandit users think?

PS: Does anyone know how Google plans to deal with the deployment nightmare of moving people off of the ATOM 0.3 syndication format? Given the recent political wranglings between the W3C and IETF over ATOM it is clear that we won't see a spec rubber stamped by a standards body this year. There'll be thousands of users who are subscribed to Blogger & Google Groups feeds who may be broken whenever Google moves to the finalized version of ATOM. Will Google abandon the feeds thus forcing thousands of people to either change their aggregator or upgrade? Will they support two potentially incompatible versions ATOM? 


 

Categories: RSS Bandit

Based on some feedback from yesterday, the RSS Bandit installer has been refreshed and the following fixes made.

  • FEATURE: RSS Bandit now comes with a documentation helpfile so one doesn't need to go online to access the user documentation.
  • FIXED: During synchronization a feedlist may become corrupted and fail to load with the following error 'Keyref fails to refer some key'.
  • FIXED: When launched on a Brazilian Porteguese configured computer some text in dialog boxes is in English.
  • FIXED: If installing over an old version of RSS Bandit, existing search folders are replaced with the 'Unread Items' search folder.

If you downloaded it yesterday you should still get the latest installer because a few of the bugs fixed may affect you.  


 

Categories: RSS Bandit

Download the installer from here. Differences between v1.2.0.90 and v1.2.0.112 below

  • FEATURE: Support for Atom 0.3 syndication format
  • FEATURE: Instances of RSS Bandit can now be synchronized using WebDAV, FTP or a file share. The data is transfered in a ZIP file containing information about the current state of your search folders, flagged items, replied items, subscribed feeds and read/unread messages. This is extremely useful for people who use RSS Bandit on different computers like from home and work or from school and home.
  • FEATURE: Ability to configure appearance of MSN Messenger style popup windows in the system tray when new items show up on a per feed basis. Also the ability to turn this feature on and off now available from the context menu in the system tray.
  • FEATURE: Browser address bar has autocomplete functionality
  • FEATURE: RSS Bandit now translated to the following languages; English, German, Russian, Simplified Chinese, Brazilian Portuguese and Polish. If the language configured on your machine is one of these then all text should appear in your target language.
  • FEATURE: Online documentation now provided and is available from Help menu. This is a work in progress but all the information for figuring out the basics of using RSS Bandit is available now.
  • FEATURE: Logos and other distinguishing images from websites that provide them in their feed now displayed in the details pane.
  • FEATURE: Feeds imported from an OPML file can now be imported into a specific category.
  • FEATURE: Export to OPML now contains htmlUrl and description attributes in elementsfor each feed.
  • FEATURE: Custom stylesheets for rendering feeds can now reference external .css or image file(s)
  • FEATURE: Added one more commandline option '-c[ulture]:', e.g. '-culture:"ru-RU"' forces to start the russian UI.
  • FIXED: If executing/downloading ActiveX controls is disabled, warning message(s) no longer displayed about sites with ActiveX controls.
  • FIXED: Speed improvements in behavior of [Next Unread Item] button.
  • FIXED: Alert balloon in system tray pops up too frequently.
  • FIXED: UI hangs temporarily if a tree node is clicked for a feed that hasn't been downloaded before.
  • FIXED: Clicking on links with mailto: or news: URL schemes opened a new browser tab.
  • FIXED: Certain feed URLs not being updated if they had mixed case (e.g. http://www.exAmple.com/feed.rss) or were malformed (e.g. http:/www.example.com/feed.rss).
  • FIXED: Issue with screen font resolutions other than 96dpi.
  • FIXED: Exception on accessing feeds secured with windows authentication. Now the default credentials are correctly used.
  • FIXED: Closing a web browser tab on slow sites could cause hundrets of new browser tabs opened, or exception.
  • FIXED: startup issue on Windows 98/ME systems
  • FIXED: DTDs not used for resolving entities in RSS feeds. This mostly affected RSS 0.91 feeds
  • FIXED: Memory footprint reduced (5 to 15 percent), some speed improvements
  • FIXED: Various issues with deleting search folders.

 

Categories: RSS Bandit

May 2, 2004
@ 10:07 PM

I just finished fixing some bugs in the synchronization code in RSS Bandit and now the feature should work as expected. All I can say is, "Wow". I've just taken it for granted that I can open an instance of my mail client on different machines and get the same state but the same isn't the case for my news aggregator. Being able to click 'Download Feeds' on startup and have everything I read/flagged/replied to at home or at work synced up is totally sweet.

The only thing preventing a release now is that I'd like Torsten and I to come up with a way to improve the responsiveness of the GUI when loading feeds with thousands of items. On my machine where I have 3 months of posts from blogs like Weblogs @ ASP.NET it definitely seems like the user interface is creaking and groaning. This shouldn't take more than a few days so we should be on track for a release this week.


 

Categories: RSS Bandit

The final beta version of RSS Bandit before the next release is available, you can download the latest version.

The major change in this version is that you can now synchronize RSS Bandit using WebDAV, FTP or a file share. We transfer the data in ZIP file. If you select WebDAV, FTP or file share we'll synchronize your search folders, flagged items, replied items, subscribed feeds and read/unread message state. All of these will be transferred as a ZIP file. You can also select the dasBlog option which will upload/download your feedlist as an OPML file from your weblog. The latter is functionality that has always existed which hasn't being modified to perform synchronization. 

I'll spend the weekend ironing out bugs in this feature and trying to fix some areas that cause a lack of responsiveness in the GUI. We should have a release on Monday or Tuesday at the latest.


 

Categories: RSS Bandit

Now that I've gotten Visual Studio.NET 2003 reinstalled on my machine I've been working towards fixing the few bugs I own that have prevented us from shipping a release. The most important bug left to fix is [ 930282 ] Remote storage doesn't actually synchronize state which exists because of laziness on my part.

RSS Bandit gives you the option to download and upload your feed list from a file share, an FTP server or a dasBlog weblog. However this doesn't actually do much synchronization during the import phase, basically it just adds the feeds that don't currently exist in your aggregator. It doesn't synchronize the read/unread messages, remove deleted feeds or remember which items you've flagged for follow up. I am in the process of fixing this for the next release.

I'm currently thinking that we'll break backwards compatibility with this feature. Synchronization will only work between current versions of RSS Bandit. You'll have a choice of two transfer formats ZIP and SIAM. If you select ZIP then we'll synchronize your search folders, flagged items, replied items, subscribed feeds and read/unread message state. All of these will be transferred as a ZIP file. The SIAM option will synchronize subscribed feeds and read/unread message state and will be transferred as a SIAM document. The supported data sources will be WebDAV folder, network share and FTP. I'm interested in any other options people think is interesting to support.

There are a couple of interesting problems to solve before I'm done mostly to do with how to perform the synchronization as quickly as possible. They revolve around scenarios like “What if my work machine has 3 months of posts while my home machine only has 2 weeks of posts in its cache and I synchronize between them?“ or “What happens if I've read different posts from the same feed on my work machine and on my home machine?“. The issue revolve around the fact that replacing the existing information with the incoming information while simple leads to information loss.

This should be fun, I've wanted this functionality for a while.


 

Categories: RSS Bandit

The march towards getting the next official release of RSS Bandit continues, until then you can download the latest version.

The biggest changes since the last beta are that two more language translations have been added, Brazilian Portuguese and Polish. This  brings our number of supported languages to six (English, German, Russian, Simplified Chinese, Brazilian Portuguese and Polish). A couple of bugs with Search Folders were also fixed.

I'm currently the one holding up the release. I've finally gotten Visual Studio.NET 2002 installed on my machine and it seems that I should be able to get Visual Studio.NET 2003 installed today. Once done I'll work on the new installer and implement actual synchronization of feed state using a central server of your choice. Lack of this feature is beginning to get on my nerves.


 

Categories: RSS Bandit

In his post Or, maybe more strict Phil Ringnalda writes

I've been idly thinking about starting a campaign to get RSS/Atom aggregator authors (and validator authors, as well) to be a little less strict and dogmatic about what feed content is uniformly evil, and must be stripped out in all cases. We have a roughly shared (and mostly unexamined) set of standards, mostly based on Mark Pilgrim's groundbreaking post, saying that you should never allow, among other things, any Javascript, any CSS styles, or any object or embed elements
...
But, the inevitable but: the more you look, the more evil there is in the world
...
Or, say you have a Windows program embedding the IE browser control. You've carefully managed your security zone, so objects are no more dangerous than they are in general, you only display one entry at a time so CSS is no danger, and you've built your own popup blocker so you don't have any reason to strip Javascript. Then I come along again (maybe you should just refuse to subscribe to any of my feeds?), and drop in a simple little paragraph: <p style="height: expression(alert('gotcha'))">.

To the best of my knowledge none of these things is a problem for RSS Bandit. As Phil points out in his post when you embed the IE browser control, you can actually either choose your security zone which is exactly what RSS Bandit does. By default RSS Bandit disables Javascript, ActiveX and Java applets. This is fully configurable by end users because we provide the option to change the web browser security settings use by RSS Bandit.


 

Categories: RSS Bandit

We are making strides towards getting an official release of RSS Bandit out in the next week or so, in the mean time early adopters can download the latest version.

The biggest changes are that we have incorporated Oleg's Russian translation which brings our number of supported languages to four (English, German, Russian and Simplified Chinese). There is also a Turkish translation that is half done. The ever diligent Torsten has added the following command line option to RSS Bandit

-c[ulture]:? code>', e.g. '-culture:"ru-RU"'  launches RSS Bandit with Russian UI.

There is also the patch we got from Curt Hagenlocher which adds sort arrows to the columns in the list view when you click them. We also now offer maximum configurability of the MSN Messenger-style pop up windows that tell you if your favorite feeds have been updated. You can configure them on a per feed basis or for all feeds, as well as turn them on or off from the system tray. There have also been minor improvements in memory consumption, about 5%-15%.

Another great development is that the RSS Bandit online documentation is filling up nicely. Kudos to Phil Haack for the great work he is doing on this front. I know new users will love having this information at their fingertips.

As before any comments about the beta version should be brought up on the mailing list or discussion board. Bugs should be filed in the bug database on SourceForge and feature requests go to the feature request database on SourceForge.


 

Categories: RSS Bandit

Joshua Allen has a post entitled RSS Last Mile where he complains about the lack of a clear story with regards to one click subscription to RSS/ATOM feeds. I wrote about the various approaches to achieving one click subscription to ATOM and RSS feeds a few months ago which led to drafting feed URI scheme. Three months later, one click subscription to syndication feeds is still as confused as it's always been. A lot of the major aggregators support the feed URI scheme but none of the major blogging tools has decided to support it yet. Instead a lot of folks still use the 127.0.0.1 hack popularized by Radio Userland but which is now utilized by a wide number of aggregators. However most websites just do nothing with regards to one click subscription and just have a hyperlinked image, such as , which points to the RSS feed. 

The only new thing I've seen is that yet another person has cooked up their own one click subscription scheme that is incompatible with all the others. Thanks to Joshua's post I found an RFC for one click subscription to syndication feeds which seems to me to be the least advantegeous of the approaches that have shown themselves thus far.

The author of the RFC wrote the following about existing approaches, I've annotated his comments with mine in red text

Current solutions:

  • have the aggregator clients register with some mime-type (for either RSS or OPML), I don't believe anyone's actually implemented this since most aggregator authors know this doesn't work for a variety of reasons listed in my post on one click subscription to ATOM and RSS feeds
  • have a new protocol (feed:), actually this is a URI scheme not a protocol, and the process is the same as the above, have the aggregator clients register with as the handler for some URI scheme
  • support as many clients as possible via javascript (see QuickSub),
  • transform the RSS with XSL in the browser to help newbies (no really a one-click subscription solution though).This could be a one click subscription option if the prettied up RSS feed shown to the user also displays a link that uses one of the other 3 techniques mentioned above. So this approach is really orthogonal to the others and in fact can be considered complimentary

The author of the RFC post then goes on to suggesting an Internet Explorer specific solution namely that

Replace the orange Feed button:
The orange feed button needs to be wrapped with an object tag:

<object classid="clsid:0123456789ABCDEF [1]">
  <param name="feedurl" value="http://feedurl [2]">
  <param name="description" value="blah blah [3]">
  <param name="imageurl" value="http://buttonimageurl [4]">

  <a href="http://feedurl [2]"><img src="http://buttonimageurl [4]" /></a>
<object>

If the ActiveX control with class ID [1] is installed, it displays a custom "subscribe" button. When you click on it, it uses the feedurl parameter [3] to subscribe.

Besides the fact that this approach is Internet Explorer specific since it requires an ActiveX object it doesn't offer anything that the other approaches don't.  I don't see why Joshua thinks it's a good idea, considering that all 3 of the other approaches work in a variety of browsers on a variety of platforms.

 


 

Categories: RSS Bandit

This week Torsten figured out how to get the equivalent of “Subscribe in RSS Bandit” to the context menu in Internet Explorer and Firefox when you right-click on a link. Click below for a screenshot of what it looks like in Internet Explorer.
 

Categories: RSS Bandit

I am subscribed to the Amazon Hip Hop Music RSS feed which provides information about available hip hop CDs on sale at Amazon. I was just thinking that it'd be really cool if once a CD I liked showed up in my RSS feed I could just click a [Buy This] button and initiate the process of purchasing the CD. Combining this with Amazon's one click shopping it's conceivable that this could be done in a single click.

At the minimum to implement something like this you'd need an annotation in the RSS feed that contained the end point for the aggregator to submit the purchase information securely and a specified format for what the submitted purchase information should look like. In the case of Amazon, it might just be a cookie while for others it might be the all the required information like credit card number and shipping address.

Now that would definitely be cool. A subscription to a list of things I might be interested in buying and the ability to buy one of them when something caught my eye.   

 


 

Categories: RSS Bandit

I just found the following post in Andrew Watt's blog

Beta of RSS Bandit Available - but doesn't work, at least for me

Dare Obasanjo has announced, RSS Bandit 1.2.0.106 (beta) available, the availability for download of a beta of RSS Bandit. The download is available from Sourceforge.net.

Installation was smooth but the beta unfortunately seems not to be able to access any feeds, whether RDF or RSS. Sometimes it fails with an exception, sometimes silently. I don't know whether it is because the uninstall of the previous version didn't clean up fully after itself or not (it didn't) or for some other reason.

The end result, however, is that RSS Bandit is broken meantime failing to access any RSS or RDF feed I have pointed it at.

Posted by Andrew Watt at 04:09 PM | TrackBack (0)
The point of betas is to gather feedback about possible issues with the software before a release. If you are a beta user and would like to provide feedback you can file bugs in the bug database on SourceForge, send a message to the mailing list or discussion board
 
It may seem that like this is too much trouble in which case you can blog about your woes and Torsten or I will eventually find your post. However it would be much appreciated if you provided a way to follow up and get more details about your problem. The above post by Andrew Watt is an example of a post we can't do much with since he has no contact information on his blog and it doesn't support comments.  
 
Thanks to all the folks out there using RSS Bandit and helping us make it better. You all rock.

 

Categories: RSS Bandit

Torsten and I are getting ready to ship the next version of RSS Bandit and have made a beta version available.

The beta version adds a couple of features over the last version of RSS Bandit such as support for the Atom 0.3 syndication format, the ability to import OPML lists into a specific category, translations to German & simplified Chinese, ability to display logos of feeds that provide them and auto-completion when typing URLs in the address bar.

The beta version also fixes a number of bugs such as the fact that the notification bubble pops up too frequently, right-clicking URLs in the address bar makes them disappear, inability to launch the application on Win98/WinME, sometimes closing a browser tab causes dozens of IE windows to be spawned, clicking mailto: or news: links opens a new browser tab and most importantly the fact that in certain cases feeds are not updated.

Any comments about the beta version should be brought up on the mailing list or discussion board. Bugs should be filed in the bug database on SourceForge and feature requests go to the feature request database on SourceForge.

Our current plan is for the beta to last 2 to 3 weeks after which we'll create an installer for the next release.

PS: Given that RSS Bandit now supports other formats besides RSS and will support more technologies in future (e.g. NNTP) it seems to make sense for us to rename the application. Torsten and I are interested in any suggestions for a new name for the project.


 

Categories: RSS Bandit

Both Dave Walker and Tim Bray state their aggregators of choice barfed when trying to read a post entitled because their aggregators of choice didn't know how to deal with tags in content. Weird. RSS Bandit dealt with it fine. Click below for the screenshot.
 

Categories: RSS Bandit

After lots of procrastination we now have online documentation for RSS Bandit. As usual, The current table of contents is just a place holder and the real content is Phil Haack's Getting Started with RSS Bandit. The table of contents for the documentation I plan to write [once the MSDN XML Developer Center launches in about a week or so] is laid out below.

  • Bandit Help
    • Getting Started
      • What is an RSS feed?
      • What is an Atom feed?
      • The RSS Bandit user interface
      • Subscribing to a feed
      • Locating new feeds
      • Displaying feeds
      • Changing the web browser security settings
      • Configuring proxy server settings
    • Using RSS Bandit from Multiple Computers
      • Synchronization using FTP
      • Synchronization using a dasBlog weblog
      • Synchronization using a local or network file
    • Advanced Topics
      • Customizing the Way Feeds Look using XSLT
      • Creating Search Folders
      • Adding Integration with your Favorite Search Engine
      • Building and Using RSS Bandit plugins
    • Frequently Asked Questions
    • How to Give Provide Feedback
    • Contributing to RSS Bandit

If you are an RSS Bandit user I'd love to get your feedback


 

Categories: RSS Bandit

It is now possible to use RSS Bandit to read protected Live Journal feeds now that they support HTTP authentication. Brad Fitzpatrick wrote

Digest auth for RSS
Aparently this was never announced:

http://www.livejournal.com/users/USER/data/rss?auth=digest

Get RSS feeds (including protected entries) by authenticating with HTTP Digest Auth. Good for aggregators.

Good indeed. Given that I agitated for this in a previous post I'd like to thank the LiveJournal folks for implementing this feature.


 

Categories: RSS Bandit

I hung out with Lili Cheng on Tuesday and we talked about various aspects of social software and weblogging technologies. She showed me Wallop while I showed her RSS Bandit and we were both suitably impressed by each other. She liked the fact that in RSS Bandit you can view weblogs as conversations while I liked the fact that unlike other social software I've seen Wallop embraced blogging and content syndication.

We both felt there was more to social software than projects like Orkut and she had an interesting insight; Orkut and tools like it turned the dreary process of creating a contact list into something fun. And that's about it. I thought to myself that if a tool like Outlook allowed me to create contact lists in an Orkut-style manner instead of the tedious process that exists today that would really a killer feature. She also showed me a number of other research projects created by the Microsoft Research Social Computing Group. The one I liked best was MSR connections which can infer the relationships between people based on public information exposed via Active Directory. The visualizations produced were very interesting and quite accurate as well.  She also showed me a project called Visual Summaries which implemented an idea similar to Don Park's Friendship Circle using automatically inferred information.

One of the things Lili pointed out to me about aggregators and blogging is that people like to share links and other information with friends. She asked about how RSS Bandit enables that I mentioned the ability to export feed lists to OPML and email people blog posts as well as the ability to invoke w.bloggar from RSS Bandit. This did get me to thinking that we should do more in this space. One piece of low hanging fruit is that users should be able to export a category in their feed list to OPML instead of being limited to the exporting the whole feedlist since they only want to share a subset of their feed. I have this problem because my boss has asked to try out my feed list but I've hesitated to send it to him since I know I subscribe to a bunch of stuff he won't find relevant. I also find some of the ideas in Joshua Allen's post about FOAF + De.licio.us  to be very interesting if you substitute browser integration with RSS Bandit integration. He wrote  

To clarify, by better browser integration I meant mostly integration with the de.licio.us functionality.  For example, here are some of the things I would like to see:

·         Access to my shared bookmarks from directly in the favorites menu of IE; and adding to favorites from IE automatically adds to de.licio.us (I’m aware of the bookmarklet)

·         When browsing a page, any hyperlinks in the page which are also entries in your friends’ favorites lists would be emphasized with stronger or larger typeface

·         When browsing a page, some subtle UI cue would be given for pages that are in your friends’ favorites lists

·         When visiting a page that is in your favorites list, you could check a toolbar button to make the page visible to friends only, everyone, or nobody

·         When visiting a page which appears in other people’s favorites, provide a way to get at recommendations “your friends who liked this page also liked these other pages”, or “your friends recommend these pages instead of the one you are visiting”

I honestly think the idea becomes much more compelling when you share all page visits, and not just favorites.  You can cluster, find people who have similar tastes or even people who have opposite tastes.  And the “trace paths” could be much more useful

Ahhh, so many ideas yet so little free time. :)


 

Categories: RSS Bandit | Technology

Torsten just finished creating a German version of RSS Bandit. This should make it into the next release which should please our various German users. As Torsten mentioned we are looking for volunteers to do other languages. We will need at least two volunteers per language so that there can be some degree of error checking and the like.

To get started with translating RSS Bandit, only one file a number of files need translating and these include RSSBanditText.resx, the resource files for the main GUI, and the resource files for the various dialog boxes. An example of a translated version of that document is Torsten's German translation; RSSBanditText.de.resx.


 

Categories: RSS Bandit

Two recurring themes have shown up in my development of RSS Bandit and usage of news aggregators in general

  1. There are feeds I'm susbscribed to whose content I never end up reading because there is too much content (e.g. Weblogs @ ASP.NET) thus missing the good stuff.

  2. There is no easy way to find content that I'd find interesting.

I've noticed more and more people complaining about the information overload that comes with being subscribed to too many feeds and wanting some way to sift through the information. I spoke to someone at work yesterday who said he'd stopped using his aggregator to subscribe to individual feeds but instead just subscribed to RSS feeds of search results on Feedster. Similarly some RSS Bandit users subscribe to a lot of feeds and just use Search Folders to sift through them. Both approaches are slight variations of the same thing. The first person would rather read all information in blogs about a certain topic or keyword while the other would like to read all information about a certain topic or keyword from a select list of feeds.

The goal of RSS Bandit is to encourage both approaches. For the former we provide functionality for viewing Feedster [and other search engines that return RSS feeds] search results in the same manner one would view an RSS feed. In the next version we will provide the functionality to directly subscribe to such search results in two clicks (type search term in address bar, click the search button, results come back as an RSS feed, click subscribe to search results). The last piece is currently missing from RSS Bandit but will be in the next version. For the latter scenario where users subscribe to lots of feeds but only read the ones that match the searches in particular search folders I am considering improving the search capabilities by supporting query-like functionality. Currently you can create a Search Folder that shows all items that match a particular key word or key phrase. However sometimes you want to perform searches over multiple terms (e.g. “Microsoft AND Longhorn”) or fine tune certain searches by ignoring posts that may coincidentally match your keyword but are not of interest (e.g. “Java -coffee -indonesia”).

As for finding new interesting content, RSS Bandit already provides a way to search for feeds by keyword on Syndic8 but there is a bunch more that can be done. There are a bunch of other ideas I have about enabling users to manage the deluge of feeds on the Web and finding new interesting content. Including

  1. Only show posts that have been linked to by other feeds you are subscribed to. This would work for news sites like Slashdot or high traffic feeds like Blogs @ MSDN.

  2. Add a way to integrate with Technorati's Interesting Blogs and Interesting Newcomers lists whenever they are implemented.  

  3. Only show posts that have a certain threshold of incoming links (e.g. 5 or more) as measured by Technorati. This may be infeasible due to causing high load on Technorati.

I'm supposed to be hanging out with Lili Cheng in the next couple of days, I wonder what she'll think of some of these ideas and perhaps she can set me on the right path.