Sunday, 31 May 2009

Not doing much

This morning I got up too late to go on Animal, so I couldnae buy a red turnip seed from Sow Joan :(

After Church I went on my comp and checked my spleenmail.

After dinner I checked Moose Peterson's blog. I tried to install ImageMagick on my Ubuntu Virtual Machine using a php script to execute the shell commands. Unfortunately when it came to running configure, the php script would just time out (after about 15 minutes), and I'd get an Internal Server Error 500.

I tried the command in terminal, and it worked fine, took about 30secs - 1min. I changed my php script to use shell_exec instead of the runExternal function, and now got an error message rather than an Internal Server Error 500:
No shell found that supports shell functions. Please tell bug-autoconf@gnu.org about your system, including any error possibly output before this message. This can help us improve future autoconf versions. Configuration will now proceed without shell functions.


Googling for "No shell found that supports shell functions" didn't come up with much helpful. I checked the site error log, and it had
[Sun May 31 19:27:09 2009] [error] [client 127.0.0.1] ./configure.lineno: line 448: expr: command not found
a lot of times, followed by
[Sun May 31 19:27:14 2009] [error] [client 127.0.0.1] ./configure.lineno: fork: Cannot allocate memory
[Sun May 31 19:27:14 2009] [error] [client 127.0.0.1] eval: 1: expr: not found
[Sun May 31 19:27:15 2009] [error] [client 127.0.0.1] ./configure.lineno: fork: Cannot allocate memory
[Sun May 31 19:27:17 2009] [error] [client 127.0.0.1] ./configure.lineno: fork: Cannot allocate memory
[Sun May 31 19:27:18 2009] [error] [client 127.0.0.1] ./configure.lineno: fork: Cannot allocate memory
[Sun May 31 19:27:19 2009] [error] [client 127.0.0.1] sed: couldn't write 78 items to stdout: Broken pipe


Unfortunately I don't know what those logs mean, so I tried increasing the memory in php.ini from 128M to 512M, but still got the same error.

As well as doing that I also got up to date on the dpreview Canon lens forum.

The weather today was warm/hot and sunny all day with a light breeze.

Food
Breakfast: Bowl of Berry oat crunch cereal; cup o' tea.
Dinner: Chilli con carne; rice; tortilla chips with cheese. Pudding was creamy ice cream with toffee sauce. Coffee.
Tea: Peppered ham with sliced raddish, sliced baby plum tomatoes, sliced cucumber and iceberg lettuce sandwich; large satsuma; slice of fruity flapjack; caramel Rocky.

Saturday, 30 May 2009

Trying and failing

I spent most of this morning in the garden as it was nice and sunny. There was a red damselfly that I wanted to take a photo of, but it flew away and I couldn't find it again.

In the afternoon I went on Animal Crossing and then did some website work. I found that when uploading an image to my site, the post array would be empty. After some testing and googling I found that it has to do with the "post_max_size" and "upload_max_size" settings in php.ini. If the image/post data exceeds these limits, the $_POST and $_FILES arrays become empty. Unfortunately PHP doesn't seem to throw an error (at least it doesn't show), so it just leaves you wondering what's happening.

After changing those settings to reasonable figures, I found that I was getting an error
Fatal error: Class 'Imagick' not found


I did some checking and it seems that I don't have the ImageMagick php extension installed on my Ubuntu virtual machine, and my webhost doesn't seem to have it installed either.

I wanted to check if my webhost had ImageMagick installed, but just didn't have the php extension installed, so I tried to write a php script that sent a command to the shell to see if the ImageMagick package was installed. I used the example here: Find out if package is installed in Linux, but unfortunately all I was getting was nothing (not even an error). Executing the same command from the shell worked fine. I tried back ticks `, shell_exec and exec, but all were the same.

So I did some googling, and one of the suggestions was to check the apache error logs. So I did this, and found I had a lot of errors about ZendExtensionManager.so not being found. I checked where it was looking, and sure enough it wasn't there. I searched the whole filesystem for ZendExtensionManager.so, but it wasn't anywhere. So after more googling and reading, I installed Zend Optimizer. The installation didn't seem to go very well as it couldn't find different files, etc. but after installing php still seemed to work okay and I didn't seem to be getting the error about ZendExtensionManager.so being missing any more.

I saw an error in the logs saying that dpkg was an unrecognised command or sumat, so I spent probably a couple more hours messing about and then eventually found this great php function that gives you the shell error message if a command doesn't work.

Using that function, I found that dpkg would only when called from my php script if I called it with the full path like /usr/bin/dpkg. But then I would get an error about dpkg-query not being found. I tried cding to the /usr/bin directory, and then executing dpkg from there in my script, but still got the same error. So what I had to do was to call /usr/bin/dpkg-query instead, and then it worked okay.

However, on the webserver, both dpkg and rpm didn't seem to work. After more googling and messing around I changed my script so it would check if dpkg or rpm were in the /usr/bin directory. Neither were on the webserver. I did an rpm -qa(I think) on the webserver, and was interested to see that Python was installed. No sign of ImageMagick (or Django) though.

I decided to look at different webhosts to see if there was one at a reasonable price that lets you install/will install for you any extensions and programs you might need. I found webfaction, who say they let you compile any programs you want in your home directory. I'm not quite sure how much freedom this actually gives you. I'll have to look into it tomorrow. I might also see if it is possible to do the same thing with my current host. Although I don't have shell access, I can try issuing the commands through a php script.

In the evening I also watched War with Mac, which was totally skill. Jason Statham and Jet Li fighting each other!!!!!

The weather today was hot and sunny all day. There weren't any clouds around at sunset.

Food
Breakfast: Bowl of Maple & Pecan crunch oat cereal; cup o' tea.
Lunch: Beef with mustard, sliced raddish, sliced cucumber and iceberg lettuce sandwich; satsuma; banana; caramel Rocky; cup o' tea.
Dinner: cheapo sausage; delee sausage; mashed potato; baked beans. Pudding was tinned peach slices with apricot yoghurt.

Friday, 29 May 2009

Blah de blah

Today I got the internet and iTunes working on Maccy's comp in Windows 7 for him and also did some work on my website. I managed to get a thumbnail and web size image created from the original file using the gd extension for php. But then I found that it wasn't keeping the metadata intact for the web size image, and I wanted to keep the metadata for the web size image.

So I started looking at the ImageMagick extension for php. Unfortunately the PHP Manual doesn't have much info on ImageMagick other than a list of all the different methods/functions and what parameters they take. After some googling and reading, I think I've got a better idea now though.

Food
Breakfast: Bowl of Maple & Pecan crunch oat cereal; cup o' tea.
Lunch: Grated Mature Farmhouse Cheddar Cheese with iceberg lettuce and sliced raddish sandwich; 2x satsumas; mini vanilla roll thing; caramel Rocky; cup o' tea.
Dinner: 2x slices pepperoni pizza; peas; chips; salt. Pudding was a slice of toffee cheescake. Coffee.

Thursday, 28 May 2009

Went on a walk

This morning I went on a walk with McRad and Lil' L. It was in a Forestry Commission place, so quite woody. There was a sign up saying it was a good place to see Red Kites, and we saw probably 3.

After the walk McRad went to Lidl or Aldi (cannae remember which, both too similar), while me and Lil' L satyed in the car in the car park. I asked Lil' L who he thought might move into all the new flats that have been built near Aldi/Lidl, and he said pogman. I said that would be quite a lot of houses for pogman to have all to himself.

Lil' L said that I was right, so I asked him again who he thought might move into all the apartments, and he said a pog because someone might go in there and drop a pag. Hmm... Not sure how someone dropping a pag would mean a pog would live there. Mmm.. Maniacal.

We got back home about 1pm, after lunch I played on Animal Crossing while Lil' L made a youtube poop about magic bagels. It's actually quite good, so when youtube's search has indexed it, I'll embed it in this blog if I remember.

The rest of the afternoon and a little bit of the evening I checked my email and did a little bit of work on my website. I also watched Springwatch in the evening.

The weather was overcast most of the day with a few sunny spells, then later in the afternoon the cloud started to clear, and by sunset there wasn't any clouds. It was quite muggy when we were walking in the morning.

Food
Breakfast: Bowl of Maple & Pecan crunch oat cereal; cup o' tea.
After walk snack: bag of hula hoops; caramel Rocky; coffee.
Lunch: Ham with iceberg lettuce, sliced baby plum tomatoes and sliced raddish sandwich (the sandwich had an actual sliced raddish in it, which was actually, quite raddish in that it didnae have much flavor-flav); satsuma; slice of fruit cake; cup o' tea.
Dinner: Chicken & veg pie; potatoes; green beans. Pudding was a raspberry ripple mousse and an American style chocolate brownie cookie. Coffee.
Supper: Hot chocolate; milk chocolate digestive; malted milk.

Wednesday, 27 May 2009

Websiting

This morning I checked my email, then I wanted to try and add the details of one of my custom XMP tags to exiftool.

I removed all the metadata from an image using ExifToolGUI in Windows, then opened up FileZilla to FTP it over to the Ubuntu Virtual Machine. Although I only have a few folders in the home folder I was connecting to, there are lots of dot files and folders since it is a real user account. These make it quite hard to find the folder you want in Filezilla as you have to scroll down past a long list of dot files before you find the folder you want.

I did some googling to see if there was a way to hide dot files in Filezilla, after reading a couple of results, I came across a FileZilla feature request for this, which said it could be implemented via Filters in Filezilla 3 beta, and was closed 2 years ago. So I looked through all the different options in Filezilla, but couldn't find this option anywhere.

Then I checked my Filezilla version, and it was only 2.23 or sumat. I thought it was at least version 3. So I downloaded the latest version (3.2.4.1), and it does have the File Filtering option, and it works great.

For most of the day I did some work on my website. I realised that actually I would need a way of allowing images to be in multiple categories. For example where I have 2 different insects in the same image, such as a spider eating a fly, the image would need to be in the category for the species of spider, and also the species of fly. So I did some work on this.

In the evening I watched Springwatch and Springwatch Unsprung. I also won an auction on spleenbay for a CD-I with Hotel Mario!!! It was £36 + £10 P&P. I could have paid £5 P&P, but that didn't include insurance, and I don't trust Royal Mail so I'd rather pay an extra £5.

I also saw that a Pentax Asahi 500mm/4.5 lens was finishing in 22 hours on spleenbay. The starting price (no bids yet) is £200 + £20 P&P, and includes a camera and other stuff as well, here's the description:
Pentax 500mm f4.5 lense in excellent condition incorporating mounting bracket for use alongside monopod or tripod also including Pentax ME super body, motordrive, convertor tubes and hard carry case for the lense.


After googling for the lens and looking at some sample photos I decided against buying it though, as they tended to look quite soft. I'm pretty sure that they normally sell for quite a bit more than £200 even with no accessories, but I'd rather keep my £200 to put towards a sharper telephoto lens.

The weather today was overcast with light rain in the morning. In the afternoon it was a mixture of cloud and sun, and there was a nice sunset with the clouds being lit up a beautiful orange from below. It was very windy all day again.

Food
Breakfast: Strawberry jam toast sandwich; cup o' tea.
Elevenses: Filter Coffee; Milk chocolate digestive; malted milk.
Lunch: 2x cheese on toasts with iceberg lettuce; apple; slice of fruit cake; cup o' tea.
Dinner: 1½ lamb burger style things; chips; peas; mint sauce. Pudding was 2x American style chocolate brownie cookies.
Supper: Coffee; Milk chocolate digestive; malted milk.

Tuesday, 26 May 2009

Websiting

This morning I posted to the Open forum on dpreview, asking what metadata people are interested in adding to their images, to give me ideas for any other fields I might want to add to my custom XMP File Info panel.

After that I did a little more work on my custom XMP File Info panel, just added in a field that lets you choose whether an image is available for licesning Royalty Free, Rights Managed, or not at all.

I put the washing out on the line, then decided to test out using RDFa in a webpage. I read RDFa for HTML authors, which was quite useful, except that the fact that you should use the doctype <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
, is only mentioned right at the bottom of the article. Really that should be mentioned at the top in my opinion.

I also started reading the W3C RDFa Primer. In testing my page with RDFa, I remembered that IE8 has a meta-tag you can use to make sure it renders pages in IE8 mode rather than compatibility mode. So I googled for this, and found this page that explains it well: IE 8 Compatibility - Meta Tags, Http Headers, User Agent Strings etc etc.

I also did some googling to see if using RDFa in webpages will improve your SEO. It seems the consensus is that using RDFa in webpages is a good idea for SEO and Search Engine listing. While googling I found this website that seems to have quite a bit of Semantic Web and SEO info: Science for SEO.

After lunch I went on Animal Crossing for a bit. I checked my email again, and evohosting had replied to me to say the IP Address of the server they had emailed me and the server I got to through the client area on their website was not correct, and they gave me the correct IP address for the server my sites are hosted on.

Apparently when they moved my site to a server that supports the mysqli extension they didn't update their billing system with the correct server IP address, so when they sent me the email with the new server details, it actually had the old server details on it, and the cpanel login on the client area on their site still pointed to the old server. Of course, they didn't apologise for the mistake, but did at least say that they would update the billing system so it should be correct now.

I did some more work on my website, and started reading about the geo microformat. According the Wikipedia article on the Geo microformat, there are 3 different ways to use the Geo Microformat:

<div class="geo">Belvide: <span class="latitude">52.686</span>; <span class="longitude">-2.193</span></div>

Belvide Reservoir is at <span class="geo">52.686; -2.193</span>.

Belvide Reservoir is at <abbr class="geo" title="52.686;-2.193">Grid reference SJ870099</abbr>.


Also according to the wikipedia article, Flickr uses the geo microformat. I clicked on the word 'Flickr', thinking it would take me to the Flickr website, but it actually took me to the Flickr article on Wikipedia. I thought that might be interesting, so I read that, and part of it was to do with Virgin Mobile using a CC licensed image from Flickr in an advertising campaign without permission.

The girl featured in the image brought a case against Virgin Mobile for use of the image, but the Wikipedia article didn't say what the result of the case was, and googling for it just came up with lots of old articles from when the case was first announced. I did an advanced google search, unfortunately there's no option to prioritise results by date, so I just searched for items from the last year.

Luckily, that did come up with an article that had the results of the case - Chang v. Virgin Mobile USA, LLC, 2009 WL 111570 (N.D.Tex. January 16, 2009). The case was dismissed on 'lack of personal jurisdiction' as the photo was used by Virgin Australia, and only used on ads in Australia, not Texas where the Changs brought the case.

So I guess this means that you can license photos without a model release, so long as you license them to entities that do not operate in and will not use the image in the same jurisdiction where the person featured in the photo comes from.

After getting side-tracked by that, I went on Flickr, and looked at a photo with geo information. However, searching through the page code for 'geo', the only bit that actually contained the latitude and longitude was these two meta tags in the page head:
<meta name="ICBM" content="52.43261, 10.802328">
<meta name="geo.position" content="52.43261; 10.802328">

I also tried checking the source (both normal source and generated source with some images showing) of http://www.flickr.com/map/, but that didn't seem to have any geo microformat info at all.

For the rest of the afternoon and evening I did some work on my website. In the evening I also watched Springwatch.

The weather today was overcast in the morning, then mainly sunny in the afternoon with a brief shower. By sunset all the clouds had blown away. It was very windy all day.

Food
Breakfast: Strawberry jam toast sandwich; cup o' tea.
Lunch: 1½ slices of Tiger Loaf bread; Ham with sliced baby plum tomatoes and iceberg lettuce sandwich; satsuma; slice of fruit cake; Chocolate snowball; cup o' tea.
Dinner: Shepherd's pie; green beans; gravy; tomato ketchup. Pudding was lemon pud with custard. Coffee.
Supper: Oreo; Milk chocolate digestive biscuit; malted milk; coffee.

Monday, 25 May 2009

More trouble with evohosting and xmp File Info panelling

Yesterday I wanted to upload some images to show in the Weekly macro/close-up thread in the dpreview canon lens forum, so I uploaded them to my webspace with evohosting, but then when I tried to access them, they weren't there. I could see the files with both cpanel and ftp, but when visting the site in the browser, was getting a totally different file list.

So I contacted evohosting about this, and they just replied to say that my domains were resolving correctly, and the files shown in cPanel are the same as the file listing when visting the domain through a browser.

So I took some screenshots showing the differences. Unfortunately, while evohosting's support ticket has a 'Upload File(s)' box, it will only let you attach one file, so I had to take all my screenshots and stick them in one giant long image, and then replied to evohosting to show them that the files shown in cPanel are NOT the same as the file listing when visting the domain through a browser.

Despite going to bed last night about 10pm, I didn't get to sleep until after 1am, hence I didn't get up this morning until sometime after 8am.

Today, I checked my email, and Evohosting had replied to say
We have checked the URL http://iliveinabin.com/Img/ through both the internet browser and the file manager. Both are showing the same files in it

Wow, that's helpful! Luckily they did attach a screenshot to show that the cPanel File Manager and the site when viewed from a browser DID have the same file listing (different cPanel listing to what I was getting). They asked for the exact procedure for how I was getting the error.

So I replied with the exact procedure (which was just logging into the cPanel and then going on the File Manager, and also the ftp details I was using).

Evohosting then replied to say that I was using the wrong ip address to login to cPanel and access ftp, even though I was using the server ip address they had emailed to me. Logging on to cPanel through the client area on their website also took me to cpanel on the server with the same ip address I had been using.

I replied to this effect about 11am this morning, and haven't heard back from evohosting since. I guess I should be glad they've been replying to me so far, since when I first contacted them about this issue yesterday, it was Sunday afternoon, and today is a bank holiday. I don't know if that's standard support hours for a shared hosting provider though.

Very annoying though, how when contacting evohosting for support, they just say 'everything's working okay' until you prove unequivocally (which normally takes a few messages) that everything is not working okay. They did this before with me when the mysqli extension wasn't working.

In the morning I also went on Animal Crossing and vacuumed my room.

Also today, I did some more work on my custom XMP File Info Panel. All I did was to get a bit working where you can add websites that you've uploaded an image to, and the URL of the image on that website. Somehow that managed to take most of the day (and I'd already done quite a bit of work on this aspect). I also split some of the parts of the actionscript for the whole panel off into separate files, so I've now got files like ItemLists.as, Lenses.as, Websites.as etc, which makes the code much easier to manage.

In the afternoon I tried to take some photos of mating yellow ladybirds, but the one on the bottom kept running around continuously, and hiding behind leaves, so I didn't get many photos, and those I did get are pretty rubbish.

Later on in the afternoon, there were loads of little spiders on the green bin (obviously just hatched), so I took a few photos of them, and then there were also some weird bugs on the waterbutt that looked a bit like winged aphids.

In the evening I watched Springwatch, which had Chris Packham as Bill Oddie's replacement (apparently Bill is suffering from depression at the moment). Personally I prefer Chris to Bill as Bill is a bit weird. I also really liked the "Nature's Calendar" TV series that Chris presented a couple of years ago. Funnily on Springwatch, they are having a section about "Nature friendly holidays", and I always thought that "Nature's Calendar" gave some quite good ideas on that point.

The weather today was overcast all morning, then sunny in the afternoon, then became overcast again in the evening.

I was just listening to HFM, and they played "run, run, run" by Phoenix. I'd forgotten how good they were, very hip-hop style music, but not hip-hop style singing or lyrics.

Food
Breakfast: Bowl of Fruit & Fibre; cup o' tea.
Lunch: Farmhouse Mature Cheddar cheese sandwich made with freshly baked tiger loaf bread; honey sandwich made with freshly baked tiger loaf bread; banana; slice of fruit cake; Tesco caramel Rocky; cup o' tea.
Dinner: Ham quiche; baked beans; potatoes; fried mushrooms. Pudding was ½ raspberry ripple mousse and ½ a slice of flan. Coffee.

Saturday, 23 May 2009

Photoing a moth

Last night a moth was knocking on my bathroom window, so I let him in and trapped him in Ben's old stick insect tank.

Then this morning and part of this afternoon I took some photos of it. It was very good and didn't move while I was taking its photo, although when I stopped for a bit it went underneath the box I was photographing it on. Eventually I put it in the back garden and it climbed underneath a leaf.

Also this afternoon and part of this evening I did some more work on my custom XMP File Info panel.

The weather was sunny and quite warm most of the day. I thought there was going to be a nice sunset, but by the time the sun actually set, all the clouds had disappeared, so it was probably quite boring (can't actually see the sunset as it sets behind the houses).

Food
Breakfast: Lime marmalade toast sandwich; cup o' tea.
Lunch: Deli ham with sliced cherry plum tomatoes and iceberg lettuce sandwich; apple; ½ honey sandwich made with bakery loaf bread; slice of Fabulous Bakin' Boys' Raspberry flapjack; Tesco caramel Rocky; cup o' tea.
Dinner: Burger in posh bread roll with grated mature cheddar cheese, iceberg lettuce and tomato ketchup; bowl of cup a soup style stuff. Pudding was a slice of home-made flan with cream and custard.
Supper-ten-crupper: Wagon Wheel.

Lots of posh food today!

Thursday, 21 May 2009

computering and photoing

In the morning I sorted the photos I'd taken the last couple of days, then did a backup. I found that my external e-SATA 1TB drive wasn't appearing in the drives list, and Vista refused to shut down or start when it was plugged in. When starting the comp up though, it was being detected okay, and appeared in the JMicron controller drive list as a non RAID drive.

Not sure if this is what the problem is, the JMicron controller was configured as RAID. So I had to backup to that drive using USB.

After that I checked my email and took some photos of a couple of plants from downstairs. I checked my deviant art, and painted some bits of paper to try and use as backgrounds for macros. I'm not sure how well they'll work as the colours aren't very saturated.

After lunch I went on Animal, then I installed my SATA hotswap drive that arrived from dealextreme today. I found my comp was very dusty inside, and spent ages cleaning it with a duster and rocket blower.

After getting the drive installed and working, I finished taking photos of the plants from downstairs, then went in the garden and took some photos of plants there. After that I sorted the photos I'd taken today.

After dinner I took some more photos in the garden and then watched The Tick with Moccle and Lil' L. Then I did some website stuff, then checked The Luminous Landscape and Juza Nature Forums a bit.

After that I listened to some skilk 103.2 songs with Moccle and then watched some youtube videos.



Food
Breakfast: Choc crunch oat cereal; cup o' tea.
Lunch: Mature cheddar cheese with iceberg lettuce sandwich; cherry plum tomato; apple; grapes; piece of Fabulous bakin' boys' flapjack; Tesco caramel Rocky; cup o' tea.
Dinner: 2x Delee pork & herb sausages; mashed potato; baked beans. Pudding was a slice of mandarin cheesecake. Coffee.

Wednesday, 20 May 2009

Websiting

This morning I did some work on my website.

In the afternoon I went on Animal Crossing. Then while using my custom XMP File Info panel, I found that when selecting a lens using an XMPComboBox, the MRU (Most Recently Used) list for the LensManufacturer would pop up, even though the XMPTextInputMRU that was holding the LensManufacturer text had visible="false" includeInLayout="false". It seems that visible="false" includeInLayout="false" only affect the text part of component, and not the MRU List.

Anyway, eventually I found out what the problem was - I had previously typed a value into the LensManufacturer field (before I had hidden it), and so this value was saved in the MRU List (C:\Users\Rusty\AppData\Local\Adobe\XMP\File Info\2.0\work\FileInfoMRU.xml). So whenever I filled the LensManufacturer field in programatically, it was getting the same Manufacturer name and displaying the MRU List. So to fix it, I had to delete the entry for LensManufacturer in the FileInfoMRU.xml file. When adding the LensManufacturer programatically, it isn't added to the MRU list, so the problem won't occur again.

In the evening I watched an episode of The Tick with Moccle and Lil' lad, did some more website work, and took some photos in the garden. There seemed to be quite a few different flies about, but the only ones that would stay still all seemed to be the same species (Coenosia tigrina I think).

Food
Breakfast: Bowl of Chocolate crunch oat cereal; cup o' tea.
Lunch: 2x cheese on toasts with iceberg lettuce; satsuma; grapes; 2x slices of Fabulous Bakin' Boys' flapjack (one slice was about ½ the size of a normal slice of flapjack); Breakaway; cup o' tea.
Dinner: Pasta; chicken nuggets; peas; tomato ketchup. Pudding was 2x apple pies warmed up with cream. Coffee.

Tuesday, 19 May 2009

reading dpreview forum threads

This morning I put some washing out, did a little website stuff, then checked my email and the canon lens forums on dpreview.

After lunch I did a backup, finished checking the canon lens forums on dpreview (I hadn't checked it for about 2 weeks), and went on Animal Crossing.

After that I did some more website work. After dinner I watched 2 episodes of The New Super Mario World and an episode of The Tick Live Action with Mickelmaus and Lil' L. I went in the garden and took some photos, then watched Replacement Killers with Moccle.

Food
Breakfast: Strawberry jam toast sandwich; cup o' tea.
Lunch: ½ Mature cheddar cheese with iceberg lettuce sandwich; packet of prawn cocktail flavour crisps; satsuma; grapes; butterfly cake; cup o' tea.
Dinner: Chicken & vegetable pie; mixed veg; potato. Pudding was chocolate swiss roll with chocolate custard and tinned pear halves. Coffee.

Monday, 18 May 2009

Giving up on subversion for file backup

This morning I carried on trying to get subversion set up on my Ubuntu Virtual Machine so that I could backup files from Ubuntu to the Vista host using subversion.

I found a nice subversion tutorial that explained how to add files to your subversion repository. The first problem I had when doing this though, was that I would get an error message about not being able to read a .cache file or something similar, and then the import would stop. It didn't carry on and add all files it could read to the repository, just stopped.

So after some googling I found how to stop subversion from adding dot files to the repository. I had to edit /etc/subversion/config and add global-ignores = .*. This would mean that .htaccess files won't be added to the repository though, so I'd have to back them up manually.

I tried doing an import again, but got an error this time that it couldn't read a file due to read permssions, and again it stopped there and didn't finish the import. So I ran import again as a super user and it actually worked!

So I went back to the Vista host machine, and used TortoiseSvn to checkout the svn repository on the Ubuntu virtual machine. However, it got as far as a file that had a " character in the filename (illegal in Windows but okay in Linux), then stopped and didn't checkout any more files. It had also checked out all the deleted files as I had forgotten to exclude them.

So in Ubuntu I changed my filename that had a speech mark in it and also added *.*~ to the list of global ignores in /etc/subversion/config. I then tried to import the folder again, but got an error message that the file already exists. So it seems that to get this working for the purpose of backing up files, I would either need to:
  1. Checkout the repository to my working folder, then commit the folder whenever I want to do a backup.
  2. Delete the folder in the repository, then import it again each time I want to do a backup


I don't want to do 1) as I don't want the .svn folders in each of my working copy directories as it prevents me uploading my site easily to the webserver. Of course, if the webserver supported subversion or rsync it wouldn't be a problem, but I'm on shared hosting and don't think they have either of those services.

I don't want to do 2) as it's too much trouble - I might as well just backup the files to a USB mass storage device (which I think is what I will do for the moment).

After lunch I went on Animal Crossing for a bit. When I finished going on that I found it was all wet around the back of computer as I had left my bedroom window open and it had started raining while I was going on Animal. Luckily the comp still seemed to be working okay.

I did some more work on my photo website for the rest of the afternoon.

In the evening I watched an episode of The New Super Mario World and two episodes of The Tick Live Action with Maccy and Lad. After that I did a bit more website work, then took some photos in the garden from about 8.30pm-9.30pm, then watched a John Wayne film with Macager and Clare.

The weather today was a mixture of sun and clouds. It was very windy and rained heavily for a bit in the afternoon.

Food
Breakfast: Strawberry jam toast sandwich; cup o' tea.
Lunch: 2x cheese on toasts with iceberg lettuce; apple; grapes; butterfly cake; cup o' tea.
Dinner: ½ breaded mozzarella; sausage roll; baked beans; mashed potato; tomato sauce stuff. Pudding was a strawberry yoghurt. Coffee; Dark chocolate digestive; ½ malted milk; ½ nice.

Sunday, 17 May 2009

Enabling USB devices in VMWare Server 2.0

This morning I went on Animal Crossing. Unfortunately Nook's was remodelling, so I couldn't buy/sell any stuff. So I just got a red turnip seed from Sow Joan, played hide & seek with Derwin and 2 female pigs, and got my bell rock.

Before and after church I watched Mociac play on Zelda. Then after dinner I went on my comp, and checked Andy Rouse's blog, Moose Peterson's blog, and The Luminous Landscape. It was interesting to see that Andy Rouse had posted some shots very similar to Alan Briot's 'Landscape Blurs'. Unfortunately I can't link to Andy Rouse's shots as his blog doesn't feature permalinks, but here's a link to his Australian collection, which includes the blurred tree abstracts. And after checking Andy Rouse's blog, I checked the Luminous Landscape and saw that part two of Alan Briot's Landscape Blurs tutorial had recently been posted.

After checking all those (getting through the large number of posts and videos that Moose Peterson makes each week takes quite a while), I added my lenses to my list of available lenses in my custom XMP File Info panel. I wanted to keep my lens names to some sort of standard so if possible my files would have the same lens name (for a specific lens model) that other users of that lens would have encoded in their files. So rather than just writing the names of my lenses myself, I used the lens names from the Exiftool canon.pm and nikon.pm perl modules and also this excellent list of lenses that Phil had put in the comments in the canon.pm file.

Then I decided to try and set up my Ubuntu virtual machine as a SVN Server. The reason for doing this comes from a few days ago when VMWare Server randomly decided that I couldn't use NAT as a networking option any more. This has meant (no idea why) that Ubuntu can't connect to the host machine, which in turn means that I can't use rsync for backing up files from Ubuntu to the host.

But I can connect from the host to Ubuntu, so with subversion I should just be able to checkout the files in Ubuntu from the host. I downloaded Tortoise SVN for my host, and started following the guide to setting up Subversion on Ubuntu. Then I thought that I should probably backup my existing files before setting up subversion in case it trashes my files or something goes wrong.

However, I couldn't see how I backup anything from the Ubuntu virtual machine. On the VMWare Remote Console, my USB devices were listed, but when I clicked on any of them, all the options, including the connect option were greyed out. In the VMWare Server config webpage, the settings all looked okay, and USB was set to connect devices automatically.

So doing a bit of googling, I first found the suggestion to add
usb.present = "TRUE"
usb.generic.autoconnect = "TRUE"

to the .vmx file for the Virtual Machine. My vmx file already had usb.present = "TRUE", so I added the other line, but the USB device options were still greyed out.

The next suggestion I read said that in the virtual machine settings on the VMware Server configuration web page there was a USB icon above the Tasks and Events tabs. Then click the icon and the drop down will display the USB devices with a check box next to them. Check the box and the device will disconnect from the host and appear in the VM. Now this did do something in that Vista said it was installing VMWare USB drivers, but the USB mass storage device did not appear in the Ubuntu Virtual Machine, and the USB device options in the VMWare Remote Console were still greyed out.

Next I read that in Vista the VMWare USB drivers aren't installed automatically, and you need to install them by right clicking the vmusb.inf file in the VMWare Server program folder, and choosing 'install'. But when I tried this, I got a message
The INF file you selected does not support this method of installation


Lastly, I tried the suggestion of installing a program called 'Windows Enabler' that enables greyed out options. Amazingly, this worked.

Backing up my home folder to a Sandisk Extreme III CompactFlash card took quite a long time, and I got quite a lot of errors despite executing cp as a super user. Anyway, eventually it finished, and it looked like it had backed up all the important files okay. The main things it complained about was symbolic links and nautilus files.

When it was finished I disconnected the USB device, and then tried to use the /home folder as my svn repository so I could easily backup the /home folder. But I got the following error:
svnadmin: Repository creation failed
svnadmin: Could not create top-level directory
svnadmin: '/home' exists and is non-empty


So it looks like I'll have to create a seperate svn folder, then whenever I want to do a backup, copy all my files I want backed up to it. Annoying!

Setting up subversion took me quite a while. I created a new domain for accessing the subversion repository, and then when connecting to it through TortoiseSVN, I was getting an error like
svn: http://ubuntusvn.com/svn/ moved permanently/ to 'http://ubuntusvn.com/svn/' ; please relocate

After some googling I found that the svn root must be outside your site root. For setting up subversion on ubuntu, I used the Ubuntu subversion help page and Install Subversion with Web Access on Ubuntu. I found that when trying to access the site via SSL though, I was getting a 404 page from my pog website.

Googling found the answer to that pretty quickly though: Wildcard SSL multiple sites under same IP. All I needed to do was to add the line NameVirtualHost *:443 to /etc/apache2/ports.conf as described on that page.

So now I can connect via https to my Ubuntu virtual machine subversion repository from my Vista host using TortoiseSVN. Only thing is, I'm not sure how to actually add files to the repository so that TortoiseSVN can download them to Vista. The readme file in the svn repository folder says
Do not add, delete, or modify files here unless you know how to avoid corrupting the repository.

So I guess it's not as simple as just copying the folders I want to the repository folder. I'll have to look at that tomorrow.

I'm just listening to World Wide Message Tribe at the moment, pretty good really. It sounds weird how their english accents really stick out, I guess I'm just so used to listening to and watching U.S. stuff almost exclusively.

In the evening I had a break from trying to setup subversion, I went in the garden for about an hour and took a few photos. Unfortunately I don't think I really got any good photos again. Although it's been pretty cool today, and it was quite dark/no sun this evening, the flies were still pretty active or in positions where it was hard to get a decent shot.

The weather today was a mixture of cloud, sun and rain. It rained quite a few times again.

Food
Breakfast: Lime marmalade toast sandwich; cup o' tea.
Dinner: Chicken Fajita; rice; iceberg lettuce. Pudding was lemon Sorbet. Coffee; Custard Cream; Dark chocolate digestive; easter egg ball thing; piece of Sainsbury's caramel chocolate; some easter egg.
Tea: Mature cheddar cheese with iceberg lettuce sandwich; grapes; home-made butterfly cake; fake caramel Rocky; cup o' tea.

Saturday, 16 May 2009

A forward slash annoys me

I haven't blogged the last couple of days because I couldn't be bothered. Anyway I have something to 'blog' about now.

The last couple of days I've just been doing more work on my website, at the moment I'm still working on extracting metadata from the image and sticking it in the database. Yesterday I found the composite 'Lens' tag produced by exiftool isn't that great, e.g. [Lens] => 18.0-70.0 mm f/3.5-4.5. Now while that's good, it's not great. What I was looking for is more like [Lens] => AF-S DX Zoom-Nikkor 18-70mm f/3.5-4.5G IF-ED, which I believe is also a composite tag produced by exiftool, but it doesn't produce that tag with the options I'm currently using (-EXIF:all -XMP:all -g -j -c "%s" -E -fast).

Anyway, I started yesterday to create an XMPComboBox that would display a pre-defined list of lens values you define yourself, and then when you select what lens you took the photo with from the XMPComboBox, it would save it to the aux:Lens property of the image's XMP metadata.

I got that working, but then I was thinking more about this, and that it would be better to use the seperate MicrosoftPhoto:LensModel and MicrosoftPhoto:LensManufacturer tags to save the lens info, as that way you can filter your images to get all photos taken with a lens by a certain manufacturer. Using those two tags also allows you to see the Lens info in Windows Explorer: Working with Lens information using Exiftool and Windows Vista.

So that's what I've been working on today. I had to delete most of my work that I'd done on the aux:Lens XMPComboBox yesterday and start on it again, as I now needed to get the XMPComboBox to write two values (MicrosoftPhoto:LensModel and MicrosoftPhoto:LensManufacturer) compared to just the one value for aux:Lens.

After getting it working in so far as I could write lens values to the XMP using my custom file info panel, I found that my lens values weren't showing up in Jin Da Pin Doze Explorer or the details when viewing the file properties in Windows Dora The Explorer.

I tried adding the lens values to the file through the files properties dialog in windows explorer, and they displayed fine in windows explorer. But when viewing the 'Raw Data' in Bridge, I noticed that it was using a weird namespace prefix for the MicrosoftPhoto tags:
<rdf:Description rdf:about=""
xmlns:MicrosoftPhoto_1_="http://ns.microsoft.com/photo/1.0">
<MicrosoftPhoto_1_:LensModel>EF-S18-55mm f/3.5-5.6</MicrosoftPhoto_1_:LensModel>
<MicrosoftPhoto_1_:LensManufacturer>Canon</MicrosoftPhoto_1_:LensManufacturer>
</rdf:Description>


Googling for "MicrosoftPhoto_1_" did come up with a few (only one page of) results, but not much useful. I tried writing a LensModel value using Exiftool, and this too appeared in the 'Raw Data' panel of Adobe Bridge to use the MicrosoftPhoto_1_ namespace prefix.

Extracting the xmp with exiftool/exiftoolGUI, the namespace appeared to be MicrosoftPhoto, not MicrosoftPhoto_1_. This was the case for files with the LensModel value written through Windows Explorer, Exiftool, and my custom FileInfo panel for Bridge.

I also found that when Exiftool wrote the LensModel value, it would show up in windows explorer, unlike when written through my custom XMP File Info panel. I tried starting with an image with no metadata, in case some existing metadata value was messing it up, but still got the same results.

I also tried extracting the tags using Exiftool. Using -XMP:LensModel I could extract the lens model from my image that had the metadata written by my custom file info panel, but if I used -XMP-microsoft:LensModel, it wouldn't extract anything. Both methods would work okay on images where the LensModel was written by exiftool or windows. I also tried -XMP-MicrosoftPhoto:LensModel just in case, but that didn't work.

I tried using exiftool to extract the LensModel data from 2 images (one with the tag written by windows, the other with the tag written by my custom XMP FileInfo panel), and stick the data in an xmp file. When I compared them they were identical.
Image with LensModel set through custom FileInfo Panel in Adobe Bridge
Image with LensModel set in Windows Vista x64
(Both images should have metadata intact)

-XMP:LensModel data from the custom FileInfo panel image:
<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 7.75'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>

<rdf:Description rdf:about=''
xmlns:MicrosoftPhoto='http://ns.microsoft.com/photo/1.0'>
<MicrosoftPhoto:LensModel>24mm f2.8</MicrosoftPhoto:LensModel>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end='w'?>


-XMP:LensModel data from the Windows image:
<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 7.75'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>

<rdf:Description rdf:about=''
xmlns:MicrosoftPhoto='http://ns.microsoft.com/photo/1.0'>
<MicrosoftPhoto:LensModel>24mm f/2.8</MicrosoftPhoto:LensModel>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end='w'?>


Now, when comparing the two files I noticed that the namespace URI for the MicrosoftPhoto namespace doesn't end in a forward slash or hash/pound sign. According to the XMP specification (bottom of page 14):
The namespace URI for an XMP Schema must obey the rules for XML 1.1 namespaces. In addition, to operate well with RDF it must end with a ‘/’ or ‘#’ character.


In my custom XMP FileInfo panel, I had set the MicrosoftPhoto namespace URI to end in a forward slash, as per the Exiv2 page for the Microsoft Photo Schema that I got the namespace URI from. But when exiftool extracted the xmp, it was missing this forward slash from the end of the namespace URI.

I checked the 'Raw Data' for the two files in Bridge, and noticed there that the file where I had saved the LensModel through my custom File Info Panel did have a forward slash on the end of the MicrosoftPhoto namespace URI, whilst the image with the LensModel added through the Windows File Properties dialog was missing the forward slash from the end of the MicrosoftPhoto_1_ namespace URI.

All this testing and messing around with this took me quite a while. Anyway, seeing this I tried changing the namespace URI for MicrosoftPhoto so it didn't have a trailing slash. And hey, Presto! Get your hands off my Pogs! Sorry, just talking to Presto there. Well, it worked. I guess I should have known that Microsoft would not adhere to the standards. And it's not like adding a trailing slash or # on the end of your namespace URI is difficult. <sarcasm>Thanks for wasting a few more hours of my time MS!</sarcasm>

Also today I watched 2 episodes each of The New Super Mario World and The Tick Live Action with Moccle and Lad, went on Animal Crossing for a while, watched Moccle go on Paper Mario and Zelda for a bit, and did a bit of gardening. Shaz MacPeeaz came home today as well.

The weather today was mainly cloudy, and it rained quite a few times.

Food
Breakfast: Blackcurrant jam toast sandwich; cup o' tea.
Lunch: Piece of fresh bread-maker-made bread with cheese and iceberg lettuce; Piece of fresh bread-maker-made bread with honey; slice of Tate & Lyle's Golden Syrup Cake; Caramel Rocky; Cup o' tea.
Dinner: Slice of Pepperoni Pizza; peas; chips; salt. Pudding was a big chocolate choc chip cookie. Coffee; small piece of easter egg.
Supper: Dark chocolate digestive; cup o' tea.

Wednesday, 13 May 2009

Watching films & TV

This morning I checked my email and watched 'Last Hurrah For Chivalry' while I backed up my pictures to my new 1.5TB harddrive. I decided to keep backing up My Music to the Lacie drive, and jut backup my other files and pictures to the 1.5TB drive (there wasn't enough room on it to hold My Music as well). I will also continue backing up My pictures to my 1TB external drive, so I have 2 backups of My Pictures.

This is just a double safeguard, so if the main drive fails and the backup drive fails, I still have another backup. Since my pictures are worth quite a lot to me, this makes sense to do this (really I should have an offsite backup, but I can't arrange that).

After lunch I went on Animal Crossing, and got the tail for my Seismo skeleton, which was the last piece that I needed, and have needed for quite a while. I also caught a red snapper and Barred Knife Jaw in a row, and caught another red snapper later. Wahoo!

After that I checked my spleenmail again, then tried to do some work on my website. I found that exiftool wasn't outputting a © sign into UTF-8 format, but was outputting everything else in UTF-8. This meant that json_decode() didn't work as it didn't like the © sign not being in UTF-8 encoding. If I did a utf_encode() on the json string, then it would json_decode() okay, but all the other UTF-8 characters would get messed up.

After dinner I watched the last episode of The Legend Of Zelda with Moc and Lad, then watched episode 7 of Shaka Zulu with Moc. Moc got Shaka Zulu on his Love Film rental even though he didn't order it. We thought it was a film, but actually it was a TV series, and the disc just had episode 7, 8, and 9 on it. So we just watched episode 7 of it. It was Geoff Allbright.

After that me, Moc and Lil' L started watching POTC3, but it kept being stuttery so Mociac took the disc out to spleen it, but then when he put it back it had loads of unskipable adverts (as it's a rental bluray), so we didn't bother watching it and watched an episode of Super Mario World instead. It's weird how in cave world all the cave people and dinosaurs talk like babies. Moc finds it annoying but I just think it's funny.

Food
Breakfast: Blackcurrant jam toast sandwich; cup o' tea.
Lunch: Mature cheddar cheese with iceberg lettuce sandwich; clementine; slice of Lyle's Golden Syrup cake; Fox's Triple; cup o' tea.
Dinner: Beef & Ale pie; green beans; potatoes; cauliflower. Pudding was a Muller fruit corner. Coffee; Small Easter egg ball thingy; piece of Green & Black's Maya Gold; a couple of pieces of Sainsbury's caramel chocolate.

Tuesday, 12 May 2009

Got a 1.5TB harddrive

This morning I checked my email, then did some work on my custom File Info panel. I wanted to display the GPS co-ordinates in the panel.

The GPS co-ordinates are displayed in the File Info Panel in the 'GPS' Format, i.e. Degrees, Minutes. After some reading on the different formats of displaying Latitude and Longitude, I realised that converting from Degrees, Minutes format to Decimal Degrees format was actually quite easy - just divide the minutes by 60, add to the degrees and make the result negative or positive depending on the Cardinal Direction (North, South, East, West).

After converting the Latitude to from GPS format to decimal degrees format I realized that the resulting figure had far fewer decimal points than the actual Latitude value that was stored in the image's EXIF. I feared that this would make the result quite inaccurate, and so googled for quite a while to see if there was a way to get the decimal figure that was stored in the EXIF through Bridge/the XMP File Info SDK.

Unfortunately I didn't find anyway to do this, however I then read on that GPS Lat/Lon conversion page I was reading earlier, the following:
Decimal Degrees is displayed as the degrees in normal value, with both minutes and seconds in decimal format, as a degree value. There is ONLY a degree designation. (DDD.DDDD) A maximum of 4 decimal places is adequate.


So I tried my converted values 51.87865, -1.74558 versus the values stored in the exif 51.8786898230513, -1.74557184257441 in google maps, and sure enough both results were the same. I tried changing the last digit on the short values, and it made only an extremely tiny difference, so it seems I was worrying about nothing, especially when GPS values are only accurate to within ± 10 metres or something.

After getting that working, I tried to upload my test photo to my Ubuntu installation, but Filezilla couldn't connect. I looked at Ubuntu and it wasn't connected to the network. I went on the VMWare Server Configuration webpage, and edited the Network options for the virtual machine, and the selected Network Option was sumat like 'NAT - Not available'. Weird how it's been working with NAT, but now won't. I changed it to 'Bridged', and then restarted my PC in case it was sumat weird with my PC that had broken it.

After restarting my PC, I checked the Virtual Machine Configuration again, and now 'NAT' was not even listed in the Network Options. I'm not quite sure what the difference between NAT and Bridged is, though while the connection was working with NAT selected, the Virtual Machine's IP address never changed. Anyway, I updated the hosts file on my PC and could access Ubuntu okay.

I checked my spleenmail again.

After dinner I watched 'The Legend Of Zelda' and 'The New Super Mario World' and some Youtube videos with Moc and Lil' Lad.

About 7.30pm I went in the garden to see if there was owt to photograph. There wasn't much really. I did see a dung fly, but it flew away. There was a cute little thing that looked like a speck of dust to the naked eye.

After that I looked on t' net to see if my new Seagate 1.5TB drive was SATA3, as it said on the box, and if SATA3 was back compatible with SATA2. On the ebuyer page for the drive, it just said it was SATA2, and there was no mention of SATA3 in any of the user comments/reviews. I got the drive out of the box, on the actual drive there was no mention of SATA3 (or 2), just that it was a SATA drive. It had the same model number as the ebuyer listing.

I found this article about SATA 3, that says that SATA3 should be introduced in the first half of this year, and it also says that SATA 3 is back compatible with SATA2.

I looked on Seagate's website, and couldn't see anything about SATA3 there, but often hardware manufacturers do seem to be quite slow in updating their websites with new products.

Anyway, I plugged it in (hotswap style), Vista installed the drivers for it automatically, then I initialized it and did a quick format (Thanks to the person who wrote the comment on the ebuyer page that a full format isn't necessary). After that I had to decide what data to copy to it (I'm using it as a backup drive, replacing the previous 500GB Samsung Speedpoint drive I was using for backup).

I copied the contents of my E: partition to it, so I won't need to use my 320GB Lacie BigDisk for backup anymore since I can backup all the files that I was previously backing up to 2 drives just to this one. In fact I could probably backup my pictures to it as well and just have it as a single backup drive, though that probably wouldn't leave much space on it.

Food
Breakfast: Bowl of Maple & Pecan crunch oat cereal; Cup o' tea.
Lunch: Mature cheddar cheese with sweet & crunchy salad sandwich; clementine; caramel Rocky; cup o' tea.
Dinner: Lamb burger thingy; peas; potato; mint sauce. Pudding was banoffe pie that McRad had made. Coffee; Sainsbury's caramel chocolate.

Monday, 11 May 2009

Feeling ill

This morning I finished off (well probably not actually) my custom File Info XMP panel. I wasn't feeling very well, possibly due to waking up in the night and finding it hard to get back to sleep, so I didn't do much really. I checked Andy Rouse's blog, Dalantech (John K)'s blog, and Macroartinnature blog.

In the afternoon I went out for a walk. I just walked through lots of houses (not literally), and eventually came to the path near the edge of the Leisure Centre playing fields. Then I walked across the fields towards East Farndon. When I got the valley I walked along the ridge I was on, then down into the valley, and then carried on across the fields towards Harborough.

I got home a couple of minutes before Ben came home from school. I copied the pics I'd taken today and processed them, and also checked my email.

Moc came home quite early, just after 5pm, so me, Moc and Lad watched The Legend Of Zelda and The New Super Mario World.

After dinner we finished watching The Wrath Of Khan, then we watched some extras. The first one was called 'Designing Khan' or sumat like that and was just skill old blokes and a woman who laughed about random stuff talking about designing the sets and props used in the film.

The other extra was called sumat like 'The World Of Star Trek' on the menu, but at the end it said it was called sumat like 'A Novel Approach'. It had 2 skill nerd people, one bloke and one woman who write Star Trek Books talking about the books they write, the Star Trek Universe and Star Trek Books in general. But they focused on three Khan books that the bloke had written and a book about the simulation featured at the start of the film (I cannae remember what it was called now).

Anyway, both extras were very a circular object that you put on your finger made from a Hairy wild pig with tusks.

After that we just beed bored. Moc looked at his CD collection for a bit, then we drew stuff on Ben's stationery. Moc converted a rubber into a dual Walker Texas Ranger and Widmore rubber, and I wrote 'Widmore' on a pencil top, drew a face on another one, and a drew a genie of the tea in Ben's maths book.

The weather today was very windy again. In the morning it was mostly overcast and cloudy, then in the afternoon it was mainly blue sky with a few fluffy white clouds around.

Food
Breakfast: Bowl of Pecan and Maple oat crunch cereal; cup o' tea.
Lunch: Slice of Roast Turkey Breast with sweet & crunchy salad, cucumber, mayonnaise, and baby plum tomatoes sandwich; clementine; cup o' tea.
Dinner: Pasta twirls; cheesy pasta sauce stuff; bacon; mixed veg; ground black pepper. Pudding was a piece of chocolate cake; chocolate custard; banana. Coffee; A couple of pieces of Sainsbury's caramel chocolate.

Sunday, 10 May 2009

Watching films

This morning I went on Animal Crossing for a few minutes, though long enough to find Sow Joan and buy a red turnip seed. After that we went to Church.

After Church I watched an episode of The Legend Of Zelda and The New Super Mario World with Moc and Lad. At dinner there was the Church Circuit chairlady or sumat with us.

After dinner me, Moc and Lil' L finished watching POTC2. After that I watched Cyrano de Bergerac with Moc. It was about a bloke (Gerard Depardieu) with a big nose who likes making poems all the time.

I went on my comp for a bit and checked Moose News Blog and The Luminous Landscape, then I went on Animal Crossing a bit more.

After that I played on toppling totems or sumat for a bit on Macager's comp, then me, Moc and Lil' lad watched some of Satr Trok 2 - KHAAAAAN!

The weather today was very calm and sunny in the morning (complete contrast to the rest of the week), but in the evening the wind started to pick up again. The past week would have been very good for landscape photography with lots of large grey textured clouds and occasional openings in the cloud that the sun would spill through.

Food
Breakfast: Blackcurrant jam toast sandwich; cup o' tea.
Dinner: Mexican style Burrito; rice; salad. Pudding was Raspberry Ripple Ice cream with strawberry sauce and banana. Cup o' tea.
Tea: Grated Mature cheddar cheese with sweet & crunchy salad sandwich; clementine; ½ scone with I cannae be-cheese it's nae butter jimmy and strawberry jam; ½ scone with I cannae be-cheese it's nae butter jimmy and blackcurrant jam; Caramel Rocky; cup o' tea.

Saturday, 9 May 2009

Custom File Info panelling

This morning I was reading the Metadata Working Group Guidance, here's a summary of the bits I found most interesting/useful:
(page 21)
Exif within XMP
The most recent (as of mid-2008) XMP specification describes the usage of Exif/TIFF properties within XMP itself. Both Exif (http://ns.adobe.com/exif/1.0/) and TIFF (http://ns.adobe.com/tiff/1.0/) namespaces have been defined so corresponding Exif properties can be stored. This is particularly useful if Exif properties need to be stored but the file format does not support native Exif (e.g. PNG).

In the case of file formats that do support Exif however, the current XMP specification describes mechanisms to reconcile data between the native Exif values and the mapped Exif properties in XMP (see “TIFF and Exif digests” under section “Reconciling metadata properties” in the XMP specification).

However, this document changes this earlier XMP guidance and recommends that Exif and Tiff device properties only be mapped into XMP in the case the file format does not support Exif natively.


(page 22)
IPTC within XMP
In contrast to the earlier IPTC-IIM specification, the most recent IPTC Core specification allows storing IPTC properties within XMP. Most of the properties are mapped to existing standard namespaces but for those where this was not possible a new namespace “http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/” has been introduced. The IPTC group encourages people to move from IPTC-IIM to its newer IPTC Core / IPTC Extension standard.


If a file contains both EXIF and XMP, then reader applications should read both but prefer EXIF (page 23-24).

If writing XMP and IPTC-IIM in sync, an md5 checksum of the IPTC-IIM block must be stored in the file. Then when reading the metadata, the application should check whether the stored checksum matches the current checksum of the IPTC-IIM block. If it doesn't match (means the IPTC-IIM has been changed by a non-compliant application), the application should prefer IPTC-IIM, otherwise it should read both and prefer XMP (pages 25-27).

(page 32)
Time-zone handling
...
Exif date/time values such as DateTimeOriginal do not contain time zone information. The camera is presumably in an appropriate local time when a photograph is taken, but there is no indication in the Exif metadata of what that time zone was. The photograph's time zone MUST NOT be presumed to be the same as that of a computer later used to process the photograph.

The XMP specification formats date/time values according to the W3C note “http://www.w3.org/TR/NOTE-datetime”. In this note a time zone designator is required if any time information is present. A date- only value is allowed. The XMP specification has been recently revised to make the time zone designator be optional.

The representation of time zone as an offset from UTC can be ambiguous with regard to daylight savings time (DST). While date information can provide a strong hint, the use of DST is not universal and the date checking is complicated by changing rules for the start and end of DST in various locations. These issues are beyond the scope of this document; they may be addressed in a future revision.

...

When time zone information is available, XMP values SHOULD be stored using the local+offset form, not the “Zulu” form (for example, use “2008-04-30T12:34:56-06:00” instead of “2008-04-30T18:34:56Z”). The local+offset form carries additional information, the Zulu value is easily determined when needed, e.g. for sorting in a UI.


I noticed on page 33 it said:
(page 33)
Hierarchical keywords are not covered. However it's well understood that this is an important use case even in the context of the consumer and will be added to future versions of this document. There are existing solutions available e.g. Adobe Bridge, Adobe Lightroom as well as Microsoft Expression Media and Windows Live Photo Gallery that have introduced hierarchical keyword workflows specific to their needs.


I didn't realise Bridge could handle hierarchical keywords, so I looked into this. Bridge has a seperate panel/pallet for hierarchical keywords, seperate to the normal keywords box on the IPTC panel/pallet. You can only add hierarchical keywords by right-clicking on the appropriate existing hierarchical keyword, and then selecting 'New Keyword' or 'New Sub Keyword'. These keywords are then saved into the XMP in two places - the dc:subject field, where keywords are normally stored, and the lr:hierarchicalSubject, which is used for storing the keyword hierarchy.

Here's what they look like in the XMP:
                  xmlns:lr="http://ns.adobe.com/lightroom/1.0/">


Events
Events|Graduation
People
People|Matthew
People|Jimmy Villnar
People|Ryan



xmlns:dc="http://purl.org/dc/elements/1.1/">


Events
Graduation
Matthew
People
Ryan
Jimmy Villnar




If you add your own hierarchical keywords, you must add them to both the dc:subject and lr:hierarchicalSubject fields, else they won't show up in the Hierarchical keywords panel in Bridge. Hierarchical Keywords that haven't previously been entered for an image in Bridge appear in the Hierarchical Keywords panel in italics. You can right-click on them and choose 'Make persistent' if you want it to be included in the list of available hierarchical keywords for all images.

I did some googling on hierarchical keywords to see if they might be worth using, but all I could come up with is that they might be.

I also had a look at adding metadata to multiple files at once. I found that for the dc:subject field, when multiple files were selected, it would say '(multiple values)' and then list the keywords used. If you clicked in the box to edit the keywords, the existing keywords would stay there and allow you to edit and add to them.

However, with custom bag fields, when multiple files were selected, it would just say '(multiple values)'. If you click in the box, all you can do is add new values, and all existing values for that field in each file would be deleted. I tried this on both my own panel and Massimo Novi's Expression Media panel, both with the same results. So I think the CS4 panels have something built into them that works with the dc:subject field, but not other bag fields.

After doing some more testing, it seems that so long as all your selected files have exactly the same data in a field, then that data will be loaded, and it won't just say '(multiple values)' and delete whatever values you have in that field when you edit it.

After getting partway through the Metadata Working Group Guidance, I stopped reading it and started going through the IPTC Photo Metadata 2008 Standards instead, deciding what fields I wanted to include in my custom XMP schema.

About 8pm I went in the garden and took some photos of a fly that didn't move about constantly. I came back in about 9pm because it was getting too dark, then processed the pics and did a backup.

Food
Breakfast: Blackcurrant jam toast sandwich; cup o' tea.
Lunch: Slice of Turkey breast with mayonnaise and sweet & crunchy salad sandwich; baby plum tomatoes (yes, they were baby plum when the ones we had before were cherry plum); banana; slice of cherry madeira cake; Fox's triple; cup o' tea; Rest of the chocolate bunny.
Dinner: Slice of ham pizza; chips; sweet & crunchy salad. Pudding was lemon and lime sponge with custard. Coffee.

Friday, 8 May 2009

Flexing

Today I was doing more flexing. Some problems I had were:

In a function called by a FocusEvent.FOCUS_OUT event, event.target.name gave me something like "UITextInput 257" rather than the actual name/id of the TextInput. The solution was to use event.currentTarget.name instead, which gave the actual name/id.

I had a function called by a DragEvent.DRAG_DROP event. In the function, I copied across the data being dragged to where it was being dropped, so I was also using event.preventDefault() to prevent the default behaviour of the data being copied, so it wouldn't be copied twice. However, this meant that after the data had been copied, the list where the data had been copied to would scroll up and down automatically depending on whether the mouse was above or below the list. (Obviously the list also needed to contain enough items for it to be scrollable).

I tried dispatching a DragEvent.DRAG_COMPLETE event from the UIComponent that the items were being dragged from, but still got the same problem. This may be that I don't know how to dispatch an event properly, or include the proper parameters needed for Flex to recognise the DRAG_COMPLETE event is related to the DRAG_DROP event that just occured.

Anyway, I fixed it by not event.preventDefault()ing, but instead blanking the DragSource so there wasn't any data for the event's default action to copy: event.dragSource = new DragSource();

Another problem was that if I added text to an input programatically, then it wouldn't save into the image's XMP, but if I typed the text manually, it would save. I tried dispatching an XMPEvent.XMP_MODIFICATION event from the UIComponent, but again this didn't work, again quite possibly I am not dispatching the event correctly or with the the correct parameters needed.

Anyway, I found that if I turned my XMPTextInput into a UIComponent that has a dataProvider e.g. XMPTextInputMRU, and a dataProvider was specified (even if it was empty), then it would save that field into the image's XMP. So I changed my XMPTextInput into a XMPTextInputMRU, then when I wanted to change it dynamically, I set its dataProvider to an empty string.

In the evening I watched an episode each of Lost, The Legend Of Zelda, and The New Super Mario World with Eck Moc and Lil' L. We also watched part of POTC2.

The weather today was a mixture of cloud and sun. It rained quite a few times and even hailed once, and was very windy again.

Food
Breakfast: Blackcurrant jam toast sandwich; cup o' tea.
Lunch: 2x cheese on toasts; stick of celery; cherry plum tomatoes; clementine; slice of cherry Madeira cake; Fox's Classic; cup o' tea.
Dinner: Fish pie; peas. Pudding was some mini jaffa cakes. Coffee; some chocolate bunny.
Supper: Cup o' tea; Choc chip Harvest Cheweee (yep, three 'e's) bar.

Thursday, 7 May 2009

Flexing

Just did more flexing today, trying to get the IPTC4XMPExt LocationShown fields to write correctly. In the evening I watched one episode each of The New Super Mario World, The Legend Of Zelda, and Star Trek TOS. In Satr Trk Kirk got split into an evil and good version of himself, but the evil version just seemed like an even more exaggerated version of his normal self. Shatner's acting was sooo skill though.

The weather was overcast and very windy all day.

Food
Breakfast: Strawberry jam toast sandwich; cup o' tea.
Lunch: Mature cheddar cheese with sweet & crunchy salad sandwich; clementine; slice of cherry Madeira cake; Fox's triple; cup o' tea.
Dinner: Fried or grilled Breaded Parmesan cheese; sausage; tomato sauce stuff that came with the breaded cheese; baked beans; potatoes. Pudding was tinned peach slices. Bit of chocolate bunny; coffee.
Supper: Shortcake biscuit; choc chip cookie; cup o' tea.

Wednesday, 6 May 2009

Flexing

Today I did some more work on my custom XMP FileInfo panel. In the evening I watched an episode of The New Super Mario World, 2 episodes of The Legend Of Zelda, and A Chinese Ghost Story 2 with Mac and Lad.

The weather today was overcast most of the day with a bit of sun for maybe an hour in the afternoon.

Food
Breakfast: Blackcurrant jam toast sandwich; cup o' tea.
Lunch: Mature cheddar cheese with sweet & crunchy salad sandwich; cherry plum tomatoes; clementin; slice of Cherry Madeira cake; Caramel Rocky; cup o' tea.
Dinner: Bolognese sauce; pasta twirls; grated mature cheddar cheese; ground black pepper; some bread that Ben made at school today. Pudding was a Chocolate Muffin that me and Lad made from a packet mix. Coffee.
Supper: Choc chip cookie; cup o' tea.

Tuesday, 5 May 2009

Flexing

This morning I did some more work on my custom XMP File Info panel. JeTSpice over at the actionscript forums had replied to my question about how to get the UIComponent that a dataProvider belongs to, and suggested that instead of triggering my function on a CollectionEvent, I trigger it on a DragEvent.

So I did this, first I tried triggering my function by adding an EventListener to the UIComponent where the data was being dragged to, by listening for a DragEvent.DRAG_DROP event. The problem with this is that the DragEvent.DRAG_DROP event fired before the data was added to the UIComponent where it was being dropped.

So I tried listening for a DragEvent.DRAG_COMPLETE event instead. This didn't fire when the event listener was attached to the UIComponent where the data was being dropped, but did fire when attached to the UIComponent where the data was being dragged from and also it fired after the UIComponent's dataProvider had been updated, which is what I wanted.

However, this gave me the wrong UIComponent when accessing event.target, as it gave the component the data was coming from, rather than the component the data was being dropped into (which was what I wanted). In my case though, this didn't actually matter as all I was using the UIComponent for was to check if its name contained a certain string, and the names of both my source component and destination component contain the same string.

After that I tried to change my code so that when you add an item to the filters list, it just adds that item to the XMPTextAreaMRU for filters. At the moment my code just replaces whatever is in the XMPTextAreaMRU with everything from the filters list. My thought behind changing this was so that when you have multiple files selected, you can add a new item to their XMPTextAreaMRU without deleting the multiple items data that is already there.

However, when I tried editing the XMPTextAreaMRU manually with multiple files selected, I found it automatically removes the "(multiple items)" entry, so it seems that if you add anything to a field when multiple files are selected, Bridge will automatically delete any entries that were in that field anyway.

So I reverted my changes with regards to that. Then I found that when I had multiple items with the same name in a list, I could only click on one of them. The problem was that I was adding items to the list by doing UIComponent.dataProvider.addItem(str);. What I should have been doing was UIComponent.dataProvider.addItem({label : str});.

I also found that when copying items from one list to another, I couldn't just do UIComponent.dataProvider.addItem(itemFromOtherList);, as then I would still end up with 2 of the same item, so instead I needed to do: UIComponent.dataProvider.addItem({label : itemFromOtherList.label});

After lunch I went on Animal Crossing, and also my Manfrotto 410 Junior Geared Head arrived from amazon.co.uk. It's a lot bigger than I thought it would be, if this is a Junior, I wonder how big a Senior Geared head would be?

I took some more photos of the double dandelion using the geared head, then threw the dandelion away and picked off the heads of seeding dandelions in the garden. After that I did some vacuuming, then it was dinner time.

After dinner I watched The Super Mario Bros. Super Show and The Legend Of Zelda with Mac and Lad.

With my custom XMP File Info Panel, I found that I could drag items from one list source into a different list, e.g. I could drag an item from 'FiltersList' to 'AddOnLensesUsed'. So to prevent this, I changed my DragEvent Listener to be attached to the destination list again and also listen for a DRAG_DROP event. Then in the function called by the listener I prevented the default action and added the items to the destination list manually:
private function dragDropAddItem(event:DragEvent):void
{
try{
event.preventDefault();
var itemName:String = getItemName(event);

if(event.dragInitiator.name.indexOf(itemName) != -1)
{
var stuff:Object = event.dragSource.dataForFormat('items');
var i:String;
for(i in stuff)
{
event.target.dataProvider.addItem({label : stuff[i].label});
}
}
//Update the relevant XMPTextAreaMRU so the changes will be saved
saveItems(itemName);
//FiltersList.dispatchEvent( new DragEvent("dragComplete", false, true, event.dragInitiator, event.dragSource, DragManager.COPY, false, false, false) );
}
catch(e)
{
Alert.show(e.message);
}
}


However, while this worked, the display of the list in Bridge would get messed up. The line that indicates where in the list the items will be added stays there, the list stays focused (blue outerglow) and moving the mouse up or down scrolls the list:


I tried for quite a while to get a video of this action, but the Free CamTasia software I downloaded ages ago and only installed just now doesn't seem to work. It seems like it can do everything except export the video to a normal video file. When you click on the 'publish video' options, nothing happens. I also tried a batch export, but that just crashed it. Maybe not compatible with Vista properly or sumat.

Anyway, back to my messed up list problem I think I will have to either defocus the list or otherwise change the function so it just doesn't prevent default if the source and destination list are both part of the same group.

Oh... I just looked at the Adobe doc Example: Copying data from one List control to another List control, and in the example it has // Since you are explicitly handling the dragDrop event,
// call hideDropFeedback(event) to have the drop target
// hide the drop indicator.
// The drop indicator is created
// automatically for the list controls by the built-in
// event handler for the dragOver event.
event.currentTarget.hideDropFeedback(event);

which fixes the problem. Actually I'll have to change my function to mirror Adobe's example, as my function doesn't take into account where in the list the items were dragged.

The weather today was overcast most of the day, then brightened up later in the afternoon. It was very windy all day.

Food
Breakfast: Maple & Pecan crunch cereal; cup o' tea.
Lunch: 2x cheese on toast; sweet & crunchy salad; cherry tomatoes; clementine; caramel Rocky; cup o' tea.
Dinner: Chicken pie; gravy; potatoes; peas; sweetcorn. Pudding was Rhubarb crumble with cream. Coffee; some chocolate bunny.

Monday, 4 May 2009

Watching TV

I did a bit of work on my custom XMP File Info panel today, and also watched 2 episodes of The Legend Of Zelda and 2 episodes of The Super Mario Bros. Super Show with Ben and Mac. Also I watched Transporter 2 and Hud with Moc, and checked the Juza Nature Forums and The Web Squeeze a bit.

The weather was windy and overcast all day with quite a bit of light rain - typical bank holiday weather.

Food
Breakfast: Maple & Pecan crunch oat cereal; cup o' tea.
Lunch: Mature cheddar cheese with sweet & crunchy salad sandwich; 2x mini scotch egg style things; slice of Genoa cake; Fox's Classic; part of a chocolate easter bunny; cup o' tea.
Dinner: Beef burger with sliced cherry tomato, sweet & crunchy salad, grated cheese and tomato ketchup in a bun; Fake cup a soup; Spring Roll. Pudding was a Muller fruit corner, I had Strawberry flavour. Coffee.

Sunday, 3 May 2009

Internetting

This morning I checked The Luminous Landscape, and read a few new posts/articles on there. They're having a half price offer on their DVDs, but they're still about $10 each. Even their 'Big Kahuna' boxset of all their Video Journals (17 issues) costs about $180. With tax and shipping to the UK, that would work out about £180 - expensive!

After that I started checking the canon lens forum on dpreview, then remembered about Sow Joan, and went on Animal Crossing until it was time to go to church.

After church I checked the canon lens forum on dpreview a bit more, then it was dinner time. After dinner I finished reading the canon lens forum on dpreview, and checked Moose News Blog and The Web Squeeze.

On the web squeeze someone had posted a question about foreign characters inserted into a page with javascript not appearing. After much testing I found the problem only occured when the javascript and the foreign character (it was a fixed string, not dynamic) being inserted were in an external .js file. The problem was that the webpage was being served up in UTF-8 encoding, while the .js file was saved in ANSI format. So I just opened the .js file in notepad, did a save as, and changed the encoding to UTF-8.

Also on the web squeeze, someone had answered my question about how to reference an object. I thought if I a variable that referenced an object, then any changes to that variable would actually happen on the object. This is correct up to a point, if you set the variable to equal something else, then the variable changes to point (or be) whatever you've just set it to, but the object it was previously referencing will stay as it was. James' explanation (who answered my question) is probably better than mine: Javascript variable references.

Then I did a bit of work on my website, still working on the jQuery/javascript for my category management section. I found that a button wasn't firing a function when clicked on. I couldn't work out why, but after messing about for a bit I found out. The problem was that the button was being created in a callback function from a $.getJSON() function. The getJSON callback function is asynchronous, so the rest of the script continues while the getJSON function is requesting and fetching the data from the server. This meant that I was setting my button's click event before the getJSON callback function had run and created the button, hence it couldn't assign the click event as the button didn't exist.

Luckily jQuery does let you do Synchronous HTTP requests, but unfortunately not from the getJSON function. So you could either do your JSON request using $.ajax instead of $.getJSON, or otherwise at the top of your script have $.ajaxSetup({"async" : false});, which is what I have done for the moment.

Later in the afternoon/early evening I took some photos of a siamese dandelion that I picked about a week ago. Unfortunately after picking it I put it in a vase in the kitchen, and I didn't realise that the kitchen didn't get any sunlight, so it stayed closed up all week. It was most obvious that it was a siamese/cojoined dandelion when it was open. But now it's started seeding, so I thought I better take some photos of it before it just turns into nothing.

I also went in the garden for a bit and there was a dead catterpillar in the pond. It seemed that Rigor Mortis had set in as it was completely stiff. Eventually I managed to flick it out the pond and put it on a leaf so a bird can eat it. I guess it was the caterpillar that's been eating the Yellow lilly plant growing at the pond's edge.

In the evening I did some more website stuff.

Food
Breakfast: Strawberry jam toast sandwich; cup o' tea.
Dinner: 1½ Spring rolls; chopped up omlette; rice; soy sauce. Pudding was Very creamy and delee strawberry gateaux. Coffee; Chocolate ball.
Afternoon snack: Scone with Flora fake butter and blackcurrant jam; cup o' tea.
Tea: Packet of roast chicken flavour crisps; apple; cup o' tea.

Saturday, 2 May 2009

Putting a video of Moc on Barney McGroo Tube

This morning I did a backup, then Little Lad videoed Moc in bed, and we Vladamir Putin'ed it on Barney McGroo Tube:


Then after that I checked the mysql forums to see if someone had answered a question I asked there - and they had, so I read up on their answer. Then I checked sitepoint forums to see if I had had an answer to my question there, and I hadn't, so I reposted that on the actionscript.org forums.

I watched an episode of The Super Mario Bros Super Show with Moc and Lad, and it had Fred Travelena as Elvis in the live action segment. Look how good Fred Travelena's chin is:

Mociac set the picture of Fred Travelena as The Joker as his desktop.

After that we watched Zelda, then it was lunch time.

After lunch I went on Animal Crossing and Mociac went to Mansfield. I checked The Web Squeeze and Deviant Art, then did some website work.

After dinner I did some more website stuff. Terry Hawk, the DJ on HFM at the moment just said "We've got 3 hours of this, and it will not end!" Hmm...

The weather today was mostly sunny but quite cloudy as well.

Food
Breakfast: Strawberry jam toast sandwich; cup o' tea.
Lunch: Mature cheddar cheese with sweet & crunchy salad sandwich made with fresh bread-maker-made bread; slice of fresh bread-maker-made bread with honey; 2x small clementines; slice of carrot cake; Fox's Classic; cup o' tea.
Dinner: Lincolnshire sausages; potato; baked beans. Pudding was treacle/golden syrup tart. Coffee.

Friday, 1 May 2009

Being rubbish at javascript and jQuery

Today I was still doing some work on my website, mainly getting stuck with jQuery.

In the evening I watched another Super Mario Bros Super Show episode with Moc and lad, and it had a vampire in the live action section. Totally random and skill. We also watched an episode of Zelda, which at the end had a close up of the Fairy's face. Totally random and skill.

The weather was a mixture of cloud looking like it was going to rain and sun. Again, it was quite windy.

Food
Breakfast: Strawberry jam toast sandwich; cup o' tea.
Lunch: Smoked Barvarian ham with sweet & crunchy salad sandwich; 2x small clementines; slice of carrot cake; Fox's cookie bar; cup o' tea; rest of an easter egg.
Dinner: ½ Salmon & spinach pastry; fish cake; potato; chips; mixed veg; tomato ketchup. Pudding was a slice of treacle tart heated up in the oven. Coffee.