My first real foray into writing some simple Python scripts was a few scripts to establish the Gunning-Fog index of some given text. I wont go into lots of details about the uses of such a script; if you’re interested read Gez Lemons writeup over on Juicy Studio.

I took quite a bit of inspiration, and some code, from a similar script, PyFlesch, for establising the Flesch reading score of text.

I expanded things a little, using the Feedparser module to parse content from RSS and Atom feeds and give a Flesch or Gunning-Fog score of the summaries.

Download all scripts


Having just moved from a couple of year old Textpattern site to Radiant I didn’t feel much like copy and pasting lots of articles. The script simply copies all your posts from textpattern into the relevant place in Radiant.

Download PHP

At the moment this is undocumented and pretty rough but it saved me time and works. I’ll try and work up and potentially rewrite in Ruby for possible inclusion in the Radiant core if time permits.

Web.php is a really nice lightweight web framework written in Python. It’s not trying to be Rails or Django, it’s trying to be as simple as possible. Web.php is my homage to I’ve unashamedly copied the ideas and build a very simple web framework in PHP. It’s not a complete port, nor does it do everything in the same way.

The code example from the project home page was what originally piqued my interest:

import web urls = ( '/(.*)', 'hello' ) class hello: def GET(self, name): i = web.input(times=1) if not name: name = 'world' for c in xrange(int(i.times)): print 'Hello,', name+'!' if __name__ == "__main__":, globals())

My PHP versions goes something like this, I’m sure you can see the similarities:

<?php require('webphp/web.php'); $urls = array( '/' => 'hello', ); class hello { function GET($path) { echo 'hello world'; } } web::run($urls); ?>

I’ve used it so far on a couple of projects, but it’s never been properly tested as such nor do I have lots of time to develop it. It’s purposely feature and code light (the core file is only 80 odd lines of code, includig comments).

Download Zip


I’m a fan of Backpack from 37signals. Although you can make pages public their is currently no way to style those differently, or to add content from outside Backpack. That’s where Backgarden comes in. It’s a simple PHP (4 and 5, the XML/XSL implementations are slighly different) application that builds a page via the Backpack API and some XSL magic that you can put on your site. You just enter the page address and your API key.

Download Zip

CMS on Rails

Content management is one of those subjects I often get involved in at work, and something I find pretty interesting as a whole – even if I keep having to reiterate most of the problems with content management are people problems rather than technological ones.

I’ve been using Textpattern for this site and a few others for a couple of years. I’ve spoken before about the recent move to more hand rolled solutions, and the flexibility that gives people to innovate. As well as occasionally threatening to really kick the tyres on Django, Rails or similar (Seaside,, ...). I’ve been wandering the halls of the web development frameworks all year it seems – playing with Python and Ruby along the way.

To a point however these seemed more developer focused that something I could see being used by a web designer or small company (some intentionally so in fairness) or in education. However I’m back playing with Rails and started looking at existing apps to see how they are put together (I love open source) and a quick recce of Rails based CMS products turned up (amongst others that didn’t interest) Radiant. It appears to have been developed along side the new Ruby site launched in September and boy is it a nice piece of kit.

Assuming you have Rails installed, installation of Radiant is as simple as one command (It’s available as a Gem) and then another to get a site up and running (Ok, plus a couple of other simple commands to configure a database). First impressions it looks well put together, with a strong concept well executed and a lovely Interface. It’s chunky without being cliched and simple without being simplistic. I’m in the process of making plans for next year and this is hopefully going to feature somewhere. I love looking for a problem where I might just already have the solution.

Oh, and a only vaguely related note (well, Wordpress is a content management system of sorts) a couple of friends have started blogging over on and Consider this a shameless plug.

Food 2.0

I’m something of a want to be foodie. I’ve been a fan of food since working in a restaurant as a KP way back when I was at school. I like staying in and cooking, watching the odd food related progamme and going out to nice restaurants. However, I suddently realised it’s one of those things I dont yet do online. Most of the other things I do, or am interested in, I do at least in part online – except food.

So I set out to see what I could find. I’d signed up for Cork’d a while back after the buzz around the site in the web standards and Rails community. I’ve added a few wines and a few drinking buddies and keep thinking I should keep it up to date but…

A quick search threw up Chug’d, Menuism and Recipe matcher to name but a few – all complete with Web 2.0 cliches. But nothing that really made me want to sign up. I’m not looking for a food community really, more a useful tool to store food related tit bits. Recipes. Which wine goes with what and when the best time to get perculier beers might be. Like a food focused version of backpack maybe? A mobile interface, hey maybe even a Palm based data entry setup would top things off nicely.

Any other food people reading with a workflow that works? We’re always talking about software workflow or getting things done but what about something important like food!

Background Images in Email

Whatever you might think about image rich emails you have to admit clients are a fan, and sometimes needs must.

The web, as always, comes to the rescue and their are a few good articles around – many of them over on including a set of Email Design Guidelines for 2006, Optimizing CSS presentation in HTML emails and the excellent A Guide to CSS Support in Email

A List Apart also has an older article and their is some good infmation over on about the support in web mail clients.

Another little bit of useful info I thought worth posting, after a quick conversation with a colleague, concerns the use of background images in emails.

Assuming your going down the inline styles route you might want to have something like this:

<div style="background: url(image.jpg) top left no-repeat; width: 500px;"></div>;

But this just doesn’t work. The image doesn’t appear when the email is sent. A quick fix is to include the image inline, but hide it as much as possible with a height and width of 1px and a style of display: none.

<img src="image.jpg" width="1px" height="1px" style="display: none;"/>

This throws up one of those interesting annoyances in Outlook. If you’re sending the email using Outlook the image appears twice in the editing pane, hence the 1px trick as well as the style display: none. When it’s received the style rule gets applied.

This assumes you are sending the images along with the email, rather than simply linking to them online were you dont have this problem – but do have a host of other issues with blocked images and the like.

I haven’t admittedly tested this extensively, however I’ve had a lot of luck with Outlook, which for business to business emails accouts for something like 75% of the audience according to Campaign Monitor (and probably around what I’d expect based on my experience).

Well, how did I do

Well, the year is ever so nearly over. Again. I’m sure their will be a good few round ups, I’ll probably even partake again, but thought I’d start off with a quick look at how I got on with my list of stuff to do.

I did the conference thing again and I’m sure I will be back this coming year. `media, Future of Web Apps and dConstruct all look like going from strength to strength. And all being different enought to be worth going along. And I stayed awake throughout the Ajax workshops and I’m pretty sure I got to everything `media had to offer. So that’s three ticked off.

On the article publishing thang. Well, I’m know writing for Vitamin – doing book reviews as often as I can do, two so far on Communicating Design and Using Microformats and more to come. Hopefully more to come on that front too. Another tick I reckon.

The next two, related to building and releasing stuff (specifically Rails and the feed syndicator) I sort of passed on. I actually have some things in the works but I’m not likely to get their this year. The reason was probably my flirtation with all sorts of other things – in particular Python. Releasing bits of code is something I’m going to do more of. Watch this space. Two crosses.

Locally I messed up the domain name but settled on the nicer and with a little help from Matthew Patterson Pennell have a nice new site. Next year I want to do more than just web site related bits an pieces. Maybe half a tick?

Now the “something vague” idea. Well, teaching web design at Newcastle College definately counts here I think. I didn’t see this coming and hopefully I’m doing a good job so far.

Ok, so not bad going, but I could do better. And looking back over a list I made a year ago is quite interesting. I guess I’m posting this early to encourage anyone reading it to post a list of things they want to do next year. Anyone got any ideas?

Mac Virtualhost follow up

A couple of people asked for the details of the virtualhost script I modified for use with MAMP in a previous post. Apologies for taking a bit of time.

First I had to make these changes to the original virtualhost script:

DOC\_ROOT\_PREFIX="/Applications/MAMP/htdocs" APACHE_CONFIG="/Applications/MAMP/conf/apache" APACHECTL="/Applications/MAMP/Library/bin/apachectl"

I also made a few changes to httpd.conf in /Applications/MAMP/conf/apache. From memory first to allow local .htaccess files to override everything on a per directory basis.

<Directory "/Applications/MAMP/htdocs"> oAllowOverride All </Directory>

and then to point to the virtual hosts directory.

NameVirtualHost Include /Applications/MAMP/conf/apache/virtualhosts

I keep meaning to do a screen capture tutorial of sorts, so maybe something like this would be a good starting point? We shall see as and when time permits. Probably this time next year. Any problems let me know and I’ll try and debug.

An Admission about Source Control

I have an admission to make; for personal projects, of which I have many, I haven’t been using source control until now. The reason? Probably laziness. I do lots of reading around the whole software development process but most of that gets used at work, at least until now.

One of my favourite articles is the old Joel Test. Some of this is less relevant to the home developer, but it does give you somewhere to start from. Well, I’ve now got subversion up and running and all new projects will be going in their. I’ve already added the repository to my backup policy. The free book Version Control with Subversion provided all the information I needed to get up and running. I’m more of a fan of command line interfaces anyway so haven’t installed any special interface. I’m sure I’ll look into the Textmate integration once I know my way around the command line interface a bit more.

Next up I’m on the lookout for something to use for bug tracking. I already use backpack and basecamp for different activities but I’m not sure yet if they will do for proper bug tracking. I dont really like bugzilla, although maybe trac is what I’m looking for?

What does anyone else use, either for source control or bug tracking?