To Cambridge! Drizzle, Fishy Chats, and Horseshoes

Note: This entry has been restored from old archives.

I’ll attempt to make brief daily notes about our long, long, long weekend in Cambridge (and surrounds.) The alternative is to have grand designs on restaurant reviews, photographic mapping, and all sorts … which I ultimately never have time to complete.

We got up as if it were a work day this morning, out of bed at 06:00 and ready for the train by 07:00. A 07:15 from Rickmansworth got us to Kings Cross just before 08:00, just enough time to buy tickets from a machine and pop onto the 08:15 Cambridge express. We got a tiny bit lost in Kings Cross station and didn’t have time for a coffee, not even a quick-n-bad one, so I found myself arriving in Cambridge just after 09:00 and uncaffeinated. The trip was certainly speedy, 45 minutes all up and a good first exposure to train travel between London and Cambridge.

The first thing we realised on exiting the train was that it was damn cold, slightly damp, and windy. Typical English joy. Websites are predicting a minumum of -5 this weekend with possible snow. Spring! Anyway, we hopped onto a bus that took us to Cambridge Car and Van Rental on Newmarket Road, they’re directly opposite the National/Alamo car hire branch. (A vendor of cars that I’ll never use again since the branch in Watford ripped me off claiming I’d returned the car short on fuel even though they’d checked it in my presence when I dropped it off and ticked everything off. The branch claimed the charge wasn’t on their books, the head office said it was the branch’s responsibility, after several unfulfilled promises of action I gave up since the 20 quid wasn’t worth it. Abysmal customer service means they’ll never get any business from me again. Anyway…) We picked up our little red Mini Cooper D and hit the road for a 2 minute drive to a shopping-centre car-park to get our bearings. Then 5 minutes to dump the car at the hotel (too early for check-in) and a drizzly wander and bus ride into Cambridge centre.

In town we did my usual first-day thing and just wandered the streets, though the weather had us bouncing in and out of cafés (none good, mostly chains.) We browsed the permanent market found, sensibly, at Market Square. Wandered past the fronts of the main colleges and down a few narrow and intriguing alleys. Did a loop around the back of the colleges, crossing the Cam twice and spying a few rained-upon tourists taking punt-tours (I guess they’d taken a punt on the weather clearing a little … not their morning.)

After a couple of hours of this wandering and espresso-hopping we found ourselves at the Fitzwilliam Museum, a welcome refuge. The Fitzwilliam is, it seems, a museum worth either devoting either a whole day to (very tiring), or several visits. We only explored the Egyptian collection in detail before skimming over the more modern ancients and the ceramics collection. A couple of hours was enough to take in the Egyptian rooms in some detail and give Greece and Rome a reasonable treatment too. On the way out we took in a little of the porcelain, pottery, far east, and armoury collections and they’d be worth revisiting.

Now it was about 16:00 and we were both rather hungry! I was suggesting we grab something quick at a sandwich bar, but the Kat spied fish. The wander from the museum back to the main bus stops leads you past Loch Fyne, a purveyor of fishy delights (so you’re lead to believe, they’re actually one of a largish chain of seafood restaurants based around the Loch Fyne branding.) There are two sides to the Loch Fyne story, and I’ll start with the food – it wasn’t false marketing, they are rather good. While we didn’t try the “Probably the best Fish & Chips in Cambridge” we did go their Thai Mussel Pot, it was well done though a few of the shell dwellers were on the gritty side. We also had a second course each. Kat went for a Dressed Crab, this simple dish met with her approval – and it’s reassuring to know your crab isn’t rude. I had char-grilled lightly smoked salmon with a shellfish, mushroom, and whisky sauce (a creamy reduction), very rich and highly recommended. I must admit though that my meal was really a bit much for lunch (even at 16:30) and this was of some concern since I’d booked a table in a restaurant for 19:30! Oops!

The second side to the Loch Fyne story isn’t at all fishy. Shortly after we were seated an older gentleman was seated quite near us. He was eating alone and overheard us chatting about the food and gave us some suggestions, it seems he’s a regular and knew the menu well. Anyway, we got to talking and had a far ranging discussion over our meals, it was quite joyous. My life seriously lacks good discussions. It turns out the chap is an architect, both professionally and academically – he’s responsible for a lot of design around the University, especially music venues. He has his own firm (in partnership) and also teaches at Cambridge. He’s travelled a lot, seems to know a great many notable people (probably hard not to after a lifetime in Cambridge, and I suspect he has a titled, or at least highly moneyed, family background.) The discussion ranged from architecture, of course, to business, economics, politics, and sociology. Covering the near, Cambridge’s history and place in British politics and economics, to the far, far-east economics & sociology, and problems in Africa. This chance encounter alone has raised my interest in Cambridge phenomenally, and after less than a day in the city.

Our architect had a lot of advice to offer about Cambridge too, and brought the direct Cambridge to Liverpool Street Station rail link to my attention and the news that higher speed links are planned for it. This could bring living in (or nearer to) Cambridge into the realm of possibility, since Kat’s work (and the City in general) is a short walk from Liverpool Street Station. He also had a lot of advice on where to eat (by chance we’d wandered into one of the best as far as he was concerned), where to stay, what to see, and even where to buy a house (as if we could afford that!)

Eventually we had to move on, we said our goodbyes and best wishes then headed for the buses. First we caught the wrong bus and rode a full loop of its route, a little interesting but mostly a waste of time. We eventually got back to the hotel at around 19:00, checked in, then jumped in the car to head out for dinner.

Dinner was at a place nearby that was recommended by a friend: The Three Horseshoes in Madingly. It’s a small pub up the front and a restaurant out the back and is only about a 5 to 10 minute drive from central Cambridge. The recommendation was a good one, we enjoyed our dinner (as hard as it was to squeeze it in on top of lunch.) The hour grows late so I’ll have to rush this, though I think the place deserves a more detailed treatment. First I had a carpaccio of seared peppered tuna – quite brilliant. Kat had mozzarella, with asparagus and rocket – each component near perfect, though a very large amount of mozzarella for an “antipasti.” For a main I had char grilled veal liver on a warm legume salad – the liver was juicy and pink (and I verified in advance that it was British veal), very good but quite a large serve. Kat had Gnocchi alla Romana – these were quite unlike “normal” gnocchi and Kat seemed unimpressed, though that could mainly be down to their overzealous salting (crystals of sea salt on top, probably a bit too much really, and Kat likes salty food.) Since they make their own desserts we had to give something a go, and that was the pannacotta with prunes in grappa. Divine pannacotta! I’m a bit indifferent to the prunes. We ventured espresso, it was good but too long, the usual story – I suspect that these quite decent restaurants in England get good coffee and good machines but then go and make espresso as it is expected to be by the English (too long by far.)

All in all it’s been a good day.

CentOS 5.1 netinstall Woes

Note: This entry has been restored from old archives.

On attempting to install CentOS 5.1 using the “netinstall” ISO I had an annoying problem. Not long into the install process I was met with something like:

The file pam_krb5-2.2.14-1.i386.rpm cannot be opened.  This is due
to a missing file, a corrupt package or corrupt media.  Please
verify your installation source.

...

The options provided to either “Retry” or “Reboot” (default).

But I’m using netinstall, how can it be corrupt?! My netinstall source was UK Mirror Service which should be pretty reliable I’d expect. Anyway, I persisted in hitting “Retry” and eventually it seems it got pam_krb5-2.2.14-1.i386.rpm downloaded OK. Then a few seconds later I hit the same problem with rcs-5.7-30.1.i386.rpm, a few “Retry“s later the problem moves onto another package. This problem occurred for:

  • pam_krb5-2.2.14-1.i386.rpm
  • rcs-5.7-30.1.i386.rpm
  • libICE-1.0.1-2.1.i386.rpm
  • mintetty-1.07-5.2.2.i386.rpm
  • sqlite-3.3.6-2.i386.rpm

I have no idea why this happened.

The message is: If you get the above error trying to do a CentOS “netinstall” just keep hitting “Retry” (even if it repeatedly fails on the same package.)

Have Phorm?

Note: This entry has been restored from old archives.

“Have form?” That’s the phrase that popped into mind when I first saw the name of this new “Phorm” company that’s recently found itself on the uncomfortable side of Internet privacy debates. I don’t know if the phrase is all that common, but if you grew up watching The Bill you probably know what I’m taking about, I think it’s Pommie police slang. Anyway, back to Phorm, It turns out they do have “form” … they even changed their name over it, from “121Media.” Under their earlier moniker they distributed something called “PeopleOnPage” which was widely proclaimed to be “spyware” (though some, including Phorm, debate that it is really just “adware” – I’ve made no attempt to determine whether I think it is one or the other myself, though based on the removal instructions it seems somewhat benign at least.)

What’s the story now? It turns out that they dumped the so-called spyware in favour of moving the spying to ISPs. (They have an “ain’t we good” story about how they bravely dumped the adware business, risking the potential wrath of their shareholders.) What’s more they’ve already signed on all the major UK providers, and have even run live integration tests! This leaked out recently and has caused quite a stir, first with The Register and now it’s even hit the mainstream news (thanks somewhat to The Netfather, Berners-Lee, expressing concern about it.) Phorm are also chasing deals in the US (not that people in the US have any privacy left to loose) and I’m sure Australia will be on the list too (and then the world! Murwahahahaarrr!)

Phorm’s executive did a pretty open and revealing interview with The Register, and on the face of it the technology seems pretty “privacy safe.” But a) would you really believe it’ll be flawless? And b) what’s the guarantee it’ll stay that way? The idea is that keywords are extracted from the URLs you request (i.e. search string) and the response data, this is filtered to remove “sensitive” content (sure, I bet that is really reliable – though if you’re sending sensitive data over a non-HTTPS connection you get what you deserve.) These keywords are used to categorise the browsing session, then ad delivery is tuned for this categorisation. I’m unclear as to whether they’re going to inject ads into pages (ick!) or if the information will only be used to tune ads on pages that use Phorm as an ad source.

All in all it’s somewhat interesting, but ads are ads and my ad filter means I never see the things anyway. How about this “you are being watched” aspect then? Frankly, it surprises me that anyone would think they can expect much privacy in their online wanderings. Every page you visit has embedded ads from a small handful of providers, do you think they don’t track some sort of “profile” and can track your transitions between the pages of their vast number of clients? (Check your cookies sometime and note the likes of “adclick”, and probably even things like “sextracker”!) Note that this sort of cookie technique will make even something like tor fairly useless in hiding your online “profile.”

What’s most amusing is that Phorm claim is be creating a revolution in privacy? Golly, I wish I had the time to research further into exactly how they explain that one. “Doesn’t store any personally identifiable information,” we’ve heard that before and even when it’s said in good conscience it can turn out to be far more identifiable than expected (remember the AOL search queries release that gave enough information for reporter to track someone to their home?) They seem to claim to not store any information at all, which sounds hopeful and would be good … but it doesn’t seem like much of a revolution! I think they may have been better off being open about things but not going to far as to put on the mangle of Internet freedom fighters, this just makes them a juicy target.

Anyway, if you do want some privacy, with caveats that I don’t have time to go into, then:

  1. Use tor
  2. Disable cookies

It’s fun to see how much of the web doesn’t work without cookies though! Or you could make them “always ask”, and find out how annoying that is. It could be nice to disallow cookies for any site other than the one displayed in your URL-bar (i.e. disallow for iframes, popups too would make sense), I don’t know if there’s a browser plugin for this though (sounds like we might need one.)

Personally, I mostly gave up on the “ad tracking” privacy issue a long time ago. I don’t expect that noisy privacy advocates, or even legislation, will change things much. Much like many other online security issues it is the very nature and design of the Internet that makes these things possible; want to redesign the whole Internet? Anyone? (Yes, I know people are trying, etc.) When it comes to the legal enforcement of these things it always seems to break apart at international borders, little surprise there. Finally, the tighter control schemes that may have some effect get the privacy advocates screaming as well! I.e. moving monitoring, ads (i.e. Phorm), security, and similar measures to the ISP – net neutrality anyone? And why is some random ISP any more trustworthy than doubleclick anyway?

All that said, I do personally bounce all my web browsing through a foreign end-point (but I don’t bother with tor) and I use a cookie blacklist. (The bounce is mainly because proxying via a machine somewhere in Europe, using an SSH port-forward, is actually faster than direct browsing over my Talk Talk connection. Yes, it’s insane.) Ultimately, I don’t think there’s any privacy to be had or expected when it comes to the “web”, as sad as that seems. That said, you can and should expect that data sent to sites (via HTTPS) is kept safe and secure – when this expectation is broken, then is it worth raising all kinds of hell!

It’s a wild world out there on the ‘net … it allows the bad guys to do bad, but also allows the good guys to do good, and, really, this is the way I like it. Some are a kind of geek equivalent to cowboys and know how to look after themselves, everyone else? Easy targets… who we should try to protect and educate.

[For the record: Personally, I don’t like the Phorn idea and I’d prefer them to be shown the door and thoroughly booted out of ISPs. But, realistically, I don’t think this would improve (or degrade) anyone’s privacy. I’m not so keen on the “we own our browsing” history argument from the privacy advocates though. Everything seems to turn to ownership eventually, I suspect this is one of the great problems with the way humans see the world. Things, even the metaphysical, must belong to someone.]

Marketing Weekends

Note: This entry has been restored from old archives.

Weekend Angst

I get a bit upset when I have what I consider a “zero productivity” weekend. This is one of those weekends, so now I’ll try and band-aid the mental wound with these inadequate words.

On the topic of productivity, first in line to qualify is having written some code, something I spend some time doing on many weekends. Usually this ends up being something related to work, which doesn’t bother me at all. In a way it is my attempt to ease the feeling of “behindness” that almost all software developers seem to suffer from. (AFAIC if your work and your lifestyle don’t fit together “synergisticly” you’re probably in the wrong game.) Not having done any such work this weekend hurts more than usual since I ended up taking unscheduled leave on Friday, by the time I’d lost more than half the day to unforeseen complications there was little hope of rescuing it. I could, maybe I should, be doing something about that now, I’m already feeling bad about it.

Next most common, after work-code, is code related to an entry on this site. I usually have 3 “in development” entries sitting around waiting for some time, typically only 1 of these will see the light of day though as the time it takes to write such entries often wears out the original inspiration. That’s one of the problems of course, to really achieve something takes time. Technical writing more so than other things as it is in my nature to try and be as complete as possible, if there’s code I’ll have usually ensured it compiles and runs at every stage, if it’s more general I’ll get lost chasing things into every nook and cranny — but I’ll get things wrong despite all this.

A third sort of code is “random project” code, but I’m less good at getting into these as I just never have a long enough run of time available to really get stuck in and achieve something… there’s a whole list of Django playing I want/need to do. That’s the advantage of playing at a little technical writing, it may take hours … but it doesn’t usually take days. I’ve downloaded the Android SDK three times now and have all kinds of ideas bubbling around for that, but where’s the time?

After code and related technical writing on my “productivity check-list” is any other writing. These here words count, and it’s my last-ditch effort to have done something this weekend that I can consider productive. Admittedly it isn’t a very good effort, but it’ll have to do. It always strikes me as unusual that I do spend so much time writing (OK, typing) since transforming thoughts into words and those words into sentences really isn’t one of my skills. When it comes to writing I’m generally inadequate and slow (there goes more time!) At times it really pains me, maybe this is why I do it, a form of psychological masochism. People who write well garner my greatest respect, and there’s no guilty pleasure quite like reading their words. So here I am, aping their efforts, much like an orang-utan who’s grown up to think itself human.

The final things I consider properly productive are cooking, especially experimentally, and exploring. However both of these don’t really blossom into flowers of accomplishment until I’ve written about them. They can be considered guilty pleasures for which a certain atonement can be gained through the act of documentation. (Much like code in a certain respect: there’s a lot of fun to be had in the quick hacks that get things working but then comes the “cleanup”, which is rarely much fun.) When it comes to cooking the atonement will often take twice as long as the sin, this, I guess, is only proper.

I introduced this entry saying that this weekend has not been a productive one, in fact last weekend was rather abysmal as well. I did get the roast hare entry out at least, but I didn’t get much else done (my backlog is depressingly huge and may be in need of a purgative dose of rm.) I’m not at all comfortable with these “documentary of my life” types of entries, it is truly bloggy laden with all the derogatory connotations of pulp. But there you go I guess, now that I’ve offloaded this small chip of angst in far too many words I’ll continue with some true bloggishness. I’ll try to keep the rest short at least.

Last Weekend: Chicken, Markets, and Minis…

We kicked off our weekend by picking up a little free-range organic chicken from our favourite local butcher, Hamblings. Mr (or, maybe, Miss) Chicken went into the fridge and we wandered up to the only real farmers’ market that seems to happen in these parts. The market takes place at the Rose & Crown, Ricky’s best, but unfortunately distant (30 minute walk), pub. The market tends to be on the smaller side, but it’s better than nothing. As an added bonus the Rose serves good food and has good beer.

Market Produce
Market Produce

At the market we picked up a small selection of veggies to go with the dinner, some onions, beetroot, white carrots, and a swede. All but the latter were roasted, the beetroot first peeled, rubbed with olive oil, wrapped in foil and in the oven at 170°C for 90 minutes then left in while the chicken roasted – truly the best way to do a beetroot I believe. The swede turned out to be quite a revelation! Not something I’ve ever bought in fact, very foolish of me. Anyway, chopped it up and boiled it in loads of water (along with 3 little new potatoes I had lying around) to which I’d added a tablespoon of balsamic, a tablespoon of sugar, and a chicken stock cube. When the swede and potatoes were soft I passed them through the medium disc on the food mill. I stirred though a good knob of butter and half a tablespoon of balsamic. A most excellent substitute for dreary old mashed potato!

The chicken was rubbed down in plenty (100g) of butter that’d been mixed with loads of finely chopped lemon thyme and oregano. Blasted in a 210° oven for 20 minutes, wined (into the pan, not over the chicken), turned down to 180°C and left for a further 30 minutes, then rested in the open oven for another 20 minutes. Divine! One roast dinner, chicken for an omelette the next morning, more carcass pickings for a roll each later in the day, and the carcass into the freezer for a future stock. (Despite all this I still consider the weekend to be a failure for productivity, I’m insane? Probably.)

Roast Chicken
Roast Chicken

Most of the rest of the weekend was spent in a state of near-catatonic worry and stress over moving, transport, and the future. I don’t think I achieved much at all on any of these fronts, except maybe that I kind of like the convertible Mini Cooper model. We may give in an get a car you see, especially if we move somewhere less connected than Ricky (heh, that’d almost be difficult.) There’s so much difficulty in the whole car thing though, first of all: they cost so much; secondly: fuel, insurance, and maintenance mean they just keep on costing. One debate: to get an older and cheaper but less efficient car; or a new, expensive, and sub-100gm/km car (no Mini quite makes this grade though, but they’re close enough AFAIC.)

It’ll probably never happen, I’m just too adverse to spending money. Another of my insanities.

Almost forgot something. At the market we tried and enjoyed several delicacies from Fat Man Chilli and had a chat with the men themselves about growing chillies in the UK (versus Australia). We came away with a bottle of green chilli sauce (coriander, ginger) and a jar of chilli, apple, and calvaos jelly. We also picked up two bottles of scrumpy windfall-apple cider from Millwhites Cider, we later wished we’d picked up a few more bottles!

This Weekend: Real Ale, Bags, and These Very Words…

The current weekend breaks down to two significant occurrences. On Saturday we finally made our way to the Land of Liberty, Peace & Plenty. It is truly a sin that we haven’t been there before! It takes a little longer to get to than the Rose & Crown and is much closer to Chorleywood than Ricky so I’m calling it the area’s best pub (and the Rose & Crown can retain its title of “Ricky’s Best Pub”.) You don’t have to take my word for this though, they were a finalist for the CAMRA pub of the year, and are the Watford branch pub of the year (for the third year running.) Six real ales on tap, I managed to squeeze three in (including a very good stout that wasn’t on tap yet). Kat had just one, but that’s because she tried the Perry and a half of a cloudy Scrumpy (both very good.)

I want to write much more about this, but time runs short. It’s a great pub and goes on the “reasons to stay in this area” list that’s causing me much stress at the moment. We also planned to drop out to Wendover to visit their farmers market, but the 30 minute train ride, horrible weather, and £16 train fare were a total turn-off. A pity, since we could have grabbed some more of that cider there. There’s something wrong with the economics of paying that much to travel somewhere by train when it costs a fraction of that for someone with a car and in the end you’re probably going to come back with less than 16 quid’s worth of goods!

The second significant occurrence for this weekend was today’s trip into London. We popped along to Spitalfield market. This market really didn’t excite me much, the best thing about it I guess is that it runs on Sunday when most other things aren’t open. That said, we did achieve the goal that prompted us to make the trip: bags! Given my continual resistance to spending money I live with things beyond even the point that they fall apart, I’ll go ages without something once it has died. I’ve needed a decent satchel for a long while, I’ve been using a black enviro-bag with Supré branding for the last year (it’s a good thing the brand isn’t recognised here of I’d probably have been mobbed and beaten to death by skin heads (if you pay attention to UK news it appears that getting beaten to death by skinheads|gangs|chavs|whathaveyou isn’t uncommon here.)) Meanwhile Kat’s preferred bags have all fallen apart (and Kat has much the same problem I have when it comes to buying things.) Some catalyst was required to push us over our spending hang-ups.

The catalyst, most geeky, was BoingBoing. A short while ago they posted a link to Stabo because they were making some funky trousers made from old army tents. While the trousers were interesting I found the bags on their site more alluring, fairly rough but robust looking items. In the flesh the bags are as good as they looked, they certainly seem tough and have a rough sort of charm that appeals to me. So I now have a bag, it happens to fit my largish laptop quite well too. Stabo make these (and other goods) themselves, here in the UK (up in Cambridgeshire) and try to source materials sustainably and locally. Kat wasn’t as keen on the Stabo bags (a little heavy, and maybe a little too uncomplicated;) and the other stall with leather bags that interested us had unfortunately used rather smelly leather (cheap leather I assume, it smelt a little like a tannery – if you’ve never smelt a tannery be thankful.) Kat did find herself something she liked though, a roomy canvas job that seems quite sturdy.

Bags
Bags

Next Weekend: Life, the M25, and everything…

There’s a saying about Londoners, it’s: The Universe doesn’t end at the M25. The M25 is a motorway around the whole of greater London, it probably takes 2 hours to do the full ring (in the unlikely case that the traffic is flowing fairly well the whole way around.) We’re inside the M25, barely, and funnily enough when it comes to moving this bituminous border seems a force-field of almost impregnable strength.

I may be breaking the barrier down however. On and off I’ve been researching non-Ricky living alternatives, and my latest “find” is Stevenage. This is well outside the aforementioned edge-of-the-world but is, in a way, closer to London city than we are. The train from Stevenage to Kings Cross takes nearly 25 or 30 minutes, so Kat could probably get to work from there faster than she does at the moment (40 minutes to Kings Cross, then onward a few stations.)

What else has Stevenage got going got it? It’s on the Cambridge line, 45 minutes to Cambridge. Even though it’s overground rather than the tube the travel cost will only be a little more than getting from Ricky to the City. It has a pub that has won the CAMRA “North Herts pub of the year” award two years running, Our Mutual Friend (can’t find a website.) They have a farmers market, I don’t know if it is more often than monthly but monthly is the best we get here anyway. It looks like there’s a lot of green-space around the place.

There’s possible negatives too. Though the train trip is fast it doesn’t look like we’d be able to live anywhere near the station (it isn’t in a residential area.) It could be even more of a late-night-drunken-chav town than Ricky (possible?) While it all looks very green it doesn’t look particularly forested.

Too many questions, so we resolved to take a more direct approach. We’ll be spending next weekend (the whole long weekend) in Cambridge. To add to the “tasting things” aspect I’ve arranged to hire a Mini Cooper D(iesel) for the whole weekend too. So we’ll be exploring Stevenage, Cambridge, and surrounds for four (or more) days. It’ll be fun! Though I’ll be stressing the whole time about the lack of productivity, se la vie. It’d be nice if the weather wasn’t so horrible next weekend, but I expect it’ll suck.

I’ll be trying to relax a bit over the long weekend, but I expect it won’t help much. We’ve given our notice for May 5th, a date that’ll be upon us like a speeding Kenworth. That’s life for you though… incessantly being run down by semi-trailers.

(I’ve spent more than two hours writing these silly notes… I knew I’d feel bad about it in the end and I do. sigh)

Reflection

It is perhaps somewhat disingenuous to suggest I’ve had an idle weekend. We’ve been up around 09:00 both days, explored and enjoyed a highly rated local pub with excellent real ales, done our shopping, taken a trip into London, explored a previously unvisited market, bought ourselves entirely utilitarian goods, done a little cleaning, organised a “weekend break” in Cambridge, and I’ve read half a book of collected and annotated H.P. Lovecraft stories, and cooked three meals including 14 serves of cauliflower soup that’ll last us a couple of weeks. breath Still, I feel a deep sense of failure, in my mind the weekend has been one devoid of desirable achievement.

(Yet I continue to waste my time on these words! It’s a curious and nostalgic dilemma, the feeling is much like that of University-era procrastination — doing things other than the things we know we should be doing.)

Roast Saddle of Hare

Note: This entry has been restored from old archives.

Roast Saddle of Hare

Last weekend I covered the stock I made with the hare offcuts and forelegs, now I’ll get on with a description of the prime meal our hare gave us: Roast Saddle of Hare. This is the second recipe (in this case maybe production is a more accurate term) in my Harey Weekend series. I took a rather straightforward path with this one, marinating the saddle for a couple of hours in herby olive oil, barding with streaky bacon, and roasting it along with some garlic, onions and new potatoes. I also prepared steamed yeasty, herby dumplings, making up a recipe on the spot for them, and crispy parsnip chips.

As far as cooking times and general information goes, the books I consulted were the usual The River Cottage Meat Book, as well as The Game Cookbook. Both were a little light on roasting information unfortunately, my approach to roasting the beast was mainly informed by the Meat Book though I extended the time given by Hugh just a little (and I don’t think you’d want the hare any rarer than we had it.) I also took Hugh’s advice on board and didn’t marinate (“pickle”, he says) the meat in wine beforehand, choosing instead plenty of oil. The Game Cookbook, as usual for game, provides the better and most complete back-story on the history of eating, and mythology of, hares. While The Meat Book, I found, gave slightly better detail on working with the hare. Clarissa gives many more recipes than Hugh though, The Meat Book has only a single hare recipe: Jugged Hare. Which is the classic hare dish, there’s a version in both books and they’re very different. The instructions I have here are, I believe, sufficient for the roasting – so if you’re after a book that gives hare a more detailed coverage I’d recommend The Game Cookbook out of the two.

Hare, saddle in middle

As far as the timing goes the first thing I did was marinate the hare about two hours before roasting it and then prepared the dumpling dough. Next, 30 minutes before roasting the saddle, I put the potatoes into the hot (200°C) oven to pre-roast a little. Just prior to roasting I unwrapped and barded the saddle and stuck it into the oven, which was boosted to 220°C, and threw the onions and garlic in with the potatoes. Total hare roasting time was only about 25 minutes, though the vegetables stayed in the oven for a further 20 minutes after the hare was removed. The final 20 minutes was the busiest, hare out of the oven, dumplings into the steamer, parsnips chips shallow-fried in batches, juices reduced with added double cream for a sauce. Around 3 hours end-to-end but only the last hour was particularly busy.

A 600g hare saddle serves two well and could do three at a pinch, but would be stingy for four (get two saddles then.) We got enough meat out of this for dinner and, thanks to plenty of sides, had a little left over for a salad the next day. For a larger roast (to serve four comfortably) you could include the rear legs, which are very meaty. It’s said that they tend to be dry though and work better for a casserole, which is what I did.

Anyway, the first thing I did was…

Marinating the Saddle

Premarinade

The butcher had jointed the hare for me, as shown in earlier photos, but the saddle still had some rough ends and the full rib enclosure, as well as the liver (lucky us to have an understanding butcher!) I cleaned up each end of the saddle, trimming away any loose meat and taking the cleaver to the neck end to remove it at the first rib. I entirely trimmed off the flaps of belly and cut through the rib cage all the way down to the meaty back, I used poultry shears to do this. The saddle and ingredients to the marinade are shown to the right (the garlic and juniper berries are missing.) The liver is still attached in that photo, however I carefully removed it and put it aside (to be used in the next recipe in this series.)

Hare has a rather tough membrane under the skin on the back and I wasn’t sure if I should remove this or not. In the end I decided not to and since the hare turned out so well I’ll stick with this approach in future. It means that marinating the hare may not be so effective maybe, but maybe the membrane does a good job of keeping the meat so moist and succulent! What I did do was thoroughly clean off any traces of hair and blood under a trickle of water then pat the saddle dry with plenty of paper towels.

Marinade Herbs

The ingredients for the marination are:

1 ~600g
hare saddle
⅓ cup
50/50 light and extra-virgin olive oil
3 sprigs
lemon thyme (4 o’clock above, 10 to right)
3 sprigs
common thyme (7 0’clock above, 10 to right)
3 sprigs
oregano (12 o’clock above, 10 to right)
2
garlic cloves (2 o’clock to right)
6
juiper berries (6 o’clock to right)
1tsp ground
black pepper (centre of both photos)
Oily Hare

The preparation of herbs and spices is shown in the photo to the right, they were all fairly finely chopped. Then the herbs were added to the olive oil and ⅓ of the oil spread onto a sheet of plastic wrap big enough to thoroughly wrap up the saddle. The saddle was placed on this oil then another ⅓ was rubbed all over it before tipping the final ⅓ over the top and thoroughly wrapping it up. This was left to sit in a corner, after an hour I turned it over and at the same time made the dumpling dough…

Yvan’s Yeasty Herby Dumplings

Dough!

This dumpling recipe is something I just threw together, it’s pretty simple. All the dumpling recipes I could find in the books I have either used baking soda or no raising agent at all, I wasn’t so happy with this idea and decided to try a yeasty butter dough instead, it worked out well. This recipe made enough for two little dumplings each to go with the hare (but we left one each for the next day) plus two more each to go with the casserole I later made with the hind-legs.

I’ve pulled this recipe out as separate from the roasting to reduce the overall complexity of this entry. However the dumplings were prepared and cooked at the same time as the roast, see the timeline at the bottom of the entry.

5g
dry yeast
150g
plain flour
50g
unsalted butter (room temperature or it’ll be too hard)
20g
extra virgin olive oil
5 sprigs
lemon thyme
3 sprigs
oregano
1/2tsp
salt
1tsp
ground pepper
Dough is Risen

First, about 5 minutes in advance, put the yeast in a small ceramic dish and add about 30ml of lukewarm water. Once the yeast has turned frothy you can get on with making the dough. Into a separate dish place the flour, butter, and EVOO. Rub together with fingertips until well combined – the consistency should be crumbly and granular (“like breadcrumbs” the books usually say, it’s not a very accurate description I think.) Pull the leaves off the fresh herbs and chop finely, then add to the flour mixture. Also add the salt, pepper, and yeast liquid. Mix together well, with hands, until a soft dough is formed. I’ll cheat here and say the dough “should be like a soft shortcrust pastry dough”, and thus leave those who don’t make pastry mystified! It should almost be sticky, but not quite. It must be kneedable, since that’s what you’ll do next. Give it a 5 minute kneed on a smooth surface (since the dough is oily the surface shouldn’t need flouring or oiling.) If you do find it is too gooey carefully add more flour, alternately, if it seems too stiff add a little lukewarm water.

Ball up the dough and place into a bowl that’s a good three times the size of the dough-ball. Cover by placing inside a shopping bag and leave in a warm spot for an hour.

Into the Steamer

Just before you get on with preparing the hare (after putting the potatoes in the oven, see below) pull out the dough and give it a good kneed before breaking it into 8 evenly sized pieces and ball them up. To make the balls I pinch the dough into the bottom to avoid having creases on top, which would open up during cooking. These balls just sat up the back of my chopping board to puff up a little while I prepared the rest of the roast (you can see them sitting there in the parsnip photo below.)

As soon as the saddle was removed from the oven (below) I got four of the dumplings into a bamboo steamer over some simmering water in a wok. They steamed for 10 minutes and were then removed to a plate and plonked under an overhead grill to crisp up while I finished off the sauce and presented the rest of the meal for serving. Be careful here! I crisped them up a little too much, but they were fine. See the photo at the end of this entry, or the beginning. The four uncooked dumplings went into the fridge to be cooked another time.

The roasting, shallow-frying, and reducing

The main event, yet the least complicated! The roasting of the saddle is actually very quick to get the lovely rare and juicy end-product I was after, but the total roasting time was somewhat longer as required by the vegetables. The inputs to roasting (and sauce, and parsnip chips) were:

Ready for Roasting
8
new potatoes
4
small red onions
1 whole head
garlic
1 ~600g
marinated hare saddle
6 rashes
unsmoked streaky bacon
plenty
light olive oil for the vegetables
1 medium
parsnip (two are shown, but I only used one)
plenty
groundnut (peanut) oil for shallow-frying
250ml
rich hare stock (prepared earlier)
50ml
double cream

Roasting

Roasted Vegies

Pre-heat the oven to 200°C and get plenty of lightly salted water into a saucepan on the stove and bring it to a boil. Throw the potatoes into the boiling water for 5 minutes then drain and let dry in a colander. When the potatoes are dry (help them a little with a tea-towel maybe) place into an oven-proof dish into which they’ll fit fairly snugly with just enough room for the onions and garlic to be added later. Coat well with oil and let about 5mm of oil sit in the bottom of the bowl, grind over pepper and salt then into the oven for 30 minutes!

When the 30 minutes is up pull the sizzling potatoes out and toss in the oiled up onions and head of garlic, straight back into the oven with this lot and turn it up to 220°C.

Now remove the hare saddle from the plastic wrap and place back-upwards in a roasting pan. Bard it with the streaky bacon, a typical rasher will be the perfect length to place lengthwise down the saddle (photo lower-right.) I plated each strip over the other working from the bottom up, then wrung all the excess oil out of the plastic wrap over the top of this.

Hare Barded

The saddle now goes into the 220° oven to sizzle, but a mere 10 minutes later you pour the stock into the pan (not over the saddle) and turn the dial down to 160°C. A further 15 minutes and the saddle is done! This will give you rather pink meat as shown in the photo at the end of this entry, if you want it less pink go another 10 minutes (bit I think it’d be a shame.) Pull the saddle out of the oven and put out of the way in a corner while you finish off everything else. Leave the oven on with the vegetables in it, until either you’re ready to serve or you have to displace them to brown the tops of your dumplings. While the saddle was roasting you were simultaneously sorting out those parsnip chips…

Shallow-Frying

Chipping Parsnip

The best way to make the chips shown is to use a mandoline to slice the parsnip really, around 1mm, thin (I have a cheap Benriner mandoline that I’m happy with so far, there’s many to choose from though.) You could also do this with a nice sharp knife, but it’s hard going! Yet another approach is to use a peeler to make long chips by peeling through the parsnip down its length, this is the way I remember my mum doing it and it can result in quite attractive curly/twisty chips!

To do the shallow-frying put plenty of oil (at least 2cm deep) into a small frypan or saucepan. Heat this oil up until the point where a bit of parsnip dipped into it will bubble vigorously. Shallow-fry the parsnip in batches so that the pieces only overlap a little at most, it took three batches for me to do one parsnip in a 19cm pan.

Fry them until they start to turn golden around the edges then carefully flip them all over. When they’re golden all over remove them from the oil and place on some paper towels to de-oil, when they’re all done sprinkle with a little salt. I recommend using chopsticks to flip and remove the chips – make sure they’re not varnished ones though! Be very careful with very hot oil, one small safety measure I employ is to always make sure I use one of the rear burners on the stove for heating oil.

Reducing

Thickening Up

We’re almost done. The vegetables are probably out of the oven now, the dumplings under the grill, the chips sitting on paper towels, and the saddle resting in a corner.

All we need now is a sauce, this is an easy one! Pour the juices from the roasting dish through a sieve into a small saucepan and add the double cream. Get this bubbling away vigorously and reduce until it has the consistency of thickened cream. That’s it, easy like I said. Pour into a dish with a spoon, or a small pouring jug, for serving.

It All Comes Together

Carving the Saddle

It’s really been a crazy marathon up to this point, at peak I had three different things going on at once (roasting hare & veggies, steaming dumplings, and shallow-frying parsnip chips.) Things are coming together nicely now, the hare saddle will have been out of the oven for about 20 minutes but still be warm and ready for carving.

The first thing I did was cut off about 3 inches at the narrow end of the saddle, including the barding bacon. This I put aside to be used the next day. Then I lifted the strips of bacon off the remaining bulk of the saddle and laid them down on the serving plates (which had been in the oven to warm for a short while.) Now take a nice sharp knife and carve good 3 to 5mm thick slices off the back of the saddle, you may wish to peel off the membrane first but I didn’t bother (it should come away easily if you choose to remove it.) You’ll get 4 or 5 nice slices off each side. I laid these out over the bacon, this can kind of be seen in the photo to the right if you look at the larger version.

Ready to Serve

When you’ve carved strips off each side down to the bones, flip the saddle over and carve out the two inner fillets. These inner strips of meat are equivalent the fillet-steak of beef, they really were the most delicious little morsels of hare meat too. Lay out each little fillet over the top of the slices of meat on the serving plate (the strip laid at 90° to the rest of the meat in the adjacent photo.)

Now add an onion, a couple of potatoes, a dumpling or two, half a head of garlic, and a handful of parsnip chips. You can drizzle some sauce over the lot, or leave this to be done at the table.

Serve!

This hare was probably the best bit of meat I’ve eaten in my life, it was that good. I’ve already praised its virtues though, so I won’t go on any further. The dumplings were interesting and turned out quite well, rather light, rather buttery and certainly yeasty. They retained the lemony flavour of the thyme and did their job well: sauce mops.

We enjoyed our harey roast with a good organic dry scrumpy cider and this teamed up well with the flavour of the meat and overall richness of the meal. If it was to be wine I’d probably go for a lighter red, maybe a pinot noir.

Ready to serve

Tail of the Hare

Leftovers

Along with the excess 3 inches of saddle we had 4 potatoes, 2 onions, 2 dumplings, and about 2 tbsp of sauce left over for another time. Most of this went into the harey salad I prepared for lunch the following day, which is a recipe for another time (next in my harey series.) The leftover dumplings actually got sliced up and pan-toasted with eggs for breakfast the next day, so didn’t make it to the salad. The four uncooked dumplings sat wrapped in plastic in the fridge alongside the hare hind legs until used in the final recipe in the series, a harey casserole.

I picked at the filleted bones and nibbled off any larger chunks of meat, I couldn’t help myself. Then the bones went into a freezer bag and joined some other leftovers on the “stock shelf” in the freezer.

As usual there’s a full album of photos for this recipe including many I couldn’t reasonably fit alongside the words.

Finally, here’s a rough timetable to give an idea of how all the above fits together. It isn’t exactly the timing I followed but it’s a close enough blueprint (I actually made the dough way too early, but that’s completely unnecessary.)

18:00
marinate hare
19:00
flip hare and make dumpling dough
19:30
potatoes into the 200°C oven
19:35
kneed dumpling dough and make individual dumplings
20:00
onions & garlic & hare into the 220°C oven, slice the parsnip
20:10
pour stock into hare and reduce temperature to 160°C
20:15
start shallow-frying the parsnip, get water steaming in wok
20:25
remove hare from oven, start steaming dumplings
20:35
move steamed dumplings to grill, remove vegies from oven
20:40
start reducing pan juices mixed with double cream
20:45
slice hare, present everything on plates, serve!

Word Safari

Note: This entry has been restored from old archives.

I’ve been using O’Reilly’s Safari a bit lately, thanks to ACM getting into bed with them and offering something like 600 titles as part of ACM membership. This alone makes the membership worthwhile AFAIC, it’s an excellent benefit. Of course, it is only as good as the books you have access to and I wondered if the selection would be any good. It turns out that the list of available books is actually not all that bad (not excellent, but you have to expect that – pay a bit more to access the full array of titles.)

Safari its self turns out to be quite friendly to use too. The books are presented in sensibly broken up sections (as opposed to “printed page” based) and in plain text using a fairly simple layout. A contents tree and current location sits unobtrusively on the left. And you can add notes and bookmarks, which is very useful but could do with a little web-twopointohey ajaxy goodness (link->form->post->return is so passé). It’s much better than all the crap I’ve seen done in putting magazines online (i.e. IEEE Spectrum, ACM Queue.) Books are a different concept I guess, but not that different maybe the crap magazine efforts stem from a resistance to making redundant all those poor souls who manage print layouts?

Anyway, I’ve resisted trying the Safari thing given that I prefer a good old paper book when I’m not in front of the PC. Thanks to ACM I’ve been able to give it a spin and, while it’s not going to replace print tech books in my life, there’s definitely a place for it in my reading habits.

Now if only Safari Books Online had an Offline mode… and I had a nice gadget for offline reading. Amazon’s Kindle doesn’t seem so crash hot to me, the high end HTC Advantage “phone” might do, but what I’d really like to see is an ASUS Eee in a tablet form (and had longer battery life.) That said, the whole offline thing isn’t going to matter all that much soon, well, now even.

The Problem with Rickmansworth

Note: This entry has been restored from old archives.

It isn’t something I’d ever expect myself to say about a place, but the problem with Rickmansworth is that it is too quiet. OK, so that isn’t really the right way to put it though. It is rather noisy, as far as noise of retards in cars and drunken idiots go. I mean, I guess, culturally quiet. Is that the right word now? It’s really a question of the wrong sort of culture. It’s 18:30 on a Sunday and we’ve had a pretty damn tiring weekend of cleaning, what I want to do right now is relax in a café with an espresso, even a bodgey chain café. But the chain café here closes at 18:00 on a Sunday and that’s that, no espresso for me. Getting an espresso machine and making my own at home isn’t a solution either, I want to head out and sit down somewhere.

Back in Sydney we’d wander up the road to New Orleans at just about any time of day, any day of the week. In the CBD you’d have your choice of bodgey chains but even a few OK places (like Jet in QVB) to serve you a coffee later in the evening. City Extra doesn’t do great coffee, but I could sit there at midnight and sip their non-great coffee (not that I did that very often.) Though I don’t really recall how much this applies on Sundays, which weren’t exactly brilliant even in Sydney.

So, with a definite move coming up we have to ask ourselves the question: to stay in Ricky or to move away? The problem with staying is that it lacks the sort of living conveniences we’d prefer, like late night café, a good deli, a bit of cultural diversity in shopping (just one asian/oriental shop would be fine, sure Waitrose has various “foreign” sections but it just isn’t the same.)

The problem with moving away is that after 2 years we’re finally settling into the place. There’s a lot of open countryside and great woods for walking and we now know them quite well. We know the best pubs in the area, though unfortunately they’re more than a 30 minute walk away. We know a good butcher, though he’s shutting down in a few months. We have a pretty good coffee place to go to, though the hours really aren’t great. We have at least one friend out here too, and we really have very few friends here in the UK. We’ve also started getting along to the quaint little Watford-LUG meetings and it’d be a pity to suddenly pull out of that.

This evening we wandered out only to remember, on getting there, that the shitty coffee place closes at 18:00. So we took a wander down High Street and came to the junction with Church Street, Kat said something like “a crossroad, which way shall we go”… Yep, it’s another of those little crossroads in life. Where will we live for the next one, two, or more years?

Staying in Ricky is going to be the easiest thing to do, and given a good place on the ground with a backyard it is certainly going to be better than the last two years (which have been pretty good.) I’m sure I’ll be very happy with such a move. We could also move to a nearby area, such as Croxley Green or Chorleywood. But they’re both quieter, have far less shops (we’d probably cycle into Ricky for shopping if we moved to either of them), and make the already long train ride into London even longer (only 5 minutes though.)

Another option that is still in the area is Watford, but almost everyone we’ve ever asked about Watford says it is a shithole. That’s not really doing a great job to sell the idea of moving there to us. In the end I expect it’d mostly be much the same but bigger. Bigger isn’t any use if you still can’t get coffee at 18:00 on a Sunday evening. It is a culture thing, if the local coffee place was open at 19:00 on a Sunday we’d be the only people there. Poms spend their evenings in pubs drinking too much beer.

I think the sort of thing we’re looking for would be found closer in to central London. It’d require some research to be sure though, and as you get closer in the chances of being able to afford the rent on a place with a back yard diminishes pretty quickly.

We can’t have everything though, I guess.

Someone suggested to me recently that it’d be really easy to move to the US. I don’t really know if that’s true, but they were in a much better position to know than me. Even if it was simple in the paperwork sense it wouldn’t be simple in any other sense, one such move per decade is enough for me. We’ve got at least another eight years to go with the UK.

Bad pimpl vs. const, beware!

Note: This entry has been restored from old archives.

Here’s an interesting little bug that good old pimpl can easily lead you to, with nary a whistle from the compiler. It actually all boils down to being damn lazy and not doing pimpl properly, but I’ll get to that later. First, let me introduce some lazy
code:

///////////////////////////////////////////////////////////////////////////////
// LazyThing.h
#include <boost/shared_ptr.hpp>
#include <string>

class LazyThing {
public:
    LazyThing();
    void setThing(const std::string & thing, bool value);
    bool getThing(const std::string & thing) const;
    unsigned thingCount() const;
private:
    class LazyThingImpl;
    // here's our pimpl
    boost::shared_ptr<LazyThingImpl> m_impl;
};

///////////////////////////////////////////////////////////////////////////////
// LazyThing.cpp
// #include <LazyThing.h>
#include <map>

// Declare the impl
class LazyThing::LazyThingImpl {
public:
    std::map<std::string,bool> m_thingMap;
};

// Define LazyThing
LazyThing::LazyThing() : m_impl(new LazyThingImpl()) {}

void LazyThing::setThing(const std::string & thing, bool value) {
    m_impl->m_thingMap[thing] = value;
}

bool LazyThing::getThing(const std::string & thing) const {
    return m_impl->m_thingMap[thing];
}

unsigned LazyThing::thingCount() const {
    return m_impl->m_thingMap.size();
}

///////////////////////////////////////////////////////////////////////////////
// main.cpp
// #include <LazyThing.h>
#include <iostream>

int main() {
    LazyThing t;
    t.setThing("foo", false);
    t.setThing("bar", true);
    std::cout << t.thingCount() << std::endl;
    std::cout << (t.getThing("foo") ? "true" : "false") << std::endl;
    std::cout << (t.getThing("bar") ? "true" : "false") << std::endl;
    std::cout << (t.getThing("baz") ? "true" : "false") << std::endl;
    std::cout << t.thingCount() << std::endl;
    return 0;
}

Both g++ and icc will compile this code with no errors or warnings (ignoring some spurious unrelated ones from icc when -Wall is set.) When we run the resultant binary we see this:

2
false
true
false
3

Fair enough? Well no, the code has a bug. Though you don’t know for sure since I haven’t given a specification for getThing, let it be this: returns the value set for thing; returns false if thing has not been set. So, that final 3 is a bit disturbing. Hey, isn’t getThing supposed to be const?! What’s the root of this? If you’ve much experience with C++/STL then you’ll know that operator[] is a non-const member that inserts a default-constructed element into the std::map if no element previously exists. You’ll know this either from properly reading the documentation, or from having this sort of situation bite you in the arse before (prompting you to properly read the documentation;) Quite simply, the code should not be using operator[] in getThing, that is completely retarded. But, you say, if it is non-const then why did the compiler let us call it?! The understanding is that a const method is not permitted to make non-const calls on data members. Right? Alas, this breaks down with pointers!

If we take the above code and remove the pimpl, embed the std::map into LazyThing, and then try to implement getThing with return m_map[thing] the code won’t compile. As we’d hope! If we take the above and change the boost::shared_ptr pimpl container to a plain LazyThingImpl* then the code will compile and exhibit the disturbing behaviour above. (In other words: don’t blame the shared_ptr.)

So, what gives? Compiler getting lost or does the C++ standard let this happen? In fact, the behaviour here is logically correct, even though it feels wrong. If we refer to 9.3.2 of the spec, namely “the this pointer“, and look at paragraph 2 we see what seems to be the extent of the power of applying const to a member function.

const member function, the object for which the function is called is
accessed through a const access path; therefore, a const member function
shall not modify the object and its non-static data members.

So a const member can’t modify non-static data members, if the std::map is a member then operator[] clearly modifies it, verboten! If a LazyThingImpl* is a member then calling a non-const method on the object the pointer points to clearly does not modify the pointer. Sure, it modifies the destination instance but I think that is beside the point… that instance is not the member in question, the pointer is. (And yeah, you can modify static “members” in const member functions too.)

So, we knew all this already right? In general it isn’t new to me, I’ve hit the const calling non-const on pointer “problem” before. However the pattern in the code above is simplified (a lot) from something I wrote last week, I committed this crime. At the root of the crime is a sin: laziness. Thus the name of the class! You see, you’re not really supposed to implement pimpl as “pointer to data struct”, as named the pattern is “pointer to implementation” and we can avoid the whole problem above, the foolish mistake of using operator[], by doing pimpl the right way.

Brace yourself for another code dump!

///////////////////////////////////////////////////////////////////////////////
// Thing.h
#include <boost/shared_ptr.hpp>
#include <string>

class Thing {
public:
    Thing();
    void setThing(const std::string & thing, bool value);
    bool getThing(const std::string & thing) const;
    unsigned thingCount() const;
private:
    class ThingImpl;
    boost::shared_ptr<ThingImpl> m_impl;
};  

///////////////////////////////////////////////////////////////////////////////
// Thing.cpp
// #include <Thing.h>
#include <map>

// Declare the impl - mirroring the Thing public interface!
class Thing::ThingImpl {
public:
    void setThing(const std::string & thing, bool value);
    bool getThing(const std::string & thing) const;
    unsigned thingCount() const;
private:
    std::map<std::string,bool> m_thingMap;
};

// Define ThingImpl methods
void Thing::ThingImpl::setThing(const std::string & thing, bool value) {
    m_thingMap[thing] = value;
}

bool Thing::ThingImpl::getThing(const std::string & thing) const {
    std::map<std::string,bool>::const_iterator res = m_thingMap.find(thing);
    if (res == m_thingMap.end()) {
        return false;
    }
    return res->second;
}

unsigned Thing::ThingImpl::thingCount() const {
    return m_thingMap.size();
}

// Define Thing methods
Thing::Thing() : m_impl(new ThingImpl()) {}
    
void Thing::setThing(const std::string & thing, bool value) {
    m_impl->setThing(thing, value);
}   
    
bool Thing::getThing(const std::string & thing) const { 
    return m_impl->getThing(thing);
}   

unsigned Thing::thingCount() const {
    return m_impl->thingCount();
}

I’ve left out main this time, aside from the altered class name it is identical to the previous main. So, the difference is that Thing is now no more than a proxy, every call to Thing just makes the same call to m_impl. It’s important that it is the same call too, otherwise you might get yourself lost. The public interface to ThingImpl should mirror that of Thing including constness! If you made ThingImpl‘s getThing non-const you’d still be permitted to make the operator[] mistake. As the code is above, if you tried using operator[] on m_map in Thing::ThingImpl::getThing the compiler would tell you to get buggered:

:; g++ -Wall -Wextra -pedantic Thing.cpp -o Thing
Thing.cpp: In member function 'bool Thing::ThingImpl::getThing(const std::string
&) const':
Thing.cpp:38: error: no match for 'operator[]' in '((const Thing::ThingImpl*)thi
s)->Thing::ThingImpl::m_thingMap[thing]'
/usr/include/c++/4.1.3/bits/stl_map.h:340: note: candidates are: _Tp& std::map<_
Key, _Tp, _Compare, _Alloc>::operator[](const _Key&) [with _Key = std::basic_str
ing<char, std::char_traits<char>, std::allocator<char> >, _Tp = bool, _Compare =
 std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> 
> >, _Alloc = std::allocator<std::pair<const std::basic_string<char, std::char_t
raits<char>, std::allocator<char> >, bool> >] <near match>

Love those g++ template messages! This is what I like to see though, the compiler letting me know when I’ve done something stupid. So, remember:

pimpl is “pointer to implementation

This goes far beyond this silly example using std::map::operator[]. If you only move data members to your impl and access them all via the pimpl from logic in the interface class then you’ve entirely lost the enforcement of const. You could modify a std::string, increment an int, or whathaveyou. Know better, mirror the interface in the impl and make the data members private.

(A quick Google shows up a few pimpl examples out there on the web that do what I’ve called “pointer to data struct.” Then again, I don’t have 100% confidence that my interpretation of “implementation” is that of the originator(s) of the concept anyway – protecting the const enforcement as strongly as possible seems wise to me though.)

Harey Stock

Note: This entry has been restored from old archives.

Preamble, hare rama hare rama

This is my first harey recipe, and covers the making of a stock that’ll be used in two other harey recipes. It’s a pretty straightforward thing to do and a logical starting point. Unfortunately we’re busy cleaning the apartment this weekend as estate agents will be in on Monday to do an assessment and take photos… thus I may not get any other recipes out until next weekend. (We’ve decided that it is time to move into something that isn’t an apartment, and the owner has decided that it’s time to sell.)

Anyway, everyone should know how to make a stock and if you don’t you should learn! It really is rather trivial. These days you can get pretty good stock from the supermarket, and I mean the stuff in the fridge not the dreaded cubes (which I do use from time to time and I always have a few kicking around in the cupboard.) However, I do think you can make a better stock. It’s not just about better though, it’s about making optimal use of your food. Bones the butcher would otherwise throw out (these days), leftover roast chicken, whatever’s about really. Making stock is a skill worth learning and it’ll serve you well in the dark days ahead.

Of course this isn’t going to be a very typical stock, but you can look at the recipe below as a template. For example, you could replace the hare parts with a broken up roast chicken carcass and some chicken wings (from some good free-range birds!) The stock described here comes out pretty strong and quite gamey… good for recipes involving the rest of the hare but probably not much good for other cooking.

Input

Ingredients

I’m going to be a bit rough with the ingredients list here, precision isn’t necessary. The photo on the right really gives all the information you need, I could probably leave the list below out! Please use happy vegetables for happy flavours… save the bendy carrots for some chooks, local horses, or something. (And don’t buy so many that you let them get into that state next time… happens to me all the time, not having much livestock nearby I eat them raw before they can get too bad.) The ingredients can be multiplied by as many times as you’d like to make more stock, it’s great for freezing (and you can reduce it first to use less freezer space.) I don’t recommend trying to make it in a lesser quantity though, this is as small as I’d go for making a stock.

550g
hare forelegs and offcuts
drizzle
light olive oil
3 medium
carrots
2 medium
onions
3 sticks
celery
3
fresh bayleaves
6 sprigs
fresh thyme
handful
fresh parsley

Algorithm

Browned Hare Bits

First, preheat your oven to 220C. Ensure hare bits are clean, pat dry if wet, and toss with some oil in a bowl. Spread the bits around a baking tray and place in the hot oven for a 15 minute sizzle. Meanwhile peel the carrots (or don’t if they look pretty good) and chop them into about 3 or 4 pieces. Then quarter the onions, and cut the celery into 2 inch lengths.

Ready for simmer'n

After the hare bits have sizzled for 15 minutes remove from the oven and place the hare and all juices and scrapings from the pan into a smaller sized stock pot (22cm in my case.) Throw in the herbs and then pack in the vegetables, pack everything down as tightly as you can. The idea is that you want as little liquid as possible. Flush any remaining bits and oil from the hare roasting pan into the stock pot with about 500ml of water. Then top up the with just enough water to barely cover the content (note that the veggies may float a little, be careful not to add too much water.) In the end I added about 1.5l (photo left.)

Urgh, the strain!

Bring the pot to a gentle simmer, then place it on the smallest flame your stove can do. If, even then, it simmers any more than lethargically you might want to, assuming you have a gas stove, get yourself a simmer mat/ring for future simmering occasions (a fallback option, if you use an oven-proof pot, is to put it in a 120C oven after getting it to simmering point on the stove.) Now you can just leave it alone for about 3 hours, though you might want to give it a good stir every hour or so (I did, but it probably doesn’t matter.)

When the simmering time is up take the pot off the heat and give it a good 30-minutes to full-hour to cool down. When cool enough to handle strain the stock through a large-hole sieve or colander. Give it a good pressing to get out as much fluid as you can without pressing mashed vegetable through the holes in your strainer. Now strain back into the rinsed stock pot through a fine sieve (if you’re after a clearer stock you could do another step straining through wetted muslin, more about that some other time maybe.) Put the strained stock back onto the stove and re-heat/reduce as required for your purposes. I got about 1 litre of stock out of this which I then reduced down to 500ml of fairly rich stock. Alternatively, refrigerate or freeze the stock for some future cooking endeavour!

ACM Queue on Virtualisation (bonus: me on spelling)

Note: This entry has been restored from old archives.

Or should that be virtualization. I’m sick of dealing with two slightly different dialects of English, we zhould remove the letter ezz from the alphabet or zomething. The problem is that back in those oh-so-formative years of primary school it was hammered into us that spelling errors are a crime against all things good and decent. Hammered in with a bloody pile-driver. People who didn’t “get it” in the spelling department, I being one of them, were labelled as stupid slow-learners and punished. This is despite getting into “talented” class streams (via some weird abstract test) and being a voracious reader of “very large books” — doesn’t matter, if you can’t spell you’re clearly a moron. (Do I hold a grudge against the Western Australian public Primary School curriculum, nah, despite life becoming incredibly better after I moved to a private school for my final year of primary school, never…)

The point is: not being able to spell is a crime and a word spelt incorrectly is an abomination. This facet of education is, I suspect, the reason so many people seem so ridiculously patriotic about their funny little localisations of English. My guess is that the root of the problem is a deep and abject fear of our primary school teachers, fascist dictators over years of our lives, who would mock and ridicule us if we forgot our i before e except after c (except the exceptions.)

So, what are we to do in a world where there are two correct ways to spell many words? Where, for business reasons, spelling something the wrong correct way (the uncomfortable way) is often required. A lot of people, such as the audience for that report you’re writing, suffer the same mental disability when it comes to uncomfortable foreign spelling. Grin and bear it I say, try to put the childhood monsters of “incorrect” spelling behind you. For any given document decide which is the best way to go and, first and foremost, strive for consistency.

OK… that was an unintentional rant-cum-ponderance. What I was meaning to write was that the Jan/Feb ACM Queue landed in my mailbox the other day and I’ve been reading it over my morning coffee this week. It provides a pragmatic, low-hype, introduction to virtualization. Starting with an essential history and “what is it” before moving on to an informative coverage of some technical gotchas by Ulrich Drepper. I highly recommend reading the articles to anyone curious about this latest buzz-word. They put the full Queue on the web now, not as nice to read as the paper version IMO (yeah, trees, I know) but better than nothing. (sigh using some non-web-format-for-the-web like IEEE spectrum.)