Saturday, we went biking. For the first time, we went Mountain Biking, at somewhere other than a prepared trail centre.
This was something of a revelation, as it's the first time we've done any trails that weren't specifically built for biking. Turns out that that there's a lot of ups. And then some more ups. And then a bit more. The route we chose was from the rather excellent North York Moors Mountain Biking by Tony Harker. (Buy it here http://www.amazon.co.uk/North-York-Moors-Mountain-Biking/dp/1906148082 No, really, do it's excellent). The book has an accompanying CD (buy that too), that has handy printable PDFs of all the routes, including the directions and the maps. The one thing that's missing is a GPS track of the route. So, we chose route '9'. Sneck Yate Bank. It lead to views like this:Using Fabric From Celery in Django
Recently, I’ve been experimenting somewhat with Celery, Django and Fabric.
These fit really nicely together if you want stick a web interface on system management tasks, such as deploying some code.
There’s a couple of gotchas with the way Celery uses fork to run a task though, as it removes the environment that the Celery task is running in.
- RNG must be re-initialized after fork(). Hint: Try Random.atfork()
If you do this:
@task def update(): run('ls')
It’ll fail with the above error. The fix is to do what the error says:
from Crypto import Random @task def update(): Random.atfork() run('ls')
This will initialise the Random Number Generator sufficiently for the paramiko ssh library that fabric is based on to connect.
- raw_input(“No hosts found. Please specify (single) host string for connection: ”)
You’re using fabric as an api, rather than using the fabric runner. This means the usual technique of doing:
from fabric.api import * env.hosts = ['192.168.0.1']
Won’t work, as there is no processing done on the env. The fix looks like this:
from fabric.api import * @task def update(): Random.atfork() env.host_string = 'ubuntu@192.168.0.1' run('ls')
If you need to connect to multiple hosts, you’ll have to do your own flow control.
- disable_known_hosts
This is more of a tip, and not a brilliant one at that. If you’re doing a lot of work with pregenerated VMs (such as the cloud providers), then destroying a VM on an IP, then rebuilding it, will cause the host key to change. Fabric uses your local .ssh/known_hosts for it’s connections, so this will probably cause the connection to fail as the keys will not match your previous one.
from fabric.api import * @task def update(): Random.atfork() env.host_string = 'ubuntu@192.168.0.1' env.disable_known_hosts = True run('ls')
disable_known_hosts will disable this behaviour, at the cost of some security, as you are no longer verifying that you are connecting to exactly the same machine. The current alternative seems to be that every time you rebuild a VM, you must remove it’s line from your known_hosts.
Each and every Celery task you use with Fabric, must set these variables, or it’ll fail. I’d recommend either inheriting your tasks, or creating a helper method to pop them all in, and call that at the start of your task.
Hope this helps someone.
Some More Smoke Art
Had some free time today, and a sunny day to get some more light.
Decided to revisit some smoke photographs.
Gadget Show Live and Cannock Red Trail
This weekend was the Gadget Show Live.
Lots of stalls and a live show. The stalls were fairly good, with some good discounts on stuff, and lots of stuff to play with. I got some more crazy shoes. The show was reasonably disappointing. Worth going too, but very little in the way of tech was discussed, and it seem to mostly be aimed at 10 year olds winning prizes. Although the flying penguins were rather cool.
Sunday was biking at Cannock Chase. 10.5 k, in 1:11. Not too shabby, and good fun. Much more technical trail than Sherwood Pines.
Biking in the Red.
Today, we went to Sherwood Pines again.
We attacked the Red route for the first time, which turned out to be a surprisingly enjoyable 15.5 km slog through some very, very muddy terrain.
Also, for the first time I got a decent GPS track of the event.
Kittens Meet the Outside. Take 2.
In the ongoing quest to make sure the kittens can at least attempt to find their way home once they’re properly released into the outside world, they have been out under close supervision again.
Mostly, there was a lot of panicking that they’d hid under cars, and were going to jump the fence.
The Kittens Go Outside
Today was the first day the kittens made a bid for freedom into the garden.
I had a camera, pictures were taken.
Enchanted Garden
Halloween week/weekend, a local English Heritage maintained hall had an ‘Enchanted Garden’ at night.
Basically, lots of lights, a walk around the gardens and some pretty atmosphere.
I was rather impressed with the lights, they did some good work and it looked rather nice.
See attached.
A Night Photo Walk
My mother is doing a photography course, this week’s theme is night
photography.
After a wander around in the freezing cold, and some Lightroom Editing,
I produced these…
WWPF 2009
And now, for something that very definitely is an annual tradition.
Charlie and myself headed up the big road that is the A1, the A66, lots
of weirdly numbered motorways, ending with the A82 into the magical
place of Fort William.
weekend. Wet West Paddle Fest (2009 edition).
This means 2 days of dam released rivers, and my favourite river of all
time (so far). No water on Friday unfortunately meant the Etive wasn’t running, unless
you didn’t like your boat, and your back. Saturday, a blast down the Garry, and the discovery that the best parts
of the river are actually after the usual get out. And then onto the Morriston. I decided I didn’t fancy the Lower (always
leave something for next time), but proceeded to run the Upper twice
with Pete and Joanne. Messy run the first time, styled it the second
time… until the last wave forced a swim out of a minor undercut. Rather excellent photos taken by Charlie attached.




















































































