A couple of geeky items

1. I’ve been playing around with SQLite on my linode. The database generation script runs twice as fast as when I use MySQL. But I’m having one major problem with the update script – it’s probably due to the Perl DBD::SQLite, rather than SQLite itself, but if I insert into a VARCHAR column using


my $wptInsertStmt = $conn->prepare(qq{
INSERT INTO wp_test
(id, datasource_key, tpa)
VALUES (?, ?, ?)});

$wptInsertStmt->execute('abc', '111', 555);
$wptInsertStmt->execute('1E2', '222', 123);

the ids that look like numbers get interpreted as numbers, so that ‘1E2’ gets inserted as ‘100’. Both MySQL and PostgreSQL versions of this code get it right. I suspect I’m going to have to convert the code to use bind_params, which will bloat the code and lead to problems if I get it wrong. It also appears I have to close all my prepared statements.

2. I hereby officially declare THE DEATH OF THE FLOPPY. I was using a floppy to transfer files between my development machine and my test machine. But the shutter on the floppy I was using suddenly stopped working. So I got another floppy, and after a transfer or two, I started getting I/O errors on the new floppy. So I grabbed another, and the same thing happened. That’s when I realized that when the spring sprung, it probably fell off inside one of my floppy drives and is still wreaking havoc on every floppy I used since. Unfortunately I couldn’t find my USB drive, so I had to beg one from a cow orker. Even if it is at home, I’m thinking of buying one or more new ones. They’re certainly cheap enough.

3. The LUGOR mailing list today is full of the plaintive crys for help from a guy who seems to be doing web design for a guy who doesn’t seem to have gotten the idea that a corporate web site should be about content, not craptactular toys. The first request was for information on how to put an animated train running around the borders of the web page. Evidently the boss is a dentist who has toy trains running around the office, and he thinks this would transfer well to his web site. The other, equally brain dead request was for putting automatically translated versions (ie Systrans or Babelfish, not human translated) of all of his web site up and automatically directing people from those countries to the “translated’ version. Can you imagine what a great image you’d give to people in non-English speaking countries subjecting them to Babelfish versions? Especially since you’d be automatically redirecting them there, even if they spoke English. I told him to look at Engrish.com and imagine people all over the world submitting his site to the local equivalent of that site.

Nice flight

It was a surprisingly nice day. Actually, I hadn’t noticed it was going to be a nice day until I was reading Information Echo, where he was opining how he was going to miss the flying day due to family commitments. I quickly hit F12 to bring up the Dashboard, where the Aviation Weather widget showed me that the only clouds forecast were high cirrus. Ok, not exactly sunny, but extremely good VFR throughout the region.
Continue reading “Nice flight”

Today’s interesting discovery

I’ve just discovered  lighttpd, a small memory footprint web server that supports all the stuff I currently use on my Linode – it’s got server side includes, fast cgi, simple virtual hosting, and mod_rewrite type redirection.  And Ruby on Rails supports it.  Ruby on Rails also supports SQLite, a small memory footprint SQL RDBMS.

Considering the small memory on my linode, I’m thinking that a transition from Apache and MySQL to lighttpd and SQLite might be just the ticket to improve the performance.  Which will be important if I start playing around with Ruby on Rails, because these “do everything including the kitchen sink” things tend to be memory and CPU hogs.

Now I’m trying to figure out how to test a transition.  I could install both of them on my home server and run it on another port.  I could install both of them on my linode and run it on another port.  Both of those options have the problem that it’s not a 100% accurate test, because I’d have to change the code to support a different port, and then change it back if/when I make it the true thing.  Another possibility is to buy another Linode for a few months and try it out there.

Friday the 13th: A good day to fly

I finally got up flying today.  It wasn’t perfect weather conditions – there were low scattered clouds around the airport, and a solid overcast up at 20,000 feet to deprive me of the sunny day I craved.  It was a bit hazy and there was a definite wind shear around 2,000 feet, with the consequent small amount of turbulence.  But it was warm enough that I didn’t have to pre-heat, and thanks to our getting cheap hangar space this winter, no messing around with wing and cabin covers.  And the weather is supposed to utterly suck this weekend, so it was now or “never”.
Continue reading “Friday the 13th: A good day to fly”

Baby’s first AJAX

I’ve enhanced my CoPilot Waypoint Database Generator to do a bit of AJAX-like coding.

Formerly, after you’d entered all your parameters it would fire off a background task, and then continually refresh a page that would look at the background task’s log file and tell you how many records it had put in the file already.

Now, the refresh page is still there, but if you have Javascript active, it does a window.location= to redirect to an html page which has some javascript that uses the XMLHttpRequest or ActiveXObject to call a perl script that generates a very small XML file that only has the progress, and sets the appropriate div in the page to visible and sets some values in appropriate spans.

It seems to work very nicely, but what a convoluted mess. Between the HTML, the CSS, the Perl, and the Javascript, I’ve got language fatigue. Javascript is not turning out to be my favourite language. I’ve never been able to understand why Sun didn’t sue Netscape over the intentional confusion between Java and Javascript, but now I’m even more confused.

All the other craptacular syntax and bogus object model aside, what Javascript really needs is a simple way to turn a simple bit of XML into an associative array. And don’t talk to me about JSON – even if I wrote both the client and the server, I just don’t feel right about having the client eval a string passed to it by the server – I just know there’s got to be a security exploit waiting to happen. So instead I’ve got all this

var tStatus = xmlDoc.getElementsByTagName("status")[0].firstChild.data;
var tOtherURL = xmlDoc.getElementsByTagName("otherurl")[0].firstChild.data;
var tRows = xmlDoc.getElementsByTagName("rows")[0].firstChild.data;

That's just ugly.