I do quite a lot of futzing around developing web apps, and as a result I'm often needing to choose colours to use in them, and I want those colours in HTML hex form – e.g. #ff0000 (bright red). The standard Mac OS X colour picker is a pretty reasonable colour picker, with all the features I want: colour wheel, RGB sliders, HSB sliders etc. but it lacks the most crucial feature – easy output of HTML hex codes! This is clearly a criminal omission, and it meant I'd frequently have to convert from RGB 0-255 numbers down to hex, which is tedious in the extreme.

Hence I was muchly pleased when I found Hex Colour Picker, which adds exactly this missing feature to the standard Mac colour picker panel. Perfect. Now I just open TextEdit, hit cmd-shift-c to bring up the colour panel and I have everything I need for web colour picking.

I've been banging away at my Google App Engine application. It'll be a little while yet, but in the meantime, a particular observation about Python. I keep getting tripped up when I refer to a member function without the parenthesis. For instance:

>>> list = [1,2,3,4,5]
>>> print list.count
<built-in method count of list object at 0x238fa8>

This doesn't print '5' because list.count is a reference to the count method itself, which (like everything else in Python) is an object, so gets printed. You need to use list.count() with those important parentheses in order to actually get the answer 5 that you wanted. I keep getting tripped up by this and taking a while to debug the problem every time. Some things like __class__ don't need parentheses, which I think is part of the confusion. Furthermore, when you use dir() to look up the public features of a class, it doesn't do anything to show you which ones are functions:

>>> dir([])
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__str__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

I rather suspect I've missed a subtle but important bit of Python understanding, having only scratched the surface so far. If someone can point that out to me I'd be very grateful. 

I like witbiers and have always found Hoegaarden to be a classic example. It's a shame that it's another example of a decent beer getting bought out by the faceless mega-corporation – InBev in this case. Read about the history of Hoegaarden Brewery at Wikipedia.

Still, even with corporate types meddling it's a fine beer, with the citrus and spice flavours that you'd hope for. It's a shame it doesn't go a bit further with it though, to stand out from the crowd.


This is a tight crop of the front of the 'cable car' that runs up the hill in Wellington, New Zealand. It was absolutely bucketing it down, and windy too, so we never got to walk back down through the botanical gardens as we planned.

If you ever go to Wellington and look for the cable car, be aware that it's not a cable car in the sense that you might think. I think 'cable car', I think gondola's hanging from an overhead cable strung over pylons. Reality: funicular railway in tunnel. We spent ages walking the streets trying to find it, looking up in the air on the assumption that we could hardly miss it. The street map in the Rough Guide was wrong too, which didn't help.


My MacBook laptop has had to go in for repair as a sliver is splintering off the plastic palm-rest where the lid touches it at the edge. There are also myriad hairline cracks appearing in the bottom shell around the front and back. The repair guy I took it to assured me this wasn't my fault and that it would be covered under warranty, which is good since I've got less than a month left on the year long warranty. Phew!

It seems this has become a common problem and that Apple is sorting it out under warranty so I'd advise anyone else with similar issues to get it sorted.

It does mean I'm without laptop for much of this week though, which is a pain.

Update: It was indeed fixed under warranty but it took a bit of wrangling with Apple on the phone as they weren't keen. It all hinged on whether I had been treating it well or not.

Update 2 (April 2009): It looks like Apple is capitulating and more generally recognising and fixing the issue, even outside of warranty, if reports are to be believed – e.g. AppleInsider's report.

Look at this little fella – isn't he cute! Taken this morning amid preparations for wassailing in the orchard.

I tried my luck standing in plain sight only 3 metres from the feeder, with honking great 400mm lens, and after about ten minutes stood motionless, the braver birds starter coming back. It's particularly nice to see long-tailed tits because they're so small and neat.


I also saw this less welcome visitor, on the ground underneath:


Another 'what I had for dinner' post. Sorry.

Because there's a recession on, I went for cheap and cheerful: corned beef hash, as described in How to Boil an Egg – the most straightforward no-nonsense cookery book ever and a staple of any kitchen, surely! It really is simple: par-boil diced potato, then throw in a pan with chopped onion and diced corned beef. Fry for fifteen or so minutes with a beaten egg, ketchup, tabasco, worcestershire sauce, seasoning etc. until ready to eat. In my case, serve with baked beans, but I find that if you're just eating it on its own (like I did with the leftovers next day for lunch) it needs a good splurge of ketchup when served, to lubricate and tastify.

I found that the corned beef disintegrates from the carefully chopped cubes almost instantaneously. Even my most careful and delicate pushing it around the frying pan resulted in complete disintegration within mere seconds. I'm sure I remember corned beef hash from my childhood having nicely seared cubes of meat, so I don't know what I did wrong. I can only imagine that I'm remembering wrongly, or I need to buy better ingredients. So I blame Sainsburys in this case.


Another miscellaneous photo from a walk in Sherwood forest in the autumn, to remind us of days when the sky wasn't just dull and grey.