<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" version="2.0">
  <channel>
    <title>Clemens Vasters - Technology|Weblogs</title>
    <link>http://vasters.com/clemensv/</link>
    <description>Cloud Development and Alien Abductions</description>
    <language>en-us</language>
    <copyright>Clemens Vasters</copyright>
    <lastBuildDate>Tue, 21 Aug 2007 07:46:33 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.7067.0</generator>
    <managingEditor>cvasters@guhhome.com</managingEditor>
    <webMaster>cvasters@guhhome.com</webMaster>
    <item>
      <trackback:ping>http://vasters.com/clemensv/Trackback.aspx?guid=9677a491-9037-4b79-baa3-bcf093737957</trackback:ping>
      <pingback:server>http://vasters.com/clemensv/pingback.aspx</pingback:server>
      <pingback:target>http://vasters.com/clemensv/PermaLink,guid,9677a491-9037-4b79-baa3-bcf093737957.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://vasters.com/clemensv/CommentView,guid,9677a491-9037-4b79-baa3-bcf093737957.aspx</wfw:comment>
      <wfw:commentRss>http://vasters.com/clemensv/SyndicationService.asmx/GetEntryCommentsRss?guid=9677a491-9037-4b79-baa3-bcf093737957</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <strong>
            <font color="#ff1493">UPDATE:</font> The code has been updated. Ignore this
post and <a href="http://vasters.com/clemensv/PermaLink,guid,679ca50b-c907-4831-81c4-369ef7b85839.aspx">go
here</a>.</strong>
        </p>
        <p>
I'm writing lots of code lately. I've rejoined the dasBlog community and I'm
busy writing a prototype for the .NET Framework 3.5 version of dasBlog (we just
released the 2.0 version, see <a href="http://www.dasblog.info/">http://www.dasblog.info/</a>).
</p>
        <p>
One of the goals of the prototype, which we'll eventually merge into the main
codebase once the .NET Framework 3.5 is available at hosting sites is to standardize
on WCF for all non-HTML endpoints. Since lots of the relevant inter-blog and blogging
tool APIs are still based on XML-RPC, that called for an implementation of XML-RPC
on WCF. I've just isolated that code and <a href="http://wcf.netfx3.com/files/folders/creating_and_using_custom_bindings/entry11943.aspx">put
it up on wcf.netfx3.com</a>.
</p>
        <p>
My XML-RPC implementation is a binding with a special encoder and a set of behaviors.
The Service Model programming experience is completely "normal" with no special extension
attributes. That means you can also expose the XML-RPC contracts as SOAP endpoints
with all the advanced WCF bindings and features if you like. 
</p>
        <p>
The binding supports client and service side and is completely config enabled. Here's
a snippet from the MetaWeblog contract:
</p>
        <font size="4">
          <p>
          </p>
        </font>
        <font face="Courier New">[<font color="#2b91af">ServiceContract</font>(Namespace
= <font color="#a31515"><a href="http://www.xmlrpc.com/metaWeblogApi">http://www.xmlrpc.com/metaWeblogApi</a></font>)]<br /><font color="#0000ff">public</font><font color="#0000ff">interface</font><font color="#2b91af">IMetaWeblog</font> :
Microsoft.ServiceModel.Samples.XmlRpc.Contracts.Blogger.</font>
        <font face="Courier New">
          <font color="#2b91af">IBlogger<br /></font>{<br />
   [<font color="#2b91af">OperationContract</font>(Action=<font color="#a31515">"metaWeblog.editPost"</font>)]<br /><font color="#0000ff">   bool</font> metaweblog_editPost(<font color="#0000ff">string</font> postid,<br /><font color="#0000ff">                            
string</font> username,<br /><font color="#0000ff">                             string</font> password,<br /><font color="#2b91af">                             Post</font> post,<br /><font color="#0000ff">                            
bool</font> publish);</font>
        <p>
          <font face="Courier New">   [<font color="#2b91af">OperationContract</font>(Action=<font color="#a31515">"metaWeblog.getCategories"</font>)]<br /><font color="#2b91af">   CategoryInfo</font>[] metaweblog_getCategories(<font color="#0000ff"> string</font> blogid,<br /><font color="#0000ff">                                     
      string</font> username,<br /><font color="#0000ff">                                     
      string</font> password);<br />
    ...<br /></font>
          <font face="Courier New">}</font>
        </p>
        <p>
For your convenience I've included complete Blogger, MetaWeblog, and MovableType
API contracts along with the respective data types in the test application. The test
app is a small in-memory blog that you can use with the blogging function of Word
2007 as a client or some other blogging client for testing. 
</p>
        <p>
Of the other interesting XML-RPC APIs, the <a href="http://www.hixie.ch/specs/pingback/pingback">Pingback
API</a> has the following contract:
</p>
        <p>
          <span style="LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; FONT-SIZE: 8pt; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-no-proof: yes">
            <font size="2">
              <font face="Courier New">
                <font color="#000000">
                  <span style="mso-spacerun: yes">    </span>[</font>
                <span style="COLOR: #2b91af">ServiceContract</span>
                <font color="#000000">(Namespace=</font>
                <span style="COLOR: #a31515">"http://www.hixie.ch/specs/pingback/pingback"</span>
              </font>
            </font>
            <font size="2">
              <font face="Courier New">
                <font color="#000000">)]<br /><span style="mso-spacerun: yes">    </span></font>
                <span style="COLOR: blue">public</span>
                <font color="#000000">
                </font>
                <span style="COLOR: blue">interface</span>
                <font color="#000000">
                </font>
              </font>
            </font>
            <span style="COLOR: #2b91af">
              <font size="2" face="Courier New">IPingback<br /></font>
            </span>
            <font size="2">
              <font face="Courier New">
                <font color="#000000">
                  <span style="mso-spacerun: yes">    </span>{<br /><span style="mso-spacerun: yes">        </span>[</font>
                <span style="COLOR: #2b91af">OperationContract</span>
                <font color="#000000">(Action=</font>
                <span style="COLOR: #a31515">"pingback.ping"</span>
              </font>
            </font>
            <font size="2">
              <font face="Courier New">
                <font color="#000000">)]<br /><span style="mso-spacerun: yes">        </span></font>
                <span style="COLOR: blue">string</span>
                <font color="#000000"> ping(</font>
                <span style="COLOR: blue">string</span>
                <font color="#000000"> sourceUri, </font>
                <span style="COLOR: blue">string</span>
              </font>
            </font>
            <font size="2">
              <font face="Courier New">
                <font color="#000000"> targetUri);<br /><span style="mso-spacerun: yes">    </span>}</font>
              </font>
            </font>
          </span>
        </p>
        <p>
          <span style="LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; FONT-SIZE: 8pt; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-no-proof: yes">
            <font size="2" face="Verdana">and
the <a href="http://www.xmlrpc.com/weblogsCom">WeblogUpdates API</a> looks like this:</font>
          </span>
        </p>
        <span style="LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; FONT-SIZE: 8pt; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-no-proof: yes">
          <p style="MARGIN: 0in 0in 10pt" class="MsoNormal">
            <span style="LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; FONT-SIZE: 8pt; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes">
              <font face="Courier New">
                <font size="2">
                  <font color="#000000">   
[</font>
                  <span style="COLOR: #2b91af">DataContract</span>
                </font>
              </font>
              <font face="Courier New">
                <font size="2">
                  <font color="#000000">]<br /><span style="mso-spacerun: yes">    </span></font>
                  <span style="COLOR: blue">public</span>
                  <font color="#000000">
                  </font>
                  <span style="COLOR: blue">struct</span>
                  <font color="#000000">
                  </font>
                </font>
              </font>
              <span style="COLOR: #2b91af">
                <font size="2" face="Courier New">WeblogUpdatesReply<br /></font>
              </span>
              <font face="Courier New">
                <font size="2">
                  <font color="#000000">
                    <span style="mso-spacerun: yes">    </span>{<br /><span style="mso-spacerun: yes">        </span>[</font>
                  <span style="COLOR: #2b91af">DataMember</span>
                </font>
              </font>
              <font face="Courier New">
                <font size="2">
                  <font color="#000000">]<br /><span style="mso-spacerun: yes">        </span></font>
                  <span style="COLOR: blue">public</span>
                  <font color="#000000">
                  </font>
                  <span style="COLOR: blue">bool</span>
                </font>
              </font>
              <font face="Courier New">
                <font size="2">
                  <font color="#000000"> flerror;<br /><span style="mso-spacerun: yes">        </span>[</font>
                  <span style="COLOR: #2b91af">DataMember</span>
                </font>
              </font>
              <font face="Courier New">
                <font size="2">
                  <font color="#000000">]<br /><span style="mso-spacerun: yes">        </span></font>
                  <span style="COLOR: blue">public</span>
                  <font color="#000000">
                  </font>
                  <span style="COLOR: blue">string</span>
                </font>
              </font>
              <font face="Courier New">
                <font size="2">
                  <font color="#000000"> message;<br /><span style="mso-spacerun: yes">    </span>}<br /><br /><span style="mso-spacerun: yes">    </span>[</font>
                  <span style="COLOR: #2b91af">ServiceContract</span>
                </font>
              </font>
              <font face="Courier New">
                <font size="2">
                  <font color="#000000">]<br /><span style="mso-spacerun: yes">    </span></font>
                  <span style="COLOR: blue">public</span>
                  <font color="#000000">
                  </font>
                  <span style="COLOR: blue">interface</span>
                  <font color="#000000">
                  </font>
                </font>
              </font>
              <span style="COLOR: #2b91af">
                <font size="2" face="Courier New">IWeblogUpdates<br /></font>
              </span>
              <font face="Courier New">
                <font size="2">
                  <font color="#000000">
                    <span style="mso-spacerun: yes">    </span>{<br /><span style="mso-spacerun: yes">        </span>[</font>
                  <span style="COLOR: #2b91af">OperationContract</span>
                  <font color="#000000">(Action
= </font>
                  <span style="COLOR: #a31515">"weblogUpdates.extendedPing"</span>
                </font>
              </font>
              <font face="Courier New">
                <font size="2">
                  <font color="#000000">)]<br /><span style="mso-spacerun: yes">        </span></font>
                  <span style="COLOR: #2b91af">WeblogUpdatesReply</span>
                  <font color="#000000"> ExtendedPing(</font>
                  <span style="COLOR: blue">string</span>
                  <font color="#000000"> weblogName, </font>
                  <span style="COLOR: blue">string</span>
                  <font color="#000000"> weblogUrl, </font>
                  <span style="COLOR: blue">string</span>
                  <font color="#000000"> checkUrl, </font>
                  <span style="COLOR: blue">string</span>
                </font>
              </font>
              <font face="Courier New">
                <font size="2">
                  <font color="#000000"> rssUrl);<br /><span style="mso-spacerun: yes">        </span>[</font>
                  <span style="COLOR: #2b91af">OperationContract</span>
                  <font color="#000000">(Action=</font>
                  <span style="COLOR: #a31515">"weblogUpdates.ping"</span>
                </font>
              </font>
              <font face="Courier New">
                <font size="2">
                  <font color="#000000">)]<br /><span style="mso-spacerun: yes">        </span></font>
                  <span style="COLOR: #2b91af">WeblogUpdatesReply</span>
                  <font color="#000000"> Ping(</font>
                  <span style="COLOR: blue">string</span>
                  <font color="#000000"> weblogName, </font>
                  <span style="COLOR: blue">string</span>
                </font>
              </font>
              <font color="#000000" size="2" face="Courier New"> weblogUrl);<br /><span style="mso-spacerun: yes">    </span>}</font>
            </span>
          </p>
          <p>
          </p>
        </span>I'm expecting some interop bugs since I've done a clean implementation
from the specs, so if you find any please let me know.
<p>
The code is subject to the Microsoft samples license, which means that you can put
it into your (blogging) apps. Enjoy.
</p><img width="0" height="0" src="http://vasters.com/clemensv/aggbug.ashx?id=9677a491-9037-4b79-baa3-bcf093737957" /></body>
      <title>XML-RPC with WCF</title>
      <guid isPermaLink="false">http://vasters.com/clemensv/PermaLink,guid,9677a491-9037-4b79-baa3-bcf093737957.aspx</guid>
      <link>http://vasters.com/clemensv/2007/08/21/XMLRPC+With+WCF.aspx</link>
      <pubDate>Tue, 21 Aug 2007 07:46:33 GMT</pubDate>
      <description>&lt;p&gt;
&lt;strong&gt;&lt;font color=#ff1493&gt;UPDATE:&lt;/font&gt; The code has been updated. Ignore this
post and &lt;a href="http://vasters.com/clemensv/PermaLink,guid,679ca50b-c907-4831-81c4-369ef7b85839.aspx"&gt;go
here&lt;/a&gt;.&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
I'm writing lots of code&amp;nbsp;lately. I've rejoined the dasBlog community and I'm
busy&amp;nbsp;writing a prototype for the .NET Framework 3.5 version of dasBlog (we just
released the 2.0 version, see &lt;a href="http://www.dasblog.info/"&gt;http://www.dasblog.info/&lt;/a&gt;).
&lt;/p&gt;
&lt;p&gt;
One of the&amp;nbsp;goals of the prototype, which we'll eventually merge into the main
codebase once&amp;nbsp;the .NET Framework 3.5 is available at hosting sites is to standardize
on WCF for all non-HTML endpoints. Since lots of the relevant inter-blog and blogging
tool APIs&amp;nbsp;are still based on XML-RPC, that called for an implementation of XML-RPC
on WCF. I've just isolated that code and &lt;a href="http://wcf.netfx3.com/files/folders/creating_and_using_custom_bindings/entry11943.aspx"&gt;put
it up on wcf.netfx3.com&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
My XML-RPC implementation is a binding with a special encoder and a set of behaviors.
The Service Model programming experience is completely "normal" with no special extension
attributes. That means you can also expose the XML-RPC contracts as SOAP endpoints
with all the advanced WCF bindings and features if you like. 
&lt;/p&gt;
&lt;p&gt;
The binding&amp;nbsp;supports client and service side and is completely config enabled.&amp;nbsp;Here's
a snippet from the MetaWeblog contract:
&lt;/p&gt;
&lt;font size=4&gt; 
&lt;p&gt;
&lt;/font&gt;&lt;font face="Courier New"&gt;[&lt;font color=#2b91af&gt;ServiceContract&lt;/font&gt;(Namespace
= &lt;font color=#a31515&gt;&lt;a href="http://www.xmlrpc.com/metaWeblogApi"&gt;http://www.xmlrpc.com/metaWeblogApi&lt;/a&gt;&lt;/font&gt;)]&lt;br&gt;
&lt;font color=#0000ff&gt;public&lt;/font&gt; &lt;font color=#0000ff&gt;interface&lt;/font&gt; &lt;font color=#2b91af&gt;IMetaWeblog&lt;/font&gt; :
Microsoft.ServiceModel.Samples.XmlRpc.Contracts.Blogger.&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color=#2b91af&gt;IBlogger&lt;br&gt;
&lt;/font&gt;{&lt;br&gt;
&amp;nbsp;&amp;nbsp; [&lt;font color=#2b91af&gt;OperationContract&lt;/font&gt;(Action=&lt;font color=#a31515&gt;"metaWeblog.editPost"&lt;/font&gt;)]&lt;br&gt;
&lt;font color=#0000ff&gt;&amp;nbsp;&amp;nbsp; bool&lt;/font&gt; metaweblog_editPost(&lt;font color=#0000ff&gt;string&lt;/font&gt; postid,&lt;br&gt;
&lt;font color=#0000ff&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
string&lt;/font&gt; username,&lt;br&gt;
&lt;font color=#0000ff&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&lt;/font&gt; password,&lt;br&gt;
&lt;font color=#2b91af&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Post&lt;/font&gt; post,&lt;br&gt;
&lt;font color=#0000ff&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
bool&lt;/font&gt; publish);&lt;/font&gt;&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp; [&lt;font color=#2b91af&gt;OperationContract&lt;/font&gt;(Action=&lt;font color=#a31515&gt;"metaWeblog.getCategories"&lt;/font&gt;)]&lt;br&gt;
&lt;font color=#2b91af&gt;&amp;nbsp;&amp;nbsp; CategoryInfo&lt;/font&gt;[] metaweblog_getCategories(&lt;font color=#0000ff&gt; string&lt;/font&gt; blogid,&lt;br&gt;
&lt;font color=#0000ff&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string&lt;/font&gt; username,&lt;br&gt;
&lt;font color=#0000ff&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string&lt;/font&gt; password);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br&gt;
&lt;/font&gt;&lt;font face="Courier New"&gt;}&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
For your convenience I've included&amp;nbsp;complete Blogger, MetaWeblog, and MovableType
API contracts along with the respective data types in the test application. The test
app is a small in-memory blog that you can use with the blogging function of Word
2007 as a client or some other blogging client for testing. 
&lt;/p&gt;
&lt;p&gt;
Of the other interesting XML-RPC APIs, the &lt;a href="http://www.hixie.ch/specs/pingback/pingback"&gt;Pingback
API&lt;/a&gt; has the following contract:
&lt;/p&gt;
&lt;p&gt;
&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; FONT-SIZE: 8pt; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-no-proof: yes"&gt;&lt;font size=2&gt;&lt;font face="Courier New"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;/font&gt;&lt;span style="COLOR: #2b91af"&gt;ServiceContract&lt;/span&gt;&lt;font color=#000000&gt;(Namespace=&lt;/font&gt;&lt;span style="COLOR: #a31515"&gt;"http://www.hixie.ch/specs/pingback/pingback"&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;font face="Courier New"&gt;&lt;font color=#000000&gt;)]&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;interface&lt;/span&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="COLOR: #2b91af"&gt;&lt;font size=2 face="Courier New"&gt;IPingback&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;font size=2&gt;&lt;font face="Courier New"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;/font&gt;&lt;span style="COLOR: #2b91af"&gt;OperationContract&lt;/span&gt;&lt;font color=#000000&gt;(Action=&lt;/font&gt;&lt;span style="COLOR: #a31515"&gt;"pingback.ping"&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;font face="Courier New"&gt;&lt;font color=#000000&gt;)]&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&lt;font color=#000000&gt; ping(&lt;/font&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&lt;font color=#000000&gt; sourceUri, &lt;/font&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;font face="Courier New"&gt;&lt;font color=#000000&gt; targetUri);&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; FONT-SIZE: 8pt; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-no-proof: yes"&gt;&lt;font size=2 face=Verdana&gt;and
the &lt;a href="http://www.xmlrpc.com/weblogsCom"&gt;WeblogUpdates API&lt;/a&gt; looks like this:&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; FONT-SIZE: 8pt; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-no-proof: yes"&gt; 
&lt;p style="MARGIN: 0in 0in 10pt" class=MsoNormal&gt;
&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; FONT-SIZE: 8pt; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[&lt;/font&gt;&lt;span style="COLOR: #2b91af"&gt;DataContract&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;]&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;struct&lt;/span&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="COLOR: #2b91af"&gt;&lt;font size=2 face="Courier New"&gt;WeblogUpdatesReply&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;/font&gt;&lt;span style="COLOR: #2b91af"&gt;DataMember&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;]&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;bool&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; flerror;&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;/font&gt;&lt;span style="COLOR: #2b91af"&gt;DataMember&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;]&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; message;&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br&gt;
&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;/font&gt;&lt;span style="COLOR: #2b91af"&gt;ServiceContract&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;]&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;interface&lt;/span&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="COLOR: #2b91af"&gt;&lt;font size=2 face="Courier New"&gt;IWeblogUpdates&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;/font&gt;&lt;span style="COLOR: #2b91af"&gt;OperationContract&lt;/span&gt;&lt;font color=#000000&gt;(Action
= &lt;/font&gt;&lt;span style="COLOR: #a31515"&gt;"weblogUpdates.extendedPing"&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;)]&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;span style="COLOR: #2b91af"&gt;WeblogUpdatesReply&lt;/span&gt;&lt;font color=#000000&gt; ExtendedPing(&lt;/font&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&lt;font color=#000000&gt; weblogName, &lt;/font&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&lt;font color=#000000&gt; weblogUrl, &lt;/font&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&lt;font color=#000000&gt; checkUrl, &lt;/font&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; rssUrl);&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;/font&gt;&lt;span style="COLOR: #2b91af"&gt;OperationContract&lt;/span&gt;&lt;font color=#000000&gt;(Action=&lt;/font&gt;&lt;span style="COLOR: #a31515"&gt;"weblogUpdates.ping"&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;)]&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;span style="COLOR: #2b91af"&gt;WeblogUpdatesReply&lt;/span&gt;&lt;font color=#000000&gt; Ping(&lt;/font&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&lt;font color=#000000&gt; weblogName, &lt;/font&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color=#000000 size=2 face="Courier New"&gt; weblogUrl);&lt;br&gt;
&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/span&gt;I'm expecting some interop bugs since I've done a clean implementation from
the specs, so if you find any please let me know.&gt;
&lt;p&gt;
The code is subject to the Microsoft samples license, which means that you can put
it into your (blogging) apps. Enjoy.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://vasters.com/clemensv/aggbug.ashx?id=9677a491-9037-4b79-baa3-bcf093737957" /&gt;</description>
      <comments>http://vasters.com/clemensv/CommentView,guid,9677a491-9037-4b79-baa3-bcf093737957.aspx</comments>
      <category>MSDN</category>
      <category>Technology/Indigo</category>
      <category>Technology/WCF</category>
      <category>Technology/Weblogs</category>
    </item>
    <item>
      <trackback:ping>http://vasters.com/clemensv/Trackback.aspx?guid=fab8443a-0569-4b69-840d-dfad00de17be</trackback:ping>
      <pingback:server>http://vasters.com/clemensv/pingback.aspx</pingback:server>
      <pingback:target>http://vasters.com/clemensv/PermaLink,guid,fab8443a-0569-4b69-840d-dfad00de17be.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://vasters.com/clemensv/CommentView,guid,fab8443a-0569-4b69-840d-dfad00de17be.aspx</wfw:comment>
      <wfw:commentRss>http://vasters.com/clemensv/SyndicationService.asmx/GetEntryCommentsRss?guid=fab8443a-0569-4b69-840d-dfad00de17be</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I'm busy at a conference but just stumbled upon Yahoo Pipes via TechMeme and <a href="http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=258d634c-df5e-4420-a986-3e9d87a8f6da">Dare</a>.
The little bits I read about it make that quite interesting to me (and put a big grin
on my face) specifically because of this <a href="http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=154">piece
I wrote in 2003</a> and which also got some <a href="http://weblogs.asp.net/cosgood/archive/2003/04/11/5449.aspx">attention</a><a href="http://www.windley.com/archives/2003/04/15.shtml">back</a><a href="http://www.sauria.com/blog/computers/internet/weblogs/140">then</a>.
I claim prior art ;-)
</p>
        <img width="0" height="0" src="http://vasters.com/clemensv/aggbug.ashx?id=fab8443a-0569-4b69-840d-dfad00de17be" />
      </body>
      <title>Yahoo Pipes. Aha.</title>
      <guid isPermaLink="false">http://vasters.com/clemensv/PermaLink,guid,fab8443a-0569-4b69-840d-dfad00de17be.aspx</guid>
      <link>http://vasters.com/clemensv/2007/02/09/Yahoo+Pipes+Aha.aspx</link>
      <pubDate>Fri, 09 Feb 2007 00:18:49 GMT</pubDate>
      <description>&lt;p&gt;
I'm busy at a conference but just stumbled upon Yahoo Pipes via TechMeme and &lt;a href="http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=258d634c-df5e-4420-a986-3e9d87a8f6da"&gt;Dare&lt;/a&gt;.
The little bits I read about it make that quite interesting to me (and put a big grin
on my face) specifically because&amp;nbsp;of this &lt;a href="http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=154"&gt;piece
I wrote in 2003&lt;/a&gt;&amp;nbsp;and which also got some &lt;a href="http://weblogs.asp.net/cosgood/archive/2003/04/11/5449.aspx"&gt;attention&lt;/a&gt; &lt;a href="http://www.windley.com/archives/2003/04/15.shtml"&gt;back&lt;/a&gt; &lt;a href="http://www.sauria.com/blog/computers/internet/weblogs/140"&gt;then&lt;/a&gt;.
I claim prior art ;-)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://vasters.com/clemensv/aggbug.ashx?id=fab8443a-0569-4b69-840d-dfad00de17be" /&gt;</description>
      <comments>http://vasters.com/clemensv/CommentView,guid,fab8443a-0569-4b69-840d-dfad00de17be.aspx</comments>
      <category>Technology/Weblogs</category>
      <category>Technology/Weblogs/Atom</category>
      <category>Technology/Weblogs/RSS</category>
    </item>
    <item>
      <trackback:ping>http://vasters.com/clemensv/Trackback.aspx?guid=e643292d-b16a-470b-8b2b-64f69c471e46</trackback:ping>
      <pingback:server>http://vasters.com/clemensv/pingback.aspx</pingback:server>
      <pingback:target>http://vasters.com/clemensv/PermaLink,guid,e643292d-b16a-470b-8b2b-64f69c471e46.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://vasters.com/clemensv/CommentView,guid,e643292d-b16a-470b-8b2b-64f69c471e46.aspx</wfw:comment>
      <wfw:commentRss>http://vasters.com/clemensv/SyndicationService.asmx/GetEntryCommentsRss?guid=e643292d-b16a-470b-8b2b-64f69c471e46</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
"My Lists", "My Photos", "My Profile" .... sounds all very familiar over there
in <a href="http://spaces.msn.com">MSN Spaces</a>. So ... roll in the Web service
interfaces, please.
</p>
        <img width="0" height="0" src="http://vasters.com/clemensv/aggbug.ashx?id=e643292d-b16a-470b-8b2b-64f69c471e46" />
      </body>
      <title>.NET My Services goes live.</title>
      <guid isPermaLink="false">http://vasters.com/clemensv/PermaLink,guid,e643292d-b16a-470b-8b2b-64f69c471e46.aspx</guid>
      <link>http://vasters.com/clemensv/2004/12/05/NET+My+Services+Goes+Live.aspx</link>
      <pubDate>Sun, 05 Dec 2004 14:33:39 GMT</pubDate>
      <description>&lt;p&gt;
"My Lists", "My Photos", "My Profile"&amp;nbsp;.... sounds all very familiar over there
in &lt;a href="http://spaces.msn.com"&gt;MSN Spaces&lt;/a&gt;. So ...&amp;nbsp;roll in the Web service
interfaces, please.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://vasters.com/clemensv/aggbug.ashx?id=e643292d-b16a-470b-8b2b-64f69c471e46" /&gt;</description>
      <comments>http://vasters.com/clemensv/CommentView,guid,e643292d-b16a-470b-8b2b-64f69c471e46.aspx</comments>
      <category>Technology/Web Services</category>
      <category>Technology/Weblogs</category>
      <category>Technology/XML</category>
    </item>
    <item>
      <trackback:ping>http://vasters.com/clemensv/Trackback.aspx?guid=cbc434d4-535b-464c-885e-6d81296449d7</trackback:ping>
      <pingback:server>http://vasters.com/clemensv/pingback.aspx</pingback:server>
      <pingback:target>http://vasters.com/clemensv/PermaLink,guid,cbc434d4-535b-464c-885e-6d81296449d7.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://vasters.com/clemensv/CommentView,guid,cbc434d4-535b-464c-885e-6d81296449d7.aspx</wfw:comment>
      <wfw:commentRss>http://vasters.com/clemensv/SyndicationService.asmx/GetEntryCommentsRss?guid=cbc434d4-535b-464c-885e-6d81296449d7</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div class="Section1">
          <p>
I am currently writing an article for a magazine about dasBlog and I am also covering
a bit of the history of RSS and similar formats. While looking up some links on Google,
I stumbled over a blog entry by Don Box that I hadn’t read or which at least didn’t
stick.
</p>
          <p>
Don had an <a href="http://www.gotdotnet.com/team/dbox/default.aspx?key=2003-05-13T07:47:38Z">outrageously
retro idea back in May</a> of which I understood the complete coolness only today.
The reason why that didn’t click earlier for me until today was likely that Don simply
didn’t use the right picture to go with that blog posting. So, Don, as a special service
from a friend I’ll do that for you here:
</p>
          <p style="TEXT-ALIGN: center" align="center">
            <a href="http://www.gotdotnet.com/team/dbox/cdf.aspx">
              <span style="COLOR: windowtext; TEXT-DECORATION: none">
                <b>Subscribe
to Don Box’ Active Channel</b>
                <br />
                <img height="20" alt="Add Active Channel" src="http://staff.newtelligence.net/clemensv/content/binary/image0011.gif" width="136" border="0" />
              </span>
            </a>
            <br />
            <br />
          </p>
          <p>
Even if there’s a chance that someone (from the Windows shell team, maybe?) is going
to hate me for it, I firmly plan to add Active Channel and even Active Desktop support
to the next revision of dasBlog; every copy of Windows with IE4.0 or later has built
in support for the exact stuff that Weblogs are. Let’s just use that.
</p>
          <p>
(<strong>Update: </strong>I just noticed that I must have been <a href="http://www.intertwingly.net/blog/1405.html">living</a><a href="http://cybarber.ath.cx/TestingwithSources.htm">under</a><a href="http://www.ideaspace.net/users/wkearney/archives/entries/000320.html">a
rock</a> in May)
</p>
        </div>
        <img width="0" height="0" src="http://vasters.com/clemensv/aggbug.ashx?id=cbc434d4-535b-464c-885e-6d81296449d7" />
      </body>
      <title>Don Box is Outrageously Retro (CDF)</title>
      <guid isPermaLink="false">http://vasters.com/clemensv/PermaLink,guid,cbc434d4-535b-464c-885e-6d81296449d7.aspx</guid>
      <link>http://vasters.com/clemensv/2003/10/01/Don+Box+Is+Outrageously+Retro+CDF.aspx</link>
      <pubDate>Wed, 01 Oct 2003 16:18:43 GMT</pubDate>
      <description>&lt;div class=Section1&gt;
&lt;p&gt;
I am currently writing an article for a magazine about dasBlog and I am also covering
a bit of the history of RSS and similar formats. While looking up some links on Google,
I stumbled over a blog entry by Don Box that I hadn’t read or which at least didn’t
stick.
&lt;/p&gt;
&lt;p&gt;
Don had an &lt;a href="http://www.gotdotnet.com/team/dbox/default.aspx?key=2003-05-13T07:47:38Z"&gt;outrageously
retro idea back in May&lt;/a&gt; of which I understood the complete coolness only today.
The reason why that didn’t click earlier for me until today was likely that Don simply
didn’t use the right picture to go with that blog posting. So, Don, as a special service
from a friend I’ll do that for you here:
&lt;/p&gt;
&lt;p style="TEXT-ALIGN: center" align=center&gt;
&lt;a href="http://www.gotdotnet.com/team/dbox/cdf.aspx"&gt;&lt;span style="COLOR: windowtext; TEXT-DECORATION: none"&gt;&lt;b&gt;Subscribe
to Don Box’ Active Channel&lt;/b&gt;
&lt;br&gt;
&lt;img height=20 alt="Add Active Channel" src="http://staff.newtelligence.net/clemensv/content/binary/image0011.gif" width=136 border=0&gt;&lt;/span&gt;&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
Even if there’s a chance that someone (from the Windows shell team, maybe?) is going
to hate me for it, I firmly plan to add Active Channel and even Active Desktop support
to the next revision of dasBlog; every copy of Windows with IE4.0 or later has built
in support for the exact stuff that Weblogs are. Let’s just use that.
&lt;/p&gt;
&lt;p&gt;
(&lt;strong&gt;Update: &lt;/strong&gt;I just noticed that I must have been &lt;a href="http://www.intertwingly.net/blog/1405.html"&gt;living&lt;/a&gt; &lt;a href="http://cybarber.ath.cx/TestingwithSources.htm"&gt;under&lt;/a&gt; &lt;a href="http://www.ideaspace.net/users/wkearney/archives/entries/000320.html"&gt;a
rock&lt;/a&gt; in May)
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://vasters.com/clemensv/aggbug.ashx?id=cbc434d4-535b-464c-885e-6d81296449d7" /&gt;</description>
      <comments>http://vasters.com/clemensv/CommentView,guid,cbc434d4-535b-464c-885e-6d81296449d7.aspx</comments>
      <category>newtelligence/dasBlog</category>
      <category>Technology/Weblogs</category>
    </item>
    <item>
      <trackback:ping>http://vasters.com/clemensv/Trackback.aspx?guid=c8ba038e-6f1d-4f99-a763-bd995585b42b</trackback:ping>
      <pingback:server>http://vasters.com/clemensv/pingback.aspx</pingback:server>
      <pingback:target>http://vasters.com/clemensv/PermaLink,guid,c8ba038e-6f1d-4f99-a763-bd995585b42b.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://vasters.com/clemensv/CommentView,guid,c8ba038e-6f1d-4f99-a763-bd995585b42b.aspx</wfw:comment>
      <wfw:commentRss>http://vasters.com/clemensv/SyndicationService.asmx/GetEntryCommentsRss?guid=c8ba038e-6f1d-4f99-a763-bd995585b42b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://weblogs.asp.net/javery/posts/23099.aspx">James Avery</a> suggests
creating something new for topic-based aggregation. His idea is to allow aggregation
of blogs by topic and not by person and wants new things invented for this. 
</p>
        <p>
I think they exist.
</p>
        <p>
The item-level <a href="http://blogs.law.harvard.edu/tech/rss#ltcategorygtSubelementOfLtitemgt">&lt;category&gt;</a> element
of RSS allows for setting a taxonomy on category items and that's sufficient to make
James' idea work, if  (a) aggregators were looking for the domain attribute and
allowed grouping by it and (b) blog engines would allow you to attribute your categories
like that. Then, we "only" need to agree on common categories (or someone just writes some
up) and were set. No need to register anywhere or with a central system. Here's
an example of how the elements could look for .NET bloggers:
</p>
        <p>
&lt;category domain="urn:msdn-microsoft-com:netframework"&gt;ASP.NET&lt;/category&gt;<br />
&lt;category domain="urn:msdn-microsoft-com:netframework"&gt;Enterprise Services&lt;/category&gt;<br />
&lt;category domain="urn:msdn-microsoft-com:netframework"&gt;C#&lt;/category&gt;<br />
&lt;category domain="urn:msdn-microsoft-com:netframework"&gt;VB.NET&lt;/category&gt;<br />
&lt;category domain="urn:msdn-microsoft-com:serversystem"&gt;SQL Server&lt;/category&gt;<br />
&lt;category domain="urn:msdn-microsoft-com:serversystem"&gt;BizTalk Server&lt;/category&gt;
</p>
        <img width="0" height="0" src="http://vasters.com/clemensv/aggbug.ashx?id=c8ba038e-6f1d-4f99-a763-bd995585b42b" />
      </body>
      <title>Aggregation by category</title>
      <guid isPermaLink="false">http://vasters.com/clemensv/PermaLink,guid,c8ba038e-6f1d-4f99-a763-bd995585b42b.aspx</guid>
      <link>http://vasters.com/clemensv/2003/08/08/Aggregation+By+Category.aspx</link>
      <pubDate>Fri, 08 Aug 2003 02:52:12 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://weblogs.asp.net/javery/posts/23099.aspx"&gt;James Avery&lt;/a&gt; suggests
creating something new for topic-based aggregation. His idea is to allow aggregation
of blogs by topic and not by person and wants new things invented for this. 
&lt;/p&gt;
&lt;p&gt;
I think they exist.
&lt;/p&gt;
&lt;p&gt;
The item-level&amp;nbsp;&lt;a href="http://blogs.law.harvard.edu/tech/rss#ltcategorygtSubelementOfLtitemgt"&gt;&amp;lt;category&amp;gt;&lt;/a&gt; element
of RSS allows for setting a taxonomy on category items and that's sufficient to make
James' idea work, if&amp;nbsp; (a) aggregators were looking for the domain attribute and
allowed grouping by it and (b) blog engines would allow you to attribute your categories
like that. Then, we "only" need to agree on common categories (or someone just writes&amp;nbsp;some
up) and were set. No need to register anywhere or with a central system.&amp;nbsp;Here's
an example of how&amp;nbsp;the elements&amp;nbsp;could look&amp;nbsp;for .NET bloggers:
&lt;/p&gt;
&lt;p&gt;
&amp;lt;category domain="urn:msdn-microsoft-com:netframework"&amp;gt;ASP.NET&amp;lt;/category&amp;gt;&lt;br&gt;
&amp;lt;category domain="urn:msdn-microsoft-com:netframework"&amp;gt;Enterprise Services&amp;lt;/category&amp;gt;&lt;br&gt;
&amp;lt;category domain="urn:msdn-microsoft-com:netframework"&amp;gt;C#&amp;lt;/category&amp;gt;&lt;br&gt;
&amp;lt;category domain="urn:msdn-microsoft-com:netframework"&amp;gt;VB.NET&amp;lt;/category&amp;gt;&lt;br&gt;
&amp;lt;category domain="urn:msdn-microsoft-com:serversystem"&amp;gt;SQL Server&amp;lt;/category&amp;gt;&lt;br&gt;
&amp;lt;category domain="urn:msdn-microsoft-com:serversystem"&amp;gt;BizTalk Server&amp;lt;/category&amp;gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://vasters.com/clemensv/aggbug.ashx?id=c8ba038e-6f1d-4f99-a763-bd995585b42b" /&gt;</description>
      <comments>http://vasters.com/clemensv/CommentView,guid,c8ba038e-6f1d-4f99-a763-bd995585b42b.aspx</comments>
      <category>Blog</category>
      <category>Technology/Weblogs</category>
      <category>Technology/Weblogs/RSS</category>
    </item>
    <item>
      <trackback:ping>http://vasters.com/clemensv/Trackback.aspx?guid=b8eee32a-df06-4975-873a-1054c5324d63</trackback:ping>
      <pingback:server>http://vasters.com/clemensv/pingback.aspx</pingback:server>
      <pingback:target>http://vasters.com/clemensv/PermaLink,guid,b8eee32a-df06-4975-873a-1054c5324d63.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://vasters.com/clemensv/CommentView,guid,b8eee32a-df06-4975-873a-1054c5324d63.aspx</wfw:comment>
      <wfw:commentRss>http://vasters.com/clemensv/SyndicationService.asmx/GetEntryCommentsRss?guid=b8eee32a-df06-4975-873a-1054c5324d63</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://blogs.law.harvard.edu/tech/stories/storyReader$127">Dave Winer</a> suggests
an experiment: 
</p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
            <em>Shall we run an experiment is to see if aggregators can work with RSS feeds that
have a xmlns attribute at the top level, on the &lt;rss&gt; element? </em>
          </p>
        </blockquote>
        <p>
... and continues with an example:
</p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p dir="ltr" style="MARGIN-RIGHT: 0px">
            <em>
              <font face="Courier New">&lt;rss version="2.0" xmlns="http://blogs.law.harvard.edu/tech/rss"&gt;<br /><br /></font>Now, the RSS spec doesn't say that this is okay, but neither does it say it's
not okay. </em>
          </p>
        </blockquote>
        <p dir="ltr" style="MARGIN-RIGHT: 0px">
Yes, the RSS spec may not but that doesn't matter, because it's just a vocabulary
on top of existing specs that take matters a bit more seriously. The <a href="http://www.w3.org/TR/REC-xml-names/">XML
namespaces</a> spec says: <em>"If the URI reference in a default namespace declaration
is empty, then unprefixed elements in the scope of the declaration are not considered
to be in any namespace", </em>which is true for all RSS elements as per RSS specification,
because it ignores namespaces and is therefore subject to this default case. Therefore,
setting a default document namespace like that may be permissible as per
RSS spec, but recognizing such a document as valid RSS is just wrong. I
would suggest to revise the spec and not to experiment.
</p>
        <img width="0" height="0" src="http://vasters.com/clemensv/aggbug.ashx?id=b8eee32a-df06-4975-873a-1054c5324d63" />
      </body>
      <title>RSS and namespaces, Episode 789</title>
      <guid isPermaLink="false">http://vasters.com/clemensv/PermaLink,guid,b8eee32a-df06-4975-873a-1054c5324d63.aspx</guid>
      <link>http://vasters.com/clemensv/2003/07/25/RSS+And+Namespaces+Episode+789.aspx</link>
      <pubDate>Fri, 25 Jul 2003 23:37:00 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://blogs.law.harvard.edu/tech/stories/storyReader$127"&gt;Dave Winer&lt;/a&gt; suggests
an experiment: 
&lt;/p&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p&gt;
&lt;em&gt;Shall we run an experiment is to see if aggregators can work with RSS feeds that
have a xmlns attribute at the top level, on the &amp;lt;rss&amp;gt; element? &lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
... and continues with an example:
&lt;/p&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;em&gt;&lt;font face="Courier New"&gt;&amp;lt;rss version="2.0" xmlns="http://blogs.law.harvard.edu/tech/rss"&amp;gt;&lt;br&gt;
&lt;br&gt;
&lt;/font&gt;Now, the RSS spec doesn't say that this is okay, but neither does it say it's
not okay. &lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p dir=ltr style="MARGIN-RIGHT: 0px"&gt;
Yes, the RSS spec may not but that doesn't matter, because it's just a vocabulary
on top of existing specs that take matters a bit more seriously. The &lt;a href="http://www.w3.org/TR/REC-xml-names/"&gt;XML
namespaces&lt;/a&gt; spec says: &lt;em&gt;"If the URI reference in a default namespace declaration
is empty, then unprefixed elements in the scope of the declaration are not considered
to be in any namespace", &lt;/em&gt;which is true for all RSS elements as per RSS specification,
because it ignores namespaces and is therefore subject to this default case. Therefore,
setting a default document namespace like that&amp;nbsp;may be&amp;nbsp;permissible as per
RSS spec, but recognizing&amp;nbsp;such a document&amp;nbsp;as valid RSS is just wrong. I
would suggest to revise the spec and not to experiment.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://vasters.com/clemensv/aggbug.ashx?id=b8eee32a-df06-4975-873a-1054c5324d63" /&gt;</description>
      <comments>http://vasters.com/clemensv/CommentView,guid,b8eee32a-df06-4975-873a-1054c5324d63.aspx</comments>
      <category>Blog</category>
      <category>Technology/Weblogs</category>
      <category>Technology/Weblogs/RSS</category>
    </item>
    <item>
      <trackback:ping>http://vasters.com/clemensv/Trackback.aspx?guid=9b45d383-43c1-405f-ab8a-a5648d669157</trackback:ping>
      <pingback:server>http://vasters.com/clemensv/pingback.aspx</pingback:server>
      <pingback:target>http://vasters.com/clemensv/PermaLink,guid,9b45d383-43c1-405f-ab8a-a5648d669157.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://vasters.com/clemensv/CommentView,guid,9b45d383-43c1-405f-ab8a-a5648d669157.aspx</wfw:comment>
      <wfw:commentRss>http://vasters.com/clemensv/SyndicationService.asmx/GetEntryCommentsRss?guid=9b45d383-43c1-405f-ab8a-a5648d669157</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <strong>BloggerAPI, MT API, MetaWeblog API, Comment API, Pingback API, Trackback  ... 
are you nuts?</strong>
        </p>
        <p>
I must admit that until last week I didn't really pay much close attention to all
the blogging related APIs and specs beyond "keeping myself informed". Today I copied
my weekend's work over to this server and now I have all of them implemented as client
and server versions. <a href="http://www.intertwingly.net/blog/">Sam</a>'s and <a href="http://diveintomark.org/">Mark</a>'s validator
is happy with my <a href="http://feeds.archive.org/validator/check?url=http%3A%2F%2Fstaff.newtelligence.net%2Fclemensv%2Frss.ashx">RSS</a> 2.0
feed and the experimental <a href="http://feeds.archive.org/validator/check?url=http%3A%2F%2Fstaff.newtelligence.net%2Fclemensv%2Fblogxbrowsing.asmx%2FGetAtom">Atom</a> (Pie/Echo)
feed.
</p>
        <p>
I have to say ... the state of affairs in this space is absolutely scary. Most
of the specs, especially for the APIs are lacking proper information detail, are
often too informal with too much room for ambiguities and you need to be lucky
to find a reasonably recent one. Sam <a href="http://www.intertwingly.net/blog/1520.html">laments</a> that
people don't read specs carefully and I agree, but I would argue that the specs need
to be written carefully, too. It also seems that because the documentation on expected
behavior is so thin, everybody implements their own flavor and extensions and
not only do the APIs have huge overlap, but it seems like any
random selection of offline blogging tools will use its own arbitrary selection of
these APIs in any random order. Since my implementation didn't "grow" over time,
but I implemented it all in one shot essentially only since last Thursday and had
to look at this all at once and what I found was just saddening. All of this
has to be consolidated and <a href="http://www.intertwingly.net/wiki/pie/FrontPage">it
will be</a>. 
</p>
        <p>
I am all for the <a href="http://www.intertwingly.net/wiki/pie/FrontPage">Atom
project </a>and creating a consolidated, SOAP-based API for all blogging functions
that the aforementioned APIs offer. XML-RPC was a good thing to start with but its
time is up.  I am also for replacing RSS x.x with a spec that's open
and under the umbrella of a recognized standards body and not of a <a href="http://blogs.law.harvard.edu/tech/rss">law
school</a>, that's XML as of ca. 2003 and not as of ca. 1998, and that's
formally documented (with a proper schema). What's there right now smells all
like "let's hack something up" and not very much like serious software engineering.
Ok, it's proven that it all works, but how about dumping the prototypes now?
</p>
        <p>
 
</p>
        <img width="0" height="0" src="http://vasters.com/clemensv/aggbug.ashx?id=9b45d383-43c1-405f-ab8a-a5648d669157" />
      </body>
      <title>BloggerAPI, MT API, MetaWeblog API, Comment API, Pingback API, Trackback  ...  are you nuts?</title>
      <guid isPermaLink="false">http://vasters.com/clemensv/PermaLink,guid,9b45d383-43c1-405f-ab8a-a5648d669157.aspx</guid>
      <link>http://vasters.com/clemensv/2003/07/21/BloggerAPI+MT+API+MetaWeblog+API+Comment+API+Pingback+API+Trackback+Are+You+Nuts.aspx</link>
      <pubDate>Mon, 21 Jul 2003 14:17:36 GMT</pubDate>
      <description>&lt;p&gt;
&lt;strong&gt;BloggerAPI, MT API, MetaWeblog API, Comment API, Pingback API, Trackback&amp;nbsp;&amp;nbsp;...&amp;nbsp;
are you nuts?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
I must admit that until last week I didn't really pay much close attention to all
the blogging related APIs and specs beyond "keeping myself informed". Today I copied
my weekend's work over to this server and now I have all of them implemented as client
and server versions.&amp;nbsp;&lt;a href="http://www.intertwingly.net/blog/"&gt;Sam&lt;/a&gt;'s and &lt;a href="http://diveintomark.org/"&gt;Mark&lt;/a&gt;'s&amp;nbsp;validator
is happy with my&amp;nbsp;&lt;a href="http://feeds.archive.org/validator/check?url=http%3A%2F%2Fstaff.newtelligence.net%2Fclemensv%2Frss.ashx"&gt;RSS&lt;/a&gt;&amp;nbsp;2.0
feed and the experimental &lt;a href="http://feeds.archive.org/validator/check?url=http%3A%2F%2Fstaff.newtelligence.net%2Fclemensv%2Fblogxbrowsing.asmx%2FGetAtom"&gt;Atom&lt;/a&gt; (Pie/Echo)
feed.
&lt;/p&gt;
&lt;p&gt;
I have to say ... the state of&amp;nbsp;affairs in this space is absolutely scary. Most
of the specs, especially for the APIs are&amp;nbsp;lacking proper information detail,&amp;nbsp;are
often too informal&amp;nbsp;with too much room for ambiguities and you need to be lucky
to find a reasonably recent one. Sam &lt;a href="http://www.intertwingly.net/blog/1520.html"&gt;laments&lt;/a&gt; that
people don't read specs carefully and I agree, but I would argue that the specs need
to be written carefully, too. It also seems that because the documentation on expected
behavior is so thin, everybody implements their own&amp;nbsp;flavor and extensions and
not only do&amp;nbsp;the APIs&amp;nbsp;have huge overlap, but&amp;nbsp;it seems like&amp;nbsp;any
random selection of offline blogging tools will use its own arbitrary selection of
these APIs in any random order.&amp;nbsp;Since my implementation didn't "grow" over time,
but I implemented it all in one shot essentially only since last Thursday and had
to look at this all at once and what I found was just saddening.&amp;nbsp;All of this
has to be consolidated and &lt;a href="http://www.intertwingly.net/wiki/pie/FrontPage"&gt;it
will be&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
I am all for&amp;nbsp;the &lt;a href="http://www.intertwingly.net/wiki/pie/FrontPage"&gt;Atom
project &lt;/a&gt;and creating a consolidated, SOAP-based&amp;nbsp;API for all blogging functions
that the aforementioned APIs offer. XML-RPC was a good thing to start with but its
time is up.&amp;nbsp;&amp;nbsp;I am also for replacing RSS&amp;nbsp;x.x with a spec that's open
and under the umbrella of a recognized standards body and not&amp;nbsp;of a &lt;a href="http://blogs.law.harvard.edu/tech/rss"&gt;law
school&lt;/a&gt;, that's XML&amp;nbsp;as of ca. 2003 and not as of ca. 1998, and&amp;nbsp;that's
formally documented (with a proper schema).&amp;nbsp;What's there right now smells all
like "let's hack something up"&amp;nbsp;and not very much like serious software engineering.
Ok, it's proven that it all works, but how about dumping the prototypes now?
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://vasters.com/clemensv/aggbug.ashx?id=9b45d383-43c1-405f-ab8a-a5648d669157" /&gt;</description>
      <comments>http://vasters.com/clemensv/CommentView,guid,9b45d383-43c1-405f-ab8a-a5648d669157.aspx</comments>
      <category>Blog</category>
      <category>Technology</category>
      <category>Technology/ASP.NET</category>
      <category>Technology/Weblogs</category>
      <category>Technology/Weblogs/Atom</category>
    </item>
  </channel>
</rss>