Sunday 28 February 2010

Making Eccles Cakes

This morning I started cutting out some pogs in photoshop, then went to Church. After Church I carried on cutting out the pogs, then finished cutting them out after dinner.

In the afternoon I uploaded the pogs to my pog website, watched 'Where the sidewalk ends' with Mauser, and started making some Eccles Cakes with L.

After tea, me and L finished making the Eccles Cakes. I checked Andy Rouse's blog and Moose Peterson's Blog, and updated my pog website with the new images I'd uploaded. I did a backup and checked a bit of the Luminous Landscape while waiting for it to complete, then went to bed.

The weather was rainy first, but the rain had stopped by 10.15am. The rest of the day was overcast. Although it wasn't particularly windy, the wind was very cold.

Food
Breakfast: Bowl of Banana and Choco Puffs Cereal and Maple and Pecan Crunch Cereal; Cup o' Tea.
Dinner: Chilli Con Carne; Rice; Grated Mozarella; Cheesey Tortilla Chips. Pudding was: Aero White Chocolate Mousse with Ice Cream; Chocolate Wafer Biscuit; Dark Chocolate Digestive. Coffee.
Tea: Peppered Ham with Dijon Mustard and Mediterranean style Salad Sandwich; Egg & Bacon Mini Scotch Egg thing; Apple; Clementine; Slice of Genoa Cake; Cup o' Tea.
Evening Snack: Eccles Cake; Cup o' Tea.

Saturday 27 February 2010

Processing and uploading photos

This morning I finished off processing the batch of Korea photos I've been working on for the past week (yes, it took me a week to add metadata to and process 37 photos).

Yesterday evening I was getting annoyed with Adobe Bridge saying that it couldn't save metadata to jpegs. When you pressed OK on the File Info panel, it would just pop up a message saying there was an error and it couldn't save the metadata, then go back to the normal Bridge view. So you would loose all the metadata you'd just entered.

If you tried again, it would then save okay, but of course, you have to enter all the information you wanted to save in the metadata agin, so quite annoying. I remembered that I had heard about Photomechanic software being used for adding metadata to images, and that quite a few Pros used Photomechanic.

So I had a look at Photomechanic, but it cost $150, a bit much for a program just for adding metadata. So I looked to see if Photo Mechanic had any benefits over Adobe Lightroom. Reading this thread, it seems that people just use PhotoMechanic for culling images due to its fast preview rendering of images. So not much use to me.

In the afternoon I wrote this blog post so far, and then processed an image I'd missed in the morning. I checked the metadata on all the image's I'd processed so far, then started uploading them to my photo website. While I was waiting for the images to upload I read of of 'Close ups in Nature' by John Shaw, and also started processing a pano.

After dinner I finished uploading the photos to my photo website and also finished processing the pano I'd been working on.

The weather today was mostly overcast, though the sun did break through a few times. Before sunset there were quite a few clouds around with breaks in them, so it looked like it was going to be a good sunset, but then they blew away and were replaced by one giant cloud (overcast) so there wasn't a visible sunset. In the morning and in the evening it rained. It also rained occasionally throughout the afternoon.

Food
Breakfast: Bowl of Banana and Choco Puffs Cereal and Maple and Pecan Crunch Cereal; Cup o' Tea.
Lunch: Grated Mature Cheddar Cheese with Salad Sandwich made with fresh Bread-Maker-made Bread; Egg & Bacon Mini Scotch Egg thing; Crust of fresh Bread-Maker-made Bread with Blackcurrant Jam; Mini Waver Chocolate Bar; Cup o' Tea.
Dinner: Breaded Fish Portion; Tartar Sauce; Ground Black Pepper; Peas; Mashed Potato. Pudding was: Aero White Chocolate Mousse; Fox's Crinkle Crunch Cream; Dark Chocolate Digestive. Coffee.

Friday 26 February 2010

Processing photos

This morning I tried to find out why there was a sort of glow around the bright (and also some not-so-bright) areas on some of the images that I processed yesterday. I initially thought it was CCD Blooming, but after googling I found that it wasn't. I made some crops/enlargements of the problem, and was going to post them to the D100-D300 users forum on dpreview when I figured out what the problem was, which was that I had taken the photos with the lens wide open instead of stopping it down.

So I wrote a blog post covering this problem, and then added it to my photo website.

The rest of the day I was just processing Korea photos. In the evening I also watched Bo play on Banjo Kazooie Nuts & Bolts for a bit.

The weather was a mixture of sun and cloud. It was quite windy today. What's weird is that while there has been wind the last few days, the wind hasn't been a strong wind (until today). Normally there's quite often a strong wind. Without looking back through my blog posts I can't say how long we've had without the strong wind, but it seems like since Christmas. There was a nice sunset with some clouds around.

Food
Breakfast: Bowl of Banana and Choco Puffs Cereal; Cup o' Tea.
Lunch: Bowl of Vegetable flavour fake Cup a Soup; Slice of Toast; Apple; Plum; Slice of Flapjack; Cup o' Tea.
Dinner: Slice of Chicken Tikka Pizza that Bo made at School today; Slice of Ham & Mushroom Thin Pizza; ½ Jacket Potato; Chips; Salad. Pudding was a slice of Bo's birthday cake - a Raspberry Gateaux, with Tinned Mandarin segments, Tinned Peach Slices, and Cream. Coffee; 4x pieces of Sainsbury's Caramel Chocolate.

Thursday 25 February 2010

Metadataring and processing a few photos

This morning I checked my email, then finished off adding metadata to a few Korea photos.

I went in the garden to put some food out for the birds. I found that the food in the feeder, which I'd put some food in during the winter, but the birds hadn't touched, had all stuck together and didn't look that good, so I cleaned it out.

After lunch I uploaded one of the Korea photos to my photo website, then remembered that I hadn't fixed the problem with locations being duplicated in the location table on the database the website uses.

I had previously modified the mysql trigger to prevent duplicate records in the location table, but hadn't actually made the change to the trigger on the database on the web server. I noticed a possible problem with the trigger, so I modified it a bit more, then did a bit of local testing with it.

When I was satisfied that it seemed to be working okay I made a backup of the databases on the web server, and also replaced my local copy of the photo website database with the copy of the one from the web server. I then ran my procedure, which I'd written previously, to remove duplicates from the location table. However, I found that while it did remove duplicates, it messed up the locations that images were referencing i.e. before running the procedure an image would reference one location, and running the procedure, the same image would now be referencing a different location.

Obviously, I didn't want to mess up my data, so I looked into what the problem was. When I saw the problem, it was quite obvious. The problem was that the procedure was updating the lookup tables that hold the image and location relationships as each location was added to the location table. This meant that after a record had been updated, if its new location_id matched the old location_id of another record that was subsequently updated by the procedure, the record would get its location_id updated again (and so to a wrong value) since the procedure provides no way for telling what records have been updated and what records haven't.

So I modified my procedure to add in an updated column with default 0 to the lookup tables, and set that to 1 when a record was updated. Then I modified the procedure to only update records where updated was 0. An alternative would have been to copy the lookup tables to temporary tables, and then use them for selecting the records that needed updating. They way I did it was quite slow, so using temporary tables may have been a better idea.

Either way, the modified procedure worked okay, and since it was hopefully a run once only, the slowness wasn't too bad (It took 2.63s, but I only had something like 400 records for it to go through).

Anyway, here's the modified procedure as I used it:
DELIMITER //
DROP PROCEDURE IF EXISTS remove_location_dupes//
CREATE PROCEDURE remove_location_dupes()
BEGIN
DECLARE id, Sublocation, City, ProvinceState, country, WorldRegion INT;
DECLARE done INT DEFAULT 0;
DECLARE cur1 CURSOR FOR SELECT location.id, location.Sublocation, location.City, location.ProvinceState, location.country, location.WorldRegion FROM location;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cur1;
# Disable Foreign Key Constraints so we can empty the location table
SET foreign_key_checks = 0;
# Truncate location table
TRUNCATE TABLE location;
ALTER TABLE `img_locationShown` ADD `Updated` TINYINT UNSIGNED NOT NULL DEFAULT 0;
ALTER TABLE `img_locationCreated` ADD `Updated` TINYINT UNSIGNED NOT NULL DEFAULT 0;
# Loop through location table
the_loop: LOOP
FETCH cur1 INTO id, Sublocation, City, ProvinceState, country, WorldRegion;
IF done THEN
ALTER TABLE `img_locationShown` DROP `Updated`;
ALTER TABLE `img_locationCreated` DROP `Updated`;
SET foreign_key_checks = 1;
CLOSE cur1;
LEAVE the_loop;
END IF;
# Try inserting the location into the location table
INSERT IGNORE INTO location SET location.Sublocation = Sublocation, location.City = City, location.ProvinceState = ProvinceState, location.country = country, location.WorldRegion = WorldRegion;
IF LAST_INSERT_ID()
THEN
# Update img_locationShown and img_locationCreated with the correct location id
UPDATE img_locationShown SET img_locationShown.location_id = LAST_INSERT_ID(), UPDATED = 1 WHERE img_locationShown.location_id = id AND UPDATED = 0;
UPDATE img_locationCreated SET img_locationCreated.location_id = LAST_INSERT_ID(), UPDATED = 1 WHERE img_locationCreated.location_id = id AND UPDATED = 0;
END IF;
END LOOP the_loop;
END
//
DELIMITER ;

I had quite a bit of touble getting the procedure on the web server though. When I entered it through the SQL option on phpMyAdmin, it would break PHP?!? (Made PHP not respond, didn't kill it). So I ssh'd into the server (and after restarting PHP), logged into mysql. But now when I tried to create the procedure, I would get the following partway through
Display all 1034 possibilities? (y or n)
Googling, I found this was because I had tabs in the code. So I removed the tabs, and then I could create the procedure okay, and call it. I guess I could remove the procedure now as well, but I don't think there's any harm in leaving it there.

After checking the locations didn't seem to be messed up at all, I uploaded a couple more Korea photos to the website, processed a couple more Korea photos, then uploaded them to the website as well.

In the evening I processed a few more Korea photos.

The weather was a mixture of sun and cloud, but it clouded over around sunset. The snow hadn't melted much the last couple of days, but the rest of it (apart from the piles) melted away today.

Food
Breakfast: Bowl of Choco Moons Cereal; Cup o' Tea.
Lunch: Mature Cheddar Cheese Sandwich; Apple; Clementine; Crumpet with Blackcurrant Jam and I cannae believe it's nae butter jimmy; Slice of Lemon Drizzle Cake; Cup o' Tea.
Dinner: Southern Fried Chicken; Jacket Potato; Baked Beans; Tinned Plum Tomato; Grated Mature Cheddar Cheese. Pudding was a slice of Bo's birthday cake - a Raspberry Gateaux. Coffee; One of Bo's Birthday Sweets - a Lemon Chocolate.

Wednesday 24 February 2010

Metadataring

Today I was still just researching and adding metadata to some Korea photos. I managed to get a few more images done than yesterday, but still not many.

In the evening I also watched Lost with Mauser and Bo.

The weather was a mixture of sun and cloud, but it clouded over around sunset. The snow hadn't melted much the last couple of days, but the rest of it (apart from the piles) melted away today.

Food
Breakfast: Blackcurrant Jam Toast Sandwich; Cup o' Tea.
Lunch: ½ Breaded Ham Sandwich with Sliced Tomato and Dijon Mustard; ½ Beetroot Sandwich; Packet of Roast Chicken flavour Crisps; 2x Clementines; Slice of Lemon Drizzle Cake; Piece of Flapjack; Cup o' Tea.
Dinner: Chicken Pie; Potatoes; Carrots; Green Beans; Gravy. Pudding was a slice of Chocolate Swiss Roll with tinned Mandarin Segments and Custard. Coffee; 3x pieces of Sainsbury's Mint Creme Chocolate.

Tuesday 23 February 2010

Metadataring

Today I was still just researching and adding metadata to some Korea photos. I managed to get probably about 6 images done! If I knew Korean it would be a lot easier and quicker.

The weather was overcast (and cold - the snow didn't melt much) all day. In the late afternoon / early evening, it also snowed a little bit.

Food
Breakfast: Blackcurrant Jam Toast Sandwich; Cup o' Tea.
Lunch: Breaded Ham Sandwich with Dijon Mustard; Clementine; Banana; Slice of Lemon Drizzle Cake; Chocolate Waver Bar; Cup o' Tea.
Dinner: Bowl of Scotch Broth; Burger in Bun with Tartar Sauce, Tomato Ketchup, Sliced Vine Tomato, and Grated Mature Cheddar Cheese. Pudding was a slice of Strawberry Cheesecake. Coffee; Piece of Sainsbury's Caramel Chocolate; 2x pieces of Sainsbury's Mint Creme Chocolate.

Monday 22 February 2010

Trying to find out where the dongs are

This morning I carried on trying to add metadata to some images from when we arrived in Korea. I had a photo of a building, but didn't know what the building was, so I tried to find out. The building did have some hangul at the top of it. Using the Korean phrasebook I managed to work out that the first two hangul said samsŏng, but I couldn't work out the romanisation of the next character, it looked like ongoae, but I didn't think this could be right since each hangul character is one sylable.

Googling for samsung or samsŏng and seoul, I got plenty of results, but nothing that seemed to be related to the building my photo was of.

So I found this guide on how to be able to type in Korean on Windows Vista and the key mappings for typing in Korean on an english keyboard. When I tried it out, it wouldn't let me type what the third character on the sign looked like - o ㅗ followed by ng ㅇ in a single charater, so obviously that couldn't have been what the sign said. So instead I tried h ㅎ, which looks a bit like an ㅗ above an ㅇ, which is what the character on the sign looked like it had.

This worked okay, and when I'd finished typing up the sign (삼성화재) and put it into google, the results I got were for Samsung Fire, which apparently is a large insurance company in South Korea. Looking at their website though, the photo of their headquarters was not the same as the building I'd taken a photo of.

There was a photo of the building on Google Earth, but that didn't say what the building was. So I found someone on Xiha life who's from Korea, and on their profile it said they could speak English. I uploaded the photo to my xiha life page, then sent them a message to see if they could id it for me.

I tried to find out what my next photo was of (well, actually where it was taken). I had geocoded the image, but although I had roads ticked in Google Earth, it wasn't displaying the name of the road where the photo was taken. So I put the co-ordinates into google earth, which showed the road name in Korean. Unfortunately the labels in things in Google Maps aren't copyable text, so I had to slowly write out what the label on the road said.

When I'd got the road name, I put it into Google, which came up with a Korean Wikipedia article on Namdaemunno. I wanted to check this was correct, as the last character looked like it started with an r, not an n. So I tried to transcribe the Hangul to latin script, and found that it said Namdaemunro. Putting this into google, it seemed it should be Namdaemun-ro.

Then in Google Earth, I noticed a point that said Namdaemnunno 2 (i) ga on the road in question. Looking up Namdaemunno on the english wikipedia, it said
Namdaemunno is a major thoroughfare in the central districts of Seoul, South Korea and a two-way road consisting of 8 lanes. With a 2 km length and a 40∼50m width, Namdaemunno originates at Bosingak in Jongno-gu and terminates at Seoul Station in Jung-gu. [1]
So it seems that the road is called Namdaemunno.

Next I spent ages trying to work out what the latin transcription of 서울특별시 (Seoul Special City) is. After much googling and work, I think it is 'Seoul Teukbyeolsi', though this only has 8,400 results on google. The main problem I'm having is that I don't know where the spaces in Korean should come, and also the Korean phrasebook I've got is based on the McCune Reischauer system instead of the current Korean Romanisation system that was introduced in Korea in 2000.

The rest of the day I spent trying to find a map of the dongs (neighbourhoods) in the Jung-gu district of Seoul, and what dong our hotel was in. But despite spending most of the afternoon and evening on this, I couldn't find either. Google Earth does have markers with the dong names on them, but there's no way to know where one dong starts and another dong ends.

I also geo-coded some images that weren't already geo-coded, then found that actually they had been geo-coded. The geo-data for the images had been saved into a .xmp sidecar file for some cheesun instead of into the NEF. And also for some cheesun, Adobe Bridge wasn't picking up the geo data from the XMP sidecars, and it wouldn't pick it up even after I'd embedded the XMP in the NEFs.

The weather was overcast (and cold - the snow didn't melt much) all day.

Food
Breakfast: Blackcurrant Jam Toast Sandwich; Cup o' Tea.
Lunch: Breaded Ham Sandwich; 2x Clementines; Slice of Flapjack; Fake Wagon Wheel; Cup o' Tea; Piece of Sainsbury's Truffle Chocolate.
Dinner: Spaghetti; Carbonara or sumat similar sauce; Bacon; Mixed Veg; Ground Black Pepper. Pudding was Jamaica Giner Cake with Golden Syrup and Custard. Coffee; Piece of Sainsbury's Caramel Chocolate.

Sunday 21 February 2010

Not much

This morning I started cutting out some Slammer Whammers in Photoshop. After L got up, I went out in the garden, and we rolled up some snowballs as some more snow had fallen (maybe about 4cm by the time we went out, though there was more initially, just it was melting).

We went to church, then after church I finished cutting out the Slammer Whammers in Photoshop. I also checked if the Amazon Machine Tags Wordpress plugin was now displaying the ads how I wanted, using a span to clear the float. Happily, it seemed to be working okay.

After dinner I uploaded the Slammer Whammers to my pog website, and updated it. I also watched a couple of episodes of Power Rangers with L. I got up to date on Moose Peterson's blog, and then watched a bit of 'A Weekend at the Greek' (Jack Johnson) with Mauser while waiting for L to finish his homework so I could make some Eccles Cakes with him.

Eventually L finished his homework, so we went to make some eccles cakes, but then there was hardly any hard marg left, so we couldn't make any.

For the rest of the afternoon and evening I was adding metadata to some photos of Korea. In all the time, I only managed to add metadata to about 5 images. Most of the time was spent googling, trying to find where places were/what their names were (in english, hangul, and hanja), etc.

The weather today started off with light snow, which cleared quite quickly. Then gradually through the morning the cloud started to clear. The rest of the day was a mixture of cloud and sun, and there was a nice sunset.

Food
Breakfast: Blackcurrant Jam Toast Sandwich; Cup o' Tea.
Dinner: Chicken Tikka or sumat similar; Rice; (not you) Naan Bread; Cup o' tea.
Afternoon Snack: Piece of Flapjack. Pudding was Ice Cream with Sauce; Shortbread Finger; 2x Chocolate Wafer Biscuits; Cup o' Tea.
Tea: Mini Scotch (scrambled) Egg thing; Beetroot Sandwich; Piece of Flapjack; Caramel Rocky; Cup o' Tea.

Saturday 20 February 2010

Trying to get Amazon Machine Tags Wordpress Plugin working

This morning I was doing more work on my photo website blog, trying to get the Amazon Machine tags plugin working okay.

I was having trouble with the Amazon ads being totally squashed in IE6 (1% height for IE6 is specified in the CSS that comes with the Amazon machine tags plugin). If I removed removed this line, then the text following the ad wouldn't clear, and would instead float left against the image in the Amazon ad.

This problem is not with the Amazon machine tags plugin, but rather something some other rule in my CSS was causing or interacting with the amtap CSS to cause the problem. So I spent most of the morning trying to debug what CSS rule(s) was causing the problem.

Eventually I found the problem was that I'd set a 400px height on my #content div, and this was making the 1% height clearing trick for IE6 to not work, but instead make it 1% of the height of the 400px #content div. A fix for this was obviously to set the height of the #content div to auto. However, this then caused problems on short pages as it would mean that the page would be too small to fit in the height of the sidebar (which is absolutely positioned in IE6).

So instead I decided to edit the XSLT used for generating the Amazon ads, and add a clearing div after the advert. However, I now had a problem in that in all versions of IE, the content before and after the Amazon ad was wrapping tightly to the top and bottom (respectively) of the Amazon ad. It took me quite a while, but eventually I worked out that the XSLT was outputting my clearing div I'd added as <div class="clear" />, and IE was interpreting this as an opening div tag instead of a self closing tag.

So for the small portion of the morning I had left and also quite a bit of the afternoon, I tried different ways to try and get the div to process as a starting tag and an ending tag instead of just a self closing tag. Unfortunately my efforts were confounded by the XSL being cached by Amazon, so I couldn't tell whether my changes were having any effect or not.

I did find one change I made, when I left it for about an hour, then refreshed the page, I now got an XML error, despite my XSLT being valid (validated it in the W3Schools XML validator, and I only added in a couple of tags anyway, so you could see it was valid). Weirdly, the last end div tag in the XSLT wasn't being processed for some reason.

In the evening I watched an episode of The Equalizer, and also added some metadata to some blurry photos I took on the plane before we left for Korea, back in October. I carried on trying different methods to get an empty clearing div at the end of the amazon ad, but they all seemed to end up with a missing </div> tag, so being invalid XML and breaking the page.

Eventually I found the problem was not with my XSL rules, but rather with the way the Amazon Machine tags plugin extracts the Amazon ads created by the XSLT to put in the post. I had assumed that since the method of the XSLT that comes with the Amazon Machine Tags Plugin was XML rather than HTML, that the plugin was using XML parsing methods to extract the ads from the XML document generated by the XSLT. But actually, it just uses a regex to extract the contents of the divs:
// Match anything within a division
preg_match_all( '/]*>(.*?)<\/div>/ix', $sItems, $aItems, null );
So of course, this regex was extracting from the start div tag of the Amazon ad to the end div tag of my clearing div, thus resulting in the end div tag of the Amazon ad being missed out. To fix this, I tried using a clearing span instead of a clearing div, I haven't tested whether this works yet though.

In the evening I also watched a bit of The 39 Steps with Mauser, Clare, and L, and went on Civ IV for a bit in Mauser's bedroom.

The weather was a mixture of cloud and sun. There was an okay sunset, there was a large cloud above the horizon, but for some reason (probably it was too far forward), it didn't get lit up underneath by the sunset.

Food
Breakfast: Orange Marmalade Toast Sandwich; Cup o' Tea.
Lunch: Grated Mature Cheddar Cheese Sandwich made with Fresh Bread-Maker-made Bread; A few Flamin' Hot Chilli Sauce Flavour Pringles; Crust of Fresh Bread-Maker-made Bread with Strawberry Jam; Piece of Tiramisu; Caramel Rocky; Cup o' tea.
Dinner: 2x Posh Sausages; Mashed Potato; Baked Beans; Tinned Plum Tomatoes. Pudding was Rice Pudding with Strawberry Jam. Coffee; Piece of Lemon Flavoured Turkish Delight; Loads of Turkish Delight Icing Sugar.
Supper: Hobnob; 2x Wafer Biscuits; Cup o' Tea.

Friday 19 February 2010

Websiting

This morning when I got up it was still snowing quite a bit, but there wasn't any more snow on the ground than there was yesterday evening.

After breakfast I went out in the garden with L and we rolled a snowball to the bird table so I could put some food out for the birds. We rolled the snowball a bit more, then L accidentally kicked the pot of mealworms over, so the blackbirds had a nice food supply all day.

I did some work on my photo website, I found the slideshow was stopping after a few images. Debugging this, I found the problem was that the characters like & had been encoded to entities like &amp;. This is needed when writing HTML, but not when using javascript.

Unfortunately, it doesn't seem like there's a native javascript function for decoding HTML entities (most results on google seemed to involve adding the text to a textarea element, and then reading back the textarea's value). So I just changed my code to decode the HTML entities on the server side before the data got sent back to the browser/javascript.

The rest of the morning and afternoon I was working on getting the Amazon Machine Tags plugin working on my photo website blog, and signing up with the various country specific Amazon affiliate schemes.

I received the latest edition of Layers Magazine (which I get through a digital subscription with Zinio), and it had this strange advert in it. The advert was just saying that the 'little tree' car air freshner design is a registered trademark, and so you can't use it without permission from the company that makes them. Maybe there are lots of freelance designers using the tree design car air freshner in their work or sumat?

In the evening I watched a couple of episodes of Power Rangers with L, and also 2 Yoshi Electron videos about Oskillators. They were quite funny because
  • He calls oscillators oskillators
  • He kept putting wires in one hole in the breadboard, then taking it out again and putting it in a different hole
  • A lot of the time he would have his hand in front of the camera so you couldn't see what he was doing
  • Since I don't know anything about electronics I had no idea what he was on about


The weather was a mixture of cloud and sun. It also snowed quite hard for about half an hour in the afternoon.

Food
Breakfast: Orange Marmalade Toast Sandwich; Cup o' Tea.
Lunch: Ham with Sliced Cherry Tomatoes and Crunchy Salad Sandwich; Apple; Unripe Pear; French Fancy; Cup o' tea.
Dinner: Potato; Peas; Breaded Fish Portion; Ground Black Pepper; Salt; Tartar Sauce. Pudding was a piece of Tiramisu. Coffee; Piece of Sainsbury's Truffle Chocolate; Piece of Sainsbury's Caramel Chocolate; 3x pieces of Sainsbury's Mint Creme Chocolate.
Supper: 3x Wafer Biscuits; Cup o' Tea.

Thursday 18 February 2010

Websiting

This morning I put some more food out for the birds and washed up the bird tray.

I checked my email, and then did some more work trying to get MySQL working. I tried removing the data directory in the mysql 5.5 installation, then copying across the data directory from the mysql 5.4 installation, removing the innodb log files, then starting MySQL, but I still got the same error I did yesterday about not having the permissions to read my.cnf.

So I thought I'd go back to MySQL 5.4, I renamed the directories, and started up mysql 5.4, but this now wouldn't start, and I was getting the same error about not being ale to read my.cnf! How can renaming a directory and then renaming it back again cause a program to stop working like this?

I looked up how to stop apparmor in Ubuntu: sudo invoke-rc.d apparmor stop


I tried starting MySQL again, but now got errors about the errmsg.sys and InnoDB log files having the wrong size:

100218 10:30:48 mysqld_safe mysqld from pid file /home/djeyewater/webapps/mysql/data/rusty-ubuntu.pid ended
100218 10:36:07 mysqld_safe Starting mysqld daemon with databases from /home/djeyewater/webapps/mysql/data
100218 10:36:07 [ERROR] Error message file '/home/djeyewater/webapps/mysql/share/mysql/english/errmsg.sys' had only 622 error messages,
but it should contain at least 637 error messages.
Check that the above file is the right version for this program!
100218 10:36:07 [Note] Plugin 'FEDERATED' is disabled.
InnoDB: Error: log file ./ib_logfile0 is of different size 0 33554432 bytes
InnoDB: than specified in the .cnf file 0 3145728 bytes!
100218 10:36:07 [ERROR] Plugin 'InnoDB' init function returned error.
100218 10:36:07 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
100218 10:36:07 [ERROR] Aborting

100218 10:36:07 [Warning] Forcing shutdown of 1 plugins
100218 10:36:07 [Note]
100218 10:36:07 mysqld_safe mysqld from pid file /home/djeyewater/webapps/mysql/data/rusty-ubuntu.pid ended

So I renamed the MySQL 5.4 folder to mysql-old and the MySQL 5.5 folder to mysql and tried starting MySQL 5.5. Amazingly, it actually started.

So it seemed the problem was due to appArmor. Why it was okay before installing MySQL 5.5 but now blocking any changes, I have no idea.

I looked in the syslog and found:
Feb 18 10:30:48 rusty-ubuntu kernel: [ 1970.138194] type=1503 audit(1266489047.998:32): operation="open" pid=3150 parent=3069 profile="/usr/sbin/mysqld" requested_mask="r::" denied_mask="r::" fsuid=1005 ouid=1005 name="/home/djeyewater/webapps/mysql/my.cnf"
Feb 18 10:30:48 rusty-ubuntu kernel: [ 1970.201373] type=1503 audit(1266489048.062:33): operation="open" pid=3150 parent=3069 profile="/usr/sbin/mysqld" requested_mask="r::" denied_mask="r::" fsuid=1005 ouid=1005 name="/home/djeyewater/webapps/mysql/share/mysql/english/errmsg.sys"
Feb 18 10:30:48 rusty-ubuntu kernel: [ 1970.340206] type=1503 audit(1266489048.201:34): operation="open" pid=3150 parent=3069 profile="/usr/sbin/mysqld" requested_mask="r::" denied_mask="r::" fsuid=1005 ouid=1005 name="/home/djeyewater/webapps/mysql/share/mysql/charsets/Index.xml"
Feb 18 10:30:48 rusty-ubuntu kernel: [ 1970.340357] type=1503 audit(1266489048.201:35): operation="mknod" pid=3150 parent=3069 profile="/usr/sbin/mysqld" requested_mask="w::" denied_mask="w::" fsuid=1005 ouid=1005 name="/home/djeyewater/webapps/mysql/data/rusty-ubuntu.lower-test"
Feb 18 10:30:48 rusty-ubuntu kernel: [ 1970.340432] type=1503 audit(1266489048.201:36): operation="mknod" pid=3150 parent=3069 profile="/usr/sbin/mysqld" requested_mask="w::" denied_mask="w::" fsuid=1005 ouid=1005 name="/home/djeyewater/webapps/mysql/data/rusty-ubuntu.lower-test"
Feb 18 10:30:48 rusty-ubuntu kernel: [ 1970.340601] type=1503 audit(1266489048.201:37): operation="open" pid=3150 parent=3069 profile="/usr/sbin/mysqld" requested_mask="rw::" denied_mask="rw::" fsuid=1005 ouid=1005 name="/home/djeyewater/webapps/mysql/data/rusty-ubuntu.err"
Feb 18 10:30:48 rusty-ubuntu kernel: [ 1970.344628] type=1503 audit(1266489048.205:38): operation="open" pid=3150 parent=3069 profile="/usr/sbin/mysqld" requested_mask="r::" denied_mask="r::" fsuid=1005 ouid=1005 name="/home/djeyewater/webapps/mysql/data/mysql/plugin.frm"
Feb 18 10:30:48 rusty-ubuntu kernel: [ 1970.410980] type=1503 audit(1266489048.270:39): operation="open" pid=3150 parent=3069 profile="/usr/sbin/mysqld" requested_mask="rw::" denied_mask="rw::" fsuid=1005 ouid=1005 name="/home/djeyewater/webapps/mysql/data/ibdata1"
So it looked like /usr/sbin/mysqld (the default mysql instance) was being called instead of my 5.5 installation.

Previously I was trying to start MySQL with the command
mysqld_safe --defaults-file=$HOME/webapps/mysql/my.cnf  &
And this had always worked with no problems with MySQL 5.4. But now that there were problems with MySQL 5.5 and 5.4, I decided to try (after re-enabling apparmor)
$HOME/webapps/mysql/bin/mysqld_safe --defaults-file=$HOME/webapps/mysql/my.cnf  &
And mySQL started okay.

I'm pretty sure that $HOME/webapps/mysql/bin was in my $PATH previously (otherwise how would MySQL have started okay before?), but now examining my PATH, I found that $HOME/webapps/mysql/bin wasn't listed. So it seems that by renaming the mysql folder to mysql-old, it had removed the mysql folder from PATH or something?

I asked about this on the Ubuntu forums, then it was lunch time, despite me thinking it must only be about 11.00am.

After lunch I checked my email, then after googling and not finding anything relevant, I posted a question to TWS about How often/when to update site software?

I don't actually need to upgrade to MySQL 5.5 so I can use SIGNAL as I had originally thought. Reason being, I was wanting to use SIGNAL for something that should really be in the application logic, not in the database logic.

I tried writing a procedure to clear up the duplicate records in my location table. The problem was that I also needed to update the two tables that reference the location table, so that any record in those two tables referring to duplicates in the location table are updated as well.

After dinner I watched a couple of episodes of Power Rangers with L, then tried installing XCache. Unfortunately the settings needed for xcache to work well, and what each setting does weren't that clear, so I spent quite a while trying figure out what settings to use.

After that I looked into server side caching (rather than just opcode caching), and found this tutorial, which explains the process of caching page content with PHP quite well: Quick and Dirty PHP Caching. Some comments on the article suggested using XCache or APC for caching. I tried to find out how they would be used for caching page content instead of just opcode caching, but didn't have much luck.

Then I looked at the XCache API, and I think that this, along with setting the variable settings for xcache in php.ini, would be how you do content caching with XCache.

The weather started off overcast but bright, then later in the morning it started snowing, reasonably heavily, with quite large flakes. At lunch time the snow eased off for a bit, and the little that had settled melted away. Then after lunch it started snowing more again, and started to settle again. It snowed for the rest of the day, though considering how much it snowed, there wasn't much to show for it - just a few cm.

Food
Breakfast: Orange Marmalade Toast Sandwich; Cup o' Tea.
Lunch: Ham with Crunchy Salad Sandwich; Gregg's Choc Chunk Chocolate Muffin; Cup o' tea.
Dinner: ⅓ Pepperoni Pizza; ⅛ Cheese & Tomato Pizza; Chips; Salad. Pudding was a slice of Chocolate Fudge Cake. Coffee; Piece of Sainsbury's Caramel Chocolate; 3x pieces of Sainsbury's Mint Creme Chocolate.
Supper: 2x Wafer Biscuits.

Wednesday 17 February 2010

mysql and wordpressing

This morning I checked my email, and I'd had a reply from Phil Harvey about to fix the problem with Capture NX saving two XMP blocks in JPEGs. In case anyone else is having the same problem and manages to find this post, here's the solution Phil gave:
So it is Capture NX that writes XMP to the wrong location in the JPEG. This isn't too unexpected. To fix this is a bit tricky using exiftool because normally it doesn't edit the EXIF segment if you are only writing XMP, so you must use a trick to force the XMP to be processed:

exiftool -xmp= -exif:artist-=nothing FILE.jpg

After doing this, the XMP will be removed from the incorrect location. Then you can use exiftool to copy it from the NEF into the proper location:

exiftool -tagsfromfile FILE.nef -xmp FILE.jpg


After checking my email, I got on with upgrading my wordpress installation. After unpacking the zip, I copied across the wp-config file, the theme, and plugins from my old installation. After doing this I replaced the instances of &raquo;, &laquo;, and &nbsp; with their numeric equivalents (&#187;, &#171;, and &#160; respectively), so as to make the generated html XML/XHTML compatible.

I then loaded up the site in the browser, but it was using the default wordpress theme, rather than my custom theme. So I logged into the wordpress admin panel, and got a message that the wordpress database needed to be 'upgraded'. I clicked OK, then was logged into the admin panel. Going to the appearance section of the admin panel, I could see that my theme wasn't being loaded because Wordpress now insists that your theme must include a stylesheet.

My theme does include a stylesheet, but the stylesheet's location is outside of the wordpress root. I can understand why Wordpress would require all files to be in the theme's folder, but it seems to me it might be more sensible to still allow a theme without a stylesheet to be loaded, just display a warning or something. To fix it so I could use my theme, I just created an empty style.css file inside the theme's directory.

After installing the latest versions of the various plugins I'm using, updating the xmlrpc.php file to make pingbacks work with gravatars, and modifying the latest smart youtube plugin slightly, I checked everything was still working okay, and it was.

So I uploaded the blog directory to the webserver, and told it to overwrite the existing files. This took about 15 minutes, and then I found my blog wasn't working properly. In the admin panel it had an error about a function couldn't be found, and on the actual blog it had a similar error (and due to my use of xhtml this makes the whole page unviewable as the error makes the XML invalid).

Unfortunately because I'd overwritten all the files, I couldn't just go back to the previous installation. So I uploaded the whole blog directory to the web server again, but to a different location where there wouldn't be any existing files to be overwritten, thus ensuring that the upload would be an exact replica of what I had on my local system.

This upload took ages, probably 20 minutes, but I went for lunch part way through, so I'm not sure exactly how long it took. When it was done I ssh'd into the server and renamed the current blog folder and moved the new upload to replace the broken blog.

But now the situation was even worse, I was just getting a big 'Error establishing a database connection' message, with nothing else. Following the advice given at WordPress installation - Error establishing a database connection, I added in
echo mysql_error();
after
function wpdb($dbuser, $dbpassword, $dbname, $dbhost) {
return $this->__construct($dbuser, $dbpassword, $dbname, $dbhost); ();
But this didn't do anything, still I just got the unhelpful error message.

So I started debugging the problem by putting exit('gh');(first in the index.php file), I'd put it before an include, upload the modified file, see if I got 'gh' or the error. Then I'd put the exit('gh'); after the include, upload the modified file, and see if I got 'gh' or the error. If I got 'gh' that meant the error occured after where I'd put the exit('gh');, so I'd move the exit('gh'); further down the code and repeat. If I got 'gh' with the exit before the include, but got the error with the exit after the include, this meant the problem was in the include file, so I'd then repeat the process in the included file.

This took quite a while, and I must have gone through at least 5 includes (and lots of uploading slightly modified files) before I found the problem. The solution of debugging was actually what was given at WordPress installation - Error establishing a database connection, the reason why my debugging didn't work before was that I had placed the echo mysql_error(); within the wpdb function, whereas actually it should go in the wpdb class constructor (in wordpress 2.9.2 at least), after the line $this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword, true);.

Placing echo mysql_error(); after this line, I finally got a sensible error message. The problem was that wordpress was using the wrong socket to connect to the database. I tried modifying the mysql_connect line, passing null as the host argument, which meant it should connect using the default socket specified in php.ini (which I thought was the correct socket).

But I still got the same error, so I just manually entered the correct socket path to mysql for the host, and now I could finally connect okay. So I reverted my changes, and put the correct socket path as the hostname in wp-config.php, where it should be. I checked wordpress was working okay now, and it was.

I think in future when upgrading Wordpress, what I'll do is:
  • Get it working on my local system first (same as I did this time)
  • Zip it up and upload the zip to the web server - should be much faster to upload than the indivdual files - then unzip it somewhere temporary
  • Rename the old blog files and the new blog files to make the new ones operative, but keep a backup, e.g. mv ~/path/to/site/blog ~/path/to/site/blog-old; mv ~/path/to/site/blog-new ~/path/to/site/blog - that should keep the downtime between switching from the old wordpress installation to the newest to less than a second, and makes it easy to switch back to the old installation if needs be.


I wrote most of this blog post, and found this cool blog where you can download lots of old country and bluegrass music that the guy's ripped from his record collection: Lonesome Lefty's Scratchy Attic. I received my Groovegrass CD in the post, so I ripped that and listened to it.

I tried to work out why the wordpress installation on my local machine was managing to connect to mysql on the correct socket. Looking at my local phpMyAdmin I could see it said
MySQL client version: mysqlnd 5.0.5-dev - 081106 - $Revision: 1.3.2.27 $
So I thought that my local Wordpress database must have been installed on the main instance of MySQL instead of my installation of MySQL 5.4, which mirrors what I have on the server. But then looking more closely, I noticed that this was the version of the mysql native driver for PHP, not the actual MySQL version, this was stated by phpMyAdmin as 5.4, which meant I was connected to the correct MySQL instance locally.

So I checked the php.ini files locally and on the webserver, and found the problem wa that I hadn't specified the default socket for mysql connections in the php.ini that was on the server - I'd only specified the default socket for mysqli connections. So I added that into the webserver's php.ini, restarted PHP, changed the host in wp-config.php back to 'localhost', and tried wordpress again, and it was still working okay. Weird though how it was working before the upgrade.

Next I tried to find out why one of my tables had a lot of duplicate records in it. The table contained columns with NULL, and normally NULL doesn't count as a unique value, so what I had done was to create a BEFORE INSERT trigger that checks whether the value to be inserted (including where columns are NULL) already exists or not. This was meant to stop duplicate records being inserted, but obviously it wasn't working.

It took me a long time, but eventually I figured out what the problem was - in the trigger I was checking if the id of the row to be inserted, and only doing the unique checking if an id wasn't specified (i.e. it was NULL). But it turned out that actually if you don't specify an id to be inserted, it is not NULL but actually 0. So since the id of the row to be inserted was never NULL, this meant my unique check would never happen, and I ended up with lots of duplicate rows.

Obviously the answer was to check whether the id of the row to be inserted was 0 instead of NULL. After doing this, I thought that the trigger should set LAST_INSERT_ID() to the correct id if the row already existed. It would also need to abort the INSERT since the row already exists.

Searching on how to do this, I found that that you abort the INSERT from within the trigger by throwing an error. You should use SIGNAL to do this, but this isn't supported by MySQL, so instead you have to kludge around this and cause an error e.g. by inserting into a table that doesn't exist.

The articles I got this info from were from about 2007, so I thought that maybe MySQL had implemented SIGNAL by now. I found they had, but it was in 5.5, and I'm using 5.4 beta 2.

So I downloaded and installed MySQL 5.5.1-m2. I couldn't work out how I was meant to get the data from the old installation into the new installation. I had done a mysql dump from the previous version, but couldn't start up the new version of mysql to import the dump since the new version didn't have an existing data directory (and so wouldn't start).

Unfortunately none of the MySQL documentation seems to cover how you actually perform an upgrade, it just seems to cover what you need to do before and after performing an upgrade.

What I did was to copy the data directory from the old mysql installation to the new installation. I could now start mysqld okay, and so ran mysql_upgrade as is advised on Upgrading from MySQL 5.4 to 5.5. But I got a lot of errors for all tables using the InnoDB engine like so:
xoogu.shortURL
Error : Unknown table engine 'InnoDB'
error : Corrupt
So after googling about this error and not really finding much useful, I logged into mysql and ran SHOW ENGINES, which predictably showed that InnoDB wasn't listed. I checked ./configure --help in the source directory in case --with-plugins=innobase wasn't the way to build mysql with InnoDB any more and they had decided not to show it as an error if you try and configure with an invalid option. Seems rather unlikely, but worth checking. Of course --with-plugins=innobase, was still the correct way to build mysql with InnoDB.

Next I checked the my.cnf file, which I had copied over from my previous mysql installation, just in case something weird had happened to it and a line had been added to skip-innodb. It hadn't, so finally I remembered the error logs, and I had a look in there. I could see the problem was that the Innodb log file was different to what it was expecting.

Luckily, in my earlier search I had come across a post about removing the InnoDB logs, though I had dismissed it as unlikely to be the cause of MySQL not loading InnoDB as a storage engine. So I went back to that post, and followed the advice there.

Unfortunately, I was now getting the following in the error log instead:
100217 21:39:00 mysqld_safe Starting mysqld daemon with databases from /home/djeyewater/webapps/mysql/data
Could not open required defaults file: /home/djeyewater/webapps/mysql/my.cnf
Fatal error in defaults handling. Program aborted
100217 21:39:00 [ERROR] Can't find messagefile '/home/djeyewater/webapps/mysql/share/mysql/english/errmsg.sys'
100217 21:39:00 [Warning] Can't create test file /home/djeyewater/webapps/mysql/data/rusty-ubuntu.lower-test
100217 21:39:00 [Warning] Can't create test file /home/djeyewater/webapps/mysql/data/rusty-ubuntu.lower-test
100217 21:39:00 [Note] Plugin 'FEDERATED' is disabled.
/usr/sbin/mysqld: Unknown error 1017
100217 21:39:00 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
100217 21:39:00 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
100217 21:39:00 mysqld_safe mysqld from pid file /home/djeyewater/webapps/mysql/data/rusty-ubuntu.pid ended
Searching for 'Operating system error number 13 in a file operation' and 'Could not open required defaults file' I couldn't find anything that seemed relevant apart from this post, which isn't much help as they said they just left it overnight, then the next day mysql magically started working.

I checked the permissions for my.cnf, and they were the same as they were in the old installation. SELinux or AppArmor I didn't think would have any effect either, since the directory and filepath was the same as it was the old version of mysql, which had been working fine.

So I think I'll delete the new mysql installation and then try again tomorrow.

Also in the evening I watched Lost with Mauser and Bo.

The weather was overcast all day and it sleeted for a bit in the morning.

Food
Breakfast: Strawberry Jam Toast Sandwich; Cup o' Tea.
Lunch: Sliced Chicken with Mayonnaise, Sliced Cherry Tomatoes, and Crunchy Salad Sandwich; Packet of Barbecue flavour Crisps; Rocky; Cup o' tea.
Dinner: Shepherd's Pie; Parsnips; Ground Black Pepper; Grated Mature Cheddar Cheese; Gravy; Mixed Veg. Pudding was a Passion Fruit Yoghurt with 2x Chocolate Wafer Biscuits and a Shortbread Finger. Coffee; Piece of Sainsbury's Truffle Chocolate; 2x pieces of Sainsbury's Mint Creme Chocolate.

Tuesday 16 February 2010

Not much

This morning I installed the latest IE 6 and 7 VHDs, then uploaded a chicken photo to various photo sharing websites.

After that I wrote a blog post for my photo website about Brown Clee Hill.

After lunch I checked my email and TWS, then did some testing with exiftool to try and find why some of my images had 2 XMP blocks, which is what was causing the problem with extracting the rating on certain images.

I found that the duplicate XMP only seemed to occur when I embedded XMP into a NEF file using exiftool, then saved a JPEG from that NEF file using Capture NX, and didn't make any changes to the file in Capture NX. Because I do some post processing to nearly all my images, this explains why problem with the rating being reported as 0 only occurred infrequently.

I also did a quick test of extracting the MacroMagnification for a couple of images taken with the MP-E65 lens, but it seemed that exiftool always reported the magnification as 1.2x, so I took some test shots and sent them off to Phil Harvey along with my findings about the duplicate XMP in some of my images.

I sorted through my inbox as I had quite a few emails from the last few weeks that I'd only had a quick look at, and hadn't had time to read properly.

After dinner I watched a couple of episodes of Power Rangers with L. After that I did a bit of work on my photo website.

First I tried to fix a problem where the selected image size wasn't updating (if you were viewing a small image, then clicked 'medium', the medium size image would load, but 'small' would still be highlighted. It turned out to be quite a simple fix - I was updating the class names of the 'small' and 'medium' buttons wrongly.

Next I wanted to upgrade Wordpress, but when I tried to log in to the wordpress installation on the local copy of my site, I got redirected to the wordpress installation on the live copy of my site. So I spent a while trying to debug this, then eventually looked in the mysql database for the wordpress installation, and found it had the blog address as the url of the blog on the live site, rather than the local site url. So I changed that, then I could log into my local installation okay.

I also made a backup of the databases from the web server, and started downloading all the images that I'd uploaded to it so I have a complete backup of my site. Unfortunately, whenever I'm uploading or downloading anything, it seems to mess up the internet (and my mouse, I have to switch to a pen tablet), so there wasn't much I could do while waiting for the downloads to finish.

Eventually the downloads did finish, at about 22.30. I did a backup, then went to bed.

Food
Breakfast: Orange Marmalade Toast Sandwich; Cup o' Tea.
Lunch: Bowl of Chicken & Vegetable flavour fake Cup a Soup; Slice of Toast; Banana; Rocky; Cup o' tea.
Afternoon snack: Choc Chip Cookie; Shortbread Finger; Cup o' Tea.
Dinner: 1½ Spicy Chicken Fajitas; Rice; Salad. Pudding was 2x Pancakes with Lemon Juice and Sugar. Coffee.

Monday 15 February 2010

Uploading images

This morning I checked my adwords were working, but they still weren't, so after checking the help, and not finding anything helpful, I posted to the Google adwords forum. I'm not holding much hope though, there were quite a few threads from people saying their ads weren't showing up, and there was no reason why, and no response from anyone at Google as to what the problem was.

After that I started uploading the Brown Clee Hill photos to my photo website. While they were uploading, I cut out some Slammer Whammers in photoshop, and started adding a twitter and facebook button to my pog website.

After lunch I carried on uploading the Brown Clee Hill photos to my photo website and finished adding the facebook and twitter buttons to my pog website.

On testing the changes to the pog website, I found that my IE virtual machines were out of date (Microsoft puts a limit on the VHD, so I started downloading the latest versions of the IE6 and IE7 VHDs.

Uploading the Brown Clee Hill photos to my photo website, I found that although I was now using an updated version of exiftool, one of the images had the rating extracted as 0 by exiftool, even though it wasn't 0. Doing some testing, I found that actually it wasn't a random issue as I had previously thought, but was a repeatable issue with certain images.

The xmp:rating only seemed to be reported as 0 on a 'problem' image when exiftool was used with the -j (json) and -g (group) parameters. So I emailed Phil Harvey (creator and maintainer of exiftool) in the hope he'll be able to fix it for a future release.

Eventually I finished uploading the Brown Clee Hill photos to my website, so I started writing a blog post for my photo website about Leominster. (I needed the internet to help me write the blog post, and the internet doesn't work while I'm uploading anything for some reason, so I had to wait for the uploads to finish).

I wrote most of the blog post about Leominster, then realised that I hadn't uploaded the photos from Callow Hill to my photo website yet, so I started doing that.

After dinner I carried on uploading the Callow Hill photos, then eventually when that was done, I wrote a blog post for my photo website about Callow Hill and Flounders' Folly.

By the time I'd finished doing that, I was really sleepy (not sure why, as it was only about 22.30), so I didn't bother adding the blog posts to the actual website (since that involves a bit more work), I'll do that tomorrow.

I did a backup, then went to bed.

The weather was overcast all day.

Food
Breakfast: Bowl of Strawberry Crisp Oat Cereal; Cup o' Tea.
Lunch: 2x Cheese on Toasts; Apple; Cup o' tea.
Dinner: 2x Long Chippolata Sausages; Mashed Swede; Ground Black Pepper; Gravy; 3x Yorkshire Puds; Potatoes; Peas. Pudding was Lemon Pud with Custard. Coffee.

Sunday 14 February 2010

Having a headache

This morning I started cutting out some GT caps in photoshop, then went to Church. After Church I finished cutting out the GT Caps, then it was dinner time.

After dinner I uploaded the images to my Pog website and updated it, my facebook fanpage for the site, and my twitter for the site.

I checked the Luminous Landscape and Moose Peterson's blog, then went to bed as I had a bad headache.

I got up when it was tea time, then after tea I watched Mauser go on 1 vs. 100 for a bit, which had lots of hard questions (yes, really), then we watched Battleship Potemkin.

After that I tried to redeem a Google adwords voucher that I had received in the post. However, when signing up to adwords to claim the voucher, it turned out that actually there is a £5 activation fee, and they won't take this from your voucher, you have to pay them from your credit card or via bank transfer. As well as this, the minimum payment you can make is £10. Despite this, I thought I might as well go ahead and pay the £10, since the voucher was for £75.

After doing this though, it said my account only had £10 in it. So I tried to find out what to do if your promotional code hadn't worked (I entered it in the billing part of the sign-up process). Eventually I found a help topic on how to enter the promotional code after you've sgned up, so I thought I may as well try that and enter the code again.

But when I did this, I got a message that the code had already been used. So I went and checked my account page again, and now it had been credited with the voucher. Very annoying waste of my time.

After this, I decided to check whether my ad was appearing, I found that it wasn't running for 'tazos' or 'milkcaps', but I had first place result in both of those anyway! Then I tried 'Pogs', which I was still about 6th for, but the ad wasn't running there. So I went through the Google help to try and find out what the problem was.

I used the Ads Diagnostic Tool, but this wasn't helpful at all - it said that I wasn't bidding on that keyword, but in the Campaign screen I can plainly see that I am bidding on 'Pogs' and that it is enabled. Going back to the help page, it gave a number of generic reasons why your ad might not be showing, most of them weren't valid in my case, but this one was:
Server Delay
There may be a brief delay before your ads are actually displayed once you have created them. Sometimes it takes our servers longer than usual to upload and prepare to serve your ads. Try checking for your ad again after a few hours have elapsed.
So I'll just have to hope that that's the case, and check again tomorrow.

The weather was overcast all day.

Food
Breakfast: Orange Marmalade Toast Sandwich; Cup o' Tea.
After Church Snack: Coffee; Shortbread Finger; Choc Chip Cookie.
Dinner: Bowl of Vegetable Soup; ½ Hotdog with Tartar sauce and Dijon Mustard; ½ Hotdog with Tomato Ketchup. Pudding was Apple Pie with Spleenvap and Cream. Coffee.
Tea: ½ Mature Cheddar Cheese Sandwich; Packet of Prawn Cocktail Flavour Crisps; Clementine; Slice of homemade delee Coffee Cake.
Supper: Cup o' tea; Slice of homemade delee Coffee Cake.

Saturday 13 February 2010

Photo Processing

This morning I was working on processing some photos of Brown Clee Hill from the 6th day of our Shropshire holiday, back in July.

After lunch I finished processing most of the Brown Clee Hill photos, then went on Civ IV in Mauser's bedroom for a bit.

The the rest of the afternoon and most of the evening I was working on a 360 pano that I took at Abdon Burf (the highest point on Brown Clee Hill, and the highest point in Shropshire). I had taken it handheld, so a lot of work was needed to fix all the stitching errors.

The weather was overcast most of the day, though there was a break in the clouds for a bit in the afternoon.

Food
Breakfast: Bowl of Choco Moons Cereal; Cup o' Tea.
Tenses: Hot Chocolate Milk; Choc Chip Cookie; Shortbread Finger.
Lunch: Ham Sandwich; Most of a packet of Prawn Cocktail flavour Ridge Crisps; Clementine; Slice of posh Swiss Roll; Cup o' Tea; 2x pieces of Sainsbury's Mint Creme Chocolate.
Dinner: Slice of Ham Quiche; Mashed Potato; Baked Beans; Ground Black Pepper. Pudding was a slice of Lyles Golden Syrup Cake with Lyles Golden Syrup and Custard.

Friday 12 February 2010

Photo Processing

This morning I was working on processing some photos of Brown Clee Hill from the 6th day of our Shropshire holiday, back in July.

When doing my googling for information for writing captions for the images yesterday, I came across this website offering various images, which says All images may be used without copyright permission - Research images.

In the afternoon I was still processing Brown Clee Hill photos.

In the evening I watched a couple of episodes of Power Rangers with L, then watched a documentary about Idi Amin Dada with Mauser. It was quite good, but would have been better if I knew more about Idi Amin and the politics of the time when it was filmed.

The weather started off overcast, then gradually brightened up during the afternoon. It rained a few times throughout the day, and clouded over again before sunset.

Food
Breakfast: Orange Marmalade Toast Sandwich; Cup o' Tea.
Elevenses: Cadbury's Instant (water) Chocolate Drink; Choc Chip Cookie.
Lunch: Bowl of Scotch Broth; Slice of Toast; ½ Ham Sandwich; Apple; Clementine; Slice of posh Swiss Roll; Cup o' Tea.
Dinner: Vegetable Pizza that was actually a Fish and Vegetable Pizza with extra Cheese and Green Pepper; Chips; Ground Black Pepper. Pudding was a slice of Chocolate Ceral Cake that L made at School today. Coffee; Weird Chocolate Sweet; 2x pieces of Sainsbury's Truffle Chocolate; piece of Sainsbury's Caramel Chocolate.

Thursday 11 February 2010

Metadataring

This morning I geocoded the photos from the 6th day of our Shropshire holiday, back in July. I also wrote blog posts for my photo website about Clun and Bishop's castle, which we visited on the fourth day of our Shropshire holiday.

When writing the posts, I wondered if it was correct to create tags for each post that will only be used for that individual post, or if tags should be more generic, used to group a selection of posts with a similar subject. Doing some googling, I found this post Tags! And Categories, which says
Tags are one-off keywords attached to a post. You may add a tag to a post that you’ll never use ever again.
So it seems my usage of tags is correct, which is good to know.

In the afternoon I added metadata to the images from the 6th day of our Shropshire holiday back in July.

In the evening I played on Civ IV in Mauser's bedroom.

The weather started off overcast, then gradually brightened up during the morning. In the afternoon there was a mixture of sun and clouds. There was a sunset, but there weren't any clouds around, so while nice, it was a bit plain.

Food
Breakfast:Strawberry Jam Toast Sandwich; Cup o' Tea.
Elevenses: Cadbury's Instant (water) Chocolate Drink; Choc Chip Cookie.
Lunch: 2x Cheese on Toasts; Apple; Clementine; Cup o' Tea.
Dinner: 2x Fish Cakes; Tomato Ketchup; Mashed Potato; Ground Black Pepper; Peas. Pudding was a slice of delee Posh Swiss Roll with Custard. Coffee.
Supper: Shortbread Finger; Choc Chip Cookie; Cup o' Tea.

Wednesday 10 February 2010

Making stuff

This morning I was processing photos from Callow Hill, from the 5th day of our Shropshire Holiday, back in July.

In the afternoon I processed a couple more photos, then put a bird table together, which took most of the afternoon.

At about 5.15pm me and Lad started making dinner (for Clare's birthday), doing a cooking guide recipie, which was meant to take 20 minutes. But actually it took about 2 hours, and while it tasted nice, the beef was really chewy.

In the evening I watched Lost with Mauser and L, then finished processing the photos from the 5th day of our Shropshire holiday, back in July.

The weather started off sunny, then clouded over and snowed for a little bit. Then throughout the day it was a mixture of snow, sun and clouds. At one point it hailed and snowed at the same time. Although it was sometimes snowing while it was sunny, I didn't see any snowbows. There was a sunset, but there weren't any clouds around, so while nice, it was a bit plain.

Food
Breakfast: Bowl of Choco Moons Cereal; Cup o' Tea.
Lunch: Bavarian Smoked Ham with Dijon Mustard Sandwich; ½ Banana; Hot Cross Bun; KitKat; Cup o' Tea; Piece of Sainsbury's Truffle Chocolate; 2x pieces of Sainsbury's Caramel Chocolate.
Dinner: Beef stuff with green pepper; Noodles; Baguette. Pudding was a slice of posh Lemon Cheesecake. Coffee; Toffee.

Tuesday 9 February 2010

Photo Processing

This morning I was processing photos from Callow Hill, from the 5th day of our Shropshire Holiday, back in July.

In the afternoon I did more photo processing and also went down town. I paid a cheque into the Alliance & Pester, who amazingly didn't pester me about getting a mortgage (they pestered me about getting an ISA instead). I also went looking in Sainsburys, Tesco, and Poundstretcher for a present for Clare's birthday tomorrow, but while they all had plenty of chocolate and bagged sweets (like Haribo), none of them had any York Fruits (Clare gets headaches if she has chocolate).

So when I got home I looked on the pinternet to see if I could buy a box of York Fruits. It would arrive after Clare's birthday, but better late than never, as they say. I found I could buy a box through a few shops, but postage was quite expensive. I looked on ebay, and someone was selling them on there, but didn't have the postage costs listed, so I messaged them to ask how much they were.

In the evening I processed a few more photos, then went on Civ IV.

The weather started off overcast, then it snowed for a little bit. By lunch the clouds had started clearing, and the rest of the day was a micture of sun and clouds. There was a nice sunset, with some large clouds around being lit up yellow/orange underneath by the setting sun.

Food
Breakfast: Orange Marmalade Toast Sandwich; Cup o' Tea.
Lunch: Bavarian Smoked Ham with Dijon Mustard Sandwich; Banana; Hot Cross Bun; Cup o' Tea.
Dinner: Slice of Chicken and Ham Pie; Carrots; Potatoes; Peas; Gravy. Pudding was sliced Kiwi Fruit with Strawberry Flavour Whip (fake Angel Delight). Coffee; Weird Chocolste Caramel Sweet.

Monday 8 February 2010

Metadataring and photo processing

This morning I vacuumed my bedroom, then finished processing the photos of Priory Church in Leominster.

When I'd finished processing the photos, I started to upload the Leominster photos to my photo website. While I was waiting for the photos to upload I read a bit of John Shaw's Closeups in Nature.

What I've read so far of Closeups in Nature, it's very film photography orientated. I wondered if John Shaw was still photographing today, and if he was, if was using digital cameras, and if he had written any updated versions of his books more tailored towards digital photography.

Using Google, I found that John Shaw is still photographing today, and has his own website - www.johnshawphoto.com. Looking on his website, I saw that he is using digital now - two Nikon D3 bodies. But looking at the books page on his website, it seems the only books he has available are his old ones written about photography shooting with film. He has two ebooks available, but these are both about post processing rather than the actual photography.

After lunch I carried on uploading Leominster photos to my photo website.

While uploading the photos, I noticed that on one of them, it was inserting a value of 0 for the rating into the database (I've been checking this on every upload I make since I discovered a number of images in the database with a rating of 0 a week or so ago). Luckily I print out lots of debug info on my upload page, so it's relatively easy to check what rating is being inserted into the database.

Looking at the debug info on the page for the upload, I could see that exiftool had extracted the rating as 0. I started up my Ubuntu Virtual Machine, then when it was loaded, logged into the Web Server via SSH. When into the webserver, I ran exiftool on the image again to check what it extracted the rating as, and it now extracted the rating with the correct value. So it seems that the problem is with exiftool, and it is just random and not dependant on the image.

I checked the version of exiftool I was using, and it was something like 7.77 pre release, so I downloaded the latest version (8.something) and will keep checking the rating to see if the problem still exists. Also, while getting the latest version of exiftool, I noticed in the changelog that exiftool now could extract the magnification for the MP-E65 lens on the 40d and 5D Mk II. I didn't have time to check if it can extract this info with the 450D (which is what I have), but that's quite useful info to have.

Normally I just have to guess (try to remember) the magnification, and being able to get the exact magnification from the exif would allow you to work out the exact size of insects etc. that you have photographed with the lens.

When I was done uploading the Leominster photos to my photo website, I started to add metadata to my photos of Callow Hill and Flounders' Folly, which we visited on the evening of the 5th day of our Shropshire trip.

After dinner I watched a couple of episodes of Power Rangers with L, then finished adding metadata to the Callow Hill / Flounders' Folly photos.

When I'd finished doing that, I did a backup and went on Civ IV in Mauser's room for a bit, while Mauser watched a bit of Andrei Rublev.

The weather started off overcast, then later in the morning it started snowing. It snowed most of the day, sometimes there would be a bit of a flurry, but most of the time it was quite light.

Food
Breakfast: Bowl of Maple & Pecan Crunch Oat Cereal; Cup o' Tea.
Lunch: Bowl of vegetable flavour fake Cup a Soup; Slice of Toast; ½ Bavarian Smoked Ham with Dijon Mustard Sandwich; Banana; Grapes; Slice of Home-made Bakewell Tart; Cup o' Tea.
Dinner: Baked Beans; Bacon; Mushrooms; Ground Black Pepper; Eggy Bread with Bovril. Pudding was Raspberry Crumble with Custard. Coffee; Piece of Fairtrade Fudge.

Sunday 7 February 2010

Various

This morning the service was a bit later than usual, at 11am instead of 10.45am, so I went on Civ IV for about half an hour before we went to Church.

After Church I started cutting out some Pogs in Photoshop. After dinner I finished cutting out the pogs in Photoshop, then updated my Pog website.

I processed a few photos from Priory Church in Leominster, and got up to date on the Luminous Landscape articles.

In the evening I played on Civ IV a bit more, then I carried on processing photos of Priory Church in Leominster.

The weather today was overcast and a bit foggy all day.

Food
Breakfast: Bowl of Maple & Pecan Crunch Oat Cereal; Cup o' Tea.
Dinner: Chilli con Carne; Rice; Cheesey Tortilla Chips. Pudding was a Banana and Choco Flakes Muller Corner. Coffee; 2x old weird chocolates.
Teatime snack: Mincemeat slice; Cup o' Tea.
Tea: Grated Mature Cheddar Cheese with Cress Sandwich; Most of a pack of Flame Grilled Steak flavour Ridge Crisps; KitKat; Cup o' Tea.

Saturday 6 February 2010

Processing photos

Today I was just processing photos from Leominster, from our holiday in Shropshire, back in July.

In the evening I managed to finish processing the photos that weren't of/taken in the church, then I went on Civ IV for a bit.

The weather today was overcast and foggy all day.

Food
Breakfast: Bowl of Maple & Pecan Crunch Oat Cereal; Cup o' Tea.
Lunch: Peppered Ham Sandwich made with Bakery Bread; Crust of Bakery Bread with Strawberry Jam; Mandarin; Grapes; Dried Apricots; Cup o' Tea.
Dinner: 2x delee Sausages; Baked Beans; Fried Red Onion; Mashed Potato. Pudding was 2x Oven heated Apple Pies with Spleenvap. Coffee.

Friday 5 February 2010

Metadataring and photo processing

This morning I was still adding metadata to my Leominster photos from our Shropshire holiday back in July.

In the afternoon I finished off adding metadata to the Leominster photos, then started processing them.

In the evening I watched a couple of episodes of Power Rangers with L, played on Civ IV a bit, and did some more work processing Leominster photos.

The weather today started off overcast, but then started to clear up just before lunch. In the afternoon it was a mixture of sun and cloud. There was a nice sunset with a cloud being lit up underneath by the sun. By the time the sun actually set the cloud had blown away though, leaving a bare sky.

Food
Breakfast: Orange Marmalade Toast Sandwich; Cup o' Tea.
Lunch: Peppered Ham with Dijon Mustard Sandwich; Grapes; Tesco fake Caramel Rocky; Cup o' Tea.
Dinner: Pasta with Cheese, Tomato, Sweetcorn, and herbs stuff that L made at school; Battered Fish Portion; Peas; Ground Black Pepper. Pudding was Pineapple Upside Down with Custard. Coffee.

Thursday 4 February 2010

Metadataring

This morning I uploaded my photos of Clun to my photo website and also sorted and processed some soldier beetle photos. Then I uploaded some of the soldier beetle photos to my photo website.

At lunchtime Clare and Brian were both out (and grandad went into hospital a few days ago to see if he had fluid round his lungs), so I was on my own. I watched the birds in the garden while I ate my lunch, which was quite nice. A robin seems to be putting soggy leaves (it's been raining since yesterday evening) in the robin nestbox. I would of thought its a bit early for nesting anyway, so I'm not sure what it's trying to do.

In the afternoon I added metadata to some photos from the Monkton Cheese Dairy and processed them (there were only about 5 pics), and then I started adding metadata to Leominster pics. Thankfully, some nice chap has made 3D models of many of the buildings in Leominister, and added them to Google Earth, along with information on the buildings, which allowed me to get better info for descriptions of some of my photos than I probably would of otherwise.

In the evening I played on Civ IV a bit, watched a couple of episodes of Power Rangers with L and Mauser, did a backup, and added metadata to some more of my Leominster images.

The weather today was overcast all day and rained lightly for most of the morning.

Food
Breakfast: Orange Marmalade Toast Sandwich; Cup o' Tea.
Lunch: ½ Mature Cheddar Cheese Sandwich; 2x Ibuprofen; Packet of Chilli flavour Doritos; Satsuma; Apple; Cup o' Tea.
Dinner: Chicken Pie; Sweet Potato; Broccoli; Potato; Ground Black Pepper. Pudding was a trifle in a yoghurt pot. Coffee.

Wednesday 3 February 2010

Processing Photos

This morning (and first part of the afternoon) I finished processing my photos of Clun.

In the afternoon I re-organised my beetle photos by biological classification's eight major taxonomic ranks (previously I was also using intermediate rankings as well). This greatly reduces the nesting of folders compared to using intermediate rankings as well as the major rankings when organizing files.

After doing that I added metadata to a few soldier beetle images.

About 5.30pm I went on Civ IV in Mauser's room, then it was diner time.

After dinner I went on Civ IV a bit more, then me, Mauser, and L watched Lost s06e00 and s06e01. We couldn't watched episode 2 as it hadn't downloaded yet. As expected, it was amazingly good.

The weather was overcast all day and it also rained a bit.

Food
Breakfast: Orange Marmalade Toast Sandwich; Cup o' Tea.
Lunch: 2x Cheese on toasts; 2x Sticks of Celery; Apple; Hot Cross Bun; Cup o' Tea.
Dinner: Southern Fried Chicken Portion; Chips; Baked Beans. Pudding was Pineapple upside down with Custard. Coffee.

Tuesday 2 February 2010

Photo Processing

This morning I finished processing my photos of Bishop's Castle, then uploaded them to my photo website.

I wrote a blog post for my photo website about Acton Scott, and found that somehow quite a few photos on my website didn't have their rating recorded (this is important as the website orders the photos by their rating). I checked one of the photos, and it did have the rating recorded in the XMP.

Looking at the database, I could see one photo had NULL for its rating, finding the image on my hard drive, I found this was because I hadn't given it a rating. So I fixed that. But then were quite a few images (probably about 20) with a rating of zero. The images did have actual ratings, but for some reason 0 had been recorded instead of the real rating.

There didn't seem to be any reason or pattern behind it, it just seemed that randomly 0 would be recorded for the rating. All the other metadata seemed to be recorded properly on these problem images.

So I went through all the photos with a rating of 0, found them on my hard drive, and what their actual rating was, and then updated the database with their correct rating. This took quite a while. I need to try and make sure I always check what rating is being added to the database whenever I upload an image now, then hopefully it will help me try and figure out what/where the problem is.

While updating the ratings of the images I found one image had an incorrect title, but after updating it I got caught in a redirect loop when I tried to access the page. I found I had for some reason based the URL checking on the filename of the image, even though I have a field in the database called 'url_name'. So I updated my page to use 'url_name' instead, and then it worked okay.

In the afternoon I added metadata to images from Clun, and found the following pages useful:

When I was done doing the descriptions for the Clun photos, I did a backup and wrote this blog post so far.

When the backups were done and I'd finished checking my email, I processed a couple of panos, and then played on Civ IV in Mauser's room while L played on Banjo Kazooie Nuts and Bolts on the Xbox.

After dinner I watched 'Duel' with Mauser, then played on Civ IV a bit more.

The weather was rain nearly all day.

Food
Breakfast: Orange Marmalade Toast Sandwich; Cup o' Tea.
Lunch: 2x Cheese on toasts; Stick of Celery; 2x Clementines; Slice of home-made Victoria Sandwich Cake with Strawberry Jam; Cup o' Tea.
Dinner: Spaghetti Bolognese; Mixed Veg; Tomato Kecthup; Parmesan Cheese; Ground Black Pepper. Pudding was a Muller Fruit Corner. Coffee; Piece of Chocolate; Strawberry Wand.

Monday 1 February 2010

Photo Processing

This morning McRad went out, so I thought I was going to have to sit in with Grandad most of the morning again, but luckily Clare came back by the time Grandad had finished his breakfast. His breathing wasn't really bad either (though it was still bad), so he didn't actually need someone sitting in with him anyway.

I spent the morning adding metadata to some photos of Bishop's Castle from the 4th day of our Shropshire holiday, back in July. Some websites I found useful were:

In the afternoon I finished adding the captions etc. to the images, and started processing them. I sat in with Grandad from 3pm - 4pm while Clare was out doing her Lollipopping, and read a bit of John Shaw's Close-ups in Nature in between telling grandad where his bedroom was.

From about 8pm until 10.30pm I went on Civ IV in Mackie's room, carrying on the game I started yesterday.

The weather today was a mixture of sun and cloud, being sunny most of the day. There was a very nice sunset with a reasonably large cloud someway above the horizon, being lit up underneath by the sun as it set. Because the cloud was quite a bit above the horizon, it meant it was lit up underneath by the sun for quite a while (at least 15 minutes I would guess).

Food
Breakfast: Orange Marmalade Toast Sandwich; Cup o' Tea.
Lunch: Sausage with Mayonnaise and sliced tomato sandwich; Apple; Slice of home-made Victoria Sandwich Cake with Strawberry Jam; Chocolate Digestive Bar; Cup o' Tea; ½ Cadbury's Twirl; Piece of Sainsbury's Truffle Chocolate.
Dinner: Slice of Bacon Quiche; Potatoes; Peas. Pudding was a slice of Jamaica Ginger Cake with Golden Syrup and Custard. Coffee.