8 Pieces of Architectural Advice for CMS

I have some advice for those in the business of building large websites with content management systems.

1) Do not implement search yourself.

Your CMS sucks at search, and so do you. I see this again and again and again. Everyone is implementing search on large websites instead of using Google. Developers are afraid of looking unprofessional. Managers are answer yes to the question “do you want advanced/faceted search” (the correct answer is no – user’s don’t like it and don’t use it). As a result a lot of resources (both server and developer) go into implementing something that Google is awesome at. Even some very smart people, like Jeff Atwood roll their own search, and their users end up going to google.com and typing “foo site:stackoverflow.com”.

Users are very happy with Google CSE, and don’t mind the text ads. Those text ads – well, that’s revenue that you would otherwise would not have, however small this is. If you absolutely can’t do Google CSE – buy their search appliance. If you can’t do that either – well, you better be using Solr.

2) Do not implement comments yourself (unless comments are what you do for a living).

It is extremely difficult to get comments right. Users absolutely abhor comments. Spammers – well, they love it. Luckily, you can just go and get DISQUS to do all the heavy lifting for you. The time saved on using DISQUS can be used on building something else, meanwhile users absolutely love leaving comments through it, while spammers hate it.

3) Physically separate your admin interface from the stuff that is going to be used by your users.

Maciej Ceglowski has some words of advice about not having your blog hacked: cache your output in flat files and hide the admin interface. The benefits of this are tremendous: cached files are fast and secure. You will need to do some fancy footwork to serve up parts that change a lot, but you can do it the same way DISQUS and Google CSE do it – through the magic of AJAX.

4) Sanity check: calculate the amount of RAM in the home computers of all of your interns. Compare that to the amount of RAM in your server farm. Who wins?

5) Use a CDN and/or caching proxy, don’t be cheap. These things will save your butt when Yahoo and Digg will come a-knocking at the same time. I’m not even going to mention Memcached – you can’t get big without it at all.

6) Fight WYSIWYG editors. These things are the worst. They are the Devil. They are a security hole. You never get what you see. People paste from Word. Do I need to go on?

The best middle of the road solution is something like Markdown.

Do not underestimate the user’s ability to learn a few simple rules. When I worked at TV Guide there was this movie database application. Very non-technical editors were using a very scary-looking Unix-based interface at an amazing speed. When I rewrote it as a web interface, it became more “user-friendly”, but they could not enter stuff as fast as before.

7) Make sure you have good backups

8) I know you won’t be able to follow my advice, I know I can’t either. Life is a constant compromise.

Pro Drupal Development

Pro Drupal Development is strongly recommended for any PHP programmer who wants a truly in-depth look at how Drupal works and how to make the most of it.

— Michael J. Ross, Web developer/Slashdot contributor

Drupal is one of the most popular content management systems in use today. With it, you can create a variety of community-driven sites, including blogs, forums, wiki-style sites, and much more. Pro Drupal Development was written to arm you with knowledge to customize your Drupal installation however you see fit. The book assumes that you already possess the knowledge to install and bring a standard installation online. Then authors John VanDyk and Matt Westgate delve into Drupal internals, showing you how to truly take advantage of its powerful architecture.

Youll learn how to create your own modules, develop your own themes, and produce your own filters. You’ll learn the inner workings of each key part of Drupal, including user management, sessions, the node system, caching, and the various APIs available to you. Of course, your Drupal-powered site isnt effective until you can efficiently serve pages to your visitors. As such, the authors have included the information you need to optimize your Drupal installation to perform well under high-load situations. Also featured is information on Drupal security and best practices, as well as integration of Ajax and the internationalization of your Drupal web site. Simply put, if you are working with Drupal at all, then you need this book.

  • This book is written by Drupal core developers.
  • Drupal architecture and behavior are mapped out visually.
  • Common pitfalls are identified and addressed.
  • Chapters provide regular discussion and reference to why things work they way they do, not just how.
  • The front matter features a foreword by Dries Buytaert, Drupal founder.

Oy, Again With The Moving…

Using Dreamhost is quickly turning into nightmare. It’s a cheap, full featured and generous web host, except only good for websites that do not matter (and I think that mine do). There is no upgrade path to a virtual private server (which is one step below a dedicated machine both in price and performance), their overall uptime is not something I’d trust, and their blog is just driving me nuts. At the suggestion of a friend I’m moving over to Webintellects.

As a web developer I specialize in content management systems. I have wasted many years of my career on Microsoft technologies, although my personal website was always built using open source tools. In recent years, when faced with the twin horrors of Sharepoint and MS CMS, I just could not go on any more. I just can’t imagine an entrepreneur who would willingly use this stuff to build a business. I quit my job of almost 6 years, took some time off and went on to a job that allows me to use open source tools. We’ve had quite a bit of success with Drupal, a leading open source CMS.

WordPress is a great tool for blogs, but it makes good sense for me to start using Drupal for my own sites, as well as at work. Drupal grows at an astronomical rate, improving in leaps and bounds. I have a couple of modules almost ready for contribution (once I make them a little neater and better documented). Drupal is very scalable, very well designed and has a huge following. I could not be happier with it as a developer.

In the five years that my website existed in blog format I moved 3 times. Livejournal -> Movable Type -> WordPress. Now it’s Drupal‘s turn.

I apologize in advance for any annoying symptoms of the move, like refreshing of the RSS feed where already read articles might show up as new, etc. Please bear with me.