It’s just data

Syndication and CSS

This topic seems to have resurfaced now that Joi is putting this in his feeds and there even is a howto... like Shelley and others, I've yet to be convinced that syndicating CSS is appropriate, but on a purely technical level, here's a few comments:

Overall my recommendation is to not to try to tunnel this information inside the content, but to place it outside the content (either at the item or the feed level).  This would make it easier for aggregators to  identify that a stylesheet is desired and to take the appropriate action.

In Atom's case, the recommendation would be to simply place the link tag at either the feed or specific entry level.

In RSS, I would also make a similar recommendation, perhaps adopting the xhtml namespace.

Atom Going Modeless?

Sjoerd and Tim put forward compelling arguments that the cost/benefit of the mode attribute isn't justified.

This allows for a simple heuristic: if the type is xml, the content is simply placed inline (xsd:any).

Otherwise, if the type is text, the content is a string (xsd:string) - this implying escaping of characters like "&" and "<", and effectively requiring double escaping of html.

Otherwise, the content is treated as binary (xsd:base64Binary).

Agree?  Disagree?  Leave your comments on the atom-syntax mailing list.

Atom API via WSDL

I've written a small C# app to use the WSDL that Randy has been writing/coordinating.  A few small changes to the WSDL were required to get this to a clean compile (try compiling the app with the original WSDL to see what was needed, then try this one).  On top of that, a bit more changes were required to get it to produce a recognizable request.  The latter changes are the subject of this blog entry.


South by South West

Sebastien Paquetwhat happens when everyone is empowered to create open channels where any blogger can contribute content?

Ridiculously easy group forming

This panel offers perspectives on group forming and information sharing via the latest social software tools.  The panel will include Pete Kaminski, Jon Lebkowsky, Sam Ruby, David Sifry, and Adam Weinroth.

Awestruck and Humbled

Back home from the XML conference, and I still can't get over how many giants in the XML field that I was able to meet in the past week.

Atom in Depth


Security Flaw

While a security hole in IE gets Slashdot coverage, its seems that this particular security hole can affect not only IE, but also Mozilla 1.5.

Demonstration: not yahoo

Scobelizer redesign

Robert Scoble: Design work ahead tonight. Bear with the ugliness for a while.

In Mozilla, I can't even click on the comment link on this blog entry.  Recommendation: the validator is your friend.  For starters, it is <div class="comment">, not <div id="comment">.


Adam Bosworth: SOA relies on people understanding that what matters is the wire format they receive/return, not their code.

+1, with a caveat.  I'm looking forward to Adam's keynote tomorrow.

Exercise left for the student

Roy Fielding: Getting two components to communicate is a trivial process that can be accomplished using any number of toolkits (including the libwww ones).

It is fun seeing one of the primary authors of the HTTP spec lecture one of the original designers of a key portion of what is the dominant web browser on the internet as to what exactly is and what exactly is not trivial.



I didn't see a backchannel, so I created one: irc://  Perhaps we can use IRC to broker some meetups?

Update: Edd has been keeping a running and logged commentary on #rdfig

News Standard Summit wrapup

Overall, I was very impressed by the participants.  I've been in similar meetings in the past where what I found was people who were in deep denial and were seeking other people to reassure them.  In this meeting, I found a completely different set of people: ones who are trying to keep on top of the current trends so that they can make informed decisions.

Here is a random set of notes:


Learning to Rest

Adam Bosworth: I admit to not being a REST expert and the people commenting, Mike Dierkin and Mark Baker in particular, certainly are. They tell me I'm all wet about the REST issues. I'll dig into it. But I admit, I don't get it. I need to be educated.

I personally think that the place to start is to first tease apart the "HTTP is the one true protocol" from the "REST is the one true architecture", and then initially focus on the latter.  Once done, you may come back to believe in one or both of these, but they can be addressed independently.


I'm feeling lucky


Gentle Corrections

Mark Baker: Today, Roy Fielding ripped me a new one on the topic of the https URI scheme, which I had always considered an unnecessary hack.

It seems that Mark now knows a bit more about the rationale behind the https URI scheme, but doesn't quite grasp the colloquialism.

Trust me, if you've ever witnessed Roy ripping someone a new one, you will know it.

Me?  I've only gotten a mild swat or two...

Low tech fix

Yesterday, an Aptiva that I bought for the kids started to make a rather ominous sound.  Kinda like the sound a car with a low battery that won't start would make, but a bit slower.


Web Services are not Distributed Objects

Sean McGrath: A big Amen Brother to this piece by Werner Vogels.

Atom discussions

Randy Charles Morin: Atom is dragging out. Rss is not moving. Sigh.

I could not have said it better myself.


Bogus Wuffie

Dave Johnson: Curses, foiled again! Carlos has uncovered my secret plan to embezzle huge amounts of bogus wuffie.

XML Conference Blog Roll

Dave Kunkel: We expect that some attendees will be blogging the conference, and would like to point people at those blogs. If you expect to be attending the conference, and to be talking about it in your blog, please email Dave Kunkel to have your name and blog listed on this page.

Expando properties

Don Box: The fact that Longhorn currently has three models for property extensibility instead of one is an accident of history. Whether or not there is enough common functionality and model here to do unification is still an open question.

If you look at JScript.Net, you will find a fourth one.  And a compelling motivation for unification.


Auto overflow

I discovered a css property I was previously unaware of: overflow.  This enables me to address a pesky little problem whereby the center column encroaches on the rightmost column when the data is too wide.  If your browser supports this css property, try shrinking the width of the brower window when viewing these entries.

XAML Extended Attributes

This is the one where Chris Sell's XAML example triggers two completely different trains of thought


Debuggers Considered Harmful

Robert C. Martin: As debuggers have grown in power and capability, they have become more and more harmful to the process of software development.

Chocolate Mousse in RDF

Mark Pilgrim: All hierarchies, directories, and schemas are necessarily biased by the worldview of the person creating them, and mine is no exception.

apt-get upgrade

As my server runs RedHat 7.3, it seemed time for an upgrade.  But before I did, I thought I'd explore Debian - on a test machine.


RSS Test Technician

Ssshh... don't tell anyone, but IBM has job openings...

ApacheCon wrapup

Doug Daulton: I'd heard nothing negative about anyone, but past experience tells me anytime you get a group this size together, you are bound to shake out a sphincter or three. None here, I am happy to report.

All in all, ApacheCon is not the place where epic battles happen.  Instead it is a place of pure Stigmergy.  This is the way I like it.


robots.txt vs referrer spam

Many people have been doing this for a while, but as a public service announcement for those who may not have thought to do this:

A site can set up a robots.txt file which tells robots (which includes Google) to not index a particular file or directory.

Here's mine.  It is pretty easy to do.

Will it stop referrer spam?  No.  Many spammers are quite satisfied with fractional percent return on investment.  But it allows you to opt out.

OSCon slides

Yesterday, Doug Tidwell was not able to make it to ApacheCon, so I filled in his slot.  He was scheduled to reprise his Building a Web service from SOAP to Nuts presentation from last year.  I got a PDF copy of his slides from last year (all 134 of them!), but this lost his animations (example: some slides were nigh unreadable as they had a red "Bad Idea" overlayed over the text).  So, instead I substituted a tutorial that I had prepared for the ETCON earlier this year.

Referrer Spam

Adam Gessaman: It appears that these sites, using a clean little weblog as a front, are hosting a large amount of porn.

Wow.  To me, it looks like a lot of effort for so little gain, but clearly I am missing something.  But it any case, the comments on idly's blog entry are worth reading, as is the update (scroll down to see it) to Mark Pilgrim's blog entry on spam.

Open Office Wars, part 4

Dare Obasanjo: The biggest gripe when Office 2003's XML support was announced was that the schemas for WordprocessingML (aka WordML) and co. were proprietary. This was reported in a number of fora including Slashdot and C|Net news. I wonder how many will carry the announcements that these schemas are available for all to peruse and reuse in a royalty free manner?

Did I link to one of these?  Yup.  OK, so I will link link to the announcement.  Done.

Note: in my blog entry I didn't "gripe" about the schemas for WordML, my question related to PowerPoint11.

Comment Throttle

I've implemented a throttle on comments to prevent runaway spammers.


Inferior machines

Les Orchard: I see that Mark Pilgrim has posted a picture of himself as a kid, working at an Apple //e. Based on what I wrote this past Summer about being Newly Digital in 1983, I would guess that around the same time I was working on a Commodore 64, and I would have teased him in a relentlessly geeky way about his clearly inferior machine.

Bah.  In 1983, I was working on a 3033.  (16 MB RAM, 4.7 MIPs).

Of course, this probably could have been replaced with a Palm Pilot Tungsten W...

Whuffie Web

Les Orchard: A-List bloggers have the big Whuffie. Most everyone else has much less Whuffie, thus their query powers are much less. I somehow doubt that the Whuffie Web, if it were to take off in a big way, would work to equal benefit for everyone.

It is nice to see Rob Relyea responding to my Avalon question.  And to see Mike Deem back in the blogosphere and responding respectfully to Joe Gregorio's rant.  And John Lam categorizing the Ant community reaction to MSBuild.

What I believe we are seeing is domain experts seeking each other out.  Crossing organizational and philosophical boundaries.

It's not so much a matter of Technorati rankings as it is relevant domain expertise.

No dynamic XAML?

Let's assume for a moment, that XAML is HTML "done right" for rich clients (suspend disbelief if you have to).  It apparently has SVG like elements, if nothing else.  It doesn't have CSS, but apparently there are other ways of solving similar problems being proposed.

Apparently, one can embed small amounts of code in the markup.  Unquestionably controversial, but often handy.  This corresponds roughly to the role that JavaScript plays in HTML... or does it?

What about Dynamic HTML?  Namely the ability to modify the rendering and content of the document on the fly?  Isn't that lost by a compile to bytecode approach?

Blind Spots

Links are unquestionably the greatest source for semantic data within weblogs.  But what does RSS 1.0 (an application of RDF) do with that data?


XAML is for humans

Don Box: Today, the data needed to initialize an object graph is hidden behind imperative statements in your programming language of choice. That makes it difficult to tease out of the rest of your program without weird markers in the source code to delimit the structure of your code into recognizable pieces.

My previous post on this subject had more to it, but I chickened out and didn't post it.  What the heck, I could be wrong, but... here's essentially what I said.



Clay Shirky: it turns out that people can share data without having to share a worldview, so we got the meta-data without needing the ontology

Two parts brilliance, one part strawman.  Pity, actually, as I am sympathetic with the point that Clay is trying to make.

Hello XAML

Don creates not one, but two versions of "Hello World" in XAML.  The delicious fragrance of epic battles is in the air.

Freed from syndication

Ken MacLeod: Review data has permanence, it has linkability, it has searchability, it has reusability — why is it locked in a syndication feed for use pretty much only by syndication clients?

data-central view

Joshua Allen: Do you view your system as being one big chunk of RAM, or one big CPU?

XAML revealed

Don Box: XAML is just an XML-based way to wire up CLR types no more no less...  XAML is domain-neutral, so while it may be used to create desktop apps, web pages, and printable documents, it could also be used to create CRM apps, blogging backends, or highly concurrent web services provided you had a supporting CLR-based library to do the heavy lifting.

I guess that clears that up.

Proposed change to atom:link element

Joe Gregorio: All of the discovery uses a link tag. The link tag from HTML will be used in (X)HTML, and the same tag will be used in the Atom format, with the restriction the value of the rel attribute is case sensitive.

This makes the definition of the link tag consistent with (X)HTML, and introduces a number of pre-existing link types.  I could see the benefit of using this at either the feed or entry level.

Beyond Blogging

Elizabeth Lane Lawley: Beyond Blogging

An excellent look at the entire ecosystem of blogging as opposed to the rampant explorations of specific microcosms.  [Via The Shifted Librarian]

One thing that is missing from the discussion is referrer logs.

Ted Leung joins OSAF

Ted Leung: I'm very pleased to announce that I've accepted a position with the Open Source Applications Foundation (OSAF), where my primary job responsibility will be working on the Chandler repository, particularly as it relates to querying.



Matt Powell: Sam is very popular but has left the world of Web services as we know it. (Dropping)

Suggestion for a replacement: Dave Chappell  xml

Disney's RSS 0.93

Dave Winer noted some 23 new feeds from ABC news.  What is particularly interesting about these feeds is that they are marked as RSS 0.93, complete with a DTD copyright Walt Disney Internet Group.  The DOCTYPE also indicates this ownership.  The version number is repeated in the URL itself.

The channel on these feeds don't have a description (despite being required by the DTD).  Pubdates seem to be in a compressed form of the ISO 8601 format.  Links are expressed as CDATA (which is OK), but some of the links have an extraneous double quote character at the end of the URL (which is not).

Trust, but verify some more

I've since added some code to verify that each of the pages in the cache of pages served in the past 24 hours are well formed and valid XHTML.  This uncovered an interesting boundary case that I hadn't considered.


One year ago today...

Microsoft inhaled a blogger.  Now it looks like he is attempting to resurface...

Atom + CSS

I tried some minimal css on an experimental Atom feed and the results started to look promising - on Mozilla.  View source to see how it was done.

I then brought up the same page under IE, and it looks like IE didn't support a number of CSS features.  Worse, it seems to be stripping and/or interpreting escaped markup.  Finally, view source is not available.

Poking around to see if there were any workarounds, I came across this article by Tim Bray from 3.5 years ago...


Is <content> required on a POST?

I've kicked off what I intend to be a series of discussions leading up to the creation of a validation test suite for Atom implementors with the following question on the atom-syntax mailing list: Is content required on a POST?


Evan Goer: is now on the X-Philes list.  (I should note that X-Phile sites that allow comments with markup are quite rare.  Congratulations, Sam.)

I find it a bit humorous that the X-Philes site itself is HTML 4.01.

Also note that Evan's latest blog entry has a title that will cause a number of feed aggregators fits.

Getting to Xen

Erik Meijer: For example given a bibliography of books, bib, we can select all books whose publisher is Addison-Wesley that are published after 1991 by the following filter expression.

book* AWbooks =[it.publisher == "Addison-Wesley" && 
            it.year > 1991];

Sweet!  Note the use of * to denote sequence, and the implicit it variable.  There also are embedded expressions and apply-to-all.

Missing, or incompletely described at this point, are namespaces and mixed content.

[via Dare Obasanjo]

Curved borders

The 'border-radius' properties

Atom in Depth

XML 2003  I'll giving a presentation entitled Atom in Depth on Friday, December 12th at the 2003 XML Conference in Philadelphia.

Cover Story: Atom

Robin Cover: The key insights are these: design Atom such that content is not treated as a second class citizen; insist upon a uniform mechanism for expressing the core concepts independent of the usage; keep the format open and simple.


Valid XHTML 1.1!

ETCON: !Echo Wiki

ETCON ButterflyAt the 2004 O'Reilly Emerging Technology Conference, Ken Macleod (a.k.a. bitsko) and myself will be presenting our thoughts on the usage of the Wiki and alternative technologies in the development of Pie Echo Atom.

This should be a highly interactive session, with lots of audience participation.

Atom for Wikis

With the recent upspike in interest in Atom for Wikis, I just thought I would jot down a few thoughts on the subject


ScriptingNews2 and OPML too

I've added ScriptingNews2 and OPML versions of my feeds.  If anybody has any interesting applications of these feeds, please let me know.

Using XPath to mine XHTML

Simon Willison: This morning, I finally decided to install libxml2 and see what all the fuss was about, in particular with respect to XPath. What followed is best described as an enlightening experience.

Test area

This is a test blog entry. Comments on this blog entry won't appear in the various feeds.

Trust, but verify

I now have a nightly job which verifies that each of my Atom feeds are well formed xml, none of the content needs to be escaped, and all my cached queries are correct.

How Rich

Jon Udell: A GUI that doesn't embrace linking can never be truly rich.

Height matters

News and Observer: a new University of Florida study concludes that short people may be shortchanged in salary, status and respect when compared to taller counterparts.

RDF questions

Danny Ayers: Of course if Atom was expressed in an RDF-friendly syntax* then FOAF and every other RDF language could be used directly in Atom without having to jump through hoops.

Danny, a few questions.  For the basis of my questions, presume a comparison against RSS 1.0, which unquestionably is an RDF friendly vocabulary.

To me, this gets at the heart of the value proposition for RDF.  What I hear is that it essentially provides extensibility for free.  I'd just like to see this promise expressed in tangible terms.

Embedding FOAF in Atom

A quick prototype exploring the embedding of FOAF data into Atom.


Comment Spam

Now that I am back home and rested, it is time to share an amusing story... as Randy noticed, I got some comment spam on Monday, all referencing an online gambling site.

32 comments in the course of 65 minutes.  The last 9 of which were not seen by anybody as I had blocked the ip address by then.

65 minutes to create.  Carefully crafted to appear to be on topic.  10 seconds to wipe out.


Use cases and requirements for a list of feeds as discussed in a Sunday morning session at FOO Camp.

Update: Apparently between the time I took the notes and posted them, Dave Winer posted a myPublicFeeds.opml RFC

Update 2: Related discussion is happening on the Syndication mailing list


A slice of foo

Observations on collaboration and sharing at Foo Camp.


Plain Text

Joel Spolsky: It would be convenient if you could put the Content-Type of the HTML file right in the HTML file itself, using some kind of special tag. Of course this drove purists crazy... how can you read the HTML file until you know what encoding it's in?!

The same thing is true of XML.  It is easy to eliminate what remains the single largest source of invalid feeds.  Take a moment and ensure that the first line of your feeds look like the following:

<?xml version="1.0" encoding="iso-8859-1"?>

Or, if you happen to be on a Windows platform and have a tendency to cut and paste content that may have so-called smart quotes in it, use the following:

<?xml version="1.0" encoding="windows-1252"?>

Finally, while I don't know of a single feed parser that cares about the charset specified on the Content-Type header, it doesn't hurt to make it match.  Technically, if you use text/xml, the default is supposed to override what is specified in the document itself.  You can avoid this by simply using application/xml instead.

Viewing Comments in Blog Readers

Kevin Lynch: These XML blog feeds come in several different formats today (RSS 0.91, 0.92, 1.0, 2.0) which don't appear to have provisions for embedded comments. Atom is another emerging format for these feeds, and is currently under development by a number of blog software creators. This is an opportunity for us to agree on how both entries and comments can appear in our blog readers. Here are some thoughts on this, building on the ideas on the Atom site.

I've prototyped the first approach here.  Note the addition of a <related> element.  Should entries which are a result of a trackback have two related elements?

Benchmark update

In the previous benchmark I compared REXML to libxml2.  In order to get a deeper understanding of where the time was being spent in REXML, I also compared REXML against Marshal.load of the same data.  The result was that 2/3 of the time was spent in the parsing.

Now to explore the datastructure that REXML uses.  In order to do this, I convert all of the data into a series of nested arrays of strings.  Marshal the results, and then compare the times it takes to reconstruct the Nodes.

test7 REXML Ruby 1.8 12.877s
test7 REXML Marshal::load Ruby 1.8 1.736s

WhyTheLuckyStiff has more updates.


why the lucky stiff: Now, I'll tell you upfront. This match is rigged. The deck is stacked against XML. I just threw together an Atom2YAML converter. Atom = 12 MB. YAML = 6 MB. I only have to do 50% of the work. And these are awful YAML documents. Give me an afternoon and we'll be down to 5MB with some fragrance.

The goal is to support these queries.  It will be interesting to see how _why handles the second one given that he is currently cheating on the content element.  ;-)

Benchmarking XPath enabled libraries

test1 REXML 31.961s
test2 REXML Marshal::load 10.325s
test3 libxml2 parseFile 1.049s

Perl vs Python vs Ruby

Taking a look at Ruby (the language), and I find that there are a number of familiar concepts in unfamiliar places.  Following are equivalent snippets in Perl, Python, and Ruby, respectively:

print join(' ',map {uc} @ARGV) . "\n";
print ' '.join(map(string.upper,sys.argv[1:]))
puts{|arg| arg.upcase}.join(' ')

Data Flow

Data flow of comments to feeds, focusing on how indexing and caching work.



Ben Trott: I've released XML::Atom, a Perl implementation of all things Atom. The goal for XML::Atom is to provide an implementation of the syndication feed format, the API, and the archiving format planned for Atom. Currently, it provides support for the feed format, and an implementation of a client for the API.

Cool!  Some ideas for a 0.03 version:

P.S.  Instead of calling the API createEntry, why not simply call it post?

Fun with XPath

Last twenty weblog entries which:

Xpath enabled query

The search box now accepts queries that start with a "/" and refers to elements in either the xhtml or atom namespaces.  The result is the set of posts (in reverse chronological order) that either match the query or have a comment that matches the query.

libxml2 screams

libxml2 is apparently optimized for parsing lots of small files.  I tested the theory by running a fairly realistic query against all of the weblog entries on my site.  This completed in less than a second.  This does not mean that I shouldn't migrate to an XML database, but merely that I don't need to do so today.


Syncato prereqs

I'm approaching success in installing the prereqs for Syncato.  You can see the current install script and results.  Summary:

I'm sure I'll make my way through all this, but any suggestions on things I might have missed in the documentation would be appreciated.  Meanwhile, I can't help but wonder how many XML parsers and XPath implementations it takes to run a blog.

ApacheCon 2003

Las Vegas. 16-19 November.  Impressive list of speakers.  I've registered, have you? AC 2003

Syncado thoughts

Syncado is an impressive piece of work.  Contained within the 63,042 byte tar.gz file is both a client and server.  Complete with authentication, configuration, license, README, stylesheets.  There even is a bit of cruft in there: CVS directories, compiled python, and even incomplete experimental additions.

In short, the perfect mixture around which to build a community.

The small size is a testament to someone taking a look at the problem as a whole, with a minimum of assumptions - and based on building on a solid base.  In this case the base involves, Berkeley DB XML (which requires Berkeley DB, Xerces C, Pathan, and bsddb3), libiconv, libxml and libxslt, and Webware 0.8.1.

It is only the sheer size of the dependencies which is giving me pause.  On the flip side, I've found a bunch of new toys to explore and play with.  ;-)

Introducing Syncato

Kimbro Staken: Syncato is the new Weblog system that runs this site now. It is written in Python and uses Sleepycat Berkeley DB XML for its database. The system is heavily based around XPath manipulation of XML data. All presentation is handled through XSL-T and I built some extension modules that tie Berkeley DB XML into libxslt. [via Jon Udell]

Way cool!  By any chance is the source available for this?  I'd seriously consider converting to such a system.

New lazydom version

Here's the code.  Key new features vs the original:


A small irc client using wxPython.


5-Day Forecast Track

RSS in Depth

Slides for the Seybold Session

Moscone Bomb Threat

SFGate: Thousands of people were evacuated from San Francisco's Moscone Center on Wednesday, during Oracle and Seybold conventions, after someone threatened to blow up the building. No bomb was found.

The person, who authorities believe has made similar threats in the past, contacted the convention center about 1:20 p.m. saying a bomb had been hidden "in a dark place" and was due to go off in an hour.

OK, so why were we asked to leave at 3 p.m.?

Picking Wiki Bones

Don Park: Trying to understand the Wiki technology is like dissecting a Humming Bird: it's difficult to find the meat.  In flight, it's wonderful.  Take it apart to see what makes it tick and there is nothing there, just bits of feathers and bones put together using spider web and Harpy dust.

An editable web

Joe Gregorio: I had never even considered applying the AtomAPI to a Wiki. Having deltas off a wiki show up in my aggregator, and then being able to edit that page directly, without having to open the page in my browser, seems like a killer application of the AtomAPI.

Well Formed Comments

My comment system is based on a number of regular expressions which seem to work tolerably well in most instances when coupled with a preview function.  Unfortunately, the results are not quite as good  when used in a API context.  So, today, I finally did something about it.


More noncense

Welcoming back Tim Ewald to the blogosphere with a suggestion of two bits of low hanging fruit for improving the security of the new MsComServices.



Nonce is a funny word that plays a serious role in a number of security implementations.


MSDN top 10

Phillip Pearson: Having never done anything with SOAP before, I thought I might as well start here and hack up a Python wrapper for the service.  Presenting:


I took that as a starting point, focused on a single operation (top 10 popular en-US downloads) and removed all references to any toolkit or XML parser.  Here's the result.

Clearly the bulk of the logic is the handling of Web Services Security UsernameToken. Extending this to support other services would not be difficult.

AtomDigest via urllib2

Mark and Joe's prototype AtomAPI implementation in Python uses the low level httplib classes.  This means that things like proxy support needs to be explicitly added.

An alternative is to use the higher level urllib2 classes which not only have proxy support built in but also Redirect, Basic Authentication, HTTP Digest Authentication, and HTTPS.

Here is AtomDigestAuthHandler as well as a program implemented using urllib2.  You can run it for yourself, and see the output here.

Undoubtably, this will reinvigorate the RestEchoApiPutAndDelete debate.

Well Formed Writing

Jon Udell: To ante up for this game, you have to produce well-formed content. The mainstream blog-writing tools aren't helping at all. Most well-formed writing is done in emacs, still. Can we please change that soon?

It can be done with SGML.  It can be done with regular expressions.  But, in general, I agree.  Converging on well formed XML will encourage spontaneous integration.

HTMLifying and unHTMLifying

If you look around, you can find feeds with titles with escaped HTML markup, and content that is plain text.  However, your application may very well want plain text titles, and HTML content.  One of the basic premises of Atom is that such data will be unambiguously identified. extends with two methods toHtml and toString to handle such conversions.


Lazy DOM

Creating XML to Python mappings seems to be quite popular these days.  Here's mine.  Expect this to evolve over the next few days.

Now printable

This morning I got a request to make the layout of this page more suitable for printing.  I've gotten the request before, but this time I finally got a round tuit.


Wikis, Grafitti, and Process

Clay Shirky: Process is an embedded reaction to prior stupidity. When I was CTO of a web design firm, I noticed in staff meetings that we only ever talked about process when we were avoiding talking about people.

Update: Ben Hyde has an excellent counter-rant. While I agree with pretty much everything Ben is saying, I will still tend to be skeptical when I hear people suggest process solutions to people problems.

A Common Ground for XML Linking

SkunkLink: The SLink language provides a data model and syntax for XML linking, suitable for use in XHTML 2.0 and related languages.

Prime Real Estate

Mitch Kapor: An actual email with proper nouns genericized to protect the guilty. OK, so what does this tell us? Are blogs now media outlets really worth pitching?

Debugging AtomAPI implementations

Here's how to add HTTP proxy support to the wxAtom client, and how to use that the monitor and debug the AtomAPI.


Atom Comments and Policy

The Atom API describes how one creates, retrieves, edits, deletes, and finds entries.  In comparison, it only defines how one adds comments.  Why?

How should authentication be different for comments and entries?  Is there a need for a discovery of policy?

Information clients

Gary Burd: I am investigating what's going on in the information client space. I don't have a precise definition of the term information client, but I know one when I see one.

NITF version 3.2

Sean McGrath: NIFT is one of those things that has been in my peripheral vision for a long time but I have not had the chance to look at it more closely. How does this sit with blogs/rss/peaw?

First I've heard of it.  Quick impressions: body.content is well formed XML.  The head, body.head, and body.end look like they have considerably more metadata than anything I have considered - not surprising as these guys do this for a living.

Escaped Markup Considered Harmful

Norman Walsh: There is clear evidence that the escaped markup design will spread if it isn't checked. If it spreads far enough before it's caught, it will become legacy. Some vendors will be forced to continue to support this abomination by simple economics. And it won't be their fault, it'll be ours for not killing the virus before it could spread.

While I am certainly sympathetic to that view, my current leanings are simply that any such escaping needs to be clearly identified as such.

Headers and soul

HTML 4.01: The HEAD element contains information about the current document, such as its title, keywords that may be useful to search engines, and other data that is not considered document content. User agents do not generally render elements that appear in the HEAD as content. They may, however, make information in the HEAD available to users through other mechanisms.

Of course, there always is another point of view.

Atom Schemata

Tim Bray: Here is draft schemaware for snapshot 0.2 of PEAW

In the process, Tim generated a lot of feedback.

Meanwhile, a few days ago Sean Palmer initiated an ExtensibilityFramework that just so happens to address a number of Tim's issues.  In the process, a RelaxNG grammar was produced which covers not only the core elements, but also all extensions.

The purpose of this extensibility framework is to allow a uniform mechanism for handing text (with and without markup) and detecting URIs.  The latter would also help with things like xml:base processing.

Sean produced a Python/SAX parser that converts this into RDF N3.  Sjoerd Visscher produced an XSLT transform that converts the same input into RDF/XML.

Markup vs Unicode

HTML 4.0.1: Although Unicode specifies special characters that deal with text direction, HTML offers higher-level markup constructs that do the same thing: the dir attribute (do not confuse with the DIR element) and the BDO element. Thus, to express a Hebrew quotation, it is more intuitive to write

<Q lang="he" dir="rtl">...a Hebrew quotation...</Q>

than the equivalent with Unicode references:

&#x202B;&#x05F4;...a Hebrew quotation...&#x05F4;&#x202C;

More Toys to Play With


RDF/XML Working Draft feedback

On Thursday, I talked with Dave Beckett on #echo about possible changes to the RDF/XML Syntax Specification.  The current status of RDF/XML is that it is in a W3C Last Call Working Draft form - meaning that only minor corrections are accepted at this time.  My inputs clearly go beyond that, but I will share them anyway on the off chance that they resonate with others and/or can be taken as input for the next round of the specification.  I've ordered them roughly in order of priority:


Let's turn this thing around.  Instead of requiring one to make their XML RDF friendly, let's make RDF XML friendly.  Or, at least make RDF meet XML half way.


OSCOM Hackathon/Sprint at Seybold

Michael Wechner: OSCOM is organizing a Hackathon/Sprint during Seybold conference. We will focus on WebDAV and the weblog specification "Atom".

Can somebody find a mention of this on the Seybold web site?

Meta-models all the way up

Bill de hÓra: Interoperation doesn't start with models, it starts with syntax. Shared syntax is the prerequisite for interop. We have a couple of decades' experience to back that observation up.


Diego Doval: So, is it possible to have both? Absolutely :)

XML to RDF transformation

Sjoerd Visscher: Sam Ruby made an XSLT tranformation from Atom to RDF. He said it was hard to do. On the #echo IRC channel I said that XR would probably make it a lot easier. Then Sam asked me to make an XR transformation that would do the same thing. I did, and here it is.


Quantifying the "RDF tax"

There have been assertions of an "RDF Tax".  Not having an opinion on the subject, I decided to do a little investigating.  In particular, I sought to identify the highest potential "ceiling" to the RDF tax.


What Does Markup Mean?

Tim Bray: <span class='h2'>How is Meaning Communicated?</span>

Rorschach Test

Exhibit a:

  <generator name="Movable Type">

Exhibit b:

    <name>Movable Type</name>

RDF can be readable?

Aaron Swartz: These changes also have the side effect of making feeds valid RDF.

This statement surprised me.  So I tried it.  I didn't get it right the first time, but after Aaron gave me a few suggestions on IRC last night, I finally got there.

minAtom.rdf and maxAtom.rdf, both valid RDF.

Note: this is not an official snapshot.

Re-weaving the Broken Web

Shelley Powers: I just published the final three parts of the Weblog Link Series, on permalinking and archives:

A four part series.  If have (voluntarily or involuntarily) been relocated and are busy, part II contains a lot of useful nuggets.  Once things settle down, do yourself a favor, and go back and read the rest.

Page Slap

Joi Ito: Since I blog just about anything important that I ever think of, I end up page slapping people a lot on IRC when they ask questions that I've already answered. I wonder if it's rude? I don't think so.

Blosxom Plug-In: interpolate_fancy

Rael Dornfest: The first plugin I'll be writing using interpolate_fancy is for atom (or whatever it's called a few minutes from now).

I must say that it was a joy to create this plugin.  I had nearly forgotten how much fun Blosxom was.

Something to consider: it might be helpful to have a way to call a Perl sub defined in a plugin from within a template.  This would enable one to create logic that is only needed in order to support some specific plugins.

Decentralized Interoperability

Edd Dumbill: If you don't care about decentralized interoperability, it's hard to see how you can ever agree with web technology.

The day the blogging died

Christian Crumlish:

A long, long time ago
I can still remember
How those weblogs used to make me smile...

Excellent.  My favorite comment to date: RefactorOK

Update: The Blog Herald is offering $20 for the first Blogger or web surfer to submit a reasonably sung version. Shannon's in!


Paul Ford: the standards stack up, each one a step towards something complete, something whole.

Two types of aggregators

Ziv talks about two types of weblogs - "take that" and "phone home".  I think the distinction is more subtle than that, and deserves further exploration.


Spam Works

Just ask Ben.

Blosxom 2.0 plugin

Dave Walker: If you're running Blosxom 2.0, you can grab my Atom 0.2 flavour files here.  It uses a CDATA encoded version of the individual posts.  If you're enough of a stud so that your blog's totally valid XHTML you might want to modify story.atom to serve the non-encoded representation instead.

Try this.

NewsGator 1.3

Greg Reinacker: Mark Pilgrim announced the Atom 0.2 snapshot yesterday...and, coincidentally, NewsGator 1.3 (also announced yesterday) supports Atom 0.2 feeds.

For appearances sake

Clemens Vasters: This here :-D was typed as colon-dash-caps-D and is converted to an image link when rendered to the website using a simple content filter. All of you reading this through an aggregator will say "really?!", because all you'll see is colon-dash-caps-D. I don't want all that traffic for the images coming this way.  ;)

Secure Hash Algorithm 1

SHA1 in C#, Java, PHP, Perl, and Python

PHP wins.

New comment by email policy

In an attempt to reduce spam, I'm now rejecting any email comments that are addressed to weblog entries which are over 30 days old.  Implementing this only took a few minutes work, but required me to break a few abstractions in my implementation.  Undoubtedly, this will get cleaned up in a refactoring, but a review of the code reveals a number of related items:

Each is based on exploiting a fundamental characteristic of SMTP: namely that it is a protocol that enables without obscuring.

Wiki backlash?

Elizabeth Lane Lawley: I see a backlash building on wikis, mostly in a good way. The choice of a tool for online group-forming or process facilitation is an important one, and the pros and cons of specific tools need to be carefully considered by anyone wanting to implement them.

In defense of the wiki - had this merely been a weblog post or a mailing list, I am confident that we wouldn't be having a naming discussion right now.  Or any discussion.  Quite simply, it was the wiki that made this project possible.

Phil's concern never materialized.  I am confident that if it had, it would have been quickly fixed.  Wiki's are like that.

Dare and Shelley have not had as much time as they would have liked to devote to this in the past month.  This would have been just as true had another means of communication been chosen.

This being said, it must be noted that Dare and Shelley are far from unique in this case; few are able to keep up with the breakneck pace of developments.

People like Danny Ayers, Joe Gregorio, and myself have tried to pull things off wiki in more digestible chunks onto our weblogs.  In fact, Shelley originally was doing likewise.  Despite this - we need to do better.  I continue to explore more ways to make this project accessible to everybody who wishes to participate.  Mailing lists.  IRC.  Face to face.  Got a suggestion?  Let me know!

In short, I truly believe that the wiki was necessary for this project.  Necessary, but not sufficient.

There is no they

Phil Ringnalda: The world of weblogs isn't a big city.

Excellent.  I don't even begin to know how to excerpt this.  Everybody, go read it in it's original form.  Immediately.

Then, and only then, go read this.

Always wear protection

Shannon Campbell: ...can I have my underwear back now?

Process of Elimination

Sherlock Holmes: If you can eliminate all the other choices, the remaining choice, no matter how improbable, is the answer.

Inclusiveness and Feedback

I probably met with 70 to 80 people over the last few days.  Some were from large companies/organizations, many more were from small companies or informal organizations.  I have a large number of specifics that I will inject into the wiki over the course of the upcoming weekend, but for now, some overall themes.

The final overall theme that seemed consisitent is the importance of security in an API.  Given the number of people blogging in conferences and public locations, simple md5 or sha1 hashes of passwords is not sufficient.  What's needed is a solution that is not only easy to implement, but also one that is easy to administer.


Halley's Comment No More?

What happened to Halley?

Feed explorations

All LiveJournal test users now have Atom feeds.  Here is an example.  I happened to pick one that was in Russian, demonstrating the use of UTF-8.  Also notable is that issued dates don't have time zones - something that LiveJournal doesn't track for this particular field.  I'm particularly looking forward to the point in time when LiveJournal starts exploring the serialization of threaded comments.

Simon Fell's Atom feed demonstrates explicitly marking the namespace on every item.  More interestingly, he makes use of xml:base to have relative urls in links, ids, and even content.

Gordon Weakliem has created feeds for, and is exploring issues with dates and times.

Python 2.3

Simon Willison: After numerous alphas and betas, Python 2.3 has been released. has highlights of the release, while A.M. Kuchling's What's New in Python 2.3 goes in to a bit more detail.


Technology is a Ratchet

Clay Shirky: What both optimists and pessimists believed, however, deep down, was that their opinions mattered.

Question: in this context, won't rules alone  amount to little more than organized opinions?

Custom System Development

Joe Gregorio: I am pleased to announce the formation of my company, BitWorking, Inc., a custom system development company able to provide tailored software for Windows Desktop, Embedded and Web Services applications.

Dinner on Thursday?

Tomorrow, the wiki will be six weeks old.  It has been joined by a weblog, an mailing list, and an irc channel.

This coming week is time for some good, old fashioned, face to face discusssions.  I'm going to meet with various weblogging related people who reside in or near the greater San Francisco bay area.  My agenda is pretty full, but I have reserved Thursday night(the 31st) for a webloggers dinner.  Leave a comment if you are interested.

Adam Bosworth

Adam Bosworth: I've been planning to start a weblog for quite some time but, unsually for me, I've suffered from writers block at the thought that this would be so public. Well it is time to tough it out  Subcribed!


Jason Brome: quickSub - making RSS and ATOM feed subscription easier for your readers!

NewsGator HTTP report card

Congratulations to Greg Reinacker for being the first to publish proper HTTP support results.  Two problems each were found in NewsGator and the tests themselves, all have been fixed.  Users of NewsGator should see the improvments in an upcoming 1.3 release.


Paul Festa

Tim Bray: I just got a call from Paul Festa of C|Net, who’s working on a story about Pie/Echo/Atom.  I got a similar call late yesterday.

Better Messaging

Sean McGrath: The real beauty of messaging is the tremendous scope it provides for intervention in message flows. Where you can intervene, you can transform and Transformation is the only truth.

I agree.  However, I would like to add that once you accept that, you can go on to produce better models, ones that are more suited to transformation.

For starters, it helps if the messages are cleanly and thoroughly specified.  And adopt the use of a common set of data types when possible.  And ones that don't obscure structure with XML escaping.

Signing Comments

Simon Willison has joined a discussion on signing comments.  This is a topic that has fascinated me for some time, but I haven't done anything about... yet.

Having signature authenticating web service would also be valuable in a posting API.

Well Specified Web

Mark Pilgrim has been busy capturing the rationalle for - as well as actually implementing - a simple yet comprehensive test suite for the transport transfer level semantics of well behaved and bandwidth friendly HTTP based aggregators.  Bravo.

Stealing Bandwidth

I had two separate individuals including images from my site in their weblogs instead of hosting the images on their own site.  One has now ceased.  Thanks.  The other hasn't gotten the message yet.

Please don't do that.

The SSF Wiki

Rogers Cadenhead: Here's the new wiki, which contains the current RSS 2.0 specification: Feel free to add comments.

Atom Mailing List

Joe Gregorio: A new mailing list has been created for discussing Atom. It is being graciously hosted by IMC, the Internet Mail Consortium.  Special thanks to Paul Hoffman of IMC for setting up the list.

Seeking common ground

Luke Hutteman: If the advisory board were to vote on possibly unfreezing the RSS 2.0 spec, this may really change some things. Only then could they truly move RSS forward and possibly add some of the extensions that Atom is talking about. It might even allow the Atom project to be folded into the RSS standard so that we can keep a single all-encompassing spec. Now that would truly be a step forward.

RSS Moves a Step Forward

Dan Gillmor: in a vote yesterday -- about whether to create a new RSS validator -- Simmons and Udell were the majority saying no.

There clearly is a lot of RSS news today, and I'll let it settle down before commenting on the rest of it, but this seemed safe to  comment on now.

So... apparently there won't be a third RSS validator.  But... will the UserLand validator become maintained again?

To reaffirm statements made previously:

Feedback on feeds

A look at two high profile and widely deployed necho/atom feeds: Blogger and TypePad, and some thoughts  on the implications of escaping and mime types.


Two paths

Dave Johnson: That really sucks. Not the part about Andy being wrong, that happens all the time.  heh.

This is a complex issue.  Some lessons learned along the way:

An example of something that does solve the issue: JDBC.

Now that the denial phase is over, there are two paths to chose from.

Reaching consensus

Clay Shirky: ...Twenty minutes later, one person stands up and gets their coat, and what happens? Suddenly everyone is getting their coats on, all at the same time. Which means that everyone had decided that the party was not for them, and no one had done anything about it, until finally this triggering event let the air out of the group, and everyone kind of felt okay about leaving.  This effect is so steady it's sometimes called the paradox of groups

One such event seems to have occurred over the past 48 hours.

Can't get there from here

Haven't made it to Portland yet.  Weather delays.  Misrouting.  And more weather delays.



New blogs: echonews and fecho.  Rich Salz has started a series of articles.

Everybody at SuperNova has been exceptionally supportive.  Offers of assistance abound.  Dan Gillmor asked some probing questions... hopefully he will ask more.

Joe updates the RFC, Mark prototypes.

There is a brief mention of Echo on MSNBC.

Adam Curry is taking a stand.  I respect that.  For the record, I have no plans of stopping support my support for the multiple flavors of RSS.  And I am following SSF-DEV.

Early hacking in necho

Isofarro: Not being content merely to produce a necho file I toyed with the idea of hacking together an aggregator. So I spent a bit of time scanning through the nntp//rss aggregator, and inserted a few lines here and there. And.... it works!

Pandora's box

Ted Leung: Now we all have to figure out how to live in a world that's forever changed.

Straw as a Necho Aggregator

Jeff Licquia: The patch is here.

Further progress towards the goal of "rough consensus and running code".


Monday - Dinner with Joi Ito
Tuesday - Echo BOF at SuperNova
Thursday - Bill of Rights for Web Services at O'Reilly OSCON
Friday - Cohesion at Applied XML Dev.Conf.

Fun with XSLT

Sjoerd Visscher: It would be very easy to create an XSLT that converts a Necho document into an XML-RPC document. It would even be doable to create an XSLT that converts the Necho schema to a Necho-to-XML-RPC XSLT. I think I'll have a go at that, it's a fun challenge I think.


Creating well-formed XHTML

Sjoerd Visscher: We have a simple client-side clean-up script that extracts well-formed XHTML from the WYSIWYG editor. It even handles pasted HTML from Word rather well. I discussed it with my collegues today, and we are willing to make that script available as open source if people are interested.


RFC: publishing API

Joe Gregorio: I have posted a rough draft, in RFC format, of a similar publishing API using not-Echo. I have also created a discussion area on the wiki for this proposal.

Nested Items in Echo?

Bruce Loebrich: I want a way to represent structure as well as content and I would like to continue to transclude things like my entries and blogrolls on my site but use Echo and XSLT to do it. Would it make sense to allow feeds, entries and comments to nest within each other?


Dave Winer: Here's the Wiki page where people are deciding whether to use XML-RPC and/or SOAP. You can express your opinion if you like. That's how it works.  Excellent!  Now lets see if we can have a respectful dialog on the subject?


necho 0.1

I've taken a 2003/07/01 snapshot of the maximal example of the format previously known as echo.  The reason for this exercise is that I plan to start prototyping using this as a baseline.  I invite others to do likewise.  Let me know via comments of any implementations.  In particular, I am interested in templates that others can use.


Intellectual Blindness

Don Park: How we interpret what we read is subject to our biases.  At the extreme, total blindness occurs, fabricating something entirely different.

Facinating.  Guilty as charged.  Subscribed.

Subjective and objective dates

Two different, but related needs.  In most cases, the subjective and objective dates will reflect the same underlying point in time.  But we need both points of view.


Forward Motion!

XML-RPC spec updated.  "Site Syndication Format" launched.  Lots of RSS 2.0 specs?  Why is all this happening?  I have a theory


Can you hear it?

Ben Trott and Sjoerd Visscher explain changes that they see as necessary for forward motion.  Dave Winer links to both.

This communication simply wasn't possible a month ago.  It wasn't possible two weeks ago.  It is possible now.

Aaron Swartz identifies the one place where communication isn't occurring.  I'm confident that we will work through this.  Forward motion is the key.  We don't have to be in a hurry to name what is being produced.  Every day provides a new opportunity for us to discover a way to work together.


Escaped HTML discussion

An update on yesterday's position, based on feedback.


Making encoding explicit

I'd like to see a single element, say <encoded>, be introduced that makes such encoding explicit.  We can decide where such elements are allowed.


No Inventions

Tim Bray: We need to crystallize and refine and clarify and write it down so that any literate human can write it and any competent programmmer can implement it and no commercial interests can hijack it. That’s all.

My experience with standards bodies exactly matches Tim's.  We should have a small core of approximately seven required elements.  Ones that we know everybody can support.  Not guess, but know.

Author.  Link and Id.  Two dates.  And content.  We pretty much are already in the ballpark.  Perhaps title and we have a core.

We can still encourage innovation and experimentation - in extensions.  Tim Bray was one of the authors of one such way to do that.

We can even standardize some of these extensions.

Jon's conversation with Mr Safe

Jon Udell: I'm never a fan of fixing what ain't broken. Arguably, though, there was no other way forward in this case. The worm at the core of the weblog apple had to be extracted. It's true that vast numbers of yet-to-be-written RSS applications need no more than what RSS already does, or can be extended to do using the mechanisms it sanctions. It's also true that vast numbers of yet-to-be-written RSS applications will require RSS to evolve. It had to become possible for that evolution to occur in an open and vendor-neutral way, and when the dust settles I think it will be possible.


My daughter graduated from elementary school today.

My son completed the classroom portion of drivers education today.

Setting a few things straight

Help me find better choice, and I will gladly choose it.  Until then, I plan to continue to respect the roadmaps.  Both of them.


Dave Winer on Echo

Dave Winer: Tentative endorsement of Echo

I'm not excerpting further, based on Dave's request.  Needless to say, this is quite a significant event.

I can't speak for others, nor can I make a promise for perpetuity.  However, I believe that one thing that people have learned to expect from me is that I am an early adopter, and enthusiastic supporter, of every format that I can find a way to support.

There is no FAQ

Dave Winer: link should be used only to link to the article being described by the post

This type of information is most helpful.  I could imagine modifying the validator to flag items whose link tag appear to be relative to the enclosing channel's link.

Only what is Required

Suppose tool X claims that it requires feature Y.  The first question to ask is whether other tools have similar requirements.  Find out what is common.  Refactor.

Then see if what results is really required.  See if there are other ways of achieving the same goal which might be better.

If the requirement survives to this point, see if it would place an unreasonable burden on other tools to support this feature.  If not, the next stage is to see if we can agree to make the feature required.  Required is good.  It provides clear guidance as to what is expected.  It makes the results predictable.


Now let's standardize and simplify.  A well formed blog entry will have two universal resource identifiers (URI's) associated with it.  One, a permaLink, will identify the preferred external "name" for this blog entry.  The other, a postId, will identify the preferred internal "name".


Bill of Rights for Web Services

If you can make it to Portland in July, stop by this OSCon session or the XML DevConDave Winer will be keynoting at the DevCon. 

Chris Sells tells me that there are only a few seats left, but he could be talked into seeking a bigger room.

Road Map

Road map from here on out?  I'm going to pick a topic at a time from the wiki and explore it in depth on my weblog.


Simon, now with Valid RSS

Simon Phipps: Hurrah! Blogger has fixed both the date and the escaping of special characters and my RSS feed now validates - I have republished the whole site just to make sure. And for what it's worth, my RSS feed is now funky, which it wasn't before.


A week ago I quietly introduced a wiki to discuss the anatomy of a well formed log entry.  It got a lot of interest.  And a week later, it is still being actively developed.

Wow.  It seems that I am not the only one desiring a bit of forward motion in this area.

The Open Source Paradigm Shift

Tim O'Reilly: What matters are three trends: software commoditization; user-customizable systems; collaboration.  The money doesn't come from selling software. People who don't know this have a paradigm failure. [via Cory Doctorow]

Related concept: Software Entropy.

Meet Allie


From Second Chance Pet Adoptions:  Allie is a wonderful girl...she is still a bit shy in new situations, but loves to play. She was the first of the group to play with toys, and has been a bit of a loner since. She does play with her siblings, but not so rough and tumble like the others. She will come and sit with you on the couch, but is not too keen on being held a lot.


Half birthday

I don't normally think about such things, but as today is Tim Bray's birthday, I just realized that I am 41.5 today.

Imponderable for the day: does an excerpt really deserve an ellipsis if there is no more to the story?

P.S.  Happy 30th birthday, Tim!


To the ASF Board of Directors.

Recipes and Golf Scores

Phil Wolff: You should be able to define your own structure. The most common use of Microsoft Excel is making lists of things. No reason blogs can't give similar freedom to define a new package. Build from scratch or on the shoulders of other package definitions.

Blog Futures

Beth Goza: there being a time when having "publish to web" or "blog this" is as common in an application's drop down menu as print or save.

Beth's rss feed is neither funky nor valid.  Beth, on the other hand, is both.

RSS 2.funky

Randy Charles Martin: Funky elements are awarded funky points depending on how funky they are.  Randy gives top funky score to dc:date.  Based on my reading of the subject, I would disagree.