Thanks, Six Apart

As might have been implied by my last post detailing an evening’s work tweaking templates and installing plugins, I’ve decided to stay with Movable Type for my weblog. There are a few reasons for this, but it boils down primarily to two things: familiarity and loyalty.

This isn’t at all a slight against WordPress (which I was actively poking at), Expression Engine, or any other weblogging system, for that matter. I’m actually quite impressed with WordPress, and if I were starting a project from the ground up, I’d definitely include it in the list of strong contenders to run the back end. For this site, though, I decided that it was better to stick with what I knew and spend some time tweaking things than to jump ship entirely.

Right now I have a little over three years worth of experience with Movable Type (I switched over to MT from a similar but far simpler package called NewsPro on Dec. 21, 2001). While I certainly wouldn’t rate myself terribly high in the pantheon of expert MT users out there, after this much time fiddling and tweaking, I don’t think I’m any slouch, either. While I’m sure I could learn the ins and outs of a new system easily enough, in this case I’d rather use and build upon the knowledge I have rather than starting over from scratch.

Besides, in the time I’ve been using MT, the software itself has worked quite well for me. My battles over the past weeks have been with the comment spammers and their abuse of the limited resources of my server, not MT. Moving to another system might have worked temporarily, but it would only be a matter of time (and likely not very much time, at that) before the attacks started hitting that system — and I’m still not convinced that a PHP solution is the best choice for my webserver. Better for me to make a few concessions (disabling comments after 30 days, for instance) than put my server through the effort of serving up an entirely dynamically-generated website.

There’s one more big reason why I wanted to stay with MT, though — and that’s Six Apart.

As I mentioned above, I started using MT back in its version 1.something days, back when there was no Six Apart, just Ben and Mena in their apartment. Back then, I was one of many people occasionally popping up on the Movable Type Support Forums, and as often as not, it would be either Ben or Mena personally answering the pleas for help when one stumbling block or another was found. It’s things like that that add a more personal touch to software — and one of the reasons I’m fond of shareware programs like NetNewsWire, ecto, or many other programs where the developers are still personally involved with their user base — there’s the feeling of a real, breathing person behind the software, rather than a faceless corporation.

Obviously, as Six Apart has grown, Ben and Mena aren’t always as personally involved with their user base as they used to be. However, in my experience, Six Apart has yet to lose that personal, “real person” feeling, and that’s in no small part due to the excellent people they’ve been hiring, many of whom have been loyal users of MT for longer than I have.

When I got Slashdotted after news of my departure from Microsoft broke across the ‘net, I was using Six Apart’s TypePad service. As it turns out, I had the unenviable position of being their first Slashdotting, and those next few days became something of an experience (for both myself and Six Apart, I believe) in how to handle such an event. I’d already spent much of the day waging a losing battle with my inbox as comments, TrackBack pings, and e-mail missives deluged me, when suddenly iChat popped up with a friendly hello from Mena herself. I was a bit taken aback — it’s not every day I get an IM from the President of a software company, after all — but again, it’s things like that that impress me. Rather than assigning my case to one of the tech support crew, she and I spent the next few minutes working out ways for me to tweak the code on my pages to ease the load on the TypePad servers.

A few weeks ago, I realized that due to my own absentmindedness, I’d accidentally paid for a year of TypePad that I wasn’t going to be using, as I’d moved back onto my own server. It was a little frustrating, but I had noone to blame but myself, and said as much when I grumbled about it here. Imagine my surprise, then, when I got an e-mail from Brad Choate, who’d come across my post, pointed it out to someone at Six Apart, and had made arrangements with Brenna to refund me that yearly fee. I hadn’t asked for this, and there was absolutely no reason for Six Apart to do this for me — but they decided that it would be a nice thing to do.

Then, just a few days ago, Anil Dash noticed that with my battles against the spammers I’d started looking at WordPress, and he sent me a friendly little note asking if there was anything they could do to help me with my MT installation. I let him know that my limitations weren’t with MT, but with my webserver (and was barely able to keep from mentioning how nice it would be to find an Xserve PowerMac Mac mini on my doorstep one day — it wouldn’t have been at all serious, but I don’t know if Anil stops by my page often enough to catch my sense of humor), and thanked him for his note. Again, this is the kind of thing that impresses me — sure, on the one hand, he’s “just another blogger”, but he’s also the Vice President of the Six Apart Professional Network.

What it boils down to is that over the years, time and time again, I’ve gotten incredibly friendly and personal service from the crew at Six Apart. I can’t think of a better way to build and maintain customer loyalty than that.

So, to Ben, Mena, Brad, Brenna, Anil, and all the rest of the crew at Six Apart — thanks, folks. Keep on rockin’. :)

What about [some other blogging tool]?

After reading my rant about comment spammers, Joel asked me if I’d thought about switching over to another weblogging system. Here’s a (somewhat expanded) copy of what I sent back.

I’ve enjoyed reading your site (and its comments) ever since TypePad… and I bring this up as an honest suggestion. Why not try out WordPress? It’s simple and while it’s not immune to comment spam there are a wealth of plug-ins and options that filter or destroy them quite nicely.

Switching systems is definitely one of the things on the “possible solutions” list (WordPress and ExpressionEngine being the two top contenders). One of the things that’s been keeping me from exploring that is a distinct lack of redirect-fu when it comes to making sure I don’t break my old permalinks. I’ve received one offer of possible assistance with that, though, so it may be less of a hassle than it’s looked in the past. In the best of all possible worlds I’d be able to keep my current permalink scheme, but I’m not sure if that’s possible with the other systems, so if I have to, I’d settle for working redirects.

Part of what keeps me on Movable Type, though, is simple customer loyalty and experience. I’ve been on MT/TypePad for years now, and it’s what I’m most familiar with. Plus, they’ve been very good to me — they even just refunded me the $120 I’d accidentally paid for a year of TypePad that I wouldn’t be using, purely out of the goodness of their heart (I didn’t even ask — they saw my post grumbling about my own absentmindedness and made the offer).

I’m also unsure about how much moving to a PHP-based system (as both WP and EE are) would impact my server. MT’s Perl codebase has high overhead when it’s working on something, but then very low overhead when it’s simply serving static pages. Thanks to that, until the spam attacks started getting this bad, it played very nicely on my system. Since PHP has to process every page as it goes out, that’s more overall processing, and the question becomes whether PHP is resource-friendly enough on my box to be worth the switch. I’d used MT’s new PHP integration to dynamically generate pages for a while (before I decided that I wanted to integrate plugins that didn’t play nicely with the PHP code), and there was a noticeable lag when first requesting a page. More info on this aspect from any current WP or EE users (or even developers) would certainly be appreciated.

No matter what, though, I’m not going to be up and disappearing. I’m frustrated and annoyed by the whole situation (though not as much as I was yesterday), sure…but I’m not that easy to shut up, either. ;)

Oh, one other thing: if I do move to another system, I want to be able to use tags instead of categories. I know that there’s a plugin for this for Expression Engine (John‘s using it), and it appears that there is a hack for WordPress also (though that’s from a few months ago). Something else for me to investigate while I’m deciding which direction to head.

Update: I’ve had one vote against going to a dynamic system such as WP or EE. Phil (who I host) has both a WP and an MT weblog set up on my server. To compare the two, click these links and compare how long they take to load: MT (serving static pages) and WP (serving dynamic pages). It’s a noticeable difference, the MT site pops right up, while you can watch the WP site build the page. Off of that example, at least, I’m thinking sticking with MT and static pages is a good idea.

Update: Whee — I’m still getting comments, they’re just “old-school” e-mail comments. :) This is good. Both indieb0i and Ryan (and Gregor) have let me know about the Staticize plugin for WordPress, which “is a highly advanced caching engine that dynamically and automatically caches pages on your site that need to be cached, when they need to be cached.” Essentially, only the parts of the page that really need to be dynamically generated are, and the rest of the page is static (at least, that’s how I’m reading it). Nice, and puts WP back in the possibilities list. Thanks!

I hate it when I’m stupid

A few months back, after having been a happy user of Six Apart‘s TypePad service for about a year and a half, I decided that I wanted to go back to having the finer level of control and options that Movable Type would offer, and moved my weblog back onto my own server. I made sure to make the move a couple months before my TypePad subscription ended, so that I would have time to move all my files over and off of their servers before I got locked out of my account.

Today I got a comment notification from my TypePad site. This was a bit surprising, as my account should have died in December. When I bounced over to the TypePad site, though, I was able to log in without a problem. Starting to wonder if I’d been stupid, I checked the Account status page.

Oh, dammit.

Sure enough, I’d made sure to save my credit card information and turn on auto-renewal at some point, and TypePad had very obligingly signed me up for another year of service in December. Me being my usual brilliant self with finances had never noticed this (in itself actually not a bad thing, though — I’m still far below where I’d like to be, but if I can take a $120 hit to my bank account without it causing major issues, things are definitely improving). I checked the TypePad FAQ, and sure enough, no refunds if you’ve paid in advance. Ah, well, that was what I expected anyway.

So now I’ve got a TypePad account that I’m not using that’s all paid up and useable until next December. What in the world do I do with that? I’ve discovered over time that I don’t do well trying to keep up with posting on multiple weblogs, so starting a second weblog just doesn’t seem like a realistic option. I don’t want to move back to TypePad — not only would that be a fairly major pain, but I don’t want to lose some of the extras I have with Movable Type that TypePad doesn’t offer. I use [Flickr][5] for my photos now, so a photoblog isn’t really necessary.

[5]: http://www.flickr.com/photos/djwudi/ Flickr: Photos from djwudi”

Prairie suggested I try selling it on Ebay, but there’s hassles with that. While I could probably delete most of my personal information, the URL for the site is djwudi.typepad.com, and I don’t want to hand the ‘djwudi’ name off to someone else — until I actually started using my full name regularly, ‘djwudi’ was my normal online ID, and I still use it in [quite a few places][7].

[7]: http://www.google.com/search?q=djwudi&ie=UTF-8&oe=UTF-8 Google for ‘djwudi'”

I guess I’ll just keep it around in case something really strikes my fancy and seems like a realistic project. No point in canceling it, as long as it’s paid up through the year, at least.

rel=“nofollow” : Massive weblog anti-spam initiative

Wow. Straight from Jay Allen:

Six Apart has announced in co-operation with Google, Yahoo, MSN Search and other blog vendors a massive joint anti-spam initiative based on the HTML link type rel="nofollow".

The initiative is based upon the idea of taking away the value of user-submitted links in determining search rankings. By placing rel="nofollow" into the hyperlink tags of user-submitted feedback, search engines will ignore those links for the purposes of ranking (e.g. PageRank) and will not follow them when spidering a site.

[…]

It is important to note that while the links will no longer count for PageRank (and other search engines’ algorithms), the content of user-submitted data will still be indexed along with the rest of the contents of the page. Forget all of those silly ideas of hiding your comments from the GoogleBot. Heck, the comments in most blogs are more interesting that the posts themselves. Why would you want to do that to the web?

Now, the astute will point out that because links in comments/TrackBacks are ignored by the search bots, the PageRank of bloggers all around the blooog-o-sphere will suffer because hundreds of thousands of comments linking back to their own sites will no longer count in the rankings. And that is most likely true. But that inflated PageRank, which was a problem created by the search engines themselves, is the rotting flesh that the maggots sought out in the first place. If you ask me, I say fair trade.

In the end, of course, this isn’t the end of weblog spam. But because it completely takes away the incentive for the type of spamming we’re seeing today in the weblog world, you will probably see steady decline as many spammers find greener pastures elsewhere. That decline combined with better tools should help to make this a non-issue in the future. Every little step counts, some count more than others, and history will be the judge of all.

Very cool. Also very similar to a technique I was using a couple years back, though that was geared to blocking off areas of the site to ignore rather than affecting individual links. Either way, though, it’s a big step forward. I’m especially heartened to see the list of competing companies and weblogging systems that are participating in this.

Looking for a little assistance

Okay, I’m hoping someone out there might be able to give me a hand here.

I’m working on moving Eclecticism from TypePad over to my own server. I’ve got 95% of the site framework finished (i.e., the design and the slight tweaking to account for differences between TypePad and MovableType, enabling TypeKey registration, and so on), but I’ve got one little thing that’s causing me issues.

Here, I keep my linklog in the sidebar as a separate weblog, using an SSI command to insert the last fifteen posts of the linklog into my pages. Quick, easy, and very simple to do — and I’m having a bear of a time getting it working on my server.

Here’s what I’m dealing with…

First consideration: I don’t want to break any of the links to the existing pages when the site moves to my server. Because of this, I don’t want to change the extension on my pages to .php or .shtml, so the SSI needs to work within a standard .html page.

Second consideration: My current intent is to take advantage of MT3.1’s dynamic rendering ability, so that only the index pages of the site will be static files on the webserver, all archive pages will be dynamically generated.

Now, one can tell Apache to process every .html page as an .shtml page, but that tends to induce a performance hit as Apache then has to actively look at every single page as it sends it out, rather than just pumping static pages out the pipe and only having to fiddle with dynamic pages. So it’s an option, but one I’ve so far been avoiding.

Apache recommends using the XBitHack to get around this, so that any file sent out that has the ‘executable’ bit set will be treated as an .shtml file, regardless of extension. However, as I want to use MT’s dynamic abilities, there won’t actually be files to set the executable bit (and if I turn off MT’s dynamic rendering, I have no idea if I can tell MT to set the executable bit on the files it generates).

If my pages had a .php extension, I could use a simple PHP include command. However, in order to preserve any and all existing links to my site, I need to keep the .html extention. Now, somewhere in the back of my head I seem to remember reading that there may be some way to include PHP commands within MT templates, now that MT is more PHP friendly (and uses PHP for the dynamic rendering) — if this is true, than it could be an easy solution. However, so far I’ve yet been able to track down any information on whether this is actually the case, or if I was just hallucinating somewhere along the line. So for the moment, I’m going with the assumption that this isn’t an option.

Creating a JavaScript include seemed like it would be an easy solution — have the linklog create an ‘export.js’ file that uses document.write('whatever'); commands, then call the script with JavaScript (using the same basic technique that I use to add things like my Technorati badge, my blogrolls, my Flickr badge, and so on). However, for some reason, that refused to work — nothing ever appeared (and, because of the way JavaScript works, I couldn’t even look at the source for the rendered page to see if it was calling the JavaScript file correctly, as no matter what the browser displays, the source just displays the script call link). I’m not at all sure why this isn’t behaving.

I even poked around at some of the plugins available at the MT Plugins Directory. At first I didn’t think that they would be an option, as they wouldn’t update every time I added something to the linklog, and the list of links on my main page would only update when that page was rebuilt. Some of the multiple blogs plugins looked promising — I even installed MultiBlog, as it includes a way for an update to one weblog to force a rebuild of a different weblog (i.e., adding a link to the linklog would force a rebuild of the Eclecticism blog, keeping the list of links current), but that won’t work either — firstly, it only rebuilds the indexes (so the linklogs on archive pages would only be updated when their particular page rebuilt), and secondly, it doesn’t play nice with MT3’s dynamic rendering (all dynamically rendered pages returned errors — this makes sense to me, though I’ll be buggered if I can actually concisely explain why, so just trust me on that).

So at this point, I’m stuck — every single approach I’ve looked at for getting my linklog working under the new installation has crapped out.

Anybody have some ideas or pointers for me to look into? I’d really appreciate it.

If only I had a bit more under my belt

Anil’s post about moving from New York to the Bay area for Six Apart prompted me to go take a curious look at the Six Apart jobs listings.

As much as I enjoy being something of a “jack-of-all-trades” in my computer experience — lots of experience across a wide range of fields — the downside is a lack of comprehensive knowledge in nearly any field. It’s a shame, too, because I think I’m about 80% qualified for a job at Six Apart.

Web Designer/Developer

Terms: Salaried Employee with benefits (Medical, Vision, Dental and Vacation)
Hours: Full Time
Onsite: Yes, required. (San Mateo, CA)
Reports to: Lead Designer

Description:
Six Apart (http://www.sixapart.com/), the company behind the Movable Type and TypePad weblogging systems/services, is growing and we’re looking for a Web Designer/Developer with a combination of strong HTML and CSS abilities and graphic design skills. You will be asked to design and implement elements into existing web applications and websites while maintaining existing UI branding.

The ideal candidate will be hardworking, with a willingness to learn and understands the importance of user experience and brand consistency.

An online portfolio of work is required for consideration.

Whoops, there’s one problem — I don’t exactly have an online portfolio. Only two of my current four stylesheets are mine (and one is really no stylesheet), and my only other “live” design work is the remnants of an old design on my DJ Wüdi propaganda page and a circa-1995 frames-based site for Gig’s Music Theatre left online as a memorial.

What You’ll Be Doing:

  • Design and implement elements into existing web applications and websites while maintaining existing UI branding
  • Work with other members of the Six Apart team to develop solutions to a variety of design-related projects
  • Work with the Six Apart team to help evolve Six Apart’s weblogging products based on user experience and market demands

I think I’m good on all of those. I don’t have any “official” design experience, really, but it’s something I’ve tinkered with from time to time in everything from my websites to a few custom FileMaker Pro databases at my old print shop in Anchorage to redesigning an internal Xerox/Microsoft website for the MSCopy printshop (which, unfortunately, had its plug pulled by the Powers That Be when they decided to move to a .NET based solution rather than a Java based solution), and I’ve generally received good remarks on how things end up being put together.

Requirements:

  • Strong knowledge of basic design principles: page layout, typography, color theory as it applies to the web

Two out of three I think I’m okay on: page layout (dating back to my days as Layout Editor for my High School yearbook) and typography (again, no real training, but I think I’ve got a decent feel for it — though at the same time, I’m sure I could learn a lot). Color theory, though…as is evidenced by my last few site designs, to paraphrase Henry Ford, I’ll do any color you like, so long as it’s grey. ;)

  • Expert-level experience in coding HTML and CSS is required

Hmm. I’d rate myself as extremely good, possibly even approaching expert with my HTML skills. CSS, though, I’m still very much learning, and it would be foolish for me to try to pass myself off as an expert.

  • Mastery and understanding of Web standards a requirement
  • Proven design skills for developing web interfaces with a focus on user experience

The first one, I can pretty confidently say I’m solid on. The design skills…as I mentioned above, I’m untrained, but have generally received compliments.

  • Thorough knowledge of Photoshop, Illustrator, Powerpoint

I’ve been dabbling in Photoshop for years, but that’s it. Illustrator I can muddle my way through simple stuff, but bezier curves have always confused me. PowerPoint I had to fight with when I was working at MSCopy, and was never very fond of it. With all three, though, I’m pretty confident that I could dramatically increase my skill level if I was using them on a regular basis — I just wouldn’t be coming in with the highest level of expertise.

  • Excellent organizational and communication skills, works well with a team
  • Independent problem solving skills; flexibility to meet tight deadlines
  • The ideal candidate will possess excellent attention to detail and a positive attitude and strong interpersonal skills

I have no doubts about my abilities here. Over a decade of customer service in high-volume, quick-turnaround print shops requires all of those points, and I’ve always gotten consistently good remarks during my personnel reviews. At least there’s something I can be confident about! ;)

Desired Skills:

  • Experience in JavaScript and DHTML a plus
  • Knowledge of Flash is a plus
  • Working knowledge of CVS a plus
  • Familiarity with weblogs a plus

Ouch. Of those four, the only one I can rightfully claim is the last one. The first three — sorry, but those are just not in my skill set. As with my comments above regarding Photoshop, Illustrator, and PowerPoint, I’m fairly confident that given the opportunity, I could come up to speed fairly quickly, but I’d definitely be coming in on the ground level, if that.

Contact Information:

Please apply with cover letter (plain text) and résumé to jobs@sixapart.com.

Please include a resume and link to online portfolio and/or recent work. If providing list of sites that you have worked on, you must include an explanation about your role on that project. Online portfolios are preferred.

Please also include salary requirements.

Much as I’d love to apply, I’m afraid that my limitations — which I try to be aware of and realistic about, without exaggerating them to the point of talking myself out of good opportunities — are enough of a hindrance that I’d easily fall by the wayside to other, more experienced applicants.

A shame, too. While I was also swept up in the recent licensing controversy, I’ve been using either MovableType or TypePad for two and a half years now (since Dec. 21st, 2003, in fact), have no intentions of leaving TypePad anytime soon, and have generally liked what I’ve seen of the folks at Six Apart. Heck, they even put up with me triggering TypePad’s first Slashdotting! From everything I’ve seen, the chance to work with the Six Apart crew could be quite enjoyable, certainly a lot more so than my current job, and quite possibly well worth uprooting myself and moving down the West Coast a bit to the Bay area.

Ah, well. For now, I suppose I’ll just keep tinkering around, and see if I can’t increase the sphere of my “jack-of-all-trades” knowledge to include some more of the skills listed above that I’m lacking. Maybe they’ll still be hiring in a year or so…

TypePad IDs are TypeKey IDs!

Has this information been made public yet?

Mark Pilgrim‘s b-links pointed to this post that uses Six Apart‘s new TypeKey comment registration system. Even before reading the post itself, I noticed the “sign in” link for TypeKey, and since I’m curious about how it is going to function, I figured I’d see if I could set up an account.

I hit the sign in link, and then went to the registration page. When I put in my usual login name, though, I was told that that ID was already in use. Since I hadn’t signed up for TypeKey previously, this came as something as a surprise to me.

Suddenly curious, I went back to the sign in page and tried logging in using my TypePad login — and what do you know, it worked! Nifty — apparently, anyone who uses TypePad to run their weblog auto-magically has a TypeKey login.

(Moments later…) Aha — apparently I wasn’t the first person to discover this: Michel Vuijlsteke pointed this out in the comment thread. Damn, and here I thought I was getting a scoop….

(A few more moments later…) Argh — David Ely beat me to it too. ;)

One downside I’m seeing right away: when I leave a TypeKey-authenticated comment, my name shows as “djwudi” rather than as “Michael Hanscom”, and I can’t seem to find a way to change that. Hmmmm….

So now the question becomes, when do TypePad users get to start playing with TypeKey on our weblogs?

Ecto for Windows

A few months ago Alex Hung, one of the regulars in the TypePad User Group, announced that he was working on a Windows-based application for posting to TypePad and MovableType-based weblogs that he was calling TypeWriter. Not being a Windows user I didn’t have a lot of use for this, but I watched his progress as he posted updates on his project in the forums.

Earlier this week, Alex, Adriaan Tijsseling, and Joi Ito jointly announced that they have joined forces, and TypeWriter has now become Ecto for Windows.

Congrats to all involved!

(via Boing Boing)

Issue with my comments-only feed

I have no idea if anyone other than myself is currently subscribing to my ‘comments only’ RSS feed, but I’ve noticed an odd issue with it that I haven’t been able to troubleshoot yet. I’ve asked for help on the TypePad User Group, but I wanted to mention it here too, in case anyone else has been noticing this or might be able to point out what I’m doing wrong.

What I’ve been finding is that each item in my comment-only feed is being given the date of the original post that the comment is appended to, rather than the date that the comment was added to my site. For instance, a comment added today to a post from August shows up in my newsreader with the August date instead of today’s.

Here’s the code I’m using for each item in the RSS feed template (the full template code can be found in this post from last week):

<MTComments lastn="20">
<MTCommentEntry> 
<item> 
<title><$MTEntryTitle remove_html="1" encode_xml="1"$></title> 
<link><$MTEntryPermalink encode_xml="1"$>#c<$MTCommentID$></link> 
<description><$MTCommentBody remove_html="1" encode_xml="1"$></description> 
<guid isPermaLink="false"><$MTCommentID$>@<$MTBlogURL$></guid> 
<content:encoded><![CDATA[<MTCommentAuthorLink show_email="0"> on 
<MTCommentDate format="%b %e, %Y %l:%M %p">: <$MTCommentBody$>]]></content:encoded> 
<dc:date><$MTCommentDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></dc:date> 
</item>
</MTCommentEntry>
</MTComments>

Now, it all looks right to me, and the same basic code seems to be working in all the rest of my templates (for instance, in the ‘full posts plus comments’ RSS feed, each comment begins with a header that lists the correct date). For some reason, though, it’s not working here.

Any ideas?

Update: The issue has been fixed. Turns out that you can’t use an <MTCommentDate> tag inside an <MTCommentEntry> container (much thanks to Jamie Jamison for pointing me to the explanation).

The solution was fairly easy (and the code in my ‘how-to’ post has been updated): I just removed the date display from the body of the RSS item, and moved the closing <MTCommentEntry> tag up a couple lines. Here’s the new version of the above code:

<MTComments lastn="20">
<item> 
<MTCommentEntry> 
<title><$MTEntryTitle remove_html="1" encode_xml="1"$></title> 
<link><$MTEntryPermalink encode_xml="1"$>#c<$MTCommentID$></link> 
<description><$MTCommentBody remove_html="1" encode_xml="1"$></description> 
<guid isPermaLink="false"><$MTCommentID$>@<$MTBlogURL$></guid> 
<content:encoded><![CDATA[<MTCommentAuthorLink show_email="0">: <$MTCommentBody$>]]></content:encoded>
</MTCommentEntry>
<dc:date><$MTCommentDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></dc:date> 
</item>
</MTComments>

RSS Templates for TypePad Pro/MovableType

I just had someone ask how I was able to create the four RSS feeds for my site. Here’s a quick rundown, along with the templates themselves, should anyone else want to do the same thing. All the templates are RSS 2.0, and have been checked with the RSS Feed Validator.

TypePad users will need a Pro account, and will also need to be using an Advanced Template set, as you’ll need to create a new template for each RSS feed you want to add. I give each template a name that’s fairly indicative of which feed it is for, and I make sure that the output file is also named similarly.

Here are the templates I use:

####Default feed: Full text, no comments####

Template Name: RSS 2.0 Full
Output File: index.rdf

<?xml version="1.0" encoding="iso-8859-1"?> <rss version="2.0"      xmlns:dc="http://purl.org/dc/elements/1.1/"     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"     xmlns:admin="http://webns.net/mvcb/"     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"     xmlns:content="http://purl.org/rss/1.0/modules/content/"> 

<channel> 
<title><$MTBlogName remove_html="1" encode_xml="1"$></title> 
<link><$MTBlogURL$></link> 
<description><$MTBlogDescription remove_html="1" encode_xml="1"$></description> 
<dc:language>en-us</dc:language> 
<dc:creator><MTEntries lastn="1"><$MTEntryAuthorEmail$></MTEntries></dc:creator> 
<dc:rights>Copyright <$MTDate format="%Y"></dc:rights> 
<dc:date><MTEntries lastn="1"><$MTEntryDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></MTEntries></dc:date> 
<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=<$MTVersion$>" /> 
<admin:errorReportsTo rdf:resource="mailto:<MTEntries lastn="1"><$MTEntryAuthorEmail$></MTEntries>"/> 
<sy:updatePeriod>hourly</sy:updatePeriod> 
<sy:updateFrequency>1</sy:updateFrequency> 
<sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase> 

<MTEntries lastn="15"> 
<item> 
<title><$MTEntryTitle remove_html="1" encode_xml="1"$></title> 
<link><$MTEntryLink encode_xml="1"$></link> 
<description><$MTEntryExcerpt remove_html="1" encode_xml="1"$></description> 
<guid isPermaLink="false"><$MTEntryID$>@<$MTBlogURL$></guid> 
<content:encoded><![CDATA[<$MTEntryBody$><MTEntryIfExtended><p><a href="<$MTEntryLink$>" title="Continue Reading: <$MTEntryTitle$>">Continue reading <$MTEntryTitle$>...</a></p></MTEntryIfExtended>]]></content:encoded> 
<dc:subject><MTEntryCategories glue=" | "><$MTCategoryLabel remove_html="1" encode_xml="1"$></MTEntryCategories></dc:subject> 
<dc:date><$MTEntryDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></dc:date> 
</item> 
</MTEntries> 

</channel> 
</rss> 

####Enhanced Feed: Full posts with comments####

Template Name: RSS 2.0 full plus comments
Output File: fullposts.rdf

<?xml version="1.0" encoding="iso-8859-1"?> <rss version="2.0"      xmlns:dc="http://purl.org/dc/elements/1.1/"     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"     xmlns:admin="http://webns.net/mvcb/"     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"     xmlns:content="http://purl.org/rss/1.0/modules/content/"> 

<channel> 
<title><$MTBlogName remove_html="1" encode_xml="1"$>: With Comments</title> 
<link><$MTBlogURL$></link> 
<description><$MTBlogDescription remove_html="1" encode_xml="1"$></description> 
<dc:language>en-us</dc:language> 
<dc:creator><MTEntries lastn="1"><$MTEntryAuthorEmail$></MTEntries></dc:creator> 
<dc:rights>Copyright <$MTDate format="%Y"></dc:rights> 
<dc:date><MTEntries lastn="1"><$MTEntryDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></MTEntries></dc:date> 
<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=<$MTVersion$>" /> 
<admin:errorReportsTo rdf:resource="mailto:<MTEntries lastn="1"><$MTEntryAuthorEmail$></MTEntries>"/> 
<sy:updatePeriod>hourly</sy:updatePeriod> 
<sy:updateFrequency>1</sy:updateFrequency> 
<sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase> 

<MTEntries lastn="15"> 
<item> 
<title><$MTEntryTitle remove_html="1" encode_xml="1"$></title> 
<link><$MTEntryLink encode_xml="1"$></link> 
<description><$MTEntryExcerpt remove_html="1" encode_xml="1"$></description> 
<guid isPermaLink="false"><$MTEntryID$>@<$MTBlogURL$></guid> 
<content:encoded><![CDATA[<$MTEntryBody$><MTEntryIfExtended><p><a href="<$MTEntryLink$>" title="Continue Reading: <$MTEntryTitle$>">Continue reading <$MTEntryTitle$>...</a></p></MTEntryIfExtended><MTEntryIfAllowComments><p>Comments on this Entry:</p><MTComments><h4><MTCommentAuthorLink show_email="0"> on 
<MTCommentDate format="%b %e, %Y %l:%M %p">:</h4><MTCommentBody></MTComments></MTEntryIfAllowComments>]]></content:encoded> 
<dc:subject><MTEntryCategories glue=" | "><$MTCategoryLabel remove_html="1" encode_xml="1"$></MTEntryCategories></dc:subject> 
<dc:date><$MTEntryDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></dc:date> 
</item> 
</MTEntries> 

</channel> 
</rss> 

####Short Feed: Excerpts Only####

Template Name: RSS 2.0 Excerpts
Output File: excerpts.rdf

<?xml version="1.0" encoding="iso-8859-1"?> <rss version="2.0"      xmlns:dc="http://purl.org/dc/elements/1.1/"     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"     xmlns:admin="http://webns.net/mvcb/"     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"     xmlns:content="http://purl.org/rss/1.0/modules/content/"> 

<channel> 
<title><$MTBlogName remove_html="1" encode_xml="1"$>: Excerpts</title> 
<link><$MTBlogURL$></link> 
<description><$MTBlogDescription remove_html="1" encode_xml="1"$></description> 
<dc:language>en-us</dc:language> 
<dc:creator><MTEntries lastn="1"><$MTEntryAuthorEmail$></MTEntries></dc:creator> 
<dc:rights>Copyright <$MTDate format="%Y"></dc:rights> 
<dc:date><MTEntries lastn="1"><$MTEntryDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></MTEntries></dc:date> 
<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=<$MTVersion$>" /> 
<admin:errorReportsTo rdf:resource="mailto:<MTEntries lastn="1"><$MTEntryAuthorEmail$></MTEntries>"/> 
<sy:updatePeriod>hourly</sy:updatePeriod> 
<sy:updateFrequency>1</sy:updateFrequency> 
<sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase> 

<MTEntries lastn="15"> 
<item> 
<title><$MTEntryTitle remove_html="1" encode_xml="1"$></title> 
<link><$MTEntryLink encode_xml="1"$></link> 
<description><$MTEntryExcerpt remove_html="1" encode_xml="1"$></description> 
<guid isPermaLink="false"><$MTEntryID$>@<$MTBlogURL$></guid> 
<content:encoded><![CDATA[<$MTEntryExcerpt$>]]></content:encoded> 
<dc:subject><MTEntryCategories glue=" | "><$MTCategoryLabel remove_html="1" encode_xml="1"$></MTEntryCategories></dc:subject> 
<dc:date><$MTEntryDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></dc:date> 
</item> 
</MTEntries> 

</channel> 
</rss> 

####Comments only feed####

Template Name: RSS 2.0 Comments
Output File: comments.rdf

Update: The code here has been slightly altered since the original posting to account for an issue with incorrect dates.

<?xml version="1.0" encoding="iso-8859-1"?> <rss version="2.0"      xmlns:dc="http://purl.org/dc/elements/1.1/"     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"     xmlns:admin="http://webns.net/mvcb/"     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"     xmlns:content="http://purl.org/rss/1.0/modules/content/"> 

<channel> 
<title><$MTBlogName remove_html="1" encode_xml="1"$>: Comments</title> 
<link><$MTBlogURL$></link> 
<description><$MTBlogDescription remove_html="1" encode_xml="1"$></description> 
<dc:language>en-us</dc:language> 
<dc:creator><MTEntries lastn="1"><$MTEntryAuthorEmail$></MTEntries></dc:creator> 
<dc:rights>Copyright <$MTDate format="%Y"></dc:rights> 
<dc:date><MTEntries lastn="1"><$MTEntryDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></MTEntries></dc:date> 
<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=<$MTVersion$>" /> 
<admin:errorReportsTo rdf:resource="mailto:<MTEntries lastn="1"><$MTEntryAuthorEmail$></MTEntries>"/> 
<sy:updatePeriod>hourly</sy:updatePeriod> 
<sy:updateFrequency>1</sy:updateFrequency> 
<sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase> 

<MTComments lastn="20">
<item> 
<MTCommentEntry> 
<title><$MTEntryTitle remove_html="1" encode_xml="1"$></title> 
<link><$MTEntryPermalink encode_xml="1"$>#c<$MTCommentID$></link> 
<description><$MTCommentBody remove_html="1" encode_xml="1"$></description> 
<guid isPermaLink="false"><$MTCommentID$>@<$MTBlogURL$></guid> 
<content:encoded><![CDATA[<MTCommentAuthorLink show_email="0">: <$MTCommentBody$>]]></content:encoded> 
</MTCommentEntry>
<dc:date><$MTCommentDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></dc:date> 
</item>
</MTComments> 

</channel> 
</rss>