“I can’t help myself in the grocery store. The eggs and the apples call to me, ‘Juggle us, juggle us!’ I don’t go to the hardware store for parts, but to find things to juggle. My hands go wild with motion. In the stores my kids act like they don’t know me. My wife hid my machete. She talked of leaving me when I looked at axes the other day. The first thing I think of when I pick up a tool, ball bat or fruit is balance, space and spin. My cats avoid me at all cost.”

— Tony Maurer, in Juggler's World magazine

"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.

If only it were that easy...


I look forward to the Curry Catgirl flavor.

A clean sweep?


Over the past few weeks, a number of Doctor Who fan sites have claimed that nobody will be continuing to the next series. It’s not just Moffat and Capaldi; Missy and Bill’s actors are apparently departing as well. Nothing specific about Nardole, that I can find, but it’s generally being assumed that he’s also out.

If true, I won’t lose any sleep over Missy, but despite them not giving her much to do, Bill has been an interesting character. I’d be sorry to see her go before Pearl Mackie gets a chance to develop the character. Not my favorite companion (that would be Wilfred Mott), but she hasn’t really been given the chance.

I’m quite optimistic about incoming showrunner Chris Chibnall, though. The man responsible for the first two seasons of Torchwood and half a dozen Tennant/Smith episodes has a good grasp of the universe.

"Someday, you could just walk past a fez."


The DoctorNana Asakawa: “Never gonna happen.”

more...

The Cutest Little Sister In The World


No, wait, that’s the book Our Hero is writing in Eromanga-Sensei. The porn film series debut these photos come from is actually called “My Little Sister’s Lovely Boobs Keep Popping Out”.

Which, come to think of it, sounds exactly like a late-night anime title. Maybe it comes out next season.

Anyway, Miharu Usa demonstrates her qualifications for the lead role after the jump.

more...

Who could resist?


(via)

Dear Amazon,


Well, some of these might be more stimulating than the Godzilla movies you recommended for a previous “night in”

more...

Level 6, Challenge, Doctor Ex Machina


DanSora 6

Newsflash: Aiz displayed a new emotion. Okay, it’s a pout, but that’s more than she’d shown in the previous series. Surprisingly, leveling up only took 1/3 of the episode, leaving time for her to pet Bell, pout over his flight-or-flight instincts, then rescue him from prum treachery. And have Loki and her senior staff discuss The Plot.

Eromanga-sensei 7

In which Fierce Rival Muramasa displays all of the emotion that she lacks as Aiz Wallenstein. Seriously, Saori Ōnishi must feel like she’s coming back to life when she switches from recording the wooden princess to this role. On a related note, am I the only one wishing for more editor-san?

Advice for Our Hero: dude, accept the confessions and go for the Type One Tenchi solution.

Doctor Who 10.6

This episode felt a lot longer than the others. Maybe it’s because it wasn’t written by interns, and actually goes somewhere. Maybe because Moffat realized we all knew who was inside the box. Maybe because Nardole got an opportunity to do more than nag. The villain still feels derivative, but at least there was some variety in the sets.

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