September 11, 2007
I rounded up our developers and got a list of blogs that we all enjoy reading. I’ve included them below and also on the right sidebar under the “Blogs We Like” heading.
Ajaxian - http://ajaxian.com/
Joel on Software - http://www.joelonsoftware.com/
John Cook’s Venture Blog - http://blog.seattlepi.nwsource.com/venture/
lifehacker - http://lifehacker.com/
MS Virtual Earth Blog - http://blogs.msdn.com/virtualearth/default.aspx
Slashdot - http://slashdot.org/
TechCrunch - http://www.techcrunch.com/
Like a blog that’s not on this list? Write a comment!
August 30, 2007
As some of you may have noticed, we made the switch from Movable Type (v3.33) to WordPress MU on July 9th. We thought it would be a great idea to discuss why we made the switch as well as the technical requirements of making the switch. We’re currently serving seven blogs, containing 2,034 posts by 47 authors, with 1,924 comments. The switch took roughly 60 work hours including research, and the effort was led by me, an intern, with our product and ops teams supervising.
The most compelling reason for us to switch was WordPress’s usability — managing WordPress is strait up easier from a source code, data, and content management perspective (authoring, user management, etc). There were many specific reasons for the switch as well. First, WordPress, with all of its plugins, can offer an unbelievable amount of functionality. For example, with WordPress we could offer features such as author profiles and archive paging functionality. Our previous installation of Movable Type was also somewhat chaotic, making maintenance and expansion grueling. Find below a feature comparison between Movable Type and WordPress MU.
Keep in mind that the list of features below does not perfectly represent each platform’s feature set. The list instead contains features that we at Redfin wanted for our blog.

Though this chart suggests that WordPress is the better choice for us, we had to consider the side effects of switching, the largest side effect being older permalinks potentially being broken. Other side effects were a potential loss of data (posts, comments, authors), a requirement for more blogger training, and having to familiarize ourselves with a new platform. Once we decided that we were willing to deal with these side effects, we began the migration process.

Both Movable Type and WordPress MU offer importing and exporting functionality, which made the task of getting our data into WordPress very simple. The WordPress import function also requires that all authors be in the system before the import begins, so we added our authors before performing the import. The reason for this is because the WordPress import process has a step that forces the importer to make author correlations between the imported data and the WordPress author list. The author correlation step provides a list of authors that were found in the imported data and requests that the importer decide how these authors correlate to the authors in WordPress. Unfortunately, this feature was broken in our installation of WordPress, so we were forced to write a custom script to correct the WordPress MU database by using the old Movable Type database.
With our data in place, the next largest task was to ensure that our old permalinks be properly redirected. To do this, we wrote a script that used the Movable Type database to produce a large set of Apache rewrite rules that redirect old permalink requests. To limit the number of required rewrite rules, we configured our WordPress permalink structure to match Movable Type’s (/year/month/post_title_etc.html). This also required an additional WordPress plugin that forces permalinks to use underscores instead of the default hyphens.

The last hurdle we ran into during this migration process was achieving our desired link structure. WordPress MU allows blogs to either appear as sub domains (new_blog.domain.com) or folders (domain.com/new_blog). We wanted our blogs to be accessible by blog.redfin.com, sfbay.redfin.com/blog, and seattle.redfin.com/blog, etc, and after lots of fiddling with WordPress, we concluded that we could not use the sub domain option. To get around this, we configured WordPress to use folders (blog.redfin.com/sfbay, blog.redfin.com/seattle, etc). We then configured a virtual host for each blog, sfbay.redfin.com, seattle.redfin.com, etc, to reverse proxy the /blog folder of these virtual hosts to the blog.redfin.com/sfbay, blog.redfin.com/seattle, etc folders. The reverse proxy article showed us the road, but the path we took was slightly different. Instead of using ProxyPass and ProxyPassReverse, we used the [P] option in a RewriteRule. This allowed us to apply other rewrite rules to the /blog folder, where the ProxyPass and ProxyPassReverse option did not.
We’re very happy with WordPress MU. In fact, we’re happier with WordPress MU than we were with Movable Type. The migration process was not easy, but it was worth the benefits of switching to WordPress. Feel free to post some comments if you’d like more specifics about the switch.