Wednesday, 31 December 2008

Watching more Lost

This morning I checked my email, looked at photo vests and fishing jackets on ebay, and did some work on my website.

In the afternoon and evening I watched Lost with Maccy, Luke and Ben. I went on Animal at New Years, but the Mayor didnae give me anything, just had a big countdown sign that counted down to the new year, then said 'Happy New Year'. After that we watched another episode of Lost, then I went to bed about 1am.

The weather today was frosty most of the day, by the afternoon all the frost had melted in the garden, but it was still frosty on the patch of grass across the road. It was overcast all day.

Food
Breakfast: Toasted tea cake with butter; cup o' tea.
Lunch: Ham with mustard sandwich; prawn cocktail flavour pringles; clementine; coconut macaroon; caramel Rocky; cup o' tea.
Afternoon snack: Hobnob; cup o' tea.
Dinner: Home-made chicken & ham pie; roast potatoes; roast parsnips; mixed veg; gravy. Pudding was 2x American style chocolate brownies. Coffee.
Evening treat: Bailey's chocolate truffle; piece of dairy milk; parma violet style sweet; cup o' tea.
Evening snack: Prawn cocktail pringles; dried mango pieces; cup o' tea.

Tuesday, 30 December 2008

Watching Lost and finding a good FREE backup program

Well, yesterday I said I was going to try doing a backup with SyncBackSE today. However, before I got on to that I decided I'd try some of the other programs that I hadn't tried yet, that were mentioned in the article/comments on 13 Great Free Backup Programs for Windows, Mac, and Linux. I was hoping that there'd be a free solution I could use that worked well.

The first program I tried today was Synkron. I used the clone mode with 'Do not backup updated files' ticked (this means don't backup files in the backup before you overwrite them with the updated files from the Master). Amazingly it worked! It did an incremental backup, deleted files/folders on the backup that didn't exist in the master, and was very fast. It also allows you to create a tab for each backup task, and then execute all tasks/tabs, or you can execute each one seperately if you wish.

So I setup a tab for each of the folders I wanted to backup to my external internal harddrive and then executed all the backups in one go. After about 10 minutes or so the backup was done.

Next I wanted to create tabs for each of the folders I wanted to backup to my LaCie external harddrive. I wanted to get rid of the tabs for backing up to my external internal harddrive, so I could again just do an execute all to backup all the folders in one go. Unfortunately Synkron doesn't seem to have the ability to setup backup 'groups' like Areca and some of the other software I tested yesterday does.

However, it is quite easy to get round this. In your user folder/App Data/Matus Tomlein (on windows, my folder was at C:\Users\Rusty\AppData\Roaming\Matus Tomlein) there is a config file Synkron.ini. After you have setup your 'backup group' with all the tabs you want to be able to execute in one go, either cut the Synkron.ini file and paste it somewhere else, or just rename it. The Synkron.ini file contains the details of the backup group (all the tabs) you just set up.

The next time you start Synkron, it will create a new Synkron.ini file, and all the tabs you added before will be gone. You can now setup all the tabs for your next backup group, then repeat the process until you have all your backup groups setup. Now when you want to load a backup group, just move/rename the relevant file back to the Matus Tomlein group and make sure the file is named Synkron.ini. Then Synkron will load all the tabs from the Synkron.ini file and you can do your group backup.

Not as easy as programs supporting proper backup groups, but not exactly hard to do either.

After getting all my backups done I vacuumed my room and cleaned some tea stains off the carpet. I started a virus scan, got lunch ready, then ate lunch.

After lunch I went on hotukdeals and bought some books. Then I watched a couple of episodes of Lost with Mac, Ben, Luke and Matthew. After that I went on HotUKDeals again, then watched more Lost with Mac, Ben and Luke.

After dinner I watched more Lost with Mac, Ben and Luke. I sorted a few photos, then went to bed.

Food
Breakfast: Grapefruit marmalade toast sandwich; cup o' tea.
Lunch: Mature cheddar cheese sandwich; cheese twist; prawn cocktail flavour pringles; a Kettle chip; ½ sliced pickled beetroot sandwich; banana; slice of Madeira cake; Coconut macaroon; Chocolate waver bar (yes, that's what its called); cup o' tea; Baileys chocolate truffle.
Dinner: 2x fish cakes; tomato ketchup; mashed potato; peas; small tinned mushrooms. Pudding was rhubarb crumble with custard and cream. Coffee; Celebration.
Supper: Shortbread finger; coffee.

Monday, 29 December 2008

Backup programs

Most of today I spent trying to do a backup. Here are some programs I tried. My requirements were that they can do incremental backups, which is what I always use. Also they must be able to copy files and folders without zipping/encrypting them, as I have found zip archives to be unreliable previously - if the archive gets corrupted you loose all your files in the archive, or if the backup system zips each file individually, then you need to unzip the files when restoring them, which is tedious and can crash the computer when dealing with large numbers of files.

My system is Vista x64, Intel Core 2 Duo E6700 processor, 8GB RAM, Backing up from a partition on a RAID 0 array to an internal disk (I connect the disk internally and then remove it when the backup's done).

I got the links for the different programs from this very helpful article: 13 Great Free Backup Programs for Windows, Mac, and Linux.

Ice Mirror
What I normally use. Crashes when comparing/copying large folders. Doesn't have the ability to remove files/folders on the backup that no longer exist in the master, though can tell you what they are so you can delete them manually.

Areca
Can remove files/folders from backup that no longer exist in the master. Requires that the backup be done through itself (so you can't just do an incremental backup to some files you backed up previously using another program or by hand). This would mean I would have to initially do new backups of all my folders if I wanted to use Areca for my backup solution. It seems to produce some files (stored with the backup: content; manifest; trace) that it uses to check what files exist in the backup, so if you change files in the backup without using Areca, it won't know. If these files became corrupted you would also need to do a full backup again.

Comodo Backup
Can remove files from the backup that don't exist in the master anymore, but still leaves the old folders?! What's the point of removing old files but leaving the folders?

Bonkey
Didn't seem to be able to detect that I had changed some file/folder names, and so wouldn't do an incremental backup. Pointless.

Abakt
Couldn't detect when I changed a folder name, but did detect when I changed a filename. Wouldn't delete files in the backup that didn't exist in the master.

Cobian Backup
Doesn't delete/detect files in the backup that don't exist in the master.

JaBack
First time I tried a 'Uni-directional synchronise' with it, it worked okay, but then after that it would just max out one of the CPU cores and not do anything.

Microsoft Sync Toy v2.0
Tried both the 64 and 32 bit versions in echo mode, which claims to delete files/folders on the backup that no longer exist in the master. However, it would not do that, leaving my backup with files and folders that no longer existed in the master.

SyncBackSE
You have to pay for it ($30), but it actually seems to work, and was quicker than all the other programs I've tried today as well. $30 is for a 5 user license as well. I'll have to give it a proper try backing all my stuff up tomorrow as I'm quite sleepy now. I'll also have to uninstall all the other backup programs I've tried today tomorrow.

I spent most of the day messing around with the different backup, but also played Mario Kart Wii, Goldeneye (N64) and Snowbow Kids (N64) with Mac, Ben, Mathew (Ben's mate) and Luke a bit.

Food
Breakfast: Strawberry jam toast sandwich; cup o' tea.
Elevenses: Maple & Pecan Cookie; cup o' tea.
Lunch: Mature cheddar cheese sandwich; clementine; piece of Tiramisu; Cadbury's chocolate finger; celebration; cup o' tea.
Dinner: Cup o' soup style soup; Quarter pounder burger with cheese and tomato ketchup in bun. Pudding was an apricot yoghurt and a shortbread finger. Coffee; Celebration.

Sunday, 28 December 2008

Doing website stuff

This morning before church I went on Animal Crossing and bought some turnips from Sow Joan. I bought 10, which I just left outside to go rotten so I can get some ants. I also bought a red turnip seed, which I planted and now have to make sure I water every day. That cost about 1,000 bells. I also bought 100 turnips at about 98 bells each, so about 9,800 bells for them total.

After church I went on my comp and checked the Luminous Landscape. After lunch I finished reading the Luminous landscape and checked Moose's News blog, my email, ebay and panoguide.

Then I did some work on my website in the afternoon.

After tea I did a bit more work on my website, then watched Lost and some youtube videos with Maccy, Ben and Luke who came round today to stay for a few days.

In the evening I did a bit more work on my website. I've just been making it so I can add new pages today (previously I could only edit existing pages).

The weather today was sunny with no frost, but still icy early in the morning, but by about 11am was overcast and stayed that way the rest of the day.

Food
Breakfast: Lemon marmalade toast sandwich; cup o' tea.
Dinner: Bits of chicken; flavoured rice; Lemon and sumat flavour cous cous; broccoli. Pudding was a piece of mint vienetta. Coffee; Bailey's chocolate truffle.
Tea: Edam cheese sandwich; some salt flavour Kettle chips; clementine; slice of Lemon sponge cake Clare made; cup o' tea.

Saturday, 27 December 2008

Watching stuff with Mac

This morning I went on Animal then did a bit of work on my website. I wanted to make it so if you tried to access a page that didn't exist in the database, then you'd get a 404 error, but although I could get PHP to generate a 404 response code, it didn't load up the normal 404 error page. I spent quite a bit of time trying to do this, but couldn't figure out how to get it to work.

Later in the morning and part of the afternoon I watched Storm over Asia with Mac. It was kind of a Soviet propoganda film, showing how evil the capitalist British were and how stupid religion (in this case Buddhism) is. But the propoganda elements of the film weren't particularly overbearing, though I did feel they detracted from the film somewhat. The plot was also a bit stupid in a couple of places, but the film had nice cinematography and its plot generally made sense. The landscape they filmed in was nice as well, maybe the gobi desert, very desolate.

Later in the afternoon I watched another Blues documentary with Mac. After dinner I watched Lost with Mac and Ben, then we went on Animal and saw KK.

After that I went on my comp again and someone had replied on thewebsqueeze to my question about doing a 404 redirect in PHP, turns out the solution was quite simple, just output the 404 headers, set $_SERVER['REDIRECT_STATUS'] = 404; and then include() the error document.

The weather today was sunny with mist and frost early in the morning, but by about 10am was overcast and stayed that way the rest of the day.

Food
Breakfast: Lemon marmalade toast sandwich; cup o' tea.
Elevenses: Triple chocolate cookie; coffee.
Twelveses: Pecan and Maple cookie; coffee.
Lunch: Edam cheese sandwich; clementine; piece of Tiramisu; cup o' tea.
Dinner: Lasagne; mixed veg; ground black pepper. Pudding was 1½ pancakes with fresh squeezed lemon juice and sugar.

Friday, 26 December 2008

Being sleepy and headachey

I woke up this morning at about 5.30am but didn't want to get up in case it made me get a headache from being too sleepy, so I went back to bed again but didn't really get to sleep again, then got up about 8am.

After breakfast Clare said I needed to take Ben out to get some milk since we'd run out. Milk is very important for cups of tea. So I thought me & Ben might as well go down town to get some milk and see if any shops are open. On the radio they had said that stores were having their biggest ever sales this year to try and get shoppers spending again.

Clare said that Sainsbury's wasn't open, Mac checked the pinternet and Tesco's was nae either, so that meant getting the milk from rip-off Spar. I asked Shaz if she wanted to go down town with me and Mac and Ben and she said she did, but would be about an hour as she was still in bed.

So I watched Ben play on Lego Star Wars for about an hour while I waited for Shaz. It was very boring as Ben just does the same thing over and over and always bes pointless. When Shaz was ready Rad said that he was going out as well and could get the milk, so I said he might as well get it. Then Mac and Shaz decided to go out with Rad and Clare instead, so just me and Ben went down town by ourselves. Blockbuster was open, but we didnae go in there. Woolworths was open, so we went in there. They were selling things like stock trolleys for £50, DVDs for about £20 with 60% off (so £8, still expensive), and boxes full of empty green Xbox DVD cases and empty DS game cases for £20 for a box (maybe a reasonable price, still seemed quite expensive to me). The only reasonably priced thing I saw in there was a bin full of plastic bags for £5, but it was only useful for novelty value so I didn't buy it since it would take up quite a bit of room and I'd have to lug it home.

After that we went in Waterstones, which was the only other shop I could see that was open (though we didn't walk up the road much or check the shops around St. Mary's place. Whilst I had bought my Waterstone's gift vouchers with me, I still didn't buy anything. It looked like they had about 10 different books at sale prices, and everything else was at RRP. They did have a large Ansel Adams American West book reduced from £50 to £25. That was probably a good deal, but still too expensive for me, especially since it looked like it was just photos and info on the places rather than information on technique.

When we got back home I checked my email, then we had lunch.

After lunch I tried to get the £3 free Amazon mp3s. First of all I had to decide what to get, so I spent quite a while looking through their selection to see if they had any £3 albums of interest. They had Britney Spears' new album 'Circus', also a best of the Thompson Twins album and a Best of Go West album. In the end I decided I'd probably rather just get some singles. So I got:
  • Terry Wogan & Aled Jones - Little drummer boy
  • Status Quo - It's Christmas Time
  • Geraldine McQueen (Peter Kay) - Winner's Song
  • Geraldine McQueen (Peter Kay) - Upon A Christmas Song


But when it came time to checkout it wouldn't accept the code Amazon had emailed me, saying the offer had stopped and to check the terms of the offer. I checked the email they'd sent me, and it just said it was valid for Christmas day and Boxing day, no mention of expiring at mid day on boxing day or anything.

So I checked HotUKdeals to see if anyone else was having problems. On there someone said that Amazon had changed the terms of the deal, so instead of entering the code you pay normally, and then they'll refund the money to your card. Apparently lots of people had somehow been able to download loads of albums and tracks using the code for free. I guess Amazon didn't limit the voucher to one use per customer or sumat.

Anyway, I tried checking out, and it said something like 'Order successful' but also had a message saying there was a problem with my payment and I should re-submit the order. So I did this, but then it said that I had just ordered the same items and shouldn't re-submit the order unless I want to order the same things again. I didn't want to risk ordering the same mp3s twice and getting charged for the second lot, so I decided to check my email and see if Amazon had sent me an order confirmation email.

Amazon had sent me an email, but just to say there was a problem with my order, so I clicked the link in my email and it went to a page with a list of all my cards registered with Amazon, so I deleted all the old ones that don't work okay. After that it didn't say my order could go through or anything so I read the email from them again and it said I would have to re-do my order again. ANNOYING! So I added all the tracks to my basket again, but when I clicked my basket to check out, the basket was empty. So I tried again, and when I clicked the add to basket button next to the songs I wanted it definately said 'added to basket', but they still weren't being added to my basket.

So I gave up, I wasted more than £3 of my time, and even if I had got the free mp3s they only would have been worth about £0.20 to me as whilst I only listen to mp3s, I much prefer physically owning songs rather than some bits and bytes that can easily be deleted. Thanks Amazon.

After that I did some more work on my website and fixed a couple of syntax errors. One of them was with my DELETE statements. If you use a DELETE with multiple tables, e.g. if your DELETE statement contains a LEFT JOIN to find rows in one table that don't exist in another table, then you must use DELETE tableYouWantRecordsToBeDeletedFrom FROM tableYouWantRecordsToBeDeletedFrom LEFT JOIN othertable...

I wasn't doing this, I just thought it would delete the records from the table specified after FROM. Mysql website info: DELETE Syntax.

Whoo! I just discovered that there is a <code> tag so you can write code instead of using blockquote and bleh stuff. Probably I should do a custom template for this blog, but I cannae be bov-cheese at the momentre.

After getting that working on my website I decided to take some photos of the flowers on a Succulent plant I've had in my bedroom the last week or so. I brought it up here from the living room to take photos of the flowers but have been too busy doing other stuff.

I took a few photos, haven't processed them yet. I think probably I should look at other people's flower photos to try and get some inspiration. After that I playd on Animal crossing for a bit, then it was dinner time.

After dinner I went on Animal a bit more, then me, Mac and Ben watched Lost. Then I went on Animal Crossing a bit more. It was annoying because there was a snowball near the beach, so I found the other snowball and rolled it down to the where the other snowball was, but then the first snowball wasn't there anymore. So I looked all round the map to try and find it again, but it wasn't anywhere, and when I came back to where I started the other snowball had gone too.

I didn't see any more snowballs. About 9pm I went to bed as I had a headache, probably from not getting much sleep last night.

The weather today was a mixture of clouds and sunshine, with the day finishing with a pretty clear sky that lit up a nice orange colour after sunset.

Food
Breakfast: Bowl of Chocolate oat crunch cereal mixed with Rice Crispies; cup o' tea.
Lunch: Beef with mustard and crunchy salad sandwich; 2x cheese twists; Prawn cocktail flavour pringles; banana; Cadbury's caramel mini-roll; Bailey's chocolate truffle; Galaxy truffle celebration; cup o' tea.
Dinner: 2x Cheapo sausages; mashed potato; peas; carrots; potato; 2x small Yorkshire biscuits (Yorkshire puds that were hard like biscuits). For pudding I had the last of the Christmas pud with custard and cream - delee!! Coffee.

Thursday, 25 December 2008

Christmas day

Got up this morning about 8.20am, had a shower etc, breakfast, and then vacuumed my room, which I had meant to do yesterday but didn't have time. After that I opened Ben's present, and Ben opened my present, which was a Kirby plushies.

Then we went to church in Naseby with Clare, where she was playing the organ. We were too late to go the Christmas day service at the Baptist Church in town (normal church didn't have a Christmas day service).

When we got back home Shaz opened her present from me, which was some perfume/smellies samples and a choice of either £20 or my LaCie BigDisk 320GB external hard drive. So she wanted to see the drive to see how big it was, but when I showed it to her I realised that it didn't have a USB connection, only firewire. So I looked at her laptop, and it had a mini firewire connection, but I didn't have a firewire - mini firewire cable, so I had to try and the hard drive box which I thought might have a cable in it.

I looked in all the boxes in the garage, and also the boxes in my room but couldn't find the box anywhere, so I gave up and asked Rad if he had a cable Shaz could use, then I could always buy a cable from ebay for a few quid if Shaz wanted the hard drive rather than £20. Rad did have a cable, so I gave that to Shaz for her to test the drive with.

Then I thought about looking in the loft, so I looked in the loft and after I'd looked in nearly every box up there I found a box that did have the LaCie drive box in it. Shaz ended up saying that she'd rather have the £20 as the Lacie Big disk external drive is just too big and heavy, but at least now I know where the box for it is.

After that I started doing some washing up, then we had dinner. After dinner I did more washing up, then we had pudding. After pudding we opened the present from Uncle Gez and Lian, which had loads of stuff in. Probably I like the sweetened fruit pieces best.

After dinner I sorted out my DVDs so they all fitted in the box I keep them in, and put back the other boxes in my room that I had got out to see if they had the LaCie hard drive box in them. Then I went on Animal Crossing until tea time. I gave Mac all the Jingle stuff he didn't have but I did have, and then sold any further duplicates I had to Nook, so I made about 100,000 bells from selling them. It was so much that I had to put some of money in a bag of 99,000 bells. Imagine if you plnted that as a bell tree! I put the money towards my mortgage, and now I only have about 150,000 left to pay off I think.

After tea me, Mac and Ben started watching The Dark Knight, then partway through we stopped and watched the new Wallace & Gromit on TV. Then we finished watching The Dark Knight.

The christmas presents I got were:
  • Cabury's selection stocking & a bag of white chocolate coins from Granny Santa
  • 2x bars Sainsbury's caramel chocolate from Ben
  • Bob Dylan boxset & £10 from Mac
  • Some socks and Collins Concise guide to UK moths from Clare
  • £5 from Grandad
  • £30 from Rad
  • The Digital Photography Book 2 by Scott Kelby from Shaz
  • Collins Complete British Insects from Trevor


The weather today was overcast all day again.

Food
Breakfast: Choc crunch oat cereal; cup o' tea.
Dinner: Petit Pois; Chicken; Gravy; stuffing; 4x small yorkshire puds; roast potatoes; roast parsnips; mashed potato; carrots. About ⅓ glass of red shloer. For pudding I had a bit of Christmas pud with custard and cream. Coffee.
Tea: Slice of roast beef with mustard and salad sandwich; prawn cocktail flavour pringles; small slice of Kirby cake; Cadbury's Strawberry mini roll; cup o' tea; Bailey's chocolate truffle.

Wednesday, 24 December 2008

Jingle all the way

This morning I played on Animal a bit and did some work on my website.

This afternoon I did some work on website.

This evening I watched Lost, did some work on my website, went on Animal and visited Jingle lots of times.

The weather was overcast most of the day, though there was a slight break in the cloud in the morning.

Food
Breakfast: Lemon marmalade toast sandwich; cup o' tea.
Lunch: Edam cheese sandwich; satsuma; small slice of madeira cake; Mr Kipling's Exceedingly Merry Mince Pie; cup o' tea.
Dinner: Potato wedges; 2x slices pepperoni pizza; salad. Pudding was a slice of Kirby cake that Ben & Clare had made. Coffee; Advent calendar chocolate.

Tuesday, 23 December 2008

Lowepro lens cases

This morning I checked my email, and then thewebsqueeze. After that I opened my website to do some work on it, I needed to change my scripts that used the table pages_percountryinfo, since I'd deleted this table and merged it into percountryinfo. So I used Dreamweaver to find all instances of pages_percountryinfo and then changed the code where applicable. But when I tested the site, it wasn't working properly.

Then the delivery of Lowepro Lens cases that I ordered yesterday afternoon arrived, so I opened that up and tested the cases to see which of my lenses would fit in what cases. Here are the results:

Lowepro Lens Case 1S fits:
  • Nikon 50mm/1.4D lens
  • Canon EF-S 18-55mm/3.5-5.6 IS lens
  • Tokina 10-17mm/3.5-4.5 DX fisheye lens (bit tight)
  • 68mm Kenko extension tubes
  • Kenko 2x TC


Lowepro Lens Case 1 fits:
  • Nikon 18-70mm/3.5-4.5G DX lens without hood (very tight fit with reversed hood and zoom will extend as you try and pull the lens out)
  • Tokina 10-17mm/3.5-4.5 DX fisheye lens
  • Canon MP-E 65mm/2.8 lens (very tight fit, not recommended)
  • And anything that fits in the Lowepro Lens Case 1S


Lowepro Lens Case 1W fits:
  • Nikon 18-70mm/3.5-4.5G DX lens with reversed or mounted hood or wide filters (my widest is 77mm) attached. Will also fit with Cokin P Filter holder attached, though not with any filters in the filter holder.
  • Canon MP-E 65mm/2.8 lens
  • EOS 450D camera with no lenses or anything attached
  • And anything that fits in the Lowepro Lens Case 1


Lowepro Lens Case 2S fits:
  • Canon 100mm/2.8 Macro without hood (I don't have the hood to test)
  • Nikon 70-300mm/4.5-5.6G VR (not recommended - lens is slightly higher than the pouch, making it hard to close)
  • And anything that fits in the Lowepro Lens Case 1W except the Cokin P filter holder


Lowepro Lens Case 3 fits:
  • Nikon 70-300mm/4.5-5.6G VR with reversed hood
  • And anything that fits in the Lowepro Lens Case 2S, including those lenses with the Cokin P filter holder mounted


After that I attached some of the lens cases to the Lowepro S&F Deluxe waistbelt to try it out. It seemed to work okay, though I needed to have the belt done up quite tight to stop it sagging away from my body where the heavy cases were attached. I also found that though the lens cases are pretty easy top open, they're more difficult to do up.

After lunch I did some work on my website.

After dinner I did some more work on my website, then from about 9pm until 11pm I played on Animal. There was a really big fish in the sea, even though it wasn't snowing or raining. The first time it nibbled it didn't bite, the second nibble it bit but was too quick so I didn't catch it. I saw it another time but pulled the line in before it bit properly.

Food
Breakfast: Lemon marmalade toast sandwich; cup o' tea.
Lunch: Mature cheddar cheese sandwich; clementine; slice of blackforest gateaux; chocolate digestive biscuit bar; cup o' tea; 2x Bailey's chocolate truffles.
Dinner: Ham quiche; potato; corn on da cob; green beans; butter. For pudding I had half a Muller crunch corner - vanilla yoghurt with white and milk chocolate coated crispy balls - surprisingly nice. Coffee; Bailey's chocolate truffle.
Evening snack: Coffee; a couple of cadbury's dairy milk chocolate buttons.

Monday, 22 December 2008

Going on a walk and buying camera bags

This morning I went out on a walk with Brian. When we left it was a mixture of cloud and clearer sky, with the cloud blocking the sun. As we drove through the countryside the sun came out, and it was really nice seeing the countryside lit up by the warm winter sun.

When we started the walk the sun had gone in again, although after about 15 or 20 minutes it came out again for about 20 minutes, but then the sky clouded over and it was overcast for the rest of the walk.

On the walk we saw a hunting party hunting pheasants, and they had a pile of about 20 pheasants they'd killed. We also saw a woman with pheasants strapped round round her. We saw lots of alive pheasants as well.

The walk was nice, though would have been a lot nicer if it wasn't overcast. The ground was also very wet and muddy.

When we got back home my Lowepro 65AW camera pouch/bag that I vought off ebay had arrived, so I unpackaged it and tried fitting my D200 + 70-300VR with reversed hood in it. It did fit, but only just. The bag was a bit shorter than I thought it would be, but sticks out quite far from the belt.

As many people have commented about the 75AW bag mounting on the belt too far away from the top of the bag, so the bag pulls away from the belt, I found the same problem with the 65AW.

I've tried attaching it to the belt using 6cm carabiners connecting the carrying strap loops on the bag to the S&F Harness loops on the belt. Not actually used it like this yet, but it felt better like this just trying it on.

Lowepro 65AW bag and Street &amp; Field Deluxe Waistbelt

Main purpose of this photo is to show how the bag mounts to the S&F Deluxe Waistbelt as when I looked at all the photos of the bag before buying it I couldn't see how it actually mounts to the belt. The mesh section on the back of the bag pulls away from the back of the bag and you can push the belt through there. There is also a piece of velcro under the mesh bit, that sticks to the 'fuzzy' section on the back of the S&F Deluxe belt.

After lunch I copied the pics I took on the walk to my comp, sorted them a bit, tagged them with the lens and filters used and then batch processed the ones that didn't look like they didn't need HDR or stitching into a pano.

After that I had a look at different Lowepro bags I could get to go with my Lowepro Street and Field Deluxe Waistbelt. As the 65AW doen't have much room in it, I wanted to get another bag to hold all my filters, lens blower, sensor cleaning, etc. stuff. Another bag that can carry a camera with lens attached would also be nice, that way I could take my canon and nikon cameras with lenses with me.

After much looking I decided to just order lens cases from Warehouse Express (I had to order by 6pm today to get free delivery). I bought:
Lowepro Lens Case 1£9.99For Tokina 10-17mm/3.5-4.5 DX fisheye
Lowepro Lens Case 2S£13.99For Canon MP-E 65mm/2.8 or 100mm/2.8 macro lenses
Lowepro Lens Case 1W£14.99For Nikon 18-70mm/3.5-4.5G DX with reversed hood or 77mm polariser attached
Lowepro Lens Case 1S£11.99For Nikon 50mm/1.4D
Lowepro Lens Case 3£13.99For Nikon 70-300mm/3.5-5.6G VR
Free delivery£.00
Total (inc. VAT)£64.95


There was a nice looking Lowepro bag on ebay that looked like it might fit on the Street & Field Deluxe Waistbelt, and hold a camera + accessories and/or lenses.
Photo of Lowepro bag from ebay auction
I bid a minute before the auction ended to try and make sure my bid would go through, and it went through almost immediately, but then a few people bid in the last minutes, and in the last few seconds I got outbid. It ended up going for £15.59 + £4P&P, my top bid was £15. Quite a good price when you consider that the much smaller Lowepro bags that just hold a camera and a couple of small accessories cost between £20 and £30.

Because my bids don't go through when I bid near the end of an auction, but if I bid when there's still some time to go I always get outbid, I decided to look for some ebay sniping software as I think most people must be using sniping software to bid within the last few seconds of an auction.

First I found this site called Auction Lotsnipe that says it will snipe auctions for you, for FREE, but you have to give them your ebay login details for them to snipe on your behalf (obviously). I did some googling to check the company was legit and not just stealing ebay login details, there weren't many posts about it, but I did find this yahoo answers page: What's the best Ebay "sniper" software out there?
where a couple of people recommend goofbay.

So then I googled for goofbay, again not many reviews, but I did find a thread on the Money Saving Expert (MSE) forums where someone said they had been using it without problems for quite a while. So I decided to give goofbay a try and signed up there, and put a snipe in for Lowepro Nova 4 bag, which looks quite similar to the bag I got outbid on, except it's green. Would've prefered black, but never mind.

If I win it, I hope it's not too big to attach to the Lowepro S&F Deluxe waistbelt. It would also be good if I could fit the 450D with 100mm macro or MP-E lens attached, and the MT-24EX flash mounted.

I checked my email, and had an email from ecashback saying it had a link to a free £5 voucher for amazon.co.uk. So I clicked on the link, but it just went to the amazon.co.uk site and there wasn't a mention of a £5 voucher anywhere. There was, however, a mention of amazon's January sale. I'm not sure if it's their real january sale, or just one for books and a few other things. I had a look at the art & photography books, just looked through a few pages of them, but they all seemed around normal amazon.co.uk price.

After dinner I watched Lost with Maccy and Ben, then watched a Jan Svankmeier film with Mac. Then I finished checking my email, and I'd been outbid on the green Lowepro Nova 4 bag that I had put a snipe bid in for. So I searched ebay for 'Lowepro' and looked through all the listings to see if there were any other similar bags that looked like they might be good.

Then I tried taking some photos of a succulent plant flowers using the Canon 100mm/2.8 macro, but they didn't come out very well.

Food
Breakfast: Lemon marmalade toast sandwich; cup o' tea.
Lunch: 2x cheese on toasts; bit of white wine; satsuma; honey & muesli flapjack crumbs; slice of chocolate swiss roll; chocolate digestive biscuit bar; cup o' tea.
Dinner: Breaded fish portion; peas; potato; mashed potato; spaghetti in tom sauce; salt; ground black pepper; butter. Pudding was black forest gateaux. Coffee.

Sunday, 21 December 2008

Birthday

This morning I went on Animal Crossing for a bit, and Groucho gave me a birthday cake. I also got a snowglobe from the Mayor as it's the shortest day of the year. At breakfast I opened a few cards and they had money in them. Then I played on Animal a bit more, then we (Me, Mac, Ben and Shaz) went to Church.

After church I went on Animal for another couple of minutes, then watched Mac go on it for a few minutes, then it was dinner time.

After dinner me, Mac and Ben watched Lost, then I played on Animal a bit more and paid my mortgage off. Tom Nook is now going to add another storey to my house!

I checked my email, Luminous Landscape and Moose News Blog.

The presents I got today were:
200g bar of Cadbury's Turkish delight chocolate from Mac
£15 from Mac
2x 200g bars of Sainsbury's caramel chocolate from Ben
£10 from Grandad
£10 from Granny
£15 cheque from Clare
£20 from Brian
Box of Bailey's chocolate truffles from Clare
The Digital Photography Book by Scott Kelby from Shaz

The money can go towards all the photography stuff I've bought recently, or the Lowepro lens cases I'm planning to order from Warehouse Express tomorrow.

Sarah's boyfriend Mark went home today, I didn't really see him at all or know he was going, Clare had said he would be staying us over Christmas, but he actually left early this morning.

After tea I played on Animal a bit more, and then watched another episode of The Blues documentary series with Mac. Then I went on Animal some more. I also tried installing OSX86 on Microsoft Virtual PC 2007 again, but it still didn't work. I googled about it, and it seems that OSX86 doesn't work on Microsoft Virtual PC 2007. So I burnt the image to a re-writable DVD, and I might try and install it on my PC normally.

Food
Breakfast: Lemon marmalade toast sandwich; cup o' tea.
Dinner: Nasi Goreng; noodles; chicken nugget. For pudding I had a Mr Kipling's exceedingly merry mince pie and some custard. Coffee.
Tea: Grated mature cheddar cheese cob sandwich; sea salt & black pepper Kettle chips; banana; ½ piece of honey & muesli flapjack; cup o' tea.
Supper: Slice of black forest gateaux; cup o' tea.

Saturday, 20 December 2008

Troubles with Microsoft Virtual PC 2007

This morning I checked my email and then had a quick play around with the Raphael javascript library to create a div with rounded corners. It can also do gradients as well, and apparently works on Safari, FF, IE6 and IE7. I got it to make a rounded corners box underneath some text in a div on FF3. I haven't tried it on any other browsers yet. I had to change to js so it appends the graphic to an element rather than just document.body (only 2 lines that need changing, pretty simple).

The main problem I found with it was that you can't (as far as I can see) set % height and width, but only px values. So if I have a div set to 50% pagewidth, I can make the Raphael curved corners box fit the div by setting it's height and width to the offsetHeight and offsetWidth of the div. But then if the page is resized, the Raphael curved corners box will stay the same size. You could add an onresize handler to resize the Raphael box, but if you could set % values it would be much better. Whether % values are a restriction of the underlying vector graphics engines or of Raphael I don't know. I will have to look into Raphael more, but really should finish off work on milkcapmania first.

Then I went on Animal for quite a while and caught a Tuna! After that I went on HMV.com to see if I could spend my hmv vouchers that I received from pigsback.com today. Unfortunately it didn't seem that I could redeem them online, just e-gift vouchers that have lots of spaces for entering lots of characters and discount code, which didn't work when I entered the voucher number.

The vouchers are also redeemable at Waterstones and lots of other places. There's a Waterstones in town, so maybe I can spend them there in the January sales.

After that I tried installing Ubuntu on Microsoft Virtual PC 2007 as I wanted to have Konqueror available for testing web stuff like Raphael on. Unfortunately it gave an error saying that the PC wasn't x64 but i386, and to use the i386 version of Ubuntu. I tried downloading the latest version of Microsoft Virtual PC 2007 for 64bit OSes, but still the same problem. So I did some googling and found a guide to installing Ubuntu on Microsoft Virtual PC 2007, which recommended to install the Service Pack 1 version of Microsoft Virtual PC 2007. So I did that, but it just unintalled my current version. I installed it again and it installed.

I tried to install Ubuntu on it again, but still the same error. Unfortunately there doesn't seem to be any option on Microsoft Virtual PC 2007 that lets you set the processor, so I had to download Ubuntu again, but the i386 version. Then Ben, Clare and Mac came back from down town, and we had lunch about 1.15pm.

After lunch Ubuntu had finished downloading (I used the torrent, which downloads very fast). But instead of installing that, I first tried installing OSX86. Unfortunately that didn't work, and gave an error about the processor or sumat. So I did some googling and read something about installing the Virtual Machine Additions. I tried that a few times, but never got anywhere. I think that actually the Virtual Machine Additions are only to be installed from Windows or DOS environments, when you've already installed the OS.

I tried installing OSX86 again and this time got an error about 'com.apple.Boot.plist', I did some googling and read this: com.apple.Boot.plist not found errors fixed by Chameleon, ppf patches also available for Kalyway 10.5.2 & Leo4Allv3. The CD image I've got is iATKOS_5i Leopard 10.5.5, so I tried a patch meant for iATKOS 2.0i, since there didn't seem to be one for 5i. Unfortunately I still got the same error.

So I tried following this guide over at the OSx86 forums: Retail DVD Guide, 10.5.5, PC-EFIv8 or Chameleon, EFI studio, Vanilla or Modbin 9.4, GA-P35-DS3P (L,R), DS4, or OS X Compatible board, Sept 25th v4.3 Guide w/ latest kexts, Vanilla or modbin, Chameleon. But didn't get anywhere with that either. It seems from the guide that you need 2 drives/partitions to do the install, I'm not even sure if you can set up a virtual PC to have more than one drive. Would be a bit pointless to have 2 drives in a virtual PC anyway. So I'll leave this for another time.

After that I got Ubuntu installed on a virtual machine, was pretty easy. But the internet didn't work. I tried setting 'Local only' instead of 'Shared Networking (NAT)', and restarting it, but it still didn't work. I did some googling, but all the info just said to set the network adapter in the Microsoft Virtual PC 2007 settings to whatever adapter you use to connect to the internet on your host PC, and then in Ubuntu selected 'Wired' under the connections. My PC connects wirelessly to the internet, and the wireless adapter isn't listed in the network adpater options in the Microsoft Virtual PC 2007 settings.

Shared Networking (NAT) works for my IE6 and IE8 virtual machines, so I thought I'd try logging into the IE6Tester machine to see if there were some connection settings in there that I needed to copy across to the Ubuntu installation to make that work. But the IE6 virtual machine couldn't connect to the internet either. It normally works okay, so I shut it down and started it up again, and the internet still didn't work.

It gave me an error about 'Duplicate Name Exists'. I did some googling, and it said this is a problem if 2 PCs exist on the same network with the same name. So I tried changing the name of the PC (The IE6 virtual machine, not my real PC) and also tried changing the Workgroup, but it just kept saying that the name already exists, whatever I typed in.

I tried using the 'Network ID' wizard, which required a restart when it finished. When the PC restarted the same error popped up, and it also needed me to enter a password to login. I had no idea what the password is, as it's a IE6 Testing environment VHD provided by Microsoft. I expect they do say what the password is on their download page, but it's never asked me for a password before. So I just shut it down and then started it up again. I still got the same error and login screen.

So I gave up and tried shutting down and then switching on again my real PC. When it loaded up again, I started Microsoft Virtual PC 2007 and loaded the IE6 virtual machine. I googled for IETester password and one of the results said it was 'P2ssw0rd', so I put that in and it logged in okay. Hooray! The internet worked. So I started up the Ubuntu virtual machine, and the internet worked on that as well.

Now I'd got the internet working on Ubuntu I wanted to download Konqueror since Ubuntu comes with Firefox, which I can already test pages on in Vista. So I googled 'Ubuntu Konqueror' and found this thread on the Ubuntu forums: Konqueror on Ubuntu? Particularly helpful is the last post there, which says to type
sudo aptitude update && sudo aptitude install konqueror
So I opened terminal, pasted that (shift-ctrl-v) and pressed enter. It wanted to know my password, but when I typed nothing was being entered. After a few tries it worked - although it doesn't show what you're typing (presumably for privacy/security reasons) the text you type is entered, so you just need to enter your password and press enter. After it downloaded and installed Konqueror I opened it up just to check it worked, it did.

Then I typed most of this looong boooring (as usual) blog post. I checked Ubuntu again and it said it had 203 files to download/update - and I thought Microsoft was bad for patches! I guess that the Ubuntu updates are improvements rather than just patching security holes though.

Shaz mateazz came home yesterday and also her boyfriend Mark, though I haven't really seen them at all apart from at breakfast this morning as they only got here about 10pm yesterday and were out all day today.

I wrapped up everyone's Christmas presents with Ben, played on Animal a bit, then it was dinner time. After dinner I watched Lost with Mac and Ben, then me and Mac watched a Scorsese Blues documentary.

Food
Breakfast: Lemon marmalade toast sandwich; cup o' tea.
Lunch: Sicillian style ham sandwich; Banana; Gregg's doughnut; small piece of end offcut of flapjack made with honey and muesli; cup o' tea.
Dinner: 2x Delee Pork & herb sausages; mashed potato; baked beans. For pudding I had chocolate and butterscotch whip (mixed together, was actually nicer like that) with tinned mandarin slices and a trifle sponge. Coffee.

Friday, 19 December 2008

Getting mysql function to work

This morning I got up about 7.45am, and the sky was quite a nice pink colour, probably shortly before sunrise. After I'd had a shower the sky was a nice orange.

After breakfast I checked my email, then did some work on my website. I'd written a mysql function to check if a record exists, and if not insert it and return the last_insert_id(), otherwise if the record already exists just return a 0 (equates to false in PHP). But it wasn't working, it wouldn't insert any records. So I started writing the function again, bit by bit and making it just return a value if the record existed or didn't exist. After quite a bit of testing, I found the problem was with my checking whether the record already exists.

My code looked like this:
IF (SELECT 1 FROM percountryinfo WHERE (
percountryinfo.Country = countryKey AND
IF(Releasedvar IS NULL, percountryinfo.Released IS NULL, percountryinfo.Released = STR_TO_DATE(Releasedvar, '%d/%m/%Y')) AND
IF(Producervar IS NULL, Producervar IS NULL, percountryinfo.Producer = Producervar) AND
percountryinfo.PageKey = PageKeyvar)) != 1
THEN do stuff;

But if the SELECT statement doesn't select anything (i.e. the record doesn't already exist), then it equates to NULL. And if you compare a NULL value against anything it will always return NULL. So I just changed my code from != 1 to IS NULL and it worked.

Only problem is, I've only got it working through phpMyAdmin at the moment.

After doing some testing, I stopped using a multi_query to run the function and just ran it in the loop, which gave me an error message, even though I hadn't asked it to pint the error, and the multi_query, where I had put to print the error wasn't giving an error. Before I fixed the error I wanted to find out why the multi_query wasn't printing the error. It turns out that the error code (I use if($mysqli->errno){echo $mysqli->error;}) needs to be inside the do loop of the multi_query, underneath the section where you deal with the results of the query, like this:
if($conn->multi_query($sql))
{
do{
if($result = $conn->store_result())
{
$row = $result->fetch_row();
if($row[1])
{$insertedCountries[] = $row;}
$result->close();
}
if($conn->errno){echo "\n$conn->error\n";}
}
while($conn->next_result());
}
if($conn->errno){echo '
'.$sql.'

'.$conn->error;}


After figuring that out I had to try and fix the error. The error was that the user I was connecting to the database as didn't have execute permission. Should be easy to fix, right?

Well I tried adding execute to the user privileges in phpMyAdmin, but it didn't modify the current permissions, but instead created a second lot something like:
User: myuser
my\db | SELECT, INSERT, UPDATE, DELETE
wildcard my_db | SELECT, INSERT, UPDATE, DELETE, EXECUTE
And the script still gave the same error about not having execute privilege.

So I tried again, but this time from the main page of phpMyAdmin, rather than from the database I was working on page.
Again it created a 2nd lot of permissions, but this time like:
User: myuser
my\db | SELECT, INSERT, UPDATE, DELETE
my_db | SELECT, INSERT, UPDATE, DELETE, EXECUTE
And the script still gave the same error about not having execute privilege.

After trying various different things and still no luck I eventually found out how to do it - I had to open the mysql.db table and change Execute_priv to Y for the my\db entry.

Next I tried to change the function so that I could inject sql into it. Again, I played around with this for quite a while but didn't have any luck, so I ended up posting to the websqueeze to see if anyone knows whether it's possible or not, but I think not.

After lunch I tried changing the function so it doesn't return LAST_INSERT_ID(), but just 0 for no insert and 1 for row inserted, then use $mysqli->insert_id to get the last insert id in PHP. Unfortunately this didn't work either. Although the mysql website doesn't say that insert_id doesn't work for functions, it does say that it doesn't work for stored procedures, so I guess it doesn't work for functions either:
mysql_insert_id() returns 0 following a CALL statement for a stored procedure that generates an AUTO_INCREMENT value because in this case mysql_insert_id() applies to CALL and not the statement within the procedure. Within the procedure, you can use LAST_INSERT_ID() at the SQL level to obtain the AUTO_INCREMENT value.


Next I tried writing the function as a stored procedure. I did have a bit of trouble here, but not too much, the main problem was it didn't like me having a DEFAULT value for an OUT parameter

Then I did some more testing and found there were a few problems with the mysql function and procedure - first I hadn't put the tinyints and ints as UNSIGNED, so for the tinyints when a value was above 127 it would just insert 127 into the database. Also dates were being inserted as 0000-00-00, this was a syntax error on my part, and there was another error where I was checking whether a variable was null, rather than a field. After fixing them I found it all worked okay.

I added a table to print the methods and time they took for all the methods I was using to check whether a record exists, and if it doesn't insert it and return the inserted record's key/id. I ran this 10 times (each time checked/inserted 5 records) and found that making a long query in the loop and running it after the loop had finished was fastest. So then I copied that method, and changed it so the insert query and select inserted ids query are run in a multiquery, to see if that was any faster.

Then I ran it again, once with 5 records for it to check/insert and once with 1 record for it to check/insert. I haven't had time to look properly at the results yet.

I backed up all my stuff, then played on Animal Xing for a bit until dinner time.

After dinner I watched Lost with Mac & Ben, then checked my email, which took ages as the internet kept breaking. I copied some pics to my comp from my camera memory cards and then processed a few to JPEGs.

The weather today was a mixture of sun and cloud, but mostly overcast.

Food
Breakfast: Lemon marmalade toast sandwich; cup o' tea.
Lunch: Sicilian style ham sandwich; clementine; 1 white grape; Mr Kipling's Exceedingly Merry Mince Pie; cup o' tea.
Dinner: slice of home-made cheese and tomato pizza; jacket potato; mixed veg. Pudding was neapolitan ice cream. Coffee; Sainsbury's caramel chocolate.

Thursday, 18 December 2008

Reading emails and going on Animal

This morning I checked my email, and spent quite a while reading an article about Microsoft wanting to work with PHP developers to get PHP working better on windows. I did a bit of work on my website, then played on Animal Crossing for a bit.

After lunch I did a bit more work on my website, then went out for a short walk with Ben. I did a bit more work on my website, then from about 3.30pm - 5.30pm when Mac came home I went on Animal Crossing. Weirdly I managed to catch about 3 or 4 Koi, so I gave one to Rolf, 1 to the museum and sold the other(s) to Nook. I tried to catch a sea bass so I could release it in a small freshwater pond, but couldn't find any. When Mac got home he went on Animal, and caught a stringfish!

After dinner I watched Lost with Ben and Mac. Then I did a bit more work on my website and spent quite a while putting good songs on Mac's SD card so he can play them at work tomorrow. All day I've been on my comp I've been listening to 30's songs.

Then I watched Ghost Town, which has Ricky Gervais in it (doing all his usual mannerisms) with Mac. It was quite good for a drama/comedy, actually had a few funny bits in it, and the plot, acting and production were all decent. I gave it 6/10 on IMDB.

The weather today was overcast in the morning, then brightened up by lunchtime, then became overcast again and was still overcast at sunset.

Food
Breakfast: ½ bowl of fake cocopops; ½ grapefruit marmalade toast sandwich; cup o' tea.
Lunch: 2x cheese on toasts; clementine; end cut offs of flapjack made from honey and muesli; cup o' tea.
Dinner: Pasta; tomato sauce stuff; meatballs; grated cheese. Pudding was a small cherry bakewell. Coffee; Advent calendar chocolates.

Wednesday, 17 December 2008

Crossing Animals and Mysql user defined functions

Got up this morning about 7.45am. After breakfast I checked my email and went on Animal for a bit. I made a perfect snowman and there was a notice that Nook is having a ½ price sale tonight at 8pm, and on the 20th or 22nd (can't remember) he is having a double points day or sumat like that.

After that I checked my email again and did a bit more reading on user defined functions in mysql. I copied an example from the mysql website and got it working on my PC. Then I tested it on the webserver, there's not much point me trying to make my own function if it's not going to work on the server. So I tried it on the server, I could create the function but couldn't execute it, and couldn't add the execute privilege to any users. So I emailed evohosting to see what the problem was.

I also downloaded NetBeans PHP IDE and started downloading Ubuntu and OSX86.

Before lunch Clare gave me back my background stand, which she had used for a puppet show. I took the stands out and the middle section of the crossbar fell apart, the bit on the end that inserts into the end tube fell off. I put it back in and then searched around on top of the white shelves in my cupboard for the allen key that tightens the screws on it. I tightened the screw up, and that fixed the loose bit in place. But then I couldn't insert that end into the end pole. so I had to loosen the screw a bit, and then it fit okay.

After lunch I checked my email again, evohosting had replied and had enabled execute for the test user I was testing with. So I guess when I want to add execute to a user's privileges I just need to ticket them. I tested the script on the server, and the function now executed okay.

I vacuumed my room and also put all the camera bits on top of the white shelf in my cupboard in a box. I also took all the flashes and flash bits from the hanging shelves in my cupboards, and put them in a box. Then I put both the boxes on top of the white shelves. I also packed all my other camera gear in the Lowepro Slingshot 300AW bag and put one lens in the box that already had some lenses in it.

I tried modifying the function to get it to return more than one value, but couldn't get it to. I tried setting
  • RETURNS varchar(50), int
    RETURN CONCAT('Hello, ',s,'!'), 5;
  • RETURNS varchar(50), int;
    RETURN CONCAT('Hello, ',s,'!'), 5;
  • RETURNS varchar(50), int
    RETURN SELECT (CONCAT('Hello, ',s,'!'), 5);

But all of them just gave a syntax error.
I also tried
RETURNS char(50)
DECLARE result char(50);
SET result = (SELECT CONCAT('Hello, ',s,'!'), 5);
RETURN result;

And that didn't have a syntax error, but instead gave an error saying there should only be one column.

So it looks like for getting multiple values I will have to writing a procedure, which I don't think is as good as a function since you need to run two queries from php to get the result - once to call the procedure and secondly to get the the result.

The other problem with mysql user defined functions and procedures is that it seems to need to specify all the arguments/parameters expected. Since in my case I am dealing with a loop, this means I would need to call the procedure each time the loop runs. If I didn't need to specify arguments/parameters then I could just run the loop and aggregate the values needed to be passed to the procedure, and pass them in one go once the loop had finished, and then have mysql loop through them all.

Possibly I may be wrong about the above, once I've got a basic procedure working I will examine the param_list column of the mysql.proc table to see if this is anything to do with it.

After dinner I watched Lost with Mac and Ben, then I went on Animal for a bit. I did some fishing and caught a string fish! Then I went to Nook's and bought a blue cupboard or sumat similar and a spade in the half price sale. I let Ben go on Animal for a bit and he just bought loads of paper - probably more than 2 full inventories full. I had just finally got so bored I was going to go away when Ben said he'd finished, then I went on it a bit more. I still couldn't catch any Koi - they must be rarer than stringfish! Also 2 animals wanted me to get them a specific fossil, I don't normally get any fossils since Mac always digs them all up in the morning.

The weather today was nice all day, most blue sky but then at sunset there was a massive cloud, but it was above/behind the sun and lit up a really nice orange as the sun was setting.

Food
Breakfast: Bowl of fake coco pops; cup o' tea.
Lunch: Sumat (maybe Roma) style ham sandwich; clementine; bits of end of honey & muesli flapjack; cup o' tea.
Dinner: 2x big sausage rolls; potatoes; baked beans; a few peas. For pudding I had 2x butter pastry mince pies with a bit of cream that was left over (not enough cream really) - delee pies. Coffee; Sainsbury's caramel chocolate.

Tuesday, 16 December 2008

Being trapped in Mac's room with Ben

This morning I checked my email and ebay, then did some work on my website. I got stuck trying to make a multi_query skip queries, eventually I gave up and posted a question on how to do it on thewebsqueeze before lunch.

After lunch I checked my email and ebay again, then went on a short walk with Ben. When we got back I went on Animal for a bit. There was a bloke glueing some carpet down with smokey glue, so I couldn't get into my room. The batteries for the wiimote ran out, so I made a christmas tree with a £5 note and two £10 notes that were on Mac's table using instructions on a website Ben was going on.

After a bit some batteries that I'd put in the spleencharger had spleencharged, so I got them and put them in the Wiimote and carried on playing on Animal. I had to try and get a Red Snapper for Broccolo and a Koi for Rolf. After much fishing I caught a Red Snapper, but I never caught a Koi. Then Mac came home and said he had to go on Animal, so I never did catch a Koi.

After dinner Me, Mac and Ben watched Lost, then me & Mac watched The Warriors. Then I tried writing a mysql function, but I think I will have to do some more reading on this.

The weather today was overcast all day.

Food
Breakfast: Fake coco pops; cup o' tea.
Lunch: Mature yet mellow cheddar cheese sandwich; banana; slice of honey muesli flapjack; chocolate digestive biscuit bar; cup o' tea.
Dinner: Chilli con carne; rice; tortilla chips with melted cheese on. Pudding was Lemon pud with custard. Coffee; Roses.

Monday, 15 December 2008

ebay is annoying

Got up this morning about 6.30am. Had breakfast, then finished running the mysql SELECT IN test that I was doing on Friday. It is much faster to build up the query inside the loop and then execute the query in one go when the loop's finished.

Loop 5 times

OR IN IN2

0.00798606872559 0.00504803657532 0.00319099426270

0.00821709632874 0.00626087188721 0.00343608856201

0.00728511810303 0.00468301773071 0.00320792198181

0.00834417343140 0.00567698478699 0.00334596633911

0.00859093666077 0.00527000427246 0.00325489044189

0.01122093200680 0.00462007522583 0.00328207015991

0.00714206695557 0.00437498092651 0.00323915481567

0.00991106033325 0.00634288787842 0.00347900390625

0.00950288772583 0.00515413284302 0.00312805175781

0.00950288772583 0.00515413284302 0.00312805175781
Avg 0.00877032279968 0.00525851249695 0.00326921939850


And the test script I used:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
div{
border: 1px solid #000;
}
.left{ float: left;}
.right{float: right;}
</style>
<title>Untitled Document</title>
</head>

<body>
<?php
include('globalFuncs.inc.php');

$words = array('a', 'ac', 'accumsan', 'ad', 'adipiscing', 'Aenean', 'Aliquam', 'amet', 'ante', 'aptent', 'arcu', 'at', 'auctor', 'augue', 'bibendum', 'Class', 'commodo', 'condimentum', 'consectetuer', 'consequat', 'conubia', 'convallis', 'Cras', 'cubilia', 'Cum', 'Curabitur', 'Curae;', 'cursus', 'dapibus', 'diam', 'dictum', 'dignissim', 'dis', 'dolor', 'Donec', 'dui', 'Duis', 'egestas', 'eget', 'eleifend', 'elementum', 'elit', 'enim', 'erat', 'eros', 'est', 'et', 'Etiam', 'eu', 'euismod', 'facilisi', 'facilisis', 'fames', 'faucibus', 'felis', 'fermentum', 'feugiat', 'fringilla', 'Fusce', 'gravida', 'habitant', 'himenaeos', 'iaculis', 'id', 'imperdiet', 'in', 'inceptos', 'Integer', 'interdum', 'ipsum', 'justo', 'laoreet', 'lectus', 'leo', 'libero', 'litora', 'Lorem', 'luctus', 'Maecenas', 'magna', 'magnis', 'malesuada', 'massa', 'mattis', 'Mauris', 'metus', 'mi', 'molestie', 'montes', 'Morbi', 'mus', 'Nam', 'nascetur', 'natoque', 'nec', 'neque', 'netus', 'nibh', 'nisi', 'nisl', 'non', 'nostra', 'Nulla', 'Nullam', 'nunc', 'orci', 'ornare', 'parturient', 'pellentesque', 'penatibus', 'per', 'Phasellus', 'placerat', 'porttitor', 'posuere', 'Praesent', 'primis', 'Proin', 'purus', 'quam', 'quis', 'rhoncus', 'ridiculus', 'risus', 'rutrum', 'sagittis', 'sapien', 'Sed', 'sem', 'semper', 'senectus', 'sit', 'sociis', 'sociosqu', 'sollicitudin', 'suscipit', 'Suspendisse', 'taciti', 'tellus', 'tempor', 'tempus', 'tincidunt', 'torquent', 'tortor', 'tristique', 'turpis', 'ultrices', 'ultricies', 'urna', 'ut', 'varius', 'vehicula', 'vel', 'velit', 'venenatis', 'Vestibulum', 'vitae', 'Vivamus', 'volutpat', 'vulputate');
/*
$sql = "INSERT IGNORE INTO tagsTest (Tag) VALUES ('";
$sql .= implode("'),('",$words)."')";
$conn->query($sql);
if($conn->errno){echo '<br>'.$sql.'<br><br>'.$conn->error;}
*/
echo '<div class="left"><p>OR</p>';
$start = microtime(true);
for($i=0; $i<5; $i++)
{
$tags = array();
for($j=0; $j<20; $j++)
{
$tags[] = $words[rand(0, (count($words)-1))];
}

$sql = "SELECT `Key`, Tag FROM tagsTest WHERE Tag = '";
$sql .= implode("' OR Tag = '", $tags)."'";
$tags = array();
//if($conn){echo $sql;}
if($result = $conn->query($sql))
{
while($row = $result->fetch_row())
{$tags[] = $row;}
}
if($conn->errno){echo '<br>'.$sql.'<br><br>'.$conn->error;}
echo '<div>';
foreach($tags as $tmp)
{echo "{$tmp[0]} =&gt; {$tmp[1]}<br>";}
echo '</div>';
}
$end = microtime(true) - $start;
echo "<p>$end seconds</p>";?>
</div>
<div class="left"><p>IN</p>
<?php
$start = microtime(true);
for($i=0; $i<5; $i++)
{
$tags = array();
for($j=0; $j<20; $j++)
{
$tags[] = $words[rand(0, (count($words)-1))];
}

$sql = "SELECT `Key`, Tag FROM tagsTest WHERE Tag IN ('";
$sql .= implode("', '", $tags)."')";
$tags = array();
//if($conn){echo $sql;}
if($result = $conn->query($sql))
{
while($row = $result->fetch_row())
{$tags[] = $row;}
}
if($conn->errno){echo '<br>'.$sql.'<br><br>'.$conn->error;}
echo '<div>';
foreach($tags as $tmp)
{echo "{$tmp[0]} =&gt; {$tmp[1]}<br>";}
echo '</div>';
}
$end = microtime(true) - $start;
echo "<p>$end seconds</p>";?>
</div>
<div class="right"><p>IN2</p>
<?php
$start = microtime(true);
$sql = array();
for($i=1; $i<6; $i++)
{
$tags = array();
for($j=0; $j<20; $j++)
{
$tags[] = $words[rand(0, (count($words)-1))];
}

$sql[] = implode("', '", $tags)."') AND pages.Key = $i)";
$tags = array();
}
$sql = implode(" OR (tagsTest.Tag IN ('", $sql);
$sql = "SELECT tagsTest.Key, tagsTest.Tag, pages.Key FROM tagsTest, pages WHERE (tagsTest.Tag IN ('".$sql;
if($result = $conn->query($sql))
{
while($row = $result->fetch_row())
{$tags[$row[2]][] = $row;}
}
if($conn->errno){echo '<br>'.$sql.'<br><br>'.$conn->error;}
for($i=1; $i<6; $i++)
{
echo '<div>';
foreach($tags[$i] as $tmp)
{echo "{$tmp[0]} =&gt; {$tmp[1]}<br>";}
echo '</div>';
}
$end = microtime(true) - $start;
echo "<p>$end seconds</p>";?>
</div>
</body>
</html>


After doing that test I started writing a test to compare running an INSERT query followed by a SELECT LAST_INSERT_ID() in a loop with making a long INSERT and SELECT query and then running them when the loop finished, and also with writing the queries in the loop but then executing them with multi_query() outside the loop. However, after writing this I came across a few problems.

First off, I have been SELECT LAST_INSERT_ID() rather than $mysqli->insert_id() because my understanding was that LAST_INSERT_ID() was connection specific whilst insert_id() probably wasn't. This was due to the following statement in the 'Friends of ED PHP Solutions - Dynamic Web Design Made Easy' book, which says:
The SELECT query highlighted in step 6 uses the filename and caption of the record just
entered as search criteria. This is a more accurate way of finding the primary key than a
technique that you often see recommended. By calling the mysql_insert_id() function,
you can get the primary key of the most recently inserted record (as long as it uses
auto_increment). MySQL Improved and PDO both offer equivalents with the insert_id
and lastInsertId properties. respectively. Most of the time, this will give you the information
that you want, but on a busy server, someone else might insert another record at
the same time. To be sure that you get the correct primary key, it’s best to be specific in
your request.
However, it seems that insert_id() is connection specific, and actually is the exact same thing as LAST_INSERT_ID(), except of course you can just run it from your mysql object in PHP rather than having to perform another query to get the ID.

The following sites/posters all say that insert_id() is reliable so long as you don't use a shared connection or close and open a connection between the insertion and calling insert_id():
Not getting last insert id
PHP and MySQL Insert ID
[PHP-DB] Is persistent connection + MySQL + Apache + insert_id === safe?
And even the mysql website says it's connection specific:
You can retrieve the most recent AUTO_INCREMENT value with the LAST_INSERT_ID() SQL function or the mysql_insert_id() C API function. These functions are connection-specific, so their return values are not affected by another connection which is also performing inserts.
(I think I must have read this before but not understood that the mysql_insert_id() C API function is what PHP uses when using insert_id()).

So I will actually need(?) to rewrite my test to use insert_id().

The other thing was that with the long built up query, because we are inserting all the rows in one go, we can't get the last_insert_id, so instead I have to build up a long SELECT statement that selects the key based on all the data that's just been inserted. This is the same way the author suggests you get the last_insert_id in the PHP Solutions book I mentioned earlier.

So my code to pull the rows look like this:
if($result = $conn->query($sqlSELECT))
{
while($row = $result->fetch_row())
{$insertedCountries[] = $row;}
$result->close();
}
However, there is a problem with this, since your data might exist in the table more than once. If you are just selecting one id, then this okay, you can just loop through the rows retrieved until you get to the last one, which should be the last inserted row. But I can't see how to get it to work with selecting the id/keys of multiple records without selecting duplicate records.

This led me on to looking at how to avoid duplicate rows. This post explains how to do this using a Unique key on multiple columns: how to prevent duplicate rows but allow duplicate column entries. However, this doesn't work with columns that allow NULL, e.g. Unique indexes and NULL column values.

Then when I thought about it a bit more, I don't actually want UNIQUE rows in the percountry table (which is the table these tests are inserting/selecting from) as I'm using a lookup table to associate the page id with the percountry record. So in the percountry table I should be able to have 2 rows exactly the same, but then in the lookup table one row might be assigned to page 10, whilst the other row might be for page 12.

Then this got me thinking - why am I using a lookup table for this? Because each percountry record must be associated to one page, and one page only, I might as well just have the page key/id in the percountry table. Then before I insert a record to the percountry table I think I will need to do a check to make sure the record doesn't already exist.

After lunch I did a bit more reading/coding, then played on Animal for about an hour. I didn't do much really, just spoke to Sahara who said she wanted some old carpets, then I spoke to all the animals, and only one had an old carpet. Then I had to run around to try and find Sahara to give her the old carpet.

The rest of the afternoon I did more coding and reading, though I still haven't finished writing my test script yet.

After dinner I bid on a Lowepro Topload Zoom AW bag, I bid £20 with 30 seconds of the auction left, but annoying ebay didn't put the bid through and it sold to someone else for £16.66 + £7 P&P. Annoying for the person selling it as well since now they won't get as much for it as they would have done if ebay hadn't blocked my bid.

Then I watched Lost with Mac & Ben. I did a bit more coding and then watched the end of Shaolin soccer with Mac and Ben. After that Ben went on Animal again since it was his bed time and he wanted to see the meteor shower before he went to bed. Maccy looked it up on the pinternet, but it seems there's not really anything special about the meteor shower except you can see shooting stars (though you can't wish on them) in the sky.

Food
Breakfast: Bowl of fake coco pops; cup o' tea.
Lunch: Cheese straw; chicken tikka sandwich spread sandwich; 1½ bananas; toasted tea cake with butter; cup o' tea.
Dinner: Potato; peas; ham quiche. Pudding was a slice of chocolate swiss roll with tinned mandarin segments and chocolate custard. Coffee.

Sunday, 14 December 2008

Looking at the Lowepro S&F Deluxe waistbelt and compatible bags

This morning went on Animal, but only for a few minutes, just managed to sell a few of the fish I caught yesterday to Nook. Nook's has now finished its remodelling and looks like a small Co-op or similar shop. Kind of like the Tomato Convenience Store in Shenmue. Then Ben went on it for a few minutes and sold some stuff, then we had to go for church.

When we got back from Church I went on Animal again, Maccy said that Sow Joan had red turnip seeds so you can grow your own turnips, so I wanted to buy some. I got Maccy to check on the pinternet when Sow Joan is around, and she's only around until 12pm, but we got back from church about 12.20pm so she'd already left and I couldn't buy any turnip seeds. D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh! D'oh!

I carried on going on Animal anyway and sold off part of my fish stock to Nook, but then it was jin the pinner time. After dinner I went on Animal again and finished off selling my fish and other random items that I had to store yesterday while Nook's was closed for remodelling. I also wrote letters to all the animals with presents, hoping they'll write back to me with a better present.

Then Me, Mac and Ben watched Lost, after which Ben went on Animal and I watched him for a bit. Then I went on my comp and checked hotukdeals.

After tea I went on my comp again and checked ebay for Lowepro topload/toploader bags and lens pouches. On ebay there was a cheap Topload Zoom AW bag, which had some good photos of the bag. One of the photos of the bag was of the back, and I couldn't see how it was supposed to attach to the Lowepro S&F (Street and Field) Deluxe Waistbelt, which I bought a few weeks ago. So I did some googling, which didn't really turn up much except sites selling the S&F Deluxe Waistbelt and the topload/toploader bags.

I had a look on the Lowepro website, and looked at the Toploader bags, and it specifies on there (at least on the Toploader 75AW page) that the toploader bags work with the S&F Deluxe Waistbelt, whilst the other bags just say they work with belt/harness systems rather than specifying the S&F Deluxe Waistbelt. Looking at image 6 on the pages of the Toploader bags, it says "When you’re traveling light, simply slide an S&F Deluxe Waistbelt or your own belt through the Toploader’s back belt slot." Looking at the image of the back of the Topload Zoom AW, it just says "Slide your own belt or an optional Belt & Buckle through the belt slot.".

So it seems that only the Toploader bags are compatible with the S&F Deluxe Waistbelt, although looking at the image of the back of the Toploader bags, I still couldn't see how they would attach to the belt. I did a search on dpreview and got quite a bit of info there.

Reading the messages on dpreviewabout the Lowepro Toploader 75AW, quite a common complaint seemed to be that it attaches to the Deluxe waistbelt quite low down and so gets a bit top heavy and leans away from the belt. Quite a few people seem to use it on a harness or as a standalone bag and are happy with there though.

Then I read someone's post who said they use carabiners to attach a bag to the S&F Deluxe waistbelt. The other alternative it seems to use a belt much smaller than the S&F Deluxe Waistbelt, so that it can actually thread through the belt loops on waistpack/topload/toploader bags, e.g. the Lowepro S&F Light waistbelt.

I did some more googling and eventually found this useful page: Lowepro Street and Field system Review. And he also uses carabiners to attach the bags to the waistbelt. So it seems like using carabiners will be the best way to attach a bag to the waistbelt. I don't want to buy another belt when I've already paid good money for my Deluxe waistbelt, and I expect the waistbelt is much comfier to wear than the light waistbelt as well.

I did bid on a Lowepro Toploader 75AW bag on ebay this evening, but got outbid, it went for £40 inc. P&P. There's a Topload Zoom AW bag and a Toploader 65AW bag ending in the next few days, so I'll see if I can get either of them (I would definitely like the Toploader 65AW since it's not as big, though the Topload Zoom might be better suited for if I'm using the 70-300mm lens. But maybe even that would fit in the 65AW?

Anyway, I'll see if I can get them and if not then I'll probably order (along with a few lens pouches) from Warehouse Express before Christmas while they're still doing free postage on orders over £50. I can't help thinking that prices might be going up after Christmas as well, due to the slump in the pound.

Other things I think I'll need are a lens hood that can screw into my 77mm polariser, and a cheap ball head with arca-swiss compatible QR clamp. I often get nasty flare when using it on my 18-70mm lens (about the only lens I use it on), and can't use the lens hood for the lens as the polariser is too big (the lens only has a 67mm filter thread). I could get a 67mm polariser, but that would be expensive and I can't help thinking that rotating the polariser inside the lens hood would be kind of difficult without getting finger prints all over the front of the polariser.

The ball head would be to use on my monopod with shoulder brace, I don't really like the small FLM CB18 Ball Head I've got to use with that at the moment. The head on it is either locked or loose and it doesn't have a QR clamp so mounting and unmounting a camera or lens foot to it takes a while to screw/unscrew the head from the camera/lens foot without just unscrewing the ball head from the monopod.

Food
Breakfast: Grapefruit marmalade toast sandwich; cup o' tea.
After church snack: Ginger biscuit; coffee.
Dinner: Flavoured rice; grilled chicken nuggets (were a bit soft compared to being fried like normal); fried slices of Leek and pork sausage (delee!). Pudding was a hot home-made mince pie with cream and a Mr Kiplings Mince Pie.
Tea: Mature yet Mellow cheddar cheese sandwich; white grapes; slice of honey flapjack (made with museli rather than porridge oats so had sultanas in it); chocolate digestive chocolate bar.