and then the new update breaks the application

I download the european version of the patch. Bleugh, another 200MB download. I apply the patch and now the game no longer works as it claims the game DVD is incorrect. Piece of s**t. There’s no way to unpatch the program so I uninstall it to reinstall it. I forgot to have the game manual handy. Hunt the install key.
Could it be that having Splinter Cell and F.E.A.R. installed on the computer at the same time could be causing problems? Or was it an incorrect patch, as it worked before I applied the patch.
Annoying, I’ll just have to stick to playing Splinter Cell until I’m finished it.

220meg download later – incompatible auto-update

I bought FEAR last week. It informed me that there was an update to the game to bring it up to snuff. Took about 25 minutes to download it and started to install. It then displays the following:

This Update is only compatible with the English (United States) version of F.E.A.R. Please use the correct Update for the installed version of the game.

This was the auto-update tool that came with the application. What a waste of my bandwidth!
Aaaaaaargh!

Was it a shock at the Oscars?

I was looking at the results of the Oscars last night. Considering that I was unimpressed with most of the movies. My heart was warmed by Philip Seymour Hoffman winning the oscar for best actor, he was the best of the nominees in my humble opinion. The fact that Brokeback didn’t win best movie is only testamount to the fact that cheats never win 🙂
honestly, the overall quality of movies this year was terrible! Make better movies on a lower budget and don’t shove the horrible ones on us because you have the money to advertise them.
I never realized (until I saw it ono IMDB) that the full title of ‘The Talented Mr. Ripley’ was ‘The Mysterious Yearning Secretive Sad Lonely Troubled Confused Loving Musical Gifted Intelligent Beautiful Tender Sensitive Haunted Passionate Talented Mr. Ripley’. What a sad title.
Besides, I got such slagging over the Marmalade pudding recipe.

Marmalade Pudding

Medium Pudding Mixture:

  • 4oz. Margarine
  • 4oz. Sugar
  • 2 Tablesp. Water
  • 6oz. self-raising flour
  • 2 eggs
  • 1/4 Teasp. salt
  • Flavouring

Method:

cream fat and sugar, beat in the whisked eggs, stir in the flour and salt with added water, Steam or bake.

For Marmalade Pudding:

Add one large tablesp. of marmalade to the foundation mixture. Steam and serve with Marmalade sauce.

To Steam:

    • use a steamer over a pan of boiling water.
    • Have a well fitting lid.
    • Keep water boiling and steaming all the time
    • Place the pudding basin in a saucepan with boiling water.
    • Water should come half way up the sides of the basin
    • Keep the water boiling, and as it boils away, fill up with
      boiling water, but do not wet the top of the pudding
  1. Steam in a pressure cooker, according to instructions.

Time for steaming is about 1.5 hours for a pudding made from 6-8oz. flour.

Turning out: A light pudding breaks easily, so loosen it gently from the sides of the basin with a flexible round-ended blade, which should be pressed against the side of the basin, not the pudding.
When loose, cover the basin with a hot dish and invert quickly.
A good pudding may be marred by careless serving and enhanced by dainty dishing.

To Bake:

Use a pie dish, cake tin, soufflé tin, fireproof dish, ring mould, small moulds or deep bun tins.

Grease well.

Line the base of any flat-bottomed tin so that pudding will turn out easily.
Bake in a moderate oven (350f or No. 4)
Small moulds may be baked at a slightly higher temperature than large ones.

Time required: 30-40 minutes for large and 15-20 for small moulds.

I had a nightmare last night

It started out quite simply. I was with a few friends in an internet café just shooting the breeze when I noticed this perceptual shiver run through all the people there. When I asked what was going on nobody was talking. Finaly I convinced one of my friends to tell me and he informed me that one of the folks from the data retention section of the Gardaí was here to install the recording software for the shop.
This was in foot of the new legislation that had been introduced for the storage of all internet communications for an arbitrary time. Every bit was being recorded just in case it needed to be checked at a later time for terrorist activities.
This nightmare took a strange turn when I examined the data gathering software. It was performing a simple data dump of everything that was passing through. Because of the vast quantity of data, nothing was being done to ensure that it could not be tampered with by anyone should they have access to the data. At a later point one of my friends found himself in court facing a criminal charge of conspiracy to commit murder based on the content of one of the logs that had been recorded.
It’s scary, but it is possible for it to happen. The question beomes how do we ensure the integrity of the data that is in the recording? If you wanted to prevent accidental tampering with the data, then using some form of checksum on individual blocks of data would provide for that, however a malicious tamperer could simply alter the checksum for the given blocks to prevent their detection. Based on the quantity of information being gathered, you could chain the checksums. Initialize the first block to some random piece of information. checksum it. For the next checksum initialize it from the content of the previous checksum. The principle is used in various encryption systems (Cipher Block Chaining). If you wish to tamper with the data in-stream you need to alter the checksum from the point of alteration to the end of the recording.
As simulteneously you have a program continually writing new blocks of information to the storage device, you would need to either (a) insinuate a program that would alter the checksums as they are written to the device, or (b) interfere with the recording program to possess the new checksum just prior to the next write to the device, thereby having it perform the updating for you.
Both techniques are not impossible to perform, in fact the first is downright trivial. The only way of bypassing this sort of tampering is to ensure that the recording device is isolated in some way from the data that it is recording.
For this purpose, it would need to be a specially assembled recording device which possesses two fail-hot network interfaces as it’s only method of communication to the outside world. A fail-hot network interface pair is one that when the power is removed simply keeps the network traffic passing through without interruption.
Secondly it would just record the data, it would have no interpretation capabilities. The reason for this is to remove any chance that it could be subverted through maliciously formed network packets.
The box should be tamper-evident. by having this facility, any efforts to extract the data through physical manipulation of the recording device would be easily noticed, thus rendering the data recorded inadmissable in a court. Tampering with the device would be a criminal offence.
The device would need to be regularly inspected, hot-swapping new devices for old ones so the data recording could carry on uninterrupted.

You don’t need Administrator access for that

I encountered a real dunderhead of a program. It claims to be completely NT, 2K and XP happy, yet it doesn’t tell us it needs administrator access because it creates it’s temp files in C:\, yes, the root of the C drive. There is a perfectly good API available for making good, clean temp files – it’s called GetTempFileName. for a bonus there’s GetTempPath, which gets you a directory for creating temp files, and this directory stands a really good chance of being user isolated (being that it’s %USERPROFILE%\Local Settings\Temp on most NT based OSes). But no, you go and ruin my perfectly working ordinary user program by insisting that you run as administrator. Bloody not written by me sub-programs. You deserve great pain for what you have done.

Not much to say at the moment

Just had to put something useless into the mix! guess what, I’m tired and I don’t have much to contribute to the wide world. I’m interested in the GTD stuff. Maybe I should just GTD.
One thing I have to say is that I don’t like the bloody shite on the TV.

Another person stung by the do what I mean mentality

Ah, yes. I saw that Albert had posted the listings for how young Dave Connolly got on in the winter Olympics Skeleton (20th! excellent for him), his previous blog entry had me cringe.
It was another case of expecting a language to perform implicit type conversion when assigning it. I was learning C when I found out about this. <float> = <int> / <int>; does not yield the correct answer if you were expecting a floating point answer.
It’s partially to do with the way the language is implemented and partially to do with the KISS principle. What you are doing is essentially performing two separate operations. A division operation, followed by an assignment operation. The division operation will happen with all the precision of the types that were used, so under the rules, if none of the values are a floating point value then the operation will not use floating point arithmetic. I mean, if you had to convert every integer into a floating point value every time you encountered a mathematical operation just in case the answer is a floating point value you end up making the system very, very slow and potentially likely to cause problems of other types.
Like attempting to make an equality test on floating point numbers. Let’s just say you should never use a direct equality comparison on floating point values, as even if you think the value is 0.0 it may in reality be 0.0000000000001. With the extra precision of floating point numbers comes less accuracy, and to steal someone else’s description, if ints are bricks then floats are more like silly putty.
If you want to use floating point math then at least one of the elements of the operation must be a floating point value. For example:

	int a = 1;
int b = 2;
float c = 0;
c = a / b;

Means that c is 0.0, not 0.5, because everything on the right hand side of the operation is an integer

	c = (float)a / b;

Would cause c to be 0.5, which is what you wanted. As an aside the initial float c = 0 has an implied type conversion from int to float. It should really have been c = 0.0.
Of course, we can’t forget all the joyous C constant things we had to remember…. <value>U for unsigned, L for long, UL for unsigned long, LL for long long (64 bit anyone). When you’re using C on a predominantly 16 bit programming environment (like the palm platform), then you need to keep reminding yourself, because an int on the palm is only 16bits in size.
oh the joy of it all!

Hitting a nerve with Web 2.0

In an article by Andrew Keen, he rants somewhat about Web 2.0 being a bit too reflective on ourselves. I find myself agreeing somewhat with the problem of reflection. Being that this is my blog, of course the whole thing is reflexive from the get-go, but bear with me. The web is a dangerously filtering medium. Web 2.0 makes it even more so. Communities of likeminded individuals keeping to their own interests. I’m tempted to make a roulette style take me somewhere new website that is as random as possible. Of course any mechanism I would consider using (search engine based) would of course not be completely random.
I’m getting annoyed with the virtual community building. we need to build real communities.