TidBITS#401/20-Oct-97
=====================

  Feeling geeky? Matt Neuburg reviews Text Machine, the grep utility
  for more of us. We also finish off Rick Holzgrafe's Successful
  Shareware series, staving off accusations of it being the article
  equivalent of Zeno's Paradox. Other topics include details about
  Apple's fourth quarter loss, a pointer to extensive information on
  dealing with spam in the last two issues of NetBITS, Apple price
  reductions, and the long-awaited release of Spring Cleaning 2.0.

Topics:
    MailBITS/20-Oct-97
    Successful Shareware, Part 4
    Win One For the Grepper: Text Machine

<http://www.tidbits.com/tb-issues/TidBITS-401.html>
<ftp://ftp.tidbits.com/pub/tidbits/issues/1997/TidBITS#401_20-Oct-97.etx>

Copyright 1997 TidBITS Electronic Publishing. All rights reserved.
   Information: <info@tidbits.com> Comments: <editors@tidbits.com>
   ---------------------------------------------------------------

This issue of TidBITS sponsored in part by:
* APS Technologies -- 800/443-4199 -- <sales@apstech.com>
   Makers of M*Power Mac OS compatibles & premium storage devices.
   APS product info and price lists: <http://www.apstech.com/>

* Northwest Nexus -- 800/539-3505 -- <http://www.nwnexus.com/>
   Professional Internet Services. <info@nwnexus.com>

* Small Dog Electronics -- Special Deal for TidBITS Readers! <----- NEW!
  PowerBook 190/66 8/500 with Megahertz 28.8 Kbps fax modem: $699
  For Details: <http://www.smalldoggy.com/#tid> -- 802/496-7171
  ---------------------------------------------------------------

MailBITS/20-Oct-97
------------------

**Recently in NetBITS** -- If you're interested in the burgeoning
  problem of spam email, check out the last two issues of NetBITS.
  In NetBITS-003_, Adam wrote what's can be done personally,
  commercially, and legally to limit the vast quantity of unwanted,
  unsolicited, commercial email many of us now receive. Then, in
  NetBITS-004_, NetBITS Editor in Chief Glenn Fleishman looked at
  ways of stopping spam at the server level. Other topics included a
  look at how time zones relate to the times displayed in email
  headers, how to use the Internet to set your computer's clock
  correctly, and thoughts about purchasing ISDN equipment for a
  small office. You can read these back issues of NetBITS on our Web
  site and subscribe to NetBITS for free by sending email to
  <netbits-on@netbits.net>. [ACE]

<http://www.netbits.net/nb-issues/NetBITS-003.html>
<http://www.netbits.net/nb-issues/NetBITS-004.html>


**Apple Posts $161 Million Fourth Quarter Loss** -- Last week,
  Apple posted its fourth quarter results, which included a $161
  million net loss. For the year, Apple's revenues totaled $7.1
  billion, down 28 percent from $9.8 billion in 1996. The net loss
  for 1997 reached $1.0 billion, compared to an $816 million loss in
  1996. Though the $161 million loss is nothing to crow about,
  without the charges Apple took related to the acquisition of Power
  Computing's Macintosh assets, it would have been a $24 million
  loss. Also positive was the reduction in recurring operating
  expenses to $353 million, down from $408 million in the third
  quarter of 1997 and $505 million in the fourth quarter of 1996.
  Helpful were the strong sales of Mac OS 8, which has sold two
  million copies since its July release. The $1.0 billion net loss
  for the year is alarming, but remember it contains restructuring
  charges of $217 million and $450 million in write-offs related to
  the NeXT and Power Computing acquisitions. Without that $667
  million in one-time charges, the 1997 $1.0 billion loss drops to
  $333 million. [ACE]

<http://product.info.apple.com/pr/press.releases/1998/q1/
971015.pr.rel.q497.html>


**Apple Cuts Prices, Begins Rebates** -- Last week, Apple
  decreased pricing dramatically on the PowerBook 3400 and Power
  Macintosh 8600. For instance, Apple dropped the price on the Power
  Macintosh 8600/300/Zip from $3,200 to $2,600 and the PowerBook
  3400c/200 decreased from $4,500 to $3,800 (see the PowerBook 3400
  review in TidBITS-371_). Additionally, Apple has instituted a
  series of rebates designed to encourage people to purchase Apple
  peripherals either singly or in tandem with a new Mac. For
  example, the Apple QuickTake 200 digital camera ($550 street
  price) comes with a $75 rebate if purchased alone or a $150 rebate
  if purchased with certain Macs. Apple traditionally drops prices
  in anticipation of upcoming product releases; no doubt this
  promotion relates to the forthcoming release of the so-called
  Gossamer Macs. [TJE]

<http://product.info.apple.com/pr/press.releases/1998/q1/
971013.pr.rel.addontakeoff.html>
<http://db.tidbits.com/getbits.acgi?tbart=00702>
<http://www.zdnet.com/macweek/mw_1137/nw_gossamer.html>

  Cyberian Outpost has updated its DealBITS deal on the PowerBook
  3400, and - through the URLs below - is offering a 200 MHz model
  for $3,679 and a 240 MHz model for $4,427. This deal reflects a
  $50 discount from the regular Cyberian Outpost price.

<http://www.tidbits.com/products/power-book-3400c-200.html>
<http://www.tidbits.com/products/power-book-3400c-240.html>


**Aladdin Releases Spring Cleaning 2.0** -- Aladdin Systems today
  started shipped the long-awaited upgrade to Spring Cleaning 2.0,
  the popular uninstaller utility for the Macintosh. Spring Cleaning
  helps you clean up your hard disks by removing redundant and
  unnecessary files in ten different ways. Changes and additions
  from Spring Cleaning 1.0 include a new, easier interface; a
  Duplicates Remover module that finds and removes duplicate files;
  Storage Folders that can act as temporary holding spots until you
  feel confident in deleting files; and archiving with StuffIt
  compression, if you want to save space without deleting files.
  Features remaining from 1.0 include the capability to uninstall
  applications and their related files, remove unnecessary PowerPC
  or 68K code within fat binary applications, remove orphaned
  preferences, fix broken aliases, remove empty folders, and more.
  Spring Cleaning 2.0 requires System 7.0 or later, and it lists for
  $120; free upgrades from 1.0 will be available on Aladdin's Web
  site through 31-Dec-97. [ACE]

<http://www.aladdinsys.com/springcleaning/index.html>


Successful Shareware, Part 4
----------------------------
 by Rick Holzgrafe <rick@kagi.com>

  Part one of this article (see TidBITS-395_) focused on two items
  from my list of seven "Ps" that shareware authors must consider:
  Product and Patience. The second installment covered the third P,
  Polish (see TidBITS-398_). After talking about Pay Up and
  Propagation in the last issue (see TidBITS 400_), it's time to
  wrap up with the final two Ps: Promotion and Politics.

<http://db.tidbits.com/getbits.acgi?tbart=04108>
<http://db.tidbits.com/getbits.acgi?tbart=04155>
<http://db.tidbits.com/getbits.acgi?tbart=04181>


**The Sixth P: Promotion** -- "If you build it, they will come."
  I'm here to tell you they won't. If you don't advertise your
  software, few people will notice it or buy it. Promotion (also
  called evangelism) is the art of shouting good news about your
  product and getting other people to shout good news about it, too.
  It takes time and effort and perhaps a little money, but it's
  essential to your success. Here are some ways to start shouting.


**Promotion: Advertising** -- If you have the bucks, you can
  make people notice your product. Just buy advertising everywhere:
  in magazines, on Web sites, on TV, in inserts in other people's
  commercial products.

  The trouble with that idea is that it takes a barrel of bucks.
  Advertising is hideously expensive, and few shareware authors can
  afford it. In ten years of selling shareware, I have never paid a
  penny for advertising. That's not because I don't approve of
  advertising, but because a penny buys precious little ad space and
  I've never had the ton-weight of pennies it would take to buy
  significant ad. Ads in major magazines, for example, cost
  thousands of dollars, and even in my dreams I don't have enough
  money to consider television ads, which can cost tens or hundreds
  of thousands of dollars.

  Lately an alternative has appeared that might be worth
  considering. Many major Web sites support themselves by selling ad
  space, and the starting rates are in the low hundreds of dollars:
  high for anyone on a shoestring, but not out of the question for
  everyone. I haven't tried it myself, so I can't recommend it -
  maybe it's worthwhile, maybe not. But all publicity is good, so if
  you can afford a small Web ad, it might be worth the experiment.


**Promotion: Your Web Site** -- Set up a Web site of your own.
  This won't cost you more than $20 or $30 per month from most ISPs,
  and you may be paying for it already. If not, you should be: this
  is a case of spending a little money in order to make more. If you
  can't hack raw HTML, then invest in any of the good HTML editors
  that are now available - there are plenty, just pick one.

  Your site should offer the same information that's in your Read Me
  file. Unlike a Read Me file, however, your site is primarily an
  advertisement, so organize it differently: put the boring (but
  important) info near the bottom, and put your brags and puffery
  near the top. Don't go wild with huge graphics: many users won't
  wait for a big page to load over a slow modem. Do make the page as
  good-looking and professional as possible (just like your
  product). You can put big screen shots on separate pages for
  people who are willing to put up with big downloads. Use smaller
  screen shots or thumbnails on your main page, along with your
  company and product logos. In your download area, for a Mac
  product, offer pointers to selected Info-Mac and UMich mirrors
  around the world. Redundancy is good, because not all sites are
  available all the time.

  If your product becomes popular, your $20 Web site may not be able
  to handle the load. When that happens, find a more expensive site
  that can take the traffic. It's worth it! When you can afford it,
  register a domain name of your own with InterNIC for $50 per year.
  That way your site will be easier to find (www.semicolon.com is
  all it takes to find mine) and you'll be able to move your site to
  another provider without invalidating links and bookmarks to your
  old one, which can prove invaluable.

<http://www.semicolon.com/>


**Promotion: Other Web Sites** -- There are a zillion Web sites,
  and some of them attract people who should be your customers. Some
  are shareware sites, some are concerned with the work or play that
  your product offers. Find these sites and send mail to their
  webmasters. Give them your elevator presentation, ask them to link
  to your site promise to link back to theirs, and ask them to
  review your product. Evangelize! Be polite, but get their
  attention.


**Promotion: Usenet News** -- Usenet is a great, free way to
  spread the word. But be careful - you will anger many people if
  you use newsgroups for blatant advertising. Newsgroup readers will
  generally put up with brief, to-the-point announcements of your
  new releases; they'll regard those as public service
  announcements. But if you post every week with, "Check out this
  great software!" you will drown in hate mail. Respect Usenet: only
  post when you have news, and only post in appropriate newsgroups.


**Promotion: Press Releases** -- Use a press release to blow your
  own horn. News organizations want press releases; it's one of the
  major ways they get news about the business world. [If you post a
  press release on your Web site, make it easy for the press to
  locate it. Many sites have a press link on the home page, or link
  from the home page to an "About Us" page that then links to press
  releases. You might also reference a press release from the page
  belonging to the product it describes. -Tonya]


**The Seventh P: Politics** -- The last of our Seven P's is
  Politics: the art of making nice. You want to make as many friends
  as you can, for two reasons. First, friends are cool! Second, a
  good collection of friends adds up to a tremendous amount of
  goodwill, an asset for any business or person.


**Politics: Be Nice** -- Always be courteous, no matter what the
  circumstances. Say "please" and "thank you" a lot, just like Mom
  taught you. Before sending a message, read it, re-read it, and
  look for ways in which the reader might misunderstand what you're
  saying. Many shareware authors are not great writers, and it's
  easy to write something that unintentionally gives offense. Your
  readers can't see your face or hear your tone of voice, and they
  may not realize you're trying to be funny or sarcastic. If you
  distribute your product via the Internet, it's especially
  important to consider that English may not be the first (or
  principal) language of your readers. Be clear and precise.


**Politics: Help Everybody** -- I made the mistake in my early
  years of refusing to provide technical support to people who
  hadn't paid their shareware fees. One day I refused service to
  someone whose check I had misplaced. I apologized profusely, but
  the damage was done: that person will never buy my software again,
  and will tell others what a lousy person I am. Now, I support
  everyone, and I don't ask whether they've paid.

  Helping everybody has another benefit. Many of your users (the
  "mouse potatoes" I talked about in part three of this series)
  won't pay until they need something from you. Give them a little
  support and - presto - a check shows up in the mail.


**Politics: Make Friends** -- I mentioned the benefits of making
  friends already. What kind of friends can you make?

  Developers are good friends. They can help solve technical
  problems, and give advice on selling your products. In return, of
  course, you help them solve their problems, and share your own
  good advice.

  Artists are good friends. Even if they can't contribute free
  artwork, they can offer good advice on graphic design, and perhaps
  point you to artists within your budget.

  Journalists are good friends. They can offer advice on promoting
  your products, they can tell you about trends in your part of the
  industry, they may be willing to write reviews, and they will
  listen in a most flattering manner to any news, gossip, or opinion
  you can offer in their areas of interest. Plus, they're fun to
  listen to: they're knowledgeable and good with words.

  Webmasters are good friends. They can publish links to your site,
  advise you on site design, and occasionally offer you an
  interesting opportunity,perhaps an offer of advertising space in
  return for a few free copies of your product to their raffle
  winners.

  But mostly, friends are good to have. Friends are better than
  money, better than fame. I've met some of my best friends through
  my shareware business - even though I've never seen some of them
  face to face. So make friends, lots of them! It's the best advice
  I can give.

  That's it folks. I've given my take on the seven P's of shareware
  success. If you'd like to further explore this topic, check out my
  page of links to more information.

<http://www2.semicolon.com/Rick/ShareSuccess/SharewareLinks.html>

  [Rick Holzgrafe has programmed for a number of well-known Silicon
  Valley firms when he's not crafting shareware products.]


Win One For the Grepper: Text Machine
-------------------------------------
  by Matt Neuburg <matt@tidbits.com>

  They walk among us - the greppers. One might be sitting next to
  you at this very moment. In fact, you might be one yourself. Yes,
  you! You may never have grepped before; you may not even know what
  grepping is; yet chances are good that within you too, inchoate
  and amorphous, has stirred a secret need to grep.

  Now that I have your attention, what on earth am I talking about?
  The fact that GREP originates as a Unix acronym for "global
  regular expression and print" need neither detain nor deter us.
  Let's just let "grep" mean a certain kind of powerful text search
  or search-and-replace without which life as we know it would be
  impossible, or at least meaningless. Lots of everyday text-
  manipulation tasks turn out to be a snap with grep.

  In the past, I have routinely amazed friends (and astounded
  enemies) with feats of greppy legerdemain, solving seemingly
  baffling text processing problems. For instance, someone once
  approached me with a text file that he wanted to import into an
  existing database. The file consisted of thousands of tab-
  delimited lines:

> John  [tab]  Doe    [tab]  473   [tab]  yes
> Dick  [tab]  Smith  [tab]  2471  [tab]  no
> Jane  [tab]  Brown  [tab]  587   [tab]  yes

  The problem? The database expected the last name first, first name
  second, and could not easily switch them. The names had to be
  switched before the import took place. My friend was stunned as I
  opened his file with Nisus Writer, asked it to find all instances
  of:

> ^\(.:*\)\t\(.:*\)\t

  and replace them with:

> \2\t\1\t

  and calmly returned his file to him. This friend was a perfect
  example of someone who needed to grep, but didn't know anything
  about it. Why not?

  Perhaps it's because the only way to grep is to own a word
  processor (or text processor) with a built-in grep facility, and
  then to learn to construct expressions which, unless you're a
  computer, are opaque to the point of illegibility. And as if that
  weren't bad enough, different programs implement grep in different
  ways (my Nisus Writer example above would fail in BBEdit). But
  PreFab Software is changing all that, with the release of Text
  Machine 1.0.

  The Text Machine concept is that of a universal grep utility. You
  learn just one grep, Text Machine's; then you call upon Text
  Machine from another application. And Text Machine wants you to be
  able to grep successfully, so not only does it provide a powerful
  variety of grep, but also the commands that you give it are
  English-like, and much simpler to work with than grep's normal
  backslashy mess. Text Machine is scriptable - that's how other
  applications talk to it. So you can command it remotely, and you
  can share grepping capabilities with less technically inclined
  colleagues who also own Text Machine, just by giving them a
  script.

<http://www.prefab.com/>

  It's a wonderful idea, but the best is yet to come. Ideally, what
  you'd like is for Text Machine to put up a find-and-replace
  dialog, complete with pop-down menus so you barely have to learn
  any grep at all, and make changes directly in your application.
  And indeed, that seems to have been PreFab's original plan - Text
  Machine was to be an OpenDoc part. But then things were derailed
  by Apple's abandonment of OpenDoc, and the dialog interface has
  been postponed to version 1.1. I've seen an alpha of this, and had
  a blast doing dialog-based grep find-and-replace within Eudora.
  But right now, Text Machine lacks an interface; the _only_ way to
  communicate with it is via scripting (typically, in AppleScript or
  Frontier's UserTalk). To many of us, that's a pleasure, not a
  problem; but if you don't feel up to it, perhaps you'll want to
  wait for 1.1.


**Grep School** -- Though I dearly love Nisus Writer's grep, I do
  admit that a certain portion of its satisfaction lies in the
  hocus-pocus factor. How can gibberish be so powerful? If I had
  used Text Machine when I helped my friend prepare his file for
  import, I might have lost my honorary warlock status, upon giving
  my friend an AppleScript script that does the same thing (when
  executed, for instance, in Apple's own Script Editor):

    tell application "Text Machine" to
      replace in alias "HD:yourFile" all
        "[(textstart or paragraphdelimiter)1]" &
        "[(column)2, tab]" &
        "[(column)3, tab]" with
        "[group1, group3, tab, group2, tab]"

  This is still in code, to be sure, but a more English-like code,
  quite comprehensible once you know a few facts. The things in
  parentheses with numbers after them are groups. The term "column"
  means the whole text within a column, everything between one tab
  or return and the next. So, the first group is whatever precedes a
  paragraph; the second group is everything in a paragraph up to the
  first tab; and the third group is everything between the first tab
  and the second tab. We then just swap the second and third groups.

  Here's another example of Text Machine's grep. Yesterday (truly!),
  an acquaintance wanted to extract the title of any HTML document
  (that is, what's between the <title> tags). This would work in
  most cases:

    tell application "Text Machine" to
      extract in alias "HD:my Web site:default.html" first
        "['<title>']" &
        "[(shortest oneOrMore char)1]" &
        "[htmlTag]"
        transform with "[group1]"

  Single-quotes denote stretches of literal text. The addition
  "transform with" performs a replacement on the text returned to
  us, not in the original; so we end up with group 1, which is
  precisely everything between the <title> tag and the next tag
  (which we may assume is </title>).

  A more generalized solution requires us to supply alternatives for
  every letter, because Text Machine is case-sensitive:

    tell application "Text Machine" to
      extract in alias "HD:my Web site:default.html" first
        "['<']" &
        "[('t' or 'T'), ('i' or 'I'), ('t' or 'T')]" &
        "[('l' or 'L'), ('e' or 'E')]" &
        "['>']" &
        "[(shortest oneOrMore char)1" &
        "[htmlTag]"
        transform with "[group1]"

  Luckily, this is due to change with version 1.1, when a case-
  insensitive matching option is added.


**Greptitude Test** -- PreFab Software has shown tremendous
  ingenuity in implementing grep patterns as English-like phrases
  rather than the traditional Unix-style codes. This feature is
  unique - Nisus Writer has something similar, but it's clumsy to
  use and has limited features. PreFab Software has also given Text
  Machine a stunningly well thought out repertoire.

  Consider the range of entities on which Text Machine can operate.
  It can do search-and-replace on a literal string handed to it as
  one parameter of a command. But, as we have seen, it can also
  search and make replacements in files on disk.

  Even more useful, Text Machine can open a document and leave it
  open. It doesn't display the document, for it has no windows
  (except in a special debugging mode). But it maintains the text of
  a file in memory, so any changes made through search-and-replace
  are not written out to disk unless you explicitly save via one of
  your script's commands. Also, an "insertion point" is maintained
  so that successive calls to a verb such as "match next" will cycle
  through the text. What's more, Text Machine can create a new
  document in memory; it can maintain multiple documents in memory;
  it can assign text to a document in memory. Thus one can work with
  large texts without passing them repeatedly to Text Machine; this
  reduces overhead and increases speed.

  Then there is the ample syntax of Text Machine's four verbs.
  "Replace" alters the original text, returning the altered result
  or the count of replacements. "Extract" searches and returns the
  found text, optionally performing a replace on it; "extract all"
  returns a list or a delimited string. "Locate" and "match" report
  such things as the contents, position and length of the found text
  or texts, the results of replacing, and the contents of any
  groups; such information helps other scriptable applications to
  operate on what Text Machine has found.

  Here's a nice touch. A common need is to perform a series of
  "replace all" commands to alter a document in some wholesale
  manner. For this, Text Machine provides a notational shortcut: the
  texts to search for and the texts to replace them with are
  concatenated into two lists; you give one "replace all" command,
  and Text Machine loops through both lists. An included utility
  script shows how to implement a further convenience: you create
  the search-and-replace pairs as a tab-delimited text file, then
  have Text Machine parse it to generate the lists.


**Grep Tide** -- Text Machine's grep is almost a superset of grep
  implementations in such programs as BBEdit, Nisus Writer, and
  Microsoft Word. For example, it lets you specify longest or
  shortest match, which BBEdit and Word do not; it lets you specify
  a quantity or range of quantities - for example, 60 to 80
  successive non-returns - which is very difficult in BBEdit and
  Nisus.

  On the other hand, it lacks some traditional grep constructs. You
  can't speak of a letter range, such as a letter alphabetically
  between "a" and "g"; you must specify the range's contents
  explicitly, like this: "[<abcdefg>]". (The justification might be
  that such specification is no hardship, and anyhow the most
  commonly needed sets are predefined, like "[lowercaseLetter] or
  [controlChar]".) The inability to do a case-insensitive match (in
  version 1.0) is inconvenient. Further, there are almost no
  positional keywords: thus, in my first example, I had to speak of
  the beginning of a line (paragraph) as "[textstart or
  paragraphdelimiter]" and then work around the fact that the
  matched text includes an extra character.

  Still, these shortcomings _can_ be worked around, and so all in
  all Text Machine's grep is as powerful as they come, along with
  being easy to express using English-like phraseology.

  For example, I have a HyperCard stack that archives messages from
  mailing lists. I receive the mailing lists in digest form (many
  messages in one email message); the stack parses the digest,
  storing each message's date field, subject field, sender field,
  and content on a separate card. Originally I had a devil of a time
  coding this in HyperTalk; but HyperCard speaks AppleScript, so
  Text Machine's grep is available to HyperCard, at which point the
  same task becomes trivial (and much faster) to code. Microsoft
  Word, too, can benefit from calling Text Machine: how often,
  writing a WordBasic macro, I have wished Word's grep were more
  like Nisus Writer's! Now with Text Machine on hand, it can be.

  Grep extensions to AppleScript (such as Late Night Software's
  "Regular Expressions") and UserTalk (the "regex" UCMD) do exist.
  But Text Machine is much easier to use than these and more
  powerful. Also, Text Machine benefits from being a true
  application, which can modify text files or memorize large texts
  for extensive interaction.


**Get a Grep** -- If you own Nisus Writer, feel comfortable with
  its grep, and you don't need to do any scripting beyond Nisus
  macros, you probably don't need Text Machine. Also, Nisus Writer's
  grep has a special feature: it works on styled text. Thus, there
  are some tasks for which Nisus is uniquely suited, and Text
  Machine isn't trying to compete.

  On the other hand, if you use or are willing to use AppleScript or
  UserTalk, and if you have any program which is scriptable or which
  can execute an OSA script (HyperCard, Microsoft Word, FileMaker
  Pro, and so on), you can incorporate Text Machine's grepping
  functionality and perhaps find an answer to your text-processing
  prayers.

  Undoubtedly Text Machine's learning curve beats that of
  traditional greps, hands down. It would be wrong, though, to
  pretend there is _no_ learning curve. In this version, Text
  Machine is not, I think, grep for the user-in-the-street. Let's
  face it: Text Machine is geeky. You have to be willing to script,
  and even though Text Machine's phraseology is easy to learn,
  experimentation and ingenuity may still be required to get the
  right results.

  However, in my vocabulary, "geeky" is a term of praise. Perhaps
  you have to be weird in just the way that I am in order to
  appreciate it, but I think that Text Machine is, well, beautiful.
  It offers a single functionality, superbly realized, placed at the
  service of other applications. I've waited months for Text Machine
  to come to fruition, and now it has a firm place in my bag of
  tools. PreFab has a free 30-day demo to let you decide if you feel
  the same way.

  Text Machine costs $75, until 12-Nov-97 when the price increases
  to $95. Those who purchase 1.0 get a free upgrade to version 1.1.



$$

 Non-profit, non-commercial publications may reprint articles if
 full credit is given. Others please contact us. We don't guarantee
 accuracy of articles. Caveat lector. Publication, product, and
 company names may be registered trademarks of their companies.

 This file is formatted as setext. For more information send email
 to <setext@tidbits.com>. A file will be returned shortly.

 For information: how to subscribe, where to find back issues,
 and more, email <info@tidbits.com>. TidBITS ISSN 1090-7017.
 Send comments and editorial submissions to: <editors@tidbits.com>
 Back issues available at: <http://www.tidbits.com/tb-issues/>
 And: <ftp://ftp.tidbits.com/pub/tidbits/issues/>
 Full text searching available at: <http://www.tidbits.com/search/>
 -------------------------------------------------------------------




