Tuesday, December 7, 2010

In every pot

I've been cooking a lot of chook recently. I'm afraid the family's getting a little tired of chicken stew, but it's just not getting old for me.

From Chicken stew


Looks like we've finally figured out how to make a good chicken stew. I have to confess that I made mediocre chicken stews for years, coasting on the fact that it's hard to really ruin chicken...

So here's how we do it:

First I take down my favourite stew pot: my 5-Quart cast iron Dutch oven by Lodge Logic. I chop up a large onion (or two medium onions, or...) and a few of those "baby carrots" and a couple sticks of celery. I put a healthy thwack of butter into the pan and get it hot. Onions, carrots, and celery go into the butter along with a couple garlic cloves. They get covered in a generous dose of salt and way too much black pepper, then I cook them until the onions are translucent. Once done, I empty the pot into a bowl.

From Chicken stew


Next I brown the chicken. I generally take some leftover bacon grease and add it to the pot, which is already hot. I put in more than enough to cover the bottom: there was a good 1/8 inch of grease in there this last time. I put three or four chicken thighs (skin on) into the grease, put salt and a generous layer of pepper on them, and let them brown. Now here's the thing: when I say "brown", I mean "mahogany". I essentially fry those thighs in that bacon grease for twenty or more minutes. When one side gets brown, I turn them over and do the other side. If I want to use more chicken I brown it in batches of three or four so they all get plenty of one-on-one time with the cast iron and bacon grease.

From Chicken stew


Once the chicken is brown, I put the onions, carrots, and celery back in the pot, cover it, and cook at medium for a good 45 minutes or so.

As the chicken is stewing in the onions, I cut some red potatoes, wash them, and pan-fry them. So I put some bacon grease on the griddle and lay out the potato chunks in it to fry. When one side is brown, I roll them to brown the other. I want the potatoes to have a healthy golden-brown crust.

Once the potatoes are done it's time to pull the skin off the chicken. Chicken skin is high in fat, so you really don't want to eat it.

Then the potatoes go into the pot along with frozen green beans, I cover it, and cook at until it's all done. I like to cook this at a medium on the stove-top, or 250--300F in the oven.

From Chicken stew


Be aware this is not low-fat cooking. It's highly likely you'll have a massive coronary while eating my cooking. But my goodness it's good.

Sunday, December 5, 2010

Wow

I, uh, haven't had a lot to say. More probably I've been too busy to say it.

Friday, July 23, 2010

Every minute

I had a problem with my jaw this week. I woke up Tuesday and it felt out of joint. It hurt Tuesday and Wednesday, and Thursday I was starting to wonder if there was a serious problem. So I made an appointment to go to the Chiropractor and have him pop it back in. This morning I woke up feeling great. But because I had an appointment, I figured I might as well go in.

So I went to the chiropractor with no real complaints, but feeling a sense of obligation because I'd made an appointment.

After 2 1/2 hours, I'm $270 lighter and they want me to come back Tuesday. And bear in mind the reason I went in the first place was a jaw problem that cleared itself up. So it cost me 2 1/2 hours and $270 to feel coming out exactly like I did going in.

And they want me to come back Tuesday for another $60 session. Apparently I have all sorts of spinal alignment issues.

Uh-huh.

I just called them back and canceled my follow-up without a reschedule. They say there's one born every minute, but this time his name's not going to be Ox.

Monday, July 19, 2010

Nice and cozy

Every once in a while, someone gives a gift so extraordinary that it actually impacts how I live my life. Last year, Shanta gave me just such a gift... my Bodum Cozy.

From Bodum Cozy


I love my Bodum Cozy.

Thanks, Shan!

Sunday, July 11, 2010

Grits ain't groceries

Friday nights I make pizza. Saturday mornings Ames makes a huge breakfast.

This last weekend, it was very hot here in the Northwest. I think it was 90 F on Friday when I was biking home. Not perhaps hot by Southern standards, but people here don't generally have air conditioning. So yeah, it was hot. It was hot enough Ames decided to have a light breakfast: she sauteed some onions and peppers, scrambled some eggs, and cut some fruit.

When she called us all for breakfast, the youngest asked what was for breakfast. Ames told her, and she demanded in her most stentorian, Ghost of Christmas Present voice, ``Are there no grits? Is there no bacon?"

Sometimes I'm overcome with pride.

Saturday, June 26, 2010

Tail Recursion

There was a conversation at work a few weeks back on the difference between recursion and iteration. Someone made the claim "Recursion doesn't always work," and pointed out that the Fibonacci Sequence, while easy to implement in naive recursion, tends to blow up when the numbers get large.

I argued that there is an efficient solution using tail-recursion. It's faster than naive recursion, and simpler than an iterative solution.

A third person pointed out tail-recursion is a Scheme thing, and not all languages properly optimize it. This is completely true, but... it's also true that tail-recursive algorithms are in principle more efficient. Abelson and Sussman point out that doesn't always translate into actual performance, though:
most implementations of common languages (including Ada, Pascal, and C) are designed in such a way that the interpretation of any recursive procedure consumes an amount of memory that grows with the number of procedure calls, even when the process described is, in principle, iterative. As a consequence, these languages can describe iterative processes only by resorting to special-purpose ``looping constructs'' such as do, repeat, until, for, and while.


So here's a short test... I wrote a short tail-recursive Fib generator in Common Lisp. Note it takes a number (i.e. the number of terms to generate) and returns a list representing the sequence:

(defun fibonacci-sequence (num)
"Calculate a Fibonacci sequence to a number NUM."
(labels ((fib (n acc)
(cond ((equalp n 0) acc)
(T (fib (1- n)
(cons (+ (car acc)
(cadr acc)) acc))))))
(cond ((= num 0) '(1))
((= num 1) '(1 1))
((> 0 num) 'undefined)
(T (reverse (fib (- num 2) '(1 1)))))))


We can loosely translate that to Perl. Perl doesn't have an equivalent to Common Lisp's 'labels', so I had to write two named functions to implement it. But this short script is more-or-less equivalent to the Lisp version: it takes a number on the command line and prints a list representing a sequence with that number of terms:

#!/usr/bin/perl

=head1 NAME

fib-sequence.pl

=head1 AUTHOR

Clumsy Ox

=head1 SYNOPSIS

fib-sequence.pl $NUMBER

=head1 DESCRIPTION

Calculates the Fibonacci Sequence to $NUMBER terms.

This is just an exercise in tail-recursion.

=cut

use strict;
use warnings;

use Data::Dumper;

my $number = shift;

my @sequence = fibonacci ($number);

print STDOUT join (', ', @sequence), "\n";

=head2 fibonacci

fibonacci ($number) => @sequence

=cut
sub fibonacci {
my $num = shift;

return (1) if $num == 0;
return (1, 1) if $num == 1;

return reverse fibt( $num - 2, 1, 1);
}

=head2 fibt

fibt ($number) => @sequence

=cut
sub fibt {
my $num = shift;
return @_ if $num == 0;
return fibt ( $num - 1, $_[0] + $_[1], @_);
}


Notice both solutions accumulate the sequence as a list. So there is some definite overhead in carrying that sort of data structure, but it's "fair" in the sense that both are having to do it.

Just informally checking it, the Perl solution is slower than the Lisp solution, but not by an amazing amount. I ran a quick-n-dirty test of the Perl solution, and it timed out reasonably. But I found it blew Perl's number stack very quickly and went to 'inf':

bash-3.2$ time ./fib-sequence.pl 10000 > /tmp/output
Deep recursion on subroutine "main::fibt" at ./fib-sequence.pl line 56.

real 0m1.072s
user 0m0.640s
sys 0m0.380s


Just for comparison, Lisp returned:

(time (fib-sequence 10000))
Evaluation took:
0.019 seconds of real time
0.018860 seconds of total run time (0.012529 user, 0.006331 system)
[ Run times consist of 0.010 seconds GC time, and 0.009 seconds non-GC time. ]
100.00% CPU
47,236,537 processor cycles
4,893,824 bytes consed


Both took longer to print the result than to actually calculate it.

I haven't tried the experiment in Java or C, but I think it might be interesting to see what would happen.


Incidentally, according to SBCL, the 10,000th element of the Fibonacci Sequence is a 2090 digit number:

(format t "~:d" (car (last (fib-sequence 10000))))
33,644,764,876,431,783,266,621,612,005,107,543,310,302,148,460,680,063,906,564,769,974,680,081,442,166,662,368,155,595,513,633,734,025,582,065,332,680,836,159,373,734,790,483,865,268,263,040,892,463,056,431,887,354,544,369,559,827,491,606,602,099,884,183,933,864,652,731,300,088,830,269,235,673,613,135,117,579,297,437,854,413,752,130,520,504,347,701,602,264,758,318,906,527,890,855,154,366,159,582,987,279,682,987,510,631,200,575,428,783,453,215,515,103,870,818,298,969,791,613,127,856,265,033,195,487,140,214,287,532,698,187,962,046,936,097,879,900,350,962,302,291,026,368,131,493,195,275,630,227,837,628,441,540,360,584,402,572,114,334,961,180,023,091,208,287,046,088,923,962,328,835,461,505,776,583,271,252,546,093,591,128,203,925,285,393,434,620,904,245,248,929,403,901,706,233,888,991,085,841,065,183,173,360,437,470,737,908,552,631,764,325,733,993,712,871,937,587,746,897,479,926,305,837,065,742,830,161,637,408,969,178,426,378,624,212,835,258,112,820,516,370,298,089,332,099,905,707,920,064,367,426,202,389,783,111,470,054,074,998,459,250,360,633,560,933,883,831,923,386,783,056,136,435,351,892,133,279,732,908,133,732,642,652,633,989,763,922,723,407,882,928,177,953,580,570,993,691,049,175,470,808,931,841,056,146,322,338,217,465,637,321,248,226,383,092,103,297,701,648,054,726,243,842,374,862,411,453,093,812,206,564,914,032,751,086,643,394,517,512,161,526,545,361,333,111,314,042,436,854,805,106,765,843,493,523,836,959,653,428,071,768,775,328,348,234,345,557,366,719,731,392,746,273,629,108,210,679,280,784,718,035,329,131,176,778,924,659,089,938,635,459,327,894,523,777,674,406,192,240,337,638,674,004,021,330,343,297,496,902,028,328,145,933,418,826,817,683,893,072,003,634,795,623,117,103,101,291,953,169,794,607,632,737,589,253,530,772,552,375,943,788,434,504,067,715,555,779,056,450,443,016,640,119,462,580,972,216,729,758,615,026,968,443,146,952,034,614,932,291,105,970,676,243,268,515,992,834,709,891,284,706,740,862,008,587,135,016,260,312,071,903,172,086,094,081,298,321,581,077,282,076,353,186,624,611,278,245,537,208,532,365,305,775,956,430,072,517,744,315,051,539,600,905,168,603,220,349,163,222,640,885,248,852,433,158,051,534,849,622,434,848,299,380,905,070,483,482,449,327,453,732,624,567,755,879,089,187,190,803,662,058,009,594,743,150,052,402,532,709,746,995,318,770,724,376,825,907,419,939,632,265,984,147,498,193,609,285,223,945,039,707,165,443,156,421,328,157,688,908,058,783,183,404,917,434,556,270,520,223,564,846,495,196,112,460,268,313,970,975,069,382,648,706,613,264,507,665,074,611,512,677,522,748,621,598,642,530,711,298,441,182,622,661,057,163,515,069,260,029,861,704,945,425,047,491,378,115,154,139,941,550,671,256,271,197,133,252,763,631,939,606,902,895,650,288,268,608,362,241,082,050,562,430,701,794,976,171,121,233,066,073,310,059,947,366,875


Update: I decided to try a quick-n-dirty Java implementation. It's rough and ugly, but it seems to work.

Here's where it gets interesting: the Java solution works just fine, but it's slow, and it runs into a StackOverflow at just over 10,000 elements. I suspect that could be increased dramatically with some better java runtime settings, but it seems to disprove my thesis that tail recursion is an appropriate solution regardless of implementation language.

I was also able to get Perl to give me better results with
use bignum;
Still, Lisp is by far the fasest solution.

Thursday, June 24, 2010

Poor Navigation

So I'm in Raleigh, NC this week. I head back to the Northwest tomorrow afternoon. Since I'm so close, I lined up lunch with a good friend in Charlotte. It was what they call a "wild hair": a two-to-three hour drive for lunch, but I figured it might be worth it.

I have a pretty sorry little rental car this week, so between my fear of it dying on the Interstate and a desire for a nicer drive, I decided to take 64 to Asheboro, then 49 to Charlotte:

View Larger Map

But I missed the turn from Hwy 1 to Hwy 64 in Apex. I have no idea how I missed it, but I did. I started getting nervous when I saw signs for Southern Pines, but still hadn't seen signs for Siler City.

Yep, I ended up in Moore County, "on the way" to Charlotte. I was south of Sanford.

I had to call both people I meant to meet and tell them. They both laughed, so there were no hard feelings. But I sure felt stupid.

Gah.

Friday, June 18, 2010

Grill pizza stone

In an effort to make the Redneck Pizza Oven a more repeatable experiment, I've been looking for a pizza stone designed for use on the grill. Then Ames bought me this one from Weber as a gift. I gave it a whirl yesterday.

The pies made on the stone bubbled nicely and looked actually rather picturesque:
From Grill Pizza Stone


From Grill Pizza Stone


But when we cut them, we realized the bottoms were charred to almost inedible:
From Grill Pizza Stone


It appears we've been able to get the stone good and hot, but the air above it is too cool. We had this problem last time, and ended up shovelling live coals around the perimeter of the stone to get that temperature up:
From


So it seems we need to make some arrangement like that.


The stone itself appears to be exactly what I was looking for: it handled the heat just fine, although I was half-afraid it would crack. It's marketed specifically for use on a grill, and I read the directions very carefully: I used it exactly in accordance with the directions in the box.

It doesn't look nearly so picturesque now that the stone's been a little charred and the metal's been a little blued, but I have to say it's extremely promising. I think this is going to become a centerpiece of our future pizza explorations.

From Grill Pizza Stone


From Grill Pizza Stone

Thursday, June 17, 2010

Happy Anniversary to us

So Ames and I have been married 15 years today.

Wow.

Saturday, June 5, 2010

NC Bound

I'm heading out to Raleigh, North Carolina June 20--25. It's a business trip: I won't have a ton of time for hobnobbing, but I will absolutely make some time for what friends and family I can reasonably get in touch with.

Saturday, April 24, 2010

The Right Recipe

My daughter made up a little ditty in honour of the Atkins diet (to the tune of "Frere Jacques"):

Carbohydrates, carbohydrates,

Make you fat, make you fat!

If you want to be thin, if you want to be thin,

Then eat meat. Then eat meat.

I've been making a lot of bread. I can't shake that tune from my head.


I finally decided to try the "French Bread" recipe that came with the French Loaf Pan I got from Williams-Sonoma. You know, the one I ranted about...

I baked these on Tuesday:
From Bread


From Bread


And these came out of the oven ten minutes ago:
From Bread


Compare with the recipe I developed:
From Bread

Mine aren't bad, but they're a little pale. And they were a little drier too.

Actually, the recipes aren't that different. I only realized that this week, when I looked it over to try it. I think the big difference is brushing egg white on the loaves before baking. I've been over-baking mine, trying to get them nicely browned. I'm going to retry my recipe in the next week or so and see if brushing egg on them makes the difference.

Here's to carbohydrates!

From Bread

Sunday, March 21, 2010

Ribs!

My mother-in-law is here for a visit. I'm one of her fans, so it's all cool. She brought me a couple bottles of barbecue sauce from North Carolina--which is, in fact, the Mecca of barbecue.
From Ribs


I had found some St. Louis-cut ribs at a restaurant supply store in Tacoma. I'd never found those before, although I've looked for them. So naturally I bought some and threw them into the freezer. My mother-in-law's visit seems a worthy occasion for breaking out those ribs.

Ribs are a serious topic. To get the real low-down, you ought to read Smoky's primer on ribs. But the short version is this: what you generally see in the store is "baby back ribs", which are actually from the pork loin. Those ribs are tender, and you can cook them almost any way you want, because they're an extremely tender cut of meat. But the price of tender, of course, is flavour. Just like with beef, the more tender cut is also the less flavourful cut. If you want flavour, you'll get the side ribs. They're higher in fat, harder to cook, and full of connective tissues.

But you can taste them.

St. Louis cut ribs are the middle of the rack of side ribs: side ribs with each end trimmed off. So they look like a rack of "baby backs", but they've got longer, flatter bones and a lot more fat. So they're like the best of both worlds.

Of course any time you have a tough hunk of meat with a lot of connective tissues and fat, you can deal with it in a couple ways. My preferred technique is to barbecue them. That means, you'll recall, cooking them in woodsmoke at around 200F for long periods of time.

From Ribs


The hardest part is temperature control. I manage that with a good thermometer, careful control of the fire, and adjusting airflow. One invaluable tool has been my 2X4 block to prop open the grill. Propping open the lid really helps keep it cool without choking the fire right down.
From Ribs


We started them slow in the morning, covered them in mustard and some spices, and threw them on the grill. We kept an eye on them all morning, basting them with our home-made basting sauce. Around noon, we broke open one of the bottles of Carolina Treet my mother-in-law brought me. It added a little colour to those bones.
From Ribs


And since it was lunch time, we made some pizza
From Ribs


We kept stoking and basting through the afternoon, until them bones were cooked and it was time to bake something sweet onto them. So we mixed up some off-the-shelf barbecue sauces, some of our own baste, and some of the Carolina Treet to make something red and sweet. That went on those racks, and we left them in the [cooling] grill for another 30 minutes or so.

Then it was time for ribs.
From Ribs


I love ribs! We made up some potato salad from the Red Hot 'n' Blue copycat recipe, Ames threw together some killer beans, and we feasted.

Ah ribs... my mother-in-law should visit more often!

From Ribs

Wednesday, March 10, 2010

ðē; ðə

For the last year or so I've been observing a strange trend. It has to do with "the". When I was growing up, I learned to say "the" with two pronunciations. When the following noun begins with a consonant, it's pronounced with a short "e": ðə. But when the noun begins with a vowel, it's pronounced with a long "e": ðē.

But recently it seems like the second version (long "e", ðē) is dropping from usage. I hear people say things like "the island" with a short "e". "thuh island". "thuh oven". "thuh arch".

The whole world sounds like a bunch of mouth-breathing, illiterate louts.

But of course, since you can't really blend the "ə" ("uh") sound with a vowel, they insert a glottal stop between the words. That makes it sound a whole lot worse.


I mentioned this to Shan and Mum last time I was home. They both said "I KNOW!" and went on their own diatribes. Shan kept mentioning the glottal stop. I think she just likes to say "glottal stop".

Barbarians are at the gates, I'm telling you.

Sunday, March 7, 2010

Redneck Pizza Oven

I've been playing with pizza for several months now. Of course, to really make pizza, you need a brick oven. I've been trying to figure out how to do that for a few months. Then one day, my boss sends me this link, of a guy who turned a Weber 22" grill into a pizza oven.

"Hey," I thought, "I can do something even easier on my grill! If a Weber can make pizza, a real grill can too!"

So I decided to make a redneck pizza oven.

We're on our third pizza stone since July. I bought one by Oneida, and it worked fine until it cracked (about 4 weeks after I bought it). Oneida kindly replaced it (with no questions asked, I might add), but the replacement cracked 6 weeks later. I finally bought the good one: the Williams Sonoma version. So far no cracks.

But since we have two broken pizza stones, I decided to reassemble them, jigsaw-puzzle-style for my pizza oven floor.
From Redneck Pizza Oven


The oven itself is made by placing four landscape bricks on my grill. They prop the lid open and shield the walls to keep heat in.
From Redneck Pizza Oven


So with the landscape bricks in place and the two Oneida stones shoved back together, we have the start of a pizza oven.
From Redneck Pizza Oven


I've found my pizza peel is sticky. I thought that was just my own incompetence until I used a friend's. The thing is, I have a $5 pizza peel, and it's varnished. So I took sandpaper to it. The improvement is indescribable. This afternoon I tried putting some cornmeal on the peel under the pies, and it worked like a charm. Not one pie got folded! I might have used too much cornmeal on the first pie.
From Redneck Pizza Oven

From Redneck Pizza Oven

From Redneck Pizza Oven


We realized with the first pie, the lid is too high. We ended up taking too long to get the top of the pie cooked appropriately. I didn't get any pictures of it, but we solved the problem by putting a reflector atop the bricks. So you can't see it, but there is a secret lid about 6" over the pizza stones under the grill lid.

The first reflector was cardboard. It burst into flames after two pies. Ames suggested we try the vanity cover I took off the front of the grill a couple years back (she is, after all, the brains of the operation). Whaddya know? It fits perfectly, it's steel, and it doesn't sag. The pies got a lot better after that one.

We made half a dozen or so pies. They all had a nice char on them, and a hint of smoke
From Redneck Pizza Oven


I soon realized I needed more heat, so I started shoveling burning charcoal right onto the cooking grates next to the pizza stones. It made the pies a little more ashy, and the effect was fabulous
From Redneck Pizza Oven

From Redneck Pizza Oven

Of course, one of the pizza stone pieces cracked again where one of the coals was touching it.

So the Redneck Pizza Oven worked like a champ.

But of course there are some improvements to be made. We need to find a better cooking surface. Reassembling the pizza stone jigsaw puzzle is going to get old pretty quick, and they're just too small. I'm open for suggestions: I've looked for unglazed tile and quarry stone, but I can't find either around here. I've thought of using a cast iron griddle too. Either way, I have a 19.5" deep grill. I want a cooking surface big enough to make at least 18" pies, if not full 19 inchers.

I'm not convinced our reflector is as good as it could be. I'd like to see if I can get something a little more draping. But Ames' version is a lot better than the cardboard ghetto-lid I had made.

And of course we need more practice.

But all in all, the experiment was a success.

From Redneck Pizza Oven

Monday, February 15, 2010

The right pan

I was given one of these French Loaf Pans as a gift. I must say, the right pan helps incredibly with the finished product.

From Bread


Those loaves are my own "recipe." I'm actually kinda proud of them...

Sunday, February 14, 2010

Hairy ride

I spent the last week on Vancouver Island. I went up to be another pair of hands to help out Mum and Dad last week, so I did no touristy things, and only a couple "I'm back home and like to do this when I'm back" things.

We left late yesterday and got off the ferry at Tsawassen at 5:20 PM. We actually cleared the US border at 6:20, and were heading back south. We experienced no obvious Olympics-related delays, for which I am very grateful.

A couple miles from home, I came around a left turn and Ames shouted "Look out!" There was a small black dog (Shi-Tsu? I don't know, but short, furry, and black) standing in the rain in the middle of the road, in the dark, where there aren't any street lights. I slammed on the brakes and stopped just short of hitting the dog. But he panicked and jumped straight in front of the oncoming traffic.

The oncoming car hit him. I saw it briefly, but definitely heard it.

So I pulled over and ran back to check the dog. He was lying whimpering in the road. The woman in the car behind mine had stopped right there, and was already at the dog. She scooped him up, checked the tag, and told me to get a cell phone. So I ran back to my car, got the cell phone, and headed back.

"Call 911," she said.

"911?"

"Yeah, 911!"

I thought she meant for the dog, until I saw the woman lying in the ditch.

Apparently one of the people in the car that had actually hit the dog had gotten out to check on him. The ditch is very deep and there aren't any street lights there: she misstepped, fell right into the ditch and busted up her leg. She was sure it was broken, I didn't know and didn't want to poke and prod when I'm unsure what I'm doing.

So there we are: we've got a dog that's at least got a broken leg, and was apparently bleeding from the mouth. There is a woman in her 50s lying in the bottom of the ditch with a broken leg, and it's raining.

The paramedics did arrive. They got the woman in the ditch onto a stretcher and into the ambulance. She was conscious and lucid the whole time, but I'm not sure what that means.

The woman living right there called about the dog and ended up with someone from the humane society. She and her husband/boyfriend/partner were to take him to an emergency vet, who'd be able to contact the owner via the dog's tag. I assume she got there all right, they were getting ready to leave when I drove off.

The son of the woman in the ditch had been driving: he left to follow the ambulance.


So that was a pretty rotten end of a long trip home.


As my mother would say, "Well glory be!"

Friday, January 1, 2010

Happy New Year

I don't usually make a big deal out of New Year's Day, but it seems like this one is significant. I keep having images of Arthur C. Clarke's famous sequel run through my head:


Let's see, we got married in '95, so this will be 15 years. That's something. We moved from Grand Rapids back to Charlotte at the end of '99, so it's been ten years since coming back to NC, and ten years since the Wayne Division that tore our Christian friends apart. Again, a significant milestone.

I stopped staying up for New Year a long time ago: between the realization that the New Year comes regardless of my approval or even my attention and my habits of staying up pretty much until midnight most of the time anyway; the whole prospect loses what appeal it had. But it's fun for the kids.