Logical Informalism
PresidentBarackObama@pdrap.org
Wednesday, 31 March, 2004. 05:11:19 PM

The new backup system is implemented. I'm using afio to build the backups, and mkisofs to build the CD images. The rescue disk was build using a remastered Puppy Linux distribution. It's stock Puppy Linux with afio added to root's directory.

Saturday, 27 March, 2004. 11:53:24 PM

The X-43A flew today, reaching a speed of 4780 MPH with an air breathing SCRAMjet engine. The next tests will exceed Mach 10, or 7000 MPH.

Friday, 26 March, 2004. 11:49:50 PM

I've made a small change to the way I use spamprobe. Rather than using the 'spamprobe receive' and 'spamprobe spam' functions, I'm using the 'spamprobe train' and 'spamprobe train-spam' functions. These make smaller changes to the database, which is already quite good. I'm hoping that I can reduce my 2% error down even further, perhaps down to 0.5% error.

Friday, 26 March, 2004. 11:52:24 AM

Here is an important article about how President Bush, Clearchannel Communications, and the FCC are creating a climate where people are afraid to speak out against the current administration.

Thursday, 25 March, 2004. 05:40:27 PM

From Long John Silver restaurants: "In January, Long John Silver's offered to give America free Giant Shrimp if NASA found conclusive evidence of an ocean on Mars. To celebrate the success of NASA's Mars Rover project, the company is going to give America free Giant Shrimp on Monday, May 10."

Thursday, 25 March, 2004. 12:08:12 PM

I have been using mondoarchive to make backups of my fileserver, but never tried to restore the backup to a machine until recently. There's some problems with it that seem to be more work to deal with than it should be, so I'm looking at other backup software. I should have tried to restore a backup sooner to verify things.

Tuesday, 23 March, 2004. 09:13:59 PM

New photos are up for March

Tuesday, 23 March, 2004. 12:56:52 PM

To sum the numbers in a file, use this awk command: awk '{tot=tot+$1} END {print tot} file'

Tuesday, 23 March, 2004. 11:02:58 AM

In the past month I have been making changes to the food that I eat. I used to eat anything that I wanted, in quantities as large as I wanted. In the 1980's, I weighed about 135 pounds. Over the years, my weight has slowly crept up to the point where I weighed 160 pounds a month ago. It doesn't take a brain surgeon to realize where that trend was going. Unless I changed something, I was going to get fat. Since I didn't own a scale, the only real indicator of what was happening is that the waist measurement on my pants went from 30 inches to 31 inches, and recently to 32 inches.

I'm 5 feet 8 inches tall, and 160 pounds isn't fat by any means. The old way of calculating the ideal weight was with the life insurance tables indexed by body frame. The problem with those tables is that body frame is ambiguous, and someone who was clearly fat could claim that they were merely "big boned". The new calculations are called BMI (Body Mass Index). For me at 160 pounds, the BMI was 24.3 which is at the top of the range listed as normal (18.5-24.9). If I were to drop back down to 135 pounds, my BMI would be 20.5 which I think is appropriate for me.

When I've expressed my ideas to others, people are surprised that I am be concerned about this, because since I am not fat, why should I be concerned with my weight? The answer is that the trend clearly indicated that I would be overweight in the near future, and to wait until I am fat to address the situation isn't a good idea. The weight gain trend isn't a flat line either. In recent years, the slope of the curve has increased, because Alex and I eat at restaurants more than we used to. The conclusion that I have come to is that the time to modify what I eat is now, before it's a problem.

Over the years I've picked up bits and pieces of what works for weight loss, and what doesn't. Fad diets don't work. Atkins makes your breath stink, gives you gout, and makes you eat hamburgers without the bun. No thanks. Excercise alone doesn't work, because it's easy to wipe out an hour of walking with a chicken sandwich with too much mayo on it. Diets in general don't work at all. The only thing that works is to change what you eat for the rest of your life. My daily calorie requirement is something around 1900 calories. Any more than that would cause me to continue to gain weight. Clearly, the only way to ensure that I eat 1900 calories a day on average was to start counting them up. Other gimmicks have been devised to avoid counting calories, such as the Weight Watcher's point system. But my goal here isn't to eat well until I lose weight and then stop. The goal is to eat well for the entire rest of my life. With luck, that's 50 years at least. I am not about to pay Weight Watchers good money for 50 years just for the privilege of using their point system, which is simply an abstraction of calories to make the accounting simpler. It's more work to track actual calories, but I decided that was exactly what I am going to do. All that I needed was an efficient procedure for counting the calories. The next step was obvious: I needed to write some software.

My solution to the problem is a Python program called "food" that is hooked to a database held in PostgreSQL. PostgreSQL is an industrial quality relational database available under the GPL, just like Linux. I already use it as a backend for some processes on my web site, so I didn't need any new software. The front end to "food" is a Python program that uses an interface written with a GUI library wxWindows. It's an incredible library with billions of features, and is easy to use. My food program took me about three days of spare time to write and now I use it every day. Here's a screenshot:



The upper left corner holds a calendar. By default it comes up on the current day, but any other day can be clicked to view and modify what I ate on that day. The upper right part of the screen is the interface to the food database, which contains a list of foods, what units they come in, and how many calories per unit the foods contain. The large spreadsheet window at the bottom of the screen is where the list of what I actually ate that day is maintained. The spreadsheet has a field on the right called 'total' that is calculated by the program. All other fields can be edited directly.

Typically I won't enter foods directly into the spreadsheet, but will use the food table editor in the upper right corner. I just have to type a food name, or a part of a food name into the search box and click enter. The list of foods that match appear in the list directly below. When the food is selected by either a double click, or a click on the large button labelled "Copy Food to List" the food is copied to the spreadsheet at the bottom of the page. I can enter the units of how much I ate, and the total is calculated. The green button in the middle of the page turns red if the information has not been completely entered. Incomplete information is not saved to the database. The last important field is a little unlabeled text box on the center right of the screen. It contains a running total of all the calories consumed in a day.

There's no need to explicitly save any information to the database. All information entered on the screen is updated continuously with the relational database. My laptop has a separate database from my desktop computer, and they are planned to be synchronized with a replication program that I haven't written yet. PostgreSQL is an industrial quality database, but database replication is the newest feature that it has acquired, and this application doesn't need to rely on anything that might be complicated or flakey.

I'm happy with this application, and it fits with the overall philosophy that I have applied to my web log, and this website generally. All updates to both the web log and the food log can take place offline because I don't always have access to the Internet. Other food logs are available online, which is a small but important hassle. Most people who start keeping logs, such as a food log or a web log, eventually stop doing so. The hassle of picking up a pen and paper, or logging into a website, eventually accumulates and the habit never forms. I'm always on my computer, and the process of adding an entry into my web log or food log requires typing just a couple dozen characters on my keyboard.

After the software that replicates the database is completed, It will be a simple matter to add a facility to my website where a user can search on a day to discover what I ate, and exactly how many calories I ate. Maybe this is all a bit boring to some people, but I don't care. I'm the primary user of my own website, and the tools that I add to it are designed to form an informational infrastructure to my own life.

Tuesday, 23 March, 2004. 09:31:26 AM

The way that the zip files in the photo section are made was changed. The zip files used to be created ahead of time and stored statically on the server. The problem with that is no two zip files are identical. When I use unison to synchronize the files on the webserver with my laptop and desktop machines, unison always thinks that the zip files have changed. This is because the files created on one machine do not match the files created on another machine, because of file time differences. The solution that I implemented is to make a Python CGI script that creates the zip file only when it is needed, and deletes it when it's not needed any more.

Friday, 19 March, 2004. 01:18:28 PM

Talked to Sean today. His job was moved to India, along with a bunch of other jobs at Delphi.

Tuesday, 16 March, 2004. 12:35:46 PM

This story is all over the news. There were fake news reports issued by the government in support of the new Medicare bill. They actually aired on some news programs and viewers had no opportunity to know that they were not viewing news, but propaganda. Of course, since all of this is scandalously being reported in the "reliable" press, there's absolutely no way to know if this is true or not. The best course of action is to turn on the evening news and just start laughing.

Monday, 15 March, 2004. 06:01:43 PM

The network is back. My router reset script tried 9 times to power cycle the Linksys, so that means the network was out for 1.5 hours.

Monday, 15 March, 2004. 03:56:19 PM

The server at home is trying to reset the router, but the entire DSL connection appears to be down. There is a message saying that it will be fixed by 7:15 PM tonight.

Monday, 15 March, 2004. 03:02:28 PM

Right now I can't log in to my home network. The network at work is up, so it could be that my connection at home is down. If that's true, then my server should detect the problem very shortly, and use the X10 control to reset the Linksys router.

Sunday, 14 March, 2004. 11:34:25 PM

I made some yogurt tonight, first time in a couple years. It's very easy, but not many people do it. I suppose that some are worried about scalding the milk on the stove, but the secret is to use the microwave instead of the stove top.

I use a plastic bowl that is just large enough to hold a half gallon of milk. In my experience, it doesn't matter if nonfat, lowfat, or whole milk is used. All three will make good yogurt. The only other ingredient needed is a half cup of yogurt left over from the last batch, or bought at the store. Yogurt with fruit or sugar is not suitable as a starter. Lucerne plain yogurt contains both sugar and geletin, and the sugar make it unsuitable. Dannon plain yogurt doesn't have any sugar added, but it has pectin. It's the best/cheapest I could find, and it works well.

I nuke the milk on high in the plastic bowl for 25-30 minutes. After the milk is boiling, it's important to let the milk boil for another three minutes or so. If the milk doesn't boil the yogurt will still turn out fine, but will be very runny. Homemade yogurt is runny anyway, because it doesn't contain any of the gelatin or pectin that the commercial yogurts contain. Once the milk is boiled, I remove it from the microwave and put the cover on the container.

The environment inside the bowl should remain sterile. Immediately after the milk is boiled, it's sterile. The cover on the yogurt is there to keep the milk sterile as it cools, to prevent undesirable bacteria from growing in the milk and spoiling the yogurt. That means no tasting, touching, or unsterile utensils should be added to the milk. Also, the cover should remain on the milk as it cools. No exceptions. The key to good yogurt making, as in good beer making and good bread making, is always good lab technique.

Once the milk has cooled down to a lukewarm temperature (below 120 degrees F) the top can be removed to introduce the starter yogurt. The starter yogurt contains the active cultures that will hopefully be the only living things in the bowl of milk. Obviously, there are going to be some small numbers of other bacteria species that will blow into the bowl when the lid is opened, and some that will come off the stirring spoon as the starter yogurt is stirred in, but those will be small in number compared to the desirable bacteria in the starter yogurt. The undesirable bacteria will not be able to compete, and will not thrive and grow in the milk.

The only thing remaining after the starter yogurt has been added is to wait. It will take a good 8 hours for the yogurt to fully develop. Since any bacteria that could have spoiled the milk were either killed by boiling or out-competed by the desirable bacteria, it's not possible for the yogurt to spoil in the sealed plastic container at room temperature, even over night. I've left yogurt on the counter for 12 hours at room temperature as it was culturing with absolutely no discernable effect on the taste, smell, or texture.

The finished yogurt is always white and sour, with a puddle of whey sitting right on the top. This can either be mixed into the yogurt, or it can be skimmed off and discarded. Compared to commercial yogurts, homemade yogurt is considerably runnier, which can be a good thing. A good way to eat a lot of yogurt is to blend it with a banana, and some water for consistency. If the yogurt is runny, then less additional water is needed to make a nice shake out of it. If a very firm yogurt is needed, it can be wrapped in cheese cloth and hung over the sink to drain.

Sunday, 14 March, 2004. 03:55:13 PM

As seen on Slashdot:
----------------------
TWO INDIANS ARRESTED IN MADRID BOMBING? (Score:-1)
by CmdrTaco (troll) (578383) on Sun Mar 14, '04 12:33 PM (#8562394)
(http://www.lake-dist...saTrollingHallOfFame)
LOL, EVEN AL-QAIDA IS OUTSOURCING.


Friday, 12 March, 2004. 11:12:26 AM

States that I've visited.

create your own personalized map of the USA or write about it on the open travel guide

Friday, 12 March, 2004. 11:10:05 AM

Countries that I have visited:

create your own visited country map or write about it on the open travel guide

Thursday, 11 March, 2004. 10:52:14 PM

I just installed the S.M.A.R.T. hard drive monitor tools onto my server. The main 80 gig hard drive in that box has been operating for 13,297 hours, with no logged errors. Its temperature is 43 degrees C, and it has been power cycled only 18 times in its life. The server has a smaller 13.5 gig hard drive installed too, and that one has operated for 46,177 hours.

Thursday, 11 March, 2004. 01:21:58 PM

Today I got my first false positive spam classification. After classifying tens of thousands of spams, and hundreds of thousands of good e-mails, my filter finally misclassified one message as a spam when it was not. It was a message from the publishers of "Sky and Telescope" about their new magazine for beginning astronomers called "Night Sky".

Tuesday, 09 March, 2004. 11:33:36 PM

More successes for electronic voting. In Orange county, there were more votes recorded by the voting machines than there were registered voters. Officials gave out the wrong code, so some votes were misrecorded in the wrong precinct. The bad thing about all of this is that there is just a tally, and no way to recount the ballots properly. We're just going to have to trust the system, since nobody can verify it.

Monday, 08 March, 2004. 05:26:05 PM

I finally got the accelerator hardware working on my laptop. It's got a fairly standard ATI chipset, but it took a lot of digging to get things working. Unlike NVidia, ATI chipsets are not well documented.

Friday, 05 March, 2004. 11:23:56 PM

The zip program for Linux doesn't make identical files every time it runs. For this reason, it's not suitable for building files for my website. There are zip files in the photo album, and those must be changed to a new format. I'm going to use the reliable UNIX tarball, which WinZip knows how to handle. The change will happen this weekend.

Friday, 05 March, 2004. 10:30:07 PM

I read "The Metamorphosis of Prime Intellect" again. The last book that I read twice was "Charlotte's Web", so this is a rare thing. It was just as good the second time around.

Wednesday, 03 March, 2004. 02:48:08 PM

The crontab command behaves differently under AIX and Solaris. If a user's crontab does not exist, then under AIX, a crontab -r command returns non-zero. Under Solaris, crontab -r always returns zero.

Tuesday, 02 March, 2004. 05:55:40 PM

On each thumbnail page in the photo album there is now a link to a zip file containing all of the high resolution photos in a directory. The entire website has been regenerated from scratch, and it completes on my 2.4Ghz laptop in about 16 minutes.

Monday, 01 March, 2004. 10:58:36 AM

I was in Austin for the weekend, and am now back in Birmingham for the week. It's quite windy here, which made the landing rough. The pilot was busy making a lot of corrections through the landing. He touched down halfway down the runway and used the thrust reversers which I've never seen used on an Embraer 145. I thought that he was going to go around.

Google
 
Web www.pdrap.org