supervegan! vegan food blog

a really old recipe manager
mealmaster running in dosbox

February 12, 2024

by dozens

Okay so this is a really fun little rabbit hole.

I have recently started reading and posting on usenet. Specifically on news.tildeverse.org. Which I think peers with the newsgroups from the original tilde, tilde.club. Well technically I’ve been reading and posting on cosmic.voyage, which peers with…

Look I don’t really know how usenet works. I know it’s decentralized, and all of these servers “peer” with each other. Which means posts are replicated across the servers. So however you happen access it, it’s all the same content.

Anyway none of that is actually important. Here’s all you need to know: there is basically a small web forum called tilde.food+drink that had a small amount of activity over the last few years. And then a flood of posts from a single user over the course of about a year. This individual posted well over a hundred recipes on their own. All in the same format. Here’s an example.

MMMMM----- Recipe via Meal-Master (tm) v8.06
 
      Title: Vegan Spanakopita
 Categories: Greek, Vegetarian
      Yield: 24 Tarts
 
      1 bn Parsley
      3 c  Spinach
      1    Red onion; diced
      1 cn Chick peas with aqua faba
      2 tb Cornstarch
      1 ts Baking soda
      3 tb Nutritional yeast
      1 ts Indian black salt
      1 ts Turmeric powder
           Vegan feta or firm tofu cut
           -into small cubes
      1 ts Nutmeg
      1 ts Black pepper
      1 pk Wonton wrappers
 
  Chop parsley and spinach and onion and add to food processor. Process
  until in small pieces.
  
  Add to a bowl with crumbled feta.
  
  Make chick pea eggs by blending 1 can of chick peas with aqua faba in
  food processor with cornstarch, turmeric, nutritional yeast, baking
  soda and black salt.
  
  Mix egg chick mixture with spinach and feta. Add nutmeg and black
  pepper to taste.
  
  Line muffin pans with 2 wonton wrappers. Spoon in veggie chick pea
  mixture.
  
  Bake at 350 degrees Fahrenheit for 12 to 15 minutes
  
  Recipe by Sarah C.
 
MMMMM

Eventually I became curious about this individual, and what exactly this Meal-Master thing is.

I found their gopher site on tilde.pink, which has a massively massive collection of Meal-Master recipes. (Over 70,000 of them!)

Meal-Master is an old piece of DOS software from the early to mid 1990s. (As best I can tell, its final version was released in 1996.) It was huge! There are still tens to hundreds of thousands of Meal Master recipes in various archives online. People loved this thing!

It is still available to download via archive.org. And as of version 8.06, it is officially “freeware” and able to be used freely and without registration.

Which means that after a quick install of DOSBox (which I already have because I enjoy playing a few choice classic games such as zzt, sundog, and king’s quest) you too can be collecting and organizing recipes and planning meals with cutting edge 1990s technology.

So obviously that’s what I’ve been doing.

The thumbnail for this post is of Meal Master running in DOSBox on my desktop.

The chickpea pasta recipe on this site is basically copy/pasted from a Meal Master recipe I wrote.

It’s a great little program. You can search your database by ingredient or tag or type. You can adjust the recipe to increase or decrease the yield. And you can export your recipes in that neat little plain text Meal-Master format.

Structured Data

Here’s a fun little side tangent. While I was reading I discovered that a lot of modern recipe websites include some structured data in the document head in the form of JSON-LD (which is JSON with Linked Data). And consequently, a lot of modern recipe software can import recipes directly from the web if you provide it with a URL for a document that has that kind of data.

See for yourself:

❯ curl https://www.bbc.co.uk/food/recipes/tofu_peanut_stir-fry_62729 \
  | pup 'script[type="application/ld+json"]' \
  | head -n -4 \
  | tail -n -1 \
  | jq
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  141k  100  141k    0     0  3099k      0 --:--:-- --:--:-- --:--:-- 3137k
{
  "@context": "https://schema.org",
  "@type": "Recipe",
  "aggregateRating": {
    "ratingCount": 29,
    "ratingValue": 4.758620689655173
  },
  "author": {
    "@type": "Person",
    "name": "Lucy Parker"
  },
  "cookTime": "PT10M",
  "description": "If you like lots of sauce in this vegan tofu stir-fry, you can double the ingredients and pour in as much as you prefer. It makes a delicious dressing or marinade for tofu if you have any left over.\r\n\r\nEach serving provides 784 kcal, 30g protein, 74g carbohydrate (of which 23g sugars), 39g fat (of which 7g saturates), 11g fibre and 4.3g salt.",
  "image": [
    "https://food-images.files.bbci.co.uk/food/recipes/tofu_peanut_stir-fry_62729_16x9.jpg"
  ],
  "keywords": "quick, speedy stir-fries, easy stir fries, easy vegan, festival, healthy stir-fries, iron rich, noodles for students, one-pan dinners, oodles of noodles, peanut butter favourites, perfect peanut butter, top tofu, vegan meals in 30 minutes, vegan protein, vegan valentine's day, vegetarian stir-fry, world in a store cupboard, easy family dinners, lunch, student food, stir-fry, tofu, noodles, peanut butter, dairy free, egg free, pregnancy friendly, vegan, vegetarian",
  "name": "Tofu peanut vegan stir-fry ",
  "nutrition": {
    "calories": "784kcal",
    "carbohydrateContent": "74g",
    "fatContent": "39g",
    "fiberContent": "11g",
    "proteinContent": "30g",
    "saturatedFatContent": "7g",
    "sugarContent": "23g"
  },
  "prepTime": "PT30M",
  "recipeCategory": "Main course",
  "recipeCuisine": "Chinese",
  "recipeIngredient": [
    "180g/6oz firm tofu, drained ",
    "1 tbsp sesame oil",
    "4 garlic cloves, crushed",
    "thumb-sized piece fresh root ginger, grated",
    "1 small red chilli, finely sliced ",
    "300g pack straight-to-wok medium noodles ",
    "1 red pepper, seeds removed and sliced lengthways",
    "1 yellow pepper, seeds removed and sliced lengthways",
    "4–5 Tenderstem broccoli stems (around 85g/3oz)",
    "5 spring onions, finely sliced",
    "1 large carrot, peeled into ribbons",
    "pinch salt ",
    "1 tsp sesame seeds, to garnish",
    "1 tbsp chopped peanuts, to garnish",
    "2 tbsp sesame oil",
    "3 tbsp tamari or soy sauce",
    "1 tbsp maple syrup",
    "1 tbsp freshly grated root ginger (or 1 tsp ground ginger)",
    "2 tbsp peanut butter (smooth or crunchy)"
  ],
  "recipeInstructions": [
    "Whisk all the sauce ingredients together in a large bowl with 100ml/3½fl oz water.",
    "Cube the tofu and cover in half of the sauce (setting the other half aside).",
    "Put a wok over a high heat, add the sesame oil and fry the tofu for about 5 minutes. Add the garlic, ginger and chilli and fry for a further 2 minutes.",
    "Add the peppers, broccoli and spring onions, reserving a handful to garnish, to the stir-fry and toss over a high heat for 3–4 minutes before adding the carrot ribbons. Add the noodles, pour in the remaining sauce and season with the salt. Stir-fry until the noodles are coated in the sauce and heated through.",
    "Serve the stir-fry with the reserved spring onions, sesame seeds and chopped peanuts to garnish."
  ],
  "recipeYield": "Serves 2",
  "suitableForDiet": [
    "http://schema.org/LowLactoseDiet",
    "http://schema.org/VeganDiet",
    "http://schema.org/VegetarianDiet"
  ]
}

Recipes are in fact such a great use case that the JSON-LD playground includes a ‘recipe’ example: https://json-ld.org/playground/

So it would be great if you could export this kind of structured data from MealMaster. But you can’t because in 1995 nobody could anticipate the magic of Web 2.0. And the MealMaster format is not super easy to parse. (See “Meal-Master format details” below.)

Conclusion

So that’s cool! I used MealMaster for a little while and thought it was pretty neat. Its design is a bit dated. Obviously. But it is still perfectly usable and perfectly capable!

What it mostly made me want, though, is to work on my own little recipe management system. And I have been! But that’s for a follow-up post. So stay tuned.