Quote: M.J. Dominus on programming languages

From a Saturday-evening blog post which was primarily about job applicants at his company failing a really trivial programming quiz by doing it in Java:

You will not produce anything really brilliant, but you will probably not produce anything too terrible either. The project might fail, but if it does you can probably put the blame somewhere else. After all, you produced 576 classes that contain 10,000 lines of Java code, all of it seemingly essential, so you were doing your job. And nobody can glare at you and demand to know why you used 576 classes when you should have used 50, because in Java doing it with only 50 classes is probably impossible.

(Different languages have different failure modes. With Perl, the project might fail because you designed and implemented a pile of shit, but there is a clever workaround for any problem, so you might be able to keep it going long enough to hand it off to someone else, and then when it fails it will be their fault, not yours. With Haskell someone probably should have been fired in the first month for choosing to do it in Haskell.)

Quote | Posted on by | Tagged , , ,

Diane Duane’s Braunekuchen and ATK’s cheese souffle

A few weeks ago, I said that I was making Braunekuchen, a northern German spice cookie, from a recipe Diane Duane posted on her blog. I made them the Sunday before Martin Luther King Day, and I’ve been eating them (and offering them to others at the office) since. I used (bought!) palm-oil shortening, since I knew some people would object to both lard and trans fat, but otherwise stuck to the recipe (which gave the important measurements by mass, although this made it difficult to do the nutrition computation). The recipe requires a 24-hour room-temperature rest for the dough; since it contains no eggs, I did not consider that to be a safety concern. After resting, it looks like this:

Photo of cookie dough waiting to be rolled out

After sitting on the counter for a day, the dough is divided in preparation for rolling out. I ended up dividing it into fourths because my rolling surface is so limited.

The dough was fairly sticky and difficult to work with, so I ended up working a good bit of extra flour into the cookies as I rolled and cut them. The recipe calls for rolling to 1/8″ thickness, so I was able to use my 1/8″ spacers, but on a tapered rolling pin like the one I have, that doesn’t leave a lot of usable width. I should probably switch to a straight pin like all the cool bakers are using now. (I bought the French-style tapered pin back when those were the cool thing.) As a result, I ended up with lots of flour on the surface of the cookies:

Photo of twelve thin, brown, cookies in a variety of shapes, cooling on a rack

Twelve Braunekuchen on a sheet of baking parchment, with excess flour used during rolling making white spots on the surface of the cookies.

There’s not a huge variety of shapes; I had to look around for something that wasn’t the standard Wilton “box of 100 cheap plastic children’s cookie cutters” that the stores seemed to be full of. I got a set of six metal cookie cutters: a moon, two stars, a flower, a heart, and a parallelogram with scalloped edges. Even with just a few cookie cutters, I was reminded of what a PITA rolled cookies like these are; the biggest difficulty is always getting the “figure” free of the “ground” without tearing or leaving a mess on the work surface. (Maybe I would have had an easier time using a silicone mat.) The recipe made about 45 cookies (counting the uncooked dough that I ate because it wasn’t worth rolling out again). Here’s a close-up of a single finished cookie:

Photo of a thin, heart-shaped cookie cooling on a rack

I made more hearts and stars than anything else.

After all that, how were they? Kinda “enh”: they were certainly crisp and brown, as the recipe claims, but the flavor left a lot to be desired in my book. Perhaps my spices were too old? Or maybe I overbaked them? It’s hard to tell. But I don’t feel any inclination to try again; there are other holiday desserts I could make that I would enjoy vastly more that take less work (or less fiddly work, at any rate).

Now on to part two of this post, which is the cheese souffle from January’s Cook’s Illustrated. The test cooks actually worked pretty hard to make this recipe much less fiddly than traditional souffles, although I’d hesitate to call it “foolproof”; the cheese-sauce base is totally standard, but the mixing process is much more aggressive than most recipes call for. I actually put off doing this so that I could get the Emile Henry two-quart (two-liter?) souffle dish that they recommended. For the cheese, I used Emmi Kaltbach Gruyere. The result was pretty good: the souffle rose as expected (despite not being coddled like a premature baby), and it had a rich, robust Swiss-cheesy flavor. Of course, as soon as it was out of the oven, it started deflating, a process which accelerated when I took my serving out:

Photo showing a cheese souffle, browned on top, sinking back into its two-quart souffle dish. One serving has been removed.

About ten minutes out of the oven, and the souffle has already deflated nearly two inches from its original height!

Having done it this way, I wouldn’t mind having a variant recipe that used single-serving souffle dishes, so that the leftovers could be reheated easily to bring that poof back. I doubt that this one can just be heated to reinflate it after having a portion removed.

Nutrition data — Braunekuchen

Nutrition Facts
Serving size: 2 cookies
Servings per container: about 22
Amount per serving
Calories 147 Calories from fat 55
% Daily Value
Total Fat 6g 9%
 Saturated Fat 1g 5%
 Polyunsaturated Fat 0g
 Monounsaturated Fat 0.5g
Trans Fat 0g
Cholesterol 4.1mg 1%
Sodium 47mg 2%
Potassium 49mg 1%
Total Carbohydrate 21g 7%
 Dietary fiber less than 1g
 Sugars 10g
Proteins 2g 4%
Vitamin A
Vitamin C 1%
Calcium 1%
Iron 3%

Nutrition data — cheese souffle

Nutrition Facts
Serving size: 1/5 souffle
Servings per container: 5
Amount per serving
Calories 372 Calories from fat 255
% Daily Value
Total Fat 28g 43%
 Saturated Fat 15g 75%
 Monounsaturated Fat 0g
Trans Fat 0g
Cholesterol 278mg 93%
Sodium 479mg 20%
Potassium 112mg 3%
Total Carbohydrate 8g 3%
 Dietary fiber 0g
 Sugars 2g
Proteins 22g 44%
Vitamin A 26%
Vitamin C 1%
Calcium 48%
Iron 7%
Posted in Food | Tagged , , , , | 2 Comments

Finally updated my MBP to Mavericks

I was waiting for an OpenAFS release that worked on 10.9, and that finally came out late last week, so I took the plunge. It took a couple of hours to update everything (I had a bunch of Apple apps that wanted to update once the new software was installed, and Apple seems to think that updating apps is the most important thing I could possibly do with my network, so they download three multi-GB updates in parallel).

Now to figure out what features Apple has decided to take away in the latest OS. I’ve already had to find the system settings to turn the f***ing scroll bars back on. (Is there anyone left at Apple who is old enough to remember what the design requirements for scroll bars were?)

Aside | Posted on by | Tagged , , ,

This week’s Diane Duane quote

Maybe this one is really intended for me more than whatever readers I may have here:

It is perhaps one of life’s more interesting ironies that, of the many who beseech the Goddess to send them love, so few will accept it when it comes, because it has come in what they consider the wrong shape, or the wrong size, or at the wrong time. Against our prejudices, even the Goddess strives in vain.
Hamartics, s’Berenh, ch. 6

The Door into Fire, chapter 8

Quote | Posted on by | Tagged

OK, I have three fourths of a bunch of parsley left. Now what?

Parsley was an unusual ingredient required by Joanne Chang’s split-pea soup recipe, but it only required three tablespoons. (I suspect I used substantially more than that, because, well, I had substantially more than that.) So on Monday afternoon, I opened up my refrigerator while making my shopping list — it being Martin Luther King, Jr., Day, a federal and MIT holiday — and contemplated what I might do with all the parsley I still had left over. (And that was having already bought the smallest bunch of flat-leaf parsley on offer!) I know of only one recipe that uses a significant amount of parsley: Ethan Becker’s meatloaf, from his much-maligned 1997 revision of Joy of Cooking; it calls for two thirds of a cup.

Aside on the history of this recipe: I have four different editions of Joy (which, for those furriners reading this, is one of the three Standard American Cookbooks, and the only one of the three my mother owned, so it’s the one I learned to use). The last revision made during Marion Rombauer Becker’s lifetime was published in 1974, and by the 1990s, it was clearly getting quite dated. The 1997 edition was a significant revision, with a lot of material taken out, and a lot of new material added in; it also changed some long-standing typographical constants. Joy-74 has two main meatloaf recipes, plus a third recipe, “Meat loaf cockaigne”, which used cream of mushroom soup as an extender. (“Cockaigne” was the name given to the Becker family home, and recipes so identified were Marion Becker’s personal specialties.) Joy-97 drops all three recipes, and adds a completely new recipe, with one variant (“Southwestern meatloaf”). The outcry over the 1997 revision was such that, in 2006, a new revision was published, restoring most of the material dropped from the 1997 edition, and now set in Frutiger rather than Joy-97’s Minion, the former being a sans-serif typeface similar to that used in Joy-74. Joy-06 includes the recipe from Joy-97 as “Meatloaf I”, and the “Meatloaf II” recipe from Joy-74, but not “Meat loaf cockaigne” nor Joy-97’s “Southwestern” variation.

In any event, I decided to make Joy-97’s regular meatloaf, as a way of using up all my remaining parsley. Unlike many other meatloaf recipes, this one is all-beef. (A common combination in historical recipes is equal parts beef, pork, and veal; I’ve also seen two-meat recipes, and some with lamb in place of the veal. There are also other single-meat loaves, like ham loaf and turkey loaf, which are much less popular than they once were, although the latter has made a comeback, as “turkey meatloaf”.) In addition to the parsley, it also takes breadcrumbs, ketchup, thyme, salt, pepper, a cup and a half of chopped onion (I actually used grated onion as I have little patience for mincing that much vegetation!), and a whopping three whole eggs.

Photo showing flat-leaf parsley on a cutting board

Is that 2/3 cup of parsley? (No, in fact, it was only half a cup. Good thing I still had some more!)

I didn’t care to make a mess of another piece of kitchen equipment, so I eschewed the food processor for a little knife work to finely chop this parsley, and then do the same for the thyme. (The recipe calls for dried thyme, but since I had fresh thyme already on hand for Sunday’s pea soup, I made the usual substitution.) Part way through the process, my mixing bowl looked like this:

Photo showing some of the non-meat ingredients in meatloaf

In the mixing bowl: 1-1/2 cups grated onion, 1 cup bread crumbs, 2/3 cup chopped parsley, about 2 tsp chopped thyme

The recipe doesn’t specify a precise order of operations, but I figured that the extender in this recipe was going to function effectively like a panade, so it would make sense to mix all the non-meat ingredients together before combining with the meat, to ensure even distribution. I’ve made this recipe in the past without doing that, and it can be very disconcerting to have a clump of parsley show up in the middle of the meatloaf. With three eggs and 2/3 cup of ketchup, this makes a very sloppy mixture indeed! The recipe cautions not to overmix (a caution I also recall hearing from Alton Brown), and the meat is mixed with the other ingredients by hand; whenever I’d made this recipe (and this time would prove no different), I’ve always failed by undermixing rather than overmixing, as the photos below will show.

The recipe makes enough to fill a standard 9″x5″ loaf pan. I follow the lead of numerous writers (Ethan Becker not included) in using the loaf pan only as a mold: I like the crunchy outside bits and prefer to flip the molded loaf out so that it cooks “upside-down” with three surfaces exposed to the heat rather than just one. Unfortunately, as you can see in the photo below, the loaf as prepared is simply too liquidous and slumps nearly instantaneously when unmolded:

Photo showing an uncooked meatloaf in a 9"x13" baking pan

Not really 9″x5″ any more, after unmolding

I am nearly certain at this point that there is simply far too much egg in this recipe; a drier preparation would not have flattened out quite so much. Perhaps I could also add some additional flavoring, like a tablespoon of mustard or a similar amount of chipotle in adobo. One other supposed advantage to this method of cooking is that the fat has a chance to drain away, rather than allowing the loaf to effectively fry in its pan. But with the cuts of meat called for in this recipe (half chuck, half round), there just isn’t that much fat to escape:

Photo showing a cooked meatloaf in a 9"x13" baking pan

Immediately out of the oven; note the fissures and the relatively small amount of escaped fat

The fissures in the surface seem to be an unfortunate consequence of this style of preparation. If I had not been using a fancy non-stick baking pan, I would have run this somewhat pale meatloaf under the broiler for a few minutes to darken it up and add some texture on the outside. After depanning, the bottom of the meatloaf looked even more pallid than the top; clearly, much of the excess egg had migrated south during the long cooking time:

Photo showing the bottom of a cooked meatloaf

That’s a rather unappealing looking bottom, better flip it back over!

That wasn’t the only problem. It became evident as I started to slice the meatloaf that I had (yet again!) undermixed it:

Photo showing part of a meatloaf, with one slice propped up to demonstrate the internal structure

The perils of under-mixing: note the eggy bottom, as well as chunks of solid meat, which the pseudo-panade extender should have prevented.

Perhaps I should have ground my own meat for this, as I have done in the past: home-ground meat is generally looser in texture and easier to mix with extenders than store-bought. But whatever this loaf’s other faults, it did slice up nicely:

Photo showing three slices of meatloaf on a plate

Three slices is clearly too much; I’m calling two slices a serving

The whole loaf was nine slices. I put them in the refrigerator for Tuesday night’s dinner (and good thing, too, as I got home very late thanks to inclement weather), and they took only a few minutes to reheat in the microwave. I accompanied the meatloaf with the traditional condiment (ketchup) and microwave-steamed baby spinach. It was OK, not the best meatloaf I’ve ever had; I think the excess egg also dulls (or at least competes with) the flavors of the meat and other ingredients. The “Southwestern” version, when I’ve made it, is certainly more interesting and also spicier (it is seasoned with chili powder). I suppose, if given the opportunity, the test cooks at America’s Test Kitchen would say it didn’t have enough fungus in it. It probably needed a bit more salt, too, although you wouldn’t guess that from the nutrition computation:

Nutrition Facts
Serving size: 2 slices
Servings per container: about 4.5
Amount per serving
Calories 485 Calories from fat 204
% Daily Value
Total Fat 23g 35%
 Saturated Fat 5g 25%
 Monounsaturated Fat 0g
Trans Fat 0g
Cholesterol 219mg 73%
Sodium 802mg 33%
Potassium 311mg 9%
Total Carbohydrate 32g 11%
 Dietary fiber 1g 4%
 Sugars 11g
Proteins 34g 68%
Vitamin A 15%
Vitamin C 17%
Calcium 4%
Iron 26%
Posted in Food | Tagged , , , , , , | 3 Comments

Joanne Chang’s (cafe’s) split-pea soup

As I promised a few days ago, I made the split-pea soup from Joanne Chang’s flour, too. Overall, I’m reasonably pleased with how it came out, although I might do a few things differently. (I should note that Chang does not take credit for developing the original recipe; she credits it to one of her chefs at her Flour bakery-cafe. But it does appear in her cookbook, so that’s how I’m going to refer to it here.)

The recipe starts with a vegetable “stock”, from a section of “essentials” in the back of the cookbook. I put “stock” in quotation marks because, in my book, a stock is made with bones, and vegetables don’t have bones, so this can only be a broth. It’s a very simple broth at that: onion, celery, carrot, fennel seed, and coriander seed.

Photo showing a small Dutch oven on a stovetop, containing water, chopped vegetables, and spices

The pea-soup recipe calls for two quarts of vegetable “stock”, which takes about 45 minutes to prepare.

The short cooking time doesn’t seem to be enough to extract much flavor from the “stock” — or perhaps my interpretation of “simmer” is different from Chang’s. In any case, after straining, the result looks like this:

Photo showing a large mixing bowl containing a greenish-yellow liquid

Vegetable “stock” , shown here in a bowl after the solids have been strained out.

I tried a spoonful; it really tastes like nothing so much as celery water. (Which is at least better than it looks!) If I had to do it over again, I might skip this step in favor of a commercial low-sodium vegetable broth. The choice of spices is a bit unusual, compared to commercial vegetable broth, so that might be an issue. On the other hand, since the broth is just a base for making a ham stock, perhaps plain water could be used instead. The ham stock also contains onion and carrot, and in addition has a chopped leek, an unusual ingredient that I could not identify in the final product. My two ham hocks were unfortunately lacking in both meat and smoky flavor; I found myself at the end of the process wanting to find some additional ham (I have some in the freezer, I think) just to make up for them.

After adding the peas (which I forgot to rinse) and cooking for only the minimum time recommended in the recipe, I found that the soup was already getting a bit thicker than I had anticipated. The recipe calls for pureeing half of the soup at this stage (I transferred a few ladlefuls to a spare pot and used an immersion blender), but I’m not convinced it was necessary, given the texture of the peas by this point.
Photo showing pea soup in a Dutch oven

Two more unusual ingredients were added at the last moment: lemon juice and chopped parsley. I found that, even after a day in the refrigerator, these lent a fresh green color and bright acidity often lacking in split-pea soups. However, I did feel the lack of actual meat — there were only a few small pieces in my 1-1/2-cup bowlful — and smoky flavor that would put this soup over the top. Next time, if there is a next time, I’ll try harder to find a ham shank, which Chang says will give more meat than the hocks, and I’ll consider adding some liquid smoke at the very end if there’s still not enough smokiness. It was really late (about 10 PM) when I finally finished the soup — I had long since eaten something else for dinner — so I put the entire quantity of soup in the refrigerator for later portioning, and had a bowl for dinner tonight (Monday).

Photo showing a bowl of pea soup and a spoon on a cutting board

I overfilled a half-cup ladle to give an estimated 1-1/2 cups of soup in this bowl, which looks about right for a serving. Note the one visible slice of carrot.

Nutrition Facts
Serving size: 1-1/2 cups
Servings per container: about 6
Amount per serving
Calories 548 Calories from fat 177
% Daily Value
Total Fat 20g 31%
 Saturated Fat 2.5g 13%
 Monounsaturated Fat 0g
Trans Fat 0g
Cholesterol 102mg 34%
Sodium 497mg 21%
Potassium 646mg 18%
Total Carbohydrate 42g 14%
 Dietary fiber 13g 52%
 Sugars 6g
Proteins 46g 92%
Vitamin A 76%
Vitamin C 18%
Calcium 4%
Iron 24%
Posted in Food | Tagged , , ,

Random segue of the week

  1. Patty Larkin, “Me and That Train” (the live version from A Gogo)
  2. Indigo Girls’ cover of the Stones’ “Wild Horses” (a live-only track, from Staring Down the Brilliant Dream)
  3. see below
  4. Cry Cry Cry’s a capella cover of Leslie Smith’s “Northern Cross” (from the self-titled album)

Oddly enough, I’ve always associated “Wild Horses” with Neil Young more than anyone else. This may perhaps be because the original Rolling Stones single was released before I was born.

Number 3 was Catie Curtis’s “Slave to My Belly” (from Truth from Lies), with a totally different vibe. Not sure if I’ve ever heard that song live — Truth from Lies is a very early album for her, which I think predates my interest in that sort of music.

Aside | Posted on by | Tagged

More recipe fun

A week ago, I promised an update on Diane Duane’s Tessinerbrot recipe (original recipe here). I’ve now eaten the whole loaf, which is at least one good sign. On the whole, it seemed like a fairly ordinary soft white sandwich bread, with no particularly noticeable or problematic flavors. However, I found that it was too delicate for my style of sandwich-making — at least as I managed to slice it — so toasting was required, and there a problem quickly arose (no pun intended): the loaf is simply too tall for my toaster! I probably would have had better luck baking it in a Pullman/pain de mie loaf pan rather than the one that I used; certainly something longer and squatter would have helped with slicing, toasting, and keeping the calorie count down. If I were to try it again, I might substitute some white whole wheat for the bread flour, just to rebalance the nutrition a bit.

Today, I started making Diane Duane’s Braunekuchen — which are really holiday cookies, but I didn’t let that stop me. (The big difficulty, it turns out, is getting candied orange peel after Christmas — my regular supermarkets didn’t have any. Apparently there is no supply of organic candied orange peel, either; if you want it organic, you have to make it yourself. I ended up ordering it from Amazon, of all places, and so ended up with nearly a pound left over after the tablespoon this recipe calls for.) This is a rolled cookie with a one-day rest for the dough, so I’ll complete it tomorrow and probably have another post with some results. I’m hoping that it makes enough that I can bring some in to work on Tuesday.

For the past couple of weeks I’ve been looking for the Emile Henry two-quart souffle dish that was recommended in this month’s Cook’s Illustrated, but it seems to have vanished from the face of the earth. CI‘s cited supplier, Amazon, is now denying that it exists at all (and doesn’t seem to know the difference between a souffle dish and a gratin dish), and other online sources are all saying “out of stock”. I’m going to stop by some mall stores tomorrow to pick up some other kitchen tools; hopefully one of them will have it, but I’m not holding out much hope. (I actually want to make a cheese souffle. See, my cooking isn’t all about meat and baked goods!)

Finally, after a discussion on alt.usage.english last week, I decided that I wanted to make some split-pea soup. I decided to make the recipe from Joanne Chang’s flour, too after reviewing half a dozen other possibilities. I only ever get sandwiches for lunch at Flour, so I’ve never had it, but the recipe (which has some unusual ingredients including mustard and leek) sounded like the most interesting of the ones I looked at, while still being a reasonably plausible quantity for a single guy to make and eat. I’ll try to bring some of that into work, too, although it’s porky so the vegetarians won’t be having any. (I’ve had packaged vegetarian split-pea soup before, and it’s terrible; I don’t know why they bother. I’m sure you can make much better vegetarian soups by not trying to emulate a soup that gets its flavor profile from smoked pork!) Hopefully I’ll be able to find the requisite smoked pork product in my shopping tomorrow. I should have an update on that tomorrow as well.

UPDATE (2014-01-19): it took way too long to finish the pea soup, so I actually had something else for dinner. Full report on Monday after I’ve actually eaten a bowl (and computed the nutrition data).

Posted in Food | Tagged , , , , , , , , , | 1 Comment

Quote of the day

From Christian Weisgerber:

All that the recent pardon of Alan Turing triggered was self-righteousness about what good people we are now and how wicked British society was sixty years ago. The real message should have been: Which of todays punishments for despicable crimes will be perceived as unjust and vile another sixty years in the future?

— Usenet article in alt.usage.english

Quote | Posted on by | Tagged , ,

Summer entertainment: time to make a choice

Today I got my annual envelope from the BSO inviting me to pre-order tickets for the upcoming Tanglewood season. I’ve never had any interest in classical music, but every year since 2007 I’ve gone for the “Prairie Home Companion” live broadcast which takes place on the last weekend in June (before the Tanglewood season proper begins). The first year I went alone; the second year I had along some friends, and since then it’s been a family tradition. At some point they started sending these preorder booklets, with the whole summer schedule, but they don’t seem to help much when it comes to getting the best seats.

This year, my parents are moving away, and all of the NPR listeners I know who actually live in the area, and might otherwise be persuaded to go, absolutely despise Garrison Keillor. For me it’s always been a fun time, and even the parts of the show that I find teeth-grindingly annoying on the radio are entertaining when shared with a crowd of a thousand. But I’m not sure I care to go alone this time. I have only a few days to decide, if I want to get good seats, as they go on pre-sale next Tuesday at 10 AM.

I’d actually like to go to more live performance events, but usually I don’t find out about the ones I’d be interested in until they are already sold out. Following people on Twitter doesn’t really help, since I follow far too many chatty Twitter accounts to actually read more than a fraction of the tweets (and in any case, far too many musicians’ accounts are either roboposters originating on Facebook or roboposters run out of some publicist’s office somewhere — I generally don’t care to follow the accounts of people who just spew advertising without ever interacting with the actual humans who follow them.)

Aside | Posted on by | Tagged , , , ,