Wednesday, 31 January, 2001

Day 4:  Georgetown, Grand Cayman

Georgetown, Grand Cayman.  Today we had an early tour at 7:30 am.  We took a bus to the other side of the island (about 10 minutes), and then a 30-minute boat ride out to the reef where we went snorkeling.  The water is about 12 feet deep and perfectly clear.  We got lots of good pictures with the throwaway waterproof cameras (no way I was going to take the digital).  Then we went out to a sand bar known as Sting Ray City, where the water is two to four feet deep.  We waded into the water and played with the sting rays.  This is an unbelievable experience.  You hold a piece of squid in your hand, put it under the water so the sting ray can see/smell it, and the fish will come up and suck it right out of your hand.  The rays are pretty tame, and very good at getting out of the way of clumsy tourists.  They're very docile, too, and only dangerous if you step on them when they're buried under the sand.  The picture at left shows Debra holding a sting ray with the help of the guide.

There were two other cruise ships in port today:  the Carnival Triumph, and the Holland America Maasdam.  Our good friends Jeff and Carol Duntemann went on a cruise this week, too, on Holland America.  I wonder if they were on the Maasdam.  We kept an eye out for them all day, but with three ships in port (about 5,000 people), the chances of actually seeing them were pretty small.

There's apparently some good shopping in Georgetown, but all we saw were expensive jewelry places and expensive trinket stores.  We didn't have a lot of time for shopping because the ship left port at 4:00 pm.

Tuesday, 30 January, 2001

Day 3:  Ocho Rios, Jamaica

Ocho Rios, Jamaica.  I got up about 4:00 this morning and went out on deck with my binoculars.  I saw Jamaica on the horizon, and another cruise ship (the Carnival Imagination) heading into port about 30 minutes ahead of us.  The bow of the ship was very calm because the wind was almost directly behind us.  The bow of the ship is the absolute best place for star gazing, because they keep the lights off at night so they can see where they're going.  And the skies out there are very clear.  It reminds me of my youth when I lived in a small town where there was very little light and lots of visible stars.  It's odd to see Orion directly above rather than down on the southern horizon where he belongs.

We took an early morning trip to Dunns River Falls, where we climbed 1,000 feet up the falls and then went back to the beach for some ocean kayaking.  We rowed the boats to James Bond Beach, where they filmed a scene from Dr. No (the first James Bond film).  It got to be a joke among some of us throughout the cruise, because the guides must have told us the story of the beach at least a dozen times throughout the tour.  There's nothing terribly special about the beach, by the way.

I lost my watch while climbing the falls this morning.  No great monetary loss, as it was just a Casio that I paid $30 for in 1983.  I'll miss it, though.  That watch and I had been through quite a lot together.  What amazed me about the thing was that I only replaced the battery once:  13 years after I bought it.  I bought a new watch at a shop on the island.  Again, I didn't go for anything fancy.  This one is a Timex Expedition: an analog face with a digital display for the stop watch, timer, calendar, and alarm.  At $45, it wasn't any less than what I would have paid at Wal Mart.  It certainly was a lot cheaper than most of the watches there, though!  I had to check four different shops before I found anything under a couple hundred dollars!

Monday, 29 January, 2001

Day 2:  At Sea

We spent the entire day at sea, relaxing in the sun or in our cabin and (of course) eating.  During the day, I learned a little about this ship we're on.  The ship is 857 feet long, weighs 77,000 tons, has 14 decks, and has a maximum draught of about 27 feet.  Three times around the ship on the Promenade Deck (deck 7) equals one mile.  Four diesel engines power four generators with a total output of 44.5 megawatts.  These generators in turn feed two 15 megawatt electric propulsion motors, giving a maximum cruising speed of 21 knots.  (30 megawatts, by the way, equals about 40,200 horsepower.  I wonder what the actual shaft horsepower is—the thing can't be 100% efficient.)  They don't normally cruise at 21 knots, though, because it takes too much fuel.  They usually average around 15 knots and burn fuel at the rate of about 1 gallon for every 50 feet.  That's about 1,850 gallons per hour or 45,000 gallons per day.  Gulp!

Maybe the state of California should invest in some cruise ships:  they could tie them alongside a pier somewhere, plug them into the grid, and run the boat like a 5-star resort.  A 45 megawatt power plant is a steal at $350 million:  certainly less than what they're paying for electricity on the open market.

One of the reasons the ship always looks so good is that they literally scrub the public areas every night.  I get up early in the mornings (4:00 or 5:00) and wander the deck.  There aren't too many passengers awake at that time, but the crew are busy cleaning, painting, and straightening things.  Every morning the deck chairs are nicely lined up, all of the trash is picked up, and the deck has been soaped, scrubbed, and rinsed.  The ship is immaculate.  In addition, deck attendants pick up trash throughout the day and keep the public restrooms spotless (there's somebody in there every hour). 

Sunday, 28 January, 2001

Day 1:  Princess Cays

First stop: Princess Cays, a private resort owned by Princess Cruises on the island of Eleuthera in the Bahamas.  The resort consists of a single shop, some natives' sale tables, a water sports rental center, a bar, and a buffet area.  And a beach, of course.  It was just a bit chilly for playing water games, so Debra and I just took books and staked out a place in the sun.  This was a perfect way to start the cruise.

The food on a cruise ship is very good, and very abundant.  Each dinner is a 5-course event, starting with an appetizer.  Then soup, salad, main course, and dessert.  Fortunately, the portions for each of these courses aren't too large.  I never went away hungry, though.  Some people don't realize that these dinners (and all of the food on the ship) are included in the price of the cruise.  The only things you have to pay extra for are bar drinks (including sodas at $1.50 each), photos, and any shopping that you do aboard.  And the casino, of course, if you're into gambling.  Besides the wonderful dinners in the main dining room, there's a buffet that's open 24 hours, a pizzeria that's open from about noon until 11:00 pm, and a grill near the pool where you can get hamburgers and hot dogs during the afternoon.  The dining rooms are also open for sit-down dining at breakfast and lunch if you'd rather not visit the buffet.  There is no lack of food aboard a cruise ship.

Saturday, 27 January, 2001

Getting Ready for the Cruise

No entry yesterday.  I was busy getting ready for our vacation.  This morning Debra and I left Austin at 6:00 am for Ft. Lauderdale, FL, where we boarded the Sea Princess for a 7-day Caribbean cruise.

Other tour companies could learn a thing or two from how the cruise lines operate.  All we had to do was book the cruise, and Princess Cruises took care of everything else.  They booked the flights, arranged for transportation, and let us select the tours we wanted to take on the different islands.  We checked our bags at the airport in Austin, and never saw them again until later this evening when they were delivered to our cabin on the ship.  A representative met us at the gate when we arrived in Ft. Lauderdale, escorted us to the bus (for which we had transfer tickets), and dropped us off at Port Everglades next to the ship.  Check-in was faster than most hotels I've stayed at.  We were in our cabin less than an hour after landing at the airport.  It doesn't take long to get into the right frame of mind:  by 2:00, we had eaten lunch at the buffet and were drinking beer and catching rays.  What a life.

Thursday, 25 January, 2001

Secure FTP Server

I still haven't found a replacement for the Microsoft SMTP service on my server at the office.  I haven't been looking all that hard recently, because what I have is working (after a fashion) for now.  I'll need to do something in the next few months, though, before things get out of hand.  Today I added an FTP service to my wish list.  Microsoft's is fine for an anonymous FTP site, but if you want to authenticate users and provide directory permissions to prevent users from stepping on each other, the MS offering just won't do.  It implements the bare minimum necessary to comply with the FTP Specification (RFC 959).  RFC959 was okay back in 1985, but there's no security, no authentication, and not much of anything else.  Just simple file transfer.

My research lead me to Ipswitch Software's WS_FTP Server 2.0.  It looks like this package has everything I've been looking for in an FTP server.  And $395 is cheap.  I've spent that much just trying to get the Windows 2000 FTP service to do things that it just can't do.  I've been using Ipswitch's WS_FTP Pro client at home for years, and have been very happy with it.  If their server is anywhere near as good, I'll buy it.

Wednesday, 24 January, 2001

Beautiful Code?

Slashdot is an endless source of entertainment.  Today somebody posted a question looking for examples of "beautiful" free code.  The resulting discussions were mostly off topic, as usual, but resulted in some interesting links:

Polyglots:  a program that compiles (and runs) unmodified in at least 7 different languages.
The Story of Mel
:  an account of how real programmers used to do things.
Real Programmers Don't Use Pascal
:  Nice rant here.
There's always the International Obfuscated C Code Contest at www.ioccc.org.
The Tao of Programming:  I bought a copy of this in book form about 15 years ago, but lost it or gave it away at some point.  It was nice to find it again.

By all reports, the TeX code is among the best ever written.  Whenever somebody tells me that bug-free code is impossible, I point them to www.tug.org.

Tuesday, 23 January, 2001

Presidential Pardons?

What a weird way to run a government.  The outgoing President issues a bunch of Executive Orders at the last minute, and then the incoming President blocks those actions by preventing them from being printed in the Federal Register.  It's become somewhat of a tradition, according to this news story.

What struck me about that story wasn't that Presidents are playing tug-of-war with pet projects, but this paragraph:

One relatively uncontroversial rule sought by cheesemakers from the Agriculture Department got caught in the fray. It would have allowed smaller holes to keep Grade-A Swiss cheese from getting tangled in high-speed slicing machines. 

The size of holes in Grade-A Swiss cheese is regulated by the Agriculture Department?  What the heck for?

Sunday, 21 January, 2001

Jack of All Trades

Not so long ago, a programmer could get away with knowing one programming language and one system.  C on UNIX, COBOL on an IBM mainframe, or RPG on a System 38.  I guess there are still "C++ programming" jobs, where one spends the entire day writing C++ code for Windows or some other system.  But those jobs are becoming much less common.  Especially if you're writing web applications.  My current project at work, for example, has me writing code in five different languages:  a shell program in Delphi, server side ASP in VBScript, client side browser code in Java Script, a smattering of HTML here and there, and SQL in three different places to tie it all together.  I'm not alone:  many others at my company have similar tasks.  The amount of information you need in order to be competent in the computer industry these days is staggering.  The more I learn, the more I realize how much I simply don't know.  Sometimes I wonder if I'm in the wrong business.  Perhaps I should have been a plumber.  I think I need a vacation.

Saturday, 20 January, 2001

Gladiator

Debra and I rented Gladiator this weekend and spent an enjoyable few hours watching it.  Good performances all around, I thought, and the action sequences were quite good.  I liked how they sped things up during the fight scenes to give the illusion of things happening faster than normal.  The effect was almost like watching dancers under a strobe light, and jibes well with what I remember from my boxing days.  When the action gets fast and furious, you seem to see only snapshots rather than fluid motion.

The same thing happens when I'm bombing down a hill on my mountain bike:  only the important parts register.  The rest is lost in my reactions to the trees and big rocks that are in the way.  It's this ability to discard unimportant sensory input that seems the first thing to go when I've been off the mountain bike for a while.  When I get back on the bike after a few weeks or more, I find myself noticing little things that don't matter and as a result completely miss (or notice too late) the big bump that causes the fall.  I wonder if this is the essence of being "out of practice" in any endeavor.  Not so much the inability to see everything, but rather the inability to differentiate between the important and unimportant and automatically ignore those things that are of no consequence.

Friday, 19 January, 2001

Toilet Paper 'New and Improved?'

A friend at work pointed me to this article at MSNBC about Kimberly-Clark's plans to roll out a new type of toilet paper:  moistened tissues in a roll.  Basically, it's baby wipes on a roll, except that the fibers break down in water.  Innovation outside the computer industry.  What a concept.  They're going to spend $40 million marketing it, and imagine $150 million in annual sales the first year, increasing to $500 million within six years.  That's a lot of wipes.  I don't know what this stuff will cost, but you can bet it'll be quite a bit more than your standard 2-ply tissue.

What's so interesting about moistened toilet paper on a roll?  In itself, not all that much.  The product isn't even all that innovative—they've been selling a similar product in a tub for several years.  What struck me is that toilet paper is one of those things I figured had been "done."  I never really thought, nor met anybody else who'd thought, about "improving" the product.  (Excepting the "three seashells" in the movie Demolition Man.  I still wonder how you're supposed to use those.)  I wonder what other common household items that I've considered "done" will be changed.

Thursday, 18 January, 2001

Aethera

Beta 1 of Aethera is now available for download.  Aethera is an Open Source personal information manager:  mail client, contacts database, and notes, tasks, and journals manager for Linux/KDE.  It's in a heated (but informal) competition with the Gnome-based Evolution to become the Outlook-killer for Linux.  Is this really a good idea?  I don't know about everybody else, but I kind of like having separate programs for each of these tasks.  I handle my email much differently than I handle my journals and contacts, and Outlook's insistence that I treat everything the same way irks me to no end.  I'd rather have individual programs that work well together, but don't force me to treat journal entries and contacts in the same way.  Give me a decent email client and news reader, a calendar, and a journaling program.  I'd rather not have them combined, thank you very much.  

Tuesday, 16 January, 2001

Back on the Bike

What with the weather today (cold, drizzle, windy) and my not having exercised much recently (Saturday evening's ride with Jason was my first ride in a month), the ride home from work that usually takes about 90 minutes took almost two hours.  Even with my cold weather gear, I was cold by the time I got home.  The first hour or so was actually kind of fun, being back on the bike and all, but after that it was just work.  And cold.  But I did get some amusement.  There's nothing quite like riding along the shoulder at 20 MPH in a 60 MPH zone, passing cars that are standing still.  On a good day during a bad rush hour, I can get from work to home (26 miles) as fast as a car.

Note to self:  if you want to take a break, cut down on the biking but don't quit altogether.  A month off the bike makes for a sore butt and tired legs. 

Monday, 15 January, 2001

IE License Agreement is Too Much

I don't upgrade my browser or my operating system every week like the Microsoft Windows Update web site apparently wants me to.  Sure, I check for security fixes now and then, but I like my system to remain stable, and I just don't trust updating any piece of software so often.  So it's no surprise that I hadn't heard of Microsoft's "new" browser, the MSN Explorer that they launched last fall.  That's their new "consumer" browser.  The new "Business Edition," not released yet, is the NetDocs Explorer that is in beta with Microsoft Partners and will be released with .NET.  There's also IE 6.0, which will ship with Whistler and may not be available any other way.  Gads.  Testing my web apps against the different versions of Netscape and IE is bad enough already.

On a related note, here's a line from the most recent version of Microsoft's browser license:

"You acknowledge and agree that Microsoft may automatically check the version of software and components you are utilizing and may provide upgrades to such software that will be automatically downloaded to your computer. Microsoft may also automatically upload performance and usage information for the purpose of evaluating the OS Components and the associated services..."

 Sorry, guys.  This is just too much.  Will somebody please get Linux finished? 

Sunday, 14 January, 2001

Always Check the Return Code!

Here's an interesting lesson.  Today I was working on an example of using the exec family of functions (from Linux glibc).  The six functions in this family all do the same thing—launch another program—but each does it subtly differently.  Which one you call depends on whether you want to locate the program in the PATH, and how you want to specify the command line arguments and environment strings.  I got my little test program working fine fairly quickly, and then I ran across a seventh function, called fexecve.  This function works just like execve, except that you specify a file descriptor rather than a path name.  "Simple enough," I thought, and went to work implementing that call.  Except that it didn't work.  No matter what I did, the program would fail.

I finally decided to treat my example hack like a production program and added some error checking.  Sure enough, a call to perror after the call to fexecve failed resulted in this message:  "Function not implemented."  Sure enough, fexecve isn't implemented in any version of glibc.  I don't know why it's not implemented, and in my opinion it shouldn't even be in the library if it doesn't work.  I could probably get some mileage out of a major rant on this one, but I'll restrain myself.

The lesson, of course, and one that I insist on learning over and over, is always check the return code.  Sheesh.  You'd think I'd figure that out after 20 years.

Saturday, 13 January, 2001

Jason's Birthday Challenge

My friend Jason turned 30 last month, and decided to do a Birthday Challenge.  His Challenge:  in one 30-hour period within 30 days of his birthday, run 30 kilometers, ride 300 kilometers on a bike, hitting 30 mph at least 3 times, lift 3 tons of weights, do 30 push-ups and 30 sit-ups every 30 minutes during the run, drink 3 Texas beers (he's not much of a drinker), eat 3 King Pin fritters (which, from all reports, are difficult to eat), and raise $30,000 for the Young Survivors Coalition, which supports women under 30 with breast cancer.  He started today at 9:00 am with the 300K bike ride (about 180 miles).  I rode with him this evening for about 50K, from the 200K mark.  He'll finish the ride in 12 or 13 hours total time.  He'll go home and get a few hours' sleep before heading out for the 30K run tomorrow morning, followed by a trip to the gym to lift weights.  On his challenge page, he says that he "can't remember the last time I had a beer."  It turns out that the last time he drank a beer was at my 39th birthday party.

Jason planned his Challenge at the last minute.  My 40th birthday is on October 27.  I have some time...

Friday, 12 January, 2001

Air Force's Airborne Missile Blaster

CNN is running a story about a laser-equipped 747 that the Air Force has designed to blast ballistic missiles.  I'd like to think that the USAF engineers know what they're doing, and the idea is certainly cool (a nose-mounted swiveling megawatt-plus laser), but I have serious doubts about how effective such a thing can be.  The system is designed to weaken the structure of a missile as it's rising from launch, which will (in theory) cause the missile to break apart as the aerodynamic stresses increase during flight.  According to the story, the system has a range of "hundreds of miles" under optimum conditions, and an 18-second "kill window."  That's 18 seconds for the system to identify a launch, track the target, and fire.  This assumes, of course, that the airplane is pointed in the right direction when the missile is launched.

In order for the system to be effective during battle, they'll need at least two planes in the air all the time (so that at least one is pointing toward the suspected launch sites), which means that they'll need at least 9 planes total (2 for each 8-hour shift, and 3 spares to rotate in during maintenance) in any area.  They'll also need at least 12 flight crews if the system will be in theater for any length of time.  I wonder how effective this system can be against mobile missile launchers, or against an enemy that can have multiple launchers spread out over a wide arc. 

Thursday, 11 January, 2001

A Critique of Object Oriented Programming

Whether you agree with it or not, this critique of Object Oriented Programming is well worth the read.  The author has certainly done his homework and he raises a number of very valid points, the most obvious being that OOP, like any other tool, is not appropriate for everything.  I would argue that object oriented design is appropriate in most cases, but not all designs can be expressed well in the currently available OO programming languages.  I've seen designs and implementations that have been "over-OOPed," just as I've seen designs and implementations that are too strongly structured.  Just because a  tool can be used inappropriately doesn't prove that the tool is bad.  As for whether OOP is appropriate for business applications?  I'd say that it depends on the application.

The author's challenge to rewrite any submitted OO business application using non-OO techniques is biased in his favor, just as it would be in my favor if I offered to rewrite one of his non-OO applications using OOP.  It's almost always easier to clone an existing application—especially when you have access to the source and the brains of the original programmer—than to create an application from scratch.

Wednesday, 10 January, 2001

Your Happiness is Your Choice

In his book Man's Search for Meaning, Dr. Viktor Frankl writes "everything can be taken from a man but one thing: the last of the human freedoms--to choose one's attitude in any given set of circumstances, to choose one's own way."  Dr. Frankl wrote those words in 1945, after spending three years as a prisoner in Auschwitz and other concentration camps.  The book recounts many of Dr. Frankl's experiences as a prisoner, and introduces his psychological theory called logotherapy, the primary tenant of which is that "man's search for meaning is the primary motivation in his life, and not a 'secondary rationalization' of instinctual drives."  I'm not much on psychological theories, but his sure made a lot more sense to me than Freud's babblings.

I've known since adolescence that my happiness is my own choice and responsibility, but since I read Dr. Frankl's book (years ago), I take a much more active role in ensuring it.  My primary method is to look myself in the mirror every morning and say (quietly) "Today will be a good day," or "I will be happy today."  You'd be amazed at how effective that one exercise can be.  When things start to go sour and I start to become angry, I'll often stop and think of Dr. Frankl's words, and almost invariably decide that fueling the anger just isn't worth the effort.  I may feel sadness, anger, or depression, but I choose to be happy nonetheless.

Tuesday, 09 January, 2001

Simplify Your Life:  Get Out of Debt

Want to simplify your life, reduce stress, and regain some control over your financial future?  Get out of debt and don't borrow money again.  No joke.  And I'm not going to ask you to give me any money or even call a toll-free number for important information.  It's a simple process, but takes discipline.

First, stop living beyond your means.  Cut up your credit cards and don't sign up for any new ones.  Then, stop indulging in luxuries that you don't need and hardly even want.  Hang on to your old car for a little longer, and when you have to replace it, go for what you need rather than what you want.  Cook an extra serving or two for dinner and take the leftovers to work rather than going out for lunch.  Pay your taxes on time.  Stop smoking.  Stop buying that double chocolate mocha latté at Starbucks every morning.  Cancel your cable TV subscription.  Buy paperbacks instead of hardcover books.  There are hundreds of little things you can do that, when combined, add up to real money.  For example, eliminating the morning stop at Starbucks and lunch at McDonalds will probably save you $200 a month, which you can apply straight to your outstanding credit card balance.  If you smoke a pack a day, quitting will net you another $100 or so, and you'll feel a helluva lot better too.  Cable TV, digital phone, that second phone line at home, and other conveniences probably run another $200.  You might find that, not only are you saving money, but you're also calmer because you're not constantly worrying about all the gadgets you've let take over your life.

If you go this route, don't get too obsessive about it.  Be sure to reward yourself with a nice dinner out from time to time, or treat yourself to something special periodically.  Sure, you're working toward a larger goal, but enjoy yourself sometimes.  Just don't over do it or you'll end up right back where you started.

If you find yourself working harder and harder, earning more money but falling further behind, stop and examine your lifestyle.  It's very possible that you're letting your lifestyle control your life.  And no matter how much you make, you'll never get ahead.  I'm speaking from experience here.  Five years ago, Debra and I owed a year's salary in consumer debt.  The minimum monthly payments were darned near as much as our house payment!  We crawled out from under by watching what we spend, and by putting every spare dollar against what we owed.  We managed to have a little fun along the way, thanks to my writing, but almost all of our debt reduction came from eliminating frivolous spending.

Today we owe money only on the house, and that's going down fast.  Sure, I could probably invest and earn more than the 8% that my mortgage costs, but I'd still have the mortgage and I'd have to worry about the investment, too.  Looked at in strictly financial terms, paying off the mortgage is a bad move.  But in terms of cash flow, paying off the mortgage is preferable simply because with the house paid off, I have the freedom to take some time off without pay, or even change careers, without having to worry about where the next house payment will come from.

If you're looking to be a multi-millionaire, I can't help you.  But if you want financial freedom and a lot less stress, pay off your debts, and remain debt-free.  You'll be surprised at how liberating it can be.

Monday, 08 January, 2001

Fighting with Microsoft's SMTP Server

Did I mention that Microsoft's SMTP service is one of the worst pieces of software I've ever had the displeasure to work with?  Sure, it's easy to install and use, provided you use it in the recommended configuration and you don't try to do anything out of the ordinary.  But if you make a mistake in any of the configuration options, it just stops working.  And doesn't tell you why.  It'll accept a mail message for forwarding and immediately put it in the BadMail directory, or maybe just make it magically disappear.  No error message, no log entry, and nothing in the BadMail file except "Delivery to the following recipient failed."  And from the lack of useful information in the Knowledge Base and on the support newsgroups, I'd say that nobody at Microsoft knows anything about the software beyond "you must have configured it incorrectly."

I finally "fixed" the problems by stopping the default virtual SMTP server and creating a new virtual server carefully configured as recommended.  That now works flawlessly.  Except that there's no way to delete the default virtual server, and no way to permanently stop it:  it gets started again when the machine reboots.  I don't know what that's going to do to mail that I send.  Probably whichever service sees it first gets to handle it.  I suspect that the only way I'll fix the problem is to uninstall and then reinstall the SMTP service.

I thought that maybe I could fix the problem with some creative Registry editing.  Ha!.  Some genius at Microsoft figured that the Registry wasn't a bad enough idea and decided to use a completely new type of binary configuration file (the MetaBase) for the Internet services programs—a file that can't be edited by normal means, and that contains settings that can't be changed by any configuration program.  If you don't set it up right the first time, you're stuck.  It's a huge stinking mess.

If anybody reading this knows of a replacement SMTP service that will run on my Windows 2000 server, and a corresponding DLL that I can use to send mail from within an ASP page, please let me know.  Any software that has this many configuration problems can hardly be trusted to actually work right in a production environment.  And I thought configuring Sendmail was difficult.

Later

After poking around a bit and searching Microsoft's site some more, I finally ran across the MetaBase Editor on this page:  http://support.microsoft.com/support/kb/articles/Q232/0/68.ASP.  You'd think they'd supply the freaking thing with IIS in the first place.  Maybe I can use it to solve my SMTP problems.  We'll see what tomorrow brings.

Sunday, 07 January, 2001

Don't Use 'Weed and Feed' Fertilizers

If you're fertilizing your lawn this Spring, do not use "weed and feed" products.  These "weed" parts of these products are broad leaf herbicides that do a very good job of killing everything that's not grass, including flowering plants, shrubs, bushes, and trees.  The instructions will tell you not to use the product under the drip line of trees, for this very reason.  What the instructions don't tell you is that many types of trees send shallow feeder roots hundreds of feet beyond the drip line, and those roots will pick up the herbicide.  You'll have a nice green lawn (at least for a few seasons), but your trees will die.

The "feed" parts of these products are NPK (Nitrogen, Phosphorous, Potassium) fertilizers.  They're usually labeled with the NPK percentages somewhere in a form like 12-3-2.  Typically these fertilizers are high in nitrogen, and lower in phosphorous and potassium.  Applying high amounts of nitrogen stimulates growth and greens up the grass nicely, but at a cost:  it stresses the grass, making it much less drought tolerant and disease resistant. 

Compost is a much more effective (if not as dramatic) fertilizer, and horticultural corn meal is a better broad leaf and pre-emergent herbicide.  If you want a "quick greenup" for your lawn, spread dry molasses on your lawn at the rate of 10 to 20 pounds per 1,000 square feet.  It's non-toxic, has almost as much nitrogen as the chemical fertilizer products, and also contains plenty of carbon and other trace minerals that soil microbes need order to combat the pests that prey on plants.  Be careful not to overdo the molasses, though.  Once a year (in the Spring) is plenty.  And if you eliminate the chemical fertilizers and try a more organic approach you'll find that even the molasses treatment is unnecessary.

Saturday, 06 January, 2001

Yard Cleanup

The last few days have been very good reminders of why I like Central Texas so much.  Today was clear, calm, and 70 degrees  It hasn't rained in a while and the ground's finally dry enough that I can get the lawn tractor out in the back.  We have a dozen oaks, and countless elms and mesquite trees that shed an amazing number of leaves, most of which will end up in the swimming pool if I don't clean them up.  In previous years, I'd rake the leaves into long rows and then use my little shredder to suck them up.  Since I had to mow anyway, today I used the lawn mower to catch the leaves along with the grass clippings.  The picture at the right shows my truck heaping with leaves and grass (mostly leaves).  Debra and I pulled four such loads out of the yard today, and I'll probably pull another truckload from along the fences and other places that I couldn't reach with the lawn tractor.

So where do the leaves end up?  The first year we lived here I just piled the leaves behind the garage and sent them to the dump with the trash—a little at a time. One year I burned them along with a bunch of limbs I'd pruned from the trees, and twice I hauled them over to a neighbor who was using leaves as mulch.  Now, though, they go into my compost bins.  All those leaves and grass filled my three empty 4x4x4 compost bins.  They compact nicely when they're wetted down.  I'll add kitchen scraps and other yard trash to the bins, and by the end of the summer I'll have one bin of finished compost.

Friday, 05 January, 2001

Changing IIS Default Directories

I've set up Microsoft's Internet Information Services on my home and office workstations (Windows 2000 Professional), but today was the first time I'd set up the software on a production server.  The install process is the same, but because this is a production server, we wanted to make sure that all the data is stored on our Data share so that we can back it up more easily.  IIS (including the FTP and SMTP services) defaults to storing everything in subdirectories of c:\inetpub.  If you want to move things to another directory, there are about a dozen different paths that you have to change, and it's difficult to find them all.  When we finished, we deleted c:\inetpub.  After rebooting, something created the c:\inetpub directory, mailroot, and some files within mailroot.  I'd be willing to bet that the string "c:\inetpub" is hard-coded in one of the executables.

It shouldn't be that difficult to change the default locations.  Microsoft should know by now that people who are serious about backing up their data typically store their data separately from their executables.  I, for example, install all of my software on the C: drive, but all of my data goes on D:.  I hate software that makes it difficult for me to change default data locations.  The setup for IIS should have an option to specify the name and location of the inetpub directory, and then automatically move the wwwroot, mailroot, and ftproot directories.  The setup should also have a single dialog page where you can specify all of the paths.  In moving the IIS defaults from c:\inetpub to the d:\data share, I had to visit dozens of different dialog pages, and the only way to be sure that I got everything right was by trial and error.

IIS isn't the only program that suffers from this problem.  All of the Office programs want to store stuff in the "My Documents" directory, and Outlook wants to store its files in the "Application Data" directory.  It's not hard to move these directories once you find the option, but it's not easy finding all of the places to specify path names.  Just about every commercial program I can think of wants to store stuff either in "My Documents" or in a subdirectory of the install directory.  That's almost never where I want data to be stored.  Some are easier to change than others, but very few make it simple.  Maybe there's a registry setting that will let me change the location of "My Documents".

Thursday, 04 January, 2001

More VBScript Wonkiness

Another page in the VBScript chronicles.  Today was a little frustrating, although ultimately rewarding because I finally got the entire system running on the test server.  The frustrating part was VBScript's wonkiness.  For example, I wrote this code to walk a record set:

CurrentID = rsSurvey("RespondentID")
while (not rsSurvey.EOF) and (CurrentID = rsSurvey("RespondentID")
  ' do processing

  ' move to next record
  rsSurvey.MoveNext
wend

All pretty standard stuff, except I got an exception when I tried to run it because VBScript doesn't shortcut its Boolean evaluation.  So even if the first test fails (i.e. EOF is true), it'll perform the second test.

There doesn't appear to be any way to break out of a while...wend loop (i.e. no break or exit while statement), so I ended up having to write the following code, which is reminiscent of my old ISO Pascal days (ISO Pascal also lacked shortcut Boolean evaluation):

CurrentID = rsSurvey("RespondentID")
bKeepGoing = not rsSurvey.EOF
while bKeepGoing = true
  ' do processing

  ' get next record
  rsSurvey.MoveNext
  if rsSurvey.EOF then
    bKeepGoing = false
  elseif CurrentID <> rsSurvey("RespondentID") then
    bKeepGoing = false
  endif
wend

My understanding is that the next version of VBScript fixes this and many other language oddities, although from what I hear the new language is quite different and existing applications probably won't compile.  I'm of two minds about that.  On one hand I'll be ticked off that I have to modify my programs to work with the new language.  But on the other hand, it appears that the new language was actually designed rather than just hacked together.  Maybe the new VBScript won't be so wonky.

Then again, maybe I'll just start writing my web apps in C#.

Wednesday, 03 January, 2001

Napster Increases Record Sales?

There's an interesting item on Slashdot today about an article that appeared in the January issue of American Demographics.  According to studies mentioned in the article, Napster and other online file sharing systems actually generate sales and put more money in artists' pockets.  I always suspected as much, but had no way of proving it.  The idea isn't so surprising, especially when you consider that, as I pointed out in my November 20 entry, some book publishers have discovered that they can increase sales by providing sample chapters or entire books online.  Many people like to try things before buying, and are willing to pay real money for an item if they like what they see.  But without an opportunity to sample the merchandise first, they'll never open their wallets.  Sure, there are some who won't pay at all if they don't have to.  But that percentage is apparently much smaller than record companies and Metallica would have you believe.

Tuesday, 02 January, 2001

Stop the Binary Insanity

Lou Grinzo, editor of LinuxProgramming.com, posted an article last night called Stop the Binary Insanity.  In it, he uses the Red Hat 7.0 compiler fiasco (shipping a one-off "patch" compiler that creates applications that are incompatible with just about everything else) and moves on to discuss the general lack of concern about release-to-release compatibility among open source developers.  It's a well-thought and well-written article, and very much worth the read.  User-friendliness issues are all that's holding Linux back now.  Without concern for "average" computer users, Linux in particular and open source in general will continue to be regarded as either a toy or too complex for "real people" to use.  If that's what the community wants, then fine.  But if developers want open source to be taken seriously by the general public, then they'll have to take their users' concerns seriously.

Monday, 01 January, 2001

Sleeping Through the New Year

Staying up until midnight to usher in the New Year lost most of its appeal years ago.  I usually don't get to bed before midnight, anyway, and staying out partying all night isn't so attractive when I have to drive 20 or 30 miles to get home.  Some years we'll have a few good friends over for quiet get-together, but this year was just too cold and too hectic for that.  Last night we did something novel:  we went to bed at about 10:00 and were asleep well before midnight.  What the heck, the New Year was almost a full day old in Tokyo by then.

Many people use New Year's Day to reflect on the past and look forward to the future.  They write silly "best of last year" articles and make "resolutions" for the next year:  "resolving" to do all things great and wonderful.  It's too bad that most of them promptly forget by the end of January.  It's easy enough to say you're going to quit smoking, or lose weight, or spend more time with your family, but things are different when the rubber hits the road.  It takes a certain amount of discipline to actually change a habit, and it seems that too many people just don't have the commitment.  Not that I'm perfect.  I've made and promptly forgotten plenty of those "resolutions" myself over the years before I learned.  I learned that the time for changing is "now," and once I've decided to change, I have to think about it every day and actively work towards achieving the goal.  Yes, it's hard:  changing my personal habits is the most difficult thing I've ever done.  But also the most rewarding.