ToDo list

What I need to do ...
1) I had to re-create my Poggle game program, so I should do a write-up of what I changed.
2) A study of my Concentration game program, with respect to unit and regression tests.
3) Re-create my Kono game program.
4) Go over game position evaluation, a la Conway.


Wine Blogging: The Pretty Miss, Creed of Barossa

A very good blended red wine. Warm with lots of fruit in the palate, somewhere between cherry and plum. Recommended meal would be grilled porterhouse steak that was rested on a mix of chopped rosemary and thyme with a drizzle of olive oil.


Programming Mephistopheles' Computer

In terms of paranoia, there are three ways to look at computers;
Naive - Once a program compiles and is debugged successfully, there will be no problems with the program. Apart from the user of course.
Murphy's Computer - Programs will fail fail at random. Usually at the worst moment for the user.
Mephistopheles' Computer - Programs will not just fail, they will fail in a manner to cause the most pain for the user.

While it is a good idea to lock down the program's input so that a "clueless user" (translation: some one who can find an undocumented feature) cannot break a program, there are are other ways that inputs can mess up a system. For instance between threads, between processes, or between function calls. In many cases, the programmer must add reality checks to any input from any source, "trusted" or not, in order to keep problem at a minimum.

For instance, reading and writing to the Windows registry. The cases a program will access the registry can be summed into three; when the program starts, when the program stops, and when the program's parameters change.
When the program starts, either the registry entries are there or they are not, as in starting the program for the first time. Plus, just because the root entry is there for the program, does not mean that the sub-entries are there as well.
All a quitting program wants is to write what ever values it has into the registry. If the entry is not there the entry can be created for the value to be stored..
When the program changes parameters, all that it needs is to store the old value and read the new value. While if the entry for the old value does not exist and can be created, a non-existent new value means that the program must recreated this new value with the programmed defaults.

Note that with multiple choices, the program does not have to check those choices not wanted. When done properly, this can be done on-the-fly.

Just remember, "The devil is in the detail."


Today's Wine Domaine du Loou, Espirit de Blancs

Domaine du Loou, Espirit de Blancs is a nice crisp wine from Provence. Its taste of green apple will complement curries and satay dishes. The residual sugars will go nicely with any spicy dish, but don't serve this wine with intense tomato based chilies.

Recommended meal: Fine Cooking's Best of issue, Spring/Summer 2007's Thai Marinated Roast Chicken with Lemongrass-Peanut Pan Sauce with Bon Appetit's June 2007 issue's Strawberry-Blueberry Summer Pudding for dessert. In order to get more sauce for the chicken recipe, I would recommend that a quarter cup of chicken broth be added to the roasting pan, either for the basting for just for scrapping up the drippings.

Today's Wine, Joel Gott Cabernet Sauvignon 2005

(Actually yesterday's wine.)
Joel Gott Cabernet Sauvignon 2005, Blend 815 is a big fruity wine. About 17.00 USD. It goes well with grilled foods. Think sirloin burgers topped with roasted onions and bleu cheese.

I had this with skirt steak simmered in chili sauce (cooked ancho and jalapeno peppers pureed with garlic, salt, anise seed and tomatillos, then strained) and served with guacamole.

Testing, Testing .. 1, 2, 3

Is this Mic still open?