I'm back! And this time I'm wearing an "I've been to Cornwall" t-shirt – metaphorically speaking of course.

We just stayed for 5 days in Port Isaac on the North coast of Cornwall, between Padstow (amusingly named Padstein by some) and Tintagel. Our home for those few days of blissful weather was The Birdcage – a National Trust holiday cottage right in the heart of Port Isaac, literally stumbling distance from the pub. You might recognise Port Isaac from the ITV comedy/drama Doc Marting, starring Martin Clunes, though I understand it's been used for lots of other things too, because it's such a charming little spot.

PortIssacWide 6265
You can just about see The Birdcage about half-way up above the red van in the image above, but there's a closer shot below. It's a pentagonal building with just a single room on each floor, bar the bathroom tacked onto the ground floor as an extension. Straight in off the street (though you'd struggle to drive up a three foot wide 30 degree path) you're into the kitchen – compact but bijou. Then up a very steep, very narrow staircase to the lounge and then an even narrower staircase (about 15 inches across) to the bedroom. It was absolutely delightful, but the only way you can truly understand is to stay there yourself. I can recommend it.
PortIssacBirdcage 6263

I'm currently at QCon in London, with a couple of hundred other software developers. I've already seen Sir Tony Hoare's keynote and learnt some more about making Agile work in the real world. I was lectured by Sir Tony at University as it happens – and he's much as I remember him, complete with the slightly unexpected doses of wry amusement.

I've been following the progress of MacRuby for a few months now and was looking forward to the next release. Finally, and a month or three after it was expected, MacRuby 0.4 is here, according to the MacRuby blog.

MacRuby is, to keep it simple, an implementation of Ruby 1.9 built in Objective-C with transparent calling between the ruby and Obj-C worlds. For instance Ruby Strings are actually NSStrings in MacRuby and have all the powers of both. This along with some other neat integrations provided by the team allow you to write Mac OS X Cocoa apps using Ruby instead of Obj-C, or even a combination of both. If like me you think that Obj-C is a dinosaur that doesn't deserve a place in the modern programming world, this is great news. There seems to be a lot of momentum behind this project and I wonder if it may eventually become quite a fully fledged citizen for Mac app programmers – maybe even ultimately taking over from Obj-C for most Mac OS X development. I can but hope.

One of the many neat improvements in 0.4 is the ability to bundle the MacRuby runtime into the app itself so the user need be none the wiser, and certainly doesn't need to install MacRuby.

I tried doing rice a bit differently to normal this evening, following Delia's approach. Ordinarily I'd rinse the rice a lot under the tap, then put in a saucepan with more than enough boiling water and cook until done, then strain and serve. But it often clumps together on the plate and I thought it must be possible to do better.

Delia's approach involves a large covered saucepan, no rinsing, just enough water, almost no stirring and a couple of important other tips. I'd say that it 'worked' but that it was still just rice at the end of the day and I'm not sure it was worth it. Not having my usual rice alongside to compare with made it hard to know whether it was much of an improvement. I'd post a picture of my result, but it would be really very dull.

My lovely wife got me a set of four port sippers for my birthday recently. One of my brothers got me a bottle of a good vintage port, and I still have a vintage bottle from a friend's wedding where I was best man. All I need now is a decanter and I'm go go go for a port party!

I've been wanting some of these sippers for years, since using some at a friend's house, but never actually finding them anywhere (internet or real world). It seems they're now freshly available and easy to find. They are delicate little handmade glass items, the idea being that you drink through the built-in straw, hence taking the liquid from the bottom rather than the top. Which is apparently a good thing, helping to "avoid oxidisation and improve taste". Apart from that they're just neat little things that are out of the ordinary.

I decided to have a go at photographing the moon, having noticed it being bright and clear in the sky on my walk home. This is the best I could do leaning out of my window with 400mm lens. I'm pretty sure that the blur that remains is due to the atmosphere in-between as I shooting at f6.3, 1/400s with VR. That or just soft focus! Certainly the lens will focus past infinity and turn the moon into a complete blur so you do need to focus carefully.

It's a 100% crop (at least it is if you click for the fullsize version) so that's as much as my 12.3MP D300 can do in terms of resolution. It's still tiny in the frame even with 400mm lens on a DX sensor!

Moon

I was running into an annoyance whereby I'd end up with duplicated validation messages from ActiveRecord. I tracked this down to the source reload feature of Ramaze, which was reloading my AR model classes each time I edited them with the dev server running, which has the unfortunate side effect of adding the validators again on top of the same ones that were there before. So each reload adds another set of validators and another duplicate validation message. This sort of thing (mainly class methods that add to a list) often requires special care when working with a source reloading system. In this case I've worked around it by resetting AR's internal validator list to empty before creating my validators, by directly accessing the @validate_callbacks instance variable. For example:

class Event < ActiveRecord::Base
    # Clear all AR validations, to avoid getting duplicates on source reload.
    @validate_callbacks = []
    validates_presence_of :name
    validates_presence_of :description
end

This is actually a ceiling in Istanbul.

Blockbusters