Chocolate tasting: week 1

This gallery contains 4 photos.

As I mentioned a few posts ago, I wanted to organize a chocolate tasting. We have a small group of chocolate-lovers in CSAIL, and next Tuesday will be our first of at least six weekly tasting sessions. During this time, … Continue reading

Gallery | Tagged , , | 2 Comments

Debugging a weird network problem (or: IPv6 privacy addresses, just say no)

All you folks who followed my blog for food porn are going to want to skip this one.

The past ten days have been pretty horrible for me at work, thanks to the combined effect of five different network issues. One particularly difficult one to track down has been affecting the very access switch that serves my own office, and that makes it particularly frustrating (especially when trying to fight other fires). The particular symptom that we observed was that traffic would slow down for a short period — about 15 seconds, just long enough to notice but not long enough to actually track down the source of the problem.

It was clear from looking at interface statistics that there was some sort of broadcast or multicast storm going on. Early on, one particular network drop looked suspicious: when the slowdown occurred, we could see that the switch port was receiving a high rate of traffic (hundreds or even thousands of packets per second) and that these were being replicated to all or nearly all the other ports on that switch. When other switches started to trigger the same sort of alerts in our monitoring system, I physically unplugged that drop and things appeared to get better — but I still had no idea why. And things only appeared to get better: there were still slowdowns; they just weren’t as severe (and thus as noticeable) as before.

The access layer in our network is composed of Juniper EX4200 switches, and thanks to Junos’s FreeBSD heritage, they have much better observability than most other switches. In particular, you can run start shell from the Junos command line and get a standard Unix shell (well, csh actually, which while non-standard is “standard enough” for most usual administrative tasks). There are some limitations: Juniper’s kernel will only execute signed binaries, for example, so you can’t install your own software on the switches (although Juniper offers an SDK for some platforms). But Junos includes a number of standard FreeBSD utilities, including netstat, tar, and (relevant for this discussion) top. So I was able to log in to the problem switch and monitor exactly what was going on CPU-wise. Here’s what a normal EX4200 looks like:

last pid: 26547;  load averages:  0.08,  0.12,  0.14   up 110+05:09:57 22:16:09
48 processes:  1 running, 47 sleeping
CPU states:  5.1% user,  0.0% nice,  4.6% system,  0.2% interrupt, 90.0% idle
Mem: 390M Active, 67M Inact, 47M Wired, 190M Cache, 110M Buf, 286M Free
Swap: 

  PID USERNAME       THR PRI NICE   SIZE    RES STATE    TIME   WCPU COMMAND
 1374 root             2  44  -52 72584K 19100K select 237.3H  3.66% sfid
 1376 root             1   8    0 86884K 33716K nanslp 129.9H  1.12% pfem
 1373 root             1   4    0 68052K 11804K kqread  53.9H  0.00% chassism
 1424 root             1   4    0 10204K  6084K kqread  30.9H  0.00% mcsnoopd
 1393 root             1   4    0 23896K 15808K kqread 560:19  0.00% eswd
 1402 root             1  96    0 28968K 14992K select 420:57  0.00% mib2d
 1422 root             1   4    0 17320K  9716K kqread 273:08  0.00% lldpd
 1375 root             1   4  -20 14240K  8588K kqread 240:56  0.00% vccpd
 1401 root             1  96    0 22184K 16388K select 215:18  0.00% snmpd
 1426 root             1  96    0 12356K  6940K select 163:18  0.00% license-ch

This is just a standard FreeBSD top command, from about the 7.0 era, so it accepts the S and H flags to show system processes and threads, respectively, but in this case that didn’t add any useful information. When things were hosed, yes, there was a process (mcsnoopd, the multicast snooping daemon) that was taking up a lot of CPU, but it was only getting 30% of the processor — the other 60% was being absorbed by “system” time and not attributable to any particular process or thread.

Seeing this, but being frustratingly unable to truly identify the source of the problem, I opened a JTAC case. The technician gave me a script to run, which totally failed to identify the problem. (JTAC’s debugging scripts are apparently spread around cargo-cult fashion, and the JTAC staff don’t actually understand what they do or have any idea how to debug them — in this case, the script I was given would never have found this issue because it was looking at the wrong place in the output of top -b — but it was impossible to explain this to the tech over email. The script itself was clearly a horrible hacked-together farrago of awk (twice) and grep and sed (twice) to do something which could have been easily done in a single line of awk script by someone who was actually competent.)

Eventually we had a phone call and for once the Juniper “secure meeting” functionality worked. (I keep an old Thinkpad running Windows in my office for this purpose, since “secure meeting” doesn’t usually work on any other platform.) I was able to convince the tech (after two days of waiting for this script to find something) that it wasn’t going to work, and he moved on to another debugging step — one that should have occurred to me, but when you’re under stress you often don’t think of the obvious. One of the other FreeBSD tools that Junos includes is tcpdump (there’s even an interface to it in the Junos command line), so you can actually take a packet capture directly on the switch, save it to the switch’s internal flash, and then scp it somewhere else for analysis. The one drawback with this is that it can only see the packets that hit the switch’s CPU — anything that’s switched in hardware doesn’t get seen by BPF — but that’s actually an advantage when you’re trying to identify something that’s clobbering the switch’s CPU.

We took a packet capture, and I uploaded it to JTAC so the tech could look at it while I was still on the phone, but there wasn’t anything that looked like it could possibly be the source of the problem. So we ended the call with the conclusion that I would continue to watch the switch and take a packet capture when the problem was actually happening. It didn’t take long — as it turned out, the problem condition was actually quite deterministic, and repeated every 125 seconds! So I had no trouble getting those captures, and after uploading them to JTAC I opened each one up in Wireshark and had a look for myself.

What immediately caught my attention was a long stream of IPv6 multicasts that overwhelmed all other traffic for about ten seconds — suspiciously similar to the 15-second period of the slowdown I had been watching in top. I saw that these were all IPv6 Multicast Listener Discovery packets, which are part of the ICMPv6 protocol and take the place of the IPv4 IGMP protocol — they are used by routers to identify which hosts are members of which multicast groups, so that only desired multicast traffic is forwarded down a network interface. I could see that the burst of multicasts was immediately preceded by an all-groups solicitation coming from one of our core switches, so that all seemed normal, and the solicitation itself actually said “please splay your responses over the next 10,000 milliseconds”, which explained why the burst lasted for almost exactly that length of time. The multicast groups being reported, in nearly all cases, were the so-called “solicited node” multicast groups, which are part of IPv6’s (mandatory) Neighbor Discovery Protocol — the way nodes on a network find out their neighbors’ layer-2 addresses, analogous to ARP in IPv4. If this was just normal behavior, why exactly was it causing such problems? Surely Juniper had plenty of customers who were using IPv6 in production networks, so they must have tested this software. And why was the mcsnoopd process involved for IPv6 traffic? I started reading up on tuning parameters for MLD, reasoning that maybe the defaults were just wrong for a network of our size.

We had done a software update on all of our access switches during the spring. One of the new features added in Junos 12.1 (to which we had upgraded) was support for “MLD snooping”. This was the IPv6 analogue to “IGMP snooping”, which we did have configured. (In IGMP snooping, a layer-2 switch like ours listens to the layer-3 IGMP traffic, and even forges its own IGMP messages to make them look like they came from a router, to determine on a port-by-port basis which multicast groups are subscribed. Otherwise, it would have to flood all multicasts to all ports, which would take far more bandwidth and more interconnect resources on the switch, so even though it’s a “layering violation”, it’s a necessity in all but the smallest networks. MLD snooping does exactly the same thing, but for IPv6.) I thought that maybe not having MLD snooping configured was causing some sort of problem — perhaps the mcsnoopd process was taking an abnormal amount of CPU when faced with MLD packets that it didn’t know what to do with, or perhaps (since MLD packets themselves are also multicast) it was just doing the flooding in software rather than allowing the switch hardware to do it. In any event, I turned on MLD snooping for all VLANs on the switch, and the CPU spikes simply stopped. Coincidence? I’ll wait and see — but since more and more machines have IPv6 on by default, I’ll be deploying MLD snooping everywhere I can (regardless of whether it really helps my issue or not).

So I went home, and made dinner (well, actually, a bowl of macaroni and cheese). But I was still thinking about this issue at work. The JTAC technician sent me email, after I had left work, pointing to an issue on some HP machines running Windows with a bad NIC driver. We don’t have many HP machines, so I initially dismissed the idea, but since I could run Wireshark just as easily at home as in the office, I scp’ed the trace files from my workstation and had a look. Opening up one of the traces in Wireshark, I used Statistics => Endpoint list => Ethernet to find which Ethernet addresses had sent the most traffic, and one jumped out at me immediately: a Dell machine on my network had sent the second-most number of multicast or broadcast packets in this several-minute capture. It was second only to the core switch that was busily ARPing away for non-existent IPv4 addresses. (We have a lot of address space, and it’s all on the public Internet, so we get scanned pretty much continually.) I logged in to the switch, and located the port where it connected, and lo and behold, it was on the same port as I had originally suspected!

I used Wireshark’s filtering capability to get an idea of what the machine was, and what exactly it was doing sending all of those packets. That told me the identity of the machine — it was a Windows machine, and Windows loves to broadcast its identity to all and sundry — and more to the point, I saw that it was responsible for the vast majority of those multicast memberships: 350 different multicast groups in all, nearly all of which were “solicited node” groups for different IPv6 “privacy” addresses.
Screenshot of Wireshark while debugging IPv6 MLD storm

Now for a digression on IPv6 addressing. An IPv6 address is 128 bits long. That is enough addresses to give billions of addresses to every cell in the body of every human on earth. Of course, there’s no reason you’d do that, and a lot of the address space is “wasted” by giving it a structure that makes it practical to actually route IPv6 packets on a global scale. By convention, the top 64 bits of an IPv6 address identifies a specific network, and the bottom 64 bits are an “interface identifier”, which identifies the particular device attached to that network. Some bright light looked at this and said, oh, gee, all those users are used to dialup in the IPv4 Internet where they get a different address every time they turn their computer on, so we’d better find a way to emulate that in IPv6. Unfortunately, they did, and thus “privacy” addresses were born — where the device identifier (technically called an “interface ID” since it’s usually specific to the NIC) is just randomly generated, and changes every so often. That way, nobody will ever have to worry about some bad guy on the IPv6 Internet identifying them by their MAC address. (Duh, they’ll just use the “network” part of the IPv6 address instead!) Of course that will also ensure that nobody will ever have to care about making the IPv6 reverse DNS work properly, either, since nobody will use the same address from one day to the next.

Microsoft turned this “feature” on by default in recent versions of Windows. (Apple turned it on in Mac OS and iOS as well, but that’s a rant for another day.) Apparently the Windows implementation is more aggressive, or Windows applications are more likely to hold connections open, because there are lots of reports of Windows machines having hundreds of these “privacy” addresses simultaneously — and that’s what appears to be happening on our problem machine: every time the router sent out a “please tell me all your memberships in the next 10 seconds” message, the Windows box would reply with 30 MLD responses a second for ten seconds. That doesn’t seem like much, but now that I’ve started turning MLD snooping on, I can see that there are other VLANs in my network that look like they are having the same problem — so I have my work cut out for me. Luckily, there’s a really simple set of commands to completely disable “privacy” addresses on Windows machines (for whatever reason, Microsoft doesn’t provide a GUI for this), so now that I know what to look for, I can identify the problem machines and get their owners to fix them.

Still, grrr.

Posted in Computing | Tagged , , , , , , ,

Other people’s recipes: Joanne Chang’s brioche au chocolat

Having made Joanne Chang’s brioche dough a couple of weekends ago, I was faced with the enviable task of deciding what to do with the second half-batch. Between her two cookbooks (Flour and Flour, too) she gives half a dozen different possibilities, all of which look tasty — plus of course there’s always the possibility of making another loaf of plain brioche. But I still had a third of the original loaf in the freezer (tsk, I know) so I didn’t want to make any more of that. So last weekend I decided to make brioche au chocolat (Flour, p. 78) — not quite as calorific as sticky buns (half the calories, in fact), but more interesting than the even less caloric sugar-and-spice buns. (The great thing is that the brioche dough is dead simple to make, so I could go back and do either of those things later if I wanted. Or I could step out on my own and try to duplicate the Iggy’s pepper brioche hamburger buns that I like so much.)

The process starts out by making a standard pastry cream (milk, eggs, sugar, flour, and vanilla). That mostly takes place over the stovetop and there are no interesting pictures. The custard is then squeezed through a fine-mesh sieve (I have no idea why, it was a lot of work and didn’t seem to do anything useful) and cooled in the refrigerator overnight while the frozen brioche dough thaws. I thought I didn’t get nearly the two cups the recipe is said to make; perhaps I overcooked the pastry cream. The next day, the brioche gets rolled out into a rectangle, and the pastry cream is spread all over:

Pastry cream on brioche

The brioche is rolled out to a 10″×20″ rectangle (or nearly so) and the entire batch of pastry cream is spread on top using an offset spatula.

I took some TCHO 66% dark chocolate discs and roughly chopped them to make the chocolat part of the brioche au chocolat. The chocolate was spread (not quite as evenly as I would have liked) over the pastry cream, and then the brioche was folded over to enclose the pastry. Apparently I didn’t do a very good job of rolling out the brioche dough, as it was clearly much thicker at one end than at the other, which left the finished product a bit uneven.

Ready to slice

After spreading the chocolate on top of the pastry cream, the rectangle is folded in half lengthwise and sliced into individual pastries using a bench scraper.

So, uh, as I mentioned before, I can’t cut anything straight without a guide. These are the ten individual brioches au chocolat sitting on the baking pan and ready to bench-proof. Since it was so warm in my kitchen I just covered them with a sheet of plastic wrap and let them proof where they sat.
Formed and ready to proof

After leaving the brioches to proof for a couple of hours, I gave them a quick egg wash and stuck them in the oven. The recipe said to bake for 35 to 45 minutes, but to my eyes (and by my probe thermometer) they were done after only 30 minutes — I suppose my oven is a bit on the hot side — and I took them out:

Finished brioches au chocolat

After only 30 minutes in the oven (five minutes less than the recipe called for), the brioches au chocolat were done.

Of course, I let them cool for half an hour — then ate the misshapen (and underfilled) one!

Brioche au chocolat (cross-section)

I wasn’t supposed to have two brioches at all, never mind so late in the day, but I couldn’t resist stacking a nice one up on a plate for the beauty shot. Look at all that chocolate!

Nutrition

Well, this is certainly not the healthiest thing you can eat — and I can’t imagine having it for breakfast even if I was the sort of person who eats breakfast. But they are tasty, and sweet, and chocolatey — certainly on par taste-wise and calorie-wise with many popular desserts. Just don’t have them at every meal!

Nutrition Facts
Serving size: 1 pastry
Servings per container: 10
Amount per serving
Calories 425 Calories from fat 183
% Daily Value
Total Fat 20g 31%
 Saturated Fat 12g 60%
 Monounsaturated Fat 1g
 Polyunsaturated Fat 0.5g
Trans Fat 0g
Cholesterol 187mg 62%
Sodium 298mg 12%
Potassium 91mg 3%
Total Carbohydrate 49g 16%
 Dietary fiber 1g 3%
 Sugars 20g
Proteins 10g 20%
Vitamin A 14%
Vitamin C 0%
Calcium 6%
Iron 15%
Posted in Food | Tagged , , , , | 1 Comment

Organizing a chocolate tasting

I’m thinking about organizing a chocolate tasting at work, and hoping other people out there will have done something similar. This is just intended for fun, but I still want to run a proper taste-test protocol, and actually determine the real collective preferences, if there are any. Of course all the raw data would be made public.

A few issues I’m thinking about:

Protocol

The protocol will obviously depend on how many people are interested in participating and on whether I accept participant suggestions (or ask them to bring something — would require some care to make sure people didn’t all bring the same bar of Lindt they got at the mall store).

Obviously, the usual precautions (random order of tasting, identifying marks removed to the extent possible, portions controlled) should be taken. That means that I probably don’t get to include my own preferences, if I’m running the tasting. I’m not sure what the ideal number of samples per round would be, but I think it’s probably no more than six. I’m not sure whether there is an ideal number of tasters per round, or indeed whether the same tasters should do all rounds. Presumably I would need to hold back some of each sample for use in later rounds.

Some sort of palate-cleanser will need to be provided — seltzer is good enough for me, but not for many other people. Something with some fat (milk, maybe) or a non-polar solvent like rum may be good. I might just ask tasters to bring their own.

Evaluation

I’m thinking the tasters should provide both individual evaluations for each chocolate tasted, and an overall ranking of all of the chocolates in each round. The overall ranking in each round can be determined from the individual rankings, with ties broken on the basis of individual scores. How many moved on to the next round would depend on how many samples there were, and the number of rounds. (So with 24 chocolates and three rounds, that might be six quarter-finals of four chocolates each in the first round, with the top two moving on to two semi-finals of six each, and then the top three from each semi moving on to the finals.)

For the individual evaluations, I’m thinking a 1-5 scale (5 being the best) on aroma, texture, sweetness, bitterness, and flavor, plus freeform comments.

Categories

Obviously it is important to compare only, um, comparable chocolates against each other. The ones I’m most interested in doing would be high-end extra-dark eating chocolate, but given the variety of chocolates out there on the market, I can easily see doing any of these categories (but not all at once):

  • Unadulterated dark chocolate, at least 60% cacao (optionally, vanilla, lecithin) — might need to split this into 60–70% and over-70% as some people would likely find truly high-test chocolate unpalatable and give it poor ratings
  • Semisweet chocolate (anything brown with less than 60% cacao but no dairy ingredients)
  • Milk chocolate (for those who insist)
  • Chocolate with stuff in it:
    • Fruit
    • Mint
    • Nuts (whole, in pieces, or ground)
    • Spices (cassia, ginger, chile — any flavoring other than vanilla)
    • Anything else — bacon, caramel, potato chips, wafers, etc.

Some of these categories would be more difficult to organize than others, and obviously anything with animal flesh in it would need to be set aside for the vegetarians. I think I could do all of the “anything else” category from the Vosges catalogue alone, given how many different varieties they do.

If I do this, I’d be happy to include remote submissions of chocolate provided they meet the qualifications for whichever category I end up doing.

Analysis

Obviously I would make all of the data available so other people could analyze it. I’m not a statistician myself and would probably write some simple scripts to help with data reduction, with all of the evaluations stored in a database. (Probably keyed by hand, though, unless someone can point out an existing Free Software application that would allow the users to enter their own evaluations on a mobile device.)

Thoughts?

UPDATE: Moved further discussion to the “Tasters” web in CSAIL FosWiki.

Posted in Food | Tagged , ,

Really simple recipes: chipotle chicken salad

I often by prepared chicken salad at Whole Foods. The taste and quality are pretty reasonable, and the cost is not horrible compared to the effort required to actually make it myself (cooking chicken breast, chopping vegetables, etc.). But although their chicken salad is reasonably well seasoned (some customers probably think it’s too salty, in fact), I often find myself wanting something a bit spicier. From time to time they sell a “spicy” or “buffalo” chicken salad in the prepared foods department, but it always costs significantly more than the plain chicken salad, and I’m not going to pay $1 extra for the privilege of having someone else mix hot sauce into my chicken salad, just out of general cussedness if for no other reason.

At least in my region, the chicken salad is available in the prepack case as 14-ounce tubs:
Container of chicken salad

I happened to have three fourths of a can of chipotles en adobo left over from another recipe, which I had frozen.
Some chipotles en adobo (previously frozen)

I love the smoky taste of chipotles and adobo sauce, so I figured this would be an ideal way to spice up the chicken salad. So I minced two whole chipotles (not hard to do after they’ve been canned and even easier after a freeze-thaw cycle) and added them to the chicken salad along with two tablespoons of the adobo sauce. Mix thoroughly, and the result is a perfectly serviceable chipotle chicken salad:
Chipotle chicken salad

It even fits back into the original packaging:
Hey, it fits back in the same container!

No nutrition data for this one; the chipotles and adobo sauce don’t make a significant nutritional contribution to the final product, so just use the data for the original chicken salad in whatever your preferred serving is. (Normally I’d put it on an Iggy’s Bread of the World pepper brioche hamburger bun, but this time since I have so much of Joanne Chang’s plain brioche loaf, I’ll toast up a couple slices of that instead.)

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

Other people’s recipes: Joanne Chang’s brioche

It seems that one of the recipes nearly every home baker needs to try from Joanne Chang’s cookbook Flour is brioche. Not only is brioche a rich, buttery, wonderful treat on its own, but Chang also uses the dough as the basis for numerous other (even sweeter and richer) treats, like her famous sticky buns. Flour Bakery-Cafe even offers classes in making brioche! So of course I had to see what all the fuss was about. It’s a fairly complicated and time-consuming recipe, best made over the course of two days, so the dough can proof overnight in the refrigerator, but I had to work on Saturday so I didn’t have time to do that; the minimum required time is six hours, and by getting up fairly early (for me, for a Sunday) I was able to complete the entire process in one day. I did do some prep work before going to bed: I measured out all the dry ingredients and stirred them together in my stand mixer’s bowl, and most importantly, I portioned out the butter and eggs, and left them on the countertop overnight so that they would be at room temperature the following morning:

Five eggs and 22 tablespoons of butter

Brioche is nothing if not rich. This particular brioche is made with five eggs (plus one more for the egg wash) and twenty-two tablespoons of butter.

I covered the plate full of butter with a bowl to keep the butter from oxidizing too much. (In a bakery they go through butter so fast that there’s always some softened butter available, but we home bakers must generally take butter out of the freezer and let it come up to room temperature.) When I got up in the morning, it was a simple matter of dumping the eggs and the water into the mixer bowl, and starting it up:

Mixing brioche dough

At the beginning of the process, the brioche dough looks rather shaggy and gives the impression that it will never come together.

After six to eight minutes of mixing, the dough finally looks like bread dough — a little yellowish thanks to the five egg yolks:
Ball of dough

Then it’s time to add the butter, in two-tablespoon hunks. My butter was quite soft (my condo tends to equilibrate at about 78°F over a summer night with the air conditioner left off), but still had no problem incorporating into the dough:
Adding butter to brioche dough
At first, the butter doesn’t look like it will combine with the brioche dough at all. But once you get half a pound kneaded in, the rest goes quite easily. (But I’d hate to have to do this kneading by hand!)

Kneading brioche dough
All of the butter has now been incorporated into the brioche dough, and it’s now nearly done with 15 minutes of kneading. Now it’s time to dump the dough into a smaller bowl so it will fit into the refrigerator:

Brioche dough ready to proof

After kneading and any necessary moisture adjustments, the brioche dough is ready for its first proofing — in the refrigerator for six hours. Overnight would be even better, but I needed to finish this recipe in a single day.

This cold proof serves two functions: slow-raised yeast breads generally develop more and better flavor, but specifically in the case of brioche, an enormous amount of butter is worked into the dough, and the butter needs to be allowed to recrystallize so that it won’t leak from the dough during forming and bench proofing. Doing it this way allows you to work in fully softened butter using only the stand mixer. (Contrast the rather complicated butter-incorporation process Alton Brown describes in I’m Just Here for More Food, which is more like how you would make a laminated dough.)

Surprisingly, the brioche dough expands substantially in volume after just six hours, even in the refrigerator. This can probably be attributed to the amount of both yeast and sugar that went in at the start.
Dough ball in the refrigerator
Chang’s brioche recipe makes enough dough for two loaves, so this giant ball of dough needs to be split in half for forming. The whole dough ball weighs about 1.4 kg (3 lb).
Big dough ball

Half of dough ball on scale

Always best to measure things. This half of the dough ball will go in the freezer for storage.

There is so much butter in the brioche dough that it really does feel, as Chang describes it, “like cold, clammy Play-Doh”. The first pound and a half of dough is pressed out into a nine-inch square and then folded up, like a business letter, to form the proto-loaf. (That’s one matter on which Chang and Brown do agree — although there’s no need to fold it more than once after all the kneading it had.)
Flattened dough

After shaping, the brioche is bench-proofed for another four hours. The pan is lubricated with more butter (it was easier than cutting parchment to fit).
Dough "log" in loaf pan
I dithered for a while over which pan to use; the one I ended up with is a 9″×5″ one, but I also considered a 9¼″×5¼″ one (which the first one fits inside). Maybe I should have used the slightly larger one, given how much the dough “log” expanded during bench proofing:
Loaf of brioche after bench proofing

The top of the brioche is brushed with egg wash before baking in a 350°F oven.
Finished brioche loaf
It was done in only 35 minutes. Unfortunately, any unpreserved bread will last about three days in my kitchen before growing mold, so I have to freeze it, and that implies slicing it (so I can thaw individual servings). Even more unfortunately, I can’t slice worth beans, even with the help of my wooden slicing guide, so I have a bunch of really oddly-shaped slices — many of them too thin even for sandwiches, never mind pain perdu.
Sliced brioche

A single loaf, after baking, weighs about 530 g, and makes twelve ¾″ slices — 40–45 g each, or about an ounce and a half. I obviously got more than twelve slices, because I was (believe it or not) trying to make thinner slices, but I don’t think this was a success — for a bread this soft and rich, much better to pay the price and stick with the thicker slices.

Peanut butter and jelly sandwich, on brioche
Perhaps it’s a bit silly to make a peanut-butter-and-jelly sandwich on a rich, soft bread like brioche, but I figured, why not? But at lunchtime I discovered why not: this bread is so soft that it practically vanishes in one’s mouth — not a good thing when each slice has so many calories — so in the future I’ll toast the brioche before making a sandwich out of it. (This will be even more clearly necessary when I make a tuna salad or chicken salad sandwich. It’s worth noting that at Flour, the sandwiches are made on focaccia, not brioche, which is a much sturdier bread.)

Nutrition

Nutrition Facts
Serving size: 1 slices
Servings per container: about 24
Amount per serving
Calories 221 Calories from fat 100
% Daily Value
Total Fat 11g 17%
 Saturated Fat 7g 35%
 Monounsaturated Fat 0g
Trans Fat 0g
Cholesterol 66mg 22%
Sodium 155mg 6%
Potassium 25mg 1%
Total Carbohydrate 24g 8%
 Dietary fiber 0.5g 2%
 Sugars 3.5g
Proteins 5g 10%
Vitamin A 9%
Vitamin C 0%
Calcium 0%
Iron 9%
Posted in Food | Tagged , , , | 2 Comments

Added some Joanne Chang recipes to my pointer page

I went through Joanne Chang’s Flour cookbook the other day and marked all of the recipes I though I wanted to try. Now I’ve made those bookmarks electronic, on my “Recipe Pointers” page. (You’ll still have to actually buy the cookbook!) I’ve done the nutritional calculations for some of these recipes (that helps me to prioritize) so some of them have calorie counts listed — but note that these are based on the yields listed in the cookbook; I haven’t independently verified them, and the servings in Chang’s Flour Bakery-Cafe are sometimes significantly larger. My number for the brioche recipe is based on 18 approximately one-inch slices (from two loaves baked in 9×5 pans), but the brioche dough is also used to make other recipes, like the sticky buns, which don’t portion the same way. (When I do make any of these, you can expect a post to follow shortly with the full details.)

UPDATE: I added pointers for Flour, too as well.

Aside | Posted on by | Tagged ,

Other people’s recipes: Jeff’s Spicy Turkey Burgers (from Flour, too)

A few weeks ago, I went through Joanne Chang’s cookbook Flour, too marking recipes that sounded interesting. I’m not a huge fan of turkey burgers in general, and after doing the nutritional computation on these I became even less of one. But I thought I should at least give this recipe a try. (America’s Test Kitchen TV also had a turkey burger recipe that I might have tried, but in true ATK style they stuffed it full of mushrooms, which put it beyond consideration for me.) Turkey burgers really have the deck stacked against them: ground turkey — even high-quality all-dark-meat ground turkey — is very low in fat, which ensures that patties will stick to the skillet no matter how hard you try, and it also has a different protein structure than is found in beef, which makes it more likely to dry out and turn into a hockey puck at the slightest provocation. What’s worse, it’s also extremely bland. As a result, turkey burger recipes generally end up looking more like meatloaf rather than burgers, with significant quantities of extenders and extra flavorings added to make them palatable, and that was definitely the case with this recipe.

Chang describes these as “a healthful alternative to a fatty beef burger with just as much flavor if not more.” I would beg to differ: compared to my standard 6-ounce 90% beef patty, they have more fat, more carbohydrate (much more carbohydrate if you pair them with Chang’s focaccia-based rolls), and indeed more calories. To avoid completely blowing up my diet, I chose to use a commercial kaiser roll at 250 calories rather than Chang’s 390-calorie rolls; I’m quite sure I lost quite a bit in texture and flavor by that choice, but on the other hand, I didn’t have to spend a whole day in the kitchen, either.

Which brings me to the third issue with this recipe: the prep time. My experience is that cookbook authors almost always grossly underestimate the time required to make anything, but Chang avoids this by leaving prep time unspecified. Unless you’re a professional prep cook accustomed to chopping and mincing vegetables, or have a culinary assistant, this recipe is likely to take rather longer than it’s worth. It’s hard to imagine any circumstance in which it would make sense for a home cook to do this — certainly not for a single person like me, maybe borderline for a family of four. Making regular beef burgers takes about 15 minutes total; making these turkey burgers, including the accompanying tomato-onion jam, took me a good two hours, and in the end, I had a moist, herby meatloaf sandwich. I suppose if one is unwilling to eat beef, for whatever reason, but still willing to eat turkey, this might be an acceptable alternative. Otherwise: Leave it to the restaurant; they’re much better equipped to make something like this.

That doesn’t mean I’m not going to supply pictures, however.

Mise-en-place for the tomato-onion jam

At this point I’ve done everything except chop up the tomatoes. That half an onion in back is just resting.


Tomato-onion jam at start of cooking

Contents of the pot: olive oil, chopped onion, chopped plum tomato


Finished tomato-onion jam

After cooking for 40 minutes, the tomatoes have cooked down quite nicely. The onions, unfortunately, are still holding together.


Mise-en-place for the turkey burgers

Clockwise from upper left: fresh bread crumbs, olive oil, chopped herbs (basil and parsley), minced garlic, minced chipotle, feta, salt and pepper, ground turkey, minced onion


Formed turkey patties

The instructions call for patties between 4 and 5 inches in diameter. These are 4½ inches across — unfortunately that makes them too big for my 10-inch skillet!


Turkey burger on a bun

Turkey burger on a bun


Half-eaten turkey burger

Sorry, no nicely sliced cross-section here!

Nutrition

Since I’m casting aspersions on the purported healthfulness of this recipe, I should at least provide the full facts. My computation is based on using all dark-meat ground turkey; the recipe does not specify, but both fat and flavor would be lower with ground turkey breast.

Nutrition Facts
Serving size: 1 patty (about 205 g uncooked)
Servings per container: 4
Amount per serving
Calories 446 Calories from fat 284
% Daily Value
Total Fat 32g 49%
 Saturated Fat 10g 50%
 Polyunsaturated Fat 1g
 Monounsaturated Fat 9g
Trans Fat 0g
Cholesterol 157mg 52%
Sodium 759mg 32%
Potassium 92mg 3%
Total Carbohydrate 15g 5%
 Dietary fiber 1g 4%
 Sugars 2g
Proteins 27g 54%
Vitamin A 8%
Vitamin C 8%
Calcium 16%
Iron 18%
Posted in Food | Tagged , , , , ,

Nutrition facts formatting

I made some changes to the blog’s CSS so that the nutrition information looks more like the FDA recommendation, and learned a bit about WordPress.com’s CSS setup in the process. Unfortunately, I can’t do much about the fonts: WordPress.com allows only a very limited selection of fonts and does not permit the use of Web fonts (supposedly for security reasons), not even Web fonts from WordPress’s partner font library, Adobe Typekit. So just pretend that #content table.nutrition caption specifies Franklin Gothic Heavy, and the various other parts of the table are variously in Helvetica Regular or Helvetica Black. As it stands, it looks decent on desktop browsers, but not brilliant on mobile; I may be able to fix that with media queries, if WordPress.com allows them.

You can see an example in my previous post.

Here’s what the CSS I added actually looks like (note that this is an extra-cost feature on WordPress.com):

#content table.nutrition {
	width: 65%;
	line-height: 1; /* override excess space added by WP */
	font-family: "Helvetica", sans-serif;
	margin-left: auto;
	margin-right: auto;
	border: 2px solid black;
}

#content table.nutrition caption {
	font-size: 32pt;
	font-weight: bold;
	padding-bottom: 6px;
}

#content table.nutrition tr td {
	padding: 6px;
	font-size: 90%;
}

#content table.nutrition tbody {
	border-bottom: 1px solid black;
}

#content table.nutrition tbody.servings {
	border-bottom: 7pt solid black;
}

#content table.nutrition tbody.calories {
	border-bottom: 3pt solid black;
}

#content table.nutrition tbody.main {
	border-bottom: 7pt solid black;
}
Aside | Posted on by

Other people’s recipes: Serious Eats’ plum sorbet

A week ago, @SeriousEats tweeted:

The article by Max Falkowitz included several tips and techniques for making a sorbet that’s neither too icy nor too sweet, and provided several fully-worked recipes, including one for plum sorbet. I had a quart of luscious organic black plums that I was working my way through, and I favorited the article so I could come back to it when I had time.

On Saturday, I went to the store and found that the yummy black plums were still available, so I decided to proceed with the plum sorbet recipe (which, as it turns out, was actually from August, 2012). In addition to the fresh plums, all I needed was some sugar, some corn syrup, and a lemon. (The plum sorbet recipe was one of the few recipes linked from that article that didn’t call for some sort of alcohol. While I understand the physics of it, that doesn’t make me as a non-imbiber any more likely to have such things on hand just to make a recipe calling for a tablespoon of something.)

After coring and quartering the two pounds of plums, I pureed then in the food processor according to the directions, although they came close to overflowing the work bowl. The recipe calls for straining the puree, which took some time and a bit of agitation (and I actually ran the puree through the fine disc on my food mill in addition to the fine mesh strainer to make sure that all of the goodness was extracted). The resulting sweet liquid must then be chilled in the refrigerator in preparation for churning.

My churn is of the non-refrigerated type, depending on a work bowl with a phase-change core that must be pre-frozen; I just store it in the freezer so it’s always ready — and since I hadn’t used it in a couple years at least, it did not require any additional preparation. In this type of churn, the bowl must be set on the churn and the motor running before adding the ice-cream base, or in this case the flavored sugar syrup that will become sorbet. (That unfortunately meant that my choice of a ceramic bowl to chill the liquid was suboptimal, and a few tablespoons of bright red liquid ran down the outside of the churn and onto the counter below. Maybe next time I’ll remember to use a vessel with a pouring spout.) In my churn it takes between 20 and 30 minutes to freeze a quart of frozen dessert, and it was only when I got halfway through the process that I remembered I was supposed to be taking pictures.

Photo of half-frozen sorbet, looking through the clear plastic cover of the ice-cream churn

Halfway through the churning process, the sorbet has a thick and granular but still soupy consistency. After about ten minutes more churning, the sorbet has a thick, smooth, glossy texture that looks more like a gel (which is what a sorbet actually is) than soup:
Photo of nearly complete sorbet in the churn

Nearly all frozen desserts require a few hours of hardening before they are ready for serving. Here I’ve transferred the sorbet from the churn to a plastic container, so I can clean the various parts of the churn and re-freeze the phase-change core for a future batch.
Plum sorbet, ready for hardening

The recipe makes about a quart, which is eight half-cup servings. I think this is about a half a cup, but in all honesty I didn’t measure it. Although it did harden in the freezer for a few hours, it was still not quite solid yet; it should be totally ready by Sunday.
Plum sorbet, ready to serve

So now it’s Sunday, and it did firm up quite nicely. If I have one criticism, it’s that I’m not sure I could identify it as actually being plum-flavored. The flavor of a plum per se (as opposed to the flavor of the sugar and the fruit acids) is quite subtle, and I’m not convinced that it survives the freezing process (not to mention the addition of so much sugar). But the weather forecast is looking warm all this week, so I’ll probably continue to have my sorbet every day until it’s gone. Next time I might try Serious Eats’ tart lemon sorbet recipe from 2012. (I also have an ice-cream cookbook that my parents bought back in the early 1980s along with our White Mountain hand-cranked churn, which also has some sorbet recipes in addition to all four styles of ice cream.)

Nutrition

Warning: the nutrition calculations below are based on using the entire plum, which does not account for losses during straining, and thus overstate the amount of fiber and likely other nutrients in a serving.

Nutrition Facts
Serving size: ½ cup (120 mL)
Servings per container: about 8
Amount per serving
Calories 164 Calories from fat 0
% Daily Value
Total Fat 0g
 Saturated Fat 0g
 Monounsaturated Fat 0g
Trans Fat 0g
Cholesterol 0mg
Sodium 2mg 0%
Potassium 201mg 6%
Total Carbohydrate 42g 14%
 Dietary fiber 2g 8%
 Sugars 39g
Proteins 1g 2%
Vitamin A 9%
Vitamin C 20%
Calcium 1%
Iron 1%
Posted in Food | Tagged , , ,