Site notes 1: Building from the ground up
I'm spending a lot of time at the moment working on a new web project. It's something I'm absolutely psyched about; it's one of the reasons I decided to make the leap from full-time salaried employment; it's got, I think, good potential; and, well, it's fun. But sitting all day in front of a computer with a (fairly) single-minded purpose can get a little wearing, and everyone needs the chance to vent sometimes.
I'm not ready to talk about the project itself yet, other than to say yes, it does have some maps, and no, it's nothing to do with canals. Instead, I'm intending to jot down a couple of notes here as the build progresses, noting what I'm enjoying working on, and owning up to the mistakes and rethinks along the way.
That's especially true right now, having just realised I made the wrong technology choice right at the beginning.
It's a content-heavy project, so it needed, I figured, a heavy Content Management System. My modus operandi is usually to build pretty much everything myself, but this site was going to be Serious Business. Enough time had elapsed since the Tridion nightmare back in 2005 for me to think about CMSs again. So, given that I wanted something open-source and highly hackable, Drupal was the obvious choice.
It was also the wrong one, but it took me six months to realise that.
That's not at all a slur on Drupal. Over those six months, I grew to like it a lot. Like everything, it has its quirks, its annoyances, but it's got plenty going for it. Modules for pretty much everything. A robust and well-designed admin interface. A friendly and clued-up community. Most of the stuff that baffled me at first (like the menu/router system), in time, I came to understand and occasionally respect - though I still couldn't get the hang of drush, admittedly. Anyway, I built a few little things in it, like the canal.travel linkblog, and it works well.
Then why switch?
Because I realised that I wasn't building the site I wanted. The technology was steering me to do things this way, that way. The good stuff I was getting from Drupal (admin interface, user management) was starting to be outweighed by the stuff it couldn't do with an easily downloadable module or some modest customisation, let alone out-of-the-box. In the end it was a forum issue which pushed me over the edge, but it could have been anything. And as time went on, I knew the balance would tilt even more.
The most successful thing I've ever built is the Charlbury website. That might not seem an obvious choice given that Potlatch 2 has over 50,000 users and Waterscape.com had, I guess, a decent six-figure number of visitors, whereas the Charlbury website has just under 5,000 unique visitors a month. That doesn't sound a lot... until you realise that Charlbury has a population of 3,000.
There are several reasons for that, but the main one, I think, is that the site has been able to iterate to meet the needs of the community. If someone comes up to me in the pub and says "you know, it'd be really useful if the website could do X", I don't have to tut and reply "sorry, don't think that'll be possible with our CMS". If it can be done, and I've got the branes to work out how - and the asker buys me a pint - then it gets done. Sure, the corollary is that I've had to write stuff that an off-the-shelf CMS would give me (like user management), but the Charlbury site is distinctive enough that there's not been too much of that.
So that's the model I'm returning to. It's not for everyone, but it suits how I work.
Of course, technology moves on. The Charlbury website recently celebrated its 10th anniversary, so it's no huge surprise that it's written in Ye Olde Perl as a bunch of not particularly elegant CGI scripts. There are better things in existence these days, so I've decided to build the new site in Rails... or almost. I'm actually using DataMapper with Rack, which when coupled with a router script is the same basic idea, but less likely to piss me off. Rails is "opinionated software" and I don't share all of DHH's opinions. (Did someone mention tabs?)
I think I've probably lost a fortnight to this, which is annoying, but better than realising the same thing six months after site launch. Encouragingly, I'm finding that I'm already working more efficiently in Ruby/DataMapper/Rack than I was in Drupal or than I do with the n thousand lines of Perl that make up the Charlbury site. A simple thing: every time I tick off a feature, I get to think "yay, I built that", rather than "whew, once again I managed to persuade the system to do something it didn't want to do". It's a much more enjoyable way of working.
