Saturday, April 17, 2021

Proper Bechamel Sauce.

We keep an index book of recipes that we like, and rely on. It has several entries for Bechamel sauce, but only one of them can be the best.

There's one in "The DIY Cook", by Tim Hayward, and he's really, really good, and so is his sauce...

There's another, in Rick Stein's "Secret France", and do you know what? He's really good as well, and the photography in his recent books is at pure genius level...

There are several other recipes...

But my favourite recipe for Bechamel Sauce is in an oldie but goodie, "Mediterranean Cooking" by Hilaire Walden. Fans, you are in luck. It's still available, on Amazon, and it's really cheap. This is so good that I haven't bothered to see if Nigella does a good one. I bet she does, though...

So...

  • A pint of milk
  • 1⁄4 of an onion
  • A chopped up carrot
  • A fair bit of parsley
  • At least one bay leaf
  • 50g of unsalted butter
  • 25g of plain flour
  • 2 large eggs, beaten
  • Salt and pepper, if you like
Bung the milk in a pan, with the onion, carrot, parsley, and bay, bring it gently to a boil, cover it, and turn off the heat. Beat the eggs in a jug, or some container you prefer.

Let those sit for 15 minutes, while you do this in another pan. Melt the butter, stir in the flour, and let it cook for about a minute. A lot of cookery books tell you to cook it until it smells "biscuity". I've never detected that smell from butter and flour, but if you can, that's your guideline. I can't smell saffron, let alone biscuity, so I ignore that instruction, and stir it until it is smooth.

Next, strain the milk into it, and throw the stuff in the strainer away, unless you can think of some arcane use for it.

Simmer the mixture for about five minutes, then take it off the heat, stir it like fury, while pouring in the beaten eggs as slowly as you can, tip it on top of your already partly cooked moussaka, or whatever other dish you are improving, and finish cooking it...

Thursday, March 25, 2021

Sunday, March 21, 2021

A Foodie Book Review

 The thing is...

...when I started blogging, ooh, ages ago, it was going to be a food blog. And about computers. But suddenly, politics got a bit too intrusive in our lives, and I ended up writing quite a lot about the dreadful crooks who were messing up everything for everyone.

Don't panic! I am not going to stop lambasting the criminal gang who have hijacked our country, and dragged us unwillingly out of the EU. [Yes, I can justify that claim, and probably will quite soon.]

But... but there are a lot of really good food blogs, mostly about restaurants I couldn't afford to eat in, even if I wanted to eat their rather too fancy food. And how do you even begin to compete with Jay Rayner's restaurant reviews, especially the magnificent ones where he really dislikes both the restaurant and the food?

Loaf Story
A Love Letter to Bread
And then, he only went and started writing about cookery books, a while before I had come up with the idea, and doing it really well, the monster. However, there's this book that I chose as a birthday present for myself...

You know how some books are so good that you keep reading bits out to the significant other in the room? This book has so many bits like that, that the ordinary bits are hard to find.

It's by Tim Hayward, whose "Food DIY" was the inspiration for a lot of my early blog posts about things like home made charcuterie. It's a book with recipes, not a recipe book. 

You might think that a book based on bread, with sections on toast, sandwiches, and various bread-based concoctions would be a bit ordinary. I took this to bed, to read myself to sleep. Bad mistake. I was laughing my head off for hours, fascinated also by the interesting footnotes. Yes, this book has footnotes. The author reveals his opinions about many food items that people have firm opinions on, like Marmite, salad cream - has to be Heinz, but he tells you how to make your own, baked beans - must be Heinz, and not the low fat, sugar, salt version. I suppose the fact that I agree with him on all these things explains in part why I think this is a truly great book.

Thursday, March 04, 2021

Weird stuff in recipes, part 94.

 Weird.

"After boiling for six to six and a half minutes, she cools them under cold water, peels, then fries in a pan filled a third of the way up with 160C sunflower oil (if you don’t have a thermometer, drop in a cube of bread and it should turn golden in 25-30 seconds)."

No. If you don't have a thermometer, get a thermometer. They're not expensive. Standing there, timing cubes of bread until one turns "golden" in the right time is silly.


Saturday, February 27, 2021

Much improved Pi Assistant message reader.

The most important improvement is that this program now works... 😎 

I just leave it running on the Pi Assistant, along with the Google provided assistant_library_with_button_demo.py program that I like to use, when I want to ask the Google Assistant something...

#!/usr/bin/python3
#
# Program to run on PiAssistant, to watch for newly arrived text files in
# /home/pi/Messages that it should speak, and delete them once it has.
import os
import paramiko
import time

path = "/home/pi/Messages/"

while True:
    with os.scandir(path) as entries:
        for entry in entries:
            f = open(entry, "r")
            content = f.read()
            f.close()
            command = "python ~/AIY-projects-python/src/aiy/voice/tts.py \"" + \
                      content + "\" --lang en-GB --volume 10 --pitch 60 --speed 90"
            os.system(command)
            os.remove(path+entry.name)      
            # Now wait for tts.py to finish
            command = "ps -ef | grep -v grep | grep \"voice.tts\" | wc -l"
            while True:
                ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command(command)
                answer = str(ssh_stdout.read())
                if answer[2] == "0":
                break           
            time.sleep(0.5)
    time.sleep(0.5)

And here is a program to run on a cluster of Raspberry Pi computers, as say_who.py, which will each send a message to the Pi Assistant, from each core of the processor. The assistant will read them out, separately. It does seem still to lose some messages, and if I work out why, I will let you know! I have been searching for simple example programs for Raspberry Pi clusters on the internet for ages, and have not found very many. Here's my little gift...

#!/usr/bin/python3
from mpi4py import MPI
import os
import time
import subprocess as sp

# Attach to the cluster and find out who I am and what my rank is
comm = MPI.COMM_WORLD
my_rank = comm.Get_rank()
cluster_size = comm.Get_size()
my_host = os.popen('cat /etc/hostname').read().strip()
    
# Make something for the assistant to say
speech = "Host is  {} ".format(my_host)
speech = speech + "Rank {} ".format(my_rank)

# Make a unique filename and path
message = "/home/pi/" + my_host + str(my_rank)\
          + time.strftime("%H%M%S") + ".txt"
# Put the speech in the file
fp = open(message,"x")
fp.write(speech)
fp.close()

# Put a copy of the file on PiAssistant
cmd = "scp " + message + " pi@PiAssistant:/home/pi/Messages/"
sp.call(cmd,shell=True)
os.remove(message)

You would load that program on each of the Pi machines in your cluster, and then set it running using the command

mpiexec -n 16 -hostfile myhostfile python3 say_who.py

I'm assuming you have four Pi 3 machines in the cluster, hence the -n 16 parameter. 

#RaspberryPi #Cluster #Python