<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">	<channel>		<title>Truer Words - A Journal</title>		<link>http://www.truerwords.net/index/channel/xml</link>		<description>The online journal of Seth Dillingham: faith, family, code, cycling, joy, and pain.</description>		<language>en</language>		<copyright>Copyright 2008 seth@macrobyte.net</copyright>		<generator>Conversant's Weblog II plugin</generator>		<category>XML</category>		<item>	<title>Client-Side Storage in Web 2.0 Applications</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/5484/trackback</trackback:ping>	<link>http://codinginparadise.org/weblog/2006/04/now-in-browser-near-you-offline-access.html</link>	<pubDate>Wed, 26 Apr 2006 21:21:19 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/5484</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=5484#msg5484</comments>	<category>Technology</category>	<category>DHTML / AJAX</category>	<category>Programming</category>	<category>Web Sites</category>	<category>XML</category>	<description>&lt;p&gt;&lt;a href=&quot;http://codinginparadise.org/weblog/2006/04/now-in-browser-near-you-offline-access.html&quot;&gt;This looks to be a fantastic breakthrough.&lt;/a&gt; I think Brian A. will get a kick out of the storage system he describes... it sounds awfully familiar. ;-)&lt;/p&gt;&lt;blockquote cite=&quot;http://codinginparadise.org/weblog/2006/04/now-in-browser-near-you-offline-access.html&quot;&gt;	&lt;p&gt;I'm proud to announce the immediate availability of dojo.storage and a new web-based editor named Moxie.	&lt;/p&gt;	&lt;p&gt;Imagine if web applications could store megabytes of data on the client-side, in the browser, both persistently and securely. No server needed.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;I'm going to have to implement this for Conversant. Soon.&lt;/p&gt;&lt;p&gt;(Thanks for the link, &lt;a href=&quot;http://spoken.phrasewise.com/articles/2006/04/26/dojo-storage&quot;&gt;Daniel&lt;/a&gt;.)&lt;/p&gt;</description>	</item><item>	<title>Character Sets &quot;Oops&quot;</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/5477/trackback</trackback:ping>	<link>http://www.truerwords.net/5477</link>	<pubDate>Fri, 21 Apr 2006 14:00:04 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/5477</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=5474#msg5477</comments>	<category>Humor</category>	<category>Technology</category>	<category>Conversant</category>	<category>XML</category>	<description>&lt;p&gt;After my last post about &lt;a href=&quot;http://www.truerwords.net/5474&quot;&gt;switching to UTF-8&lt;/a&gt; for all of our content in &lt;a href=&quot;http://conversant.macrobyte.net/&quot; title=&quot;Macrobyte's Groupware and Content Managent software&quot;&gt;Conversant&lt;/a&gt;, people wrote to say that my XML feed had problems since we made the change.&lt;/p&gt;&lt;p&gt;Heh. That's ironic.&lt;/p&gt;&lt;p&gt;Anyway, some wrote to me privately, as if a bug is something I'd be embarrassed about. &amp;quot;Oh no! A bug in the software! Say it isn't so!&amp;quot; All this time I thought my software was bug-free, like everybody else's. (What matters is how we deal with them. They're inevitable.)&lt;/p&gt;&lt;p&gt;Well, now the bug should be fixed. All &amp;quot;above ascii&amp;quot; text in the XML output was being automatically converted to numerical entities (like &amp;amp;234;), but that's no longer necessary when the output is UTF-8.&lt;/p&gt;&lt;p&gt;In other words, my “curly quotes” — and long dashes — should all look fine now. Feel free to give me a shout if something looks wrong, though.&lt;/p&gt;</description>	</item><item>	<title>Conversant Patterns Contest is Live!</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/5466/trackback</trackback:ping>	<link>http://www.truerwords.net/5466</link>	<pubDate>Mon, 10 Apr 2006 15:27:08 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/5466</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=5466#msg5466</comments>	<category>News</category>	<category>Customers</category>	<category>Macrobyte</category>	<category>Technology</category>	<category>Conversant</category>	<category>Web Sites</category>	<category>XML</category>	<description>&lt;p&gt;At long last, the &lt;a href=&quot;http://www.free-conversant.com/patterncontest/&quot;&gt;Conversant patterns contest&lt;/a&gt; is live!&lt;/p&gt;&lt;p&gt;Prizes include a 60 GB video iPod with a $50 iTunes gift certificate, a 30 GB iPod, and one year of Macrobyte's &quot;Domain Hosting&quot; package!&lt;/p&gt;&lt;p&gt;This contest was originally the idea of &lt;a href=&quot;http://www.terryfrazier.com/weblog/&quot;&gt;Terry Frazier&lt;/a&gt;. Terry, &lt;a href=&quot;http://www.wakingupcosts.net/&quot;&gt;Clark Venable&lt;/a&gt;, and &lt;a href=&quot;http://macrobyte.net/&quot; title=&quot;Macrobyte Resources, my company.&quot;&gt;Macrobyte&lt;/a&gt; are the sponsors.&lt;/p&gt;&lt;p&gt;We've been planning this for months. :-)&lt;/p&gt;</description>	</item><item>	<title>Setting Attributes on Elements in Frontier's Compiled XML</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/4843/trackback</trackback:ping>	<link>http://www.truerwords.net/4843</link>	<pubDate>Fri, 03 Jun 2005 19:33:12 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/4843</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=4843#msg4843</comments>	<category>Technology</category>	<category>Frontier</category>	<category>XML</category>	<description>&lt;p&gt;Ugh, the subject is a mouthful, but the topic is very simple if you know Frontier at all.&lt;/p&gt;&lt;p&gt;To any Frontier developers who read my site but may not be paying attention to the kernel developer's mailing list: could you take a look at &lt;a href=&quot;http://groups.yahoo.com/group/frontierkernel/message/1059&quot;&gt;this message&lt;/a&gt; and tell me if you see any problems with my little suggestion?&lt;/p&gt;&lt;p&gt;Please, no ranting about... well, anything. It's a given that this is a feature we should have had yesterday.&lt;/p&gt;</description>	</item><item>	<title>The Unpublished Hack: UDDI in Mozilla</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/4713/trackback</trackback:ping>	<link>http://www.truerwords.net/4713</link>	<pubDate>Wed, 06 Apr 2005 16:31:57 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/4713</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=4711#msg4713</comments>	<category>Essays</category>	<category>Books</category>	<category>Technology</category>	<category>Mozilla</category>	<category>Programming</category>	<category>XML</category>	<description>&lt;p&gt;This is one of the five 'hacks' that I wrote for the book, &lt;a href=&quot;http://www.truerwords.net/articles/mozilla/firefoxhacks.html&quot;&gt;Firefox Hacks&lt;/a&gt;.It wasn't included in the book because it's too geeky even for mostadvanced web developers, and Firefox's support for UDDI is incomplete.Still, if you need to work with UDDI, then Firefox could make anexcellent test-bed because it's so easy to rapidly develop a userinterface, and the missing pieces are easy to download and install.&lt;/p&gt;&lt;p&gt;This guide is just intended to help you start working with UDDI in Firefox.It's not comprehensive, by any means. If you know nothing about UDDI, thebest you'll get here is a link for learning more somewhere else.&lt;/p&gt;&lt;p&gt;Note that everything mentioned in this 'hack' applies equally to Firefoxand the Mozilla Application Suite (a.k.a. Seamonkey).&lt;/p&gt;&lt;p&gt;Read &lt;a href=&quot;http://www.truerwords.net/articles/mozilla/firefoxhacks_uddi.html&quot;&gt;Hacking on UDDI in Mozilla or Firefox&lt;/a&gt;.&lt;/p&gt;</description>	</item><item>	<title>MacMerc.com Reviews Firefox Hacks</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/4676/trackback</trackback:ping>	<link>http://www.macmerc.com/reviews.php?op=showcontent&amp;id=114</link>	<pubDate>Thu, 31 Mar 2005 14:23:29 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/4676</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=4676#msg4676</comments>	<category>News</category>	<category>Books</category>	<category>Technology</category>	<category>Mozilla</category>	<category>Programming</category>	<category>XML</category>	<description>&lt;p&gt;&lt;a href=&quot;http://www.macmerc.com/reviews.php?op=showcontent&amp;amp;id=114&quot;&gt;MacMerc.com: Review &gt;&gt; Firefox Hacks by O'Reilly&lt;/a&gt;&lt;/p&gt;&lt;blockquote cite=&quot;http://www.macmerc.com/reviews.php?op=showcontent&amp;amp;id=114&quot;&gt;	For example, in just the first hundred pages you'll learn how to	migrate profiles between platforms and versions, tear web pages	apart with the DOM Inspector, detail security limitations and	deploy Firefox on a network. &lt;em&gt;In the next couple hundred pages	you'll get into advanced topics like working with XML-RPC, SOAP and	other XML technologies&lt;/em&gt;, developing applications in Mozilla's XUL	and hacking into the core of Firefox itself modifying menus and	behavior. [&lt;i&gt;emphasis added&lt;/i&gt;]&lt;/blockquote&gt;&lt;p&gt;Cool! Of all the topics they could have mentioned in this book, they picked&lt;a href=&quot;http://www.truerwords.net/articles/mozilla/firefoxhacks.html&quot;&gt;some of mine&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;On that note, I'd like to remind everybody that buying &lt;a href=&quot;http://www.amazon.com/exec/obidos/redirect?tag=truerwords-20&amp;path=tg/detail/-/0596009283?v=glance&quot;&gt;Firefox Hacks&lt;/a&gt;through one of my links (or anything else through one of my links toAmazon, as seen on most pages on the web site) will help me raise$6,000 towards the &lt;a href=&quot;http://www.truerwords.net/fundraising/how-to-pmc.html&quot; title=&quot;Pan-Mass Challenge, a charity ride across Massachusetts&quot;&gt;PMC&lt;/a&gt;, for cancer research and treatment. So far, I haven't sold &lt;i&gt;anything&lt;/i&gt;.&lt;/p&gt;</description>	</item><item>	<title>My Contributions to O'Reilly's Firefox Hacks</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/4644/trackback</trackback:ping>	<link>http://www.truerwords.net/4644</link>	<pubDate>Tue, 22 Mar 2005 17:12:48 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/4644</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=4644#msg4644</comments>	<category>Essays</category>	<category>News</category>	<category>Books</category>	<category>Technology</category>	<category>Mozilla</category>	<category>Programming</category>	<category>XML</category>	<description>&lt;p&gt;&lt;img src=&quot;http://www.oreilly.com/catalog/covers/firefoxhks.s.gif&quot; width=&quot;127&quot; height=&quot;190&quot; align=&quot;left&quot; border=&quot;0&quot; alt=&quot;Firefox Hacks book cover&quot; style=&quot;margin-right: 0.5em;&quot; /&gt;During the final quarter of 2004, I spent about eighty hours writing five hacks for O'Reilly's new book, Firefox Hacks. (Nigel McFarlane wrote the bulk of it.)&lt;/p&gt;&lt;p&gt;This story, which is both a journal of my work on the hacks and a review of what I wrote, is a little too long for the home page. You can read the whole thing at &lt;a href=&quot;http://www.truerwords.net/articles/mozilla/firefoxhacks.html&quot;&gt;Articles -&amp;gt; Mozilla -&amp;gt; Firefox Hacks&lt;/a&gt;.&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;</description>	</item><item>	<title>Phil Responds (sorta) re: HTML Comments and Linking Technologies</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/4630/trackback</trackback:ping>	<link>http://www.truerwords.net/4630</link>	<pubDate>Fri, 18 Mar 2005 15:18:01 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/4630</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=4599#msg4630</comments>	<category>Technology</category>	<category>CMS</category>	<category>Web Sites</category>	<category>XML</category>	<description>&lt;p&gt;I thought &lt;a href=&quot;http://philringnalda.com/&quot;&gt;Phil&lt;/a&gt; was ignoring me.I wrote to him on the 7th, after posting about HTML comments and &lt;a href=&quot;http://www.truerwords.net/4599&quot;&gt;embeddedRDF&lt;/a&gt;, to ask what he thought of my suggesting regarding invisible linkspointing to autodiscovery documents.&lt;/p&gt;&lt;p&gt;He wasn't ignoring me, he just &lt;a href=&quot;http://philringnalda.com/blog/2005/03/think_this_through_for_me_wudja.php&quot;&gt;couldn't put his brain into gear&lt;/a&gt;for this one. (I'm not picking on him, that's what he said!).&lt;/p&gt;&lt;p&gt;He asked people to comment on my idea. Unfortunately, most of the comments have nothing to do with the problem at hand, and many of the commentors apparently don't understand the issue. (They talk about everything fromthe usefulness of trackback to the second coming of &amp;lt;blink&amp;gt;.&lt;/p&gt;&lt;p&gt;For the record, and perhaps to help bring the discussion back to the real point, here's the bulk of the email I sent to him:&lt;/p&gt;&lt;blockquote class=&quot;dgQuote1&quot; cite=&quot;seth@macrobyte.net&quot;&gt;	&lt;p&gt;[SNIP]&lt;/p&gt;	&lt;p&gt;	&amp;lt;http://www.truerwords.net/4599&gt;&lt;/p&gt;	&lt;p&gt;	At the end of that post, I had an idea/suggestion for linking to	autodiscovery (or other types of metadata) documents that would seem to	work with pages having multiple items (which has always been one of the	two big problems with using a &amp;lt;link&gt; elements in the head).&lt;/p&gt;	&lt;p&gt;	I realize it's not perfect, as the &amp;lt;a&gt; tag doesn't actually have any	identifying information that would allow the machine to associate it	with a post on a page containing more than one (such as a weblog's home	page). So, what about something like this?&lt;/p&gt;	&lt;p&gt;	&amp;lt;a	rel=&quot;trackback:http://philringnalda.com/blog/2002/08/trackback_and_validation_summary.php&quot;	href=&quot;http://philringnalda.com/mt/mt-tb.cgi/55?_type=discover&quot;&gt;&amp;lt;/a&gt;&lt;/p&gt;	&lt;p&gt;	The single value in the rel attribute manages to both identify it as a	trackback-related url, and identify the server object it supports. It	appears to be a legal value, as the spec only says that the value of	rel must be a string with the space separating multiple values (but	we're only providing one long value).&lt;/p&gt;	&lt;p&gt;	It's logical, too, making it very easy to automate.&lt;/p&gt;	&lt;p&gt;	Any thoughts on this? I'm interested not just for the sake of	trackback, but because other technologies will have a chance to &quot;bloom&quot;	if this hurdle can be overcome.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;He didn't publish that email, which is good, but without it the peoplebeing asked to comment would really have very little on which tocomment.&lt;/p&gt;&lt;p&gt;Hopefully he'll post a follow-up with a link to this entry, so some more relevant discussion can take place.&lt;/p&gt;</description>	</item><item>	<title>Cool Interview with Sheila and Brent</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/4610/trackback</trackback:ping>	<link>http://www.drunkenblog.com/drunkenblog-archives/000500.html</link>	<pubDate>Wed, 09 Mar 2005 17:41:18 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/4610</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=4610#msg4610</comments>	<category>People</category>	<category>Technology</category>	<category>Brent Simmons</category>	<category>Programming</category>	<category>Web Sites</category>	<category>XML</category>	<description>	&lt;blockquote cite=&quot;http://www.drunkenblog.com/drunkenblog-archives/000500.html&quot;&gt;&amp;quot;On the support side, the biggest challenge for me has been learning	about all the weblog systems that work with MarsEdit.&amp;quot;&lt;/blockquote&gt;&lt;p&gt;That's Sheila Simmons, Brent's wife and half of Ranchero Software, in &lt;a href=&quot;http://www.drunkenblog.com/drunkenblog-archives/000500.html&quot;&gt;DrunkenBlog: Inside Ranchero with Brent and Sheila Simmons&lt;/a&gt;. Very cool interview with both both Brent and Sheila.&lt;/p&gt;&lt;p&gt;Sheila, in that quote, was articulating the client side of the problem &lt;a href=&quot;http://www.truerwords.net/4217&quot;&gt;I first described here&lt;/a&gt;, and which Simon Fell referred to as &lt;a href=&quot;http://www.pocketsoap.com/weblog/2003/03/1126.html&quot;&gt;slightly uniform interfaces&lt;/a&gt;. (Eventually we'll get to the point that everybody has to special-casesomething into every feature for everybody else's bugs, or we just codeto the spec and &amp;quot;damn the torpedoes.&amp;quot;)&lt;/p&gt;&lt;p&gt;Most of the interview has nothing to do with this subject, but I had toquote &lt;i&gt;something&lt;/i&gt;...&lt;/p&gt;</description>	</item><item>	<title>Creative Commons, Trackback, HTML Comments, and Embedded RDF</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/4599/trackback</trackback:ping>	<link>http://www.w3.org/TR/REC-html40/intro/sgmltut.html#idx-HTML</link>	<pubDate>Mon, 07 Mar 2005 23:57:15 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/4599</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=4599#msg4599</comments>	<category>Humor</category>	<category>Technology</category>	<category>CMS</category>	<category>Conversant</category>	<category>DHTML / AJAX</category>	<category>Web Sites</category>	<category>XML</category>	<description>&lt;p&gt;How many years do I have to work with HTML before I stop discoveringimportant technical points of which I should have been aware all along?&lt;p&gt;&lt;p&gt;Today's rather embarrassing example regards the format of &lt;a href=&quot;http://www.w3.org/TR/REC-html40/intro/sgmltut.html#idx-HTML&quot;&gt;HTMLcomments&lt;/a&gt;. This completely took me by surprise.&lt;/p&gt;&lt;blockquote cite=&quot;http://www.w3.org/TR/REC-html40/intro/sgmltut.html#idx-HTML&quot;&gt;	&lt;P&gt;HTML comments have the following syntax:&lt;/P&gt;	&lt;pre class=&quot;code&quot;&gt;    &amp;lt;!-- this is a comment --&amp;gt;    &amp;lt;!-- and so is this one,    which occupies more than one line --&amp;gt;&lt;/pre&gt;	&lt;P&gt;	White space is not permitted between the markup declaration open	delimiter(&quot;&amp;lt;!&quot;) and the comment open delimiter (&quot;--&quot;), but is	permitted between the comment close delimiter (&quot;--&quot;) and the markup	declaration close delimiter (&quot;&amp;gt;&quot;). A common error is to include a	string of hyphens (&quot;---&quot;) within a comment. Authors should avoid	putting two or more adjacent hyphens inside comments.&lt;/P&gt;	&lt;P&gt;	Information that appears between comments has no special meaning (e.g.,	&lt;a href=&quot;#character-entities&quot;&gt;character references&lt;/a&gt; are not	interpreted as such).&lt;/P&gt;	&lt;P&gt;	Note that comments are markup.&lt;/P&gt;&lt;/blockquote&gt;&lt;p&gt;In other words, comments don't end with &quot;--&amp;gt;&quot;. They end with &quot;--&quot;followed &lt;i&gt;eventually&lt;/i&gt; by an occurence of '&amp;gt;'.&lt;/p&gt;&lt;p&gt;This explains problems I've seen for years but never bothered to dig intodeeply enough. I thought that the HTML comment delimiters were simply a&quot;balanced pair&quot;, similar to the &amp;lt; and &amp;gt; that mark the start and endof a tag. A &quot;&amp;lt;!--&quot; followed at some point by a &quot;--&amp;gt;&quot;.&lt;/p&gt;&lt;p&gt;Practical implications? There are a few. The most obvious (in my world) isthat one can't reliably &quot;comment out&quot; the results of some Conversantmacros. For example, if the macro returns a user-defined string from adatabase (such as a message subject), that string might include a &quot;--&quot;. If itdoes, then the very next '&amp;gt;' will close the comment.&lt;/p&gt;&lt;p&gt;Trackback &quot;autodiscovery&quot; data is RDF embedded in HTML comments. It lookssomething like this:&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;&lt;code&gt;&amp;lt;!--&amp;lt;rdf:RDF xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;    xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot;    xmlns:trackback=&quot;http://madskills.com/public/xml/rss/module/trackback/&quot;&amp;gt;&amp;lt;rdf:Description    rdf:about=&quot;http://www.example.com/example/page.html&quot;    dc:identifier=&quot;http://www.example.com/example/page.html&quot;    dc:title=&quot;HTML Comments -- They Don't Work How You Thunk&quot;    trackback:ping=&quot;http://www.example.com/4594/trackback&quot; /&amp;gt;&amp;lt;/rdf:RDF&amp;gt;--&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;See the problem? The dc:title attribute of the Description element containsa &quot;--&quot;, and so the comment is closed by the very next '&amp;gt;'. That leavesthe &amp;lt;/rdf:RDF&amp;gt; and the --&amp;gt; outside of the comment, and in factFirefox displays the --&amp;gt; on the web page!&lt;/p&gt;&lt;p&gt;Creative Commons Licenses work in a similar way: they embed licensinginformation in the HTML via comments. They're not bitten by this commentsyntax problem, though, because they have more control over the attributevalues of the tags, and can intentionally avoid the double-hyphenproblem.&lt;/p&gt;&lt;p style=&quot;color: #666;&quot;&gt;See Kendall Grant Clark's &lt;ahref=&quot;http://www.xml.com/pub/a/2003/01/15/creative.html&quot;&gt;Creative Comments: On the Uses and Abuses of Markup&lt;/a&gt; for a discussion of the &lt;em&gt;semantic&lt;/em&gt; problems with this approach, andPhil Ringnalda's &lt;a href=&quot;http://philringnalda.com/blog/2002/08/trackback_and_validation_summary.php&quot;&gt;throrough review of the trackback problem&lt;/a&gt; (years old).&lt;/p&gt;&lt;p&gt;I didn't see any mention, in my brief research, of using a &lt;a href=&quot;http://www.technorati.com/help/tags.html&quot;&gt;technorati-style link&lt;/a&gt;to solve the problem. Instead of embedding the RDF in the html, we couldlink to an &lt;i&gt;RDF autodiscovery file&lt;/i&gt; with an invisible-to-people linklike &amp;lt;a href=&quot;http://www.example.com/mt-trackback.cgi?type=autodiscover&amp;id=4594&quot;rel=&quot;autodiscovery&quot;&amp;gt;&amp;lt;/a&amp;gt;. &lt;i&gt;Any reason that wouldn't work?&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.truerwords.net/4599/reply&quot;&gt;Comments appreciated.&lt;/a&gt;&lt;/p&gt;</description>	</item><item>	<title>Free Books from O'Reilly! (Sort of.)</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/4571/trackback</trackback:ping>	<link>http://www.truerwords.net/4571</link>	<pubDate>Mon, 21 Feb 2005 23:33:03 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/4571</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=4571#msg4571</comments>	<category>Books</category>	<category>Technology</category>	<category>Mozilla</category>	<category>Programming</category>	<category>XML</category>	<description>&lt;p&gt;&lt;img width=&quot;128&quot; height=&quot;96&quot; border=&quot;0&quot; align=&quot;right&quot; src=&quot;http://media.truerwords.net/images/miscellaneous/flashlight.jpg&quot; alt=&quot;Mystery Flashlight&quot; title=&quot;Can you guess why this picture is here?&quot; /&gt;Last year I contributed five articles to a book that &lt;a href=&quot;http://www.oreillynet.com/&quot;&gt;O'Reilly&lt;/a&gt; is publishing in March. For the insane amount of time I put into my articles, the pay was very bad. &lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;That's not a complaint:&lt;/span&gt; I knew what I was agreeing to from the beginning. I took it on because I'd like to do more writing, and I'd like to start developing a reputation in the area covered by this book. (How odd, then, that I'm not yet ready to say what that is!)&lt;/p&gt;&lt;p&gt;There was a bit of confusion when I first signed the author agreement, so I wasn't terribly surprised when the check didn't show up at the appointed time. I contacted the editor, who apologized profusely... and then more than made up for the delay by allowing me to pick out a few books.&lt;/p&gt;&lt;p&gt;I've had three books on &lt;a href=&quot;http://www.amazon.com/gp/registry/registry.html/102-9468631-8899324?%5Fencoding=UTF8&amp;id=356BDSJL2Q8AM&quot;&gt;my Amazon wishlist&lt;/a&gt; for months, so I just sent him that list: &lt;a href=&quot;http://www.oreilly.com/catalog/perlxml/index.html&quot;&gt;Perl &amp;amp; XML&lt;/a&gt;, &lt;a href=&quot;http://www.oreilly.com/catalog/pwebserperl/index.html&quot;&gt;Programming Web Services with Perl&lt;/a&gt;, and the fourth edition of the venerable &lt;a href=&quot;http://www.oreilly.com/catalog/jscript4/index.html&quot;&gt;JavaScript: The Definitive Guide&lt;/a&gt;. All three arrived today. Ehhhxxxcellent!&lt;/p&gt;&lt;p&gt;Over the years, my most-ever-used technical book has proven to be the second edition of JavaScript: The Definitive Guide. O'Reilly sent it (and seven or eight other titles) for helping to edit &lt;a href=&quot;http://www.tidbits.com/matt/&quot;&gt;Matt Neuburg's&lt;/a&gt; &lt;a href=&quot;http://www.oreilly.com/catalog/frontier/index.html&quot;&gt;Frontier: The Definitive Guide&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;It seems a little odd that the JavaScript book is my most used, considering how rarely I talk about js here or anywhere else. I mention UserTalk-related stuff all the time, but never refer to any UserTalk documentation (I think the whole language is stuffed into my head already). JS is probably my second most used &amp;quot;language&amp;quot;. Perl is next on the list, though that's just in the last couple years. (I'm not counting HTML or CSS as languages, and C comes in bursts).&lt;/p&gt;&lt;p&gt;Back to the original point: do they count as free books, when they're thrown in as a bonus after eighty hours of labor? &lt;tt&gt;;-)&lt;/tt&gt;&lt;/p&gt;</description>	</item><item>	<title>The Cheesy RSS Documentary. Dream. Thingie.</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/4533/trackback</trackback:ping>	<link>http://www.truerwords.net/4533</link>	<pubDate>Mon, 31 Jan 2005 19:23:44 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/4533</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=4533#msg4533</comments>	<category>Humor</category>	<category>Technology</category>	<category>Programming</category>	<category>XML</category>	<description>&lt;p&gt;Phil's dream about a documentary on &lt;a href=&quot;http://philringnalda.com/blog/2005/01/how_do_you_stand_it.php&quot;&gt;the history of RSS&lt;/a&gt; is hilarious. He left out RSS 2.0, but it's still very funny (as long as you know a little about the subject).&lt;/p&gt;</description>	</item><item>	<title>Format Nazi!? Good Grief, No Wonder the Empires are Taking Over</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/4525/trackback</trackback:ping>	<link>http://www.truerwords.net/4525</link>	<pubDate>Wed, 26 Jan 2005 12:52:23 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/4525</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=4525#msg4525</comments>	<category>Humor</category>	<category>People</category>	<category>Technology</category>	<category>Brent Simmons</category>	<category>Programming</category>	<category>Web Sites</category>	<category>XML</category>	<description>&lt;p&gt;Dave writes that he thinks &lt;a href=&quot;http://www.reallysimplesyndication.com/2005/01/23#a285&quot;&gt;RSS formats should be merging&lt;/a&gt; instead of diversifying right now, because the aggregator developers are under attack by the likes of Microsoft and Yahoo. (They see a market and have started to consume it.) This is probably in reference to the fact that an RFC for RSS 1.1 was recently published, and is not backwards-compatible with RSS 1.0 or any of the other RSS formats.&lt;/p&gt;&lt;p&gt;So what happens? He allows &lt;a href=&quot;http://www.reallysimplesyndication.com/comments?u=reallySimpleSyndic&amp;p=285&amp;link=http%3A%2F%2Fwww.reallysimplesyndication.com%2F2005%2F01%2F23%23a285&quot;&gt;comments on his post&lt;/a&gt;, and it explodes into name calling and the blame game... all without Dave saying another word. They even referred to him as a &amp;quot;format nazi.&amp;quot; I can't even figure out what that means! (I assume you're &lt;a href=&quot;http://www.voicesofunreason.com/fullthread$111#VU111&quot;&gt;keeping score&lt;/a&gt;, Mark.)&lt;/p&gt;&lt;p&gt;I happen to agree with Dave (believe it or not), that the aggregatordevelopers are in serious trouble because Yahoo and Microsoft arebuilding aggregators into their web site services. At the same timethere's the problem of RSS-related features showing up in browserslike Firefox and Safari (under Tiger).&lt;/p&gt;&lt;p&gt;If you read that thread, does it really leave any doubt as to why thebig guys think they can take over the show, why they can consume thisemerging market? The programmers just want to fight about thetechnology. Dave's point is that the technology is there now, it'salready implemented. RSS (or whatever syndication format you prefer)is already available everywhere. While we're contemplating our navels(thinking about how to re-write the technology to do the same stuff ina different way) and fighting with each other, the other guys arequietly packing all of the users in a big bus and driving away.&lt;/p&gt;&lt;p&gt;There's a lot more in &lt;a href=&quot;http://inessential.com/?comments=1&amp;postid=3019&quot;&gt;this thread onBrent's site&lt;/a&gt;. I posted some more of my own thoughts there (quotedbelow), and am surprised to find that Dave twice told people to goback and read what I wrote.&lt;/p&gt;&lt;blockquote class=&quot;dgQuote1&quot; cite=&quot;http://inessential.com/?comments=1&amp;postid=3019&quot; type=&quot;cite&quot;&gt;	&lt;p&gt;I think what Phil (and Dave, actually) are saying is that we're	debating a technical issue in a bubble while business decisions are	being made (and markets are being consumed) around us.&lt;/p&gt;	&lt;p&gt;	We need to [find and/or go with] the solution that the biggest	producers of RSS feeds will be willing to use but which doesn't leave	desktop aggregators out in the cold.&lt;/p&gt;	&lt;/blockquote&gt;</description>	</item><item>	<title>WEBoggle: A Great Online Boggle</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/4435/trackback</trackback:ping>	<link>http://www.truerwords.net/4435</link>	<pubDate>Mon, 29 Nov 2004 22:06:45 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/4435</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=4435#msg4435</comments>	<category>Technology</category>	<category>DHTML / AJAX</category>	<category>Programming</category>	<category>XML</category>	<description>&lt;p&gt;While doing research for that same paper (mentioned yesterday), I also found &lt;a href=&quot;http://weboggle.shackworks.com/&quot;&gt;WEBoggle&lt;/a&gt;, an online version of Boggle. My favorite online game is &lt;a href=&quot;http://joggle.pixelsharp.com&quot;&gt;Joggle&lt;/a&gt;, but... man, WEBoggle is very cool.&lt;/p&gt;&lt;p&gt;OK, you can't do challenges, or play solo, and it's a little exhausting because games start every three-and-a-half minutes, but the technology is so well done! The page never reloads! They use XMLHttpRequest for all communication with the server. Every time you enter a word, it immediately asks the server if the word is legal or not, and scores it. The board is reloaded, the game is scored. All without reloading the page!&lt;/p&gt;&lt;p&gt;Very cool. Too bad there wasn't room for it in the paper (which, btw, I finished on time).&lt;/p&gt;</description>	</item><item>	<title>Scott Andrew: &quot;Where I've Been&quot;</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/4432/trackback</trackback:ping>	<link>http://www.truerwords.net/4432</link>	<pubDate>Sun, 28 Nov 2004 16:53:13 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/4432</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=4432#msg4432</comments>	<category>Technology</category>	<category>Mozilla</category>	<category>Programming</category>	<category>XML</category>	<description>&lt;p&gt;While doing some research for a paper (which, in fact, is due this afternoon!), I happened upon the home page of &lt;a href=&quot;http://www.scottandrew.com/&quot;&gt;Scott Andrew&lt;/a&gt;. Scott is the author of the &lt;a href=&quot;http://www.scottandrew.com/xml-rpc/&quot;&gt;XML-RPC JavaScript Message Builder&lt;/a&gt;, one of only a few browser-based XML-RPC javascript libraries.&lt;/p&gt;&lt;p&gt;Anyway, &lt;a href=&quot;http://www.scottandrew.com/main/music&quot;&gt;his music&lt;/a&gt; is the only reason I'm mentioning this right now. He's really good! Good enough that I've finally used up the last few dollars of an iTunes gift certificate (thanks Clark!) to buy his album, &lt;a href=&quot;http://www.scottandrew.com/main/buy&quot;&gt;Where I've Been&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;He actually offers all of his music for free on his site. So why purchase it? Well, for starters, it was only $6. Also, go read &lt;a href=&quot;http://www.scottandrew.com/main/entries/001148&quot;&gt;Different Currencies&lt;/a&gt;, where he describes his support for P2P and filesharing. After reading that, of course I paid for it!&lt;/p&gt;</description>	</item><item>	<title>Adam Bosworth on Keeping Technology Simple and Sloppy</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/4427/trackback</trackback:ping>	<link>http://www.truerwords.net/4427</link>	<pubDate>Mon, 22 Nov 2004 15:56:34 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/4427</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=4427#msg4427</comments>	<category>Humor</category>	<category>Technology</category>	<category>Programming</category>	<category>Web Sites</category>	<category>XML</category>	<description>&lt;p&gt;Adam Bosworth gave a speech about &lt;a href=&quot;http://www.adambosworth.net/archives/000031.html&quot;&gt;simplifiedtechnologies&lt;/a&gt;. His basic message is that simple, sloppy, flexible technology is far more likelyto succeed than that which is structured, tight, orderly, and rigid.&lt;/p&gt;&lt;p&gt;I agree with much of what he has to say, but certainly not everything.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.truerwords.net/articles/web-tech/ab_on_kiss.html&quot;&gt;Read my essay response&lt;/a&gt; or &lt;a href=&quot;http://www.truerwords.net/4427/reply&quot;&gt;post a comment&lt;/a&gt;.&lt;/p&gt;</description>	</item><item>	<title>Attempting to Explain Mozilla's SOAP (and Related, XML-Based) Services</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/4412/trackback</trackback:ping>	<link>http://www.truerwords.net/4412</link>	<pubDate>Sat, 13 Nov 2004 18:32:26 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/4412</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=4412#msg4412</comments>	<category>Technology</category>	<category>Mozilla</category>	<category>Programming</category>	<category>Web Sites</category>	<category>XML</category>	<description>&lt;p&gt;I'm discovering -- the hard way -- that trying to tell someone how to use &lt;a href=&quot;http://lxr.mozilla.org/mozilla/source/extensions/webservices/docs/Soap_Scripts_in_Mozilla.html&quot;&gt;Mozilla's SOAP client&lt;/a&gt; is rather difficult. The client can only communicate with the same host that delivered the html and javascript files. Therefore, in order to test SOAP calls in javascript in html, you also need to provide SOAP services on the web server. (The soap client needs to talk to the SOAP server, but it can only talk to the same server that provided the web pages.)&lt;/p&gt;&lt;p&gt;Thankfully, there appear to be some &lt;a href=&quot;http://lxr.mozilla.org/mozilla/source/extensions/webservices/docs/New_Security_Model.html&quot;&gt;exceptions to this rule&lt;/a&gt; that don't require setting special preferences or cryptographically signing the scripts. It looks like a SOAP server can provide a special xml file which says it's ok to access the endpoints from anywhere. This doesn't remove all security restrictions, but it does allow some cross-domain scripting. &lt;a href=&quot;http://www.xmethods.net/&quot;&gt;xmethods.net&lt;/a&gt;, for example, appears to &lt;a href=&quot;http://www.xmethods.net/web-scripts-access.xml&quot;&gt;allow full access&lt;/a&gt; to all of their endpoints from web scripts, and they have plenty of toys to play with in demo scripts.&lt;/p&gt;&lt;p&gt;Note that I didn't say this makes it easy to explain, but it does allow for some examples which you can load up in the browser very quickly without setting up your own SOAP server!&lt;/p&gt;</description>	</item><item>	<title>Multi-Rule XUL Templates: Not Documented</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/4364/trackback</trackback:ping>	<link>http://www.truerwords.net/4364</link>	<pubDate>Tue, 02 Nov 2004 10:36:29 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/4364</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=4362#msg4364</comments>	<category>Technology</category>	<category>Mozilla</category>	<category>Programming</category>	<category>XML</category>	<description>&lt;p&gt;One important point I failed to include in last night's &lt;a href=&quot;http://www.truerwords.net/articles/mozilla/multi-rule-templates.html&quot;&gt;post about XUL templates&lt;/a&gt;: the problem I finally figured out is not documented anywhere, as far as I can see. XUL template documentation is generally found online in a few different places: &lt;a href=&quot;http://www.mozilla.org/docs/xul/xulnotes/template-multi.html&quot;&gt;mozilla.org&lt;/a&gt;, &lt;a href=&quot;http://www.xulplanet.com/references/elemref/ref_template.html&quot;&gt;XUL Planet&lt;/a&gt;, and online copies of the book, &lt;a href=&quot;http://books.mozdev.org/html/mozilla-chp-9-sect-2.html&quot;&gt;&amp;quot;Creating Application with Mozilla.&amp;quot;&lt;/a&gt; Offline, my preferred resource is &lt;a href=&quot;http://www.phptr.com/bookstore/product.asp?isbn=0131423436&amp;redir=1&quot;&gt;Rapid Application Development with Mozilla&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;None of them mention that secondary template rules must use the same variable names as the first rule (though all of the examples work that way, nothing indicated that was a requirement). I have discovered one other place this is mentioned, though: in a single sentence in a reply to a comment at the bottom of &lt;a href=&quot;http://www.xulplanet.com/tutorials/xultu/advrules.html#cmnote-5&quot;&gt;one page on XUL Planet&lt;/a&gt;.&lt;/p&gt;&lt;blockquote class=&quot;quotedText&quot; cite=&quot;http://www.xulplanet.com/tutorials/xultu/advrules.html#cmnote-5&quot;&gt;	In fact, you are required to use the same container variable (the one	defined on the content tag) and the same member variable (defined in	the uri in the action) in all rules, although they don't need to point	to the same kind of data - Neil&lt;/blockquote&gt;</description>	</item><item>	<title>XUL Templates with Multiple Rules</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/4362/trackback</trackback:ping>	<link>http://www.truerwords.net/4362</link>	<pubDate>Mon, 01 Nov 2004 19:44:49 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/4362</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=4362#msg4362</comments>	<category>Essays</category>	<category>Technology</category>	<category>Mozilla</category>	<category>Programming</category>	<category>XML</category>	<description>&lt;h2&gt;XUL Templates with Multiple Rules&lt;/h2&gt;&lt;p&gt;I spent two days last week banging my head against an XUL templatewith multiple rules. My goal was a tree view which showed folders,nested folders (to any depth), and files within those folders.&lt;/p&gt;&lt;div style=&quot;border: 1px dotted #006; padding: 1.0em;&quot;&gt;	&lt;h4 style=&quot;margin-top: 0;&quot;&gt;Summary:&lt;/h4&gt;	&lt;p&gt;Looking for a quick answer? Ok: all the rules in a multi-rule	template must use the same variables, no matter what they're matching.	You can't add new variables after the first rule.	&lt;/p&gt;	&lt;p style=&quot;margin-bottom: 0;&quot;&gt;As I explained in a 	&lt;a href=&quot;/4363&quot;&gt;follow-up to this article&lt;/a&gt;, the real problem is	that this fact is (apparently) undocumented.&lt;/p&gt;&lt;/div&gt;&lt;div style=&quot;border: 1px dotted #006; padding: 1.0em; margin-top: 1.0em;&quot;&gt;	&lt;h4 style=&quot;margin-top: 0;&quot;&gt;Update:&lt;/h4&gt;	&lt;p&gt;&lt;a href=&quot;http://www.xulplanet.com/ndeakin/&quot;&gt;Neil Deakin&lt;/a&gt; 	posted a &lt;a href=&quot;http://www.truerwords.net/4365&quot;&gt;reply&lt;/a&gt;	in the discussion area, with a slight correction to my 'discovery'.&lt;/p&gt;&lt;/div&gt;&lt;p&gt;There was no problem grounding the 'folders' from the RDF datasource.That was functioning correctly before I even started.&lt;/p&gt;&lt;p&gt;In the RDF, an element representing a folder could have two types ofchild node (two different types of assertion): &quot;RKM:folders&quot; (whichwould point to a Seq listing that folder's sub-folders) and &quot;RKM:files&quot;(which would point to a Seq listing the files in that folder).&lt;/p&gt;&lt;p&gt;The tree would show a &quot;folder&quot; as a container if it had a &quot;RKM:folders&quot;assertion (outward pointing arc), or if it had a &quot;RKM:files&quot; assertion,or both. (To show something as a container means it would include theflippy triangle to expand the item. Folders without subfolders or fileswould not have the flippy triangle because they're empty.)&lt;/p&gt;&lt;p&gt;The first rule in my template was already there and functioningproperly, to display the folders and subfolders. Here's how the wholetree started out (this is simplified a little from what I was actuallyusing, but it's close enough):&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;&amp;lt;tree id=&quot;sample.sidebar.tree_groups&quot;   datasources=&quot;sampledata.rdf&quot; ref=&quot;urn:sample:root&quot;   containment=&quot;http:\//www.mozilla.org/sample-rdf#groups&quot;   rows=&quot;6&quot; flex=&quot;1&quot; seltype=&quot;single&quot;   hidecolumnpicker=&quot;true&quot; enableColumnDrag=&quot;false&quot;&amp;gt;   &amp;lt;treecols&amp;gt;      &amp;lt;treecol flex=&quot;1&quot; id=&quot;group_name&quot; label=&quot;groups&quot; primary=&quot;true&quot;/&amp;gt;      &amp;lt;treecol id=&quot;group_id&quot; label=&quot;ID&quot; collapsed=&quot;true&quot;/&amp;gt;      &amp;lt;treecol id=&quot;datatype&quot; labe=&quot;Type&quot; collapsed=&quot;true&quot;/&amp;gt;   &amp;lt;/treecols&amp;gt;   &amp;lt;template&amp;gt;      &amp;lt;rule&amp;gt;         &amp;lt;conditions&amp;gt;            &amp;lt;content uri=&quot;?uri&quot; /&amp;gt;            &amp;lt;triple subject=&quot;?uri&quot;                    predicate=&quot;http:\//www.mozilla.org/sample-rdf#groups&quot;                    object=&quot;?groups&quot;/&amp;gt;            &amp;lt;member container=&quot;?groups&quot; child=&quot;?group&quot;/&amp;gt;            &amp;lt;triple subject=&quot;?group&quot;                    predicate=&quot;http:\//www.mozilla.org/sample-rdf#label&quot;                    object=&quot;?text&quot;/&amp;gt;            &amp;lt;triple subject=&quot;?group&quot;                    predicate=&quot;group:\//www.mozilla.org/sample-rdf#id&quot;                    object=&quot;?groupid&quot;/&amp;gt;         &amp;lt;/conditions&amp;gt;         &amp;lt;action&amp;gt;            &amp;lt;treechildren flex=&quot;1&quot;&amp;gt;               &amp;lt;treeitem uri=&quot;?group&quot;&amp;gt;                  &amp;lt;treerow&amp;gt;                     &amp;lt;treecell label=&quot;?text&quot;/&amp;gt;                     &amp;lt;treecell label=&quot;?groupid&quot;/&amp;gt;                     &amp;lt;treecell label=&quot;group&quot;/&amp;gt;                  &amp;lt;/treerow&amp;gt;               &amp;lt;/treeitem&amp;gt;            &amp;lt;/treechildren&amp;gt;         &amp;lt;/action&amp;gt;      &amp;lt;/rule&amp;gt;   &amp;lt;/template&amp;gt;&amp;lt;/tree&amp;gt;&lt;/pre&gt;&lt;p&gt;The important part, of course, is the conditions element in the rule.From the starting point, it looks for a groups assertion, and (if oneis found) assigns it to the ?groups variable. Then, it's told to treatthe element at the end of that arc as a container (seq, bag, or alt...it doesn't care), and the rest of the conditions apply to each elementit finds in the container (a Seq, in my case): the member of thecontainer must have a &quot;label&quot; and an &quot;id&quot;, which are then assigned tovariables.&lt;/p&gt;&lt;p&gt;The second rule seemed like it should be very simple! I wanted to dobasically the same thing as for the first rule, but this time it wouldbe matching files instead of groups. A copy-and-paste with a quick editproduced this:&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;      &amp;lt;rule&amp;gt;         &amp;lt;conditions&amp;gt;            &amp;lt;content uri=&quot;?uri&quot; /&amp;gt;            &amp;lt;triple subject=&quot;?uri&quot;                    predicate=&quot;http:\//www.mozilla.org/sample-rdf#files&quot;                    object=&quot;?files&quot;/&amp;gt;            &amp;lt;member container=&quot;?files&quot; child=&quot;?file&quot;/&amp;gt;            &amp;lt;triple subject=&quot;?file&quot;                    predicate=&quot;http:\//www.mozilla.org/sample-rdf#title&quot;                    object=&quot;?title&quot;/&amp;gt;         &amp;lt;/conditions&amp;gt;         &amp;lt;action&amp;gt;            &amp;lt;treechildren flex=&quot;1&quot;&amp;gt;               &amp;lt;treeitem uri=&quot;?file&quot;&amp;gt;                  &amp;lt;treerow&amp;gt;                     &amp;lt;treecell label=&quot;?title&quot; properties=&quot;File&quot;/&amp;gt;                     &amp;lt;treecell label=&quot;?file&quot;/&amp;gt;                     &amp;lt;treecell label=&quot;page&quot;/&amp;gt;                  &amp;lt;/treerow&amp;gt;               &amp;lt;/treeitem&amp;gt;            &amp;lt;/treechildren&amp;gt;         &amp;lt;/action&amp;gt;      &amp;lt;/rule&amp;gt;&lt;/pre&gt;&lt;p&gt;Simple enough, right? Yeah, except it didn't work.&lt;/p&gt;&lt;p&gt;I eventually figured out that I had to update the containment attributein the tree tag, to specify that the predicate&quot;http:\//www.mozilla.org/sample-rdf#files&quot; should be treated as acontainer, so that when the groups rule matched the row would have theflippy triangle for exansion. (Just add a space at the end of thatattribute, and type in the second predicate right after the firstone.)&lt;/p&gt;&lt;p&gt;Reload the XUL file and... nuts. Now I get the flippy triangle, but thefiles still aren't being listed.&lt;/p&gt;&lt;p&gt;Let's make a long story a little shorter. I tried a zillioncombinations, and eventually discovered that the template renderer willonly use variables in the second rule that were also used in the first&lt;img src=&quot;http://media.truerwords.net/images/MozTreeSampleA.png&quot; height=&quot;207&quot; width=&quot;212&quot; alt=&quot;Tree example.&quot; border=&quot;0&quot; align=&quot;right&quot; /&gt;rule. New variable names are ignored. So, even though the second ruleis matching files, and the predicates can be changed (as above), therule's variables still have to look like you're matching groups.&lt;/p&gt;&lt;p&gt;Yes, I think that's ridiculous.&lt;/p&gt;&lt;p&gt;Here, finally, is the rule that works. Compare it with the rule thatdidn't work, just above, and the rule for matching groups above that(which did work).&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;      &amp;lt;rule&amp;gt;         &amp;lt;conditions&amp;gt;            &amp;lt;content uri=&quot;?uri&quot; /&amp;gt;            &amp;lt;triple subject=&quot;?uri&quot;                    predicate=&quot;http:\//www.mozilla.org/sample-rdf#files&quot;                    object=&quot;?groups&quot;/&amp;gt;            &amp;lt;member container=&quot;?groups&quot; child=&quot;?group&quot;/&amp;gt;            &amp;lt;triple subject=&quot;?group&quot;                    predicate=&quot;http:\//www.mozilla.org/sample-rdf#title&quot;                    object=&quot;?text&quot;/&amp;gt;         &amp;lt;/conditions&amp;gt;         &amp;lt;action&amp;gt;            &amp;lt;treechildren flex=&quot;1&quot;&amp;gt;               &amp;lt;treeitem uri=&quot;?group&quot;&amp;gt;                  &amp;lt;treerow&amp;gt;                     &amp;lt;treecell label=&quot;?text&quot; properties=&quot;File&quot;/&amp;gt;                     &amp;lt;treecell label=&quot;?group&quot;/&amp;gt;                     &amp;lt;treecell label=&quot;page&quot;/&amp;gt;                  &amp;lt;/treerow&amp;gt;               &amp;lt;/treeitem&amp;gt;            &amp;lt;/treechildren&amp;gt;         &amp;lt;/action&amp;gt;      &amp;lt;/rule&amp;gt;&lt;/pre&gt;&lt;p&gt;I wrote to &lt;a href=&quot;http://www.nigelmcfarlane.com/&quot;&gt;Nigel&lt;/a&gt; to tellhim what I'd discovered. He was surprised, amused, impressed, and ordisgusted enough to suggest I write it up. (Which, if you know me, youknow I was going to do anyway.)&lt;/p&gt;</description>	</item><item>	<title>XUL Templates (tease/reminder)</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/4356/trackback</trackback:ping>	<link>http://www.truerwords.net/4356</link>	<pubDate>Sat, 30 Oct 2004 19:27:11 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/4356</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=4356#msg4356</comments>	<category>Technology</category>	<category>Mozilla</category>	<category>Programming</category>	<category>XML</category>	<description>&lt;p&gt;This is just a reminder to myself (ok, and a small tease for anybody who cares about such things) to write about the significant and apparently undocumented discovery I've made regarding xul templates for mozilla.&lt;/p&gt;&lt;p&gt;For those who care: I plan to have it written by Sunday night (I know Nigel cares, but he may be the only other XUL developer who ever visits my site!).&lt;/p&gt;</description>	</item><item>	<title>XUL Tree Selection: Problem Solved</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/4352/trackback</trackback:ping>	<link>http://www.truerwords.net/4352</link>	<pubDate>Thu, 28 Oct 2004 18:16:26 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/4352</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=4336#msg4352</comments>	<category>Technology</category>	<category>Mozilla</category>	<category>Programming</category>	<category>XML</category>	<description>&lt;p&gt;The problem I was having with xul tree &lt;a href=&quot;http://www.truerwords.net/4336&quot;&gt;selections&lt;/a&gt; (in Mozilla) disappeared when I installed build ID 2004101105. I had been using 1.8a4.&lt;/p&gt;&lt;p&gt;Guess that means it wasn't a bug in my code (or in my head).&lt;/p&gt;</description>	</item><item>	<title>Confusion (or Bug?) Regarding XUL Tree Selection</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/4336/trackback</trackback:ping>	<link>http://www.truerwords.net/4336</link>	<pubDate>Wed, 27 Oct 2004 13:57:57 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/4336</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=4336#msg4336</comments>	<category>Technology</category>	<category>Mozilla</category>	<category>Programming</category>	<category>XML</category>	<description>&lt;p&gt;I'm starting to wonder, &quot;Is there anything more screwed up (in XUL) than trees?&quot;&lt;/p&gt;&lt;p&gt;I want a safe, reliable way to get the current selection from a dynamic, template-based tree (but it's just single selection, not a multi-select tree).&lt;/p&gt;&lt;p&gt;The tree is template based, and lists &quot;foos&quot; in an RDF datasource. If a new foo is added to the RDF, then the tree gets a new row. (Each row has two cells, one with the name of the foo, and the other has the foo's id. The id column is collapsed. When I need to act on the foo selected in the tree, I get the selected row, and then get the id for the foo from the second cell in the row.&lt;/p&gt;&lt;p&gt;Here's my tree template (with names changed to protect the innocent):&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;&amp;lt;tree id=&quot;bar.sidebar.tree_foos&quot;    datasources=&quot;&quot; ref=&quot;about:blank&quot;    containment=&quot;http://macrobyte.net/bar-rdf#foos&quot;    rows=&quot;6&quot; flex=&quot;1&quot; seltype=&quot;single&quot;    hidecolumnpicker=&quot;true&quot; enableColumnDrag=&quot;false&quot;&amp;gt;    &amp;lt;treecols&amp;gt;        &amp;lt;treecol flex=&quot;1&quot; id=&quot;foo_name&quot; label=&quot;Foos&quot; primary=&quot;true&quot;/&amp;gt;        &amp;lt;treecol id=&quot;foo_id&quot; label=&quot;ID&quot; collapsed=&quot;true&quot;/&amp;gt;    &amp;lt;/treecols&amp;gt;    &amp;lt;template&amp;gt;        &amp;lt;rule&amp;gt;            &amp;lt;conditions&amp;gt;                &amp;lt;content uri=&quot;?uri&quot; /&amp;gt;                &amp;lt;triple subject=&quot;?uri&quot;                        predicate=&quot;http://macrobyte.net/bar-rdf#foos&quot;                        object=&quot;?foos&quot;/&amp;gt;                &amp;lt;member container=&quot;?foos&quot; child=&quot;?foo&quot;/&amp;gt;            &amp;lt;/conditions&amp;gt;            &amp;lt;bindings&amp;gt;                &amp;lt;binding subject=&quot;?foo&quot;                         predicate=&quot;http://macrobyte.net/bar-rdf#label&quot;                         object=&quot;?fooname&quot;/&amp;gt;                &amp;lt;binding subject=&quot;?foo&quot;                         predicate=&quot;http://macrobyte.net/bar-rdf#id&quot;                         object=&quot;?fooid&quot;/&amp;gt;            &amp;lt;/bindings&amp;gt;            &amp;lt;action&amp;gt;                &amp;lt;treechildren flex=&quot;1&quot;&amp;gt;                    &amp;lt;treeitem uri=&quot;?foo&quot;&amp;gt;                        &amp;lt;treerow&amp;gt;                            &amp;lt;treecell label=&quot;?fooname&quot;/&amp;gt;                            &amp;lt;treecell label=&quot;?fooid&quot;/&amp;gt;                        &amp;lt;/treerow&amp;gt;                    &amp;lt;/treeitem&amp;gt;                &amp;lt;/treechildren&amp;gt;            &amp;lt;/action&amp;gt;        &amp;lt;/rule&amp;gt;    &amp;lt;/template&amp;gt;&amp;lt;/tree&amp;gt;&lt;/pre&gt;&lt;p&gt;Now, when I need to get the selection, something like this (which I've written out the long way here, for clarity) seems to work fine:&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;var t = document.getElementById( &quot;tree_foos&quot; );var ix = t.currentIndex;var rows = t.getElementsByTagName( &quot;treerow&quot; );var row = rows[ 0 ];var cells = row.getElementsByTagName( &quot;treecell&quot; );var id = cells[ 1 ].getAttribute( &quot;label&quot; );&lt;/pre&gt;&lt;p&gt;This works most of the time, but breaks as soon as another 'foo' is added to the RDF, even though I'm calling t.builder.rebuild() after adding a new foo (which, it would seem, should cause the row indices to be reordered).&lt;/p&gt;&lt;p&gt;There's a lot of documentation on trees on mozilla.org and xulplanet, but most of it is crap.&lt;/p&gt;&lt;p&gt;For example, look at &lt;a href=&quot;http://www.mozilla.org/xpfe/xulref/treeref.html&quot;&gt;the xul reference on mozilla.org&lt;/a&gt;. It says that &amp;lt;tree&amp;gt; supports an attribute (and a method!) named &quot;selectedItems&quot;. Yet, when I try to use it, I get an error in javascript because there is no such attribute.&lt;/p&gt;&lt;p&gt;For another example, look at the &lt;a href=&quot;http://xulplanet.org/tutorials/xultu/seltree.html&quot;&gt;tree selection tutorial&lt;/a&gt; on xulplanet. This page tells you how to get the indices of all selected items in a multi-select tree. This works in my single-select tree, but it produces exactly the same value as the tree's currentIndex property, so I end up with the same problem: the value is *wrong* after the tree has been modified by a change to the RDF.&lt;/p&gt;&lt;p&gt;I can't find any documentation about dealing with row-index problems in template-based trees which have been updated due to changes in the underlying RDF.&lt;/p&gt;&lt;p&gt;Is this a bug in Mozilla's tree, or a lack of understanding on my part, or what?&lt;/p&gt;&lt;p style=&quot;font-style: italic;&quot;&gt;(Note: I'm working with a fairly recent nightly build of Mozilla, as well as 1.8a4.)&lt;/p&gt;</description>	</item><item>	<title>DevEdge's Content to be Resurrected</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/4302/trackback</trackback:ping>	<link>http://www.truerwords.net/4302</link>	<pubDate>Tue, 12 Oct 2004 17:54:44 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/4302</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=4294#msg4302</comments>	<category>Technology</category>	<category>Mozilla</category>	<category>Programming</category>	<category>Web Sites</category>	<category>XML</category>	<description>&lt;p&gt;Yesterday I mentioned that &lt;a href=&quot;http://www.truerwords.net/4294&quot;&gt;DevEdge is gone&lt;/a&gt;. The site simply ceased to exist, and a lot of very useful content on CSS, JavaScript, HTMl, XHTML, and XUL vanished with it.&lt;/p&gt;&lt;p&gt;I hadn't seen mention of it anywhere else, so I also posted about it in two Mozillazine &lt;a href=&quot;http://forums.mozillazine.org/viewtopic.php?p=868239#864257&quot;&gt;forum&lt;/a&gt; &lt;a href=&quot;http://forums.mozillazine.org/viewtopic.php?t=137519#864263&quot;&gt;threads&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;As &lt;a href=&quot;http://www.mozillazine.org/talkback.html?article=5381&quot;&gt;reported on MozillaZine&lt;/a&gt; today, &lt;a href=&quot;http://weblogs.mozillazine.org/mitchell/&quot;&gt;Mitchell Baker&lt;/a&gt; (Mozilla Foundation president and chief lizard wrangler) is aware of the problem and is &lt;a href=&quot;http://weblogs.mozillazine.org/mitchell/archives/2004/10/netscape_devedg.html&quot;&gt;trying to acquire a license to the DevEdge content&lt;/a&gt; (as well as copies of that content, nobody has it) for the Mozilla Foundation.&lt;/p&gt;&lt;p&gt;Based on the comments on Mitchell's page, I'm not the only one missing the DevEdge sidebars. &lt;tt&gt;;-)&lt;/tt&gt;&lt;/p&gt;&lt;p&gt;Most everybody involved, myself included, thinks this sudden disappearance was a mistake (an oversight) since it happened so suddenly and without warning. Getting AOL to rectify the mistake, though, will be a lot more work. Hopefully they'll sign the content over to the Mozilla Foundation without a second thought.&lt;/p&gt;</description>	</item><item>	<title>Whither Netscape's DevEdge?</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/4294/trackback</trackback:ping>	<link>http://www.truerwords.net/4294</link>	<pubDate>Sun, 10 Oct 2004 22:06:59 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/4294</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=4294#msg4294</comments>	<category>Technology</category>	<category>Programming</category>	<category>Web Sites</category>	<category>XML</category>	<description>&lt;p&gt;Sometime in the last week (probably in the last three days), the two developer sites once hosted and run Netscape went off the air. &lt;a href=&quot;http://devedge.netscape.com/&quot;&gt;DevEdge&lt;/a&gt; and the older &lt;a href=&quot;http://developer.netscape.com/&quot;&gt;developer.netscape.com&lt;/a&gt; both seem to be gone.&lt;/p&gt;&lt;p&gt;The older one doesn't matter to me so much, but I used some of the developer sidebars hosted on DevEdge nearly every day.&lt;/p&gt;&lt;p&gt;If this is a permanent outage, I hope that Mozilla &amp;mdash; or someone &amp;mdash; is planning to host those sidebars again. I've been using them for so long I feel lost without them, and keep having to look in Google for other places that might host similar information.&lt;/p&gt;</description>	</item><item>	<title>MetaWeblog.getRecentPosts: Conflict and Confusion</title>	<author>seth@macrobyte.net</author>	<dc:creator>Seth Dillingham</dc:creator>	<trackback:ping>http://www.truerwords.net/4217/trackback</trackback:ping>	<link>http://www.truerwords.net/4217</link>	<pubDate>Wed, 15 Sep 2004 10:18:58 GMT</pubDate>	<guid isPermaLink="true">http://www.truerwords.net/4217</guid>	<comments>http://www.truerwords.net/fullThread$msgNum=4217#msg4217</comments>	<category>Essays</category>	<category>Technology</category>	<category>CMS</category>	<category>Conversant</category>	<category>Frontier</category>	<category>Programming</category>	<category>Radio</category>	<category>XML</category>	<description>&lt;h1&gt;MetaWeblog.getRecentPosts: Conflict and Confusion&lt;/h1&gt;&lt;p&gt;I'm trying to fix an apparent bug in Conversant's support for theMetaWeblog and mt (movable type) api's. Conversant's Weblog II plugincan be used as a mt-compatible weblog, or a MetaWeblog-compatibleweblog, or even just a blogger-compatible weblog.&lt;/p&gt;&lt;p&gt;In fact, all three of those api's build on each other. Blogger is themost basicc. MetaWeblog &amp;quot;embraces and extends&amp;quot; it. The mt api does thesame to metaweblog. That's important to understanding the apparentconflict I've run into.&lt;/p&gt;&lt;p&gt;The MetaWeblog RFC has an entry point called &lt;a href=&quot;http://www.xmlrpc.com/metaWeblogApi#metawebloggetcategories&quot;&gt;MetaWeblog.getCategories&lt;/a&gt;.You tell it what weblog you want to know about, and who you are, andit returns the information about that weblog's categories.Specifically, the api documentation says:&lt;/p&gt;&lt;blockquote cite=&quot;http://www.xmlrpc.com/metaWeblogApi#metawebloggetcategories&quot;&gt;    &lt;p&gt;&lt;b&gt;metaWeblog.getCategories&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;    metaWeblog.getCategories (blogid, username, password) returns struct&lt;/p&gt;    &lt;p&gt;    The struct returned contains one struct for each category, containing     the following elements: description, htmlUrl and rssUrl.&lt;/p&gt;    &lt;p&gt;    This entry-point allows editing tools to offer category-routing as     a feature.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;So it's clearly supposed to return a struct of structs, as it says,&amp;quot;the struct returned contains one struct for each category...&amp;quot;&lt;/p&gt;&lt;p&gt;Yet, it seems like everybody else has implementedmetaWeblog.getCategories to return an array of structs, rather than astruct of structs. Examples: &lt;a href=&quot;http://groups.yahoo.com/group/XMLRPCNET/messagesearch?query=getCategories&quot;&gt;XMLRPCNET&lt;/a&gt; and &lt;a href=&quot;http://wiki.xoops.org/wakka.php?wakka=XoopsAndXmlRpc&quot;&gt;xoops&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;What am I supposed to do? It wouldn't matter to me what other serversoftware has done, since I'm not trying to interoperate with otherservers, but I do need (Conversant) to work with the clientsoftware... which, of course, has been written to work with the otherserver software.&lt;/p&gt;&lt;p&gt;The metaweblog spec was written by Dave Winer, so it's safe to saythat Radio (as a client app) implements the spec he wrote... yet itlooks like most other applications (both client and server) have gonethe other way. &lt;a href=&quot;http://ecto.kung-foo.tv/&quot;&gt;Ecto&lt;/a&gt; forWindows, for example, expects the result of metaWeblog.getCategoriesto be an array of structs. (However, ecto uses the XMLRPC.NETframework, so this isn't entirely Ecto's fault.)&lt;/p&gt;&lt;p&gt;Is there any way I can handle this to be compatible with both camps? Aclient app could accept either type of result (like NetNewsWire'seditor probably does, if I know &lt;a href=&quot;http://inessential.com/&quot;&gt;Brent&lt;/a&gt;), but most of them don't do that. Since Conversant is a server app, whatshould I do: follow the original spec, or follow the more common spec?The purist in me suggests the former, but the realist (the one whowants to make the customers happy) says the latter.&lt;/p&gt;&lt;p&gt;What a mess. Simon Fell calls this the problem of &lt;a href=&quot;http://www.pocketsoap.com/weblog/2003/03/1126.html&quot;&gt;slightly uniform interfaces&lt;/a&gt;.&lt;/p&gt;</description>	</item>	</channel></rss>