I finally got the server logging the current voltage - using my new serial card. No thanks to Sean - he gave up on helping me. However, I do now have his zmeter app working - it appears that it was a kernel issue that was preventing my compiled version from running. Anyways, the other night I noticed that the dehumidifier was trying, unsucessfully, to startup. I glanced at the meter and it read 98 volts! I called the Illuminating Co. at once and they dispatched a truck for my low voltage condition. Since then my voltage is way up - last night it read 112 volts, right now it's reading 106. I know, still low by most peoples standards, but way up from the 98 I was seeing earlier in the week. I'll log this mediocre voltage for awhile and then call and get them out again.

We took Sam's Cox control line airplane to the park tonight for it's maiden voyage. The plane is a Cox PT-19 flight trainer - two seater, open cockpit, single wing plane. It is the exact same Cox plane that my Dad bought for me when I was a kid. I remember starting it in the back room, but we never flew it... Sam and I had started this plane several times to break it in. We got it up tonight, over the baseball diamond. It flew about 270 degrees of it's flight plan when we overcompensated on the controls and flew it straight into the ground. The plane broke apart, as it is designed to do, but appeared to sustain no damage. The engine however, sucked in a bunch of dirt - so we didn't risk another engine start; instead, we took it home and broke the engine down to remove all of the debris.

The wall is coming along. The brush was removed, and chipped last week. Actually, all that brush was really just two of the largest junipers that you've ever seen. The low wall (above) is almost all layed, it just needs to be back filled and capped. It appears, now that the old wall is gone, that our driveway has been repaved at least 3 times - there's at least 3 distinct layers of asphalt totalling about 8 inches! That's some serious weight for any wall!
Big news! Sprint has changed their TOS to allow the unlimited data (Vision) to include wireless modems! Personally I think they did it because they had no idea how to identify modem use, little own figure out how much data you were using! Either way it's great to be legit. Now everyone should run out and get PalmNet for their Treos - it rocks!

Handspring quietly released the long awaited firmware upgrade for the Treo 300 this week - and I installed it like the Lemming that I am. The upgrade / fix / patch / whatever is intended to improve Vision error handling and radio reception. The unintended new feature, apparently, is that battery life now sucks! I had to recharge my phone twice yesterday. Ughh!

Handspring has announced the next version of the Treo. Looks great - smaller, no flip, SD I/O, OS 5, plus a built in digital camera to boot. Expected to be shipping this fall, I can't wait!
Still lots of discussion going on about your odds of winning on Let's Make a Deal. I'm still not convinced, though, that the formulas are correct. I stand by the 50-50 probability.
Your odds of correctly picking the one prize behind the three doors (on your first guess) is 33%. When the host then shows you one of the doors that contains no prize you are allowed to guess again. This second guess has your probability of success at 50%.
You are, essentially, starting from scratch on your second guess. How does the first guess have any bearing on the second guess? No matter what you guessed the first time the host will open, and show you what's behind, a losing door. The only way you could arrive at a probability of success of 66% would be if no doors were opened and you were allowed to make two guesses. P(A | B) = P(A) + P(B) or 1/3 + 1/3 = 2/3.
But that's not the case here. Your first guess' probability (P(A)) is 1/3, and your second guess' probability (P(B)) is 1/2. If they were mutually exculsive events, and you could use the additive property, your probability would be: P(A | B) = P(A) + P(B) = 1/3 + 1/2 = 5/6 = 83%. But they're not mutually exclusive events, because you can't win on either your 1st or 2nd guess - you can only win on your 2nd guess. So, the odds remain 1/2.
Of course, none of this holds true if the prize is in motion, behind the doors, as you and Bob Barker banter about what you may have won!

The guys arrived today to begin demolishing, and rebuilding the retaining wall that holds our driveway up. First order of business was the removal of all the brush that lined the driveway. 30 years of untamed brush. That removal, in it self, is a major undertaking!
"Bob, I'll take what's behind door number 2..." Do you really stand a chance at winning anything behind door number 2? An entry in Jon's blog led me to The .Net Guy's discussion on the topic. Definetely alot of heated debate over how the probability of your success should be calculated! The bottom line is that unless you can say for sure whether or not the game is rigged or legitimate you have no way of calculating the odds of your success.

I got xtide up and running on the server last night, and now I have the command line version cronned to build a page showing me what I'm in for should I head to the beach. End state I'd like to get SMS tide updates every Friday afternoon, say, during the summer. No need here, just an interest in the moving body of water! Not for navigational purposes!

Chagrin Falls hosted their 1st annual Duck race today! Quite honestly, I had never imagined so many rubber ducks before. There were prizes for first duck over the falls, and several other categories. I have no idea how they determined who won, or who was declared the winner, but it was alot of fun. There were hundreds of people lining the bridge over the falls, and both banks of the river. Looking forward, already, to next year's race!
New blog added to the mix - I just added the www.bethany-beach.us site. My intention is to eventually move the site to the beach, but for now it'll run here until I get everything squared away.
Well, it happened again. Records in the mt_entry table were mysteriously missing this morning - which of course, screws up the entire blog. I ran the myisamchk utility and cleaned up the tables, again. I'm in the process of reloading the affecte rows, again. I plan on backing up the database, once again. On the advice of Jon, though, I moved the entire MySQL instance to another volume - now all of the Oracle and MySQL tables reside on the same volume. Who knows, maybe there's a problem with the drive that this thing was sitting on.
Alright, feeling pretty good about things! The brand new CyberPower UPS on the workstation just failed! I had shut the unit off, because I was remounting a drive in the case and now the UPS won't come back on!
So, to recap - in the last 24 hours I've had the blog's MySQL tables fail twice, the brand new HP Autoloader was DOA, and now the UPS is shot! Anytime this big black cloud over my house is wishing to blow over...

Figures... The new backup drive was bad, and of course the site fails shortly there after. Another MySQL / Blog failure. Once again something has happened to the MT_Entry table. This time it wasn't corrupted, but it did suffer a failure of sorts. For some unknown reason the last couple of weeks' worth of entries was deleted. Not just for this blog, but for all three of the blogs that reside on this server. I'm getting a little concerned about things, this was obviously not a hardware issue as there were no issues with the tables. So is this a MySQL error or is this a MovableType issue... Either way I have to get the backup running.

Recent events, both to myself and to others, had gotten me thinking about my backup strategy. Alas, my strategy was more a lack of... While non of the information on my server is irreplaceable it is becoming more and more important to things around here. So, I decided to ditch the old Travan single tape drive and move up to an HP Autoloader. The unit should be here in the next day or two; hopefully, the install will go well and it will help to improve my disaster recovery capabilities.
![]()
The Yahoo! Products feed builder's output has been certified by Yahoo!, and it is now scheduled and running daily for the Joanne Hudson Basics website. The Yahoo! Products service is very similar to the Froogle service - they both allow online stores to upload their catalogs into a central, searchable, catalog. They offer a potential buyer one stop shopping. There are arguments pro and con such aggregators, but my thoughts are if you're not there then you're losing potential sales. Anyways, if you think along my lines, and you're running PHPShop, feel free to check out the script that we're running - it's being released under the GPL.

I added another UPS to the mix of things here. Another CyberPower 1250, this time on the Compaq Workstation. I added up all the wattage hanging off of it (including the LCD) and I estimate that I should see about 78 minutes of runtime from it. Little bit better then the 35 minutes I get for the server with no display, eh? Perhaps it would have been better to get a 1500 VA unit for the server and move it's 1250 to the workstation... But, I got a good deal on this unit! I also moved the old Backup UPS 300 (that the Compaq used to sit on) to one of the hot plugs on the new UPS. All of the network hardware - (modem, router, switch, wireless, etc) are all plugged into that. I need to calculate the runtime for that device, bottom line though - my net connection will still be up after my boxes have gone down!
The A's (Sam's not Meg's) played the Orioles the other night. Sam was walked in the 3rd and struck out in the 5th. Not a bad game, there's been a definite improvement (team wise) since the first game. We had a dynamite 4th inning - something like 5 runs. But the Orioles dominated the 6th (we actually walked 5 runs) and we lost. The A's play again Friday night. The other A's (Meg) have their first game on Monday.
Sometimes (ofen actually) I hear, or read, about pending legislation that just doesn't make any sense. Today is one of those days. I just read about upcoming changes to the Telecommunications Act that are downright stupid. The FCC has approved changes to the Act that will do away with line sharing.
What does this mean to you and me? It means...
![]()
I modified (today) the Froogle Feed perl script that I developed for PHPShop - specifically for the Joanne Hudson Basics site. The biggest change to the logic, is that I no longer try to cull the HTML out of the records that get returned from the database. While the logic that was in place (reg exp) was working it was really tailored strictly to Jon's coding style - so it wasn't portable. I modified the job to use the perl HTML::Parser module which does a much better, and more efficient job of stripping the HTML code. There's still a little reg exp in the code - I use it to replace foreign accents - currently I'm only tackling e's and a's, but the pattern matching is straight forward and easily modifiable if anyone needs another letter.
![]()
The whole reason for even looking at the Froogle feed again was that I used it as a skeleton for a new Aggregator feed - Yahoo! Products. The Yahoo! Products concept is identical to Froogle, so it held that my program logic would be too. I actually like the Yahoo file format better then Froogle's, as you only have to deal with one layout and it can dynamically support multiple product types (eg. Housewares, Books, CDs, Videogames, etc.). Currently I'm maintaining two source trees, but it would probably make sense to merge the two programs into a single job. I'll think about that after Yahoo! blesses the file that I sent them today.
The new Froogle Feed Builder script is on the website now. I'll put the Yahoo! script up once it gets approved.
The blog has been static for the last week - due to a MySQL failure. I went to add an entry last week and the blog app said that I had no entries! Actually, there were no entries in any of the 3 blogs that reside on this server! A little poking around showed me that the entry table had been trashed. In reality, the data was still intact but the Index file had been corrupted.
Using MySQL's built in tool to check the table didn't tell me anything more then I already knew:
mysql> check table entry extended;
+---------------+-------+----------+-----------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+---------------+-------+----------+-----------------------------------------------+
| db.entry | check | error | Can't open file: 'entry.MYI'. (errno: 126) |
+---------------+-------+----------+-----------------------------------------------+
1 row in set (0.00 sec)
Similarily the MySQL maintenance tools were just as much help:
mysql> describe entry;
ERROR 1034: Incorrect key file for table: 'entry'. Try to repair it
mysql> repair table entry extended;
+----------------+--------+----------+------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+----------------+--------+----------+------------------------------------------------+
| db.entry | repair | error | Can't open file: 'entry.MYI'. (errno: 126) |
+----------------+--------+----------+------------------------------------------------+
1 row in set (0.00 sec)
From the OS' command line I tried to run the myisamchk utility which (surprise, surprise) works just as well as the repair table function!
[root@cleveland db]# myisamchk -r entry
myisamchk: error: 'entry' doesn't have a correct index definition. You need to recreate it before you can do a repair
The beauty of what myisamchk told me was that it knew the index file had been corrupted, but it offered no means of repairing it. Infact, there is no MySQL utility available to fix the documented error 126 (corrupted index file). I guess it's like a doctor telling you that you have a fatal disease and there's absolutely nothing that can be done to save your life. Still, I can't imagine how hard it would be to write a utility to read through the frm file (to find out what indexes were defined) and the MYD file (to see what's in the table) so that a new MYI file could be constructed.
I've been putting a lot of my development efforts into MySQL lately, so this is really making me question whether or not I've made a big mistake. Maybe I should have stuck with Oracle...