I <3 Steve McConnell*
Coding Horror
programming and human factors
by Jeff Atwood

Jul 29, 2009

Coding Horror: Movable Type Since 2004

When I started this blog, way back in the dark ages of 2004, the best of the options I had was Movable Type.

movable-type.jpg

A Perl and MySQL based blogging platform may seem like an odd choice for a Windows-centric developer like me, but I felt it was the best of the available blog solutions at the time, and clearly ahead of the .NET blogging solutions.

Sure, I have areas of expertise that I like to stick to, but my attitude has always been to put religion aside and use what works, regardless of language or platform. That's much more of a reality today than it was five years ago. Today, we have embarrassing amounts of CPU power and memory in our servers, and a plethora of good virtualization solutions. Spinning up a Linux virtual machine to solve some problem is no big deal, and we do it every day on Stack Overflow.

In retrospect, my choice of Movable Type was a fortunate one. Although I also use and appreciate WordPress, it's a bit of a CPU hog. Given the viral highs and lows of my blogging career, there's no way this modest little server could have survived the onslaught of growth with WordPress. It would have been inexorably crushed under the weight of all those pageviews.

What's Movable Type's performance secret? For the longest time -- almost 5 years -- I used the version I started with, 2.66. That version of Movable Type writes each new blog entry out to disk as a single, static HTML file. In fact, every blog entry you see here is a physical HTML file, served up by IIS just like it would serve up any other HTML file sitting in a folder. It's lightning fast, and serving up hundreds of thousands of pageviews is no sweat. The one dynamic feature of the page, comments, are handled via a postback CGI which writes the page back to disk as each new comment is added. (This is also the source of the occasional comment disk write collision, when two commenters happen to leave a comment at the same time.) Yes, it's a little primitive, but it's also very much in the spirit of KISS: why not do the simplest possible thing that could work?

This static publishing mode precludes glitzy dynamic per-page widgets, but I am a minimalist who likes his pages austere. That restriction suits me fine. The other downside is that a site-wide change requires republishing hundreds or thousands of blog entries. Over time, that can get painful. Modern versions of Movable Type offer both static and dynamic publishing modes, which can give you the best of both worlds.

Movable Type was created by Six Apart. Over the last few years, I've had the opportunity to meet Anil Dash, who is not only the chief evangelist for and first employee of Six Apart, but also an old-school blogger from way back in 1999. This is a guy who has been through the intertubes a time or two. That's why I sought out Anil's advice when we were struggling to come up with a decent name for this crazy website concept Joel Spolsky and I were working on -- and it was his excellent advice on naming that eventually guided us to the name Stack Overflow.

Anil isn't just a brilliant blogger and community evangelist, he's quite influential in his own humble way. And despite his well earned status as a lion of the Web 1.0 blogging era, he's also willing to go far, far out of his way to help a fellow blogger. Anil personally helped me drag Coding Horror from the dark ages of 2004-era Movable Type 2.66 to today's modern Movable Type 4.2x. And by that I mean he logged in himself and did the grunt work to make it happen, including following up with me personally and going through at least two rounds of my crazy demands to make everything as primitive and featureless as I need it to be.

In short, Anil's a mensch.

So, if you're considering a blogging platform, I can vouch for not only the Movable Type software, but the Six Apart team, and the community around it. In all honesty, blogging changed my life. I'm not sure that's directly attributable to me choosing Movable Type, exactly, but I can give it the highest praise I give any software I've used:

It Just Works.

[advertisement] Interested in agile? See how a world-leading software vendor is practicing agile.

Posted by Jeff Atwood    View blog reactions
« Windows 7: The Best Vista Service Pack Ever
The Paper Data Storage Option »
Comments

The static html blogging engine is an intriguing idea.

I found a Ruby blog that is doing something similar, but they have taken it a step further with a custom blogging engine they designed themselves. The blogging framework integrates with Git source control, so that there can be multiple contributors who can submit blog posts for approval. The community can also submit patches to existing blog posts (think spelling corrections and the like) that the author can choose to accept and merge in if desired.

Really cool idea for a community driven blog. Here's the link:

http://blog.rubybestpractices.com/

Mike Murray on July 30, 2009 2:02 AM

Have you ever considered Blogger.com?

Wiktor Gworek on July 30, 2009 3:06 AM

>"The one dynamic feature of the page, comments, are handled via a postback CGI which writes the page back to disk as each new comment is added. (This is also the source of the occasional comment disk write collision, when two commenters happen to leave a comment at the same time.)"

Interesting so this is what caused the error that I would occasionally get. You would think that the software could use a flag or lock on the file during the static updates to disk and then queue any conflicting updates to happen one after another.

>"In retrospect, my choice of Movable Type was a fortunate one. Although I also use and appreciate WordPress, it's a bit of a CPU hog. Given the viral highs and lows of my blogging career, there's no way this modest little server could have survived the onslaught of growth with WordPress."

While Wordpress itself wasn't a shining example of good code. It looks like there were some fundamental problems with PHP running on Windows that no one outside of Microsoft knew how to fix. PHP still sucks though :-)

http://www.itworld.com/development/73001/how-microsoft-made-php-suck-less-windows


o.s. on July 30, 2009 3:10 AM

Wait... Is this blogging about bloggin?

Joseph Alcorn on July 30, 2009 3:13 AM

... put religion aside and use what works ...
... KISS ...
... do the simplest possible thing ...
... precludes glitzy ...
... I am a minimalist ...
... austere ...
... restriction ...

Pretty much summarizes what I've learned over a few decades of development about the RIGHT WAY to do things. Gosh durn it, why aren't there more developers like you? Guess it takes getting old and crochety, like me, for some people to "get it." Don't know now whether to try to hire you, bow down and worship, or just send money.

Incidentally, I learned some useful things about servers and blogging software from this post, and the replies.

Jeff R. on July 30, 2009 3:24 AM

Although movabletype is a great blogging platform, there are other options like Joomla, Wordpress and Drupal

and honestly, choosing an open source solution due to the supporting company is an oximoron.
you want to select an open source soilution for the community surrounding it.

my blog is based on joomla and I'm quite happy with it

Blog on system engineering
http://design-to-last.com

daniel on July 30, 2009 3:55 AM

meta much?

jk. love the blog

Gabe on July 30, 2009 3:57 AM

+1 WordPress already. kthnxbye

Chris on July 30, 2009 4:22 AM

I used to be an MT evangelist myself until I got tired of all the side projects interfering with core development. I kept running into glaring issues and missing features with the product, but all they cared about was launching Vox and buying up LJ and talking about all the new hires to the Six Apart team. Meanwhile the MT users and their problems languished in the community forums. I feel like they released v3 and then coasted for a reeeeeally long time. I finally switched to Wordpress and haven't looked back.

Wizzard on July 30, 2009 4:59 AM

That's a page right out of the Jerry Pournelle playbook there dude, all 'this product is great, oh by the way they gave me special tech support because of my status as an author of a thing people read.'

Jck on July 30, 2009 5:44 AM

Wizzard is just a Wordpress shill.

There is on July 30, 2009 6:06 AM

I guess this means the CAPTCHA isn't "orange" anymore.

Daniel on July 30, 2009 6:46 AM

Don't make me pull out that e-mail Jef where I _actually_ suggest the name.....

Joseph Cooney on July 30, 2009 6:57 AM

Someone blogged about not blogging once. And then some time later blogged some good reasons why you should blog about blogging, such as how small a portion of readers would actually be bloggers. And then this person blogged some more about blogging, but providing the caveat on why you shouldn't blog about blogging. By this stage it was wearing a little thin.

After a while they just started blogging about blogging, completely ignoring their own adivce... shame because they were right to start with.

A blog should know what it is and lately I'm getting the impression that this blog doesn't know what it is. It says "CodingHorror" on the label, but when was the last time that code was discussed? We seem to be spinning aimlessly around topics of hardware, mathematics, operating systems, introspective philosophising, blogging and "spawning new processes" - none of which have any relevance to me.

I come here for discussions on coding. Any chance we can get back to that?

Philip on July 30, 2009 9:33 AM

BlogEngine.Net seems to work great so far... I don't get quite the number of page views as you though. ;)

Todd on July 30, 2009 9:38 AM

There's a ubiquitous Wordpress plugin called wp-supercache. So far it seems to be taking anything the web can throw at it: slashdot, stumbleupon, whatever.

I installed wp-supercache after I got linked by Penny Arcade once and the server collapsed under the load.

Jonathan Drain | D20 Source on July 30, 2009 11:22 AM

When I started my blog (wandercoding.com), I took the (bad) advice of someone (can't remember who) who advocated that you should roll your own HTML code for your website. It took only a couple of weeks to realize the folly of this advice, especially when it came to blogging. What almost any blogging software can do for you quite easily, rolling your own code, HTML, PHP, or whatever, makes for more of a task in writing the website as opposed to the real goal - blogging.

It's like trying to write software by not using tools made to do the job. I know there's a debate about Not Invented Here software, but sometimes, it can save you tons of work, or at the very least, let's you solve the real problem your working on, rather than fussing with the internals forever. I love my Wordpress installation, but I don't have the performance problem - yet. :-)

Wandercoder on July 30, 2009 11:45 AM

So wait, are you using Wordpress now, or are you using Moveable Type now?

I'm confused.

Andre on July 30, 2009 11:51 AM

> So wait, are you using Wordpress now, or are you using Moveable Type now?

He's using Movable Type 4.2x:
> Anil personally helped me drag Coding Horror from the dark ages of 2004-era Movable Type 2.66 to today's modern Movable Type 4.2x.

RLD on July 30, 2009 12:00 PM

"It Just Works."

This point is a little undercut by the fact that you got help from freakin' ANIL DASH to do the setup for you.

IvyMike on July 30, 2009 12:01 PM

I used MT for approximately two or three years... using 3.xx to 4.xx. But after 4.xx, the updates in plugins that I already had installed which were doing a lot of work were unfortunately not coming fast enough for my fancy. I could've reverted back, but the new features in MT were too appealing... so deciding to temporarily (maybe permanently) take a break from MT, I changed to WP since MT was all I ever knew. I love MT, but I got tired of the maintenance and simply wanted to write actual content worth reading instead of too often tampering with the code base. Truth be told, WP has a plethora of plugins for your every desire. I even made an MT sub-plugin (based on a plugin), but in WP -- I didn't have to. I've found that WP is easier to maintain and easier to simply, well, write. Albeit, at the moment, my site is down for other unrelated reasons, but maybe one of which is because I'm a crappy blogger and I just don't care at the moment... maybe I'll write more come autumn. I'm not a WP expert, but for performance I've noticed an improvement over MT... and correct me if I'm wrong, but WP also gives the option of writing to static HTML.

Cheers

Patrick on July 30, 2009 12:01 PM

A few counterpoints, for those who burnt their fingers and probably pockets (read: shallow pockets burnt deeply), are the following:

1. Blogging with new interesting content needs wide reading, lot of time and a good deal of intellectual effort.
2. You're not the guy whose blog will eventually change the way the world works. It will be a post by Jeff, Joel, Anil, Scott, Robert, Michael, or someone in that group.
3. That group of bloggers already knows the solution, the problem, the newer problems that the first attempt at that solution will create, the second generation problems, second generation solutions, third generation problems,.... you get the pictiue...
4. What they write is taken seriously and often works. what you write is scoffed at and laughed at till you break down and stop blogging. Then someone among this group picks up the blog post and quotes and adds to it in a pragmatic way, and THAT makes people work on that problem.
5. All this while they could have posted about that issue on their own. And while you were sleeping, they probably already wrote code for it too.
6. Your blog is useful only if it gets you something beneficial, tangible or otherwise. If you think blogging will change your life, it could often be in the bad sense.
7. If you're a programmer, stick to code - what you need is friends, a set of decent humans, understanding peers or coworkers. Definitely NOT blog posts.
8. If you cant get friends in the big league, that's quite OK, get friends in your own league. In the rare case that you get something really useful to write about, the comment section is right here. Leave all the contact information you want to publicise right here.
But don't overdo it, your comment can get modded out totally.
9. At one point an intelligent man realises that this whole ideas and blogs thing is just hot air. Then the wisdom of the power of working code strikes you. That then is the best job for a programmer. To write code. Of course, I always come here for inspiration and guidance.

mindbloggling on July 30, 2009 12:02 PM

Rolling your own is a great way to learn, but using an existing CMS saves you a lot of work. Wordpress might be more heavy-duty than you need but it'll save you from re-inventing the wheel.

Jonathan Drain | D20 Source on July 30, 2009 12:05 PM

IvyMike, and what does that have to do with the fact that Moveable Type works? Nothing! :)

Todd on July 30, 2009 12:08 PM

Todd, I guess he means the upgrade path doesn't "just work", but rather requires intimate knowledge of the product.

Bob on July 30, 2009 12:17 PM

Maybe Anil Dash helps everybody upgrade. That would indeed "just work". Not very scalable, but I guess every system has tradeoffs.

KJB on July 30, 2009 12:30 PM

So what's new? How is this better then the old version?

Francis on July 30, 2009 12:32 PM

Just for the record, static HTML updated by php is the strategy that 4chan uses. It also works really well.

hova on July 30, 2009 12:44 PM

A pity that you don't appear in their showcase: http://www.movabletype.com/showcase/

Cristian on July 30, 2009 12:45 PM

Throughout my start-up process, I cannot remember how many blogs I have started, mostly for SEO purposes. I've gotten so used to Wordpress now since the process of getting it primed for SEO is so methodical I cannot get away from it.

Pay4Bugs on July 30, 2009 12:48 PM

@jeff,

thanks

jake on July 30, 2009 12:51 PM

I'm upgrading everybody! Call today! :)

Actually, I do try to help as many people as I can, but our support team is fantastic so fortunately it doesn't usually end up in my amateurish hands.

More importantly: Jeff, thank you. I've said this to you personally, but it's worth repeating publicly: Sites like yours are why we make this stuff. I literally can't think of anybody on the MT team (or any of our developers at Six Apart) that hasn't me a Coding Horror link at one point or another, and being able to send SO threads to each other instead of Expert Sex Change links is like a permanent upgrade to our entire lifestyle.

I think you get to the heart of why we love what we do -- there are lots of great tools out there (WordPress among them), but Movable Type has always been really designed for people that have ideas that are big enough that you can build a reputation, or even a career, on them. Nobody's done that in our little techie world better than you, so thanks for making us look good. And yep, I'll make sure we're pimping you on our Showcase page shortly. ;)

Anil on July 30, 2009 12:55 PM

That should be used by some websites: http://www.asesoftware.com/

Edward on July 30, 2009 1:02 PM

So this blog entry counts as one of those rare instances where meta isn't murder.... ;)

Devil's Advocate on July 30, 2009 1:05 PM

Having used both WP and blogger.com, for me as a low traffic blogger, blogger.com is the best, simply because it is free. Why I would pay for hosting (which is overkill for my amount of visitors) when I'm not making any money is beyond me! :)

Jamie on July 31, 2009 2:42 AM

Your discussion of static vs dynamic publishing is interesting.

But it's important to note that there is a viable alternative. You can publish static files into rich templating or presentation system. This way you have nearly the best of both worlds -- you get great scalability and the option to do fancy dynamic things during page render.

It also means you can use MT as a back end and just push the static data files into a presentation tier built with your favorite technology.

This is what we've done over at CMSWire.com and it's worked out very well. Other CMS vendors like CrownPeak take this approach as well. It can be a great fit in certain scenarios.

Brice Dunwoodie (CMSWire.com) on July 31, 2009 4:43 AM

"Wait... Is this blogging about bloggin?", Joseph Alcorn

No, it's an advert.

Martin Wallace on July 31, 2009 5:20 AM

Hi Jeff,

Long time reader (and link sharer), I think this is the first time commenting here.

I've been using Movable Type for personal blogging since 2002. For me it was always just a good fit for the job.

Great post that perfectly reflects why I continue to think so.

Karl on July 31, 2009 7:30 AM

Actually the scalability of generating pure html does not only apply to blogging. This technique can (and should) be applied to many other systems as well.

Practicality on July 31, 2009 8:03 AM

do you notice that this is software? you have to hate it.

sunfire on July 31, 2009 10:23 AM

sunfire : no, it's only static pages...

Jérôme RADIX on July 31, 2009 10:49 AM

Who said some days ago that he hated meta-blogging ?
What is this ? :p

Lily on July 31, 2009 1:58 PM

Wow. It has been a long time since I saw a picture of a punch card. It is difficult to fathom that there was a time when computers operated exclusively based on inserting cards with holes in it.

Jay on August 1, 2009 4:01 AM

AND YOU STILL DON'T HAVE NESTED COMMENTS.

FOR THE LOVE OF GOD PLEASE ADD THIS.

-the end.

mike on August 1, 2009 6:38 AM

@jerome movable types is software, not static html...

Windows 7 is also software.

The thing with hating softwae just seems to be: Jeff comment that he hates software is a big lie. If it is software from mircosoft, from apple, or something he is using he is enthusiastic about it without seeing any drawbacks. Blind (or with enough money/time) to not care about limits.

sunfire on August 1, 2009 12:40 PM

@jerome

One example from this entry: Jeff thinks that the software just works. But he needed one of the creators to install it. That is a little bit ike mailing Steven Sinofsky and ask him to configure Windows live for your needs (irritating, he answeres on customers complains faster than the customer support)

sunfire on August 1, 2009 12:48 PM

I don't know if you noticed but your readers are drifting away from this blog.

captcha: masked patrolmen's

securityhorror on August 3, 2009 8:22 AM

I've also had great experiences with static publishing. My NIN fan site has been hit by Digg, StumbleUpon, Reddit, Slashdot, sometimes on the same day, and didn't even blink because it's just serving up static content on the front page. I started using a freely downloadable "NewsPublisher" Perl script that stores its' data in flatfiles, haha. I've since all but completely rewritten it to implement MySQL and some more modern publishing options (RSS/Atom, XHTML-strict output, etc.)

To this date I haven't found a CMS that's more suited to my site, but I suppose that's because my site's so tightly wound around my current CMS that it would be kind of a drastic change in the format, one that would render the page as a bit more generic.

Either way, I'm proud to be generating static content from a system that runs on flatfiles, in the year 2009. Hahaha.

leviathant on August 3, 2009 11:37 AM

There's a static tool in the wiki world called 'ikiwiki' which seems to have filled a niche that the dynamic ones like mediawiki couldn't wedge into, for similar reasons.

Anonymous on August 4, 2009 6:19 AM

nice article thanks for sharing, wish you continued success

atatürk havalimanı araç on August 6, 2009 6:01 AM

This is a comment!

Me on August 6, 2009 11:36 AM

you don't see many security advisories for vulnerabilities in MT and this observation was a major factor in my decision to go with MT. plus, upgrading MT is so trivial that you have no excuse to wait until 4.2 before upgrading from 2.66! MT is on version 4.3 now, by the way.

jah on August 7, 2009 1:21 PM

Wait a sec. Movable Type is the best because you needed help from the developer to do an upgrade?

John on August 10, 2009 3:46 AM

I'm beginning to feel like WP is spiralling out of control. Having upgraded to 2.8 when it came out and having to constantly upgrade and patch security holes that keep popping up is getting on my nerves.

Mike on August 12, 2009 5:13 AM

Some Movable Type sign in systems apparently don't work with Firefox, so if you start making people sign in you might want to be careful.

William B Swift on August 24, 2009 3:51 AM

I have no doubt MT is a great platform. Unfortunately, for the novice it is quite difficult to configure anything outside the default. Documentation exists, but is obscure for beginners. Service contracts are available but are very restrictive - limited to just how to use the default set up. That frustration got me over to WP and Joomla, where I spent many productive hours. So, for all those who use MT, my hat is off to you. You know a lot more than I do. Someday I may qualify for MT.

DonS on August 27, 2009 3:57 AM

Abercrombie & Fitch on Sale, Hoodies, Jeans, T-Shirts, Pants, Polos abercrombie and fitch abercrombie fitch abercrombie cheap abercrombie fitch Abercrombie Men Tee abercrombie womens polos Abercrombie & Fitch Men, women, and children's clothing

abercrombie and fitch on August 28, 2009 2:49 AM

Nice article!

I made the decision to use MT after reading your blog and I'm glad I did. I'm also a former Perl programmer so that contributed to my decision. I'm keeping a close eye on the Melody project, which is based on MT and managed by a former Six Apart employee. They seem to have some good things in the works. http://www.openmelody.org/

Garett on August 31, 2009 11:35 AM

Nice article!

I made the decision to use MT after reading your blog and I'm glad I did. I'm also a former Perl programmer so that contributed to my decision. I'm keeping a close eye on the Melody project, which is based on MT and managed by a former Six Apart employee. They seem to have some good things in the works. http://www.openmelody.org/

Garett on August 31, 2009 11:36 AM

Nice article!

I made the decision to use MT after reading your blog and I'm glad I did. I'm also a former Perl programmer so that contributed to my decision. I'm keeping a close eye on the Melody project, which is based on MT and managed by a former Six Apart employee. They seem to have some good things in the works.

Garett on August 31, 2009 11:38 AM

An interesting fork of MT is OpenMelody, due for release soon. http://openmelody.org/

It's also interesting to note how we're starting to see a resurgence of blogging systems that generate HTML. There's a couple on Github (that I can't remember) written in Ruby and Python.

and who could forget good, ol http://blosxom.sf.net ;)

Aaron T. on February 6, 2010 11:22 PM

Joseph Alcorn, this is called blogging about the blogging engine. ;-)

In other scenarios, it is called word-of-mouth advertising.

Aaron Seet on February 6, 2010 11:22 PM

Moveable Type seems like the best solution based on how you've framed the question: you want to run a non-Microsoft blog platform, using a non-Microsoft stack, on a Microsoft server. Change any of those three and I think you've got better options.

I can't argue with success, but it's definitely a quirky setup, and it does strain under load when the comment input outpaces the HTML writes.

Jon Galloway on February 6, 2010 11:22 PM

I am enjoying signing up for typepad. It's so ... clean. I like the clean minimalist look. Thanks for the ad post. :P

Samson Felshman on March 3, 2010 2:15 PM

I'd just like to note... a year and a half late... that Moveable Type's "secret" was deployed by Philip Greenspun when he made photo.net in 1994, and then wrote a book about it in 1997... with AOLServer and TCL, no less.
http://philip.greenspun.com/panda/

Josh Volchko on June 9, 2010 7:03 AM

Verify your Comment

Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been posted. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

Post a comment

Content (c) 2009 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved.