| # BottomFeeder Tutorial Version 4.4 July 1, 2007

© 2007, Richard A. Demers | Contents

| ## Contents

|- Introduction | |- Notice | |- Related Documents | |- What can BottomFeeder do for you? | |- Information Overload | |- Your Lonely Voice | |- Your Personal Presence | |- Concepts | |- Feeds | | |- Aggregating Feeds | | |- Blog Feeds | |- 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 | | |- Internet Feed Builder | | |- Amazon Feed Builder | | |- HeadlineNews Feed Builder | | |- BottomFeeder 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 Alerted When New Items Arrive | |- Marking All Items of a Feed as Old or New (continued)

#### Contents (continued)

|- 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 | |- BottomFeeder Searches | |- Internet Searches | |- Restoring Deleted Items | |- Other BottomFeeder Tasks | |- Working With Settings | |- Working With StyleSheets | |- Working With Enclosures | |- Saving and Restoring | |- Synchronizing Multiple BottomFeeders | |- Working With Blogs | |- Creating Your Blog | |- Identifying Your Blog | |- Creating and Updating Blog Items | |- Uploading Files to Your Blog | |- Editing Enclosures | |- Editing Your Blogroll | |- Editing Trackback Requests | |- Editing Blog Templates | |- Regular Expressions | |- Syntax | |- Character Sets | |- Glossary

| ## 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:

- Quick Start Guide -- a brief introduction to BottomFeeder for new users.
- User's Guide -- provides detailed information about setting up BottomFeeder and using each feature of its windows, controls, commands and settings.
- Technology Guide -- provides detailed technical information about BottomFeeder.

Contents

| ## What can BottomFeeder do for you?

The Internet provides you with a lot of different ways to share information, to communicate, and to interact with other people. Just as a mechanic has many different tools for different parts of his job, you need a variety of tools for the ways you use the Internet. Among them are an e-mail program, a File Transfer program, and an Internet Browser. But these are not enough, you also need a tool to help you keep up-to-date in the virtual communities you join. BottomFeeder is just such a tool, a program that helps you personalize your use of the Internet. It helps you organize your personal collections of feeds, and it helps you work with them.

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.

- Easy-to-find means there are lots of links to your website: from other websites, from syndicators, and from search engines.
- Attractive means great presentation and great content. People who find your website have to quickly find content that is interesting, well-organized and well-presented; otherwise, they will blow right by it.
- Sticky means people come back for more visits to see what is new. It also means there is something that brings them back, reminders that good things are happening on your website that they want to be part of. One way to be sticky is to send e-mail to subscribers whenever there is something new. Another way is to publish a feed, a file that makes it easy for people to find out what is new. It also helps if you register the feed with a syndicator.

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.

- Finding websites. The search engines tend to inundate you with too many hits to check out individually, but you can almost always narrow the list over a series of searches. There are many websites that organize and categorize other websites by topic. The value of these websites depends on the quality of the categories, and how well the list of websites in each category is maintained. And of course, you can follow links provided by other people in messages that catch your interest.
- Evaluating websites. Determining how well a website meets your interests, and will continue to meet them, can be difficult. Surfing pages, blog entries and messages gives you a first taste, but that can be time-consuming. Some websites provide a mechanism for visitors to vote on content, which can be helpful - depending on who does the voting. And of course, there are recommendations from people you have come to trust.
- Keeping up with changing websites. Once you have found a set of websites you like, how do you keep up with their changes? You can periodically surf each of them - if you have mountains of free time. Or you can subscribe to e-mail notices, from the sites that provide that service. Or you can use a type of program called an aggregator to periodically check a list of websites for changes. This works great, but only for websites that provide a feed.

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

| ## 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.

Contents

### Feeds

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

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 10,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."

#### Blog Feeds

A weblog ("blog") is a special kind of Internet website; a journal (usually) produced by one person. When a browser asks for the blog's home page, the blog server dynamically builds the page from the most recent N items, with the most recent item at the top of the page. The items are assembled in a template that names the blog, formats the entries, and adds a number of other features, such as an index of item categories and a list of links to related websites (a blogroll).

Blog servers also produce an RSS feed. Whenever an item is added to the blog or a comment is added to an item, the feed is updated, and can be read by aggregators like BottomFeeder. The feeds of some blogs only contain an Internet address (URL) for each item, so aggregators have to request the text of desired items. The blog server dynamically generates a webpage for the requested item. Other blogs, however, put all or part of each item into their RSS feed. Aggregators are then able to provide a variety of views of blog items, such as lists or newspaper views. To complete the picture, some blogs put item comments in the feed, while others put only the URL's of comments so they can be retrieved. BottomFeeder hides all of this complexity, thereby simplifying user interactions with blogs.

Most blog servers provide a way for readers to see the comments of other readers, and to comment on each item. There is also a way for the owner of the blog to add new items and update old items. These services are usually provided by specially generated webpages, but many blog servers also support special interfaces (API's) that allow other Internet programs to provide the same services. For example, the users of BottomFeeder can update their own blogs, and they can add comments to the items of other blogs.

Working With Blogs introduces the full range of services that BottomFeeder provides for working with blogs.

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 `My Feeds` in which you organize your feeds. You can also create your own topical folders 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:

|- My Feeds 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

- Periodically updated feeds.
- Feeds created on-demand by search engines.
- Feeds built via queries to selected websites

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 `My Feeds` 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 problems:

1. Finding the Feed of a Website
2. 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

### 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:

- Some webpages have a simple statement such as
  `Feed at: http://xxx/xxx.rss`

  Copy the URL (the `http://xxx/xxx.rss`), select a folder, and paste it into the BottomFeeder `Add Feed` prompt.

- Some webpages use a special kind of link that you can click to have their feed added to your aggregator. These links look like other links with the link title underlined, but the link title says something like "my feed."
  Select `File > Register as default aggregator` in the BottomFeeder menu. This tells BottomFeeder program to add a special program to the Windows registry.
- Other times, you see this button in webpages

  Click this button and a new browser is opened on the feed itself - in all of its RSS and XML glory. Ignore everything but the URL of the feed file in the `Address` field of the browser. Copy this URL and paste it into a BottomFeeder `Add Feed` prompt.

- Fancier yet, you may see this button:

  Click this button and your browser passes the URL of the website's feed to BottomFeeder, which puts the new feed in the `My Feeds` folder. You can move it to a different folder if you want. Of course, BottomFeeder has to be running on your computer at the same time as the browser.

  Not every website knows about BottomFeeder, but you may see one of these buttons:

  If you are running BottomFeeder instead of one of these programs, click the button anyway. It does not matter which one you click; the URL always goes to BottomFeeder. (No, this is not piracy! Very few websites support more than one Feed Button, and you are not likely to be running more than one Feed Browser.)

  For this to work, make sure `Run Server Interfaces Compatible With Other Tools` is checked in the BottomFeeder Settings Window.
- One more button you may see is this one

  Click it and your browser takes you to a special website where a variety of Feed Browsers are registered. There, you will see some of the buttons already discussed, plus others for additional Feed Browser programs. Click the button for the Feed Browser running in your computer, such as BottomFeeder, and a subscription to the Feed is added to that program. (Here too, BottomFeeder accepts requests to any of the programs.)

- Another method, which is really only intended for use by programs (such as syndicators, browsers, and search engines) is to look in the source file of a website's main page. Select the `View Source` command in your browser's main menu. This gets you a display of the HTML source file of the page. Then look for something like the following within the <head></head> element near the top of the file:

  > <link rel="alternate" type="application/rss+xml" title="RSS" href="url/to/rss/file"/>

  The value of the "href" parameter is the URL of the site's feed. Can't find it? Too bad -- a lot of websites aren't doing this yet.

- You can also get your browser to look in a web page you are viewing for a link to a feed.

  Drag the following link (from this document) to your browser's `Links` toolbar:

  Bf Subscribe

  You may have to persuade your browser to show its "Links" toolbar. If you are using Windows Internet Explorer, keep selecting the `View > Toolbars > Links` command until it shows up.

  When you are looking at a webpage, select this link from your `Links` toolbar. If there is a feed present, it is added to the BottomFeeder `My Feeds` folder. You can then move it to a different folder if you want.

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.

- Each feed is linked to its source website. To go there, double-click the item or select the `Browsing > Launch browser on feed link` feed popup menu command. The website may have additional feeds for other categories of information.
- Each item of a feed is usually linked to a specific page (or fragment of a page) in its source website. To go there, double-click the item or select the `Launch browser on item` item tool.
- The description of an item presented in the Item Pane often has links to other webpages. This is particularly true of weblogs, in which "blog" entries often relate to each other or to pertinent webpages.

Contents

#### Blogging

A common practice of people who publish a blog is to include a blogroll, 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 - Feeds 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.

Contents

#### Internet Feed Builder

In addition to the feeds that websites build, you can also request custom built feeds from a number of websites, such as Google, Feedster, and Yahoo. BottomFeeder helps you to build a variety of pseudo-feeds. When you select one of the `Feeds > xxx feed builder...` commands, BottomFeeder asks a website to return the results of a search as a feed file. It adds the new feed to the currently selected folder, or to the `My Feeds` folder itself. In each of its feed update cycles, BottomFeeder asks the website 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 `Feeds > 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 folder, or to the `My Feeds` folder itself. In each of its feed update cycles, BottomFeeder asks Amazon to create a new feed for the same query string.

Contents

#### Headline News Feed Builder

When you select `Feeds > 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 folder, or to the `My Feeds` folder itself. In each of its feed update cycles, BottomFeeder asks the news service to create a new feed for the same query string.

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, select the `Items > Search BottomFeeder` command, and check the `Save as feed` check box. BottomFeeder builds a feed of items containing the query string you enter from the various items that it searched. BottomFeeder adds the new feed to the the selected folder, but it is not updated unless you select the feed.

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.

- If you select the `Feeds > Feed Auto-Discovery` command from the main menu, BottomFeeder creates a new folder for the feeds in the `My Feeds` root folder. The name of the new folder is derived from the search string.
- You can also select a folder in the tree and the `Discover feeds` command. BottomFeeder then adds the new feeds to that 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 popup menu commands:

- `Mark Feed > Mark feed inactive` tells BottomFeeder to stop updating the feed from its website. BottomFeeder also changes the color of the feed's icon to black.
- `Mark Feed > Mark feed active` tells BottomFeeder to restart the automatic updating of an inactive feed from its website. BottomFeeder immediately gets an update and changes the color of the feed's icon to red.
- `Update Feed` tells BottomFeeder to update the feed from the feed's website. This updates the list of items BottomFeeder has saved for the feed. BottomFeeder automatically updates subscribed feeds, but you can update a feed whenever you want.
- `Remove Feed` deletes the feed from the containing folder. Careful with this command; BottomFeeder deletes all items saved for the feed.
- `Regenerate Feed` removes the feed and rebuilds it from the website's feed file. BottomFeeder deletes all items saved for the feed before it gets new items from the website's feed file.
- `Feedback > Report feed error to author` opens a New Message window addressed to the provider of the feed so that you can report an error in the feed.

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:

- `Browsing > Launch browser on feed link` opens a browser on a page of the website specified by the feed, usual the website's home page. You can also double-click on the feed to launch this browser.
- `Feed Properties` opens the Feed Properties window which has two tabs:
  - General -- for properties common to all feeds.
  - Details -- for optional properties provided by some websites. You can copy selected information from the details into the system clipboard.
  - Settings -- for opertional settings that you can change.
  - Encoding -- to specify how the data of the feed is encoded.
- `Browsing > Launch browser on feed source` opens a browser on the feed's RSS file, with full RSS markup tags.
- `Feedback > Map it` opens a browser on the Acme Mapper website with the geographical coordinates specified by the feed's website. The displayed webpage shows a satellite image that locates the coordinates. You can then zoom in or out and move the starting point to explore the area. This command is available only for feeds that provide geographical coordinates.

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 `Feedback > 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 > Show 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 items interesting to him or her but boring to you. Alternatively, you my only be interested in seeing certain items of a feed (for example, science items), but no others. To eliminate items when they arrive, you can add filters to either all feeds (global filters) or only to selected feeds (local filters). These filters can be based on an item's category or on words contained in an item's title or contents. BottomFeeder applies global filters to all items of all feeds before it applies local filters to just a single feed.

To define global filters, select the `Items / Define global filters` command in the main menu. To define local filters, select a feed and the `Define filters` command of its popup menu.

When defining filters, remember that global filters are applied before local filters, and that the order in which items are filtered-in and filtered-out affects the filtering process.

Contents

### Getting Alerted 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 `Alerts > Add feed alert` command. BottomFeeder adds a bell icon to the feed's icon so you can see which feeds have alerts. When you no longer want an alert on a feed, select the feed and the `Alerts > Remove Feed Alert` 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 `View All Alerts` tool. In effect, you are alerted whenever new items show up in any subscribed feed.

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

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 feed > Mark all feed items as new` command or the `Mark feed > Mark all feed items as old` command.

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

| ## 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 current tab page of the `Item` pane. You can have multiple tab pages open on items at the same time, each representing a thread of your viewing of items. At any one time, only one tab page is highlighted as your current "working" page. Use the popup menu of the tabs to open and close tab pages. You can `Tear off` a page, which puts its contents into a separate window. Another feature of tab pages is that each maintains a history of the last 10 items you viewed in the page so that you can easily go `Back` or `Forward`.

The contents of an item 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 it is simple text, BottomFeeder displays it in the `Item` pane.
- If it is only a link, what BottomFeeder does depends on a program setting. If the `Auto-browse Empty Descriptions` setting is checked, it displays the referenced page in the `Item` pane; otherwise, it displays the URL of the link in the `Item` pane (which you can click to open a browser on that page).
- If there is both simple text and a link, BottomFeeder displays the text in the `Item` pane. To view the referenced page, use the `Launch Browser on Item` tool in the item toolbar.
- Double clicking an item in the `Item List` pane is the same as launching a new browser on the item.

If you are using the newspaper view of items, BottomFeeder displays items as scrollable pages of items. To obtain a newspaper view, use the `View > Show newspaper` command.

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, see if the `View > Show related items` command 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` tool in the item toolbar, 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.

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` tool in the item toolbar. BottomFeeder then changes its title back to red text.

You can mark all the items in a feed or folder by using:

- The `Mark all feed items as old` tool in the main toolbar.
- The `Mark item > Mark all items as old` command in a feed popup menu or a folder popup menu.
- The `Mark item > Mark all items as new` command in a feed popup menu or a folder popup menu.

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` tool in the item tolbar. 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

- Use the `View > Show hidden items` command in the feed's popup menu to see all deleted and filtered items.
- Use the `Restore deleted items to feed` tool in the main toolbar.

Contents

### Making Items Permanent

Sometimes there is an item that you want to keep indefinitely. Select the item and click the `Toggle permanence` tool in the item toolbar. 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 `Toggle permanence` tool again.

Contents

### Flagging Items

When you first read an item you may decide that you want to be able to easily come back to it at a later time. Select the item and the `Toggle Flagged` tool in the item toolbar. 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 `View > Show flagged` command in the main menu and BottomFeeder will display a list of all flagged items.

To unflag an item, select the item in and the `Toggle Flagged` tool.

Contents

### Getting Information About an Item

Additional information is available about each item. Select the item and click the `Item properties` command in the Item List popup menu. BottomFeeder opens the `Item Properties` window which has two tabs:

- General -- for properties common to all items.
- Details -- for optional properties provided by some websites. You can copy information from the details tab to the system clipboard.

Contents

### Commenting On Items

Some feeds allow you to comment on their items. Select the item and the `Send comment` tool in the item toolbar. BottomFeeder then opens the `Comment Poster` 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 the `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 `Feeds` tab in the BottomFeeder `Settings` window and uncheck the `Items new if new comments?` check box.

As mentioned above, some websites only provide links (URL's) to comments on items. 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 an item 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` window 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 tools in the item toolbar:

- `Print item` -- which formats the item as a printed page and sends it to your printer. You then have all the advantages of the "sneaker net" at your disposal.
- `Send item as e-mail` -- which formats the item as an e-mail message in a New Message window. You can then edit the message any way you want, and send it on to whomever you want.
  BottomFeeder does not support gmail as an smtp server or any mail server that uses ttls).
- `Save to file` -- which copies the item to a new file in your system. You can then handle it as any other file.
- `Blog it!` -- which opens the `Blog Poster` window with a reference to the item, so you can comment on it in your own blog.

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:

- You can copy the title of an item by selecting the item and clicking the `Copy item title` command in the Item List popup menu.
- You can copy the item's link by selecting the item and clicking the `Copy item link` command in the Item List popup menu.
- You can copy the item's source by selecting the item and clicking the `Copy item source` command in the Item List popup menu.
- In the `Item` pane, you can copy text by highlighting it and clicking the `Copy selected text` command in the Item List popup menu. (You can also use the common Ctrl-C and Ctrl-X keyboard shortcuts.)
- In the `Item` pane, you can copy a link within the text of the item by placing the mouse over the link and clicking the `Copy link location` command.

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 `Items > Search BottomFeeder...` command. BottomFeeder uses your query string to search the items in your feeds. The results are displayed in a new tab page in the Item pane.

BottomFeeder can also build a search-feed from the results of the search. A search-feed is like any other feed except that its items are derived from your other feeds. The icon of the search-feed includes a small magnifying glass to distinguish it from real feeds.

Contents

#### Internet Searches

Many websites allow themselves to be searched. The `Items > Search Internet...` command opens an `Internet Search` window, in which you can submit a query. BottomFeeder launches a browser on the results page returned by the searched website.

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 `Filters > 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 `Filters > 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 `Filters > Define Filters` to change the feed's filters.

Contents

| ## Other BottomFeeder Tasks

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 goes 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

### Working With Enclosures

An enclosure is like an attachment to an e-mail message; not part of the message, but sent with it. When BottomFeeder receives an item with enclosures, it lists them following the body of the item. If you select an enclosure, BottomFeeder immediately downloads it to a list of enclosures that it manages for you; otherwise, it schedules the download at the time specified in the Enclosure Manager Settings window. To add or remove enclosures from this list select the `Plugins / Enclosure manager` command. This opens the Enclosure Manager window.

Contents

### Saving and Restoring

For good performance, BottomFeeder works with folders, feeds and items 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 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.

- If both systems are connected to the Internet, all you have to do is select the `System > Synchronize` command in one of them. BottomFeeder prompts you for the name of the server with which you want to synchronize. For example, if you want to synchronize your laptop BottomFeeder with your desktop system, select the `System > Synchronize` command in your laptop BottomFeeder and specify the server address of the desktop system on which BottomFeeder is currently running. Specify just the name or IP address of the server (for example, `server.domain.com`); not a full URL (for example, `http://server.domain.com/...`).
- If one of the systems is not connected to the Internet, two steps are required:
  1. Select the `System > Save Synchronize File` command in the BottomFeeder system with which you want the other systems to synchronize; for example, the desktop system. If you save this file to a portable media (such as a CD-ROM), you can then use your sneaker-net to take it to the other systems.
  2. Select the `System > Load Synchronize File` command in the BottomFeeder system to be synchronized, and specify the name of the previously saved synchronization file.

Contents

| ## Working With Blogs

You can use BottomFeeder to keep up-to-date with many blogs, without having to browse each blog website individually. You may also have your own blog, so BottomFeeder gives you the tools you need to work with it -- while you are reading the feeds of other blogs! For instance, if you are reading a blog item and you want to write something to your blog about it, just select the `Blog It!` command from the `Item` menu. BottomFeeder opens the `Blog Poster` window, with references to the original item filled in for you.

There's a lot more to blogging than just that. The BottomFeeder blog poster provides a variety of services you can use to manage your blog efficiently.

Contents

### Creating Your Blog

This is the one thing that BottomFeeder does not do for you. There are many Internet services that specialize in setting up and maintaining blogs for users; among them are Blogger and Yahoo! 360°. Many companies also set up blog servers on their corporate networks for their employees.

If you are technically savvy, it is even possible to set up a blog server on your personal computer. In particular, a Smalltalk-based blog server called Silt is available (for free download) from the same programming team that developed BottomFeeder.

Contents

### Identifying Your Blog

You've created your blog, and maybe entered a few items using a blog server webpage form. Perhaps you've gone a bit further and defined an initial blogroll, again using a blog server webpage form. It worked, but... Let's face it, webpage forms are generally limited, inconvenient, and often ugly. Wouldn't it be great if you could do the same blog work on your laptop, and have it work with the blog server without much fuss on your part? The BottomFeeder blog poster does just that.

The blog poster is installed with the main BottomFeeder program. To use it, select `Plugins > Bottom Line` in the main menu. BottomFeeder opens the `Blog Poster` window, after connecting to your blog server. You're now ready to enter your next blog item, or do any of the other tasks required by a successful blog.

However, there is one little thing you have to do the first time you start Bottom Line. You have to tell it how to find your blog and how to interact with it. Select `Settings > Posting Settings` in the main menu of Bottom Line. This opens a `Settings` window. Fill in the blanks as specified by your blog server.

There are two key bits of information you need from your blog server:

1. How does the blog server want you to identify yourself: by what `username` and by what `password`.
2. What Application Programming Interface (API) does the blog server want you to use? Bottom Line supports four different API's, named for the blog servers that defined them; select the correct one in the dropdown menu on the `Basic Settings` page. Then go to the settings page for that API and fill in the requested information.

Incidentally, you can work with more than one blog with Bottom Line. Set up a `Settings profile` for each, and checkmark the one you want to use in Bottom Line's `Site` menu.

Contents

### Creating and Updating Blog Items

A blog item consists of several components, all of which you can enter and edit using Bottom Line:

- Subject - a one-line summary of what the item is about. The subject accompanies the item in the blog's feed as its title. BottomFeeder displays it as a teaser for the item, and supports both the filtering and searching of items based on words in the subject. The subject of a new item can be specified in the blog poster.
- Category - a word or phrase that pin-points what the item is about. The category also accompanies the item in its feed. BottomFeeder displays the category with the subject, and supports both the filtering and searching of items based on category. The category of a new item can be specified in a dropdown menu of the blog poster. This menu is initially populated by querying the blog server for the categories that you have already used for other items.
- Body - the text of the item, marked-up to show how it should be formatted for presentation. The blog poster supports several styles of markup. The item's body can also contain the Internet addresses (URL's) of images to be included in the body, and links to other websites. You may want these resources to reside in your blog server along with the item, so the blog poster supports the uploading of files.
- Enclosures - the Internet addresses (URL's) of resources related to the item, often large documents or audio or video files, that the reader of the item may optionally want to request. When BottomFeeder receives an item with enclosures, it lists them following the body of the item. They can be immediately requested, or handed off to the `Enclosure Manager` tool that schedules them for downloading.

Writing blog items isn't necessarily a one-time shot. Often it is better to put an item aside, do something else, and then come back to it. The `File > Save Draft` command of the blog poster gives you a convenient way to save the current item for followup work. Be sure to give the item a subject, because that is how you will be able to find it later, using the `File > Open > Drafts` command.

When you are satisfied with the contents of an item, use the `Post > Preview` command to see how it will be presented in a `Browsing` window. After closing the preview, use the `Post > Post/Update` command to send the item to your blog server. A message at the bottom of the blog poster tells you if the server accepted it.

What if you browse your blog's home page to see a newly posted item, or for some reason look at an older item, and find something you want to change? No problem. Use the blog poster's `File > Open > By Id` command to retrieve the item and make it the current item. You can then edit it, preview it, and post it back to the blog.

If the feed of your blog is in the BottomFeeder `Tree` pane, you can obtain an item's identifier by selecting the feed, selecting the item, and displaying its properties. But there is a still more convenient way to download items from your blog. Select the `File > Open > From server...` command, and the blog poster downloads the subjects of the most recent items. Select one of them, and the blog poster downloads the whole item.

Contents

### Uploading Files to Your Blog

An item can contain images and links to other webpages. These resources are identified by their URL's and can be anywhere in the Internet, but it is often convenient to be able to store them in the blog server. The blog poster helps you to do this.

First, you need to specify the directory in the blog server into which the files are to be uploaded. Select the `Settings / Posting Settings` command; then specify the directory name in the `Upload directory` area of the `Basic Settings` page. You'll have to obtain the name of this directory from your blog server.

For each file you want to upload, select the `Post > Add file to upload...` command, and select the file. You can look over the list of files to upload by selecting the `Post > Edit file to upload...` command, and add or remove files in the `File Upload Editor` window.

To actually upload the files, select the `Post > Upload files` command.

Contents

### Editing Enclosures

In addition to the text of its body, an item can link to Internet resources, such as documents, audio files and video files, that can be downloaded by readers of the item. These links are called enclosures. To add enclosures to an item, select the `Post > View > Define post enclosures` command. This opens the `Enclosure Editor` window, in which you can add or remove the URL's of resources to be enclosed in an item.

Contents

### Editing Your Blogroll

Blogs usually have a list of links to websites that the owner of the blog finds of particular interest and recommends to his readers. This list is called a blogroll. To manage your blogroll, select the `Post > Blogroll tool` command. This opens the `Blogroll Editor` window. You can download your blogroll from your blog, add or remove entries, and then upload the revised blogroll.

Contents

### Editing Trackback Requests

Some of the feed items that BottomFeeder receives include a trackback request -- a request that their source website be notified whenever anyone links to the item in a new blog item. When you create a new item in your blog with a link to an item, BottomFeeder finds these requests and puts them in a trackback request list. It then sends a trackback message to the source website of each of these requests.

You can also create a list of additional websites to which you want a trackback message to be sent for every item you add to your blog. Select the `Post > Trackback request editor...` command. This opens the `Trackback Request Editor` window. You can also remove websites from your list.

Contents

### Editing Blog Templates

Some blog servers allow the owners of the blogs they host to specify a template that determines how their blog's webpages appear in browsers. These templates consist of some combination of HTML, CSS, and scripts. With the blog poster, you can download template files to your local system, edit them, and upload them to the blog. Use the `Post > Download template named...` command and the `Post > Upload template named...` command.

Contents

| ## Regular Expressions

BottomFeeder supports a powerful search engine for the items of your feeds. It applies the pattern you give it to the items of the feeds it has saved for you, and returns only those items that contain text that match the pattern.

BottomFeeder supports two different kinds of patterns in the `BottomFeeder Search` window. The first kind is a simple string that you want to match; either an item contains an instance of that string or it doesn't. The second kind, known as a Regular Expression (or "regex"), is actually a type of program, that BottomFeeder executes against the title, body or category of an item.

A regular expression can also be thought of as a template that specifies a class of strings. A regular expression matcher is a tool that determines whether a string belongs to a class specified by a regular expression. BottomFeeder can use such a matcher to do searches and filtering.

The following section describes regular expressions in terms of a single match of a pattern to a fixed length string; the result being true or false for the entire string. In practice, though, BottomFeeder scans an item's title, category or body for any occurrence of the pattern.

Contents

### Regular Expression Syntax

This section was adapted from comments by Vasilli Bykov on the syntax of regular expressions as supported by VisualWorks Smalltalk.

The simplest regular expression is a single character. It matches exactly that character. A sequence of characters matches a string with exactly the same sequence of characters.

BottomFeeder's support of regular expressions ignores case.

String | Regular Expression | Result
--- | --- | ---
'a' | 'a' | true, the single character matches
'a' | 'A' | true, BottomFeeder matches ignore case
'A' | 'a' | true, BottomFeeder matches ignore case
'foobar' | 'fooBar' | true, all characters match
'fooBar' | 'foobar' | true, all characters match
'blorple' | 'foobar' | false, nothing matches

The above paragraph introduced a primitive regular expression (a character), and an operator (sequencing). Operators are applied to regular expressions to produce more complex regular expressions. Sequencing (placing expressions one after another) as an operator is, in a certain sense, invisible--yet it is arguably the most common.

Another operator is an asterisk (*), often referred to as a star. A regular expression followed by an asterisk matches any number (including 0) of matches of the original expression. For example:

String | Regular Expression | Result
--- | --- | ---
'ab' | 'a*b' | true, a single a is enough to match
'aaaaab' | 'a*b' | true, multiple a's match
'b' | 'a*b' | true, no a is still a match
'aac' | 'a*b' | false, there is no b to match

A star's precedence is higher than that of sequencing. A star applies to the shortest possible subexpression that precedes it. For example, 'ab*' means 'a' followed by zero or more occurrences of 'b'; it does not mean zero or more occurrences of 'ab'.

String | Regular Expression | Result
--- | --- | ---
'abbb' | 'ab*' | true
'abab' | 'ab*' | false

To actually make a regular expression that matches zero or more occurrences of 'ab', `ab' is enclosed in parentheses.

String | Regular Expression | Result
--- | --- | ---
'abab' | '(ab)*' | true
'abcab' | '(ab)*' | false, c spoils the match

Two other operators are similar to `*':

- `+' (plus) matches one or more occurrences of the original expression.
- `?' (optional) matches zero or one, but never more, occurrences.

String | Regular Expression | Result
--- | --- | ---
'ac' | 'ab*c' | true
'ac' | 'ab+c' | false, at least one b is needed
'abbc' | 'ab+c' | true
'abbc' | 'ab?c' | false, too many b's

As we have seen, characters `*', `+', `?', `(', and `)' have special meaning in regular expressions. If one of them is to be used literally, it should be preceded by a backslash. (Thus, backslash is also special character, and needs to be preceded by a backslash for a literal match -- as well as any other special character described further).

String | Regular Expression | Result
--- | --- | ---
'ab*' | 'ab*' | false, the * in the regular expression is a special character
'ab*' | 'ab\*' | true
'a\c' | 'a\\c' | true

The last operator is `|' meaning `or'. It is placed between two regular expressions, and the resulting expression matches if one of the expressions matches. It has the lowest possible precedence (lower than sequencing). For example, `ab*|ba*' means a followed by any number of b's, or b followed by any number of a's'.

String | Regular Expression | Result
--- | --- | ---
'abb' | 'ab*|ba*' | true
'baa' | 'ab*|ba*' | true
'baab' | 'ab*|ba*' | false

A bit more complex example is the following expression, which matches the name of any of the Lisp-style `car', `cdr', `caar', `cadr', ... functions.

String | Regular Expression | Result
--- | --- | ---
'car' `cdr' `caar' `cadr' | 'c(a|d)+r' | true, all of these strings match.

It is possible to write an expression matching an empty string, for example: `a|'. However, it is an error to apply `*', `+', or `?' to such expression: `(a|)*' is an invalid expression.

Contents

### Regular Expression Character Sets

So far, we have used only characters as the smallest components of regular expressions. There are other, more interesting, components.

A character set is a string of characters enclosed in square brackets. It matches any single character if it appears between the brackets. For example, `[01]' matches either `0' or `1'.

String | Regular Expression | Result
--- | --- | ---
'0' | '[01]' | true
'3' | '[01]' | false, '3' is not in the set
'11' | '[01]' | false, a set matches only one character
'11' | '[01]*' | true
'1011' | '[01]+' | true
'1021' | '[01]+' | false, '2' is not in the set

For convenience, a set may include ranges: pairs of characters separated with `-'. This is equivalent to listing all characters between them: `[0-9]' is the same as `[0123456789]'.

If the first character after the opening bracket is `^', the set is inverted: it matches any single character not appearing between the brackets.

String | Regular Expression | Result
--- | --- | ---
'0' | '[^01]' | false
'3' | '[^01]' | true

Special characters within a set are `^', `-', and `]' that closes the set. Below are the examples of how to literally use them in a set:

    [01^] -- put the caret anywhere except the beginning
    [01-] -- put the dash as the last character
    []01] -- put the closing bracket as the first character
    [^]01]   (thus, empty and universal sets cannot be specified)

Regular expressions can also include the following backquote escapes to refer to popular classes of characters:

    \w -- any word constituent character (same as [a-zA-Z0-9_])
    \W -- any character but a word constituent
    \d -- a digit (same as [0-9])
    \D -- anything but a digit
    \s -- a whitespace character
    \S -- anything but a whitespace character

These escapes are also allowed in character classes. '[\w+-]' means any character that is either a word constituent, or a plus, or a minus.

Character classes can also include the following (grep(1)-compatible) elements:

    [:alnum:] -- any alphanumeric -- '[A-Za-z0-9]'.
    [:alpha:] -- any alphabetic character -- '[A-Za-z]'.
    [:cntrl:] -- any control character. Any character with a code < 32.
    [:digit:] -- any decimal digit -- '[0-9]'.
    [:graph:] -- any graphical character. Any character with a code >= 32.
    [:lower:] -- any lowercase character -- '[a-z]'.
    [:print:] -- any printable character. This is the same as [:cntrl:].
    [:punct:] -- any punctuation character.
    [:space:] -- any whitespace character.
    [:upper:] -- any uppercase character -- '[A-Z].
    [:xdigit:] -- any hexadecimal character -- '[0-9A-F]'.

Note, because these elements are components of the character classes, they have to be enclosed in an extra set of square brackets to form a valid regular expression. For example, a non-empty string of digits would be represented as '[[:digit:]]+'.

So far, we have seen the following equivalent ways to write a regular expression that matches a non-empty string of digits: '[0-9]+', '\d+', '[\d]+' and '[[:digit::]+'.

Finally, a group of special primitive expressions includes:

    . -- matching any character except a newline;
    ^ -- matching an empty string at the beginning of a line;
    $ -- matching an empty string at the end of a line.
    \b -- an empty string at a word boundary
    \B -- an empty string not at a word boundary
    \< -- an empty string at the beginning of a word
    \> -- an empty string at the end of a word

String | Regular Expression | Result
--- | --- | ---
'axyzb' | 'a.+b' | true
'ax zb' | 'a.+b' | false, a space is not matched by `.'

Again, the characters '.', '^' and '$' are special and should be preceded by a backslash to be matched literally.

Contents

| ## Glossary

Aggregator
  A client tool for assembling feeds from multiple websites for convenient reading (e.g., BottomFeeder).
Blog
  See weblog.
Blog Roll
  A list of links in a your blog to other blogs (and websites) that you recommend to your readers.
Browser
  A client tool for viewing webpages (e.g., Windows Internet Explorer or Netscape).
Enclosure
  The URL of a resource that is enclosed within a message but not embedded in the text of the message.
Feed
  A file published by a website about recent changes to its resources. A feed is itself a resource of a website.
Link
  A pointer to an Internet resource, consisting of a description (or title) of the resource and its URL.
Resource
  A file containing text, images, and other media.
RSS
  Really Simple Syndication -- the Internet standard for the format of feeds.
Search engine
  A website devoted to searching many websites for information (e.g., Google).
Syndicator
  A website that brings together and organizes the feeds of many websites (e.g., Syndic8).
Trackback
  An Internet message that specifies the URL of its sender and identifies a specific resource of the sender (such as a blog item).
URL
  Universal Resource Locator -- the address of an Internet resource.
Weblog
  blog -- a website whose pages consist of items in reverse timestamp order. Often personal journals, blogs are beginning to be used for many purposes.
Webpage
  A collection of linked resources of a website presented as a page by a browser.
Website
  A repository of URL linked resources.

Contents

| ## The End