<?xml version="1.0" encoding="us-ascii"?>
<!-- RSS generated by Radio UserLand v8.0.7 on Thu, 17 Apr 2003 17:22:08 GMT -->
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>Jon's Radio</title>
		<link>http://weblog.infoworld.com/udell/</link>
		<description>Jon Udell's Radio Blog</description>
		<lastBuildDate>Thu, 17 Apr 2003 17:22:08 GMT</lastBuildDate>
		<dc:creator>Jon Udell, judell@mv.com</dc:creator>
		<dc:rights>Copyright 2003 Jon Udell</dc:rights>
		<dc:publisher>InfoWorld</dc:publisher>
		<item>
			<title>RSS redirection and regex/Frontier/XSLT XML hacking</title>
			<link>http://weblog.infoworld.com/udell/2003/04/17.html#a670</link>
			<description>
After I posted yesterday's note about RSS redirection, Dave Winer wrote to remind me that there is a mechanism known to work for both Radio UserLand and NetNewsWire. It looks like this:
 &lt;b&gt;...&lt;/b&gt;</description>
			
			<body xmlns="http://www.w3.org/1999/xhtml">
			
<p>After I posted yesterday's note about RSS redirection, Dave
Winer wrote to remind me that there is a mechanism known to work
for both Radio UserLand and NetNewsWire. It looks like this:</p>
<pre>
&lt;?xml version="1.0"?&gt; 
&lt;redirect&gt;
&lt;newLocation&gt;
 http:\//weblog.infoworld.com/udell/gems/longDescriptionFeed.xml
&lt;/newLocation&gt;
&lt;/redirect&gt;
</pre>
<p>If you hit my 
<a href="http://www.w3.org/2000/06/webdata/xslt?xslfile=http%3A%2F%2Fweblog.infoworld.com%2Fudell%2Fgems%2FlongFeed.xml&amp;xmlfile=http%3A%2F%2Fweblog.infoworld.com%2Fudell%2Frss.xml&amp;transform=Submit">
alternate feed</a> with your browser, you'll see this XML redirect.
I'm happy to report that I've just tested it successfully in both
RU and NNW. Both adjust the original address to the new one. I'll
be interested to know which other readers do, or don't, make the
same adjustment.</p>
<p>The reason for the switch is that I wanted to clean up my
primary feed. There's no reason for it to contain
&lt;content:encoded&gt; anymore, and it confuses 
<a href="http://www.newsmonster.org/news-Jon_Udell_xhtmlbody_and_NewsMonster.html">
NewsMonster</a>. So now, my primary feed is just a short
description and an &lt;xhtml:body&gt;. My alternate feed contains
the whole body encoded within the description, for folks who want
to read the blog in a non-&lt;xhtml:body&gt;-aware aggregator.</p>
<p>Making these adjustments was trickier than I thought it would
be. I'm narrating the process here partly so I can remember it
later, and partly because it glosses some recent discussion about
XML processing[
<a href="http://tbray.org/ongoing/When/200x/2003/03/16/XML-Prog">1</a>,

<a href="http://weblog.infoworld.com/udell/2003/03/18.html#a642">2</a>].
There were two parts to the task:</p>
<ol>
<li>
<p>Copy the original feed -- that is, what my alternate RSS writer
produces. Remove &lt;description&gt; and &lt;xhtml:body&gt; from
the copy, and rename &lt;content:encoded&gt; to
&lt;description&gt;, in order to create the alternate feed.</p>
</li>
<li>
<p>Modify the original feed in-situ, removing
&lt;content:encoded&gt;, to create the standard feed.</p>
</li>
</ol>
<p>I tried three approaches: regular expression hacking,
Frontier-style XML hacking, and XSLT.</p>
<p>
<b>The regex approach</b>
</p>
<p>Despite my earlier regex advocacy, I didn't have much luck.
That's partly, I guess, because Radio's regex.dll doesn't think
quite like Perl's regex engine. Anyway, it got to be a mess.</p>
<p>
<b>The Frontier approach</b>
</p>
<p>To use the Frontier-style approach, I started like so:</p>
<pre>
xml.compile ("c:\\radio\\www\\rss.xml", @rss);
</pre>
<p>This failed embarrassingly, because (as Dave kindly pointed out)
I was trying to compile the filename, not the content. This is the
right way to turn your RSS file into a Frontier table:</p>
<pre>
xml.compile (file.readWholeFile("c:\\radio\\www\\rss.xml"),
@scratchpad.rss);
edit ( @scratchpad.rss );
</pre>
<p>The 
<tt>edit</tt> statement brings up a Frontier editing window, where
you can inspect the RSS file as a Frontier table. You can also
write code to walk around inside the table, making changes as
needed. You have to use special verbs to get at the addresses of
the subtables, which I found confusing, but this hybrid
interactive/programmatic approach is nifty. It started to add up to
a lot of code to do what I wanted, though, so I decided to try
things the XSLT way.</p>
<p>
<b>The XSLT approach</b>
</p>
<p>I started with 
<a href="http://msdn.microsoft.com/webservices/building/xmldevelopment/xslt/default.aspx?pull=/library/en-us/dnxml/html/msxsl.asp">
msxsl.exe</a>, a command-line tool for running XSLT transforms. The
first stylesheet, 
<a href="http://weblog.infoworld.com/udell/gems/longDescription.xml">
longDescription.xml</a>, was a minor variation on the one that was
already transforming my primary feed into my alternate feed (by way
of the W3C XSLT service). The only change needed here was to remove
&lt;xhtml:body&gt;, so I added this template:</p>
<pre>
&lt;xsl:template match="xhtml:body"&gt;
&lt;/xsl:template&gt;
</pre>
<p>Here's the second stylesheet, 
<a href="http://weblog.infoworld.com/udell/gems/xhtmlBody.xml">xhtmlBody.xml</a>:</p>
<pre>
&lt;?xml version="1.0"?&gt; 
&lt;xsl:stylesheet 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
  xmlns:content="http://purl.org/rss/1.0/modules/content/" 
  xmlns:dc="http://purl.org/dc/elements/1.1/" 
  xmlns:xhtml="http://www.w3.org/1999/xhtml" 
  version="1.0"&gt;

&lt;xsl:output method="xml" indent="yes" encoding="us-ascii"/&gt;

&lt;xsl:template match="node() | @*"&gt;
  &lt;xsl:copy&gt;
    &lt;xsl:apply-templates select="@* | node()"/&gt;
  &lt;/xsl:copy&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="//content:encoded"&gt;
&lt;/xsl:template&gt;

&lt;/xsl:stylesheet&gt;
</pre>
<p>The first template in this stylesheet is something the XSLT
geeks call "the identity transform." It just echoes the input to
the output. But as you do that, you get the chance to override
aspects of the transform. In this case, my second template matches
&lt;content:encoded&gt; and does nothing with it. As a result, that
element drops out of the feed.</p>
<p>To integrate this with Radio UserLand, I packaged up my two
command-line transforms into a CMD file:</p>
<pre>
c:\\radio\\tools\\msxsl.exe c:\\radio\\www\\rss.xml \\
  c:\\radio\\www\\gems\\longDescription.xml \\
  -o c:\\radio\\www\\gems\\longDescriptionFeed.xml

c:\\radio\\tools\\msxsl.exe c:\\radio\\www\\rss.xml \\ 
  c:\\radio\\www\\gems\\xhtmlBody.xml -o c:\\radio\\www\\rss.xml
</pre>
<p>Then, I added this line to my 
<a href="http://weblog.infoworld.com/udell/gems/rssWriter.txt">alternate
RSS writer</a>:</p>
<pre>
launch.application("c:\\radio\\tools\\fixrss.cmd");
</pre>
<p>There's one more XSLT stylesheet involved here. The alternate
feed's original address invokes 
<a href="http://weblog.infoworld.com/udell/gems/longFeed.xml">longFeed.xml</a>,
which used to look a lot like 
<a href="http://weblog.infoworld.com/udell/gems/longDescription.xml">
longDescription.xml</a>, but now simply returns the XML
redirect.</p>
<p class="tip">Here's a tip, by the way. When you're hacking around
with your Radio feeds, turn upstreaming off. Otherwise you'll
torment your subscribers.</p>
<p>Whew! That was kind of confusing, but I think everything's
straightened out now. (Sanity check: is the primary feed 
<a href="http://feeds.archive.org/validator/check?url=http%3A%2F%2Fweblog.infoworld.com%2Fudell%2Frss.xml">
valid</a>? Is the alternate feed 
<a href="http://feeds.archive.org/validator/check?url=http%3A%2F%2Fweblog.infoworld.com%2Fudell%2Fgems%2FlongDescriptionFeed.xml">
valid</a>?) As the Perl guys like to say, There's More Than One Way
to Do It. Were Radio's regex engine more Perl-like, I'd probably
have solved the problem that way. It's a reflex. Were I more
accomplished at Frontier XML hacking, I might have gotten the
quickest result using 
<tt>xml.compile</tt> and friends. In this case, however, XSLT wound
up being my weapon of choice. I'm glad to have figured out how to
incorporate it into my Radio repertoire.</p>
<p>Finally, I'm 
<i>really</i> glad to know that RSS redirection works, at least for
RU and NetNewsWire.</p>

			</body>
			<dc:date>2003-04-17T13:16:55-05:00</dc:date>
			</item>
		<item>
			<title>RSS redirection, again</title>
			<link>http://weblog.infoworld.com/udell/2003/04/16.html#a668</link>
			<description>
&lt;a href="http://colossus.net/power.redirection.html"&gt;
&lt;img border="0" width="220" height="270" align="right" alt="redirect" src="http://colossus.net/images/power.postman.gif"/&gt;&lt;/a&gt; According to &lt;a href="http://www.newsmonster.org/news-Jon_Udell_xhtmlbody_and_NewsMonster.html"&gt;NewsMonster's&lt;/a&gt; blog, there's a minor problem with my feed.  NewsMonster seems to want to render both the &amp;lt;content:encoded&gt;  and &amp;lt;xhtml:body&gt; elements. At this point, I'd just as soon drop &amp;lt;content:encoded&gt;. And I probably will. But in so doing, I'll run smack into a long-unresolved problem. There's still no way to cleanly redirect from one RSS feed to another.
 &lt;b&gt;...&lt;/b&gt;</description>
			
			<body xmlns="http://www.w3.org/1999/xhtml">
			
<p>
<a href="http://colossus.net/power.redirection.html">
<img border="0" width="220" height="270" align="right" alt="redirect" src="http://colossus.net/images/power.postman.gif"></img>
</a> According to 
<a href="http://www.newsmonster.org/news-Jon_Udell_xhtmlbody_and_NewsMonster.html">
NewsMonster's</a> blog, there's a minor problem with my feed.
NewsMonster seems to want to render both the
&lt;content:encoded&gt; and &lt;xhtml:body&gt; elements. At this
point, I'd just as soon drop &lt;content:encoded&gt;. And I
probably will. But in so doing, I'll run smack into a
long-unresolved problem. There's still no way to cleanly redirect
from one RSS feed to another.</p>
<p>My current (and not well-conceived) strategy is to send
&lt;content:encoded&gt; in my feed, and transform it into
&lt;description&gt; in the 
<a href="http://www.w3.org/2000/06/webdata/xslt?xslfile=http%3A%2F%2Fweblog.infoworld.com%2Fudell%2Fgems%2FlongFeed.xml&amp;xmlfile=http%3A%2F%2Fweblog.infoworld.com%2Fudell%2Frss.xml&amp;transform=Submit">
alternate version</a> of my feed. There aren't a lot of people
depending on that version, so changing its address won't upset many
apple carts. But as I've been reminded several times this week,
there's still no solution to this problem. For example, 
<a href="http://www.planetshwoop.com/blog/">Brian Sobolak</a> wrote
to point out that 
<a href="http://www.mcgeesmusings.net/">Jim McGee's</a> writing
might be of interest to me. Indeed! Jim's was one of the first
orange icons on my channelroll. But I missed the announcement that
he was moving from the community server to his own address, and so
lost track of him.</p>
<p>There was 
<a href="http://weblog.infoworld.com/udell/2002/09/25.html">some</a>

<a href="http://www.intertwingly.net/blog/907.html">discussion</a>
of this a while back. It's easy to see why these proposals aren't
getting over the activation threshold, though. Most people never
run into the problem. Those who do run into it maybe once a
year.</p>

			</body>
			<dc:date>2003-04-16T09:48:43-05:00</dc:date>
			</item>
		<item>
			<title>The semantic blog</title>
			<link>http://weblog.infoworld.com/udell/2003/04/16.html#a667</link>
			<description>&lt;i&gt;
I've long dreamed of using RSS to produce and consume XML content. We're so close. RSS content is HTML, which is almost XHTML, a gap that HTML Tidy can close. In current practice, the meat of an RSS item appears in the &amp;lt;description&gt; tag, either as an HTML-escaped (aka entity-encoded) string or as a CDATA element. As has been often observed, it'd be really cool to have the option to use XHTML as well. Then I could write blog items in which the &amp;lt;pre&gt; tag, or perhaps a class="codeFragment" attribute, marks regions for precise search. You or I could aggregate those items into personal XPath-aware databases in order to do those searches locally (perhaps even offline), and public aggregators could offer the same capability over the Web. [&lt;a href="http://webservices.xml.com/pub/a/ws/2003/04/15/semanticblog.html"&gt;O'Reilly Network&lt;/a&gt;]
&lt;/i&gt; &lt;b&gt;...&lt;/b&gt;</description>
			
			<body xmlns="http://www.w3.org/1999/xhtml">
			
<p class="leadpara">
<i>I've long dreamed of using RSS to produce and consume XML
content. We're so close. RSS content is HTML, which is almost
XHTML, a gap that HTML Tidy can close. In current practice, the
meat of an RSS item appears in the &lt;description&gt; tag, either
as an HTML-escaped (aka entity-encoded) string or as a CDATA
element. As has been often observed, it'd be really cool to have
the option to use XHTML as well. Then I could write blog items in
which the &lt;pre&gt; tag, or perhaps a class="codeFragment"
attribute, marks regions for precise search. You or I could
aggregate those items into personal XPath-aware databases in order
to do those searches locally (perhaps even offline), and public
aggregators could offer the same capability over the Web. [
<a href="http://webservices.xml.com/pub/a/ws/2003/04/15/semanticblog.html">
O'Reilly Network</a>]</i>
</p>
<p>I wound up scooping this article on Monday, because I rolled out
xhtml:body sooner than expected. So of course, blog commentary
relevant to the article appeared even before the article did -- a
curious and delightful inversion. On 
<a href="http://www.intertwingly.net/blog/1333.html">Sam Ruby's
blog</a>, Danny Ayers wrote:</p>
<blockquote>
<i>Some very good points made in Jon's piece, though I think it's a
bit silly jamming any old XML in and calling it "descriptive
markup". We can reasonably assume in this case the implied meaning
'this is the content', but nowhere is it made explicit - no
description is given.</i>
</blockquote>
<p>I'd like to see more opinions on this, but to me, CSS looks like
an excellent bridge technology. It is declarative in nature. If I
write &lt;p class="codeFragment"&gt; I am merely attaching a label
to that element. I can then, optionally, associate a style with
that declaration. But I can use that same declaration for other
purposes as well. In particular, I can use it to precisely search
code fragments. I've long advocated this dual-purposing of CSS
declarations because I think it fits well with how people actually
write. I find that people who'll say they have no time for
descriptive markup will nevertheless fiddle quite obsessively with
presentation. Seems to me that if there can be synergy between the
two, we ought to exploit that to the hilt.</p>

			</body>
			<dc:date>2003-04-16T08:42:28-05:00</dc:date>
			</item>
		<item>
			<title>How (and why) to include an xhtml:body in a Radio UserLand RSS feed</title>
			<link>http://weblog.infoworld.com/udell/2003/04/14.html#a666</link>
			<description>
&lt;a href="http://www.intertwingly.net/blog/1299.html"&gt;Sam Ruby&lt;/a&gt; and &lt;a href="http://www.gotdotnet.com/team/dbox/spoutletex.aspx?key=2003-03-30T04:44:35Z"&gt;Don Box&lt;/a&gt; have both demonstrated valid RSS 2.0 feeds (&lt;a href="http://intertwingly.net/blog/index.rss2"&gt;Sam&lt;/a&gt;, &lt;a href="http://www.gotdotnet.com/team/dbox/rss.aspx"&gt;Don&lt;/a&gt;) that include a &lt;tt&gt;&amp;lt;body&gt;&lt;/tt&gt; element, properly namespaced as XHTML. Quietly, last week, I joined the party. My primary feed now includes:
 &lt;b&gt;...&lt;/b&gt;</description>
			
			<body xmlns="http://www.w3.org/1999/xhtml">
			
<p>
<a href="http://www.intertwingly.net/blog/1299.html">Sam Ruby</a>
and 
<a href="http://www.gotdotnet.com/team/dbox/spoutletex.aspx?key=2003-03-30T04:44:35Z">
Don Box</a> have both demonstrated valid RSS 2.0 feeds (
<a href="http://intertwingly.net/blog/index.rss2">Sam</a>, 
<a href="http://www.gotdotnet.com/team/dbox/rss.aspx">Don</a>) that
include a 
<tt>&lt;body&gt;</tt> element, properly namespaced as XHTML.
Quietly, last week, I joined the party. My primary feed now
includes:</p>
<ol>
<li>
<p>A brief &lt;description&gt;.</p>
</li>
<li>
<p>The full text of the item, as an HTML-escaped string, in a
&lt;content:encoded&gt; element.
<sup>1</sup>
</p>
</li>
<li>
<p>The full text of the item, as XHTML, in a &lt;xhtml:body&gt;
element</p>
</li>
</ol>
<p>Although it enlarged my RSS feed, the XHTML body shouldn't have
affected -- and indeed seems not to have affected -- any existing
RSS-aware software. So, what's it good for? In an upcoming O'Reilly
Network column, I lay out the case. I want to aggregate feeds into
XML-aware databases, and be able to run precise XPath queries
against those databases. Given these capabilities, it makes sense
to invest in more and better 
<a href="http://tbray.org/ongoing/When/200x/2003/04/09/SemanticMarkup">
descriptive markup</a>. That, in my view, is how we bootstrap from
the existing blogosphere to the semantic web. Not by defining a
cosmic ontology. But rather from the bottom up, by building
consensus around incremental enrichment of the stuff we write every
day.</p>
<p>At the moment, of course, that's just one more theory. So I
won't speculate further now. I do, however, want to suggest a way
to do the experiment. That boils down to some nitty-gritty
implementation details. Here, I'll discuss how to simplify XHTML
authoring for Radio UserLand, because that's the blog software I
use. I hope users of Movable Type and other platforms will offer
similar tutorials.</p>
<p>For me, writing XHTML isn't a big deal. Having abandoned Radio's
embedded MS DHTML edit control -- because I'm often working on a
Mac nowadays, and also because it sucks -- I just write my blog
entries in simple, clean HTML. As a result, they're already very
close to XHTML. If you remember to quote all your attributes, and
close all your tags (for example, &lt;img ... /&gt;, &lt;br /&gt;,
and &lt;hr /&gt;), you're almost there. Of course, I don't always
remember that, so I need some help. There's also the nasty problem
of bare ampersands and HTML entities, which need to be escaped or
altered for XML transmission. Life's too short to deal with this
kind of thing; clearly you want some tool support.</p>
<p>I knew, of course, that I wanted to use 
<a href="http://tidy.sourceforge.net">HTML Tidy</a>, which can not
only clean up the worst of the mess that the DHTML edit control
makes, but can also be used to XHTML-ify your content. The question
was how to integrate it with Radio UserLand's publishing process.
I'm happy to report that David Carter-Tod has done the heavy
lifting. His 
<a href="http://www.wcc.vccs.edu/dtod/frontier/tidy.html">Tidy
Tool</a> wraps HTML Tidy in a Radio script. (More generally, his
tool shows how to spawn any command-line executable from Radio.) To
use it, you need a local copy of the HTML Tidy program. Since the
instance of Radio that I publish from runs on Windows, I acquired
the Win32 version of HTML Tidy, tidy.exe, and put it in Radio's
Tools directory along with David's files: tidy.root and
tidyconfig.txt.</p>
<p>After some standalone experimentation with HTML Tidy's XML/XHTML
output mode, I settled on these tidyconfig.txt settings:</p>
<pre>
output-xml: true
numeric-entities: true
markup: true
</pre>
<p>It seemed to me that only the first of these should have been
necessary. But without numeric-entities set to true, my HTML
entities weren't escaped as they need to be. And oddly, the same
thing happened when the markup setting (which pretty-prints the XML
output) wasn't set to true. Perhaps an HTML Tidy expert can explain
why the first setting alone wasn't sufficient, but in any case,
what I show here is working for me.</p>
<p>To initialize David's Tidy tool, I typed CTRL-; to launch
Radio's QuickScript editor, entered 
<tt>tidySuite.init()</tt>, and clicked Run. This launches a file
browser so you can identify the location of tidy.exe, which in my
case was c:\\radio\\tools\\tidy.exe.</p>
<p>Next, I tested against some sample postings. In the QuickScript
editor, I ran 
<tt>scratchpad.s = tidySuite.clean( "..." )</tt>, substituting item
texts for "...", and inspected radio.root.scratchpad.s in Radio's
database editor. A minor annoyance with HTML Tidy is that it
returns complete HTML files, adding &lt;HTML&gt; and &lt;HEAD&gt;
and &lt;TITLE&gt; tags if you omit them. In this case, though, only
the content of the &lt;BODY&gt; tag is needed, and happily, that's
exactly what tidySuite.clean returns by default.</p>
<p>So far so good. Now, how to stuff this XML-ified item into an
RSS feed? The 
<a href="http://backend.userland.com/stories/storyReader$210">new
extensibility hooks</a> were almost, but not quite, sufficient to
the task. You can do three useful things with these hooks: add
namespace declarations to your feed, add channel elements, and add
item elements. But when you add an item element, it will
automatically be escaped for HTML transmission. That's not what I
want here. I really do want to send XML. So, for now, I'm
continuing to use the 
<a href="http://scriptingnews.userland.com/backissues/2002/05/09#aSmallChange">
original extensibility hook</a>, which has enabled me to completely
replace Radio's RSS writer with a 
<a href="http://weblog.infoworld.com/udell/gems/myRssWriter.txt">modified
version</a>. In that version, here's how I'm adding the XHTML
body:</p>
<pre>
add ("&lt;body xmlns=\"http:\//www.w3.org/1999/xhtml\\"&gt;");
add (tidySuite.clean( string ( adrpost^.text) ) );
add ("&lt;/body&gt;")
</pre>
<p>This works. It's a shame, though, not to use the newer, less
invasive, more elegant extensibility hooks. If there were a way for
item-level callbacks to indicate when angle-bracket-escaping and
entity-encoding are not wanted, then you could use this better
approach. Of course, for the vast majority of users, a Pref ("Emit
XHTML bodies in RSS feed") would be ideal. So would a version of
HTML Tidy that's included as a DLL, just as regular expression
support is included in regex.dll. But first things first. If some
of us try this bootstrap approach, and if it produces real value,
then we can make a case for a more general solution. For now, my
screen flashes five or six times, as each item on my homepage is
processed in a command window -- but there's no real delay, and
that isn't a problem.</p>
<p>My next step will be to start aggregating XHTML-aware feeds --
mine, Sam's, Don's, others -- into a database. I want to get a feel
for what it's like to search that database with element-level
specificity. And then I want to start injecting descriptive markup
into my own stuff that will enable me (or you) to search more
precisely.</p>
<hr align="left" width="20%"></hr>
<p>
<sup>1</sup> The &lt;content:encoded&gt; element is only used by my

<a href="http://www.w3.org/2000/06/webdata/xslt?xslfile=http%3A%2F%2Fweblog.infoworld.com%2Fudell%2Fgems%2FlongFeed.xml&amp;xmlfile=http%3A%2F%2Fweblog.infoworld.com%2Fudell%2Frss.xml&amp;transform=Submit">
alternate feed</a>, which transforms it into &lt;description&gt;
for those who prefer reading complete items in RSS newsreaders,
rather than the first-paragraph-only truncated &lt;description&gt;
I send in my 
<a href="http://weblog.infoworld.com/udell/rss.xml">primary
feed</a>.</p>

			</body>
			<dc:date>2003-04-14T13:44:48-05:00</dc:date>
			</item>
		<item>
			<title>High-tech PR in the age of blogs, part 3</title>
			<link>http://weblog.infoworld.com/udell/2003/04/11.html#a665</link>
			<description>
Maybe I'm being na&amp;iuml;ve, but the inevitable PR discovery of RSS doesn't worry me the way it worries these folks:
&lt;blockquote&gt;&lt;i&gt;
&lt;b&gt;So much for RSS&lt;/b&gt; The &lt;a href="http://www.mediamap.com/expertpr/expertpr_040303_feature1.htm"&gt;PR People&lt;/a&gt; know about &lt;a href="http://backend.userland.com/rss"&gt;RSS&lt;/a&gt; now &amp;#8230; only a matter of time before it becomes useless. Advertising, PR, and Marketing destroy everything they touch on the internet. [&lt;a href="http://blog.slf.homelinux.net/archives/000183.php"&gt;Lucas Thompson, Sleep When You're Dead&lt;/a&gt;]
&lt;/i&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;i&gt;
&lt;b&gt;Attack of the PR people&lt;/b&gt; It was only a matter of time before the industry sharks descended on innocent bloggers, coming up with ways to "nudge" them into mentioning their clients' products and services. "Hey, Andrew, as you write about the great victory in Iraq, you might want to let your readers know that those missles were built by Raytheon...."  Expect to see more and more of this, ye who run the Big Blogs. [&lt;a href="http://pekingduck.blogspot.com/2003_04_06_pekingduck_archive.html#200131417"&gt;The Peking Duck&lt;/a&gt;]
&lt;/i&gt;&lt;/blockquote&gt;
This is a publish/subscribe medium. If feeds are interesting, we read them, and even sometimes respond to them. If feeds are boring or annoying, we drop them. Both outcomes are exquisitely measurable, which is something PR folk should pay particular attention to.
 &lt;b&gt;...&lt;/b&gt;</description>
			
			<body xmlns="http://www.w3.org/1999/xhtml">
			
<p>Maybe I'm being na&#239;ve, but the inevitable PR discovery of
RSS doesn't worry me the way it worries these folks:</p>
<blockquote>
<i>
<b>So much for RSS</b> The 
<a href="http://www.mediamap.com/expertpr/expertpr_040303_feature1.htm">
PR People</a> know about 
<a href="http://backend.userland.com/rss">RSS</a> now &#8230; only
a matter of time before it becomes useless. Advertising, PR, and
Marketing destroy everything they touch on the internet. [
<a href="http://blog.slf.homelinux.net/archives/000183.php">Lucas
Thompson, Sleep When You're Dead</a>]</i>
</blockquote>
<blockquote>
<i>
<b>Attack of the PR people</b> It was only a matter of time before
the industry sharks descended on innocent bloggers, coming up with
ways to "nudge" them into mentioning their clients' products and
services. "Hey, Andrew, as you write about the great victory in
Iraq, you might want to let your readers know that those missles
were built by Raytheon...." Expect to see more and more of this, ye
who run the Big Blogs. [
<a href="http://pekingduck.blogspot.com/2003_04_06_pekingduck_archive.html#200131417">
The Peking Duck</a>]</i>
</blockquote>This is a publish/subscribe medium. If feeds are
interesting, we read them, and even sometimes respond to them. If
feeds are boring or annoying, we drop them. Both outcomes are
exquisitely measurable, which is something PR folk should pay
particular attention to. 
<br></br>
<br></br> 
<p>Here's what the pattern has been:</p>
<p>1) A marketing person is shepherded to a meeting by
<br></br>&#160;&#160;1a) the PR analyst minder, if it's an analyst
meeting
<br></br>&#160;&#160;1b) the PR press minder, if it's a press meeting
<br></br>
<br></br>2) Information is breathlessly conveyed to
<br></br>&#160;&#160;2a) the analyst, who hopes it will help him get
quoted by the likes of
<br></br>&#160;&#160;2b) the reporter, who often doesn't know what
it's about, but will pass it along
<br></br>
<br></br>Missing completely from this whisper chain: the people who
invented the technology being discussed, and the people who really
care and need to know about it. Now, all of a sudden, these two
groups can connect directly by way of pub/sub.</p>
<p>I believe journalism can still usefully intermediate. But our
information monopoly is weakening. The value of our work never
should have depended, and now increasingly will not depend, on
privileged access to people and to information. It will, instead,
depend on our ability to perform the highest and best functions of
publishing: selection, analysis, coherent narrative. If I do that
consistently, you'll read me. If I don't, you won't.</p>
<p>I also believe PR can still usefully intermediate. Public
relations is about brokering connections. What's new here is the
possibility of helping end-to-end connections form. They will
anyway. PR's legitimate role is to make the process as frictionless
and productive as it can be.</p>
<p>Of course PR will try to game the system. That's part of the
job. I expect I'll be asking myself, at some point, whether some
executive's or architect's blog was really written by that person,
or ghost-written by PR. But I don't think that's going to be an
easy Turing test to pass. Direct contact with another mind, over
time, has a deep authenticity that is hard (maybe impossible) to
fake. The best PR agents I've worked with make those contacts
happen. I'm tempted to add: "and then they get out of the way." But
it's not that simple.</p>
<p>Beyond merely brokering connections, PR agents assist with
communication strategy. Here's where things could start to get
really interesting. We are all professional communicators, all the
time, but most of us are not very aware of the strategies we could
and should employ to be maximally effective. One way to look at PR
is as an outsourced provider of such awareness. My $0.02: effective
communication strategy is one of those core competencies that you
cannot outsource. It's something we'll all need to internalize.
Will PR agents become coaches and mentors, helping individuals
within companies do that? Again, the best of them already
are.</p>
			</body>
			<dc:date>2003-04-11T11:58:35-05:00</dc:date>
			</item>
		<item>
			<title>Do the simple things</title>
			<link>http://weblog.infoworld.com/udell/2003/04/10.html#a664</link>
			<description>
&lt;blockquote&gt;&lt;i&gt;
If you build Web-based information systems -- and who doesn't? -- it's a great idea to wrap them in Web services APIs. The more the merrier. By offering a choice between SOAP- and REST-flavored APIs, Amazon embraces diversity. But Amazon is even more inclusive than that. It gets the simple things right. The page that represents a book has a canonical URL that you can construct automatically. It carries basic metadata in standard HTML META tags. These rules seem too trivial to mention. But they are seldom followed, even though they can spell the difference between a healthy information system that integrates with a society of peers and an isolated outcast. Moral: do the simple things. [Full story at &lt;a href="http://www.infoworld.com/article/03/04/11/15stratdev_1.html"&gt;InfoWorld.com&lt;/a&gt;]
&lt;/i&gt;&lt;/blockquote&gt;
 &lt;b&gt;...&lt;/b&gt;</description>
			
			<body xmlns="http://www.w3.org/1999/xhtml">
			
<blockquote>
<i>If you build Web-based information systems -- and who doesn't?
-- it's a great idea to wrap them in Web services APIs. The more
the merrier. By offering a choice between SOAP- and REST-flavored
APIs, Amazon embraces diversity. But Amazon is even more inclusive
than that. It gets the simple things right. The page that
represents a book has a canonical URL that you can construct
automatically. It carries basic metadata in standard HTML META
tags. These rules seem too trivial to mention. But they are seldom
followed, even though they can spell the difference between a
healthy information system that integrates with a society of peers
and an isolated outcast. Moral: do the simple things. [Full story
at 
<a href="http://www.infoworld.com/article/03/04/11/15stratdev_1.html">
InfoWorld.com</a>]</i>
</blockquote>
<br></br>
<br></br> 
<p>Below you'll find nine examples, one from each of the OPACs
currently supported by LibraryLookup. Each example shows a typical
URL, and the HTML &lt;HEAD&gt; tag (minus CSS and JavaScript). It's
easy to pick on obvious flaws, like a leading &lt;CENTER&gt; tag 
<i>before</i> the &lt;HTML&gt; tag. But my point, really, is that
URLs and HTML metadata are the two most basic kinds of APIs. They
are the best ways to encourage unintended use. The failure to
recognize them as APIs, and therefore to design them accordingly,
is of course endemic. It's not just library OPACs who miss these
opportunities. Hardly anyone gets this easy stuff right.</p>
<p>Example 5 is especially ironic. I can envision a glossy
marketing sheet with a features checklist, and big green check in
the "supports RDF" column. There's even, woo-hoo, a special RDF
vocabulary used to describe the browser that fetched the page.
Unfortunately, the metadata that would be useful to an integrator
-- the title of the book being displayed, its author, its ISBN --
is nowhere to be found.</p>
<p>
<a href="http://allconsuming.net/item.cgi?isbn=080410526X">
<img align="right" src="http://images.amazon.com/images/P/080410526X.01.MZZZZZZZ.jpg" width="75" height="90"></img>
</a> I'll be giving the keynote at day two of the 
<a href="http://www.oscom.org/">Open Source Content Management</a>
conference. (Dave Winer is keynoting day one.) I've been thinking
about elaborating on issues like the ones I touch on in this week's
column. The provisional title for the talk: "All you need to know
about content management, you learned in grade school." Let me know
if that does or doesn't sound useful.</p>
<h2>Example 1</h2>
<div>
<b>URL:</b> 
<tt>http:\//ksclib.keene.edu/search/tgroupware /tgroupware/-6,0,0,E
/frameset&amp;FF=tgroups+interaction+and+performance&amp;1,1,</tt>
</div>
<br></br>
<div>
<b>HTML HEAD:</b>
</div>
<pre>
&lt;HTML&gt;
&lt;HEAD&gt;
&lt;TITLE&gt;Keene-Link /All Locations&lt;/TITLE&gt;
&lt;BASE TARGET="_parent"&gt;
&lt;META HTTP-EQUIV="Refresh" CONTENT="600;URL=/search/"&gt;
&lt;/HEAD&gt;
</pre>
<br></br>
<br></br>
<h2>Example 2</h2>
<div>
<b>URL:</b> 
<tt>http:\//voyager.antiochne.edu/cgi-bin/Pwebrecon.cgi?
v1=1&amp;hd=1,1&amp;CallBrowse=1&amp;
SEQ=20030408154140&amp;PID=1256&amp;SID=11</tt>
</div>
<br></br>
<div>
<b>HTML HEAD:</b>
</div>
<pre>
&lt;!-- Start of HTML header portion --&gt;
&lt;CENTER&gt;
&lt;A HREF="/webvoy.htm"&gt;&lt;IMG ALIGN=TOP BORDER=0 
 ALT="Start Over" SRC="/images/banner.gif"&gt;&lt;/A&gt;
&lt;/CENTER&gt;
&lt;!-- End of HTML header portion --&gt;
&lt;!DOCTYPE HTML PUBLIC "-\//W3C\//DTD HTML 4.0 
  Transitional\//EN" 
 "http:\//www.w3.org/TR/REC-html40/loose.dtd"&gt;
&lt;HTML&gt;
&lt;HEAD&gt;
&lt;TITLE&gt;WebVoyage Record View 1&lt;/TITLE&gt;
&lt;/HEAD&gt;
</pre>
<br></br>
<br></br>
<h2>Example 3</h2>
<div>
<b>URL:</b> 
<tt>http:\//www.elpl.org:81/ipac20/ipac.jsp?
session=1049830Q468CV.9679&amp;
profile=elp&amp;uri=full=1100001\@!321380\@!2&amp;
ri=3&amp;aspect=advanced&amp;menu=search&amp;source=10.2.2.5\@!elp&amp;
ipp=20&amp;staffonly=&amp;term=smith&amp;index=BAW&amp;uindex=&amp;
aspect=advanced&amp;menu=search&amp;ri=3#focus</tt>
</div>
<br></br>
<div>
<b>HTML HEAD:</b>
</div>
<pre>
&lt;html&gt;&lt;head&gt;
 &lt;meta http-equiv="Content-Type" content="text/html; 
 charset=utf-8"&gt;
 &lt;META HTTP-EQUIV="Expires" CONTENT="0"&gt; 
 &lt;title&gt;iPac2.0&lt;/title&gt;&lt;link 
 title="bannerstyles" href="ipac/css/ipac.css" 
 type="text/css" rel="stylesheet"&gt;
&lt;/head&gt;
</pre>
<br></br>
<br></br>
<h2>Example 4</h2>
<div>
<b>URL:</b> 
<tt>http:\//draweb.library.phila.gov/web2/tramp2.exe/
authority_hits/A09rr4r4.001? server=1home&amp;item=1</tt>
</div>
<br></br>
<div>
<b>HTML HEAD:</b>
</div>
<pre>
&lt;HTML&gt;
&lt;!--Copyright 1996-1999 Data Research Associates, Inc. 
 All rights reserved. Removal of this notice violates 
 applicable  copyright laws.--&gt;
&lt;!--/English/Record.html--&gt;
&lt;META HTTP-EQUIV="REFRESH" CONTENT="900 ;
URL=/web2/tramp2.exe/log_out/A09rr4r4.002?server=1home"&gt;
&lt;HEAD&gt;
&lt;TITLE&gt;FLP Catalog - Brief Record Display&lt;/title&gt;
&lt;/head&gt;
</pre>
<br></br>
<br></br>
<h2>Example 5</h2>
<div>
<b>URL:</b> 
<tt>http:\//catalogue.sussex.ac.uk/www-bin/www_talis32</tt>
</div>
<br></br>
<div>
<b>HTML HEAD:</b>
</div>
<pre>
&lt;HTML&gt;
&lt;HEAD&gt;
&lt;?xml version="1.0"?&gt;
&lt;rdf:RDF 
 xmlns:rdf="http:\//www.w3c.org/1999/02/22-rdf-syntax-ns#" 
 xmlns:dc="http:\//purl.org/dc/elements/1.0/" 
 xmlns:tal="http:\//www.talis.com/talisxml/schema/1.0/"&gt;
&lt;rdf:Description 
 rdf:about=
  "http:\//ustalis.lib.susx.ac.uk:80/www-bin/www_talis32?" 
 dc:publisher="University of Sussex" dc:format="text/html" 
 dc:creator="TalisWeb OPAC" dc:title="www_frame_start.tgml" 
 dc:date="2003-04-08T20:09:01"&gt;
&lt;tal:object tal:type="xml-header" 
 tal:browser="Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) 
 AppleWebKit/51 (like Gecko) Safari/51"&gt;
&lt;/tal:object&gt;
&lt;/rdf:Description&gt;
&lt;/rdf:RDF&gt;
&lt;TITLE&gt;TalisWeb Opac&lt;/TITLE&gt;
&lt;META content="www_frame_start.tgml" name=page&gt;
&lt;/HEAD&gt;
</pre>
<br></br>
<br></br>
<h2>Example 6</h2>
<div>
<b>URL:</b> 
<tt>http:\//intranet.cheshire.gov.uk/cgi-bin/ viewpoint_server.sh?
enqtype=SECOND&amp;enqpara1=RESULT&amp;oldenqpara1=DEFAULT&amp;
s_string=Blue%2BFire.&amp;s_type=T&amp;rcn=0340540672&amp;
media_code=1&amp;sec_code=1&amp;authorlist=/tmp/gasJOaW.L.001&amp;
filename=/tmp/gaskMai_L.001&amp;page=0&amp;no_of_results=00000004&amp;
type=TITLE&amp;sec_stng=1,2,4,5,7,9,10,3,8,11,12,13,14,999&amp;
media_stng=&amp;authorpage=0</tt>
</div>
<br></br>
<div>
<b>HTML HEAD:</b>
</div>
<pre>
&lt;HTML&gt;
&lt;HEAD&gt;
&lt;TITLE&gt;Title Information&lt;/TITLE&gt;&lt;/HEAD&gt;
</pre>
<br></br>
<br></br>
<h2>Example 7</h2>
<div>
<b>URL:</b> 
<tt>http:\//s250.b.tu-harburg.de:8080/DB=1/SET=2/TTL=1/SHW?FRST=1</tt>
</div>
<br></br>
<div>
<b>HTML HEAD:</b>
</div>
<pre>
&lt;HTML&gt;
&lt;HEAD&gt;
 &lt;META http-equiv="Content-Type" content="text/html; 
  charset=iso8859-1"&gt;
 &lt;meta http-equiv="cache-control" content="no-cache"&gt;
 &lt;meta http-equiv="pragma" content="no-cache"&gt;
&lt;TITLE&gt;Katalog der Universit&#228;tsbibliothek der TUHH - 
 Search Full Title&lt;/TITLE&gt;
&lt;/HEAD&gt;
</pre>
<br></br>
<br></br>
<h2>Example 8</h2>
<div>
<b>URL:</b> 
<tt>http:\//verdi.seattleu.edu/uhtbin/cgisirsi/Ql3fOhxb1W/41660019/9</tt>
</div>
<br></br>
<div>
<b>HTML HEAD:</b>
</div>
<pre>
&lt;HTML DIR="LTR"&gt;
&lt;HEAD&gt;
 &lt;TITLE&gt;[WebCat] Unicorn&lt;/TITLE&gt;
 &lt;META http-equiv="refresh"
 content="3540; 
URL=http:\//verdi.seattleu.edu/uhtbin/cgisirsi/41660019/58"&gt;
&lt;/HEAD&gt;
</pre>
<br></br>
<br></br>
<h2>Example 9</h2>
<div>
<b>URL:</b> 
<tt>http:\//www.wilinet.wccls.lib.or.us/Polaris/Search/
Z3950Gateway.dll/PowerPAC.1/iOVPfRxoy0EFT2z0o62FyG?
SessionOrgID=1&amp;so=&amp;term=noad&amp;by=AU&amp;type=Keyword&amp;loc=FullDisplay&amp;
start=2&amp;action=full&amp;using=27&amp;multidb=&amp;languageid=1033</tt>
</div>
<br></br>
<div>
<b>HTML HEAD:</b>
</div>
<pre>
&lt;html xmlns:msxsl="urn:schemas-microsoft-com:xslt"
 xmlns:PACFfuncs="http:\//www.gaylord.com"&gt;
&lt;head&gt;
&lt;META http-equiv="Content-Type" content="text/html; 
 charset=UTF-8"&gt;
&lt;TITLE&gt;Polaris PowerPAC&lt;/TITLE&gt;
&lt;link rel="stylesheet" type="text/css" href=
 "http:\//www.wilinet.wccls.lib.or.us/Polaris/stylesheets/
   PolarisStyles.asp"&gt;
&lt;/head&gt;
</pre>
<br></br>
<br></br>
			</body>
			<dc:date>2003-04-10T20:26:55-05:00</dc:date>
			<category>InfoWorld</category>
			</item>
		<item>
			<title>High-tech PR in the age of blogs, part 2</title>
			<link>http://weblog.infoworld.com/udell/2003/04/09.html#a663</link>
			<description>
&lt;table align="right"&gt;
&lt;tr&gt;&lt;td&gt;
&lt;a href="http://www.mediamap.com"&gt;&lt;img alt="MediaMap" width="216" height="100" src="http://weblog.infoworld.com/udell/gems/mediaMap.gif"/&gt;&lt;/a&gt;
&lt;div class="realsmall"&gt;"Do you want to enhance communications &lt;br/&gt; with your key audiences?"&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
Tech journos like me get tons of messages from folks at places like &lt;a href="http://www.mediamap.com/"&gt;MediaMap&lt;/a&gt; asking: "Who are you and what do you cover?" They are forever "updating their database" so that PR folk can more precisely target their email blasts. I opted out of this game years ago. Now, finally, the rules may be changing. In this week's ExpertPR newsletter, MediaMap's PR Tactics column says in part:
&lt;blockquote&gt;&lt;i&gt;
RSS holds the promise of becoming a key part of a company's media relations strategy and execution. [&lt;a href="http://www.mediamap.com/expertpr/expertpr_040303_feature1.htm"&gt;PR Tactics: Using RSS for corporate communications&lt;/a&gt;] 
&lt;/i&gt;&lt;/blockquote&gt;
 &lt;b&gt;...&lt;/b&gt;</description>
			
			<body xmlns="http://www.w3.org/1999/xhtml">
			
<table align="right">
<tr>
<td>
<a href="http://www.mediamap.com">
<img alt="MediaMap" width="216" height="100" src="http://weblog.infoworld.com/udell/gems/mediaMap.gif"></img>
</a> 
<div class="realsmall">"Do you want to enhance communications
<br></br> with your key audiences?"</div>
</td>
</tr>
</table>Tech journos like me get tons of messages from folks at
places like 
<a href="http://www.mediamap.com/">MediaMap</a> asking: "Who are
you and what do you cover?" They are forever "updating their
database" so that PR folk can more precisely target their email
blasts. I opted out of this game years ago. Now, finally, the rules
may be changing. In this week's ExpertPR newsletter, MediaMap's PR
Tactics column says in part: 
<blockquote>
<i>RSS holds the promise of becoming a key part of a company's
media relations strategy and execution. [
<a href="http://www.mediamap.com/expertpr/expertpr_040303_feature1.htm">
PR Tactics: Using RSS for corporate communications</a>]</i>
</blockquote>
<br></br>
<br></br> 
<p>The author, 
<a href="http://www.philgomes.com/blog/">Phil Gomes</a>, cites an
item I wrote last August entitled 
<a href="http://weblog.infoworld.com/udell/2002/08/14.html#a383">Contacting
Me: High-tech PR in the age of blogs</a>. I'm delighted to see
MediaMap picking up on the ideas expressed there. I've gotten a few
calls from readers of Phil's piece asking: "So, what does this mean
for how we pitch things to you?" Let's start with the "tactical
news distribution policy" that Phil recommends; I've added the
column labeled 'value' to indicate what matters most to me:</p>
<blockquote>
<table border="1" cellspacing="0" cellpadding="2">
<tr>
<td>
<b>
<font size="2">Topic</font>
</b>
</td>
<td align="center">
<b>
<font size="2">Release/RSS</font>
</b>
</td>
<td align="center">
<b>
<font size="2">RSS only</font>
</b>
</td>
<td align="center">
<b>
<font size="2">value</font>
</b>
</td>
</tr>
<tr>
<td>Quarterly earnings</td>
<td align="center">
<b>X</b>
</td>
<td align="center">&#160;</td>
<td align="center">low</td>
</tr>
<tr>
<td>
<font size="2">Executives' or engineers' commentary on industry
trends</font>
</td>
<td align="center">&#160;</td>
<td align="center">
<b>X</b>
</td>
<td align="center">high</td>
</tr>
<tr>
<td>
<font size="2">Major product announcement</font>
</td>
<td align="center">
<b>X</b>
</td>
<td align="center">&#160;</td>
<td align="center">low
<sup>1</sup>
</td>
</tr>
<tr>
<td>
<font size="2">Minor upgrades or product plug-ins</font>
</td>
<td align="center">&#160;</td>
<td align="center">
<b>X</b>
</td>
<td align="center">low
<sup>2</sup>
</td>
</tr>
<tr>
<td>
<font size="2">Keynote or strategic speaking placement at a major
tradeshow or conference</font>
</td>
<td align="center">
<b>X</b>
</td>
<td align="center">&#160;</td>
<td align="center">low
<sup>3</sup>
</td>
</tr>
<tr>
<td>
<font size="2">Multi-vendor panel participation at a small
tradeshow or conference</font>
</td>
<td align="center">&#160;</td>
<td align="center">
<b>X</b>
</td>
<td align="center">low
<sup>4</sup>
</td>
</tr>
</table>
<p>
<sup>1</sup> If it's of interest, the executives and engineers
would be talking about it, wouldn't they?
<br></br>
<sup>2</sup> Ditto.
<br></br>
<sup>3</sup> Ditto.
<br></br>
<sup>4</sup> Ditto.</p>
</blockquote>
<p>In short, I don't want you to pitch things to me. And I don't
want your clients to pitch things to me either, at least not
directly. I do, very much, want them to speak in their own
authentic voices, about the technologies and products and services
that inspire their passion, to everyone who might have a reason to
care. I want your clients to explain what they do, how they think,
and why their efforts matter. And so, of course -- and more
importantly -- do current and prospective customers.</p>
<p>What's missing from Phil's chart, I think, is an appreciation of
how awareness flows through blogspace. Communication, in this view,
is a tactical missile launched by a PR agent and aimed at a
journalist. News flash: I'm the wrong target. In fact, and
counter-intuitively, blogging 
<i>doesn't aim at any target</i>! Chris Anderson put it nicely the
other day:</p>
<blockquote>
<i>Blogs are a way to "publish and forget" -- you fire the
information out there, and interested people will find it. [
<a href="http://www.simplegeek.com/PermaLink.aspx/89dd1eb6-5459-4ae5-922c-47d85d6f3be0">
SimpleGeek</a>]</i>
</blockquote>
<p>If this seems like too much of a leap of faith, consider how
hard executives and engineers already work 
<i>explaining to one another the nature and value of what they
do</i>. Some of this is necessarily confidential. A lot isn't, and
when it isn't, the message could (and should) reach a much wider
audience. Some of those readers will be journalists who write for
print and online. Most won't be journalists -- but a growing number
of those folks will write online too. What is known and thought
about your clients will emerge from this melting pot of
perspectives.</p>
<p>If you're selling a product or service, you have to be able to
tell a good story. If you're advising sellers of products or
services, you have to help them tell those stories. If you're a
journalist, you have to evaluate all the stories and weave them
into a coherent narrative. This has always been true. But we never
expected all the storytellers to wear real faces and speak with
real voices. Now we do.</p>
			</body>
			<dc:date>2003-04-09T16:13:47-05:00</dc:date>
			</item>
		<item>
			<title>Blogs, scopes, and human routers</title>
			<link>http://weblog.infoworld.com/udell/2003/04/08.html#a662</link>
			<description>
Back before there were blogs, my groupthink laboratory was the NNTP protocol, which I used at roughly four levels: workgroup (my new media development team at BYTE Magazine), department (the BYTE editorial team), company (all of BYTE), and world (BYTE's public newsgroups). I learned something then that was, and still is, quite difficult to describe -- but critically important. I call it the principle of scoped collaboration, and I illustrated it in a &lt;a href="http://www.oreilly.com/catalog/pracintgr/chapter/ch04_01.html#gw-ch-4-sect-1"&gt;chapter of my book&lt;/a&gt; like so:
 &lt;b&gt;...&lt;/b&gt;</description>
			
			<body xmlns="http://www.w3.org/1999/xhtml">
			
<p>Back before there were blogs, my groupthink laboratory was the
NNTP protocol, which I used at roughly four levels: workgroup (my
new media development team at BYTE Magazine), department (the BYTE
editorial team), company (all of BYTE), and world (BYTE's public
newsgroups). I learned something then that was, and still is, quite
difficult to describe -- but critically important. I call it the
principle of scoped collaboration, and I illustrated it in a 
<a href="http://www.oreilly.com/catalog/pracintgr/chapter/ch04_01.html#gw-ch-4-sect-1">
chapter of my book</a> like so:</p>
<p>
<img border="1" width="415" height="325" src="http://weblog.infoworld.com/udell/gems/scopedZones.gif"></img>
</p>
<p>The crucial insight, for me, was that a new kind of skill is
becoming relevant: the ability to make effective use of overlapping
scopes. Here's how I put it then:</p>
<blockquote>
<i>If I am seeking or sharing information, why do I need to be able
to address a group of 3 (my team), or 300 (my company), or 300,000
(my company's customers), or 300 million (the Usenet)? At each
level I encounter a group that is larger and more diffuse. Moving
up the ladder I trade off tight affinity with the concerns of my
department, or my company, for access to larger hive-minds. But
there doesn't really have to be a tradeoff, because these realms
aren't mutually exclusive. You can, and often should, operate at
many levels. [
<a href="http://www.oreilly.com/catalog/pracintgr/">Practical
Internet Groupware</a>]</i>
</blockquote>
<p>Today, you can see a great example of this principle of
overlapping scopes. Chris Anderson copies some material from his
private "work blog" at Microsoft over to his public blog, 
<a href="http://www.simplegeek.com/commentview.aspx/89dd1eb6-5459-4ae5-922c-47d85d6f3be0">
SimpleGeek</a>, 
<i>in order to attract outside perspectives into the
organization</i>. This is precisely the maneuver that I have found
to be powerful, yet elusive to explain. Chris's entry takes a
confessional tone. "I don't understand blogging," he writes, and he
worries that software will get written before the subtleties sink
in. That's a valid concern, and a great issue to raise now that
blogware has begun to issue from Redmond. As a matter of fact,
though, Chris's take on blogs is spot on:</p>
<blockquote>
<i>One reason I believe that blogs are great for corporation
internal communication is the question of distribution lists.
Inside of Microsoft we live and die by email. However the constant
spam of email to large distribution lists ends up drowning out the
important information. For many types of communication (but not
all) blogs provide a better way of communicating. There are many
cases where you as the publisher of a piece of information don't
know who would be interested. Blogs are a way to "publish and
forget" - you fire the information out there, and interested people
will find it. Once I add our internal blog server to the corporate
search service, suddenly I could find people that worked on
products that I wanted to communicate with. Amazing. [
<a href="http://www.simplegeek.com/commentview.aspx/89dd1eb6-5459-4ae5-922c-47d85d6f3be0">
SimpleGeek</a>]</i>
</blockquote>
<p>Even more interesting, at least to me, is Chris's instinctive
use of overlapping scopes, and his positioning of himself as a
router among them. "This is quoted from my internal blog at
work..," he writes, "I know that there are much better experts out
there to answer this question...I hope some of them can respond." 
<i>Bing!</i>
</p>

			</body>
			<dc:date>2003-04-08T13:51:11-05:00</dc:date>
			</item>
		<item>
			<title>A conversation with MySQL's M&amp;#229;rten Mickos</title>
			<link>http://weblog.infoworld.com/udell/2003/04/08.html#a661</link>
			<description>
&lt;table align="right"&gt;
&lt;tr&gt;&lt;td&gt;
&lt;img width="150" height="201" alt="M&amp;aring;rten Mickos" hspace="8" src="http://www.mysql.com/images/management-marten.jpg"/&gt;&lt;/a&gt;
&lt;div align="center" class="realsmall"&gt;M&amp;aring;rten Mickos&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;blockquote&gt;&lt;i&gt;
As the CEO of MySQL,  the company behind the open-source database, MySQL, M&amp;aring;rten Mickos is leading the company's move into the enterprise market against players such as Sybase, Oracle, IBM, and Microsoft. The company recently announced optimization for the Intel Itanium 2 processor running Linux, directed at large databases, data mining, and other enterprise applications. Jon Udell, the InfoWorld Test Center's lead analyst, spoke with Mickos about dual licensing, modular architecture, and the perception vs. the reality of MySQL. [Full story at &lt;a href="http://www.infoworld.com/article/03/04/04/14insider_1.html"&gt;InfoWorld.com&lt;/a&gt;]
&lt;/i&gt;&lt;/blockquote&gt;
I first met M&amp;aring;rten (that's a &lt;a href="http://tbray.org/ongoing/When/200x/2003/04/06/Unicode"&gt;Unicode&lt;/a&gt; &lt;a href="http://oss.software.ibm.com/cgi-bin/icu/ub/utf-8/?ch=00E5"&gt;U+00E5&lt;/a&gt;, LATIN SMALL LETTER A WITH RING ABOVE, HTML entity &amp;amp;aring;) about six years ago. He was working for &lt;a href="http://www.solidtech.com/"&gt;Solid Technologies&lt;/a&gt;, whose database I had chosen for the subscriber version of BYTE.com I was then building. In 1997 the acronym LAMP (Linux/Apache/MySQL/Perl|Python|PHP) had not yet appeared, but you could say it was a LAP project: Linux, Apache, and Perl.
 &lt;b&gt;...&lt;/b&gt;</description>
			
			<body xmlns="http://www.w3.org/1999/xhtml">
			
<table align="right">
<tr>
<td>
<img width="150" height="201" alt="M&#229;rten Mickos" hspace="8" src="http://www.mysql.com/images/management-marten.jpg"></img> 
<div align="center" class="realsmall">M&#229;rten Mickos</div>
</td>
</tr>
</table>
<blockquote>
<i>As the CEO of MySQL, the company behind the open-source
database, MySQL, M&#229;rten Mickos is leading the company's move
into the enterprise market against players such as Sybase, Oracle,
IBM, and Microsoft. The company recently announced optimization for
the Intel Itanium 2 processor running Linux, directed at large
databases, data mining, and other enterprise applications. Jon
Udell, the InfoWorld Test Center's lead analyst, spoke with Mickos
about dual licensing, modular architecture, and the perception vs.
the reality of MySQL. [Full story at 
<a href="http://www.infoworld.com/article/03/04/04/14insider_1.html">
InfoWorld.com</a>]</i>
</blockquote>I first met M&#229;rten (that's a 
<a href="http://tbray.org/ongoing/When/200x/2003/04/06/Unicode">Unicode</a>

<a href="http://oss.software.ibm.com/cgi-bin/icu/ub/utf-8/?ch=00E5">
U+00E5</a>, LATIN SMALL LETTER A WITH RING ABOVE, HTML entity
&amp;aring;) about six years ago. He was working for 
<a href="http://www.solidtech.com/">Solid Technologies</a>, whose
database I had chosen for the subscriber version of BYTE.com I was
then building. In 1997 the acronym LAMP
(Linux/Apache/MySQL/Perl|Python|PHP) had not yet appeared, but you
could say it was a LAP project: Linux, Apache, and Perl. 
<br></br>
<br></br> 
<p align="right">
<a href="http://www.papabearsnorthwoods.com/">
<img width="202" height="288" alt="lamp" align="right" src="http://www.papabearsnorthwoods.com/images/antler-lamp.jpg"></img>
</a>
</p>
<p>The notion of building what was for me a mission-critical
application on open source foundations was a bit radical, and so I
actually prototyped on a dual track: Linux/Apache/Perl and the
Solid database versus NT/IIS/Perl and the NT version of Solid. In
the end I chose the LAP solution. If I had to make the same choice
today, I'm not sure which way I'd jump. My solution depended on
Apache's mod_rewrite, a technology that's still not mature in the
Windows space. On the other hand, the .NET Framework is very
appealing. But here's the real point: LAP has morphed into LAMP,
and the landscape of choice is different. A key component which did
not then play a prominent role in the open source half of the
equation -- the database -- now does.</p>
			</body>
			<dc:date>2003-04-08T10:10:46-05:00</dc:date>
			</item>
		</channel>
	</rss>
