Thanks to the twin evils of mobile phone data pricing and overwhelming volumes of spam and virii, I've been forced offline last week and this week. In just three days of retrieving email over GPRS, I gobbled up 21mb of bandwidth. At today's pricing, that's one big ouch. My mail reading is now via ssh and grepping for the important stuff in the mailspool. Sadly I didn't have time to get server-side mail filtering set up before I left.
After a completely insane couple of weeks which saw me zooming round the country in a 307, a train and a 7.5 ton truck, I'm swapping it all for something with wings. I'm hopping on a plane tomorrow morning to spend some time in Cyprus, where I'll be struggling to keep up with my nephews, swimming, relaxing, and catching up on some reading and computing challenges in a more intense offline mode away from the office.
Most of the action will be going on over on the moblog. See y'all later.
Last week I was training, and it's only now that I've caught up with myself sufficiently to make some comments on the experience.
One of the things I love about training is that the attendees always find new and interesting ways to break the hands-on tutorials I set them. Last week's experience actually showed up some interesting weaknesses in the Apache Cocoon framework as a side-effect. For example, if the namespace is incorrect in a source file, don't expect to get a meaningful error from Cocoon. Similarly, the lack of DTDs or XSchema / Relax-NG Schemas makes it incredibly difficult to validate your content. Fixing these issues would make Cocoon far more usable for a fair number of people.
Another aspect of training that is enjoyable is watching people hit the "Eureka! moment" ... where they realise the power or flexibility or sheer cunningness of a particular feature, and have their horizons widened as a result. There always seems to be different moment for each group of people. For some, it's the simplicity of flowscript (which happened this week with another potential customer, when they realised Cocoon's flow control was no more difficult than their expensive workflow engine's language). For others, it's that generators can be pipelines and don't need to be real resources. Some are bowled over by the power of the forms framework. My personal eureka moment (complete with hysterical laughter) was understanding the power of cforms bindings.
It's humbling to come away from delivering three days of intensive Cocoon material only to realise I barely scratched the surface of what it can do. I spend so much time up close and personal with very specific features that I rarely get a chance to step back and look at it as a whole. When I do, like last week, it's breathtaking.
Another interesting thing to come out of the last couple of weeks (both training and with potential customers) is to find out that companies out there really are paying attention to licensing issues, and are clued-up and concerned about GPL vs. ASL vs. roll-your-own. The ASL's business-friendly terms are a real winner with most people, whilst the GPL is often considered a blight of nightmare-inducing proportions. I think we'll all be happier if Harmony can help us work together better.
Made it to Worcester in pretty good time. Kudos and thanks and hugs to the fine folk at Thrifty Car Rental who gave me a free upgrade from a Punto to a Peugeot 307. Incredibly nice car, cruises nicely on the motorways. I won't tell you what my journey time was for the 200 mile journey, but let's just say my average speed may have exceeded the national speed limit ...
This is my first time in a Travelodge (though I've stayed in a fair few different hotels and lodges by now). A few initial thoughts: not enough power plugs. Only one in fact. What to plug in ... laptop? Phone? Kettle? No-one should have to make that choice.
Presentation is very much in the style of the Ibis chain: wardrobes without drawers, utilitarian. This place is a little cleaner and newer than the Ibis hotels I've stayed in though.
Next: the bar/cafe. Nice to know they have one, but the menu card in the hotel room does not list the hours it's open or whether room service is available. Missing out on some money from Mr Savory there, folks.
And of course, the obligatory final moan: where's the wifi? Or even the wired? Just to tempt me there's a CAT-5 cable running from the wall to the TV's set-top box. But the only "consumer" port is a modem socket on the back of the phone. Gah! And it's 30p/minute too. I don't think I'll be using it, I'd rather give my life savings to Vodafone. Mind you, I might just unplug the TV in a minute (laptop battery needs feeding), so I'll try the ethernet port out of curiosity ...
Update: hahahah! The TV works with the set-top box unplugged. And the ethernet socket is totally alive and totally handing out connections to anyone! I'm one very happy bunny. Time to fire up Skype and bypass those 30p/minute phone charges :-)
In just a few minutes' time I'll be heading to Worcester to deliver three days of advanced Cocoon training. The course will include lots of fun stuff like cforms, database persistence, and authentication.
I particularly enjoy delivering Cocoon training since my approach is fairly hands-on. This tends to keep it lively and interesting for everyone (I hope), and it's always fun to see how people run with an idea when they've got the code in front of them to work with.
I've done variations of Cocoon training since 2001 (when I taught the basics of XML and XSLT using a Cocoon back-end. It was running on my lowly Pentium 3 laptop and supported 30+ simultaneous users all uploading, viewing, and breaking their content). Things have moved on since then - apparently most of the delegates tomorrow will have a Mac of some sort. Maybe collaborative learning via SubEthaEdit will be the order of the day? :-)
Gregor writes about Debra Damo, a spectacular monastery in Ethiopia.
Ethiopia has many amazing sights. I was fortunate enough to see a few of them when I was there in 1999. One of the most memorable was Mount Ziqualla.
Most of the area around the nation's capital of Addis Ababa is a plateau, and to reach Mount Ziqualla you have to travel for a long time along dusty roads. Dotted around the landscape are occasional mountains, rising up from the arid farmland. As you travel you pass small villages and the occasional farmstead, with villagers threshing corn with their cattle. Before long you are completely covered in dust from the road.
As you drive closer to the mount, it begins to dominate the skyline. The outer slopes of the mount are all steep and dissected by steep gullies. There is only one road to the top of the mount, and you need a good 4-wheel drive jeep to make it up the road. Each year in the rainy season the road is almost completely washed away; each year the monks at the monastery at the top repair the road, since it brings valuable tourists.
Unfortunately when I visited they had not yet repaired the road, which made the trip to the top interesting to say the least. Ever wondered what the tipping point of a 4-wheel drive is? They can go a lot closer to vertical than you'd think is possible. Our driver was exceptional, and even when the rest of us were hanging on for dear life he remained cool and calm, and didn't even break into a sweat.
When you reach the top of the mount (which is an inactive volcano), you are rewarded with a breathtaking view. The entire plateau stretches out beneath you, and as you look out you notice you're almost level with the clouds. The mount is approximately 1000m above the surrounding plain. It's notable that the vegetation on the edges of the mount is greener than on the plateau, and there's even several farm gardens.
On the northern rim of the volcano is an Orthodox monastery, guarded by monks with rifles. When we arrived they didn't seem to happy to see us, and for the first time since our steep ascent began our driver broke into a sweat. We stood back quietly (and not a little fearfully) whilst he negotiated with a monk, and after some notes changed hands we were eventually allowed to walk around, and were even given a tour. Or maybe it was an armed guard, I was never too sure.
Walking up the steps you arrive in a walled garden, with a church in the middle. The church was small, but incredibly clean and well-maintained. The most surprising aspect was how bright the paints on the walls were, despite the harsh glare of the sun. Unfortunately we were not able to see inside.
The volcano's crater harbours a lake about 100m below the crater rim. After the dry and barren plateau, seeing a lake surrounded by grassland is surprising to say the least. It's no wonder that the monks considered the lake to be holy. You reach the lake by walking down a steep path on the inside of the crater.
It's only when you're at the bottom of the crater that you can really appreciate that this was once a volcano, as you can look up at the crater rim on all sides without being obscured by trees. Near the forrest edge on the south side of the lake there's a traditional Oromo sacred site.
Since we're about to deploy a prototype site built using Ruby on Rails, it's time to get a Rails setup running on our Debian server. This is following on from my experiences of Ruby on Rails on Mac. There are already instructions for Rails on Debian; it's actually rather easier if you're running Debian Testing.
apt-get -t testing install rails
That's all that is needed to be able to do "rails myapp". Next up: running it as a permanent web service. More reading required ...
Mail.app has been reaching new levels of cantankerous behaviour recently. Although the 10.3.9 update seems to have cured the majority of "crash on scroll" problems I was having, it has taken to pounding my mail server into the ground at every opportunity.
Each time I wake up the powerbook or start Mail, it will cheerfully open well upwards of 100 IMAP connections. This is incredibly bad behaviour. My laptop grinds to a halt, the server cries out in pain, and then either Mail will hang or the IMAPD on the server quits in protest.
It turns out the culprit was the "Automatically synchronize changed mailboxes" option in the advanced preferences for my main account. I had this selected, because I have a large number of folders and I don't like the sluggish response time when Mail has to synchronise when you switch between them. But I dislike Mail killing my server more, so for now I'll live with it.
I'm going to study Thunderbird's preferences now, to see if I can convert my Mail.app filtering rules to an appropriate Thunderbird format.
Ah, the joys of the British bank holiday. Despite forecasts to the contrary, it didn't actually rain, and was in fact gloriously sunny most of the time. I spent the time split between socialising and nursing a sick Tomcat / Cocoon install.
The site in question was reeling under what amounted to a denial of service as sixteen different search crawlers indexed it at once. There was no time to get a caching proxy in place in front of it, but some tweaks to the Tomcat and Cocoon configs were enough to keep the site up and responsive. It handled around a quarter of a million hits each day of the weekend.
On Saturday night, after a day of gardening, I met up with a bunch of people in Norwich. We eventually headed to Optic which is usually a great place to spend a relaxing evening. This week was different: one of my female friends was victim of some unwelcome advances from a complete stranger, who didn't seem to like her telling him off and staring him down. In the end she left the dance floor, and when he tried to follow I had to step into his path and ask him to leave her alone. He didn't take too kindly to this, and decided I was his enemy instead.
He squared up to me, looking for a fight, and seemed quite disappointed when I calmly and politely told him to leave my friend alone, whilst firmly restraining him. His terrified-looking friend then hauled him away as the rest of my friends and I made a sharp exit from the dancefloor, before the nutter got over his surprise and decided to start a fight regardless. About 30 seconds later my insides dissolved in a rush of panic and adrenaline. Thankfully, the rest of the evening passed without incident.
On Sunday I caught up on some reading, then a few of us met up for Squash and Badminton, followed by a party in the evening. Yesterday we all met up for lunch, and then spent the afternoon basking in the sunshine and relaxing. Then something exciting and amazing happened in the evening: more on that another time.