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.

Back to Livejournal

I did a bit of posting in Livejournal’s community related to my hometown and received more comments that I accumulated at deadprogrammer.com in a couple of years. The posts are in Russian, but I believe they will be interesting to a significant portion of my readers, especially the comment part where I debate merits (or lack thereof) of speedos, man purses, and other things.

Одесские наблюдения

Возвращение

Монета

Два вопроса

Привоз

The rest of you please enjoy these two pictures from one of the posts:

Link Love 1

Stack Overflow: What do programmers listen to when they write code?

The best note taking tool in the world, Evernote, finally released an API. I really, really love Evernote.

Jesse Reklaw has a new Slow Wave book, The Night of Your Life, out. You can get signed copies from Slow Wave website or buy them at Amazon. Slow Wave is in the top 5 of my favorite comics, and Jesse drew the cat and programmer graphic used in the masthead of my site.

For some reason, my former co-worker Sean posts more New York City photos than I do these days.

Starbucks Moonshine

Livejournal has the best community blogs. I frequently read baristas even though it’s often full of petty grievances, tean angst and other Livejournal-flavored posts. But some are absolute gems. Like this story of an old lady who asked baristas to give her empty syrup bottles. After a month of getting the empties, someone curious asked her about how she was using them. Her response too honest for her own good, as she got no more bottles. It turned out that she was giving the bottles to her daughter for bottling moonshine.

Do You Remember the Fear?

By force of an old habit I read Livejournal blogs through the website instead of Bloglines. I immediately regretted that because once again almost made a mistake of writing about a private post. Livejournal marks private posts with little locks, and I once very stupidly discussed some non-public information about an LJ user without realizing that it was from a locked or “friends only” post. Eeek, I cringe just remembering that. Anyway, this time I got permission to post about this (even though I will try to keep away from “locked” posts as much as possible). Upc747 was very kind to let me use this photo of an old newspaper that he took:

The Soviets are gone, but Iraq and Iran are still troublesome. And you know what? I’ll take the War on Terrorism over the Cold War. It seems like all the Generation X-ers and Boomers suddenly forgot the terrible, paralyzing fear of the global atomic war. Not the fear of North Korean or terrorist nukes or conventional attacks, but the dark gut feeling, the stomach churning certainty that the Soviet Union and the United States will annihilate the entire world in one final showdown.

The Bulletin of the Atomic Scientists set the Doomsday Clock at seven minutes to midnight in 2002. It seems that in the years when the clock was at 9, 10, 14 and even off-the-scale 17 minutes everyone seems to have forgotten all about the fear of World War III. Do the people that say that the world at the turn of the new century is crazier than before remember the ominous 1984, when the clock stood at three minutes to midnight? The time when few people thought that the arms race will result in the collapse of the Soviet Union, but almost everyone was certain that the end of human race in nuclear inferno was almost assured?

Deadprogrammer.com Update

Last couple of weeks were rather stressful for me, thus no posts lately. I would like to break that non-posting streak and work on my site a bit as well.

First order of business – following antonme’s suggestion I installed MTLJPost plugin which will duplicate my posts in my Livejournal making dprogrammer_rss unnecessary. I will be turning off MT’s commenting feature and directing all commenters to Livejournal. I am too lazy to install the threaded comments hack in MT, and there seems to be almost no comment spam in Livejournal. I still need to do a lot of work on MT templates – the layout I have right now is rather ugly and not very usable.

I pretty much achieved what I wanted on the ad front – in about 30 days I’ve earned $7.99 with 1.8% clicthrough rate and $2.49 CPM. That’s a Fair und Balanced newspaper for every weekday! CPM by the way is a mysterious marketing term which means Cost Per Mil, where Mil (or Roman numeral M) stands not for Million but for for 10^3.

This cornucopia of revenue should be of course offset by my hosting costs, taxes and a purchase of $227.00 (+$5 s&h) Gretag McBeth Eye-One (aka i1) monitor color calibration thingy from an advertiser that google ads showed in my post. This might actually be the first time I ever bought anything from an online ad. Oh, Eye-One is outstanding. I will write a review sometime, but it’s definitely the way to go.