Monday, August 17, 1998

Today is devoted exclusively to checking the QC1 draft of Windows NT TCP/IP Network Administration word by word for mistakes. In 12 hours or so of work this weekend, I only managed to get through the first 200 pages. I have to finish up the remaining 300 pages or so today. This whole QC process gives me a much finer appreciation of just what an editor does. I prefer writing.


Late afternoon: I finally got through the rest of the QC1 draft and sent the comments off to my editor. Writing a book is hard work. Proofing the manuscript draft is excruciating.

Now that I have a moment to myself, I decided to check a few things on the web. I periodically go out and search for my own name, my books' names, and so forth. Most of what I find, of course, is just listings for the books from various companies that sell them. Some stuff, however, is more significant. I find reviews, articles that mention one of the books and so forth. Sometimes, I find that I'm being given credit for a book I didn't write or that someone else is being given credit for one of mine. Fortunately, the various on-line booksellers are pretty good at fixing that kind of thing quickly once it's brought to their attention.

I did find that Windows NT TCP/IP Network Administration is now showing up at most on-line booksellers as being available for advance purchase. Amazon.com ranks books by their sales figures, and is now showing Windows NT TCP/IP Network Administration at about 49,000 - not bad for a book that hasn't been published yet. Apparently, folks are ordering advance copies, which bodes well for the sales of the book once it actually is in print.

I think I'll take the rest of today off. I managed to put in the equivalent of a full work week for most people between last Friday morning and this afternoon. I'm going to keep tomorrow pretty much open so that I can respond quickly to queries from my editor about the comments I made on the QC1 draft. Then it's back to work on the new book.

Tuesday, August 18, 1998

With the ball back in O'Reilly's court on Windows NT TCP/IP Network Administration, I'll shift back today to working on the new book. I'll probably get a few telephone or email queries about the TCP book from my editor, Robert Denn, but the book is essentially complete now from my point of view. There will be a QC2 draft, but Robert told me yesterday that it would really just be to check that the comments that Craig and I have just made are incorporated correctly. He'll take care of that part.


I'd been having problems all weekend and yesterday morning when trying to send email to Robert. I'd send an email with comments on a chapter to Craig and Robert. Craig'd get it, but the one to Robert would bounce back to me with a "mail refused" error.

At first, I thought this was just another example of the problems I have periodically with O'Reilly's mail servers. Given who they are and what they do, O'Reilly is a prime candidate for cracker attacks, and so they take some pretty strong measures to secure their systems. Unfortunately, those measures sometimes get in the way of regular business. For example, at one point several months ago, I was unable to send mail to O'Reilly because they had designated my ISP, Bellsouth.net, as a known spam relay host. All messages that originated from *.bellsouth.net, including my own, were being rejected by the O'Reilly mail server.

At any rate, I figured my recent problems were more of the same. I got around it by asking Craig to forward my comments to Robert. As it turned out, it wasn't O'Reilly's fault at all. It was mine. More accurately, it was due to an intelligent decision made by the WinGate proxy server that had an unexpected outcome.

What happened was this: Bellsouth.net was having some problems last Friday with their mail servers. When I attempted to send an email message from kerby (via the WinGate proxy server running on sherlock), Outlook 98 running on kerby timed out while waiting for a response from the mail.lig.bellsouth.net SMTP server at Bellsouth.net. OL98 popped up a dialog to ask me for a different SMTP server. The one I gave it was mail.co.forsyth.nc.us, the mail server run by my former employers, Forsyth County, NC.

That message went out fine. The problem was that WinGate made the reasonable decision to change the default SMTP server from the dead mail.lig.bellsouth.net to the one that worked - mail.co.forsyth.nc.us. Unfortunately, it made this change without telling me that it had done so, so all of my subsequent mail was being handled by the mail.co.forsyth.nc.us SMTP server.

Now, mail.co.forsyth.nc.us is run by the Forsyth County MIS department, which, to put it charitably, is clueless when it comes to internetworking. At one point, there were three people there who knew anything at all about internetworking. When I left, that dropped to two. David Rowe left, dropping it to one. Finally, John Mikol left, and there wasn't anyone at all. In fact, I just looked at the on-line employee list the other day, and it still lists David Rowe and John Mikol as employees - this a couple of years or so after both had resigned.

At any rate, Forsyth County still runs mail servers and is connected to the Internet, but there's no one there who knows much about it. Up until a couple of years ago, most SMTP servers were open to the world - anyone could use them to send mail, regardless of whether that mail originated from within the local domain or not. Spam changed all that, because spammers started routing their mail through innocent third-party SMTP servers to conceal the actual point of origin. For that reason, most SMTP servers now accept mail only from within their local domains.

Forsyth County MIS, of course, hasn't changed the configuration on their SMTP servers, so they're still available to the world. Apparently, this fact has become known to spammers, because co.forsyth.nc.us appears on almost everyone's list of known spam relay hosts, including the one used by O'Reilly. Because all of my mail over the weekend and Monday morning was still being sent via mail.co.forsyth.nc.us, the O'Reilly mail servers were correctly refusing it. By making a "good" decision, WinGate therefore rendered my mail to at least one important destination undeliverable. I can't blame O'Reilly or WinGate. I can't even really blame Forsyth County. This is just another example of the indirect damage done by spammers.

If you take an operations research course in business school, they'll teach you that the quality of a decision does not necessarily guarantee the desirability of the outcome. For example, you could make a very bad decision - say, spending all the grocery money on lottery tickets - and the outcome might be very good - you might win the jackpot. Conversely, a very good decision may not pan out, and may result in a very bad outcome. On average, of course, good decisions are rewarded much more often than are bad ones, but results for any particular decision may vary in desirability. That's what happened here. WinGate made a "good" decision, but it had a very bad outcome.


Around noon: And speaking of very bad outcomes, a flaw in FrontPage 98 and/or Windows NT has just caused me a problem that it will take several hours of work to solve. Here's what happened:

I got mail from Robert Denn (my O'Reilly editor) concerning some clean-up issues with the QC1 draft of Windows NT TCP/IP Network Administration. One of those issues had to do with the home page for that book on this web site. O'Reilly assigns a short internal name to each project, and this one was called TNT. We're publishing the URL for this page in the book itself, and Robert thought that TNT was a bit too explosive. He suggested changing it to NTTCP. I told him that was no problem, and set out to fix it.

The first thing I did was highlight the main page for the book, tnt.html, in FrontPage Explorer and choose Rename. I renamed it nttcp.html. So far, so good. FrontPage noticed that the original page's filename was referenced in several other HTML pages, and asked if I wanted to fix those references. I told it to go ahead and fix them. I then changed the filenames of several supporting pages - tnterror.html to nttcp_error.html and so forth. Each time, FrontPage told me that the page name being changed referenced other pages, and offered to go ahead and fix them. I told it to fix each page. At this point, everything appeared normal locally, so I went ahead and published the updated web.

When you publish the local web copy to the real web site, FrontPage prompts you each time it finds that a page that has been deleted from the local copy still exists on the real web site. I thought it was a little odd that FrontPage was telling me that several files had been deleted from the local copy, because I could see those files listed on my screen. The problem had to do with case-sensitivity. The web server hosting service I use runs Linux servers, which are case-sensitive. FrontPage was prompting me to delete files like 0615RTDN.html. I usually just answer "Yes to All" when prompted like this, and I did so then.

The problem is that FrontPage and/or Windows NT had renamed every file that had been updated to reflect the new NTTCP URLs using lower-case filenames. For example, when it updated 0615RTDN.html, it renamed the file 0615rtdn.html. That would have been fine, except that internally the web structure was still looking for the upper-case version of the file, which FrontPage had deleted. The result is that FrontPage and/or Windows NT broke my entire web site.

I figured that a quick fix would be simply to use FrontPage Explorer to rename the lower-case filenames to upper case. No dice. FrontPage Explorer would allow me to start renaming the file, but when I tried to save the change it gave me a write error and refused to save it. At that point, I decided to reboot all three computers that were involved - my main workstation, kerby; the workstation sherlock that runs FP98; and the server thoth, where the local copy of the web is stored. In the past, rebooting has sometimes cured these weird refusals to write, but it didn't do so this time.

I decided to take a club to it, so I copied the files in question from my backup directory and pasted them over the "same" filenames in the active local web content directory. At that point, I figured I'd have the original files with some pointers to tnt.html that I'd have to fix manually. I also had to retrieve and save the table of contents page each time so that it would detect the changed pages and correct the table of contents listing. Everything appeared to be working normally locally at that point, so I published the local copy to the web site. At this point, everything appears to be normal, with a couple of worrying exceptions:

  • For some reason, the table of contents no longer lists the Day Notes files chronologically. It used to list the first one (0615RTDN.html - Week of 6/15/98) at the top, and the most recent (0817RTDN.html - Week of 8/17/98) at the bottom. Now, the files are listed in apparently random order, and I can't figure out why. It's not related to the file dates, nor to the order in which they appear in Navigation View in FrontPage Explorer.
  • Even more worrisome is that when I copied the older versions of the files back to the current web, I expected to create broken links. That is, I expected that because the old versions of the files referenced tnt.html instead of nttcp.html, that those links would be broken. Instead, the old versions of the files reference the proper URL - nttcp.html. I can't figure out how this could happen, and it really worries me.

At this point, I no longer trust the integrity of my FrontPage web, and I certainly don't trust FrontPage as a product. I'm not sure what to do about it, because I have a lot of time and effort invested in this web, and all of it is based on FrontPage.

In the course of all this, I did solve one other mystery, however. When I rebooted sherlock, WinGate again lost the ability to autoconnect to my ISP. When I fired up GateKeeper, the WinGate management utility, the dialing entry had disappeared again. I re-entered it, and it finally got through my thick skull that I needed to save the configuration manually before I exited. When you exit GateKeeper, it doesn't prompt you to save changes; it just exits. It then uses that changed configuration until the next reboot, when it reverts to the original configuration. I guess this wasn't obvious to me because sherlock often runs for weeks on end between reboots. I don't think that's very good program design, but it's only one minor flaw in an otherwise superb program. Also, I'm still running WinGate 2.0, and it may have been fixed in the current 2.1 version, or in the 3.0 version now in beta.


Early evening: I've tried everything I can think of, and the table of contents entries for the Day Notes pages still won't sort properly. When I republished the entire web (rather than just changed pages) from the local copy to the web server, I figured that'd fix it, but it didn't. The only thing I haven't tried is deleting the TOC page and recreating it. I'm a little gun-shy at the moment.

My wife arrived home and went out to mow the lawn. She found part of our mail lying in our neighbor's front yard. I know this is a replacement carrier while our regular guy is on vacation, but that's ridiculous. Worse still, one of the items this guy had left lying in the grass was our bank statement.

Although this was a rotten day overall, there were a couple of bright spots. First my editor and then my agent called to say that they were about finished negotiating the deal for the new book. I've already spent close to a month and about $4,000 working on this project, so that was a relief.

Another high note was the Amazon.com ranking for Windows NT Server 4.0 for NetWare Administrators. Since Amazon.com started this ranking system (which no one can figure out the exact functioning of), this book has fluctuated between the low 30,000's and the mid 40,000's in sales ranking. When I checked yesterday afternoon, it had climbed to the 12,000's, which I figured might be an aberration. When I checked this afternoon, it had climbed further. Right now, it's sitting in the low 9,000's, which is very respectable. That means there are only about 9,000 other books that Amazon.com is selling more of. I know that sounds ridiculous, but this is an overall rank among fiction and non-fiction books. For example, this 9,000 ranking puts this book ahead of some current books by some pretty well-known authors (e.g. Patricia Cornwell).

Wednesday, August 19, 1998

I had some interesting discussion last night and this morning via email with my friend Paul Robichaux, the author of Managing the Windows NT Registry. Yesterday, the Amazon.com sales ranking for Windows NT Server 4.0 for NetWare Administrators reached a high in the 3,xxx range. At the same time, Paul's book was ranked at 28,xxx. Later in the evening, my book had dropped to the 12,xxx range, while Paul's had climbed to the 17,xxx range. This morning, my book is at 34,982, and Paul's is at 2,813. So, yesterday, my book was in the 3,xxx range and his was in the 28,xxx range, and today the positions are reversed. My guess is that yesterday Amazon.com sold perhaps five copies of my book and two of his, while today they sold six of his and one of mine. Or something like that. I don't know how anyone can take these rankings seriously.


And speaking of on-line booksellers, a kind of strange thing happened the other day. As I mentioned, I periodically go out and search the web for my name and my books' names. I found mention of Windows NT TCP/IP Network Administration on the Computer Literacy site. I was very surprised to find that they had posted a review of the book. That's pretty amazing, considering that we're still working on that book and haven't sent out any advance copies.

It appears that, believe it or not, Computer Literacy did a review of a book that doesn't exist yet based on the preliminary Table of Contents that O'Reilly provided to them. Nowhere in the review did they make that clear, so anyone reading the review would assume that they had actually read the book before reviewing it. Computer Literacy are good folks, so I can only attribute this lapse to a momentary absence of good sense.


Argggh. My last mail message to O'Reilly bounced. When I went into GateKeeper to check the WinGate configuration, I found that it had reverted to using the Forsyth County SMTP server. What happened, of course, was that it did so when I rebooted. Although I corrected and then saved part of the configuration, I'd forgotten that it would revert to the old default SMTP server configuration, so that's the one I saved. I think it's finally setup (and saved) correctly.

Unfortunately, I still can't fix the sort order problem with the Table of Contents page. This time, I tried editing the local copy of the TOC page to remove the TOC robot, and then saved and published the TOC page as plain text to the web server. After verifying that the web server was displaying the new plain text page correctly, I then added the TOC bot back to the TOC page and republished the page.

The TOC page works fine locally, but the web server is still listing the Day Notes files in the wrong order. The only conclusion I can make is that the TOC display order is somehow based on the sort order of the files on the Linux server at my web provider. The next step is to delete those files from the web server and then re-publish the local copy, but I'm not sure I'm up to risking that.

It's late afternoon, and I'm off to run a few errands and have dinner with Barbara. She works noon until 9:00 pm at her library today. I need to pick up a few books, anyway. I'm running out of stuff to read.

Thursday, August 20, 1998

As I was on my way out the door yesterday afternoon, David Rogelberg from StudioB called to say that he and Robert Denn from O'Reilly had finalized the terms for the new book contract. David was going to send me a draft contract copy for my approval before he started the process of getting all the signatures. I told him that if the contract was okay with him, it was okay with me, so just to print up the final and get it circulating for signatures. David is a wonderful agent, and Robert is a wonderful editor. It's a pleasure working with both of them.


When Barbara arrived home from work last night, she handed me a CD. One of my friends took pity on me, burned a copy of the FP98 CD for me, and dropped it off at Barbara's library on his way home. The first thing I did was copy the CD up to a network server volume. I lose CDs regularly, but it's pretty hard to lose a network server volume.

Once the CD finished copying up to the server, I started to install FP98 to kerby, my current main workstation. Early in the process, Setup prompted me to enter the 11-digit serial number, which it helpfully informed me could be found on a sticker on the CD jewel case. Well, I can't find my original CD, which means I don't have the jewel case either. I figured that'd be no problem. Fortunately, I hadn't yet deleted my copy of FP98 from my former main workstation sherlock, so I figured I'd just run Help - About and get the serial number from there. Setup wants a serial number in the form 4444 - 7777777. The Help-About screen lists the "Product ID" in the form 55555 - 333 - 7777777 - 55555. No combination I tried would work.

This is obnoxious. Microsoft intentionally conceals the serial number, making it impossible to install the product without the original CD. More accurately, they make it impossible to install without the original jewel case. Now, I realize that this is their supposedly unobtrusive means of copy protection. I also realize that I shouldn't have misplaced my original CD. For that matter, if I'd registerd the product, I probably could have retrieved my serial number from Microsoft.

But the fact is, this copy protection method is unobtrusive only so long as you have the original jewel case ready to hand. Jewel cases break and CDs are misplaced. Many people do not register software, either because they've just never gotten around to to doing so or because, like me, they refuse to register as a matter of policy.

Fortunately, the friend who burned the CD for me reminded me that I could use the "magic" Microsoft init key. Years ago, Microsoft provided this key to alpha (or was it beta?) testers of NT4, but it works with any Microsoft product I've tried. And, no, I won't make that magic key public, so please don't ask. If you're really interested, just search the net for "serialz". At any rate, I entered the magic init key, and the product installed normally. I'm using it right now on kerby to edit this page. As a law-abiding citizen, I'll delete FP98 from sherlock once I verify that everything works properly on this computer.


Well, everything appears to work properly, although I did run into one minor problem. Sherlock has a direct dial-up Internet connection, so publishing to the web is no problem. Kerby, however, accesses the Internet via the WinGate proxy server. That shouldn't have posed any real problem, because the interactions between the FrontPage client and the FrontPage server extensions running on the web server use  standard HTTP. In other words, configuring FrontPage 98 to work via the proxy server shouldn't be much different than configuring a web browser to do the same.

From FrontPage Explorer, I chose Tools - Options - Proxies, where there's a place to enter the name or address and the port number of the proxy server. The example that FrontPage help gives is "my.proxy.server:2001". I thought that was a pretty strange port number to use, but I figured Microsoft knew best, so I used port 2001.   It didn't work of course. I did what I should have done originally. Port 80 is the well-known port number for HTTP. I set the proxy server field to "sherlock:80", and it worked fine. I don't know why Microsoft didn't just use port 80 in the example. Perhaps I'm missing something.

Friday, August 21, 1998

I got a one-paragraph rejection letter last night from the editor for whom I wrote the magazine article. This is the first time ever that I've had anything rejected. Hell, I've never even had anything I wrote edited significantly, let alone rejected outright. She said that her "technical reviewers" were "lukewarm" about the article. I'm not sure what that means, because there were certainly no technical errors in it. She also said that she hoped that we'd have "other opportunities to work together." I hope she's not holding her breath.

This was literally the first communication I'd had with her. The original request to do the article was made by my editor at O'Reilly and Associates. O'Reilly plans to do an ongoing series of articles for the magazine, with various O'Reilly authors contributing articles on different topics. The sum total of guidance I had on this was that the article was to be about "backing up Windows NT Workstation", that it was to be 2,000 words long, and that it shouldn't be "too technical". Oh yeah, I also had a copy of the magazine's "author guidelines", which didn't provide much guidance.

With that little bit of information in hand, I set out to write the article. I think what I wrote was pretty decent. I submitted it to O'Reilly first, so that they could review it before sending it on to the magazine editor. O'Reilly thought the article was fine, and sent it on to the magazine without suggesting or making any changes to it. A month or so later I get this flat rejection.

In doing this article, I violated one of my primary policies. I don't write on spec. If someone wants me to write something for him, he can expect to pay me for doing so. If this experience is representative of the way magazines do business, I won't be writing for magazines. I certainly won't be writing for this one.

Click here if you want to see the first draft of an article that is apparently so bad that Windows NT Magazine considers it worthy only of a terse rejection. I can't see much wrong with it, and neither can my editors at O'Reilly. Maybe you can.

Saturday, August 22, 1998

I did my usual weekly network backup yesterday afternoon, and it came close to requiring a second tape. With disk space nearly free nowadays, the major machines on my network now have a total of something like 50 GB of disk space, most of which is unused. I've been able to fit everything that counts onto a 4GB/8GB Travan TR-4 tape, but that's starting to change. I may have to get a Travan TR-5/NS20 10GB/20GB tape drive. Either that, or a DDS-3 DAT 12GB/24GB tape drive. As usual, tape technology isn't keeping up with disk technology, either in capacity or throughput.

A friend mentioned that some of the new digital VCR's have an IEEE-1394 (FireWire) interface, and can be used as high throughput 44GB/88GB tape drives to backup computer data. All of this onto a cheap VCR tape. I suspect that I may give this a try in a year or two, but my next tape drive will probably be a traditional computer tape drive.


Jerry Pournelle took a couple of weeks off to work on fiction, which meant that the Chaos Manor web site was left to wither while he was gone. I mailed him and suggested that many people, including me, would probably be willing to contribute filler material to keep the site fresh when he found it necessary to take a break. Everyone would benefit. The readers, because new material would continue to appear while Dr. Pournelle was on sabattical. Dr. Pournelle himself, because that new material would continue to draw regular visitors to his site, and regular visitors are critical to the ongoing success of the site. The contributors, because a link from the heavily used Chaos Manor site will generate additional traffic to our own sites.

He asked me if I wanted to contribute. I told him that I would be happy to do so on a low-priority basis (work that earns cash money always has to come first) and offered a slightly used article on backing up Windows NT Workstation.


Last night I re-read Robert A. Heinlein's The Cat Who Walks Through Walls and To Sail Beyond the Sunset. It had been a decade or so since I'd read either. Both of them are delightful books, although not the best choice for a reader new to Heinlein. So much of both of them, particularly the latter, is a sequel to earlier books that readers who have not read those earlier books will miss much without even realizing that they're missing anything.

Heinlein was a wonderful author, the unquestioned master of Science Fiction. He was also a wonderful man. I met him only once, back in the 1970's. He took the time to sit and talk to me for the better part of an hour. To him, I must have been just another in his legion of young fans. But he made me feel as though talking to me was the most important thing he could be doing at that moment. When our conversation concluded, it was because I had started to feel guilty about how much of his time I was taking up, and not because he gave any indication that he had better things to do. He was true gentleman, and he died way too young.

If you want to read the work of a truly great author, start with Heinlein's early stuff and read your way through to the end.

From the sublime to the mundane. It's time for me to do the laundry...


And speaking of letting web sites wither, I'm afraid that I'm not going to be able to devote the time I have been to keeping this running commentary up. I plan to spend tomorrow fleshing out some of the in-progress pages on this site, but come Monday morning I'll be back in the grind of doing a new book. In the normal course of things when I'm actively writing, my weekday schedule is usually something like this:

07:00 - awake

07:30 - 08:00 - at my main workstation checking mail and doing miscellaneous non-writing things.

08:00 - 18:30 - writing, with short breaks to make breakfast and lunch for my mother, walk the dogs, etc.

18:30 - 19:30 - dinner, clean up, etc.

19:30 - 21:30 - writing, if I'm still able to do so. Otherwise, reading something.

21:30 - 01:00 - reading something

01:00 - 07:00 - sleep

On weekends, I try to keep my schedule a little more more open, and to work around Barbara's schedule. Still, I almost always manage to put in at least four to six hours work over the weekend, and often do twice that. If I'm to keep up this web site, I'm going to have to carve out some time to do so. I think what I'll do is set aside a specific half-hour period each weekday and a couple of hours each weekend to keep things updated. I'll use the half-hour periods to jot down my daily journal, and the two hour periods on weekends to catch up on the backlog of pages that are still just placeholders. Once I have the bulk of the site filled out, which I'm about 50% done with, maintaining it routinely will be less time-consuming.


I often wonder about the vagaries of memory. How is that I can remember things like the telephone number of a girl I called exactly once when we were in 6th grade in 1964 (Connie Stewart, 654-0263), or the details of duplicate bridge hands I played twenty-five years ago and more, and yet I can forget that I'm in the midst of doing laundry and that the white load needs to go into the dryer and the dark load into the washer? My wife can tell me something, I can repeat it back to her, enter it into the Outlook Calendar, and then promptly forget about it entirely. Someone told me once that I remember only things that I consider important, and I suppose that may be true. I guess that Connie's phone number and those bridge deals must have been important to me at the time.

Sunday, August 23, 1998

I notice that the InfoSeek spider has finally gotten around to parsing my web site, although the results still don't show up in the InfoSeek index. Of the half-dozen or so search engines that I registered with on 7/10, so far only Northern Light has done the expected - come out to read the site and then added the pages to its index. I've re-registered twice with AltaVista. Each time, it comes out and gets only the top-level page, which it adds to its index. It never reads or indexes the rest of the site. HotBot has done the same, except it adds the same page to it's index, so it now has the home page appearing twice. Excite and InfoSeek haven't indexed any of my pages, despite the fact that I've added them two or three times via the "Add URL" function on their home pages and also contacted their tech support. At least InfoSeek has now parsed the web site, so it should be showing up in their index shortly.

I didn't expect the initial registration to be such a problem, but I was wondering how updates were scheduled by the search engines. I'm still wondering. Northern Light indexed my site 13 days after I registered it on 7/10, but their spider hasn't been back since then. In the intervening month, most of the pages have been updated, and quite a few new ones added. I suppose I shouldn't complain. At least they indexed my site in the first place, which no one else has.

Most of the search engines say that they'll index your site initially after anything from a one-day to a three-week lag after you first register it and that they'll then return every week or two to check for new and updated material. Obviously I can't judge this for most of the search engines, since they haven't bothered to index the site yet for the first time, but Northern Light appears not to be updating as promised. It's been a month since the first pass. I even tried to nudge them a week or so ago by resubmitting my URL. No luck.

I'm beginning to think that word-of-mouth and links on other sites are more important to generating traffic than are search engines.

 

Updated: 31 May 2002 14:22

Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 by Robert Bruce Thompson. All Rights Reserved.