It's Holidailies Time

Although the portal looks similar to last year's version, it is, in fact, a complete reimplementation. There were two key features I wanted to incorporate in this year's site, and that mandated a significant rewrite.

Last year's site was completely dynamic, and, now, I realize that was a poor design decision. If you were to visit last year's site, the PHP code would grind away on the database (which hasn't changed in a year) and produce you an up-to-the-minute page listing. If you visit again tomorrow, it will grind away again, producing the same exact result. That's crazy. There is no need to burden the server with complex SELECTs and JOINs on data that haven't changed in a year.

This lead me to a good rule of thumb: if content is viewed at a rate significantly more than it is changed, then make that content static. Consider, for instance, the left sidebar in the Holidailies portal, which lists all of the participants. In last years design, the list was calculated each time the page was rendered, which happened over a thousand times a day. Yet, the list changes only when somebody posts to the portal, which happens less than a hundred times a day. Thus, it makes more sense to render the sidebar each time a person posts, and save the result for subsequent page views.

With this change the overhead of page views is minimal, mainly PHP pasting together blocks of text, and little-to-no database access. Moreover, after the holiday season when the site is retired, it will be much easier to create a static archive of the site.

One of the problems with Holidailies is that it produces a massive heap of articles. This had to be bewildering for visitors, particularly those outside the journal writing community who don't know the personalities involved. Morover, there was some very good writing getting lost in the haystack. To address this, we added a process to highlight selected posts. We got a number of journalers who wouldn't be participating as Holidailies writers to join a Readers Panel. I setup a system where the panelists could log into the portal and review batches of articles. From this, selected articles would be featured as "Best of Holidailies" selections.

While we wanted to highlight selected works, we wanted to keep it low-key (thus, no vainglorious "Best of Holidailies" badge for people to put on their web sites) and spread the recognition (so far 51 articles have been selected, of which only 9 people have received repeated selections). I've been pleased with the result so far, although that probably has more to do with the magnificent efforts of the panelists than my portal code.

I enjoy the Holidailies project, because it's a fairly significant web site and I learn something interesting every time I do it.