December 30, 2007

The Death of my Great Great Grandfather. (3/8)

From the 'Buenos Aires Standard' April 20th 1881.

Abolition of Capital Punishment

With much pleasure we state that the announcement in one of the city papers of the intention of President Roca to propose to Congress the Abolition of Capital Punishment is utterly incorrect, and we are fully authorised to say that the President, so far from being in favour of any such measure, views with regret that so many assassins escape capital punishment, which the law of the country provides, and which it is the President's determination to use every effort to carry out.

In all the cases called "Alevoso" the National Government will use every effort to have the criminals, no matter in which province the crime may be committed, at once tried and on conviction executed. When the President received news of the terrible murder of the two Scotch Farmers in Entre Rios he was greatly shocked, expressed himself most strongly on the matter, and at once despatched a telegram to the Governor of Entre Rios, to urge the Provincial authorities to scour the whole country and to catch the assassins. It is most probable that they will be caught, and quite certain that if caught and convicted, they will be at once executed. The following copy of President Roca's telegram to the Governor of Entre Rios will show the British Residents of the Plate that the President is in earnest in the matter, that he is the right man in the right place, and instead of favouring the abolition of capital punishment, is fully resolved on the abolition of assassination in the Plate, which is only attainable by rigorously executing the criminals, and showing to murderers the same mercy they have shown to their unfortunate victims.

-
Buenos Aires, April 19th. 1881
To the Governor of Entre Rios.
Uruguay.

Several Englishmen have called on me to tell me that two of their countrymen most estimable and respectable persons, have been wilfully murdered ant Nranjit Province of Entre Rios.

I request therefore that you will use every exertion in your power, and adopt every possible measure to make an example of the criminals. Such crimes as this dishonour and injure us abroad; and it is for us a duty of morality, of justice, and even of self-interest, to put a stop to them.

Yours friend,

Julio A. Roca.

December 28, 2007

The Death of my Great Great Grandfather. (2/8)

Part two: I'm not sure who G.E. is.

Such a dreadful affair has happened near Monte Caseros, Macdonald and Guthrie, both of Salto, who had taken an Estancia in Corrientes have both been brutally murdered by a band of four assassins, whilst preparing to accommodate two of them. Macdonald lately went home to take his children there.

Full details have not yet reached us, they have been buried in Monte Caseros. The murderers so far have not been found. "Como siempre" robbery was the object.

G.E.

December 26, 2007

The Death of my Great Great Grandfather. (1/8)

A little while ago my mother handed me a sheaf of typewritten papers detailing in rather horrifying detail the murder of my great, great grandfather in 1881.

I thought that I would share this in an episodic format. Offering it as an interesting piece of family history and as a fascinating period piece.

From the 'Buenos Aires Standard' April 19th, 1881.

Terrible Murder in Entre Rios
Two Scotchmen Assassinated.

It is our gloomy task to report the murder of two much respected Scotch sheep-farmers, at a place on the Eastern Argentine Railway, called Naranjito.

The unfortunate victims were Mr. Charles Macdonald and Mr. Arthur Guthrie, who had just rented a piece of land there, bought a flock of sheep, and started as sheep-farmers. The country thereabout is well settled on, and there are Estancias and sheep-farmers on all sides, the camps are very fine, with rich pasturage and abundance of wood and water.

Mr. Macdonald some few months ago returned from England where he leaves five children to mourn his untimely loss. For many years he was engaged in Salto B.O. on the Santa Rosa Ry., and had a wide circle of friends in this city; his friends here state that he had just invested up there about 6000. Pat's in sheep.

Mr. Arthur Guthrie was from Dundee and was partner of Mr. Macdonald. Mr. McCorquodale, who resides up there, has written down to friends here, giving the following hurried particulars of this truly barbarous crime, the details of which intensify its atrocity.

It seems that on the evening of the murder two men, Gauchos, rode up to the rancho and asked leave to rest and pass the night; they were invited to dismount and given their dinner: these villains, after tying their horses out and pretending to make the usual arrangements for passing the night, entered the house, and whilst poor Guthrie was in the act of preparing a bed for one of them the double dyed villain stabbed him in the back, and he fell dead. The noise of the fall attracted the attention of Macdonald, who rushed at once to get his revolver to defend his life as dearly as possible, but he was soon overpowered, stabbed to death and then both their throats were cut in a most barbarous manner; Guthrie's wife, a native woman, it seems escaped and rushed off to a neighbouring rancho; there were six men accomplices outside.

The rancho was sacked from top to bottom, and everything that could be carried off was taken away, trunks broken open, clothes, house linen &c. It is quite evident that the murderers counted on finding a sum of money in the house as Macdonald and Guthrie were buying stock, and it was supposed that the money might still be there.

Yesterday the friends of these unfortunate countrymen waited upon the British Minister, Sir Horace Rumbold, and we trust that he will call the attention of the Government to the matter, and the necessity of taking the most immediate steps to catch the assassins, and execute them.

This horrible crime comes at a time of increased significance. Dean Dillon leaves to-day on a special mission to foment British emigration to this country, and President Roca, as is stated in the papers, is about to propose to Congress the Abolition of Capital Punishment. The credit of the country is at stake in this matter. If the villain who seeks hospitality and in return murders his host is to escape Capital Punishment, then at least it will be well to acquaint the people of Europe with the fact. We reserve the matter for further comment.

December 17, 2007

A petition that everyone should sign.

If you're at all concerned about the protection of your personal data you should consider signing the following online petition. Following the progressive release of stories about the extreme indifference to digital electronic privacy, this petition seeks to introduce a little more accountability.

Petition to: require all organisations notify customers immediately of any personal data security breaches.

November 28, 2007

Sitting on the Ferry from Denmark

I've just had a very pleasant week in Denmark and Sweden.

The reason for the journey was Magnus' wedding to the lovely Helene in Kiaby, Sweden. I'll post a full entry on the wedding once I've had a chance to sort out the pictures. For now I'll just talk a little bit about my impressions of the countries that I've visited.

Denmark Part 1

I left England on the ferry between Harwich and Esbjerg in Denmark. The ferry operator was DFDS. It's an overnight journey arriving at lunch time. I had an excellent meal on board and fell asleep in a comfortable little cabin. I rolled off the ferry and pulled over to make my headlights legal for the journey - an useful feature of the TT is that the headlights are 'pan-european' so once you get into the housings there is a useful little switch that changes their focus.

With that acccomplished I was on my way. My first night was to be in Copenhagen so I had to drive the breadth of Denmark by check-in at 6pm local time. My route was incredibly simple sticking to the E20 the whole way the on ly complexities being some of the junctions with other motorways, remembering to drive on the right and making head or tail of the speed limits.

My first impressions of Denmark were of a neat, well organised country, the green gently rolling countryside looking very autumnal under a crisp blue sky. The towns and farms consisted of neat, low buildings with peaked roofs that, despite being completely modern, put me in minds of the long houses of old. Along the motorway were frequent places to stop, relieve yourself or even supply yourself with petrol and food. All was clean and pleasant.

Before long I had settled into a steady cruise at an indicated 110 kph and enjoyed smooth, clear motorways populated with some of the politest drivers I had ever encountered. They all understood that the overtaking lanes were precisely that and only stayed out for as long as it took them to get past the slower vehicles. My only run in with a rude driver was an idiot in a Beemer who tailgated me as I overtook a stream of cars including a police car and then roared into the distance as I pulled back into the inside lane. It was with great satisfaction that I watched the police car turn on its lights and give pursuit. I passed the Beemer soon enough sat on the hard shoulder with an irritated looking Danish policeman having words.

In a surprisingly swift journey broken by paying a toll and crossing a magnificent suspension bridge from Zealand I reached Copenhagen with a couple of hours to spare before check in and came off the motorway at a sign post for the O2. The O2 according to my map was the main way into the centre of Copenhagen where my hotel was and I was dreading a drive through a capital city. Once again I was pleasantly surprised, the drivers were marginally more aggressive than those I had encountered on the motorway but were still courteous to a poor Brit abroad.

Between my maps and a reasonable sense of direction I made my way to the hotel and found somewhere to park. The only flaw that I had discovered in an otherwise well ordered country were that Copenhagen's street signs were not always very visible from the (very) wide main thoroughfares. Parking was a doddle, finding a parking spot just around the corner from the hotel and using my credit card in an on-the-road pay machine (with a button for english instructions) to get a ticket. Prices were not exactly low as one would expect from the centre of a capital city.

The Imperial Hotel took up most of the city block and despite the huge sign on the roof had a relatively modest entrance nestled among the shop frontages. On entry I was greeted courteously first in Danish and then, when I exercised my phrasebook to explain that I spoke no Danish, in excellent English. After a short constitutional to familiarise myself with the area I had a delicious meal in the elegant 'Imperial Grill', chatting to very professional yet friendly staff. I retired to bed to prepare for the next push to Sweden an Kristianstad.

Sweden

Getting to Sweden involves crossing the Oresund Bridge. Oresund translates roughly as 'The Sound' - I'm going to assume that you all know the nnautical meanings of 'Sound'. The bridge was opened in 1999 providing a link between Sweden and Denmark. Malmo and its outlying area was relatively financially depressed but is now coming along in leaps and bounds since it is now less than 30 minutes by road from Copenhagen. Even so the bridge has yet to meet expectations for volumes of traffic, thanks in no small part to a relatively high fee for crossing. The crossing is a very impressive piece of engineering spanning more than 20 miles by tunnel, causeway and suspension bridge. Unfortunately there is nowhere to stop to take photos and as it was a grey day with poor visibility, there was no chance of photos from the shore.

The most immediate visible change on crossing to Sweden was the road signs. Instead of a white background there was a yellow one. Less obvious was the fact that the quality of the motorway road surfaces was just not quite as good as Denmark, in fact on several occasions I felt like I was driving in Britain. Past Malmo I had to come off the E20 and join the E22 which would take me directly to Kristianstad. The E22 was only a motorway for part of the way it became single carriageway on a number of occasions and frequently the speed limit was dropped to 70 or even 50 kph for a town or village that we passed through. The towns and villages looked very similar to those in Denmark, perhaps largely because this area had historically been under Danish control. The place was still very neat, but with a little more wear and tear visible than in Denmark.

Preparing for the journey I had read up on driving in Scandinavia and had read all the warnings about running into wildlife. It wasn't until I saw a warning sign followed by a brief glimpse of a rather large elk that I realised quite how serious they were. Unfortunately I was never in a position to take a photograph of this rather magnificent creature. Then again I should be rather happy as it meant that I was less likely to have one come through my windscreen; something that I understand is almost invariably fatal.

I made Kristianstad just after 1pm local time and made my way to the local hotel that Magnus had booked for me. The Hotel Hertigern was a pleasantly modest hotel just across from the station and next to the frankly magnificent brick-built 17th century main church. After a brief skirmish where I discovered that Magnus had made the booking in his name I dumped my bags in the room and wandered off to explore my first Swedish town and find some food.

I discovered the main shopping area very easily (it was started just behind the church) and shivering in the now much cooler atmosphere I went in search of education and just a little food.

Kristianstad is a lovely little bustling town. The shoopping area was packed with interesting shop fronts and they were just gearing up for Christmas. While there were many brands known to me (H&M, MacDonalds, Burger King and Electronic Boutique) I was pleased to see many small shops and businesses that appeared to be local. What I did not see was anywhere to eat except small cafes selling sandwiches. Consulting my guide book I found that Kristianstad had several restaurants - however only a few of them seemed to still exist and those that were still there were not open for lunch. Eventually I found an open restaurant - a chinese offering a lunch buffet. The staff were only too delighted to see a tourist and speak English to me. I had an excellent meal, though I was disappointed not to be able to eat 'Swedish' food. After a little more walking around the centre of Kristianstad I took myself back to the hotel and called Magnus who had kindly offered me dinner on this, the day before his wedding.

Magnus was just on his way back by train and promised to pick me up from the hotel once he had got back to Kristianstad and an hour later he appeared at my door. Magnus proposed that as Helene was working hard preparing for the wedding we should get takeaway. A few minutes later we walked into a Thai takeaway, my first two meals in Sweden were to be oriental. Interestingly the Thai food was sweeter and less spicy than I was used to in England and the Chinese food was much more savoury.

While we waited for the food Magnus and I caught up. He was working hard at Sony Ericsson and very content with the conjugal direction that his life had taken him. I told him the trivia of my life since last we talked.

The food arrived and, still talking, we walked to his flat that he shared with Helene and her two children. The flat was of a lovely design enlivened by Helene's enthusiastic dog bouncing a greeting. There was noone else there. I think that Magnus was a little surpised that we were the first ones back, but we continued talking as Magnus watered a magnificent array of houseplants and fed the dog. Eventually we worried that the takeaway was going to get too cold to be enjoyable and after failing to get through on the mobile we decided that (as Magnus put it) 'The mountain should go to Mohammed' and set off to take the food to the parish hall where Helene and her friends were setting up for the wedding.

Before we had got more than a couple of minutes from the flat the phone rang and Helene told Magnus that she was home.

We had a very pleasant evening where I met Helene's children and her best friend Mele.

I did my best to offer help with the preparations but was only able to offer a little bit of chopping before I made my way back to the hotel for a good night's sleep.

I awoke and after a pleasant breakfast faced a significant and important goal - I had to work out how to get to Kiaby before the wedding started at 4pm. I had noticed a tourist bureau the previous day and so made my way to it and within 5 minutes I had a free local map and directions from the (very pretty) girl behind the desk. I also had the impression that I now knew how to pronounce Kiaby (sch-ee-ah-bee).

A bit more time spent wandering around Kristianstad and taking photographs left me with a very favourable impression of the place and I finally found a good restaurant offering something like Swedish cuisine open at lunchtime!

After lunch I adjourned to the hotel and prepared myself to venture off the main roads and attend my first ever Swedish wedding.

Thanks to the directions that I had been given Kiaby was easy to find and I pulled up outside a simple whitewashed church with a tower that looked quite modern. Beside it was the parish hall where the reception was to be held. It was already dark, the temperature had dropped and rain was starting to fall so I was very happy to enter the well lit entry to the church.

On entering I realised that my first impressions were quite wrong. The church was much older. Inside was beautifully carved stone and wood, painted with motifs and frescoes. Already many people had gathered and I approached the lady handing out the hymn books and orders of service and there my luck let me down. She didn't speak any English! Fortunately Helene's mother appeared and told me to sit anywhere I like. As I walked past the first pew, I was surprised to be greeted by an English accent and to discover that I was not the only British person present. Sally was an old friend of Helene's mother and had also come over especially for the wedding.

Having chatted briefly and promised to talk more at the reception I wandered off to find myself a place to sit and ended up about half way down the aisle. I passed my time puzzling over the decoration and wondering why the board showed that we were to sing several psalms including 903. I hadn't realised there were that many psalms. It wasn't until much later that I realised that 'psalm' as a word was used in its original sense of 'hymn'. I was left wondering however how they differentiate between the psalms in the bible and the hymns sung from a hymnal.

The wait was enlivened by the arrival of some of the more unusual friends including a girl in full Japanese costume despite looking entirely European and a range of interesting hairstyles and colours.

The priest appeared at the front of the church and spoke to the congregation in Swedish. I knew that Magnus and Helene approved of him greatly and I certainly felt that I liked what I heard and saw of him. To this day I still have no idea of what he said but it caused the congregation to nod and laugh.

Before long the Maid of Honour (Melinda), the Best Man (Helene's brother), the bridesmaids and the pageboy appeared. I had pointed out to Magnus and Helene the night before that in the past the Maid of Honour and the Best Man were there so that if either the bride or groom were absent a marriage would still occur...

Then Magnus and Helene started their walk down the aisle, Helene on Magnus's arm. Apparently the Swedish church had decided that having the father of the bride give here away was too chauvinistic so they were discouraging the practice. I personally feel that they should have said that either the bride isn't given away or the groom's mother gives him away too.

Magnus was (disappointingly) not in a kilt, but was in a very elegant morning suit. Helene was radiant in a beautifully simple strapless wedding dress with a vestigial built-in train. A sheer wisp of charcoal fabric draped over her shoulders and a simple floral headdress.

Magnus and Helene both looked tired but very, very happy as they walked down the aisle arm in arm. It had been a long day, apparently they had only managed a few hours sleep before getting up at 6.

The service started and I dumbly stood up, sat down and kneeled at the same time as everyone else. Mercifully the service was short and I was largely able to follow the structure of the service (momentarily dazzled by flash photography at the 'You can now kiss the bride.').

After the service we stood outside and many, many photographs were taken before the weather forced us into the parish hall for the reception. Unfortunately any seating plan was kicked into touch by the outbreak of a virus that had prevented ten people from attending. However Sally and I were looked after and an English speaking table was instituted.

The reception was a blast - everyone was very kind to the poor benighted English speakers and I really, really enjoyed myself. Thank you to everyone.

The food was excellent including two cakes. One of the cakes that was very similar to a Lithuanian one that I had tried that effectively was an immensely tall meringue cone that had been cooked on a spit over an open fire.

After the food was the inevitable disco - of which the less said the better. If you can imagine all the most mainstream, turgid pop of the early to mid eighties...

Eventually, replete on good food and good company I adjourned to the Hertigen.

TBC

November 02, 2007

Milk and Paprika Fried Chicken with Citrus Sauce

One of my recipes that my sister has wanted for ages.

The ingredient list is per person and can be scaled up appropriately.
  • Chicken Breast
  • 1/2 pint of milk
  • 50g Corn Flour (Corn Starch in the US)
  • Seasonings
    • 1 tsp. Paprika - Smoked for preference.
    • 1 pinch Salt
    • 1/2 tsp Dried garlic powder.
    • Alternatively use Schwartz Season All - 1 1/2 tsp.
  • 1/2 lemon
  • Good quality vegetable oil (sunflower or avocado are good)
Chop the chicken breast into strips and marinade at least overnight in the milk in the fridge. You can marinade for up to 24 hours but take care past that.

Remove the chicken from the milk shaking off any excess liquid. The milk will have sweetened and tenderised the chicken due to an interaction between the enzymes in the milk and chicken.

Pour a goodly amount of oil into the bottom of a frying pan and start to heat.

Put the corn flour and seasoning in a plastic bag, shake. Add the chicken pieces and shake until they are well coated in the corn flour and seasoning.

Take the chicken pieces out allowing the excess corn flour to fall back into the bag.

When the oil in the frying pan has got hot enough to have a shimmer above it (but not catch and burn) add the chicken pieces. Cook them for about 5-10 minutes depending on how large they are so that the outside is crisp and the chicken cooked.

While the chicken is cooking it is time to make the sauce.

Put the marinade into a saucepan and heat. Bring it to the boil and you will notice it start to clump. Add the juice of the lemon and a little zest and bring back to the boil. Reduce the heat so it simmers gently.

The sauce will curdle further.

Finally, depending on how thick you want the sauce, take some of the coating mix from the plastic bag, add a little water to form a smooth emulsion and add to the simmering sauce. This adds the flavours of the seasoning to the sauce. Allow the sauce to thicken. If you want a smooth sauce - blitz it. I personally quite like the texture of the sauce as is without blitzing.

Serve the chicken on a bed of noodles with a crisp side salad and pour the sauce over the chicken and noodles.

October 04, 2007

A New Combination of Flavours

Well, my time off has given me back my leisure time and I have been pursuing a number of projects. All of which will be blogged here some time soon. The first and simplest one is a new combination of flavours that I have found that works really, really well.
  • Fennel Seed
  • Szechuan Pepper
  • Garlic (smoked if available)
  • Avocado Oil
  • Lime Juice
It work brilliantly well either as a marinade for fish, poultry or quorn or as a salad dressing.

First grind about a teaspoons worth of fennel seed with the same amount of the pepper in a pestle and mortar Then chop a large clove of the garlic roughly and grind together with the fennel seeds and pepper. Scrape the micture out in a bowl and add the juice of one lime before pouring in about three times as much avocado oil.

If you're going to use it as a marinade; it can be a good to add a tablespoon of corn flour (corn starch as the USA has it) and beat thoroughly to help it coat better.

As a salad dressing use sparingly as it packs a punch.

July 31, 2007

The TT has landed.

Well, my car arrived last Friday and in between the fun of running it in I've taken the time to take a couple of photos...

July 11, 2007

Is Writing Software an Engineering Discipline?

The answer is a very and extremely definite - no.

There have been many learned and wise discussions on this topic. Some people believing that it is an art and other people people believing that it is engineering. I vociferously straddle the fence and state clearly that we are all artisans. We, like the medieval cathedral builders, partake equally of art and science to build our towering edifices.

The simple fact is that for the majority of projects we still can't properly predict the time and effort required to complete them. We are not methodical enough and have yet to build up the corpus of knowledge and expertise to bring true science to our discipline. We are at the most creative phase, where new problems and new solutions are being devised all the time. We are slowly going the engineering path, using patterns and other tools to start to define best practices, but we are not there yet.

There is one major thing that I believe that people working in software can learn from engineers: The fact that all true engineering is a methodical approach to compromise.

Too many people fail to understand and manage the fact that every piece of software is a balance between competing technical, business and personal concerns. We are still artisans because personal opinion still is the best tool in determining the compromise that is reached and so many of the so called 'methodologies' are nothing more than snake oil.

June 29, 2007

Twice Cooked Lamb

I decided to cook up some leg of lamb the other day and inspired by the way that hams are made I did a two part cooking process: Poaching the lamb before roasting it.

I poached the leg of lamb for about 2 hours in a liquor made up of:
  • Enough lamb and vegetable stock to cover the leg.
  • 2 cloves of garlic, crushed.
  • A cup of good quality red wine vinegar
  • A bouquet garni, made up of thyme, bay, marjoram and rosemary
  • 10 or so whole black peppercorns
I turned the lamb over about half way.

I then took the lamb out of the poaching liquor and placed it in a baking tray. I poured a little teriyaki and sunflower oil over the lamb before putting it in an hot oven (200c) for about half an hour.

Skim and boil the poaching liquor down to about a third to one half of it's original volume, allow to cool a little before tossing in some chopped mint.

Serve sliced with steamed vegetables and the starch of your choice - I like brown rice or quinoa - pouring the liquor and mint combination over.

The lamb will not be 'pink' in the modern idiom, but will be tender and very delicious.

June 27, 2007

Binary Manipulation in a String Friendly Language

Well, it's been a while since I blogged; and there's been a good reason since I had nothing worthwhile to say.

I've now got two things that I want to talk about; one is technical and the other is about cooking.

On to the technical. I'll blog the cooking in another entry.

Just recently at work I had cause to revisit an old technique that I hadn't used in years and I thought that it would be worth recording here.

We've been working with small binary fields in the database containing information that needs to be parsed. So far within the system we have kept much of the data-centric heavy lifting within the database but we were having difficulty with the binary information. The database provided a set of procedures for manipulating the binary information, but they were not very efficient. They were designed to work with extremely large pieces of binary information and tended to keep the binary information out of memory and in the database.

In general the database was far more designed to work with strings.

The work around was one that had been used when binary information needed to be manipulated by string-centric languages in the past. We converted the binary into a hexadecimal string. This allowed us to make use of in-memory string datatypes, and all the very efficient string manipulation tools that the database made available to us (but with the offsets doubled!). In this case we were fortunate as the database was able to do direct conversions from hex into numbers and then perform AND operations on the numbers as needed.

If that capability hadn't been there we could have used a further technique: to do a fast AND from hex you just build a look up table. The table provides a look up between the two hex values that you want to AND. For example a look up table that does just one hex digit at at time would look like:
A hexadecimal AND lookup table
HEX - AND0123456789ABCDEF
00000000000000000
10101010101010101
20022002200220022
30123012301230123
40004000400040004
50101454501014545
60022446600224466
70123456701234567
80000000088888888
90101010189898989
A0022002288AA88AA
B0123012389AB89AB
C00040004888C888C
D010145458989CDCD
E0022446688AACCEE
F0123456789ABCDEF


If you don't mind sacrificing more memory a 2 hex digit or greater lookup table can be created and of course a lot of the time you can distill the lookup further as you only need to do a single bit mask operation and so you would only need on one axis 1,2,4,8 etcetera.

By turning the binary manipulation into a hexadecimal one, we managed to increase the performance by 500%. Of course for really heavy binary manipulation you can't beat a binary friendly language but this technique can be an useful 'good enough' solution.

April 18, 2007

Software Mass Production

Every few years I come across a company where some managers come up with the idea of a 'software factory'. The thinking is that mass production techniques and their economies of scale could bring some major cost savings.

Let us look in detail at the mass production of cars. Immediately a vision of a production line comes to mind. Cars being bolted together from thousands of mass produced pieces for very little money.

Unfortunately this vision is where most people's understanding of mass production begins and ends. The reality is far more complex. Reality uses prototyping.

When a manufacturer decides on a new line of cars, many prototypes are produced. Each prototype serving a different purpose. Some are mechanical prototypes used to design and test key new components. Some are aerodynamic prototypes. Others are ergonomic and styling prototypes.

There is one final prototype - the culmination of all that has gone before. This prototype costs tens or hundreds of millions as this has specific jigs, robots, templates and all kinds of other machines made expressly for it.

This prototype is the 'Production Prototype'. Once the millions have been spent and the prototype is complete and tested, you suddenly find that you have a production line ready to make thousands of copies of it for very little money.

Most people when thinking about applying mass production techniques to software do not understand the production prototype.

Every new piece of software is a production prototype. Software's production lines are the scripts and the disk copier.

We have already learnt most of the lessons we need from mass production in industry. In the car industry the production prototype often saves money by using an established platform and reusing existing components. In mass production every effort is made to reduce the cost of the production prototype, in software production we do the same.

Anyone who thinks that they can revolutionise software production by copying the mass production in industry are about twenty years too late. It has already happened.

March 27, 2007

The Boothby Fogcutter

My Boothby grandfather was an interesting man aside from his exotic pets he was a bit of an inventor. He came up with all kind of things, mainly aeronautic despite being a naval man.

His one invention that has directly impacted my life was the 'Boothby Fogcutter'. Described as a 'catch-up drink', he invented it so that when he arrived at parties late where everyone was several drinks merrier, he could be as merry as them within 10 minutes.

The recipe is as simple as it is fiendish:
  • Take a half pint glass.
  • Add 1-4 shots of dark naval rum depending on how much catching up you need to do.
  • Fill the rest of the glass with cider. I preferred dry but with a sweet cider it is described as tasting like an inferior Tokay.
The real problem with this drink is gauging how much to catch up. It is all too easy to overshoot. It is also worth noting that under no circumstances should this be drunk at any time other than at the start of a session of drinking as I have learnt to my cost.

I introduced the 'Boothby Fogcutter' to my college at Cambridge in my second year and I don't think that Corpus Christi ever recovered. A number of deplorable incidents ensued, usually because the drinkers did not judge the shots of rum correctly or drank it later in the evening after already getting merry.

The incident that sticks most in my memory was at one of Corpus' annual Rugby Club dinners. These were alway boozy affairs.

The routine of the evening was extremely well defined. The club members would meet up in the college bar for a few pints at six o'clock. At around half past seven we would head up to a reception room to make a start on the sherry. At 8 o'clock we would be seated to eat, accompanied by the mandatory fellow of the college who would have to sit in on any function making use of the college facilities. There were invariably three courses, each accompanied by a different wine. The main course was alway a posh variant on steak and chips. After dessert we would start in on the port and after that was finished various people would be sent to the college bar for further supplies of alcohol. At about 10:30 we would pour ourselves out and adjourn to the bar for a few more convivial drinks and, if any of us were still standing, we would see what else would happen.

The year that I introduced the 'Boothby Fogcutter' proceeded along the lines of any other I was pretty well lubricated by the time that the port was finished and when volunteered to get further supplies I decided that this was an opportune moment to introduce the rugby club to a new drink.

I staggered into the bar and somehow managed to convince the bar manager that what I really wanted was 22 'level 2' Boothby Fogcutters. I felt that 2 shots of rum each would be sufficient. Carrying a heavily laden tray I made my way back to the dinner.

Looking back, the major warning sign came when I tried to mount a flight of steps carrying the tray and lost my footing. I fell, but was in that peculiar elevated state that the very drunk have that allows them to keep their containers of alcohol intact. There was a little sloshing but I managed to keep all 22 glasses on the tray and largely full.

Arriving back at the table of drunken rugby players I dispensed my largesse. A couple of people declined and despite my suggestions to the contrary the responsible, senior fellow decided to have two. My last recollections of the evening were of the start of a round of the 'I have never' game where you stand up and drink if you have.

I woke up the following day in a terrible state. I had mixed grain and grape and had had a 'Boothby Fogcutter' halfway through a nights drinking. I had lost my glasses, I was pretty sure that I had been sick given the state of my mouth and chin and had an enormous bruise on my left shoulder.

Over the course of the next couple of days I reconstructed what I had done. I had made it back down to the bar and then gone into the JCR (Junior Combination Room - basically a common room with seating) where I had decided to join in a game of rugby using a rolled up newspaper. My fellow prop forward Tom and a guy named Ed had tackled me and I had gone shoulder first through the closed double doors of the neighbouring television room, taking one of them off their hinges. I then staggered forwards through the assembled viewers to the front of the television room and stood being sick out of the window behind the television for about 5 minutes. At the time I had not realised that there was a bicyle under the window and with uncanny accuracy I had targeted the seat.

After that night I never drank heavily again. The 'Boothby Fogcutter' continued to cause mischief around college and I'm pretty sure continues to cause havoc wherever Corpus people go.

I leave my final thoughts with the fellow of the college who became the first to be up before the Dean for discipline in several decades. I still don't know what he got up to after the second fogcutter.

March 23, 2007

Smoked Cod and Chips

When I lived in Ireland one of the great pleasures in life was to adjourn to a local chippy called Caffola's and devour a beatifully cooked smoked cod and chips. The cod was only lightly smoked, more to give flavour than preserve and added a delightful high note to a wonderful dish. It was a truly great way to prepare for an evening out at Rocky's followed by Badger Brown's.

I've always loved smoked fish; salmon, mackerel, haddock etc.

I've recently found smoked cod becoming available more widely in the UK so I decided to attempt to recreate the experience.

In consulting various cookery books and looking online I discovered an argumentative group of people who either create or collect frying batter recipes and my goodness there are a lot of them.

In the end I settled on a batter recipe that was a synthesis of several of the others and so here it is:
  • 2/3 cup of strong flour
  • 1/3 cup of cornflour (For Americans that is cornstarch)
  • 1 generous pinch of salt
  • 1 spoonful of castor sugar
  • 1 cup of good water (mineral or filtered)
  • 2 egg whites whipped to soft peaks
Sift the dry ingredient together in a mixing bowl and add the water gradually, mixing until a smooth paste is formed - I would normally expect to have some water left over. Fold a little of the egg whites into the paste to loosen it, fold about half the remaining egg whites in and finally fold the remaining egg whites in.

To batter and cook the smoked cod I cut it into nice fillets, dried them with kitchen towel and coated in a little flour.

I had a wok with combined sunflower and avocado oil ready heated - I tested the temperature by dropping a small piece of batter in and checking that it puffed and crisped within a few seconds.

I passed the prepared cod through the batter and slowly lowered it into the wok so that the batter in the oil had a chance to seal and puff before it came into contact with the base or sides of the wok or other cooking pieces. For a large piece of cod I allowed 12 minutes cooking time and for a smaller one I allowed 9 minutes. The cod floated as it cooked so I turned it over every few minutes to ensure that both sides cooked evenly.

For a first pass I didn't do any chips, I just served it with a herb salad and a large piece of lemon.

It was really quite good. In fact it was bloody delicious.

I'm going to take a little more time on the batter to get it absolutely perfect but so far, so good.

March 14, 2007

Techniques for working with Temporal Databases.

I've been working recently with a temporal database and have gone back over my blog as a result to see what I've written on the subject.

All that I've written so far is a simple diatribe on temporal modelling.

I think that it is about time that I share a hard won lesson about working with temporal databases in multi-user environments: It is alarming how frequently concurrency can be messed up.

The problem begins with the fact that classical key based uniqueness checks just don't work. In a temporal database you must be able to support many rows referring to the same entity, each row covering a period in the entity's life. This means that any time that you wish to retrieve a view of an entity you either retrieve a set of rows defining the whole life of the entity or you choose a point in time and use a BETWEEN ... AND clause to select a single row indicating the state of the entity at that point in time. Effectively any key has a temporal element. The full key being the identity of the entity, a start date and an end date for the period of time for which the attached information was/is/will be correct.

So far so good, however databases are just not set up for checking this kind of key. They can trivially check the uniqueness of a key - the fact that a given row representing an entity does not have the same combination of identity key and start and end dates. Can you sport the flaw though? What is needed is the ability to check that the row does not have start and end dates that OVERLAP with those of another row for the same identity key. If they do overlap then we end up with two valid sets of data for an entity on a given day - obviously no good.

Keeping up? Then on with the complexity! The first pass attempt at fixing this is to add application or database level programmatic checks that check whether there exists a row that overlaps. That seems fine as far as it goes, however there is a problem - if two users are performing an update at the same time then standard 'transaction isolation' causes a problem. In most databases the default behaviour is that a user can only see committed work done by other users this means that if both users are updating the same entity then the programmatic checks will not see the changes being done by the other user until they commit it and the overlapping rows can still occur.

I've seen a number of bizarre solutions that attempt to solve this, two of the least satisfactory were to either relax transaction isolation so that each user can see what the other is working on (doesn't work in the end) or to have processes that find overlaps and manually resolve them (oh the work!).

The proven solution is to use a sensible locking strategy. The locking strategy can be used to ensure that the programmatic checks are run correctly despite multiple users maintaining the data. You can't use the temporal rows to do this useful locking. Typically I would analyse the data model and either identify non-temporal entities that can be used to lock sets of temporal entities or create my own non-temporal entities for the locking. This kind of non-temporal entity used to lock temporal entities can be referred to as a lifeline/timeline lock. When the lock is obtained you are locking out the entire lifeline of the entity being maintained and preventing other users/processes working on it simultaneously.

January 19, 2007

A New Car

A couple of weekends ago I finally bit the bullet and put the deposit down on a new car - an Audi TT. I went with the 3.2 litre quattro in Ibis White with a Mineral Grey interior. The salesman (the third that I had dealt with - the other two had left the industry soon after I saw them) was quite enthusiastic as he had been trying to convince his boss that the TT in white would make a nice show car and he would finally have the chance to show him.

I went moderately wild on the extras. iPod attachment, decent stereo, Audi magnetic ride etc. As this is my first ever brand new car I have to admit to lessened self-control. I did avoid things like the electric seats and the self-dipping xenon headlights though. I'm still torn as to which was the most useless option that I chose though: The luggage nets or the extended leather trim.

I'm still debating whether to get the car debadged as I'm not particularly interested in advertising the fact that I've gone for the most expensive model to all and sundry.

What I'm most irritated about is the fact that I may have a fight on my hands when it comes to getting the licence plate that I want BO07 HBY. I checked the DVLA website and it is up for auction 'soon'. I'm not absolutely desperate to get it, but I would be upset if it ended up not with a Boothby but with some obsessed Star Trek fan.

January 11, 2007

Balancing Ease of Use in Designs

I've long held that in software design and development that the only wrong way of solving a problem is one that does not work. I do however believe that some ways of solving problems are better than others.

In various entries I've talked about the ways I approach trying to arrive at better solutions, some of them were quite abstract. Most of them are ways of evaluating whether one solution is better than another.

In conversation yesterday with Neil, one evaluation came up that I have found very useful: which solution makes the everyday usage easiest?

This evaluation is probably quite familar to consumers of Application Programming Interfaces (APIs) but often does not seem to be familiar to producers of APIs.

When designing something always consider adding a bit of complexity to doing the unusual things in order to make it easier to do the usual things.

January 05, 2007

Albert the Mongoose

Time for another family history blog entry. Today I want to tell some stories about Albert the mongoose.

Albert was ridiculously tame, he was a particular pet of my father's who had a poachers pocket sewn into many of his coats so that Albert could travel with him. Often, when my father was having a chat with an acquaintance or talking to a shopkeeper, the conversation would grind to a sudden, staring halt as Albert stuck his head out of the coat to see what was going on.

My grandfather was aware that Albert needed plenty of exercise. The favoured form was to tie a brick to a piece of rope and swing it around. Albert would bounce over the brick on each pass with evident enjoyment.

Albert loved people as they were always doing something interesting and would often wander off to see what they were up to. Once shrieking was heard from one of the neighbouring houses and on investigation it was found that Albert had introduced himself to a new cook. The cook did not appreciate the introduction and proceeded to defend herself with what was to hand: A basket of eggs. Albert thought this was wonderful as he not only got to dodge each egg as it was hurled but also had a race to see how much he could eat before the next egg arrived.

Possibly Albert's finest hour was one afternoon as he rested in a sunny spot on the large back lawn. A local tom cat spotted him. This cat was well known, he had caused no end of havoc among the local feline population, had despoiled birds nest for miles around and had caused much angst to the local humans too. The tom cat went into the full stalking mode; body low to the ground, ears pointed and slow, careful movements. Apparently it was a masterpiece of stalking, no noise, barely a shiver of the grasses and always downwind.

After nearly half an hour of stalking, the cat was perfectly positioned to pounce. What the cat had failed to notice was that thoughout all his zig-zag stalking from cover to cover, Albert had managed to always keep his back square to the cat.

With a tail twitch and a wriggle the attack was launched, but when he landed on the patch of ground that was Albert's resting place, the mongoose was no longer there - he was three feet up and dropping perfectly onto the cat's back. In went all of Albert's claws and with evident satisfaction a firm bite was made to the fold of loose skin on the back of the cat's neck.

The cat took off, squalling round and around the garden. As time went by the cat got more and more tired, more and more quiet until finally, panting heavily, he slowed to a staggering walk and stopped by where Albert had been resting. The mongoose let go and daintily jumped down.

The cat staggered from the garden and was apparently never seen again.