Filed under: Consumption, Food | Tags: au trou gascon, chocolatier, helene darroze, l'ourcine, macaron, meilleur ouvrier de france, patisserie, patrick roger, pierre herme, tarte aux framboises
So, a while ago Edward the Bonobo suggested that I should spend less time on politics, and more time on food, so this entry is devoted to the delights of eating in Paris.
Let’s start with my local cake shop (well, local to where I work, not where I live), La Boulange cinquieme. After trying most of the pâtisseries near where I work, this one won out for me, for their fantastic tarte aux framboises. If you happen to find yourself in the latin quarter of Paris (the 5th arondissement), I can recommend a visit (although there’s somewhere else you should go too – more on that below). You’ll find it near the southern end of rue Gay-Lussac (but watch it, it’s not open at the weekend). Here are a couple of pics of some the large cakes I bought for my dad’s birthday party, although I’m afraid the picture quality is not very good because they were taken on my phone, first the tarte aux framboises (they do little individual ones too):
And the Opéra (a sort of chocolatey coffee wafery affair):
I bought four cakes from this shop for my dad’s party, including a clafoutis (a sort of baked custard and fruit tart) and a tarte aux noix (walnut and caramel tart). I was actually quite lucky to get them, because normally for the large tarts you need to order in advance (something I didn’t know at the time). It was quite fun going into the shop and saying “Bonsoir, je voudrai quelques tartes entiers, s’il vous plait“, “Oui Monsieur, lesquelles?“, “Er… les toutes“, “Les toutes?!”, “Oui, les toutes“, “Tres bien Monsieur“. It’s not often you get to go into a shop and buy up their whole stock of something. And I’ve had very friendly service there ever since then. (Please excuse my almost certainly wrong French above.)
The other cake shop you should visit if you are south of the river in Paris is Pierre Hermé about half way up rue Bonaparte north of the Jardin du Luxembourg. The French take their pastry very seriously, and this is reflected in the fact that Hermé was awarded the Legion d’honneur in 2007. I went for his most famous cake, the Ispahan. The photo below is from his website because my camera phone photo doesn’t do it justice. I had the small, individual version of this tart, which consists of a rose macaron like biscuit, with raspberries, lychee and a rose petal cream. Wow! If you love cake and you don’t mind the expense (it was about €6-7 for an individual portion), it’s definitely worth the trip.
While I was there, I also couldn’t resist getting one of the famous macarons (a tiny little sandwich of two almond meringues with various different fillings). His flavours are very unusual. Normally you get things like raspberry, chocolate, coffee and so forth. I went for his olive oil and vanilla macaron and I can tell you it was amazing. I shall be back to try some of the others, although I’m not sure about the foie gras and chocolate one.
Next stop, chocolate. A friend advised me about a chocolatier called Patrick Roger which he claimed was the best in France. So, while I was doing christmas shopping, I thought I’d pop in and get some presents there. He wasn’t wrong, eating chocolate from this place is a seriously different experience to eating chocolate from anywhere else I’ve been been. Or in the words of my mum after she’d eaten some – what is the point of eating ordinary chocolate ever again after something like that?
While I was there, I noticed that the shop sign had something which seemed rather boastful. It said Meilleur Ouvrier de France (best [chocolate] maker in France). Well, it turns out that this is an award given every three years to the best places in various categories (food ones are the ones I’m interested in, but they also do many other things). So now I’m on the lookout for more MOF shops (the MOF website is unfortunately totally hopeless and can’t be used to find out where they are). I found the MOF fromagerie at the north end of the rue Monge near where I work, and bought some cheese there, but to be honest I’m not a huge fan of smelly, mouldy French cheese so this wasn’t such a revelatory experience as the chocolate.
Last but not least, restaurants. I haven’t had such good luck in restaurants in Paris as I had hoped, so nowhere stands out particularly. If you want an excellent and inexpensive place in the 13th arondissement (where I live), I can highly recommend l’Ourcine on rue Broca. They do a set three course meal for €30, which was fantastic both times I went. If you want something a bit posher than that, but you don’t want to go to the sky high trois étoiles places, you might like Au Trou Gascon in the 12th arondissement (just north of the river to the east). I had the five course dîner Gourmand which is very good value at €50, and consisted of:
- Gambas, royale de foie gras, émulsion de chataîgnes (prawns, foie gras mousse, chestnuts)
- Noix de St Jacques, endives fondantes (scallops with endives)
- Filet de biche, semoule de brocoli, fumet cacao (fillet of venison, some sort of brocoli thing, smoked in cocoa?)
- Faisselle pastorale, miel citronné, huile d’olive et pignons (faisselle is a soft white cheese, here served with honey, olive oil and pine kernels)
- Glace chocolat noir « minute » servie devant vous, éclats de marron, meringue vanillée (very dark chocolate ice cream with chestnuts and vanilla meringue)
Other than the cheese, which as I’ve said I’m not a big fan of, it was all delicious. I wouldn’t have minded a more interesting pudding that chocolate ice cream and meringue, but it was a good one.
OK, that’s all for now. Expect a report if I get round to visiting somewhere like the restaurant Hélène Darroze (the only Michelin three star restaurant in Paris run by a female chef). The lunch menu seems just about possible for a special occasion, at €70.
For many years, the ZNet website has been one of the best if not the best web site for the left. They’ve just finished a major upgrade to their site which could make it even better. The idea is to create a left wing community rather than just a site with lots of articles to read. Members can create their own blogs, join groups, discuss on the forums, etc. And many more things are coming. So, go check it out now! But, the upgrade has been a costly one, and ZNet needs more sustainers (people who make a periodic donation) to keep their operation running, and more importantly to expand it. So, take a look at the site, and if you like it take a look at this and think about joining.
Filed under: Frivolity, Games, Mathematics, Programming, python | Tags: Countdown, countdown numbers game, countdown numbers game solver
One of the things about being ill is that you have to spend a lot of time in bed with nothing much to do. Having watched the whole first series of the Sopranos, I had to find something else. So here’s the result. I revisited an old program I wrote many years ago to solve the Countdown numbers game.
In this game, you’re given six numbers between 1 and 100 and a target number between 100 and 999. You’re given 30 seconds to try to make the target using the six numbers and the operations plus, minus, times and divide.
I originally wrote a program to solve this many years ago (when I was about 14 I think), but the algorithm I used was pretty horrible. I worked out by hand all the possible arrangements of brackets you could have for six numbers, and then tried each operator and number in each appropriate slot. It worked, but it was ugly programming.
Recently I’ve been learning Python for an academic project, and so I thought I may as well try rewriting it in Python. I think the solution I’ve come up with is nicer than any of the solutions I’ve found on the internet (mostly written in Java or C), although having written it I found this paper which uses a very similar solution to mine (but in Haskell rather than Python).
Python programmers might get something from the minimal code below (all comments and docs stripped out), or you can take a look at the full source code here, including detailed comments and docs explaining the code and algorithm.
My ideal (as always with Python) was to write a program you could just look at and understand the source code without comments, but I don’t think I achieved that. I’d be interested if a more experienced Python programmer could do so. Let me know.
This version is incomplete, from the slower version, and is supposed to be understandable without explanations (takes about 40 seconds to find all solutions, too slow for Countdown):
def ValidExpressions(sources,operators=standard_operators,minimal_remaining_sources=0): for value, i in zip(sources,range(len(sources))): yield TerminalExpression(value=value, remaining_sources=sources[:i]+sources[i+1:]) if len(sources)>=2+minimal_remaining_sources: for lhs in ValidExpressions(sources,operators,minimal_remaining_sources+1): for rhs in ValidExpressions(lhs.remaining_sources, operators, minimal_remaining_sources): for f in operators: try: yield BranchedExpression(operator=f, lhs=lhs, rhs=rhs, remaining_sources=rhs.remaining_sources) except InvalidExpressionError: pass def TargetExpressions(target,sources,operators=standard_operators): for expression in ValidExpressions(sources,operators): if expression.value==target: yield expression
This version is actually complete, from the faster version which needs the comments to explain (takes about 15 seconds to run, good enough to win Countdown):
sub = lambda x,y: x-y def add(x,y): if x<=y: return x+y raise ValueError def mul(x,y): if x<=y or x==1 or y==1: return x*y raise ValueError def div(x,y): if not y or x%y or y==1: raise ValueError return x/y standard_ops = [ add, sub, mul, div ] def expressions(sources,ops=standard_ops,minremsources=0): for i in range(len(sources)): yield ([sources[i]],sources[:i]+sources[i+1:],sources[i]) if len(sources)>=2+minremsources: for e1, rs1, v1 in expressions(sources,ops,minremsources+1): for e2, rs2, v2 in expressions(rs1,ops,minremsources): for o in ops: try: yield ([o,e1,e2],rs2,o(v1,v2)) except ValueError: pass def findfirsttarget(target,sources,ops=standard_ops): for e,s,v in expressions(sources,ops): if v==target: return e return