Election resolved

Did anybody notice that we now have a President elect?  After five weeks of court battles and interminable news reports, we finally know who the next President will be.  Throughout the uncertainty, nothing happened.  That would not have been the case in many countries, where even a certain outcome sometimes results in the losing party attempting to mobilize the military and taking control by force.  For all of its flaws, our form of government works.  Of course, this country’s economic situation is partly (mostly?) the reason for the relative calm.  Even our poorest people live much better than most of the world’s population.  Things might have been radically different if the majority of our citizens were barely surviving.

Microsoft Access and Common Controls versions

A client contacted us about a custom application we’d written two years ago and modified sometime this year.  Apparently, the client had finally decided to run the application (they paid us for the modifications months ago), and it failed.  The developer who made the modifications is either on vacation or no longer with us (I haven’t yet determined which developer made the changes), so it falls to me to discover and fix the problem.

It turns out that the program is a Microsoft Access application designed to run on the client’s Windows 95 system.  The developer who made the modifications was working on a Windows 2000 system.  The modified program works fine under Windows NT and Windows 2000, but fails under Windows 95.  Why?  Because there are incompatibilities between the Windows 95 and Windows NT versions of some common controls, and the Access application retains information about the control set that was on the development machine.  Granted, the developer should have tested the program on Windows 95 before shipping it to the client, but still—an application depending on information about the development system is a really bad idea.

To make matters worse, when the program is run on Windows 95, Access displays a very unhelpful error message:  “There is no object in this control.”  It doesn’t say which control.  Worse, when I try to edit the application under Windows 95, I get the same error message and it still doesn’t say which control has no object.

This (and similar problems) is why we no longer create applications with Microsoft Access.

Problems with Windows 2000 SMTP Service

Maybe I’m just getting too old for this stuff.  With Windows 2000 on my machine now, I figured I could start the SMTP service so that my applications that need to send mail could use it rather than the SMTP service on my Linux box.  Not that I have anything against the service on the Linux box—it works fine—but that box is pretty volatile because I’m forever mucking with it.  Plus, the apps that need the SMTP service are running on my Win2K box so it just seems easier to have the service running there too.  That way I know that it’ll be running when my apps need it.

Now I had no trouble setting up the SMTP service on my Win2K box at work, and I’m running the same version here.  But I can’t get the darned thing to send mail.  My app can connect to the service, and the service accepts the mail.  But then it just drops it into the queue.  Strange.  I’m beginning to think that the Microsoft SMTP service wants my computer  to be connected to an honest-to-Pete domain before it’ll try to send mail.  Egads.

Until I figure that one out, I have the SMTP service on my Win2K box using the Linux box as a “smart host.”  Basically, all mail requests that go to the Win2K SMTP service get sent immediately to the Linux SMTP service.  There’s still some good here.  Previously, if the Linux box wasn’t running, my application would report an error (SMTP service unavailable) and the mail would never be sent.  Now, the mail is delivered to the Win2K box, and forwarded when the Linux box is next available.

I think I’d be happiest, though, if I could get the equivalent of the Linux sendmail program running on my Win2K box.  Guess I’ll have to go searching for that one. 

Upgrading Linux and Windows systems

Yesterday was Shopping Day, and while I was at Best Buy I picked up a copy of Windows 2000 Professional Upgrade, and SuSE Linux 7.0.  Today is Upgrade Day.  I’m upgrading my Windows 98 box to Win2K, and my SuSE Linux 6.4 box to SuSE Linux 7.0.

I actually started the Win2K upgrade last night, but went to bed while it was examining my system to find incompatible hardware and software.  When I got up this morning I found that I needed to obtain some new drivers and uninstall some software before continuing with the upgrade.  So now I’m ready to give it another shot.

I usually don’t do OS upgrades, preferring to reformat my system and install the OS from scratch.  But the Win2K upgrade package was $100 less than the standard package, and people I trust have done the 98-to-2K upgrade successfully, so I’m going to give it a try.  Wish me luck.

I’m not too concerned about the Linux machine, as at the moment it’s mostly just a test box.  There’s nothing on the machine that I can’t nuke.  I’ll probably try to upgrade just to see how it goes, but if things get nasty I’ll just nuke the box and start over with SuSE 7.0.

Later

The Win2K upgrade seems to have gone well, and all of the partitions are now NTFS.  The only odd thing I’ve seen so far is that Win2K seems to have swapped the drive letters on my CD and DVD drives.  Knowing how these things go, I suspect that won’t be the only oddity I encounter.

The Linux update went well, too, although it decided to overwrite my sendmail.cf file, so I had to go figure that one out again.  The system was also very slow once the update was done.  It apparently never rebooted (a plus, I guess), but there appeared to be active processes after the update that really weren’t necessary.  I rebooted the system and it seems to be running better.  No major problems to report…yet.

Pros and cons of VBScript

I started working on a custom web application for a client today, which takes me back to the world of ASP and VBScript.  From a purist standpoint, I still dislike the language because of its weak (non-existent, really) typing and inconsistent syntax.  But it’s easy to get a web application up and running with VBScript.  After getting IIS and the debugging support installed on my machine, debugging is almost as nice as with Delphi or VC++, and the Visual InterDev development environment actually isn’t too bad.  Sure, there are things I don’t like, but I’ve been impressed at how quickly I’ve been able to create this application using a language and development environment with which I’m unfamiliar.

A lot of the criticism that I hear about Visual Basic (in all of its forms) is centered around its ease of use:  because it’s so easy to create programs, people create a lot of crap.  True enough.  But just because a tool can be misused is no reason not to use it.  C, C++, and Perl are just as easy to misuse, and a lot of people use those languages to create crap, too.  Just take a look at www.freshmeat.net if you don’t believe me.

Visual Basic’s appeal is that it lets developers quickly create solutions.  Perhaps they’re bloated, and maybe they’re slower than they could be.  But for most business applications they’re good enough.  And that’s what businesses want:  applications that solve their problems now.  That’s much to be preferred over a small and fast application that’ll be ready when it’s ready.

An ice storm

Today’s adventure actually started yesterday evening, when the temperature dropped to 20 degrees and it started raining.  The power went off periodically starting at about 5:00 pm and went off permanently at about 2:00 this morning.  When I woke up there was 1/4 inch of ice covering everything—trees, fence wire, the car outside, and blades of grass.  Many tree limbs broke under the weight, and those that didn’t break were drooping to the ground.  When the sun came out, it was a dazzling sight.  Debra took some pictures, which I will upload once we get the film developed.  (Yes, I know, get a digital camera.  We’ll have one in about 12 days.)  I stood outside for about 30 minutes watching and listening to the ice melt from the trees.  

Oddly enough, most streets didn’t ice over because the ground was still relatively warm.  It only got cold yesterday.  But bridges did ice over, and most schools and businesses were either closed or opened late, my dentist being a case in point.  Between the painkillers and antibiotics, I was able to isolate the offending tooth, but had to wait until the dentist opened his office at 2:00 this afternoon before I could get any relief.  A root canal isn’t fun, but it’s preferable to what I was going through.

Toothache

There’s nothing quite like a sore tooth.  Yesterday afternoon I started getting a toothache, and by the time I went to bed, it was quite painful.  This morning it was so bad that it felt like the whole right side of my mouth was under attack.  I got in to see the dentist, but x-rays didn’t reveal anything, and we were unable to localize the pain.  So he gave me some painkillers and antibiotics and told me to return tomorrow.  I must say, afternoon TV isn’t so bad when you’re flying high on Tylenol 3.  Not able to do much on the computer, though.  My attention span is pretty short at the moment.

Batfink!

I was talking with my older brother and sister a while back and the conversation turned to cartoons.  All three of us remembered a cartoon in the late 1960’s called Batfink1.  It was a spoof of the popular Batman series.  The hero (Batfink) was a real bat who had steel wings, a “super sonic sonar radar,” and super powers.  He and his sidekick Karate fought all kinds of evil villains, especially the dastardly Hugo A Go Go.  Batfink’s most memorable line, which he uttered in almost every one of the 100 episodes was “Your bullets cannot harm me, my wings are like a shield of steel.”

None of us had ever talked to anybody else who remembered the cartoon.  Worse, my wife and my sister’s husband always accused us of making the whole thing up.   Today I had a similar conversation and decided to go search the web.  I found quite a bit of information, most of it available at this web site, proving once again that you can find anything on the Internet.

If anybody knows where I can get videos of the episodes, please let me know.  I’ve found one possible source, a comic book shop in California, but I’m not sure they’re reputable.  I’d prefer a reputable dealer selling “official” goods.

  1. Batfink copyright Hal Seger Productions ↩︎

Bicycling update

What with the weather and my being sick, I haven’t been biking much—only a couple of rides in the last month or so.  The weather was reasonably nice today, so I got on the bike about 1:00 for a 2- or 3-hour ride.  It’s amazing how quickly my fitness changes in just a few weeks.  I knew that I would have to take it easy, but it took me 40 minutes to reach a point that I usually make in 30.  Part of it was the headwind, but most of it was just being out of shape.  Unfortunately, the weather for the coming week is expected to be seriously cold, and we’re even expecting freezing rain sometime Tuesday or Wednesday.  I’ll have to spend more time on the magnetic trainer.

Linux programming headaches

I think I mentioned that I’m writing a book about Linux programming using a new (yet to be released) programming tool.  This weekend I’m working on a chapter about processes:  how to create, destroy, and control them.  I am seriously impressed by Linux’s wide range of process manipulation functions, but equally distressed by the seeming lack of coordination among the different API families.  And the available documentation, as I’ve come to expect, is thin and hard to find.  Fortunately, the more I learn the easier it is to form intelligent search queries, and the man pages have been quite helpful.

Some of the commands and API calls are pretty obscure, though.  For example, to launch a process with a lower priority, you use the nice command.  The command renice lowers the priority of an existing process.  Why the word “nice?”  Because by lowering the priority of your process (normal users can’t increase a process’s priority), you’re being nice to other users.  Man, that’s obscure.