Rick Hurst Web Developer in Bristol, UK

Menu

Blog

CMS strategies

When it comes to Content Management Systems (CMS’s), i’ve been “round the block a few times” so to speak, having spent the last ten years mostly working on CMS driven sites – starting with bespoke classic asp/ MS Access (shudder) back in 1999, before moving onto bespoke php/mysql systems, wordpress, drupal, zope/plone and dabbling in countless others. My conclusion: there is no holy grail, because the people developing and maintaining the code and content vary, and there are other important factors. Therefore I always take time to decide on the best approach for each project.
It is rare that I get a “greenfield” project where I am free to start from scratch. Without getting right down to weighing up the pros and cons of individual systems, here are some of the factors that help me (and my clients) make a decision:-

  • Will I be starting from scratch or building on something else?
  • Am I working alone, or with one or more other developers?
  • Does the client have a preferred technology i.e. if they already have an intranet written in a particular technology, it makes sense to use the same for their website. (Unless of course they hate their other systems – it might be a good bargaining point to go a different direction altogether!)
  • What’s the content like? – is there a large amount of text content, categories and pages or is it “snippets” of text that need to be editable, amongst otherwise highly graphical content?

Commercial Content Management Systems
I’m not going to talk about the “big” commercial CMS’s – the only people they are useful to are the people who’s job it is to go and buy a CMS license, companies who own or sell the software and companies who have made the investment to become specialists in such systems. That counts me out, and as i’ve never heard a developer, designer or content manager singing the praises of such a system (entirely the opposite), i’m going to presume they are all overpriced rubbish, and talk about what I know! I know that sounds flippant, but I refuse to believe that any of the vendors of the expensive, closed commercial systems have solved problems that a community of thousands of people working on competing open source systems haven’t. Also money saved on an expensive license can be spent on support, maintenance and customisation of a system with no license costs. Which brings me onto…

Off-the-Shelf open source CMS’s
One obvious route is to use one of the mature, all singing and dancing systems like Plone (zope/python) or Drupal (php/mysql). They are easy to install and have a comprehensive feature list, but usually one other thing in common – voodoo. By voodoo I mean a whole load of essential code deep down in the architecture that your average web developer (counting myself here) isn’t supposed to touch, and can spend hours/ days working out how to hook into it to make seemingly simple changes. For someone who becomes an expert in the system, they have full access to the code, so become familiar with the hooks and this isn’t a problem. For the charity/ company/ organisation where the development budget has run dry, it can be tricky finding anyone (available) who can work on it. If the content maintainer likes the admin interface these can work out really well, if they don’t it can be a ton of reverse engineering to make it “work” for the content manager.

Bespoke CMS’s
On the other extreme you have a bespoke CMS written from scratch giving the developer fine grained control over everything they need to do, and easily picked up by another developer, provided that it is sensibly written. However, as developers usually have their own way of doing things, it may take another developer time to learn how the system works before they can make changes, or they may want to re-write it altogether! The downside of any bespoke system is that it can take months to build features that you get for free in an off the shelf system. I often build a bespoke CMS where I need to bolt new functionality onto an existing system, where there isn’t enough budget to start from scratch.

Bespoke CMS built on a framework
In between are bespoke systems built on a framework (such as Cake PHP, Ruby on Rails, Django), so much of the repetitive coding work (such as user management and admin forms) is handled for you, but it’s still a bespoke system. The downside of these is that you need a developer who already knows, or is willing to take the time to learn the framework. The upside is that new functionality can be added quickly and in a consistent manner by someone familiar with the framework.

“In-House” CMS
By which I mean a bespoke CMS which isn’t written from scratch each time, but a mature “tried and tested” bespoke CMS built and maintained by an agency or developer, then reusued or repurposed for each new project. The advantage of this is that the developer/ agency have a high level of familiarity with the system, so are able to make fine-grained changes as required, that they may not be able to make with other systems. The disadvantage is that these can be the trickiest systems to be picked up by another agency or developer, and their may be IP issues (see below)

Intellectual Property / licensing
I’ve already said that i’m not going to talk about the commercial CMS’s, but one consideration when choosing which way to go, particularly with a bespoke CMS, is what happens if you were to move to another developer or agency? Will the source code and database files for your CMS be handed over along with the website or are you going to have to license it /buy it/ start again? Also what would happen if you wanted to sell the website and CMS on at a later date?

Standalone vs Retrofitting
This refers to the last of my bullet points above – not all websites are the same. Some (like news or university websites) are text-content heavy, with hundreds or maybe thousands of pages and categories, and some websites have highly designed (as in graphic design) content.

In the latter scenario it is often better to build the site as static HTML first and retrofit a simple CMS later. The bulk of the work in building such a site will be in getting it looking and behaving correctly, and their may need to be lots of fine tuning to the layout, which is easier if you aren’t reverse engineering a theming system. Moreover, the text content may be confined to small snippets of text, or a simple news blog, which can easily be plumbed in later.

The former scenario would suit an off-the-shelf system that works standalone – i.e. one that allows content editors to start populating content before the templates are finished, which are then applied as a skin/theme later – it may even be the case that the site can’t really be designed properly until the architecture and content are in place.

archived comments

Great post Rick, and it really rings true with me. Certainly the bit about taking ages to do a simple change.

I’m sure if you invest a lot of time with a framework/CMS system then it will pay dividends however, my concern is that, if the only tool you’ve got is a hammer then everything looks like a nail…if you catch my drift!

Joel

Joel Hughes 2009-09-19 18:43:28

Aardman.com goes live

I was really chuffed to be asked to help the aardman online team out with the build of the new aardman.com site. I took the supplied photoshop designs and created HTML/CSS templates that were then handed over to be integrated into the CMS. I’m currently doing a lot of freelance work for digital agencies and I haven’t been able to talk about the websites i’ve been working on, so it’s great to be able to shout about this one!

aardman.com website screengrab

Seven Things

While this blog is usually confined to techno-babble and “professional” stuff, it used to have a more personal tone. This post is all about me and is part of a meme called seven things, after Jon Tan deemed me interesting enough to join in!

1. Most of my teens and my early twenties I spent obsessing about being a rock star. I spent hours every day playing my bass guitar. I found it impossible to listen to music without dreaming up a scenario where I would end up in the band I was listening to – “no way – the Smiths are reforming, but Andy Rourke has lost an arm!! There’s only one option, and that is to ask Rick Hurst to join the band“. The peak of my music “career” was being dropped from a band on the advice of famous songwriter Guy Chambers. I’ve been to his house. He made me a cup of tea.

2. I only ended up with a career in web development by accident. I actually have a degree in environmental science, and tried for years to get a job in that field, but couldn’t get my foot in the door due to lack of experience. A friend suggested I put my cv on the “internet”, so I bought a dial-up modem and a copy of HTML for dummies, and six months later I was a professional web designer (it was the dot com boom – HTMLers were thin on the ground).

3. In 1997 I spent six months living in a van traveling around spain. I camped in the Andalucian mountains, in the woods and in urban streets, and lived like a king on about £15 a week. I supported myself by busking (mostly radiohead and oasis songs) to English tourists. With time on my hands I also wrote about fifty songs of my own, which later turned out to mostly the same, and a bit rubbish.

4. Most of my childhood I had a lazy eye and regularly used to have to wear an eye patch over the non-lazy one to encourage me to use the other one. I still find it difficult to look through both at once, but at least they now both point in the same direction. As a result i’m rubbish at ball sports, catching and 3D pictures/ films don’t work. Or those magic eye pictures.

5. I only met Jon Tangerine in bristol a couple of years ago, but our paths must have crossed on a regular basis in the early 90’s when he ran an acid jazz club night called “stump juice” at the connaught hotel in wolverhampton, where I was a student. I’ve never really been into clubbing, but that was a regular for me and my housemates, and considered a legendary night amongst wolverhamptonites with a vintage clothing habit.

6. I grew up in the East Anglian fens, and it nearly all ended there when I was 17. I was a passenger in a nasty car accident which resulted in myself and four other people crawling from the wreckage of a ford granada upside down in a ditch. Miraculously we all escaped with minor cuts and bruises. Although I’m a confident driver, I’m a really nervous passenger, and can’t stand being in a car with an erratic or risk-taking driver.

7. I got married in Las Vegas in 2001. The wedding cost 175 dollars, then we hired a convertible pontiac firebird and went on a road trip around nevada and california for our honeymoon, courtesy of egg. Hopefully we’ll go back one day and renew our vows, and take our kid on a US road trip – maybe in a winnebago this time!

Ok, thats my ego indulged, so now according to the rules I have to “tag” seven people. For this to work, they need to be people who have a blog. While I know some interesting people who happily document their lives in the walled garden of facebook et al, they have decided that blogging isn’t for them, and hence rules them out in this occasion!

Keeping it in the family:

James Hurst – my cousin – talented web developer, musician, owner of River Rat Records and thoroughly nice bloke.

Some locals:

Iain Claridge – netsight/freelance designer and my barometer on what is cool and stylish

Skateboarders

Whether you are interested in skateboarding or not, most of the skaters I know are creative in some way. There is a tendency for skateboarders to document themselves and their friends – photos, videos and blogs – skateboarders are all over it. I did actually intend to only tag skaters for this, but the people I had in mind have either let their blogs die or have already been tagged.

Mark Mapstone – I internet stalked Mark before I met him when I discovered he was a blogging skateboarder like myself. He can fly through the air like a bird on or off a skateboard and is a very entertaining writer.

Gavin Strange – aka jamfactory The most creatively prolific person i’ve met. He skates (occasionally!), designs boards, and takes photos and video of people riding them. and rides one of those bikes that don’t let you freewheel.

Bob Lands – Although the boblands site is no more, he’s gone all arty, bought an old camera from a charity shop and now blogs at surf or pie. He will be embarrassed by this, but it will get him back for encouraging random strangers to hug me in public (long story).

Whip – I’ve only met him a couple of times, but he’s got a cool popemobile van

For those i’ve tagged, and can’t resist the urge to ignore me:-

  1. Link your original tagger(s), and list these rules on your blog.
  2. Share seven facts about yourself in the post – some random, some weird.
  3. Tag seven people at the end of your post by leaving their names and the links to their blogs.
  4. Let them know they’ve been tagged by leaving a comment on their blogs and/or Twitter.
archived comments

Thanks for the link dude!This post is really interesting, its a great idea and i now know 7 new and very interesting things about you!

I think ill do the same on my blog, good idea old bean!

Gav 2009-03-11 23:47:05

cheers for the mention mista – I haven’t read this post yet, but I’m certain its full of the usual ‘hurst genius’. bloody hell, I know that Gav/Jam bloke too… small world hey?Mark Mapstone 2009-03-12 15:57:25

Bob 2009-09-14 13:28:08

new sweetcron/ codeigniter based site Too Old To skate

too old to skate

I’m pleased to say i’ve achieved another of my 2009 goals, by launching the (unfinished) new version of one of my personal projects Too Old To Skate. The main site is now running php/codeigniter based sweetcron, which is used to pull content in from the original wordpress, flickr, delicious, twitter, vimeo and a friends blogger based site. I have plenty more planned for the site, but little to no time to do it, so I thought i’d upload the site unfinished in the meantime to allow myself to do incremental updates, rather than be embarrased by a holding page.

Amongst the plans are:-

  • bring in the content (articles and photo galleries) from the now defunct plone(2) based DFR Skate zine – i’m thinking some sort of PHP/ codeigniter* front-end sucking in content (as XML/JSON or even plain HTML) from a Plone 3 site acting as a content server. Doing something like this with Plone has been on my mind for years! Maybe I should stick this in as a 2010 goal. Alternatively it may just end up as a skinned Plone 3 site on another subdomain – either would be good.
  • Skin the blog to fit in with the main site.
  • Other awesomeness – this is a non-commercial personal project and therefore my playground 😉

*Having now played with both codeigniter and cakephp, I think I prefer cake. However as sweetcron is codeigniter based it would be plain silly to be using cake on the same project.

Adventures in cakephp

I’m part way to achieving one of my 2009 goals – i’ve got a commercial project live using cake php 1.2. The site is Kudos Business technologies – a company who specialising in LED lighting and other technologies aimed at lowering environmental impact and saving money.

kudos business technoliogies - led lighting and other low impact technologies

The site has actually been refactored from a static HTML site, most of the pages are still static, but make use cake’s routing, page templates, layouts and elements. The news section is dynamic, and was very simple to put together, but i’m only half way there – currently I haven’t got any proper admin forms – that will have to be phase two! The learning curve so far has been very small – i’m looking forward to taking it a bit further.

archived comments

Hey,

I’ve been using Cake for a while so if you need help with anything feel free to give me a shout. Also check out Symfony. It’s like cake, but without the limitations of supporting php4.

Dan W 2009-01-28 22:17:32

Good work Rick – might want to remove the default cake favicon though

Andy Gale 2009-01-29 09:50:17

Hi Rick,

Great work on completing your first commercial site in CakePHP.

You mention you use mostly static page content and that the news section is dynamic… I assume your new page has a controller all of its own right now? And that the static pages are stored in the views/pages directory? If so then your routing is nicely done, usually I would expect to see the /pages in the url – the fact that you have managed to mix the pages and the controllers in your routing is great and something I have never considered doing.

Take a look at a commerical site we had a requirement to create … http://www.cheaperagain.co.uk/quote – you will notice that the URL has /quote in – quote is the name of a model/controller… and most pages on the website fall under 2 models, the quote model and the provider model. There are 3 pages that are under the prebuilt /pages directory… terms and conditions and help etc – if you click those you will see they pull up the pages/whatever in the URL.

I’m going to have to bare your post in mind for the next cakephp project we start on, and make sure I tidy the routing up fully.

Cheers,

James Mikkelson 2009-02-21 10:04:24

Plans for 2009

Inspired by Elliot Jay Stocks post “Goals, Old and New”, I thought i’d jot down a few goals* for 2009. In no particular order:-

  • Launch a web app – the original reason for starting Olivewood. We already have a working prototype (a web based trading/ procurement/communication hub – successfully in service for a distributor over a year), it just needs some refactoring to make it suitable to be released to additional clients with slightly different needs.
  • Relaunch Too Old To Skate – it’s a personal project, and it’s important for me to be working on at least one non-paying project, to remind me that i’m not just in this for the money. I’m already part of the way there with a sweetcron based mashup. I intend to launch it, unfinished or not in January.
  • Attend at least one web conference – last year was just too manic, and combined with bad timing I only managed WDC this year. On my possible list are FOWA dublin, bamboo juice in cornwall, plone conf in budapest, Europython in Birmingham and the list goes on.
  • Attend at least one barcamp. BathCamp this year was great.
  • Fix on a php framework and use it on a “from-scratch” commercial project, and get really, really good with it. Cake is the current fave, though will likely be using Zend Framework too on a magento based project.
  • Get to grips with plone 3 skinning – I want to consider myself a plone skinning expert again.
  • Get further than “hello world” with Django – ideally at least one commercial project. I’m not beating myself up too much over this, I thrive on examples, so i’m letting other people do all the early adopter stuff 😉
  • Better customer service – by managing my workload to avoid juggling projects, saying NO occasionally, and generally working in a more controlled and predictable manner.
  • Put up a proper portfolio on this site, maybe even a redesign – working on this website is always last on the list, it’s still using the default wordpress theme from way back.
  • Use and understand some technologies that i’ve been ignoring – JSON, WSGI, Zope 3
  • Do more on-site freelancing for agencies. I seem to thrive in that environment. Maybe it’s my agency background, or maybe it’s because I get to focus on the task in hand rather than the whole “business” side of being a freelancer. There’s also the whole co-worker thing.
  • Keep trading and survive the credit crunch recession (Touch wood) i’m already booked up for the first few months of 2009 – lets hope the work keeps coming!

* web/ career related – i’ll save the more personal goals for drunken new years eve conversations with friends!

archived comments

Nice one, Rick! I think that “saying no” one is a very wise tip indeed. I must learn to do more of that!

Elliot Jay Stocks 2008-12-22 16:19:42

Nice Rick. I wish you good luck and all the best for your 2009 projects.

Nicolas Alpi 2008-12-30 00:25:26

Web Developers Conference 2008

Yesterday was the second Web Developers Conference at the Watershed, Bristol. The attendees are 50% UWE students and 50% industry professionals – some local and some from further afield. The idea is that the students – many of whom are looking for placements, or jobs to start when their couses finish – get some exposure to the industry. There were several excellent talks during the day and two panels – the second of which I was lucky enough to be participate in. A good day – all the speakers and panelists I spoke to enjoyed it, and hopefully the students got something out of it too – roll on next year!

Update: I mistakenly implied that this was a UWE event. In fact although the UWE help with this event it was thought of and run by organiser Alex Older – many thanks for all your hard work Alex!

World Plone Day – Bristol, UK

Today is World Plone Day.

From the website:

“The World Plone Day (WPD) is a worldwide event. Our goal is to promote and educate the worldwide public about of the benefits of using Plone in education, government, ngos, and in business.”

We held an event in Bristol, which I streamed and recorded via ustream – available here. I did a lightning talk on how to use plone out-of-the-box as a small company intranet and searchable knowledge base, other talks included “big plone”, contributing code back to the community and KSS.

The video was streamed straight from the webcam and built in mic on my macbook, so the sound quality isn’t great, especially when the fan kicked in, but it was a bit of a last minute effort. Next time it will be camera, mic and tripod!

Review: Professional Plone Development part 1

Firstly an apology: I was sent Martin Aspeli’s Professional Plone Development for review back in October last year, and I still haven’t got round to reviewing it – not out of laziness, but extreme time shortage due to going freelance/ starting a company last year. Hopefully I can make amends now by reviewing it section by section as I jump into Plone 3.

A bit of background about me and Plone: I have worked predominantly with Plone for about 4 years, coming from a background in classic asp and php. My area of Plone expertise is front end templating and skinning, which was my main area of usefulness at Netsight for a couple of years. I have also presented a couple of Plone based workshops at Bristol Skillswap, attended two Plone conferences and a Snow Sprint. Despite this involvement with Plone, I have had a love/hate relationship with it, at times thoroughly lost deep down in the software stack, and fighting my tendency to think purely in terms of scripts and relational databases, other times singing it’s praises to anyone who will listen. Since leaving Netsight I have only worked on one Plone (2) project, as i’ve gone back to my old ways, favouring php for most projects, but just got stuck into an inherited Plone 3 project, and started using a vanilla Plone 3 site as a knowledge base/document repository/intranet/extranet for my own company, olivewood. (Hosted on a mac mini in-house, which I thoroughly recommend, but that’s another post!).

I’m currently feeling a little lost, with the Plone 3, which is why I decided to finally start reading/ reviewing the book.
Ok, enough about me, lets talk about the book: I opened the book last night and read through the foreword by Alexander Limi, and the first chapter. It left me with a fantastic feeling about Plone and the future of Plone – it summarised what is different about Plone, and how important (and fun) it is to participate in the Plone community to get the best out of it – the polar opposite to working with a proprietary product, where the vendor tries to cultivate a community around it, but it’s not the same. It also made me feel slightly guilty for moaning about aspects of Plone in the past – who exactly was I complaining to? I resolved to make sure that the next time something frustrates me, that I actively participate in making the situation better, i.e. to at least actively become part of the problem, if not part of the solution!

Chapter 1 covers Zope and Plone history, Plone as application vs Plone as framework, considerations for when deciding if Plone is the right tool for the job, and the importance of the community.
A couple of other things I learned from the foreword and chapter 1:-

  • The original release of Plone was built (predominantly*) by just two people, Alexander Limi and Alan Runyan who didn’t meet until Europython 2002 just after the first release
  • The Goldegg initiative is a sponsored effort to improve Plone’s framework stack, not a type of python egg!

Ok, I will try to deliver another installment as soon as possible, but i won’t necessarily be doing it in order – i’ll be skipping straight to chapter 8 (skinning)
* Building on top of Zope/ CMF – the work of many people!

archived comments

Hi!

Thanks for buying the book. I hope you enjoy it. 🙂

I would probably read the chapters in order, or at least skim them in order. You’ll find it a bit hard to grasp some of the things chapter 8 otherwise. At least, I’d read chapters 3 and 5 first.

Cheers,
Martin

Martin Aspeli 2008-09-18 22:22:29

Thanks for the compliments on the foreword. Interestingly enough, that foreword has generated more nice personal emails to me than anything else I can remember writing. 😉

Alexander Limi 2008-09-18 23:15:37