<?xml version="1.0"?>
<!-- RSS generated by Radio UserLand v8.0.7 on Tue, 25 Jun 2002 21:41:49 GMT -->
<rss version="0.92">
	<channel>
		<title>Jon Udell: Web Services</title>
		<link>http://radio.weblogs.com/0100887/categories/webServices/</link>
		<description></description>
		<copyright>Copyright 2002 Jon Udell</copyright>
		<lastBuildDate>Tue, 25 Jun 2002 21:41:49 GMT</lastBuildDate>
		<docs>http://backend.userland.com/rss092</docs>
		<managingEditor></managingEditor>
		<webMaster></webMaster>
		<cloud domain="radio.xmlstoragesystem.com" port="80" path="/RPC2" registerProcedure="xmlStorageSystem.rssPleaseNotify" protocol="xml-rpc"/>
		<item>
			<pubDate>6/25/2002; 5:41:14 PM</pubDate>
			<title> XMethods uses SonicMQ for asynch version of XSpace</title>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/06/25.html#a317</link>
			<description>&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;Tony Hong from &lt;/FONT&gt;&lt;A href=&quot;http://www.xmethods.org/&quot;&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;XMethods&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt; is here, showing a nifty evolution&amp;nbsp;of &lt;/FONT&gt;&lt;A href=&quot;http://www.xmethods.net/ve2/XSpace.po&quot;&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;XSpace&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;. It&apos;s currently a service that implements a simple shared address book. The concept is that of a tuplespace updated and queried by SOAP messages. The new twist, slated to become available July 15,&amp;nbsp; is the use of &lt;/FONT&gt;&lt;A href=&quot;http://www.sonicsoftware.com/products/product_line.htm&quot;&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;SonicMQ&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;, a JMS (Java Messaging Service) provider, to add reliability, security, and pub-sub notification services to the message flow. &lt;/FONT&gt; &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;Tony Hong from &lt;/FONT&gt;&lt;A href=&quot;http://www.xmethods.org/&quot;&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;XMethods&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt; is here, showing a nifty evolution&amp;nbsp;of &lt;/FONT&gt;&lt;A href=&quot;http://www.xmethods.net/ve2/XSpace.po&quot;&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;XSpace&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;. It&apos;s currently a service that implements a simple shared address book. The concept is that of a tuplespace updated and queried by SOAP messages. The new twist, slated to become available July 15,&amp;nbsp; is the use of &lt;/FONT&gt;&lt;A href=&quot;http://www.sonicsoftware.com/products/product_line.htm&quot;&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;SonicMQ&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;, a JMS (Java Messaging Service) provider, to add reliability, security, and pub-sub notification services to the message flow. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;The new service is done doc/literal style. A writer of the address book sends a XML document, which is the update, to the SonicMQ broker, and receives an acknowledgement. Separately, readers of the address book register with the broker for update notifications. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;You&apos;ll be able to download Sonic&apos;s client software in order to interact with the service. As Tony points out, this is a great first step towards a broader appreciation of SOAP&apos;s one-way messaging. Alternatively, you&apos;ll be able to interact with the service over straight HTTP. In this scenario the services supplied by JMS will be either missing, or done differently. But the point is: the payload&apos;s the same either way, and can tap into evolving standards like WS-Security. Very cool stuff!&lt;/FONT&gt;&lt;BR&gt;&lt;/P&gt;</fullitem>
			</item>
		<item>
			<pubDate>6/17/2002; 11:47:56 AM</pubDate>
			<title>Is web services orchestration a new class of problem?</title>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/06/17.html#a305</link>
			<description>&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;I agree with the RESTian argument that SOAP-accessible web services should support HTTP GET where appropriate.&amp;nbsp;The&amp;nbsp;notion is that this&amp;nbsp;will help ensure low coordination costs both for person-to-machine as well as machine-to-machine communication.&amp;nbsp;&lt;/FONT&gt; &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;I agree with the RESTian argument that SOAP-accessible web services should support HTTP GET where appropriate.&amp;nbsp;The&amp;nbsp;notion is that this&amp;nbsp;will help ensure low coordination costs both for person-to-machine as well as machine-to-machine communication.&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;In &lt;/FONT&gt;&lt;A href=&quot;http://www.w3.org/2001/tag/doc/get7&quot;&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;TAG Finding: URIs, Addressability, and the use of HTTP GET&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;, Dan Connolly sums up the recommendation that resources be made URI-addressable where possible, and&amp;nbsp;dispels two myths that have clouded the issue:&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;DIV class=myth&gt;
&lt;DL&gt;
&lt;DT&gt;&lt;EM&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;Myth: Search services will not index anything with a &quot;?&quot; in the URI. &lt;/FONT&gt;&lt;/EM&gt;
&lt;DD&gt;&lt;EM&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;This was a heuristic to avoid infinite loops in some search service crawlers, but it was not an architectural constraint, and modern search services use more sophisticated heuristics to avoid loops. &lt;/FONT&gt;&lt;/EM&gt;&lt;/DD&gt;&lt;/DL&gt;&lt;/DIV&gt;
&lt;DIV class=myth&gt;
&lt;DL&gt;
&lt;DT&gt;&lt;EM&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;Myth: URIs cannot be longer than 256 characters &lt;/FONT&gt;&lt;/EM&gt;
&lt;DD&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif&gt;&lt;FONT size=2&gt;&lt;EM&gt;This was a limitation in some server implementations, and while servers continue to have limitations to prevent denial-of-service attacks, they are generally at least 4000 characters, and they evolve as the legitimate uses of application developers evolve.&lt;/EM&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/DD&gt;
&lt;DD&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DD&gt;&lt;/DL&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;How this relates to the orchestration of web services is still very unclear though. Consider this &lt;/FONT&gt;&lt;A href=&quot;http://lists.w3.org/Archives/Public/www-tag/2002Apr/0159.html&quot;&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;remark on the TAG mailing list&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;, from Edwin Khodabakchian, CEO of &lt;/FONT&gt;&lt;A href=&quot;http://www.collaxa.com/&quot;&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;Collaxa&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;:&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P dir=ltr&gt;&lt;EM&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;- we need to acknowledge the fact that we are solving a new class of&amp;nbsp; problem that is more about machine-to-machine communication&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;Perhaps this really is a new class of problem, but if so I would like to see spelled out more clearly exactly how and why that is so, and what it implies. &lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;&amp;nbsp;&lt;/P&gt;</fullitem>
			</item>
		<item>
			<pubDate>5/16/2002; 3:02:41 PM</pubDate>
			<title>Web services and the web ecosystem</title>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/05/16.html#a246</link>
			<description>&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;Adam Bosworth gave a whirlwind tour of BEA&apos;s WebLogic Workshop. After the obligatory Hello World, he dived into the good stuff. Cajun (I&apos;ll still call it that, for brevity) takes the web services mantra of loose coupling very seriously. It separates interfaces from implementations by generating XML grammars, called maps. In a nutshell, your map abstracts away from member variables in implementation code. An element in the map, say &amp;lt;PERSON&amp;gt;, is not sensitive to changes in the names of underlying member variable names. This contrasts with most SOAP toolkits which generate interfaces based on those names -- interfaces that break when the names change. &lt;/FONT&gt; &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;Adam Bosworth gave a whirlwind tour of BEA&apos;s WebLogic Workshop. After the obligatory Hello World, he dived into the good stuff. Cajun (I&apos;ll still call it that, for brevity) takes the web services mantra of loose coupling very seriously. It separates interfaces from implementations by generating XML grammars, called maps. In a nutshell, your map abstracts away from member variables in implementation code. An element in the map, say &amp;lt;PERSON&amp;gt;, is not sensitive to changes in the names of underlying member variable names. This contrasts with most SOAP toolkits which generate interfaces based on those names -- interfaces that break when the names change. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;A second key abstraction is conversational context. The framework persists member variables when a service is marked as conversational, and automatically sets up one-way messaging with callbacks. Under the covers, JMS (Java Messaging Service) is used rather than HTTP as the SOAP transport. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;Bosworth argued that Microsoft&apos;s toolkit makes it too easy to create tightly-coupled RPC-style services. In the follow-on panel discussion, Microsoft&apos;s Dave Stutz admitted as much. &quot;Guilty as charged,&quot; he said, while pointing that as with VB, early concept demos have been biased toward the simple, easy-to-use end of the spectrum. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;I asked Stutz, Bosworth, and IBM&apos;s Sam Ruby if the doc/literal style of SOAP usage, which Visual Studio.NET in fact prefers, represents the generic approach to BEA&apos;s mapping technology. They agreed violently. Bosworth: &quot;I&apos;d even say RPC was a bad idea to begin with.&quot; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;Bubbling under the surface here&amp;nbsp;are the somewhat ominous implications of an architectural style that solely addresses application-to-application communication. &quot;Where&apos;s the web in web services?&quot; asked &lt;/FONT&gt;&lt;A href=&quot;http://www.knownow.com/&quot;&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;KnowNow&apos;s&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt; Rohit Khare. The term is a complete misnomer, the panel agreed. It should have been called Net Services, not Web Services, but the name stuck and it&apos;s too late to change it. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;Tim O&apos;Reilly jumped up to say that we ignore the social dimension of the web at our peril. There is &quot;innovative froth&quot; that comes from the bottom up, driven by open source energy and by the interactions among people and applications. I agree. Web services are reinventing the client/server space, and aiming to solve coordination and scaling problems that were never solved before. This necessarily goes beyond the original charter of the web, which was to be a distributed hypermedia application. But the two worlds are not wholly incompatible either. Not every message requires conversational context and asynchronous callbacks. There&apos;s a vast and useful intersection between the web as an interactive hypermedia application (used promiscuously by humans and applications), and web services as a mainly application-to-application affair. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;It&apos;s great to see BEA, Microsoft, and IBM violently agreeing on architectural principles and protocols. But like Tim O&apos;Reilly, I wish that consensus didn&apos;t sound so much like a vendor-driven secession from the web ecosystem. &lt;/FONT&gt;&lt;/P&gt;</fullitem>
			</item>
		<item>
			<pubDate>5/2/2002; 2:04:18 PM</pubDate>
			<title>Linking to SOAP-exposed resources</title>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/05/02.html#a213</link>
			<description>Since the REST/RPC/SOAP discussion flared up again, I&apos;ve been looking for a single clear statement about what kind of problem may exist, and what to do about it. I found it in Paul Prescod&apos;s &lt;A href=&quot;http://www.xml.com/pub/a/2002/04/24/google.html?page=3&quot;&gt;Google&apos;s Gaffe&lt;/A&gt;: 
&lt;BLOCKQUOTE&gt;&lt;I&gt;The point that has not yet filtered through to the mainstream of web services implementors is that linking is just as important for machine-to-machine applications as it is for human-facing applications. If it is impossible to link to SOAP-exposed resources, then they are less powerful and useful than HTTP-exposed ones. Until SOAP has an addressing mechanism as rich as HTTP URIs, SOAP is less, rather than more powerful than HTTP. &lt;/I&gt;&lt;/BLOCKQUOTE&gt;A hugely important class of web services is addressable by URI, and accessible to GET. We call these things web pages. The fact that such pages can be consumed by human-operated browsers and machine-operated scripts in the same way was, and remains, a great thing. As some pages evolve into services intended mainly for programmatic use, XML becomes a natural representation format. This need not undermine the value of the URL-line which, as I&apos;ve &lt;A href=&quot;http://www.byte.com/documents/byt20010816s0002/&quot;&gt;pointed out&lt;/A&gt;, remains an incredibly vital style of access. 
&lt;P&gt; &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P&gt;Since the REST/RPC/SOAP discussion flared up again, I&apos;ve been looking for a single clear statement about what kind of problem may exist, and what to do about it. I found it in Paul Prescod&apos;s &lt;A href=&quot;http://www.xml.com/pub/a/2002/04/24/google.html?page=3&quot;&gt;Google&apos;s Gaffe&lt;/A&gt;: 
&lt;BLOCKQUOTE&gt;&lt;I&gt;The point that has not yet filtered through to the mainstream of web services implementors is that linking is just as important for machine-to-machine applications as it is for human-facing applications. If it is impossible to link to SOAP-exposed resources, then they are less powerful and useful than HTTP-exposed ones. Until SOAP has an addressing mechanism as rich as HTTP URIs, SOAP is less, rather than more powerful than HTTP. &lt;/I&gt;&lt;/BLOCKQUOTE&gt;A hugely important class of web services is addressable by URI, and accessible to GET. We call these things web pages. The fact that such pages can be consumed by human-operated browsers and machine-operated scripts in the same way was, and remains, a great thing. As some pages evolve into services intended mainly for programmatic use, XML becomes a natural representation format. This need not undermine the value of the URL-line which, as I&apos;ve &lt;A href=&quot;http://www.byte.com/documents/byt20010816s0002/&quot;&gt;pointed out&lt;/A&gt;, remains an incredibly vital style of access. 
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;In practice, though, I don&apos;t find that SOAP&amp;nbsp;undermines the URL-line. Toolkits seem perfectly happy to let me turn service names, method names, and parameters into URLs. I have here, for example, both Visual Studio.NET and GLUE. If I write a SOAP service called StockQuote in either of these, with a method called getQuote, then in addition to the SOAP/RPC interface I can automatically use: &lt;/P&gt;
&lt;P&gt;&lt;a href=&quot;http://host/StockQuote/getQuote?sym=VRSN&quot;&gt;http://host/StockQuote/getQuote?sym=VRSN&lt;/a&gt; &lt;/P&gt;
&lt;P&gt;or: &lt;/P&gt;
&lt;P&gt;&lt;a href=&quot;http://host/StockQuote.asmx/getQuote?sym=VRSN&quot;&gt;http://host/StockQuote.asmx/getQuote?sym=VRSN&lt;/a&gt; &lt;/P&gt;
&lt;P&gt;Should Google have done something like this? Absolutely. I miss being able to type &lt;A href=&quot;http://google.com/xml?q=roy+fielding&quot;&gt;&lt;a href=&quot;http://google.com/xml?q=roy+fielding&quot;&gt;http://google.com/xml?q=roy+fielding&lt;/a&gt;&lt;/A&gt;. As I pointed out in a essay on &lt;A href=&quot;http://radio.weblogs.com/0100887/2002/02/12.html&quot;&gt;monetizing web services&lt;/A&gt;, this was possible a few months ago. Arguably it still should be. But that&apos;s just a business decision Google has made. In practice, given the restrictions placed on the Google API, the regular web-friendly HTTP GET remains the preferred way to link to the infinite space of Google queries, as people do every day. &lt;/P&gt;
&lt;P&gt;So, SOAP toolkits already support a RESTful mode for GET-style (though not for POST-style) operations. Since GET-style reads are what both people and machines mainly use the Web to do, I&apos;d say we&apos;re in pretty good shape. &lt;/P&gt;
&lt;P&gt;PS: The top Google result for &quot;restful soap&quot; -- ahead of a bunch of W3C mailing list postings -- is an ad for &lt;STRONG&gt;a restful soap full of aromatic fragrance&lt;/STRONG&gt;.&lt;STRONG&gt;&lt;EM&gt; &lt;/EM&gt;&lt;/STRONG&gt;The name of this restful soap? &lt;STRONG&gt;Desert Storm&lt;/STRONG&gt;. Go figure.&lt;/P&gt;</fullitem>
			</item>
		<item>
			<pubDate>4/30/2002; 11:10:06 AM</pubDate>
			<title>Visualizing Googlespace</title>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/04/30.html#a210</link>
			<description>&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;I&apos;ve received a number of interesting responses to my &lt;/FONT&gt;&lt;A href=&quot;http://www.byte.com/documents/byt1019844546060/&quot;&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;current BYTE.com column&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt; on the Google API. Nelson Minar, former Popular Power CTO who&apos;s now with Google, wrote to point out that since HTML doctitles are of uncertain quality, the snippets (relevant text chunks) returned by the Google API might form an interesting search space. When I tried that, though, the results didn&apos;t seem to&amp;nbsp;diverge enough. &lt;/FONT&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;The name of the game, in this kind of surfing, is to chart a course through googlespace that diverges enough to turn up interesting new connections, but not so much as to end up off in the weeds. &lt;/FONT&gt; &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;I&apos;ve received a number of interesting responses to my &lt;/FONT&gt;&lt;A href=&quot;http://www.byte.com/documents/byt1019844546060/&quot;&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;current BYTE.com column&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt; on the Google API. Nelson Minar, former Popular Power CTO who&apos;s now with Google, wrote to point out that since HTML doctitles are of uncertain quality, the snippets (relevant text chunks) returned by the Google API might form an interesting search space. When I tried that, though, the results didn&apos;t seem to&amp;nbsp;diverge enough. &lt;/FONT&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;The name of the game, in this kind of surfing, is to chart a course through googlespace that diverges enough to turn up interesting new connections, but not so much as to end up off in the weeds. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;So far, titles seem like the happy medium between URLs and snippets. But I&apos;m not done yet. I have a hunch that things will&amp;nbsp;get really juicy when the evaluation function is augmented by something outside of Google. This kind of cross-wiring is what most excited me when I did my &lt;A href=&quot;http://www.byte.com/documents/s=146/byt19990906s0008/&quot;&gt;original mindshare experiment&lt;/A&gt;. When the activation threshold for these experiments is low, because lots of services have standardized APIs, we&apos;ll see (I am sure) some compelling&amp;nbsp;emergent behaviors.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Another reader, Martin Spernau, pointed me to a &lt;A href=&quot;http://traumwind.tierpfad.de/soap/&quot;&gt;graphical Google browser&lt;/A&gt; based on the &lt;A href=&quot;http://www.touchgraph.com/&quot;&gt;TouchGraph&lt;/A&gt; framework. At the TouchGraph site, one of the demos of the framework browses a &lt;A href=&quot;http://www.touchgraph.com/browser/LinkBrowser.html&quot;&gt;taxonomy of graph-based interfaces&lt;/A&gt;. Such visualizations never fail to fascinate me. But I confess that they don&apos;t hold my interest for very long, either. I suspect that the reason is the same: the evaluation functions are too simple, and too isolated.&amp;nbsp;Consider this &lt;A href=&quot;http://www.orgnet.com/inetindustry.html&quot;&gt;interactive map of the Net industry&lt;/A&gt;. According to its creator, Valdis Krebs:&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P&gt;&lt;EM&gt;The data is gathered from various public sources and includes only data on business partnerships such as strategic alliances and joint ventures.&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;It&apos;s easy to imagine an evaluation function that&apos;s sensitive to the sizes of the business entities, the durations of the partnerships, the job-posting patterns in various cities, and a million other things. Visualizing these dimensions would be a worthy challenge for a graph-based interface.&amp;nbsp;Semantic web visionaries suppose that all this metadata will be encoded in standard ways, and will then unlock these powerful evaluation functions. I think it&apos;s going to happen the other way around. Web APIs will surface whatever meager bits of metadata already exist. Applications will combine these APIs to create novel effects. Then metadata will be incrementally improved in order to enhance the effects.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</fullitem>
			</item>
		<item>
			<pubDate>4/29/2002; 1:27:09 PM</pubDate>
			<title>The Google API is a two-way street</title>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/04/29.html#a209</link>
			<description>&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;Google&apos;s new SOAP API seemed to follow a boom-and-bust trajectory. Everyone was excited about it until it arrived. Then doubts arose. &quot;Bah,&quot; scoffed Edd Dumbill in an O&apos;Reilly Network column (&lt;a href=&quot;http://www.oreillynet.com/cs/weblog/view/wlg/1303&quot;&gt;http://www.oreillynet.com/cs/weblog/view/wlg/1303&lt;/a&gt;), &quot;what a waste of space for something that can be done in one line of shell script.&quot; Edd&apos;s point -- that an HTML-screenscraping alternative to the Google SOAP API is easy to hack together -- is quite correct. But the conclusion -- that Google&apos;s SOAP API is silly -- is, I think, very wrong. Full story at &lt;/FONT&gt;&lt;A href=&quot;http://www.byte.com/documents/byt1019844546060/&quot;&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;BYTE.com&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;.&lt;/FONT&gt; &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;Google&apos;s new SOAP API seemed to follow a boom-and-bust trajectory. Everyone was excited about it until it arrived. Then doubts arose. &quot;Bah,&quot; scoffed Edd Dumbill in an O&apos;Reilly Network column (&lt;a href=&quot;http://www.oreillynet.com/cs/weblog/view/wlg/1303&quot;&gt;http://www.oreillynet.com/cs/weblog/view/wlg/1303&lt;/a&gt;), &quot;what a waste of space for something that can be done in one line of shell script.&quot; Edd&apos;s point -- that an HTML-screenscraping alternative to the Google SOAP API is easy to hack together -- is quite correct. But the conclusion -- that Google&apos;s SOAP API is silly -- is, I think, very wrong. Full story at &lt;/FONT&gt;&lt;A href=&quot;http://www.byte.com/documents/byt1019844546060/&quot;&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;BYTE.com&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana,Geneva,Arial,Helvetica,Sans-Serif size=2&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</fullitem>
			</item>
		<item>
			<pubDate>3/27/2002; 10:22:56 PM</pubDate>
			<title>Pipelining the Web</title>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/03/27.html#a153</link>
			<description>I had another look at the W3C&apos;s XSLT service. Turns out you &lt;EM&gt;can&lt;/EM&gt; send it parameters after all. The syntax seems a bit outdated, but it works fine. Now the original solution to the &lt;A href=&quot;http://radio.weblogs.com/0100887/2002/03/19.html#a150&quot;&gt;Nasa newsfeed&lt;/A&gt;&amp;nbsp;seems silly. All that was really needed was a &lt;A href=&quot;http://radio.weblogs.com/0100887/gems/nasa.xml&quot;&gt;parameterized stylesheet&lt;/A&gt;&amp;nbsp;and three URLS, one &lt;A href=&quot;http://www.w3.org/2000/06/webdata/xslt?xslfile=http://radio.weblogs.com/0100887/gems/nasa.xml&amp;amp;xmlfile=http://liftoff.msfc.nasa.gov/Content.xml&amp;amp;Channel=Liftoff&amp;amp;transform=Submit&quot;&gt;for&lt;/A&gt; &lt;A href=&quot;http://www.w3.org/2000/06/webdata/xslt?xslfile=http://radio.weblogs.com/0100887/gems/nasa.xml&amp;amp;xmlfile=http://liftoff.msfc.nasa.gov/Content.xml&amp;amp;Channel=Science&amp;amp;transform=Submit&quot;&gt;each&lt;/A&gt; &lt;A href=&quot;http://www.w3.org/2000/06/webdata/xslt?xslfile=http://radio.weblogs.com/0100887/gems/nasa.xml&amp;amp;xmlfile=http://liftoff.msfc.nasa.gov/Content.xml&amp;amp;Channel=SpaceCal&amp;amp;transform=Submit&quot;&gt;channel&lt;/A&gt;.  &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P&gt;I had another look at the W3C&apos;s XSLT service. Turns out you &lt;EM&gt;can&lt;/EM&gt; send it parameters after all. The syntax seems a bit outdated, but it works fine. Now the original solution to the &lt;A href=&quot;http://radio.weblogs.com/0100887/2002/03/19.html#a150&quot;&gt;Nasa newsfeed&lt;/A&gt;&amp;nbsp;seems silly. All that was really needed was a &lt;A href=&quot;http://radio.weblogs.com/0100887/gems/nasa.xml&quot;&gt;parameterized stylesheet&lt;/A&gt;&amp;nbsp;and three URLS, one &lt;A href=&quot;http://www.w3.org/2000/06/webdata/xslt?xslfile=http://radio.weblogs.com/0100887/gems/nasa.xml&amp;amp;xmlfile=http://liftoff.msfc.nasa.gov/Content.xml&amp;amp;Channel=Liftoff&amp;amp;transform=Submit&quot;&gt;for&lt;/A&gt; &lt;A href=&quot;http://www.w3.org/2000/06/webdata/xslt?xslfile=http://radio.weblogs.com/0100887/gems/nasa.xml&amp;amp;xmlfile=http://liftoff.msfc.nasa.gov/Content.xml&amp;amp;Channel=Science&amp;amp;transform=Submit&quot;&gt;each&lt;/A&gt; &lt;A href=&quot;http://www.w3.org/2000/06/webdata/xslt?xslfile=http://radio.weblogs.com/0100887/gems/nasa.xml&amp;amp;xmlfile=http://liftoff.msfc.nasa.gov/Content.xml&amp;amp;Channel=SpaceCal&amp;amp;transform=Submit&quot;&gt;channel&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;This way of composing Web services by blogging URL-lines feels like the spiritual descendent of the Unix pipeline. This is&amp;nbsp;part of what motivates the REST discussion, I think. We&apos;re going to be hearing more and more about &lt;A href=&quot;http://www.xml.com/pub/a/2002/02/20/rest.html?page=2&quot;&gt;orchestration&lt;/A&gt; of services in the coming months&amp;nbsp;and years.&amp;nbsp;There will be many ways to do that. I hope that&amp;nbsp;basic URL-line-plus-XLST will be a viable strategy. Maybe I&apos;m just being nostalgic, but I don&apos;t think so. I have a hunch that pipelined XML processing will be important for all the reasons that pipelined text processing has been.&lt;/P&gt;</fullitem>
			</item>
		<item>
			<pubDate>3/8/2002; 6:44:31 PM</pubDate>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/03/08.html#a118</link>
			<description>&lt;STRONG&gt;Smoketesting DIY Web services&lt;/STRONG&gt; &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P&gt;&lt;STRONG&gt;Smoketesting DIY Web services&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Marc Barrot &lt;A href=&quot;http://radio.weblogs.com/0104487/2002/03/07.html#a8&quot;&gt;ran into a roadblock&lt;/A&gt;. I offered my &lt;A href=&quot;http://www.byte.com/tangledthreads/thread.jsp?forum=262&amp;amp;thread=10486&quot;&gt;5-step smoketest&lt;/A&gt;. &lt;/P&gt;</fullitem>
			</item>
		<item>
			<pubDate>3/5/2002; 9:25:42 AM</pubDate>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/03/05.html#a107</link>
			<description>&lt;STRONG&gt;WSDL for rpc.weblogs.com&lt;/STRONG&gt; &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P&gt;&lt;STRONG&gt;WSDL for rpc.weblogs.com&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Sam&apos;s &lt;A href=&quot;http://radio.weblogs.com/0101679/stories/2002/03/05/aBusyDevelopersGuideToWsdl11PartIi.html&quot;&gt;Busy Developer&apos;s Guide, Part II&lt;/A&gt;&amp;nbsp;delivers the &lt;A href=&quot;http://radio.weblogs.com/0101679/stories/2002/03/05/weblogswsdl.html&quot;&gt;WSDL&lt;/A&gt;, and shows how to use it from Axis and .NET.&lt;/P&gt;</fullitem>
			</item>
		<item>
			<pubDate>3/4/2002; 7:29:10 PM</pubDate>
			<title>Hashtables, structs, XML-RPC, and SOAP</title>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/03/04.html#a105</link>
			<description>&lt;STRONG&gt;Hashtables, structs, XML-RPC, SOAP&lt;/STRONG&gt; &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P dir=ltr&gt;&lt;STRONG&gt;Hashtables, structs, XML-RPC, SOAP&lt;/STRONG&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P&gt;&lt;EM&gt;It is a darn shame.&amp;nbsp; XML-RPC does define a struct which reasonably maps to a hash table.&amp;nbsp; If only SOAP had done the same in section 5, then Jon&apos;s adventure would have been a rather short one. &lt;/EM&gt;[&lt;A href=&quot;http://radio.weblogs.com/0101679/&quot;&gt;Sam Ruby&apos;s Radio Weblog&lt;/A&gt;]&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;Certainly that would have helped, and I&apos;m hopeful it will yet happen. I suspect there&apos;s more going on here, though. Sam and I both believe that the dynamic nature of scripting languages is not the root cause of WSDL pain. Scripting &lt;EM&gt;culture&lt;/EM&gt;, however, does play a role. Hashtables are popular with scripters because&amp;nbsp;we can build up data structures without having to name all of their parts.&amp;nbsp;This is a major convenience that speeds up development quite a lot. It also has a cost both to us, in terms of future readability, and to others, in terms of maintenance and (when we go over the wire) interop. How to weigh the benefits and costs of anonymous&amp;nbsp;versus named data? And, how to join programming cultures that prefer things one way with cultures that prefer things the other way?&lt;/P&gt;</fullitem>
			<source url="http://radio.weblogs.com/0101679/rss.xml">Sam Ruby&amp;apos;s Radio Weblog</source>
			</item>
		<item>
			<pubDate>3/3/2002; 6:43:28 PM</pubDate>
			<title>Pipelining XML</title>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/03/03.html#a98</link>
			<description>&lt;STRONG&gt;Pipelining XML&lt;/STRONG&gt; &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P dir=ltr&gt;&lt;STRONG&gt;Pipelining XML&lt;/STRONG&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P&gt;&lt;A href=&quot;http://www.xmlhack.com/read.php?item=1564&quot;&gt;&lt;EM&gt;XML Pipeline Definition Language introduced as Note&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;. The W3C has released XML Pipeline Definition Language, which describes &quot;the processing relationships between XML resources&quot; as a Note. [&lt;/EM&gt;&lt;A href=&quot;http://www.xmlhack.com&quot;&gt;&lt;EM&gt;xmlhack&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;]&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;The example shown illustrates&amp;nbsp;an XML-ized make. Presumably another kind of &quot;pipeline processor&quot; than a command shell could be used, and the inputs and outputs could be other than files -- e.g., SAX/DOM/SOAP sources and sinks.&lt;/P&gt;
&lt;P dir=ltr&gt;The&amp;nbsp;trick will be to do these things in a human-writeable way. It&apos;s been a long time since I was able to write any but the simplest makefile by hand. That&apos;s one reason I found scripting so compelling -- no makefile programming. &lt;/P&gt;</fullitem>
			<source url="http://www.xmlhack.com/rss.php">xmlhack</source>
			</item>
		<item>
			<pubDate>2/25/2002; 6:15:52 PM</pubDate>
			<title>Simon Fell on reliable SOAP messaging</title>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/02/25.html#a95</link>
			<description>&lt;STRONG&gt;Simon connects the dots&lt;/STRONG&gt; &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P&gt;&lt;STRONG&gt;Simon connects the dots&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Another piece of this&amp;nbsp;puzzle is reliable messaging. It&apos;s available now, in proprietary ways, for example from &lt;A href=&quot;http://www.byte.com/documents/byt20010718s0001/&quot;&gt;Kenamea&lt;/A&gt;. Simon connects the dots between routing and reliable messaging in Web-services space:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;&lt;EM&gt;IBM have similar offerings with &lt;/EM&gt;&lt;A href=&quot;http://www-106.ibm.com/developerworks/webservices/library/ws-phtt/?dwzone=webservices&quot;&gt;&lt;EM&gt;HTTPR&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;&amp;nbsp;&amp;amp; &lt;/EM&gt;&lt;A href=&quot;http://www-4.ibm.com/software/solutions/webservices/pdf/WSFL.pdf&quot;&gt;&lt;EM&gt;WSFL&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;&amp;nbsp;[no equivalent to DIME as far as&amp;nbsp;I know]. HTTPR takes a different approach to WS-Routing, in that it tunnels a reliable message exchange over HTTP [I wonder what the REST guys make of that]. &lt;/EM&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;&lt;EM&gt;Whilst WS-Routing takes a more layered approach, WS-Routing on its own doesn&apos;t provide reliablity, but provides the bits needs to make a reliable exchange layer. HTTPR doesn&apos;t appear to provide any routing information, so is still limited to point 2 point scenarios. Intermediaries seem to be one of the more useful features of SOAP, which is why I wrote some &lt;/EM&gt;&lt;A href=&quot;http://www.pocketsoap.com/samples/&quot;&gt;&lt;EM&gt;WS-Routing code&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt; a while back. &lt;/EM&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;&lt;EM&gt;I think classic queue based middleware such as MSMQ, MQSeries and JMS are going to rule the reliable delivery situations for quite a while yet. [&lt;/EM&gt;&lt;A href=&quot;http://www.pocketsoap.com/weblog/&quot;&gt;&lt;EM&gt;Simon Fell&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;]&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;Just to muddy the waters a bit more, there&apos;s a RESTian flavor to KnowNow&apos;s &lt;A href=&quot;http://192.168.1.101:5335/://www.byte.com/documents/byt20011128s0003/&quot;&gt;event router&lt;/A&gt;, with its notion of URIs that look like: &lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P dir=ltr&gt;&lt;a href=&quot;kn://what/someapp/sometopic&quot;&gt;kn://what/someapp/sometopic&lt;/a&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;</fullitem>
			<source url="http://www.pocketsoap.com/weblog/rss.xml">Simon Fell</source>
			</item>
		<item>
			<pubDate>2/25/2002; 4:20:21 PM</pubDate>
			<title>Simon Fell on SOAP-RP and WS-Routing</title>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/02/25.html#a94</link>
			<description>&lt;STRONG&gt;Simon Fell on SOAP-RP and WS-Routing&lt;/STRONG&gt; &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P&gt;&lt;STRONG&gt;Simon Fell on SOAP-RP and WS-Routing&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;A &lt;A href=&quot;http://www.pocketsoap.com/weblog/2002/02/25.html#a237&quot;&gt;clarification&lt;/A&gt;:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P&gt;&lt;EM&gt;Nothing in WS-Routing requires doc/literal bodies, yes the WS-Routing header itself is doc/literal, but the SOAP Body can be anything.&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;Thanks, Simon, for this and also for the pointer to the &lt;A href=&quot;http://discuss.develop.com/archives/wa.exe?A0=soap-rp&amp;amp;D=0&amp;amp;H=0&amp;amp;O=T&amp;amp;T=1&quot;&gt;discussion archive&lt;/A&gt;. A little more digging reveals that SOAP-RP, DIME, and XLANG (BizTalk&apos;s dialect) were all sent &lt;A href=&quot;http://lists.w3.org/Archives/Public/www-ws/2001May/0010.html&quot;&gt;as a batch&lt;/A&gt; to the W3C by Henrik Frystyk Nielsen, to illustrate &quot;&lt;EM&gt;some ideas in the area of SOAP routing, message encapsulation, and&lt;BR&gt;process orchestration&lt;/EM&gt;.&quot;&lt;/P&gt;
&lt;P dir=ltr&gt;I thought there were IBM fingerprints on this stuff too, but maybe not (yet)?&lt;/P&gt;</fullitem>
			</item>
		<item>
			<pubDate>2/25/2002; 1:47:20 PM</pubDate>
			<title>WS-Routing and Rohit Khare's active proxies</title>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/02/25.html#a93</link>
			<description>&lt;STRONG&gt;WS-Routing, active proxies, PEP&lt;/STRONG&gt; &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P&gt;&lt;STRONG&gt;WS-Routing, active proxies, PEP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The REST argument about pipelining reminds me that HTTP can inherently be proxied, and that Rohit Khare talked about this in his paper &lt;A href=&quot;http://www.cs.caltech.edu/~adam/papers/csa98b.html&quot;&gt;Composing Active Proxies to Extend the Web&lt;/A&gt;. He said in part:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P&gt;&lt;EM&gt;Want to annotate a Japanese page without advertisements from a HTTP-NG server? Want to book a plane ticket and a hotel room in a single transaction? Active proxies can be neatly reused as black-box components when chained together via HTTP. However, we can envision neater, more efficient ways to enable reuse. The &lt;A href=&quot;http://www.w3.org/TR/WD-http-pep.html&quot;&gt;HTTP Protocol Extension Protocol (PEP)&lt;/A&gt; transcends the welter of competing APIs to offer a single syntax for naming, specializing, and applying active proxies with finer-grained control. PEP also affords reasoning about compatible extensions and composite extensions.&lt;/EM&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;&lt;EM&gt;We are already familiar with many analogues to active proxies as reusable filters. The difference is in the the affordances of the interchange format. UNIX filters operate on ASCII streams; SQL queries operate on relational tables; active proxies and pages operate on Web hypermedia (HTML/XML + HTTP).&lt;/EM&gt; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;Now here&apos;s an interesting connection. MS has a proposal on the table called &lt;A href=&quot;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnglobspec/html/wsroutspecindex.asp&quot;&gt;WS-Routing&lt;/A&gt;. It sketches out the framework within which loosely-coupled systems will route SOAP messages that are handled in the doc/literal style, rather than the rpc/encoded style. And one of the references in that spec is none other than:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P dir=ltr&gt;&lt;STRONG&gt;[13]&lt;/STRONG&gt; Rohit Khare, &quot;&lt;A name=ws-routing_rkar&gt;&lt;/A&gt;&lt;A href=&quot;http://www.cs.caltech.edu/~adam/papers/csa98b.html&quot;&gt;Composing Active Proxies to Extend the Web&lt;/A&gt;&quot;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;It appears that SOAP will address the pipelining aspect of the REST argument,&amp;nbsp;though whether in an overcomplicated way is open to (vigorous) debate.&lt;/P&gt;
&lt;P dir=ltr&gt;Would SOAP routing and proxying also deal with the addressability aspect of the REST argument? And if so, is this again over-complex? Dunno, that&apos;s why I&apos;m asking. Feel free to &lt;A href=&quot;http://www.byte.com/tangledthreads/thread.jsp?forum=263&amp;amp;thread=9812&quot;&gt;put in your own $0.02&lt;/A&gt;.&lt;/P&gt;</fullitem>
			</item>
		<item>
			<pubDate>2/24/2002; 11:24:05 PM</pubDate>
			<title>Paul Prescod on REST and RPC</title>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/02/24.html#a92</link>
			<description>&lt;STRONG&gt;Paul Prescod on REST vs RPC&lt;/STRONG&gt; &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P&gt;&lt;STRONG&gt;Paul Prescod on REST vs RPC&lt;/STRONG&gt;&lt;/P&gt;
&lt;P dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;&lt;FONT face=Arial size=2&gt;Paul Prescod has written a &lt;A href=&quot;http://www.xml.com/pub/a/2002/02/20/rest.html&quot;&gt;long and thoughtful piece on REST&lt;/A&gt;. He says, in part:&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;&lt;FONT face=Arial size=2&gt;&lt;EM&gt;For instance, a balkanized way to reference about a particular stock value is as WebService.stockQuote(&quot;KREM&quot;). This syntax is particular to some programming language and is not available outside of it. It can only be used by some other service through some form of glue. A universally addressable way is &lt;a href=&quot;http://www..../webservice/stockquotes?KREM&quot;&gt;http://www..../webservice/stockquotes?KREM&lt;/a&gt;.&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;&lt;FONT face=Arial size=2&gt;Is it just me, or this discussion a little like a &lt;A href=&quot;http://www.yorku.ca/eye/necker.htm&quot;&gt;Necker cube&lt;/A&gt;? I see it both ways, depending on how I look. &lt;BR&gt;&lt;BR&gt;I wish, though, that we could drop the tired stock-quote example. Calling a service with one simple value, and returning one simple value, does make the point that an equivalently standard one-line SOAP invocation, while possible, doesn&apos;t exist yet. But what about when complex objects are passed? &lt;BR&gt;&lt;BR&gt;True, we can send and receive blobs of XML atomically. Paul notes we can then pipeline these operations, and he likens HTTP GET and PUT to the Unix shell&apos;s pipe operators. I guess that&apos;s true. On the other hand, if the command I stick after the pipe operator can support introspection, then I want to use that instead of a man page.&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;&lt;FONT face=Arial size=2&gt;&lt;A href=&quot;http://www.byte.com/tangledthreads/thread.jsp?forum=263&amp;amp;thread=9812&quot;&gt;Discussion.&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;</fullitem>
			</item>
		<item>
			<pubDate>2/24/2002; 1:22:29 PM</pubDate>
			<title>Introducing the channelroll</title>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/02/24.html#a88</link>
			<description>&lt;STRONG&gt;Displaying&amp;nbsp;subscriptions&lt;/STRONG&gt; &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P&gt;&lt;STRONG&gt;Displaying&amp;nbsp;subscriptions&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The widget below my calendar&amp;nbsp;displays the RSS feeds to which I&apos;m subscribed in Radio. It&apos;s a Web service, although at the moment (since I&apos;m blocking inbound access) it can only be used locally, like so:&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Geneva,Arial,Sans-Serif&gt;&amp;lt;%params = {}; xml.rpc (&quot;127.0.0.1&quot;, 5335, &quot;radio.subs&quot;, @params)%&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;or, equivalently,&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;&amp;lt;% [&quot;xmlrpc://127.0.0.1:5335/&quot;].radio.subs () %&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;or, in fact:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;&amp;lt;% [&quot;soap://127.0.0.1:5335/&quot;].radio.subs () %&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The script is &lt;A href=&quot;http://radio.weblogs.com/0100887/stories/2002/02/24/enumeratingInboundNewsFeeds.html&quot;&gt;here&lt;/A&gt;. It&apos;s an experiment in transparency. I&apos;m revealing not just what I might say that I read, for example in a static blogroll, but what my&amp;nbsp;aggregator database shows&amp;nbsp;that I actually do read (or at least scan). &lt;/P&gt;
&lt;P&gt;This might be a little too intimate for most people to want to do. It might even be too intimate for me to want to do, at least for a global audience. I&apos;ll see how that feels. &lt;/P&gt;
&lt;P&gt;In any case this is clearly&amp;nbsp;something that smaller teams of people might want to do in order to pool knowledge resources. And that&apos;s the beauty of having the implementation be a Web service. The same code that&apos;s used to render the global homepage can be used in a point-to-point kind of way.&lt;/P&gt;
&lt;P&gt;Part of this experiment is about getting RSS URLs to be more visible, and more easily transferable. Note that some of these feeds are courtesy of &lt;A href=&quot;http://www.newsisfree.com/&quot;&gt;NewsIsFree&lt;/A&gt;. I think this is an acceptable non-commercial use. If I hear otherwise, I&apos;ll desist. &lt;BR&gt;&lt;/P&gt;</fullitem>
			</item>
		<item>
			<pubDate>2/19/2002; 12:24:45 PM</pubDate>
			<title>Walking the SOAP/WSDL fault line</title>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/02/19.html#a72</link>
			<description>&lt;STRONG&gt;Walking the fault lines&lt;/STRONG&gt; &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P&gt;&lt;STRONG&gt;Walking the fault lines&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I&apos;ve been plugging away with a handful of toolkits --&amp;nbsp;.NET, SOAP::Lite, GLUE, and Radio -- trying to get a feel for where the SOAP/WSDL fault lines actually are. Today, Jake Savin &lt;A href=&quot;http://radio.weblogs.com/0001000/2002/02/19.html#a318&quot;&gt;articulates&lt;/A&gt;&amp;nbsp;what I&apos;ve begun to suspect also: there are a lot of ways to encode things in SOAP, and this&amp;nbsp;complicates the problem of typing them in WSDL.&lt;/P&gt;
&lt;P&gt;I don&apos;t see this as simply a static/dynamic language issue. Whether or not&amp;nbsp;a toolkit&amp;nbsp;can or will autogenerate WSDL for some service, you should (as Simon Fell&amp;nbsp;&lt;A href=&quot;http://soap.4s4c.com/weblogs/subscribe.wsdl&quot;&gt;did&lt;/A&gt;) be able to figure out how to write the WSDL, should you choose to provide it. And when you can successfully do so, you make your service frictionlesslessly available to a lot of people.&lt;/P&gt;
&lt;P&gt;So far, I&apos;m finding simple things (like arrays of strings) to be possible, and hard things (like hashes of lists, and lists of hashes) to be very difficult.&lt;/P&gt;
&lt;P&gt;Kind of makes me wish for the &lt;A href=&quot;http://www.xml-rpc.com/spec&quot;&gt;good old days&lt;/A&gt;:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Here&apos;s an example of a two-element &amp;lt;struct&amp;gt;: &lt;/P&gt;
&lt;PRE&gt;&amp;lt;struct&amp;gt;
   &amp;lt;member&amp;gt;
      &amp;lt;name&amp;gt;lowerBound&amp;lt;/name&amp;gt;
      &amp;lt;value&amp;gt;&amp;lt;i4&amp;gt;18&amp;lt;/i4&amp;gt;&amp;lt;/value&amp;gt;
      &amp;lt;/member&amp;gt;
   &amp;lt;member&amp;gt;
      &amp;lt;name&amp;gt;upperBound&amp;lt;/name&amp;gt;
      &amp;lt;value&amp;gt;&amp;lt;i4&amp;gt;139&amp;lt;/i4&amp;gt;&amp;lt;/value&amp;gt;
      &amp;lt;/member&amp;gt;
   &amp;lt;/struct&amp;gt;
&lt;/PRE&gt;
&lt;P&gt;&amp;lt;struct&amp;gt;s can be recursive, any &amp;lt;value&amp;gt; may contain a &amp;lt;struct&amp;gt; or any other type, including an &amp;lt;array&amp;gt;.
&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;What, exactly, was missing from this tiny nugget of gold?&lt;/P&gt;</fullitem>
			</item>
		<item>
			<pubDate>2/15/2002; 2:30:26 PM</pubDate>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/02/15.html#a70</link>
			<description>&lt;A href=&quot;http://radio.weblogs.com/0101679/stories/2002/02/15/aBusyDevelopersGuideToWsdl11.html&quot;&gt;A Busy Developers Guide to WSDL 1.1&lt;/A&gt;&amp;nbsp;[&lt;A href=&quot;http://radio.weblogs.com/0101679/&quot;&gt;Sam Ruby&apos;s Radio Weblog&lt;/A&gt;] Thanks, Sam! Far and away the most grokkable explanation I&apos;ve seen.  &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P&gt;&lt;A href=&quot;http://radio.weblogs.com/0101679/stories/2002/02/15/aBusyDevelopersGuideToWsdl11.html&quot;&gt;A Busy Developers Guide to WSDL 1.1&lt;/A&gt;&amp;nbsp;[&lt;A href=&quot;http://radio.weblogs.com/0101679/&quot;&gt;Sam Ruby&apos;s Radio Weblog&lt;/A&gt;] Thanks, Sam! Far and away the most grokkable explanation I&apos;ve seen. &lt;/P&gt;</fullitem>
			<source url="http://radio.weblogs.com/0101679/rss.xml">Sam Ruby&amp;apos;s Radio Weblog</source>
			</item>
		<item>
			<pubDate>2/15/2002; 1:14:52 AM</pubDate>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/02/15.html#a68</link>
			<description>&lt;STRONG&gt;wsdl/xmethods.org/vs.net redux&lt;/STRONG&gt; &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P&gt;&lt;STRONG&gt;wsdl/xmethods.org/vs.net redux&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Tony Hong, who runs xmethods.org, wrote asking for details on the problems I reported. I should&apos;ve taken better notes the first time. Tonight, I had much better luck. Here&apos;s a commented transcript; all the code snippets shown below are working. &lt;/P&gt;
&lt;P&gt;When the WSDL does work with VS.NET, the effect is magical. APIs become discoverable in the nicest possible way. &lt;EM&gt;Exciting!&lt;/EM&gt;&lt;/P&gt;
&lt;PRE&gt;
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; implementation: glue 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; wsdl: &lt;a href=&quot;http://www.geographynetwork.com/geoservices/v1/PlaceFinder.wsdl&quot;&gt;http://www.geographynetwork.com/geoservices/v1/PlaceFinder.wsdl&lt;/a&gt; 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; acquire web reference? yes com.geographynetwork.www.PlaceFinder ws1 = 
   new com.geographynetwork.www.PlaceFinder(); 
com.geographynetwork.www.LocationInfo l = ws1.findPlace(&quot;New York&quot;); 
Console.WriteLine(l.candidates[0].description1); 
Console.WriteLine(l.candidates[0].x.ToString()); 
Console.WriteLine(l.candidates[0].y.ToString()); 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; namespace completion? yes (and complex return types are no problem) 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; invoke successfully? yes 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; implementation: delphi 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; wsdl: &lt;a href=&quot;http://developerdays.com/cgi-bin/tempconverter.exe/wsdl/ITempConverter&quot;&gt;http://developerdays.com/cgi-bin/tempconverter.exe/wsdl/ITempConverter&lt;/a&gt; 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; acquire web reference? yes 
com.developerdays.ITempConverterservice ws2 = 
    new com.developerdays.ITempConverterservice(); 
Console.WriteLine(ws2.FtoC ( 99 )); 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; namespace completion? yes 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; invoke successfully? yes 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; implementation: ?? 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; wsdl: &lt;a href=&quot;http://soaptest.activestate.com:8080/PSDBService.wsdl&quot;&gt;http://soaptest.activestate.com:8080/PSDBService.wsdl&lt;/a&gt; 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; acquire web reference? no 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; namespace completion? n/a 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; invoke successfully? n/a 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; implementation: apache soap 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; wsdl: &lt;a href=&quot;http://www.mybubble.com:8080/mybubbleEntServer/MyBubbleSoapServices.wsdl&quot;&gt;http://www.mybubble.com:8080/mybubbleEntServer/MyBubbleSoapServices.wsdl&lt;/a&gt;
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; acquire web reference? yes 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; namespace completion? no 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; invoke successfully? n/a 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; implementation: ms.net 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; wsdl: &lt;a href=&quot;http://www.perfectxml.net/WebServices/SalesRankNPrice/BookService.asmx?WSDL&quot;&gt;http://www.perfectxml.net/WebServices/SalesRankNPrice/BookService.asmx?WSDL&lt;/a&gt;
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; acquire web reference? yes 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; namespace completion? yes 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; invoke successfully? yes 
net.perfectxml.www.SalesRankNPrice ws4 = 
  new net.perfectxml.www.SalesRankNPrice(); 
Console.Write(ws4.GetAmazonAndBNSalesRank(&quot;0596001193&quot;).AmazonSalesRank);
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; implementation: SqlData 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; wsdl: &lt;a href=&quot;http://www.soapclient.com/xml/SQLDataSoap.WSDL&quot;&gt;http://www.soapclient.com/xml/SQLDataSoap.WSDL&lt;/a&gt; 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; acquire web reference? yes 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; namespace completion? yes 
&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; invoke successfully? no, but not a wsdl issue (&quot;error opening SRL file&quot;) 
com.soapclient.www.SQLDataSoap ws5 = new com.soapclient.www.SQLDataSoap();
Console.WriteLine(ws5.ProcessSRL(&quot;WEB.SRI&quot;,&quot;wsdl&quot;,&quot;AltaVista&quot;)); 
&lt;/PRE&gt;</fullitem>
			</item>
		<item>
			<pubDate>2/14/2002; 12:30:15 AM</pubDate>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/02/14.html#a62</link>
			<description>&lt;STRONG&gt;Consuming foreign&amp;nbsp;WSDL from .NET&lt;/STRONG&gt; &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P&gt;&lt;STRONG&gt;Consuming foreign&amp;nbsp;WSDL from .NET&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;It all started so well. I had just installed The Mind Electric&apos;s GLUE, a really elegant Java-based XML-and-Web-services product that friends have raved about.&amp;nbsp;GLUE autogenerates WSDL, and being curious about interop, I pointed Visual Studio.NET at it. The magic namespace completion worked like a charm! This was really encouraging!&lt;/P&gt;
&lt;P&gt;Then things went downhill. I switched the GLUE sample service from returning a string to returning a java.util.Hashtable. GLUE itself was perfectly happy to consume that complex return value, but VS.NET had no clue what to do with it.&lt;/P&gt;
&lt;P&gt;Then I&amp;nbsp;hopped over to &lt;A href=&quot;http://www.xmethods.org/&quot;&gt;xmethods&lt;/A&gt; and started trying to consume WSDL found there. Results were lousy. A bunch of WSDL files that can be retrieved don&apos;t seem to be recognized as Web services at all by VS.NET. Of those that can, only some complete on the service name. Of that subset, only some complete on operations and types. I did finally manage to get VS.NET to consume one or two services that return simple types, but as Kevin Altis said yesterday, it sure feels like work.&lt;/P&gt;</fullitem>
			</item>
		<item>
			<pubDate>2/12/2002; 6:20:39 PM</pubDate>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/02/12.html#a60</link>
			<description>&lt;STRONG&gt;SOAP&apos;s work/reward ratio&lt;/STRONG&gt; &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P&gt;&lt;STRONG&gt;SOAP&apos;s work/reward ratio&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Kevin Altis is collecting &lt;A href=&quot;http://radio.weblogs.com/0102677/2002/02/11.html#a15&quot;&gt;WSDL verifiers and SOAP endpoint invokers&lt;/A&gt;. &quot;Quite frankly,&quot; he says,&amp;nbsp;&quot;using SOAP and WSDL feels like work.&quot;&lt;/P&gt;
&lt;P&gt;That&apos;s partly due to the tools-and-interop situation, which as Kevin notes, is rapidly improving. Mainly, though, it just &lt;EM&gt;is&lt;/EM&gt; a lot of work to deploy all this machinery in order to&amp;nbsp;call yet another stock-quote or celsius-to-fahrenheit gizmo that returns one&amp;nbsp;lonely little value swaddled in layers of XML. It&apos;s not just tools-and-interop holding back the flood of interesting services that we all envision. What makes services interesting is data that&apos;s interesting. Some creators/gatherers of interesting data will wrap high-quality APIs around it just for fun. But for others, maybe most others, it&apos;ll have to be a business. &lt;/P&gt;</fullitem>
			</item>
		<item>
			<pubDate>2/12/2002; 2:46:53 PM</pubDate>
			<title>Monetizing web services</title>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/02/12.html#a58</link>
			<description>&lt;STRONG&gt;Monetizing&amp;nbsp;Web services&lt;/STRONG&gt; &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P&gt;&lt;STRONG&gt;Monetizing&amp;nbsp;Web services&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Sam Ruby shares a &lt;A href=&quot;http://radio.weblogs.com/0101679/stories/2002/02/12/newspl.html&quot;&gt;script&lt;/A&gt;&amp;nbsp;that massages Google&apos;s news page. &quot;Be forewarned,&quot; says&amp;nbsp;Sam, &quot;that as this is based on HTML scraping&amp;nbsp;it could break if google were to change it&apos;s layout.&quot;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This reminded me that Google used to support the syntax:&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://google.com/xml?q=wsdl&quot;&gt;&lt;a href=&quot;http://google.com/xml?q=wsdl&quot;&gt;http://google.com/xml?q=wsdl&lt;/a&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Now, of course, that&amp;nbsp;request 403&apos;s and refers&amp;nbsp;you&amp;nbsp;to the &lt;A href=&quot;http://www.google.com/terms_of_service.html &quot;&gt;Terms of Service page&lt;/A&gt;. For a long time, I&apos;ve thought that Amazon and now Google ought to offer, and monetize, programmatic access to their info. Why not? Return small/infrequently-requested XML datasets for free, and larger/oft-requested XML datasets for a fee.&lt;/P&gt;</fullitem>
			</item>
		<item>
			<pubDate>1/31/2002; 4:12:23 PM</pubDate>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/01/31.html#a42</link>
			<description>Shane Caraveo from ActiveState wrote me a note illustrating how they handle WSDL for Perl: &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P&gt;Shane Caraveo from ActiveState wrote me a note illustrating how they handle WSDL for Perl:&lt;/P&gt;
&lt;DIV&gt;=for interface&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; static ustring echostring(ustring something); &lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;lt;soap namespace=&quot;&lt;A href=&apos;http://www.activestate.com/echo/&quot;/&apos;&gt;&lt;a href=&quot;http://www.ActiveState.com/echo/&quot;&gt;http://www.ActiveState.com/echo/&lt;/a&gt;&quot;/&lt;/A&gt;&amp;gt; &lt;/DIV&gt;
&lt;DIV&gt;=cut 
&lt;P&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;sub echostring {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $echo = shift;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return $echo;&lt;BR&gt;&amp;nbsp;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;P&gt;The question is overhead. Obviously this metadata, like all documentation, requires double maintenance, and can get out of synch with the code. As a Perl programmer, would I rather pay that cost in the form of typing all my functions and variables, and have a free ride on WSDL generation, or pay it only on a per-exported-object basis?&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://radio.weblogs.com/0101679/&quot;&gt;Sam Ruby&lt;/A&gt;&amp;nbsp;and I talked about this today. He makes a good point: since exported stuff will surely be a fraction of all the stuff you write in a dynamic scripting language, why not just pay on an as-needed basis? It&apos;s an 80/20 (or 90/10) thing.&lt;/P&gt;
&lt;P&gt;The flip side of this is that web services network effects arise, I believe, when things can automatically, or almost automatically, be exported -- even when the need to do so wasn&apos;t originally anticipated. &lt;/P&gt;
&lt;P&gt;Kevin Altis, who is working these days on &lt;A href=&quot;http://sourceforge.net/projects/pythoncard/&quot;&gt;PythonCard&lt;/A&gt;, sent me this set of definitions which was in turn sent to him by &quot;an erudite reader&quot;:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P&gt;&lt;EM&gt;&quot;statically typed language&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;A language in which types are fixed at compile time. Most statically typed&lt;BR&gt;languages enforce this by requiring you to declare all variables with their&lt;BR&gt;datatypes before using them. Java and C are statically typed languages.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;dynamically typed language&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;A language in which types are discovered at execution time; the opposite of&lt;BR&gt;statically typed. VBScript and Python are dynamically typed, because they&lt;BR&gt;figure out what type a variable is when you first assign it a value.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;strongly typed language&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;A language in which types are always enforced. Java and Python are strongly&lt;BR&gt;typed. If you have an integer, you can&apos;t treat it like a string without&lt;BR&gt;explicitly converting it (more on how to do this later in this chapter).&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;weakly typed language&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;A language in which types may be ignored; the opposite of strongly typed.&lt;BR&gt;VBScript is weakly typed. In VBScript, you can concatenate the string &apos;12&apos;&lt;BR&gt;and the integer 3 to get the string &apos;123&apos;, then treat that as the integer&lt;BR&gt;123, all without any explicit conversion.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;So Python is both dynamically typed (because it doesn&apos;t use explicit&lt;BR&gt;datatype declarations) and strongly typed (because once a variable has a&lt;BR&gt;datatype, it actually matters).&quot;&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;(If you are that &quot;erudite reader&quot; and wish to be identified, just let me know.)&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P dir=ltr&gt;&lt;EM&gt;Correction: here is the &lt;/EM&gt;&lt;A href=&quot;http://diveintopython.org/odbchelper_funcdef.html&quot;&gt;&lt;EM&gt;source&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt; of this quotation: it&apos;s from Mark Pilgrim&apos;s fabulous online Python &lt;/EM&gt;&lt;A href=&quot;http://diveintopython.org/toc.html&quot;&gt;&lt;EM&gt;book-in-progress&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;. Sorry for the mixup, Kevin and Mark.&lt;/EM&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;&lt;EM&gt;Note: it&apos;s tempting to try to rewrite history by changing these entries on the fly in order to erase errors. &amp;nbsp;But that&amp;nbsp;won&apos;t last forever. Before too long, the &lt;A href=&quot;http://web.archive.org/&quot;&gt;Wayback Machine&lt;/A&gt; will catch you in the act when you try to cover your tracks :-)&lt;/EM&gt;&amp;nbsp;&lt;BR&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;Perhaps this explains why I have the&amp;nbsp;sense that if optional type declaration were going happen in any major scripting environment, it would happen first in Python. &lt;/P&gt;</fullitem>
			</item>
		<item>
			<pubDate>1/24/2002; 2:34:33 PM</pubDate>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/01/24.html#a39</link>
			<description>If WSDL were as easy to write as &lt;A href=&quot;http://radio.weblogs.com/0001015/alidlExamples/soap/frontier.xml&quot;&gt;this&lt;/A&gt;, then humans could write it by hand, and that in turn might make it easier for tools to do it automatically. But the gating factor is not WSDL syntax. It&apos;s&amp;nbsp;the typelessness of dynamic languages. &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P&gt;If WSDL were as easy to write as &lt;A href=&quot;http://radio.weblogs.com/0001015/alidlExamples/soap/frontier.xml&quot;&gt;this&lt;/A&gt;, then humans could write it by hand, and that in turn might make it easier for tools to do it automatically. But the gating factor is not WSDL syntax. It&apos;s&amp;nbsp;the typelessness of dynamic languages.&lt;/P&gt;
&lt;P&gt;I was checking out Radio&apos;s SOAP support the other day. Following a documented example, I tried this:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;local(s,params={&quot;IntArray&quot;:{1,2,3}})&lt;BR&gt;s = soap.rpc.client(&quot;/examples&quot;,&quot;getStateList&quot;, @params)&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;and Radio said:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;The server, localhost, returned a SOAP-ENV:Client fault: Can&apos;t call the script &quot;getStateList&quot; because it doesn&apos;t define a parameter named &quot;IntArray&quot;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;Jake Savin set me straight. The actual implementation had changed, and I needed to call:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;local(s,params={&quot;numlist&quot;:{1,2,3}})&lt;BR&gt;s = soap.rpc.client(&quot;/examples&quot;,&quot;getStateList&quot;, @params)&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;Once he pointed me to the &lt;A href=&quot;http://radio.weblogs.com/0100887/images/my/getStateList.jpg&quot;&gt;implementation of getStateList&lt;/A&gt;, it was clear sailing. But I do see the problem. Typeless dynamic scripting languages can be made to &lt;A href=&quot;http://aspn.activestate.com/ASPN/WebServices/SWSAPI&quot;&gt;easily consume&lt;/A&gt; WSDL. Producing&amp;nbsp;the stuff is another matter. &lt;/P&gt;
&lt;P dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;Perl and Python would have to undergo some&amp;nbsp;deep change&amp;nbsp;(which &lt;A href=&quot;http://www.perl.com/pub/a/2001/09/18/parrot.html&quot;&gt;may occur&lt;/A&gt;) in order to facilitate automatic creation of WSDL. Likewise Frontier.&lt;/P&gt;
&lt;P dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;Is this a correct statement of the problem?&lt;/P&gt;</fullitem>
			</item>
		<item>
			<pubDate>1/24/2002; 9:22:04 AM</pubDate>
			<link>http://radio.weblogs.com/0100887/categories/webServices/2002/01/24.html#a38</link>
			<description>Sam Ruby &lt;A href=&quot;http://radio.weblogs.com/0101679/2002/01/23.html#a19&quot;&gt;writes&lt;/A&gt;: &lt;b&gt;...&lt;/b&gt;</description>
			<fullitem>&lt;P&gt;Sam Ruby &lt;A href=&quot;http://radio.weblogs.com/0101679/2002/01/23.html#a19&quot;&gt;writes&lt;/A&gt;:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P&gt;&lt;EM&gt;Many SOAP stacks these days come with automatic roadmap dispensers.&amp;nbsp; Simply append a &quot;?WSDL&quot; to the URL and out pops the description of the service.&amp;nbsp; Many alpha males will tell you that they don&apos;t need to ask for directions.&amp;nbsp; But I suspect that these roadmap dispensers will be heavily used.&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;Absolutely. When services are consumable by namespace completion in an editor, like so:&lt;/P&gt;
&lt;P&gt;&lt;IMG src=&quot;http://radio.weblogs.com/0100887/images/my/callTheService.jpg&quot; align=center border=1&gt;&lt;/P&gt;
&lt;P&gt;Then we get the kind of network effect we all want.&amp;nbsp;What matters is not only the number of SOAP endpoints that exist, but the number that are actually used, and &quot;roadmap dispensers&quot; are critical. Automatic testers are darned handy too:&lt;/P&gt;
&lt;P&gt;&lt;IMG src=&quot;http://radio.weblogs.com/0100887/images/my/testTheService.jpg&quot; border=1&gt;&lt;/P&gt;
&lt;P&gt;Necessary? No. Desirable? Hugely. I want this, everybody should want this. And it looks like we&apos;re going to have it. The tension here, as always, is between what is considered the bare minumum interoperable core, and what is considered optional. If WSDL is not considered core, and isn&apos;t everywhere, that will compromise the vision displayed in these images. If it is considered core, it raises the bar on resource-constrained implementors. There&apos;s an inevitable and natural tension between these two positions.&lt;/P&gt;
&lt;HR&gt;

&lt;P&gt;John Robb wrote privately to say:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P&gt;&lt;EM&gt;Jon,&lt;BR&gt;&lt;BR&gt;You are pointing to images on your Weblog that are located in your desktop folder (so they are not visible).&amp;nbsp; They have been upstreamed to your cloud.&lt;/EM&gt; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;Thanks, John. This is exactly what I was testing. Here&apos;s what I learned:&lt;/P&gt;
&lt;OL dir=ltr&gt;
&lt;LI&gt;
&lt;DIV&gt;An image in or below /www/radio/images will be upstreamed. (I think automatically, but maybe it has to be kicked -- Publish-&amp;gt;Entire Site?)&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;Such an image, loaded into a separate IE window, can be dragged into Radio&apos;s MS DHTML edit control, and will be inlined.&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;By default, the URL is like 127.0.0.1:5335/images, not ./images.&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;I guessed that Radio would translate that on upstreaming.&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;It didn&apos;t.&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;So you have to use Source view in the editor, and change 127.0.0.1:5335 to . &lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;Then, Publish directly. If you switch back to WYSIWYG view, the editing component (which Radio does not control) will revert you to 127.0.0.1:5335.&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Obviously most users are not going to figure this out. Just as, years ago, most did not figure out how much &lt;A href=&quot;http://www.oreilly.com/catalog/pracintgr/chapter/ch03_01.html&quot;&gt;writing and illustrating and cross-referencing power&lt;/A&gt;&amp;nbsp;was built into the mail/news client that they ran every day. We have a chicken/egg situation here. Hypertextual writing, using words and pictures and links, with fluid&amp;nbsp;transitions&amp;nbsp;among&amp;nbsp;local and remote resources, remains difficult. This exactly parallels the WSDL discussion. Until users can take for granted that in any web writing environment, images and text can be dragged and dropped, and everything will just work, we&apos;ll keep missing out on an important network effect.&lt;/P&gt;
&lt;P&gt;And now, I&apos;m going to switch back to Source view and re-fix those links which the Edit control has re-broken. Radio can fix this particular glitch by rewriting what the DHTML edit control does, before upstreaming. But the general&amp;nbsp;issue&amp;nbsp;of&amp;nbsp;how we get to a&amp;nbsp;&lt;A href=&quot;http://www.byte.com/documents/s=705/byt20010608s0001/index.htm&quot;&gt;universal&lt;/A&gt; &lt;A href=&quot;http://www.byte.com/documents/s=1113/byt20010806s0004/20010806_udell.html&quot;&gt;canvas&lt;/A&gt; remains, well, a general issue.&lt;/P&gt;
&lt;P&gt;PS: One more wrinkle. Using . was OK for the homepage, but I forgot this item is echoed into categories and an archive page. So I&apos;m redoing the . as a full reference to the public site.&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;</fullitem>
			</item>
		</channel>
	</rss>
