It's all in the detail
  • slide
  • slide
  • slide
Posted on: 01 February 2010
I've been doing some interesting work lately using Google Website Optimizer to help with our signup page on Analytics SEO. The full gory details are over on the Analytics SEO Blog.

Read More
Posted on: 14 January 2010
I had an interesting problem this morning. One of our team had been demonstrating Analytics SEO to a potential reseller, and had forgotten to log out of the site at the end of the demo. He didn't really want to leave them with access to his account (which is a rather powerful administrator-type account), but also didn't really want to phone them and ask them to log out. The reseller is in South Africa, so I can't exactly sneak in and delete their login cookie either.

Read More
Posted on: 01 December 2009
Bit of a weird problem this week about our customers not being able to access our pre-production websites. We have a test server in our office which we use to host websites during development so our customers can see progress and add their own content. Our internet access and networking is (mostly) handled by a consumer-grade Netgear router/firewall/ADSL modem job, which is configured to route inbound http requests to our test server. All worked fine.

Read More
Posted on: 20 November 2009
It's been said before, but good judgement comes with experience, but experience comes from bad judgement We all know the golden rules on database backups: 1. do backups 2. test that you can restore from those backups But how many of us actually do that second part? I've recently gained some experience (ahem!) on the importance of step 2.

Read More
Posted on: 20 October 2009
Our latest venture, www.analyticsseo.com, is a pretty complex app for a Drupal site. There are two parts to the system: 1. a back-end application, which crawls the web, analyses sites and competitors, and does all kinds of clever stuff 2. a front-end application, which summarises this data, generates tasks, and manages workloads Fortunately, Drupal makes it really easy to work with multiple databases. Simply add two database connection strings in the settings.php:

Read More
Posted on: 25 August 2009
An interesting problem for today. I was trying to fix a fairly trivial bug in one of our websites, but when I try to load a page from my webserver I get a Drupal error: user warning: Can't create/write to file '/tmp/#sql_1071_0.MYI' (Errcode: 28) query: SELECT t.* FROM term_node r INNER JOIN term_data t ON r.tid = t.tid INNER JOIN vocabulary v ON t.vid = v.vid WHERE r.vid = 39 ORDER BY v.weight, t.weight, t.name in /var/www/seo/modules/taxonomy/taxonomy.module on line 617. Errcode 28 means I'm out of disk space, but a quick df shows plenty:

Read More
Posted on: 17 June 2009
Having been a happy user of GooSync for keeping my Google Calendar synced with my Pixon phone, I decided it was time to centralise my address book too. GooSync claims to be able to sync Google Mail contacts too, so that seemed like a good way to go. Sadly, once I'd got all my contacts into my Google Mail address book, running GooSync on the phone did two things:

Read More
Posted on: 28 May 2009

Read More
Posted on: 06 May 2009
For the past 16 months, I've been working almost exclusively with Drupal to build websites, and I've got pretty good with it. However, I'm always conscious of the old adage that "When the only tool you have is a hammer, everything looks like a nail", so in the interests of expanding my toolbox, I'm taking a look at Ruby on Rails.

Read More
Posted on: 02 May 2009
As a web developer, one of the jobs I enjoy least is making sure that the sites I build are going to look good to all our visitors, not just to me. Like most developers, I develop my website for Firefox, then check it's OK in other popular browsers. Given our relatively low visitor volumes (at least so far) and limited time available for testing, in practice, this means testing Internet Explorer 6 and 7, and hoping that Opera, Chrome and Safari are as standards-compliant as Firefox (which is a fairly safe assumption).

Read More