Converts to the Church of J’s Lasagna

Dinner with the family tonight. My variation of James A. Thorson’s lasagna was a big, big hit; somehow I’d never shared it with them in any of their visits to my place in the nearly 30 years I’ve been making it. It didn’t hurt that my sister had a stash of amazingly good parmesan cheese.

Surprisingly, the giant box that arrived labeled Cassano’s Pizza was in fact filled with dry ice and Dayton-style pizza. Not tomorrow’s dinner, but soon we shall feast.

Dear Amazon,


“In the future, Amazon Prime will be Whole Foods Market’s customer rewards program, providing Prime members with special savings and other in-store benefits.”

Since I don’t buy groceries with a credit card (or a debit card, for that matter), I presume you’ll be using the phone number associated with my primary shipping address.

…on the rare occasion that I’m willing to drive 35 minutes to a Whole Foods. Which admittedly has better parking than the equally-distant Trader Joe’s.

(I’m still pissed about the closing of the Nob Hill that was in walking distance from my house when I bought it, and now the nearest Safeway has the audacity to close between 2am and 5am; my First World Problems are just getting out of hand…)

Pressure Comfort Foods

I’ve been having a lot of fun with my new pressure cooker, purchased with a pile of Amazon gift cards that were lying around. It wasn’t a budget model, but it’s the top recommendation from America’s Test Kitchen, and after picking up a few good cookbooks (1, 2), a cheesecake pan, and parchment rounds, I’ve had plenty of tasty, hearty meals, and several cheesecakes so good that I can no longer risk making one unless I’m sure I’ll be able to give away most of it.

Note that there are several versions of Fissler’s pressure cookers, and I couldn’t be sure if the various Marketplace dealers were selling the right parts, so I went to authorized dealer Kitchen Universe, whose listings include the actual part numbers, so I could verify them against my manual.

Alton Brown’s eggs under pressure produces perfect, easily-peeled hard-boiled eggs by the dozen. Namiko Chen’s Japanese curry is much better than the standard back-of-the box stovetop method. The America’s Test Kitchen cookbook linked above has a fantastic beef short ribs recipe with a rich sauce that goes great over steamed or fried rice.

My own humble contribution is gyro meat. I started with This Old Gal’s recipe, but found the 8 cloves of garlic a bit overwhelming, and switched to The Dread Pirate Paramour’s spice mix, doubled or more as recommended in the comments, along with a little advice from Alton Brown.

I didn’t bother making my own tzatziki sauce. In my experience, most gyro joints serve a thin, watery tzatziki that tastes mostly of cardboard, that’s nothing like the thick, creamy sauce that helped make George Psyhogios an OSU legend. My best attempt so far to reconstruct that memorable flavor has been a 50/50 mix of whole-milk greek yogurt and Safeway’s “Better Living Brands” Tzatziki Cucumber Dressing.

MasterCook scripts

Ongoing MasterCook molesting now up on github. I took advantage of the very restricted formatting of their XML-ish MX2 format to write cat/grep/ls tools, as well as a quick-fix for a common format issue in files imported from MXP format. It would be trivial to write those sort of tools for the XML versions, but working in MX2 is handy for things you plan to re-import to MasterCook (since I haven’t written an xmltomx2 converter yet…).

“Oh, FFS, MasterCook!”

MasterCook, currently at version 15, is still the best recipe management software around, mostly because it supports sub-recipes. Most recipe-database software maintainers will give you blank stares when you mention this, even the ones who claim to import MasterCook format; some of them don’t even know about sub-title support in ingredient lists. While the software has changed hands several times over the past 25 years, functionally it hasn’t changed much since version 6. The licensed cookbooks come and go, but OS compatibility is the most significant improvement. (disclaimer: I haven’t tested the pretty clouds in v15 yet)

There are tens of thousands of recipes on the Internet in the two major MC export formats, MXP and MX2. I recently dug up one of the biggest to play with, which is only available through The Wayback Machine.

MXP is a text file meant to be printed out in a fixed-width font, but the format is well-structured enough that it’s easy to import into other software, with some minor loss of information. If you’ve downloaded any recipes off the Internet in the past 20 years, you’ve probably seen the string “* Exported from MasterCook *”.

MX2, introduced in 1999’s MasterCook 5, is not XML. Yes, it looks like XML, and even has an external DTD schema, but trying to feed it through standard XML tools will trigger explosions visible from half a mile. If you want to work with it, your best bet is the swiss-army-knife conversion tool cb2cb. Windows-only, written in Java, and “quirky”, but it handles both MXP and MX2, as well as some other formats, and has built-in cleanup and merge support. Pity it’s not open source, because I suspect there are dozens of comments with some variation of “Oh, for fuck’s sake, MasterCook!”.

What’s wrong with the “XML” and DTD?

  1. The XML header line is invalid. This:
    <?xml version="1.0" standalone="yes" encoding="ISO-8859-1"?>
    must be changed to:
    <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
  2. The following two characters are not escaped in attributes: "&
  3. Non-printable characters in text (ASCII 2, 5, 17, 18, and 31, in particular).
  4. The mx2.dtd file supplied in every version since 1999 has obviously never been tested, because it is incorrect and incomplete, in several different ways.

Of course, anyone who knows me will correctly guess that I’ve gone to the trouble to fix all of these problems, with a Perl script that massages MX2 into proper UTF-8 XML that validates against a corrected mx2.dtd; part of that script dates back to my old cookbook project from 2002, so yes, this is the first step to reviving that. The script uses xmllint to fix the encoding and double-check that it’s valid XML. I’ve validated over 450 converted MX2 files against the corrected DTD, a total of around 120,000 recipes.

Update: When converting MXP to MX2, many of the options in cb2cb mangle the output. Best to turn them all off, and do some basic cleanup with a script like this one which splits directions on CRLF pairs and safely moves most of the non-direction text into Notes. There are still a few rare errors in the conversion process, but in my case that amounted to 4 ingredient lines in over 10,000 recipes, detected by their failure to validate during the XML conversion.

Avocado’s got your number…

Old and busted: bagel-slicing injuries. New hotness: avocado-slicing injuries.

Soon after I bought my house, my then-manager came down to get my help scanning in the manual for his sailboat, for the benefit of others with the same model (the manual having become somewhat rare over the years). A California native, he decided to introduce this Midwesterner to the joys of a good ripe avocado, and as he was starting to explain the proper way to carefully cut around the edges and extract the seed, I simply cut them in half.

He stopped in mid-sentence and said, “oh, right, you have sharp knives.”

Side note: when I was migrating the blog, I checked the logs first and discovered that there are still a number of sites linking to those boat-manual scans, so I kept them online.

Pantry review: Barilla Ready Pasta

If you’re really desperate, and you don’t have time to boil water, this is kind of like pasta:

Except for the smell, which is the same plastic-y reek as the Uncle Ben’s Ready Rice pouches. Not, I suspect, a coincidence.

Dear Amazon,

I am not pretentious enough for this.

Also, 91% lean? Screw that.

“Need a clue, take a clue,
 got a clue, leave a clue”