BottomFeeder Home Page

BottomFeeder
Version 3.8
Tutorial

February 4, 2005

 

Valid XHTML 1.0!

 

BottomFeeder on SourceForge

 

Cincom Smalltalk Home Page

 

Software WithStyle Home Page

 

© 2005, Richard A. Demers

 

Contents

 

BottomFeeder Home Page

Contents


 |- Introduction
 |   |- Notice
 |   |- Related Documents
 |   |- Some Terms
 |
 |- What can BottomFeeder do for you?
 |   |- Information Overload
 |   |- Your Lonely Voice
 |   |- Your Personal Presence
 |
 |- Technical Concepts
 |   |- Feeds
 |   |   |- Aggregating Feeds
 |   |   |- Updating Feeds
 |   |   |- Feed Standards
 |   |   |- A Sample Feed
 |   |
 |   |- Feedlists
 |       |- Feedlists From Syndicators
 |       |- Feedlists From BottomFeeder
 |       |- Feedlist Standards
 |       |- A Sample Feedlist
 |
 |- BottomFeeder Tasks
 |   |- Working With Folders
 |   |   |- Managing Folders
 |   |   |- Adding Feeds to a Folder
 |   |   |- Viewing All Items in a Folder
 |   |   |- Marking All Feeds of a Folder as Old or New
 |   |   |- Updating All Feeds of a Folder
 |   |
 |   |- Working With Feeds
 |   ¦   |- Finding the Feed of a Website
 |   ¦   |- Finding Interesting Websites With Feeds
 |   |   |   |- Web Surfing
 |   |   |   |- Feed Browsing
 |   |   |   |- Blogging
 |   |   |- Building Feeds
 |   |   |   |- Amazon Feed Builder
 |   |   |   |- BlogDigger Feed Builder
 |   |   |   |- BottomFeeder Feed Builder
 |   |   |   |- Feedster Feed Builder
 |   |   |   |- Google Feed Builder
 |   |   |   |- News Feed Builder
 |   |   |- Discovering Feeds
 |   |   |- Managing Feeds

 |   |   |- Getting Information About a Feed
 |   |   |- Commenting on a Feed
 |   |   |- Viewing the Items in a Feed
 |   |   |- Filtering Feed Items
 |   |   |- Getting Notified When New Items Arrive
 |   |   |- Marking All Items of a Feed as Old or New
 |   |   |- Restoring Deleted Items
 |   |
 |   |- Working With Items
 |   |   |- Viewing Items
 |   |   |- Viewing Related Items
 |   |   |- Zooming Items
 |   |   |- Marking Items as Old or New
 |   |   |- Deleting Items
 |   |   |- Making Items Persistent
 |   |   |- Flagging Items
 |   |   |- Getting Information About an Item
 |   |   |- Commenting On Items
 |   |   |- Viewing Item Comments
 |   |   |- Telling Others About Items
 |   |   |- Copying Item Information
 |   |   |- Searching For Items
 |   |       |- BlogDigger Searches
 |   |       |- BottomFeeder Searches
 |   |       |- Feedster Searches
 |   |       |- Google Searches
 |   |
 |   |- Working With Feedlists
 |   |   |- Adding Feedlists to a Folder
 |   |   |- Getting Information About a Feedlist
 |   |
 |   |- Other Tasks
 |      |- Working With Favorites
 |      |- Working With Settings
 |      |- Working With StyleSheets
 |      |- Saving and Restoring
 |      |- Synchronizing Multiple BottomFeeders
 |
 |- Plugins
     |- What Are Plugins?
     |- Downloading Plugins
     |- BottomFeeder's Plugin API
     |- Creating Plugins
     |- Customizing Menus
     |- Getting Notified Of Events
     |- Object Messages

 

BottomFeeder Home Page

Introduction

This Tutorial is for general users of the Internet. It will help you to learn BottomFeeder, a tool for working with the feeds provided by many websites.

Contents


Notice

BottomFeeder has been released as an Open Source program, under the Artistic License. When you download it, you agree to abide by this license.

Contents


Related Documents

The following documents are available to help you get the most benefit from BottomFeeder:

Contents


Some Terms

Here are some Internet terms you probably already know:

And here are some new Internet terms you will see in this tutorial:

Contents

BottomFeeder Home Page

What can BottomFeeder do for you?

Every tool exists to accomplish specific tasks in a larger social context. A plumber's wrench is for connecting pipes, but its larger purpose is to build sewage systems to prevent the spread of disease. So too with BottomFeeder; it is a tool for keeping up with changes to websites, but its larger purpose is to enhance your personal presence on the web.

Contents


Information Overload

Do a Google search on "quilting" and you get 644,000 hits. Overload!!!

When the telephone was first invented, people quickly realized it was a great business tool - a real improvement over the telegraph, a way to improve business productivity. A few businessmen installed telephones in their homes - for better communications with the office, of course. Their families found other uses, social uses, personal uses -- uses that quickly overwhelmed business uses. From then on, growth in the telephone network was exponential.

Limit the search to "Shaker quilting" and you get 3,500 hits. Still too many!

The same thing happened with the Internet. First scientists used it to e-mail each other and to share data files. Then, business people found all kinds of on-line, "e-commerce" uses: advertising, catalogs, sales, and intermediation. Along the way, as more and more people put computers in their homes, social and personal uses became dominant - e-mail, shopping, games, education, conferences, and on-line communities of all kinds.

"Shaker quilting in Minneapolis Minnesota" yields 10 hits. Manageable, but is this what you really want? Maybe the best websites are in Kentucky?

Today, there are so many people doing so many things with the Internet, it is impossible for anyone to keep up. Even in a relatively small subject area there are likely to be hundreds (if not thousands) of newsgroups, websites, forums, discussion groups, collaborations, blogs, wikis, and web rings -- with new ones coming online every day and old ones dying off almost as fast.

After you find the 100 best "Shaker quilting" websites, how do you keep up with all the changes made by their owners and users?

It is great to have the Internet available to everyone, 24 by 7. The world is changing because of it. But somehow, to be useful, you need to be able to carve out the parts of the Internet that best suit your interests, and make them work for you. You need to be able to say, "I am interested in this, but not that," and have the Internet help you manage the overload.

How many hours a day do you have to spend "surfing the net," looking at page after page, just to keep up with what's happening in Shaker quilting? And what about your other interests?

The more people, organizations and businesses "get on the net," the greater the overload. The Internet as a solution becomes the Internet as a problem. But these problems mean opportunities to help people use the Internet more productively.

Instead of the Internet as "the worldwide web," you want it to be a "personal web," that helps you solve your problems.

Contents


Your Lonely Voice

We live in an age of mass culture, with mass advertising and mass media shouting at us from every angle. Even if you take the trouble to develop educated opinions about the areas that interest you -- politics, religion, science, sports, hobbies, etc. -- it has become increasingly difficult to make your voice heard over the din.

You have always been able to write letters to the editor of a magazine or newspaper, but there was no guarantee the editor would publish them. Editors have to be selective because of space and audience interest constraints. Now, though, there are many more mass media channels (newspapers, magazines, radio and TV) specializing ever more narrowly, all clamoring for "content" from wherever they can get it, and with much less filtering. The result, however, is more noise; more competing voices shouting to be heard.

But there is something new in the world -- the Internet -- a more powerful two-way channel for communications. Not only can you hear what the mass media is broadcasting, you can talk back in a great many new ways: e-mail, forums, discussion groups, wikis, personal websites, web logs, etc.

Doesn't this just add to the din? Yes it does, but with a difference. Now, it is possible for any individual to establish an unfiltered and persistent voice that can be heard worldwide. Getting anyone to listen, however, is a different problem. To do that you need to become part of a community.

The Internet is a sphere, all users and resources are points on the surface with universal connectivity among any two points. Communities of unlimited size, complexity and durability form as those connections develop and evaporate. To be effective in these communities, you need to establish a presence that other people recognize and respect, and that presence has to be both attractive and persistent.

Contents


Your Personal Presence

Lots of people have vanity pages in their ISP's server: usually just a few pages of pictures and links hardly anyone ever looks at, ever links to, or ever goes back to. But some people work hard to establish a meaningful Internet identity. They build their own website or weblog, keeping in mind three important goals: make it easy to find, make it attractive, and make it sticky.

Whether you have your own website or blog, or just comment on those of others, people come to recognize your name, and hopefully respect your opinions. Your goals, now, are the inverse of someone who builds a personal website: finding good websites, evaluating them, and keeping up with them.

If you really want a strong presence on the Internet, you have to do all of the above. You have to create a quality website of your own, and you have to find, evaluate and keep up with many other websites. For all of this, you need tools - good tools like BottomFeeder!

Contents

BottomFeeder Home Page

Technical Concepts

You can skip this chapter if you are more interested in how to do specific BottomFeeder tasks. You do not have to understand how BottomFeeder works in any great detail -- no more than the driver of a car needs to know how its engine works -- but you may find it helpful to understand a few basic concepts.

The most basic concept is object orientation -- also called action on an object. BottomFeeder is all about objects and commands to those objects. Folders, Favorites, Feedlists, Feeds and Items are the kinds of objects you see in BottomFeeder. (More about them in the following sections.) Icons and text in BottomFeeder's windows represent each kind of object, so you always know what you are seeing.

But objects are more than just pretty pictures. Each object responds to your commands. All you have to do is select an object and choose a command to send it. The main trick is knowing what kind of object to select to do what you want, but that will become clear when you know a bit more about each kind of object. Sending a command to an object is then just a matter of selecting an option in the Main Window menu, in the Main Window Toolbar, or in the popup menus of each of the window panes.

The really cool thing (if you're into tech stuff) is that BottomFeeder is itself made up of objects that send commands to each other. So there is a direct relation between your commands and the way that BottomFeeder performs those commands. But that's the beauty of programming in Smalltalk!

Contents


Feeds

A web page with a feed.

A feed is an object that represents a special kind of file in a website; one that specifies what has changed in the other files of the website. It is called a feed because it supplies, or feeds, information to whomever will consume it. The website does not have to send messages to individual subscribers to tell them about changes. It just updates its feed file. Anyone on the web can then ask for a copy of the feed file.

BottomFeeder does not care how a website creates a feed file and adds new items to it. In some cases, the website accumulates items in a change log, and on a periodic basis builds a new feed file, and replaces its old feed file. An alternative is for a website to update its feed file every time there is a new item. As a consumer of feed files, you really do not care.


Aggregating Feeds

Aggregating feeds.

BottomFeeder is a program that aggregates -- a fancy word for "brings together" -- feeds from multiple websites. You tell BottomFeeder what feeds you are interested in by subscribing to them. BottomFeeder then checks for changes by getting the feed file, and telling you about each change. Just leave BottomFeeder running in the background; it checks for feed updates every N minutes, and let's you know when something is new.

But there's a catch; for BottomFeeder to do its thing, a website must publish a feed. An ever increasing number of websites (over 15,000, now) publish feeds, and it's an idea that is quickly catching on. People tend to revisit sites that provide feeds - and that's a good thing, so more and more sites are coming on board. If you find an interesting website that doesn't publish a feed yet, send the web master a message to "get with the program."

Contents


Updating Feeds

The process by which BottomFeeder updates feeds from their source websites is straightforward, and worth a few minutes of time to understand.

  1. BottomFeeder keeps an internal object model that consists of a Feed object for every subscribed feed. And for every feed, there is a collection of Item objects that is sorted by timestamp.
  2. BottomFeeder saves a maximum of N items for any feed (default = 50). These are the N items with the most recent timestamps.
  3. Subscribed feeds are updated automatically by BottomFeeder every M minutes (default = 30 minutes). Feeds can also be updated on your command.
  4. When a feed is updated, BottomFeeder begins by asking the feed's website if the feed file has changed since the timestamp of the last received feed file. If the feed file has changed, BottomFeeder requests a copy of the entire feed file from the website.
  5. BottomFeeder compares the timestamp of each incoming item with the timestamps of the saved Item objects of the feed.
    • If there is a match, BottomFeeder ignores the incoming item.
    • If there is no match, BottomFeeder determines if the item passes through any filters you created for incoming items. It adds the accepted items to the feed's collection -- in timestamp order.
  6. If the number of items saved for a feed's collection is greater than the maximum allowed, the items with the oldest timestamps are discarded.
  7. An exception to the last point is that you can tell BottomFeeder that an item is to persist. The number of items saved for a feed can then be greater than the maximum number allowed.
  8. You can also tell BottomFeeder to delete an item, but this just means you don't want BottomFeeder to show it to you again. A deleted item continues to hang around until the update process replaces it with a new item; meanwhile, you can ask to see deleted items, and even restore them to the normal item views.

Contents


Feed Standards

A website creates its feed files according to the RSS standard. RSS stands for Really Simple Syndication. There have been several versions of this standard, with many differences among them as people have tried to make RSS feeds handle different things. As a user of BottomFeeder, you do not have to be concerned with this; BottomFeeder handles all of the common standards just fine, including:

Contents


A Sample Feed

Here's an example of a minimal RSS 0.91 feed (taken from a RSS Tutorial):


<?xml version="1.0"?>
<rss version="0.91">
  <channel>
    <title>Example Channel</title>
    <link>http://example.com/</link>
    <description>My example channel</description>
  </channel>
  <item>
     <title>News for September the Second</title>
     <link>http://example.com/2002/09/01</link>
     <description>other things happened today</description>
  </item>
  <item>
     <title>News for September the First</title>
     <link>http://example.com/2002/09/02</link>
  </item>
</rss>

Without going into all of its details, this is an XML encoded file consisting of tagged elements. The root element, <rss> to </rss>, encloses all other elements. Its first element is <channel>, which specifies the title, link and description of the feed's source website. This is followed by a series of <item> elements, each of which specifies the title, link and description of some aspect of the source website that is new or changed. If the website covers multiple topics, it may produce multiple feeds so that users can select which ones they want to monitor.

Contents


Feedlists

A feedlist is a specially formatted file that contains the names and addresses of feeds. It is a convenient way to send information about some feeds to aggregator like BottomFeeder.

A feedlist does not contain feeds, themselves; only their names and addresses. BottomFeeder keeps feedlists in a separate folder tree under a root folder called Feedlists.

Contents


Feedlists from Syndicators

Syndicating feeds.

A syndicator is a website that publishes directories of Feeds published by other websites. Many syndicators help you to create a personal directory of feeds, called a feedlist, a kind of feed about feeds.

If you subscribe to a category in a syndicator, every time you ask for an update of your personal feedlist, you get an updated list of the feeds in that category. This is a good way to keep up with any new websites coming online that you might find interesting.

Contents


Feedlists from BottomFeeder

BottomFeeder isn't a syndicator, but it does have a limited facility for producing feedlists. You can export a feedlist containing entries for each of the feeds in your Subscriptions folder. BottomFeeder writes this feedlist to a file on your local disk. You can then send is as an email attachment to other users. BottomFeeder can then also import the feeds identified by a feedlist (but not the feedlist itself in this version).

Contents


Feedlist Standards

Feedlists are a type of XML file whose elements are defined by one of the following standards. BottomFeeder can read them all.

Contents


A Sample Feedlist

Here's an example of an OPML feedlist file exported by BottomFeeder:


<?xml version="1.0" encoding="iso-8859-1"?>
<opml version="1.0">
<head>
   <title>BottomFeeder OPML Export</title>
   <dateCreated>Thu, 21 Aug 2003 11:37:29 GMT</dateCreated>
</head>
<body>
   <outline 
      description="Cincom Product Manager"
      htmlUrl="http://www.cincomsmalltalk.com/rssBlog/rssBlogView.xml" 
      language="en" 
      text="Cincom Smalltalk Blog - Smalltalk with Rants"
      xmlUrl="http://www.cincomsmalltalk.com/blog/blogView"/>
   <outline description="Cincom Smalltalk Developer's Wiki"
      htmlUrl="http://www.cincomsmalltalk.com/rssWiki/rssWiki.xml" 
      language="en-us" 
      text="CincomSmalltalkWiki" 
      xmlUrl="http://www.cincomsmalltalk.com/CincomSmalltalkWiki"/>
</body>
</opml>

Each <outline.../> element describes a feed in the feedlist.

Contents

BottomFeeder Home Page

BottomFeeder Tasks

It is one thing to understand the objects and commands of a program, it is quite another to know how to use its facilities in the most effective way. This section discusses various tasks you may want to accomplish using BottomFeeder, and gives you hints on how to perform them.

Contents


Working With Folders

Assume for a moment that you are participating in three different virtual communities: Computer Programming, Science Fiction, and Origami. You regularly interact with half a dozen websites in each community, all of which publish feeds. You probably don't want to put all of these feeds into a single big list; instead, you want to keep them in separate groups. This makes it easier to keep track of what is happening in each topic.

BottomFeeder helps you to organize your feeds in folders, similar to the file folders on your personal computer. It provides a root folder, called Subscriptions in which you organize your feeds. You can also create your own topical folders under Subscriptions to categorize feeds even finer, in a hierarchy of folders. For example, you could have folders organized like this, each with zero or more feeds:

 |- Subscriptions folder
 |   |- Computing folder
 |   |   |- Programming folder
 |   |   |   |- Smalltalk folder
 |   |   |   |   |- Why Smalltalk feed
 |   |   |   |   |- Smalltalk Industry Council feed
 |   |   |   |   |- Cincom Smalltalk Blog feed
 |   |   |   |- Python folder
 |   |   |   |- Perl folder
 |   |   |- Operating Systems folder
 |   |   |- Testing folder
 |   |- Science Fiction folder
 |   |- Origami folder

BottomFeeder provides facilities for working with

Contents


Managing Folders

To create a tree of folders, select a folder and the Add folder command in its pop-up menu. BottomFeeder prompts you for the name of the new folder. If you later decide it should have a different name, choose the Rename folder command. To get rid of a folder (and everything in it!) choose the Remove folder command. You can also move a folder (and everything in it) from the folder that contains it to a different folder by using drag-and-drop.

Contents


Adding Feeds to a Folder

Select a folder in the Subscriptions tree and the Add Feed... command. The Add Feed prompt asks you for a "URL," the Internet address of the feed. If you know a feed's URL, you can just type it or copy it into the prompt, but this leads to some more general questions:

  1. "How do I find the feed of a website?"
  2. "How do I find interesting websites that have feeds?"
See Finding the Feed of a Website and Finding Interesting Websites With Feeds.

Contents


Viewing All Items in a Folder

Items are contained in feeds, not folders, but a folder knows about all the feeds it contains (directly and in lower level folders). If you want to see all the items in a folder, just select the folder. The result is a list of all items in the feeds of the selected folder.

Contents


Marking All Feeds of a Folder as Old or New

If all of the items of a feed are old, then BottomFeeder identifies the feed as being old; and if a feed contains any new items, then BottomFeeder identifies the feed as being new. There are times, when you want all feeds of a folder to be either old or new. Select the folder and the Mark all feeds as new command or the Mark all feeds as old command. BottomFeeder goes into each feed and marks all contained items as old or new, making the feeds old or new.

Contents


Updating All Feeds of a Folder

Folders know about the objects in their group, so if you want BottomFeeder to update all of the feeds in a folder, select the folder and the Update all feeds command. It then tells each feed to update itself, the same as if you individually told each feed to update itself. Cool, but folders also contain other folders, which may themselves have feeds. No problem, your command to a folder to update its feeds propagates on down to the lowest contained feed.

Contents


Working With Feeds

Contents


Finding the Feed of a Website

Finding the feed of a website is usually easy -- if it has one. The website tells you in one of these ways:

Contents


Finding Interesting Websites With Feeds

It is one thing to find the feed of a website you are browsing, quite another to find interesting websites with feeds. Some times you need to find websites of interest, and then determine if they have a feed. Other times you need to find feeds, and then determine if their websites are really of interest. BottomFeeder helps you do both.

Contents


Web Surfing

One of the ways people find new things on the web is by following links from webpage to webpage. Use your regular Internet Browser to find interesting websites. Click on links in webpages to go from website to website, "surfing" your way through the Internet. Your browser's Favorites or Bookmarks feature helps you save links to the sites you like.

BottomFeeder provides limited support for surfing. Although it is not a full-function browser, BottomFeeder attempts to present new pages in the Item Pane. Alternatively, you can have BottomFeeder launch an external browser for linked pages, which gives you the full function of the external browser.

Contents


Feed Browsing

When you browse feeds in BottomFeeder, you see many links to webpages related to individual items. Following these links often leads to websites of interest.

Contents


Blogging

A common practice of people who publish a blog is to include a Blog Role, a list of links to other blogs and websites that they find interesting. In this way, an implicit community of blogs develops through references to each other. The links in a blog role are, in effect, recommendations of other websites worth looking at.

Contents


Building Feeds

A feed was described in the Technical Concepts section as a file periodically generated by a website that identifies the changes that have occurred in the website. A broader view is that a feed is a file that contains links to a set of related items; for example, the results of performing a search. The generation of this kind of pseudo-feed file is on-demand, rather than periodic, but BottomFeeder presents its items the same as any other feed.

In fact, BottomFeeder helps you to build a variety of pseudo-feeds. When you select one of the Search / xxx feed builder... options, BottomFeeder asks a search engine to return the results of the search as a feed file.

As needed, you can select the feed and use the Update feed command. BottomFeeder then asks the search engine to create a new feed for the same query string.

Contents


Amazon Feed Builder

Amazon is a commercial website that catalogs and sells a wide variety of books and other media. The Search / Amazon feed builder... command opens a Amazon Feed Builder window, in which you can identify the feed you want from Amazon; for example, a feed on all books related to a specific subject. BottomFeeder adds the new feed to the currently selected Subscriptions folder, or to the Subscriptions Folder itself.

Contents


BlogDigger Feed Builder

To use BlogDigger as a feed builder, select Search / BlogDigger feed builder.... BottomFeeder opens a dialog in which you can specify a query string to send to BlogDigger. Google returns a feed of items containing the query string, from the various blogs that it searched. BottomFeeder adds the new feed to the currently selected Subscriptions folder, or to the Subscriptions Folder itself.

Contents


BottomFeeder Feed Builder

BottomFeeder maintains a local copy on your system of all of the items of all of the feeds that it has read (that have not yet been replaced by newer items). You can search these items and build a feed of the results.

To use BottomFeeder as a feed builder, select a folder in the Searches tree and the Add search command. BottomFeeder opens a dialog in which you can specify a query string. It returns a feed of items containing the query string, from the various items that it searched. BottomFeeder adds the new feed to the currently selected Searches folder.

Contents


Feedster Feed Builder

To use Feedster as a feed builder, select Search / Feedster feed builder.... BottomFeeder opens a dialog in which you can specify a query string to send to Feedster. Feedster returns a feed of items containing the query string, from the various feeds that it searched. BottomFeeder adds the new feed to the currently selected Subscriptions folder, or to the Subscriptions Folder itself.

Contents


Google Feed Builder

To use Google as a feed builder, select Search / Google feed builder.... BottomFeeder opens a dialog in which you can specify a query string to send to Google. Google returns a feed of items containing the query string, from the various webpages that it searched. BottomFeeder adds the new feed to the currently selected Subscriptions folder, or to the Subscriptions Folder itself.

Contents


News Feed Builder

This is similar to the Feedster Feed Builder. Select Search / Headline News feed builder.... BottomFeeder opens a dialog in which you can specify a query string to send to the Headline News, Yahoo or NewsTrove service. The returned feed consists of items containing the query string, from the various feeds it searched. BottomFeeder adds the new feed to the currently selected Subscriptions folder, or to the Subscriptions Folder itself.

Contents


Discovering Feeds

Syndic8 is a type of website called a "syndicator." Other websites register the feeds they produce with Syndic8, which then obtains updates to those feeds on a regular basis. A program like BottomFeeder can submit queries to Syndic8 to obtain a list of feeds that contain information that matches a query string. BottomFeeder presents the list of feeds that contained the query string, and you can select the feeds you want to add to a folder.

Contents


Managing Feeds

Over time, some of the feeds you acquire may need some amount of attention. Select a feed and one of the following commands:

Contents


Getting Information About a Feed

Additional information is available about each feed and its website. Select the feed and one of the following commands:

Contents


Commenting on a Feed

Some feeds allow you to provide them with comments, or to enter a query for their website. Select the feed and the Send comment on feed command. BottomFeeder then opens the Feed Comments window in which you can enter a comment or a query. If the website returns results from a query, BottomFeeder presents them in the Item pane.

To comment on an item of a feed, select the item and use the Send comment on item command.

Contents


Viewing the Items in a Feed

The easiest way to view the active items in a feed is to simply select the feed in the Tree pane. Active items are those that have not been filtered out and that you have not deleted. Inactive items are hidden until replaced by new items when the feed is updated or regenerated. Until then, hidden items can still be viewed by selecting the View hidden items command.

Contents


Filtering Feed Items

You may not be interested in seeing some of the items that appear in a feed. For example, a blogger may include sports or rock music items interesting to him or her but boring to you. To eliminate these items when they arrive, select the Search / Define Global Filters command in the main menu or the Define Filters command of a selected feed. BottomFeeder applies global filters to all items of all feeds, but it selectively applies a feed's filters to just that feed.

You can define multiple global or feed-specific filters. BottomFeeder filters out items that have a specific word or phrase in their category, title or contents. You can also tell BottomFeeder to filter out all old items in a feed.

Contents


Getting Notified When New Items Arrive

You can ask BottomFeeder to alert you whenever there are new items in a subscribed feed. Select the feed and the Add Feed Notifier command. BottomFeeder adds a bell icon to the feed's icon so you can see which feeds have notifiers. When you no longer want a notifier on a feed, select the feed and the Remove Feed Notifier command.

When new items arrive in any of your subscribed feeds, BottomFeeder adds them to the New Items list and enables the New Items tool button. BottomFeeder also adds the new items in feeds with notifiers to its Alert list and enables the Alerts tool button. In effect, you are alerted whenever new items show up in any subscribed feed.

So when should you add a notifier to a feed? One answer is to use notifiers for only those feeds you want to track closely.

Each item is represented by only one Item object. An item exists only in its containing feed, but it can also appear in other lists, such as the New Items list or a list of items found by a search. Anything you do to an item in any list, such as marking it as old, affects the item in its feed and in all other lists.

Contents


Marking All Items of a Feed as Old or New

Whenever a feed is updated from its website, either by subscription or on demand, BottomFeeder checks to see if there are any new items. If there are, it displays the title of the new items in red text. Click a new item and BottomFeeder assumes it is now an old item, and displays its title in black text. This distinction between old and new items has one more visual effect. If all items of a feed are old, the feed's icon in the tree is blue; if any items are new, the feed's icon is red.

There are times, however, when you want BottomFeeder to treat the items of a feed as either all old or all new. Select the feed and the Mark all feed items as new command or the Mark all feed items as old command.

Contents


Restoring Deleted Items

When you are working with a list of items, you can delete individual items from the containing feed. BottomFeeder does not actually remove the item until it needs space for a new item; it just marks it as deleted and does not show it in any item lists. Until the time when it is actually removed, a deleted item can be restored to the feed. Select the feed and the View hidden items command. BottomFeeder shows you a list of the deleted (and filtered) items in the feed. You can review them and individually restore deleted items to the feed. Alternatively, you can select the feed and the Restore all deleted items command.

Items that have been filtered out of a feed also appear in the display of hidden items. However, they cannot be restored in the same way as a deleted item because they would just be filtered out again at the next update of the feed. Instead, to permanently restore filtered items, use the Define Filters to change the feed's filters.

Contents


Working With Items

When you select a feed, BottomFeeder displays either a list of its items, or a convenient, scrollable newspaper view of the items. The list view provides many commands for working with items that are not available in the newspaper view.

Contents


Viewing Items

If you are using the list view of items, BottomFeeder displays a table with the date, title and category of each item in the Item List pane. You can sort items by date, title or category. BottomFeeder tells you which items are old and which are new. Clicking on a new item makes it old, but you can make any item new again, or you can make all items either old or new.

Click an item, and BottomFeeder shows you its contents in the Item pane. This is whatever the publisher of the feed wants it to be. It may be text that describes a change to a website page, it may be a copy of the change, or it may be a link to a changed page in the website. It just depends on what the website put into the item.

If you are using the newspaper view of items, BottomFeeder displays items as scrollable pages of items. To obtain a newspaper view, check the appropriate settings in the BottomFeeder Settings window or in the Settings tab of a Feed Properties window.

Contents


Viewing Related Items

Every item has a link (URL) back to its source file in a website, and this is often used to make a reference from one item to a different item in the same or in a different feed. These references appear in the text of the referencing item as normal web page links. As people write blog items and as they comment on each other's items, complex networks of such links often get created. It can be useful to find out what links other people have made to an item you are viewing, especially when you subscribe to many feeds on a single topic.

When BottomFeeder updates a feed it looks for links in all new items and comments and keeps a record of them. Later, to determine if an item you select in the Item List has any related items, get its popup menu and see if the View related items option is enabled. If it is and you select that option, BottomFeeder shows all related items in the Item List. Note, however, that only items that BottomFeeder has already saved in your local system are shown. For broader searches of the Internet, use one of BottomFeeder's many search facilities.

If you are subscribed to a large number of feeds that have lots of items and comments, you may not want BottomFeeder to cross reference related items. To turn off this feature, go to the Feeds tab in the BottomFeeder Settings and uncheck the Do item cross referencing? check box.

Contents


Zooming Items

Displaying items in the Item pane works fine for small items, but for larger ones, it is too constraining. BottomFeeder has a simple solution. Select the Toggle Zoom command, and BottomFeeder uses the entire window to the right of the Tree pane to show the item. You can toggle back to the normal view in the same way. For even more room, you can drag the right side of the Tree pane to the left, and you can maximize the window in the desktop.

If you are using an Item List view, which has no Tree pane, the Item pane uses the entire view area of the Main window.

While in zoom mode, you can use keyboard shortcuts (Up arrow, Down arrow, Page Up, Page down, Ctrl-Home and Ctrl-End) to go from item to item. This gives you an alternate way to use BottomFeeder.

For convenience, the popup menus of both the Item List pane and the Item pane have most of the same commands for working with items.

Contents


Marking Items as Old or New

Whenever a feed is updated from its website, BottomFeeder checks if there are any new items. If there are, it displays the title of the new items in red text. Click a new item and BottomFeeder assumes it is now an old item, and displays its title in black text.

You can make any old item new again by selecting the item and clicking the Mark item as new command. BottomFeeder then changes its title back to red text.

As a convenience, you can mark all the items in an Item List as old or new by clicking any item in the list and clicking the Mark all items as old command or Mark all items as old command. This violates the "action on an object" metaphor, but it is a convenience.

Contents


Deleting Items

Old items normally disappear when new items need their space. But sometimes, you may decide you never need to see an item again, so it can be deleted from the feed right away. Select the item and the click the Delete item from feed command. BottomFeeder marks the item as deleted so that it will not show it to you again. However, the item continues to be saved until it is replaced by a new item. Until then, you can ask the feed to restore a deleted item, either individually or all deleted items in the feed.

Contents


Making Items Persistent

Sometimes there is an item that you want to keep indefinitely. Select the item and click the Make item persistent command. BottomFeeder marks the item as one to keep and displays its title in italics. If at a later time you decide you no longer want the item, select the item and click the Let item expire command.

Contents


Flagging Items

When you first read an item you may decide that you want to be easily able to come back to it at a later time. Select the item in the Item List pane and the Flag for Follow up command. Alternatively, select the Toggle flagging command in the Item pane. BottomFeeder marks the item as flagged by changing the color of its text to green.

When you want to look at your flagged items, select the Flagged view button and BottomFeeder will display a list of all flagged items.

To unflag an item, select the item in an Item List pane and the Unflag item command. Alternatively, select the Toggle flagging command in the Item pane.

Contents


Getting Information About an Item

Additional information is available about each item. Select the item and click the Item properties command. BottomFeeder open the Item Properties window which has two tabs:

Contents


Commenting On Items

Some feeds allow you to comment on their items. Select the item and the Send comment on item command. BottomFeeder then opens the Item Comments window in which you can enter a comment.

This is particularly useful for commenting on blog entries.

Contents


Viewing Item Comments

Just as you can comment on the items of a feed, so can other people. In some cases, the original item becomes just the starting point for an extended discussion among the writer of the original item and one or more commentators.

If the owner of a feed makes comments available to viewers of his website, they are usually added to the original items in the website's feed, either as links (URL's) or as text. The next time BottomFeeder gets an update of the feed, it also gets any new comments. To see the comments, select the item and scroll to the bottom of Item pane.

To help you see what items have new comments, BottomFeeder marks the items containing new comments as being new items, which also marks the containing feed as having new items. If you don't want to be informed of new comments in this way, go to the User Interface tab in the BottomFeeder Settings and uncheck the Items new if new comments? check box.

As mentioned above, some websites only provide links (URL's) to comments on items. Click on such a link in the Item pane and BottomFeeder gets the comment from the website and displays it in the Item pane. But this really isn't very convenient for you, especially if there are a series of comments on an item; so instead, when BottomFeeder finds a comment link in a feed it automatically goes to the website, gets the comment, and appends the text of the comment to its saved copy of the item. Of course, it only has to do this once for each comment.

If you are subscribed to a large number of feeds that have lots of comments, you may not want BottomFeeder to automatically get copies of all comments. To turn off this feature, go to the Feeds tab in the BottomFeeder Settings and uncheck the Aggregate comments with feeds? check box.

Contents


Telling Others About Items

The Internet is all about communicating with other people. Sometimes when you see an item of interest, you may want to tell someone else about it. BottomFeeder gives you three ways; select the item and click on one of these commands:

Contents


Copying Item Information

One of the simplest ways in which application programs cooperate is by making it possible to copy information into and out of the system clipboard. BottomFeeder enables information to be copied from items in the following ways:

Contents


Searching For Items

Finding websites and feeds are important things you do in using the Internet, but you may also want to find items within feeds, either saved by BottomFeeder or out in the Internet.

Contents


BottomFeeder Searches

To find an item in one of the feeds in your local BottomFeeder cache, select the Search / Search BottomFeeder... command. BottomFeeder uses your query string to search its cache. The results are displayed in the Item List pane.

Contents


BlogDigger Searches

BlogDigger is a website that indexes blogs that it finds throughout the Internet. The Search / Do search engine search... command opens a Search window, in which you can submit a query to BlogDigger. The results returned by BlogDigger are displayed in a browser window.

For more advanced searches, and for other BlogDigger services, you still have to go the the BlogDigger website.

Contents


Feedster Searches

Feedster is a website that indexes feeds that it finds throughout the Internet. The Search / Do search engine search... command opens a Search window, in which you can submit a query to Feedster. Popup menus in the Item List pane and Item pane also provide shortcuts to the Search tool. BottomFeeder takes the title of an item (or any text selected in the Item pane) as the query string, but you can edit the query string before requesting a Feedster search. The results returned by Feedster are displayed in the Item pane, with links to the feeds found. To copy the URL of a feed, position the cursor on the "RSS" link and select the Copy link command.

For more advanced searches, and for other Feedster services, you still have to go the the Feedster website.

Contents


Google Searches

The massive indexes and powerful search engines of the Google website make it an invaluable aid for finding websites. The Search / Do search engine search... command opens a Search window, in which you can submit a query to Google. Popup menus in the Item List pane and Item pane also provide shortcuts to the Search window. BottomFeeder takes the title of an item (or any text selected in the Item pane) as the query string, but you can edit the query string before requesting a Google search. The results returned by Google are displayed in the Item pane, with links to the webpages found.

For more advanced searches, and for other Google services, you still have to go the Google website.

Contents


Working With Feedlists

Like a folder, a feedlist object can be opened to see its feeds; or closed to hide them. The feeds in a feedlist are not automatically read or updated. That happens only when you click the feed. The same goes for feedlists; if you want to update a feedlist, click it and BottomFeeder gets a refreshed feedlist from its syndicator.

You cannot add feeds to a feedlist, or remove them from a feedlist, or move them between feedlists or folders. However, you can select the Subscribe to feed command, or drag and drop it on a folder in the Subscriptions tree. The feed stays in the feedlist, but also appears in the subscriptions tree. It is then automatically updated the same as any other subscribed feed.

Contents


Adding Feedlists to a Folder

To add a feedlist to the Feedlist tree, select one of its folders and choose the Add feedlist command. BottomFeeder asks you for the the address (URL) of the feedlist, reads it, and then adds a corresponding feedlist object to the folder.

Get feedlists from the Syndic8 website. Go there and establish a personal account, and then use its search facilities to create a list of the feeds and categories of feeds in which you have an interest. As new feeds are registered in those categories (or deleted), Syndic8 keeps your feedlist up to date. Syndic8 will tell you the address of your personal feedlist to use.

Contents


Getting Information About a Feedlist

Additional information is available about each feedlist. Select the feedlist and click the Feedlist properties command. BottomFeeder opens the Feedlist Properties window which lists the properties common to all feedlists.

Contents


Other tasks

Contents


Working With Favorites

Using BottomFeeder, you can do some of the things that you normally do with your Internet browser. It is not a full function browser, but it is enough of a browser to help you find and use websites and feeds.

First of all, you can open browsers on feed items, on web pages linked by a feed item, on the home page of a feed's website, and on information about BottomFeeder. You can also use Favorite or Bookmark links from your default browser, and you can open browsers on web pages you find by doing Google and Feedster searches through the BottomFeeder search tool. These features are available through the Browse and Search menus of the Main window.

Contents


Working With Settings

BottomFeeder is a very flexible program. You can tailor its operation to your preferences in many ways. The most basic way is to set values in its initialization (.ini) file before you start the program. This file is shipped with BottomFeeder to give it default values for these preferences. You too can change these values but it is better to use the Settings Window when BottomFeeder is running.

Select the System / Settings command of the main menu, and BottomFeeder opens the Settings Window. This window displays the current settings in tabbed pages. Select a tab, and make any changes you need.

Contents


Working With StyleSheets

A stylesheet is a description of how the elements of a document are to be presented in a specified media. A magazine, for example, has roughly the same appearance from month to month, even though its contents changes. This is because the writers and editors all work as required by a predefined stylesheet. It tells them, for example, to use a certain typeface of a certain size for titles. The same for BottomFeeder; the items of the subscribed feeds change, but the way BottomFeeder presents them remains consistent because of a stylesheet.

BottomFeeder is initially installed with more than a dozen different stylesheets, and you can select the one you want, to obtain the presentation style that best suits your needs. The Stylesheets menu in the main window is a list of named stylesheets that you can select.

The stylesheets BottomFeeder uses are defined according to a standard Internet language called Cascading Style Sheets, or CSS for short. If you like to try new things, you can also create your own custom stylesheets. You may find it helpful to obtain one of the many books published about CSS.

The stylesheets directory in your BottomFeeder home directory contains the named stylesheets that are installed with BottomFeeder. Copy one of these stylesheets (with a new name) into the same directory, and try changing some of its specifications. When you restart BottomFeeder, you will find the name of your custom stylesheet in the Stylesheets menu.

Contents


Saving and Restoring

For good performance, BottomFeeder works with folders, feeds and feedlists as objects in your computer's memory. When you exit from BottomFeeder, it writes all of these objects out to the hard disk so that they will be available when you next start the program. While it is running, more objects are added to memory as feeds are updated. Changes to memory also occur when you create, rename, or move objects. In these ways, the memory objects increasingly differ from what was last written to the hard disk. If your computer crashes (as PC's are all too often known to do), then all of the updates since the last save are lost.

To avoid this, occasionally tell BottomFeeder to save the current state of its memory objects to disk. Click the File / Save All command on a regular basis, and BottomFeeder saves the current state of all memory objects, along with the current position and size of the Main Window and the current values of the your control settings.

When you quit BottomFeeder, by clicking the File / Exit command, BottomFeeder checks the shouldSaveFileOnExit setting. If true, it automatically does a File / Save All command.

You can also tell BottomFeeder, through the File / Save All To... command, to save objects in a directory of your choice on your local hard disk. You may want to do this so you can later use File / Restore All command to restore that aspect of BottomFeeder to a specific state, or so you can share it with another user.

It is also possible to save feeds, feedlists or settings to a network file, and to restore them from a network file server. Request these actions through the Network menu.

Contents


Synchronizing Multiple BottomFeeders

If you use more than one computer system, perhaps a desktop system and a laptop, you may want to have BottomFeeder running on all of them. That way, you can be kept up-to-date regardless of what system you happen to be using. Ideally, you would like to have them all show the same feeds at the same update level, but this doesn't happen automatically.

For example, if your desktop system is continually connected to the Internet, BottomFeeder updates all feeds automatically; but your laptop system may be connected only when you are actually using it. When you start BottomFeeder on the laptop system, its feeds are also updated, but not the records that BottomFeeder keeps on the desktop system about which items have been read, deleted, filtered or made persistent. Nor does the laptop BottomFeeder know about any feeds, folders, or filters added or removed from the desktop system.

To bring your laptop BottomFeeder to the same update level as your desktop BottomFeeder, you need to synchronize them. There are two ways to do this, through a network connection, or through saved and loaded synchronization files.

Contents

BottomFeeder Home Page

Plugins

What Are Plugins?

Plugins are programs that plug into a host program to enhance it or change it in some way. The host program works well without any plugins, but if you install plugins, the host program becomes more useful to you in some way.

BottomFeeder is a host program to an open-ended set of plugins. BottomFeeder adds the names of the plugins you install to the Plugins menu of its Main window. When you click on a plugin name in that menu, BottomFeeder starts the selected plugin program. Depending on its function, the plugin may open additional windows or it may enhance BottomFeeder in some other way.

Contents


Downloading Plugins

One source for plugins is BottomFeeder, itself. Useful plugins have been created by the BottomFeeder development team. In other cases, other people have sent plugins to the development team. All of these plugins can be downloaded by using the System / Check for Upgrades... command.

Any file transfer program can be used to download plugins from other sources. Just put them into the plugins directory under the BottomFeeder Home Directory.

Contents


Creating Plugins

Creating plugins is best left to experienced VisualWorks Smalltalk programmers.

The plugins that BottomFeeder can install and start are VisualWorks Smalltalk programs that have been deployed as VisualWorks parcels. To create a plugin, use Cincom VisualWorks to create and test appropriate Smalltalk classes and methods, and export them as a .pcl file. Put this file into the BottomFeeder plugins directory so it can be loaded when BottomFeeder is started.

When BottomFeeder loads a plugin, the parcel loader calls the following plugin method so that it can initialize itself.


	postLoad
	   ...plugin initialization code...

This method must also send one of the following call-back messages to BottomFeeder to register itself as a plugin:

 
	#{RSS.RSSFeedViewer} ifDefinedDo: [:cls |
	   cls
	      registerPluginClass: PluginClassName
	      startupMessage: #startupMethodName
	      label: labelString].
 
	or
 
	#{RSS.RSSFeedViewer} ifDefinedDo: [:cls |
	   cls
	      registerPluginClass: PluginClassName
	      startupMessage: #startupMethodName
	      label: labelString
	      isForUI: false]
The #ifDefinedDo: message just ensures that RSS.RSSFeedViewer has been imported by the class of the plugin.

If a plugin has a user interface, BottomFeeder adds an entry to its Plugins menu. When clicked, this menu entry sends the startup message specified in plugin's registration to the registered plugin class. If the plugin does not have a user interface, the startup message is sent immediately after registration.

Contents


BottomFeeder's Plugin API

Some plugins, such as the IRC Client, provide new capabilities that have little or nothing to do with the basic BottomFeeder application of aggregating feeds. For them, the basic plugin interface described above is all they need.

Other plugins, however, augment BottomFeeder's handling of feeds in some way. For example, the CST Blog Tool opens a tool for creating a blog entry about a selected item of a feed. They need a way to work with selected feeds or items, and users need a way to request their services. For them, BottomFeeder provides an Application Programming Interface (API) for customizing menus, and to be notified of BottomFeeder events.

Contents


Customizing BottomFeeder Menus

BottomFeeder's primary user interface is through menu actions that can be requested on a selected feed or item. A plugin can add an action to the Item List popup menu. When a feed is selected in the Tree pane, BottomFeeder sends the following message to the plugin's class (the one registered with BottomFeeder):

 
	PluginClassName
		customizeMenu: aMenu
		forItem: anItem
		andFeed: aFeed

Here is an example of such a plugin method:

 
	customizeMenu: aMenu forItem: anItem andFeed: aFeed
		"add a menu pick if appropriate"
		self isMyActionAvailableForItem: anItem andFeed: aFeed 
			ifTrue: [aMenu addItem: self myAction]

Contents


BottomFeeder Events

A variety of events occur when BottomFeeder processes user requests. In some cases, a plugin needs to take actions beyond what BottomFeeder has already done. To be notified of these events a plugin must register itself as a receiver of each event. Depending on whether or not the event includes an argument, register by sending one of the following messages:

 
RSS.RSSFeedViewer 
   when: #placeEventNameHere 
   send: #placeYourEventHandlerMethodNameHere 
   with: argument

or

RSS.RSSFeedViewer 
   when: #placeEventNameHere 
   send: #placeYourEventHandlerMethodNameHere


Event Argument Description
#addedFeedList: aFeedlist Sent when a feedlist is successfully added.
#addedFeed: aFeed Sent when a feed is successfully added.
#bottomFeederStarting: anApplicationModel Sent after BottomFeeder has started, but before it has updated any feeds. The BottomFeeder feed viewer application model (for the main BottomFeeder window) is passed as an argument. Plugins can perform additional startup operations for themselves.
#bottomFeederQuitting   Sent after the BottomFeeder feed viewer application model has terminated, but before the containing Smalltalk image has been terminated. Plugins can perform additional termination operations for themselves.
#newItemsFor: aFeed Sent when there are new items for a feed (after a manual update, or via the update loop).
#newItemsForAlert: aFeed Sent when there are new items for a feed which is set for alerts (after a manual update, or via the update loop).
#removedFeed: aUrl Sent when a feed is removed. The argument is the feed's URL; the removed feed is not available.
#removedFeedList: aUrl Sent when a feedlist is removed. The argument is the feedlist's URL; the removed feedlist is not available.
#quitting   Sent when the BottomFeeder image is going to quit. The image does not quit before the plugin method returns.

A plugin only needs to register for the events it wants to handle; the others are ignored.

Contents


BottomFeeder Object Messages

BottomFeeder passes feed and feedlist objects on some of the API's listed in the previous section. This makes it possible for the plugin to send messages to those objects to request various services. The obvious questions to ask are, "What services?" and "What messages?"

At this point in the development of BottomFeeder, these questions can only be answered by repeating that you have to be a VisualWorks Smalltalk programmer. If you are, download a VisualWorks development image from Cincom Smalltalk Downloads, and a copy of the current BottomFeeder bundle from the Public store. Look for classes RSSFeed and RSSFeedList in the RSSViewer-Domain package.

Contents

BottomFeeder Home Page

The End