Google Groups and FeedDemon Woes

I’ve been having a couple of issues recently with a Google Groups hosted list that I manage, for which no solutions seem to be available.

Issue #1 – Google Groups Atom Feed id and link attribute broken

I’ve detailed this issue more in my post to the Is Something Broken forum on the Google Groups website, but so far there’s no resolution. Basically the Atom feeds generated by Google Groups generate a id and link attribute that contains a relative link without an FQDN so that when viewed from an RSS reader, the links are broken because the RSS reader passes a URL without an FQDN to the web browser. I hope this gets fixed as it seems like a pretty major problem.

When viewed from Firefox’s Live Bookmarks it works fine, but not otherwise.

The RSS 2.0 feed generated by Google Groups does have an FQDN in the link attribute so it works properly. The “obvious” solution (other than fixing the issue, which is up to Google) is to use the RSS 2.0 feed instead of the Atom feed but that creates another problem.

UPDATE (18/06/2008): As of today, Google seems to have fixed the issue with the Atom feeds.

Issue #2 – FeedDemon 2.7 does not handle the pubDate in the RSS 2.0 feeds correctly

The pubDates in the RSS 2.0 feed seem to be generated correctly, like the following:

<pubDate>Fri, 06 Jun 2008 00:02:27 UT</pubDate>

When the RSS 2.0 feed is added to FeedDemon in synced mode (where it syncs with the Newsgator servers), it seems to ignore the pubDate and pick some arbitrary date for all the entries, and all the entries share this same date.

When the RSS 2.0 feed is added in non-synced mode (where FeedDemon pulls from the feed server directly), all the pubDates are respected and it works properly. In Firefox Live Bookmarks it works properly too.

With the Atom 1.0 feed from Google, the dates are correct in all cases but the links are broken. But at the moment users are in a quandry as there appear to be problems in both Google’s feed implementation and FeedDemon’s parsing of Google’s feeds.

UPDATE (08/06/2008): Nick Bradbury, the creator of FeedDemon has been able to reproduce the bug and has added it to the FeedDemon bug tracking database.

Mailing Lists and Email Deliverability

I subscribe to a number of moderated lists, and one of the poor practices that I see is untimely moderation of email. When list messages are not moderated quickly, there are two major pitfalls that end users can experience of which many list moderators may not even be aware.

The first of these is that most users sort their mailboxes by the Date: header, not the date that the message was received at the user’s inbox. This means that messages which are a few days old and have just been let through the moderation queue may show up a couple of pages above the newest messages in the user’s email client or webmail. This means that if a message that is 3 days old is approved, it shows up near other messages that are 3 days old that have already been read, not near the most recent messages. It is very easy to miss these messages and not read them, especially if the user’ unread mail count is consistently greater than zero.

Second, and perhaps more significantly, if the Date: header on mail is significantly (usually 24 hours or more) older than the current time, this can actually affect deliverability of email because spam filters use the difference between the Date: header and the current time as a criteria to evaluate the likelihood that a message is spam. A common characteristic of spam messages is that the Date: header is incorrect. Here is a real world example:

X-Spam-Status: No, hits=2.3 required=3.5 tests=DATE_IN_PAST_96_XX autolearn=disabled version=3.002004

The above message was moderated more than 4 days after it was sent into the queue, and you can see that SpamAssassin gave it a score of 2.3 (out of a required 3.5 to categorise as spam). Another single rule triggered could have caused the message to get sent to the spam folder. Here’s an example of where that happened:

X-Spam-Status: Yes, hits=4.4 required=3.5 tests=DATE_IN_PAST_96_XX,HTML_IMAGE_ONLY_32,HTML_IMAGE_RATIO_06,HTML_MESSAGE,HTML_TAG_BALANCE_BODY autolearn=disabled version=3.002004

Had this message been moderated quickly, it would not have incurred a point score of 2.3 for being so old, and would have been below the threshold of 3.5 required to classify it as spam.

In short, the lesson to mailing list administrators is that it is crucial to moderate messages in a timely manner so that users can easily notice the mail, and also so that the mail actually gets delivered to an inbox rather than to a spam folder.

Goodbye Movable Type, Hello WordPress

I’ve moved my blog over from Movable Type to WordPress. The main problems I’ve had with Movable Type are that the comment and trackback handling is confusing and sub-par, and the theme interface is god-awful. I’ve been thinking about making the switch for more than a year but never got around to it because of the daunting task of making sure that all my old permalinks, category and date archive pages have an HTTP 301 redirect to the new WordPress pages.

The most common method for doing this seems to be to maintain the old MT install in parallel with the new WP install and have MT publish pages that have HTTP 301 redirects to the new WP pages. Another alternative is to use mod_rewrite in a .htaccess file. However this is complicated when the MT dirify directive is used because there is no systematic way to translate from the old links to new. So the only “automated” way of doing this was to maintain the old MT install and publish HTTP 301 redirects through that.

I really didn’t want to do this, and wanted to deprecate MT immediately. So I opted for the “low-tech” method of manually coding just over 200 redirects in my .htaccess file. This covered the 186 individual entries, plus the date-based and category-based archive pages.

I assume that having over 200 redirects in my .htaccess file will incur some kind of performance penalty during pageloads, but it’s not noticeable to me. The main advantage is that I can now forget that MT ever existed on my blog and Google and other search engines will transfer whatever SEO karma I had on my old links to the new ones automatically.

Book Review: Web Standards Solutions

Abstract

Dan Cederholm’s Web Standards Solutions: The Markup and Style Handbook is a must read for those who are relatively new to web authoring and also for those who have been doing it for years, but are still authoring web sites using table-based layouts without or using minimal CSS.

Without invoking the argument that standards compliance is theologically better, Cederholm shows not only why standards compliant layouts are more practical, but also how practical standards compliant code can be authored.

He shows designers that standards compliance is not an end in and of itself, but is a tool that can and should be used in order to make website maintainence both painless and forwards-compatible through the separation of content (XHTML) and presentation (CSS).

Who should read this book?

This book is not for everyone. If you’ve never seen (X)HTML and/or CSS before, don’t expect to understand much of this book. The text assumes that the user has a basic understanding of both XHTML and CSS, and aims to show through examples why one implementation is better than another, but does not usually introduce the XHTML tags being used. In other words, this book will not teach you XHTML/CSS.

If you’ve been using (X)HTML and CSS for a couple of weeks, you’ll feel right at home.

What will I get out of reading this?

The format of the book is rather simple. The book is split into two parts. The first (and larger) part is dedicated to understanding how to write semantically-rich XHTML markup. The second part introduces the application of CSS for styling the XHTML. It doesn’t dwell on aesthetic considerations, but rather focuses on practical aspects of CSS-based design.

Most of the chapters follow the same format, which is based on Cederholm’s SimpleQuiz series. He first introduces a usage case, and then provides three or four different methods of coding that particular usage case. He then discusses the pros and cons of each method and summarises them neatly at the end of each chapter. Following the summary, most chapters have an “Extra Credit” section where further ways to extend the best method are discussed. In the first part of the book about XHTML markup, these sections typically include methods for using CSS to bring the plain XHTML markup to life.

The first part of the book discusses the following topics: Lists, Headings, Tables, Quotations, Forms, Anchors, Phrase Elements (such as <b>, <strong>, <i>, <em>, etc.) and finally how to minimise semantic markup by reducing unnecessary classes and <div>s.

The second part of the book discusses the following topics: the best methods for applying CSS to a document, stylesheets for different media, multi-columnar CSS layouts, image replacement of text, styling text, and styling the <body> tag.

Some of the more interesting things I learned from the book were:

  • How to create images that appear to change colour when you change the colour of your site using CSS.
  • How to style the <body> tag to show different layouts (for example, two-column versus three-column) while using the same CSS file.
  • How to serve different CSS files to different browsers.
  • How IE5 on Windows incorrectly parses its box model, and how to work around its incorrect parsing.

There are of course other things I learned as well, but I’m not going to repeat the contents of the entire book here.

Conclusion

If you’re new to web authoring but already have a basic grasp of HTML and CSS, or if you’re an experienced web designer but haven’t yet learned the ways of separating content from presentation, this book is for you.

If you’re interested in learning how to create sites that are easy to maintain and will be forwards-compatible with tomorrow’s software, then you should consider the methods that Cederholm describes.

Certainly, much of the information in this book can be had by scouring the web. But there are some things discussed that I hadn’t seen elsewhere, and it’s always useful to have information compiled in a logical and understandable manner, which is exactly what Cederholm does.

For more information about the book, head over to the book’s website where you can read the table of contents and a sample chapter. If you’re located in North America, use this link to buy the book.

Next on my reading list is Dave Shea and Molly Holzschlag’s book, The Zen of CSS Design.