We tested the boat yesterday. It smokes a little bit and leaks a little but seems seaworthy. We’re heading to the boat-in campground tonight. I need to pull the breaker on the bilge-pump so it doesn’t pump all night and run down the battery. I have jumper cables and hope that someone will be there to help out if there’s a problem in the morning. That is, if the boat hasn’t sunk by morning.

The internet seems like a less-than-useful tool to me back in 1989. I even comments to someone who ran an ISP that it seemed like a big collection of ugly junk. Boy has the internet and my opinion changed. Now it is a gigantic collection of junk but there’s lots of amazingly useful stuff out there too. the quantity of good information has reached a point where a programmer should never need to buy a programming book or take a class to learn any new language or to program for any operating system.

My job requires that I write code that runs on Windows and on two *nix style operating systems; Linux and Solaris. Most of the time, just writing code is easy and the platform is never a factor. Ok, so it’s not always easy. Now and then, I need to write something specific to Linux that is just plain unusual. This time, I just needed to create a makefile and it was specific to *nix. Hmmm, how do I change directories, check to see if a file exists, and then invoke some other makefile. The internet provided the answers and I could not have figured this out in two days without some other idiot, er…, programmer, asking the questions I was asking. First, check for a file. “-f filename” didn’t work so why did tens of pages show that as the answer? “test -f filename” works fine but then my directory change didn’t work. Answer to that is that each command is executed by it’s own shell. That’s weird but another page tells me to stick all of the command on a single line. The result:

cd otherdir;
test -f makefile|| ./configure

The || make it so that the configure script only runs if the makefile in the other directory doesn’t exist. The slashes at the ends of the lines make this appear as one long line internally. The results is that the configure script is run if needed and then the other make file is invoked. Thanks internet for telling me all of this in fifteen minutes or less.