We’ve been spending the last few weeks polishing up a redesign of the estimable dooce.com. It’s been a learning experience and Heather thought it would be nice for me to write about it from a developer standpoint.
The first thing we did was migrate the MovableType database to MySQL. This has some benefits, some of which won’t be seen in this release of the site, but will allow cool stuff down the road. It does make for faster rebuilds. Given the huge amount of data that dooce.com is, this is nice.
The second thing we did was upgrade to Movable Type 3.0D. This is a developer release for a number of reasons, mostly talked about on any geek blog and as this is an 8% -58% geek blog, I’m not going to go into it too deeply. I think Six Apart was right to call it a developer release. Even still, there are some bites. You’ll have to watch how it handles your archive pages. It does seem to try and retain whatever default formatting you’ve used, even if you don’t specifically assign something in the Weblog Configuration/Archive Files area. This is good in that you won’t lose anything, but bad if you don’t pay attention or want to use the new defaults.
For example, we started a new blog and began working on the architecture (new categories, new CSS, new sidebar). The default archive structure for categories was awesome. However, when we started to migrate our code from the new blog to the old one (I’ll get to why we did this in a minute…) there were some problems as the old blog had the 2.x default category structure whereas the new blog had the 3.0D category structure. Not evil or upsetting per se, but something to be aware of.
Another 3.x migration issue to watch out for is how comments are handled. There is a _HUGE_ MTElse loop on the individual archive pages and it took me about a week of screaming at the screen before I realized I was editing the stuff in the wrong part of the loop. Scroll down and read, people. It’s nice that the loop is there and really awesome and stuff, but bit my ass pretty hard. I’m alive, so I can’t complain too loudly, other than whine a bit as a warning to others.
Perhaps the biggest issue in the redesign is that Heather is stubborn and likes to do things her way. There is nothing wrong with this. However, MovableType is designed to do a lot of the lifting for you. Heather didn’t want MovableType to do this lifting in the past, as she had a system going, and it worked pretty well for her. The problems we faced were threefold. 1) The time she has to work on the site has diminished with the birth of Leta; 2) She used index templates to show category archives, but with this launch, she’s upped the category count substantially and it was not practical to build 30 index templates; 3) She wanted to add more photos to the site, but in the past, had to change about three pages in MovableType to do so. I’ve had to work with her and explain that with a couple of changes in her workflow, the system will handle all the stuff she used to do by hand.
With such a drastic change in both understructure and workflow, the seemingly minor issues to this redesign have been challenging. MovableType has long had less than stellar category support. For example, if I want to make different categories have different templates, I’ve got to do some imaginative work using template modules and Brad Choate’s excellent Supplemental Category Tags plug-in. Textpattern handles categories much better, allowing more flexibility, but it also ads a level of complexity that needs about 6 months of dedication and neither I nor Heather have that time. There are also issues in the back end of MovableType and how it handles categories which lead to these workarounds and heavy plug-in usage. That so many plug-ins have been written around categories should say something about where MovableType 3.2 needs to be improved. I believe the methodology that I used to solve the category template issues will mean a bigger server hit, and a decrease in speed for users and for Heather whenever she rebuilds.
Why not use the dynamic page generation in MovableType 3.1?? Have you seen the instructions for that?? You have to do a lot of monkeying around and what happens to all those Google archived links in search results and links from others? Sure, we could try to generate a redirect .htaccess file, but again, pain pain pain. I think one of the biggest strengths of MovableType is that it generates a living breathing HTML page for the archives. It’s also one of the reasons that so many blogs show up so high in search results.
Now that Brad Choate is on staff at Six Apart (no disrespect to the other developers) I would hope that the category stuff gets fixed.
Finally, I think on a site as big as dooce, it is time to move to a staging server/production server environment. Trying to rebuild a site that is live is killing the server _and_ making it impossible to get more than a few hundred pages rebuilt. It is an exercise in futility and inciting a near-mouse throwing rage. Yes, I know PHP sites are faster. But we like MovableType. Wouldn’t it be cool if MovableType allowed for this feature natively? I could develop a brand new site, with any changes and once I was ready to un-stage it, click a couple of buttons and boom, live site. I think this would work nicely for entries as well, allowing me to stack up entries and then when they were ready, push them live. This would also fix a long-standing issue with the MT-Search feature that, as others have mentioned, isn’t exactly the dopest. Yes, I know we could add the Google search to the site, but it’s noisy, and a little ghetto. For a site like dooce, it’s not going to look so hot to have a sidebar crammed full of Google stuff. The ads are already painful enough.
We’re still working through some issues, and over the next few days, you should be able to see all your favorite dooce content. Much of the archives aren’t working so good, due to the issue about rebuilding on a live site. But that should be fixed tonight when I can get in and do a full rebuild during lower site usage hours.
Anyway, I hope you enjoy the new dooce. It’s very cool.