Contents |
|- 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.
BottomFeeder has been released as an Open Source program, under the Artistic License. When you download it, you agree to abide by this license.
The following documents are available to help you get the most benefit from BottomFeeder:
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.
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.
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.
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!
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.
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.
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."
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.
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:
BottomFeeder provides facilities for working with
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.
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:
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.
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.
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.
Working With Feeds |
Finding the feed of a website is usually easy -- if it has one. The website tells you in one of these ways:
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.
File > Register as default aggregator
in the BottomFeeder menu. This tells BottomFeeder program to add a special program to the Windows registry.
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.
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.
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.)
Run Server Interfaces Compatible With Other Tools
is checked in the BottomFeeder Settings Window.
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.)
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.
Drag the following link (from this document) to your browser's Links
toolbar:
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.
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.
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.
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.
Browsing > Launch browser on feed link
feed popup menu command. The website may have additional feeds for other categories of information.Launch browser on item
item tool. 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.
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.
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.
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.
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.
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.
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.
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. Discover feeds
command. BottomFeeder then adds the new feeds to that folder.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.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:
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.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.
Send comment on item
command.
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.
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.
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.
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.
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.
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.
Item
pane. 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).Item
pane. To view the referenced page, use the Launch Browser on Item
tool in the item toolbar.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.
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.
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.
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.
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:
Mark all feed items as old
tool in the main toolbar.Mark item > Mark all items as old
command in a feed popup menu or a folder popup menu. Mark item > Mark all items as new
command in a feed popup menu or a folder popup menu.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
View > Show hidden items
command in the feed's popup menu to see all deleted and filtered items.Restore deleted items to feed
tool in the main toolbar.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.
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.
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:
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.
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.
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.
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.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:
Copy item title
command in the Item List popup menu.Copy item link
command in the Item List popup menu.Copy item source
command in the Item List popup menu.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.)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.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.
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.
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.
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.
Filters > Define Filters
to change the feed's filters.
Other BottomFeeder Tasks |
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.
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.
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.
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.
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.
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/...
).
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.System > Load Synchronize File
command in the BottomFeeder system to be synchronized, and specify the name of the previously saved synchronization file.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.
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.
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:
username
and by what password
.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.
A blog item consists of several components, all of which you can enter and edit using Bottom Line:
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.
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.
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.
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.
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.
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.
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.
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.
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 `*':
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.
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.
Glossary |
The End |