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>

RSS feeds updated

I’ve updated, rearranged, and cleaned up the RSS feeds for Eclecticism. Hopefully I haven’t just screwed things up too horribly for those of you who subscribe to one feed or another.

Until tonight, the default RSS feed was the ‘full posts plus comments’ feed. This may have been a bad choice, as the default feed is the most likely to be subscribed to by the casual user, and they may not want to automatically get an update every time someone replies to something I’ve posted. Because of this, I’ve swapped the ‘full posts’ and the ‘full posts plus comments’ feeds around.

I’ve also added a fourth RSS feed that is only recent comments. This can come in handy for following discussions on a particular posts, especially after it ages enough that it’s no longer included in any of the primary RSS feeds.

All of the feeds have received some slight tweaks to improve readability, including line and paragraph breaks for comments in the ‘full posts plus comments’ feed (I’m not sure why I had those turned off in the first place), more legible separation of comments in the ‘full posts plus comments’ feed, and more descriptive titles for each of the feeds (‘eclecticism: Excerpts’ and ‘eclecticism: Comments’, for example, rather than four feeds each simply titled ‘eclecticism’).

The feeds page has been updated to reflect the changes and additions, and has also had subscription information for LiveJournal users added.

iTunes: “Temporary Phase” by Sausage from the album Riddles are Abound Tonight (1994, 5:59).

New category, design tweaks

Following up on my thought process, I’ve added a 15Minutes archive category that collects all posts related to my experiences with blogging my way out of a job.

I’ve also made some other slight design tweaks. I’m now including a list of categories for each post in the metadata on the front page between the post date and the comment/trackback links, and I’ve linked the post date on individual archives to the monthly archive pages.

Nothing really major, but I’ve found myself wishing I had these at various times in the past, and finally decided to implement them.

iTunes: “Somebody Screams” by Galaxy 2 from the album Techno-Trax Vol. 2 (1991, 5:51).

Blogger Code

Last post for the night, then I’ve got to get to bed. I just wanted to toss up my blogger code:

B9 d+ t+ k+ s u f+ i o x+ e+ l c– (Decode my blogger code)

I did (kind of) cheat on one answer, though, I must admit. For the Technical Quotient (the ‘t+‘ mark), I had to choose between two possible answers:

  • I manage my blog with Greymatter, Movable Type, or other management system running on my own web host. [t+]
  • I use Blogger, BigBlogTool, or similar service to update ablogspot, Geocities, or other hosted site; or I use diaryland,livejournal, or another service with built-in updating and content management. [t-]

Technically, t- is the more correct answer, as Eclecticism is hosted and powered by TypePad, a hosted service with definite similarities to those listed. However, as TypePad is based on MovableType and I use heavily-modified templates that take advantage of many of the MT-specific tags; as I’ve used (and paid for) MovableType on earlier versions of this weblog; and as I currently have MovableType installed and running on a server here in my apartment hosting both my dad’s weblog and my friend Kirsten’s weblog (each on their own domain name), I figured I could get away with claiming the more technically-proficient t+ rating.

Other than that, it’s all entirely accurate.

(via Snowblink)

iTunes: “Zigular” by Poems for Laila from the album Another Poem for the 20th Century (1989, 3:30).

Weblog Review

From a suggestion by Doc on the TypePad User Group, I’m submitting my site to The Weblog Review. I have no idea how long it will take them to get around to me, but in the meantime, I’ll just hope that they have nice things to say.

I like ego-stroking. ;)

Update: Nevermind. They’re not accepting site submissions unless you pay them. I don’t need ego-stroking that much.

iTunes: “Strawberry Fields Forever (Raspberry Ripple)” by Candyflip from the album Madstock…the Continuing Adventures of Bubblecar Fish (1990, 5:54).

Orkut

Much of the buzz this past week that I utterly and completely ignored has been about Orkut, Google‘s entry into the social networking trend. As with the rest, you sign up, invite friends, link to other friends, and so on. I’ve never been too hot about these things — they seem kind of silly, reducing friendships and acquaintances to the level of Pokemon characters (collect the whole set!).

Still, I’m not entirely averse to giving it shot, especially when I get two invitations to join on one day (from both Mike and Jonas), so I figured I’d at least sign up and poke around for a bit (if you’re on Orkut, here’s my profile). I signed up, filled out a good chunk of the profile information, joined a few communities, and added a few friends. Amusingly enough, of the four friends I have listed, I’ve met exactly one of them in the real world (Jon, who interviewed me for the [MSNBC story] about the Microsoft fracas), which is one of the reasons I’ve always been amused by these types of websites — just what, exactly, is the criteria for “friend”? Myself, I’d kind of like it if there were levels or categories of friends (online friends, real life friends, close friends, acquaintances, friends I’d jump in bed with if given half a chance, etc.), but that’s something I’ve yet to see in one of these.

[MSNBC story]: http://msnbc.msn.com/id/3341689/ “Blogger dismissed
from Microsoft”
At the moment, with four friends listed, I’m connected in some way to 5,298 people. I have no idea what that means, really (how far do these connections go? Two degrees? Six? Twelve? Infinite?), but that’s what it tells me.

I experimented a bit with the communities feature by creating one for TypePad users. Amusingly enough, after a run to the bank to get my account back in the black, when I got home I found that there were now two more members for that community — none other than Ben and Mena. Rather nifty, that.

Now, of course, the question becomes whether or not I’ll ever remember to check in on this whole thing. I was invited into and signed up for Friendster a while back, and as yet, I believe I’ve checked up on my account there all of four or five times. Now, of course, I can’t even log in, as I’ve apparently managed to forget my login information, and can’t find a confirmation e-mail saved on my computer. Ah, well. So it goes.

iTunes: “Space Shanty” by Leftfield from the album Leftism (1995, 7:15).

JavaScript toggle code

I’m just saving this for myself for future design possibilities… The script that goes in the head:

<script type="text/javascript">
<!-- 
// toggle visibility 

function toggle( targetId ){ 
  if (document.getElementById){ 
        target = document.getElementById( targetId ); 
           if (target.style.display == "none"){ 
              target.style.display = ""; 
           } else { 
              target.style.display = "none"; 
           } 
     } 
} 
-->
</script>

Sample code showing usage:

<h3>Blogs I Read <a href="#" onclick="toggle('outside2');return false;" title="Toggle BlogRoll">(show/hide)</a></h3> 

    <div id="outside2"> 
        <h1><a href="http://www.google.com" title="google.">Google Search</a><br /> 
        <a href="http://www.google.com" title="google.">Google Search</a></h1> 
        <div class="dailyphoto"><!--#include virtual="/daily/dailyphoto.inc"--></div> 
  </div> 

<h3>Blogs I Read <a href="#" onclick="toggle('outside3');return false;" title="Toggle BlogRoll">(show/hide)</a></h3> 

    <div id="outside3"> 
        <h1><a href="http://www.google.com" title="google.">Google Search</a><br /> 
        <a href="http://www.google.com" title="google.">Google Search</a></h1> 
        <div class="dailyphoto"><!--#include virtual="/daily/dailyphoto.inc"--></div> 
  </div></div>

(via Joel Blain)

iTunes: “World, The” by Quest from the album Essential Chillout (2000, 4:17).

I’m too sexy for my blog

New tagline for the blog went up today. Inspiration should be blatantly obvious (at least if you’re into early 90’s one-hit wonders). ;)

Besides, I was bored.

This did, however, inspire some new shirts now available for sale through CafePress:

I'm too sexy for my blogI'm too sexy for your blog

To the left, the “I’m too sexy for my blog” t-shirt. Let your ego go wild, show of just how good you are! You deserve it!

And on the right, for those people who don’t deserve to be graced by your presence — the “I’m too sexy for your blog” t-shirt! Face it, some blogs just aren’t worth your time. Don’t be shy about it — announce it to the world!

Or not.

You know.

Whatever. ;)

I just do these things because they amuse me.

iTunes: “I’m Too Sexy (Catwalk)” by Right Said Fred from the album I’m Too Sexy (1991, 7:51).