Wednesday, 31 March, 2004. 05:11:19 PMThe 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 PMThe 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 PMI'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 AMHere 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 PMFrom 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 PMI 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 PMNew photos are up for March
Tuesday, 23 March, 2004. 12:56:52 PMTo 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 AMIn 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 AMThe 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 PMTalked 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 PMThis 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 PMThe 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 PMThe 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 PMRight 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 PMI 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 PMAs 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 AMStates 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 AMCountries 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 PMI 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 PMToday 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 PMMore 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 PMI 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 PMThe 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 PMI 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 PMThe 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 PMOn 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 AMI 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.