<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" 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/" version="2.0">
  <channel>
    <title>Dare Obasanjo aka Carnage4Life - XML</title>
    <link>http://www.25hoursaday.com/weblog/</link>
    <description>You can buy cars but you can't buy respect in the 'hood - Curtis Jackson</description>
    <language>en-us</language>
    <copyright>Dare Obasanjo</copyright>
    <lastBuildDate>Mon, 12 Jan 2009 14:10:08 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.1.8102.813</generator>
    <managingEditor>kpako@yahoo.com</managingEditor>
    <webMaster>kpako@yahoo.com</webMaster>
    <item>
      <trackback:ping>http://www.25hoursaday.com/weblog/Trackback.aspx?guid=db553491-ebe9-47fe-a1ac-02e09232f02d</trackback:ping>
      <pingback:server>http://www.25hoursaday.com/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=db553491-ebe9-47fe-a1ac-02e09232f02d</pingback:target>
      <dc:creator>Dare Obasanjo (Carnage4Life)</dc:creator>
      <wfw:comment>http://www.25hoursaday.com/weblog/CommentView.aspx?guid=db553491-ebe9-47fe-a1ac-02e09232f02d</wfw:comment>
      <wfw:commentRss>http://www.25hoursaday.com/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=db553491-ebe9-47fe-a1ac-02e09232f02d</wfw:commentRss>
      <slash:comments>9</slash:comments>
      <title>Can RDF really save us from data format proliferation?</title>
      <guid isPermaLink="false">http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=db553491-ebe9-47fe-a1ac-02e09232f02d</guid>
      <link>http://www.25hoursaday.com/weblog/2009/01/12/CanRDFReallySaveUsFromDataFormatProliferation.aspx</link>
      <pubDate>Mon, 12 Jan 2009 14:10:08 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;Bill de hÓra has a blog post entitled &lt;a href="http://www.dehora.net/journal/2009/01/10/format-debt-what-you-cant-say/"&gt;Format Debt: what you can't say&lt;/a&gt; where he writes&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The closest thing to a deployable web technology that might improve describing these kind of data mashups without parsing at any cost or patching is RDF. Once RDF is parsed it becomes a well defined graph structure - albeit not a structure most web programmers will be used to, it is however the same structure regardless of the source syntax or the code and the graph structure is closed under all allowed operations.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;If we take the example of MediaRSS, &lt;/em&gt;&lt;a href="http://www.25hoursaday.com/weblog/2009/01/08/RepresentingRichMediaAndSocialNetworkActivitiesInRSSAtomFeeds.aspx"&gt;&lt;em&gt;which is not consistenly used or placed in syndication and API formats&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, that class of problem more or less evaporates via RDF. Likewise if we take the &lt;/em&gt;&lt;a href="http://mashable.com/2008/03/25/windows-live-data-portability/"&gt;&lt;em&gt;current Zoo&lt;/em&gt;&lt;/a&gt;&lt;em&gt; of &lt;/em&gt;&lt;a href="http://groups.google.com/group/microformats/browse_thread/thread/559cb4d06dc50c30"&gt;&lt;em&gt;contact formats&lt;/em&gt;&lt;/a&gt;&lt;em&gt; and our seeming &lt;/em&gt;&lt;a href="http://factoryjoe.com/blog/2008/03/11/portable-contact-lists-and-the-case-against-xfn/"&gt;&lt;em&gt;inability to commit to one&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, RDF/OWL &lt;/em&gt;&lt;a href="http://www.w3.org/TR/owl-ref/#IndividualIdentity"&gt;&lt;em&gt;can enable a declarative mapping between them&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. Mapping can reduce the number of man years it takes to define a "standard" format by not having to bother unifying "standards" or getting away with a few thousand less test cases.&lt;/em&gt;&amp;nbsp;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I've always found this particular argument by RDF proponents to be suspect. When I complained about the &lt;a title="Dare Obasanjo aka Carnage4Life: Representing Rich Media and Social Network Activities in RSS/Atom Feeds" href="http://www.25hoursaday.com/weblog/2009/01/08/RepresentingRichMediaAndSocialNetworkActivitiesInRSSAtomFeeds.aspx"&gt;the lack of standards for representing rich media in Atom feeds&lt;/a&gt;, the thrust of the complaint is that you can't just plugin a feed from &lt;a href="http://picasaweb.google.com/"&gt;Picassa&lt;/a&gt; into a service that understands how to process feeds from &lt;a href="http://www.zooomr.com"&gt;Zooomr&lt;/a&gt; without making changes to the service or the input feed. &lt;/p&gt;  &lt;p&gt;RDF proponents&amp;nbsp; often to argue that if we all used RDF based formats then instead of having to change your code to support every new photo site's Atom feed with custom extensions, you could instead create a mapping from the format you don't understand to the one you do using something like the &lt;a href="http://www.w3.org/TR/owl-features/"&gt;OWL Web Ontology Language&lt;/a&gt;.&amp;nbsp; The problem with this argument is that there is a declarative approach to mapping between XML data formats without having to boil the ocean by convincing everyone to switch to RD; &lt;a href="http://www.w3.org/TR/xslt"&gt;XSL Transformations (XSLT)&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;The key problem is that in both cases (i.e. mapping with OWL vs. mapping with XSLT) there is still the problem that Picassa feeds won't work with an app that understand's Zoomr's feeds until some developer writes code. Thus we're really debating on whether it is &lt;strike&gt;better&lt;/strike&gt; &lt;i&gt;cheaper&lt;/i&gt; to have the developer write declarative mappings like OWL or XSLT instead of writing new parsing code in their language of choice. &lt;/p&gt;  &lt;p&gt;In my experience I've seen that creating a software system where you can drop in an XSLT, OWL or other declarative mapping document to deal with new data formats is cheaper and likely to be less error prone than having to alter parsing code written in C#, Python, Ruby or whatever. However we don't need RDF or other Semantic Web technologies to build such solution today. XSLT works just fine as a tool for solving exactly that problem. &lt;/p&gt;  &lt;p&gt;&lt;img style="vertical-align: middle;" title="Note" alt="Note" src="http://shared.live.com/HjKMzTS-xzcms40%21CabizA/emoticons/music_note.gif"&gt; Now Playing: &lt;a href="http://www.amazon.com/gp/search/ref=sr_adv_m_pop/?search-alias=popular&amp;amp;unfiltered=1&amp;amp;field-keywords=&amp;amp;field-artist=Lady%20GaGa%20&amp;amp;%20Colby%20O%27Donis&amp;amp;field-title=&amp;amp;field-label=&amp;amp;field-binding=&amp;amp;sort=relevancerank&amp;amp;Adv-Srch-Music-Album-Submit.x=19&amp;amp;Adv-Srch-Music-Album-Submit.y=6"&gt;Lady GaGa &amp;amp; Colby O'Donis&lt;/a&gt; - &lt;a href="http://www.amazon.com/s/ref=nb_ss_dmusic?url=search-alias%3Ddigital-music&amp;amp;field-keywords=Lady%20GaGa%20&amp;amp;%20Colby%20O%27Donis+Just%20Dance&amp;amp;x=0&amp;amp;y=0"&gt;Just Dance&lt;/a&gt; &lt;img style="vertical-align: middle;" title="Note" alt="Note" src="http://shared.live.com/HjKMzTS-xzcms40%21CabizA/emoticons/music_note.gif"&gt;&lt;/p&gt;&lt;/div&gt;</description>
      <comments>http://www.25hoursaday.com/weblog/CommentView.aspx?guid=db553491-ebe9-47fe-a1ac-02e09232f02d</comments>
      <category>Syndication Technology</category>
      <category>XML</category>
    </item>
    <item>
      <trackback:ping>http://www.25hoursaday.com/weblog/Trackback.aspx?guid=30e4b272-3cfe-45ba-90b5-57b001266f34</trackback:ping>
      <pingback:server>http://www.25hoursaday.com/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=30e4b272-3cfe-45ba-90b5-57b001266f34</pingback:target>
      <dc:creator>Dare Obasanjo (Carnage4Life)</dc:creator>
      <wfw:comment>http://www.25hoursaday.com/weblog/CommentView.aspx?guid=30e4b272-3cfe-45ba-90b5-57b001266f34</wfw:comment>
      <wfw:commentRss>http://www.25hoursaday.com/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=30e4b272-3cfe-45ba-90b5-57b001266f34</wfw:commentRss>
      <slash:comments>6</slash:comments>
      <title>Scalability: I Don't Think That Word Means What You Think It Does</title>
      <guid isPermaLink="false">http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=30e4b272-3cfe-45ba-90b5-57b001266f34</guid>
      <link>http://www.25hoursaday.com/weblog/2008/07/14/ScalabilityIDontThinkThatWordMeansWhatYouThinkItDoes.aspx</link>
      <pubDate>Mon, 14 Jul 2008 11:40:12 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;Via &lt;a title="Protocol buffers: the early reviews are in" href="http://diveintomark.org/archives/2008/07/12/protobuf"&gt;Mark Pilgrim&lt;/a&gt; I stumbled on an article by Scott Loganbill entitled &lt;a href="http://www.webmonkey.com/blog/Google_s_Open_Source_Protocol_Buffers_Offer_Scalability__Speed"&gt;Google’s Open Source Protocol Buffers Offer Scalability, Speed&lt;/a&gt; which contains the following excerpt &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The best way to explore Protocol Buffers is to compare it to its alternative. What do Protocol Buffers have that XML doesn’t? As the &lt;/em&gt;&lt;a href="http://google-opensource.blogspot.com/2008/07/protocol-buffers-googles-data.html"&gt;&lt;em&gt;Google Protocol Buffer blog post mentions&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, &lt;font color="#ff0000"&gt;XML isn’t scalable&lt;/font&gt;:&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&amp;quot;As nice as XML is, it isn’t going to be efficient enough for [Google’s] scale. When all of your machines and network links are running at capacity, XML is an extremely expensive proposition. Not to mention, writing code to work with the DOM tree can sometimes become unwieldy.&amp;quot;&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;We’ve never had to deal with XML in a scale where programming for it would become unwieldy, but we’ll take Google’s word for it.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Perhaps the biggest value-add of Protocol Buffers to the development community is as &lt;font color="#ff0000"&gt;a method of dealing with scalability before it is necessary&lt;/font&gt;. The biggest developing drain of any start-up is success. How do you prepare for the onslaught of visitors companies such as Google or &lt;/em&gt;&lt;a href="http://www.webmonkey.com/blog/Twitter_Asks_for_Scalability_Help_From_Community"&gt;&lt;em&gt;Twitter have experienced&lt;/em&gt;&lt;/a&gt;&lt;em&gt;? Scaling for numbers takes critical development time, usually at a juncture where you should be introducing much-needed features to stay ahead of competition rather than paralyzing feature development to keep your servers running.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Over time, Google has tackled the problem of communication between platforms with Protocol Buffers and data storage with &lt;/em&gt;&lt;a href="http://labs.google.com/papers/bigtable.html"&gt;&lt;em&gt;Big Table&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. Protocol Buffers is the first open release of the technology making Google tick, although you can utilize Big Table with &lt;/em&gt;&lt;a href="http://code.google.com/appengine/"&gt;&lt;em&gt;App Engine&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;It is unfortunate that it is now commonplace for people to throw around terms like &amp;quot;scaling&amp;quot; and &amp;quot;scalability&amp;quot; in technical discussions without actually explaining what they mean. Having a Web application that scales means that your application can handle becoming popular or being more popular than it is today in a &lt;u&gt;&lt;strong&gt;cost effective manner&lt;/strong&gt;&lt;/u&gt;. Depending on your class of Web application, there are different technologies that have been proven to help Web sites handle significantly higher traffic than they normally would. However there is no silver bullet. &lt;/p&gt;  &lt;p&gt;The fact that Google uses &lt;a href="http://labs.google.com/papers/mapreduce.html"&gt;MapReduce&lt;/a&gt; and &lt;a href="http://labs.google.com/papers/bigtable.html"&gt;BigTable&lt;/a&gt; to solve problems in a particular problem space does not mean those technologies work well in others. MapReduce isn't terribly useful if you are building an instant messaging service. Similarly, if you are building an email service you want an infrastructure based on message queuing not BigTable. A binary wire format like Protocol Buffers is a smart idea if your applications bottleneck is network bandwidth or CPU used when serializing/deserializing XML.&amp;#160; As part of building their search engine Google has to cache a significant chunk of the World Wide Web and then perform data intensive operations on that data. In Google's scenarios, the network bandwidth utilized when transferring the massive amounts of data they process can actually be the bottleneck. Hence inventing a technology like Protocol Buffers became a necessity. However, that isn't Twitter's problem so a technology like Protocol Buffers isn't going to &amp;quot;help them scale&amp;quot;. Twitter's problems have been &lt;a title="It&amp;#39;s Not Rocket Science, But It&amp;#39;s Our Work" href="http://blog.twitter.com/2008/05/its-not-rocket-science-but-its-our-work.html"&gt;clearly spelled out by the development team&lt;/a&gt; and nowhere is network bandwidth called out as a culprit.&lt;/p&gt;  &lt;p&gt;Almost every technology that has been loudly proclaimed as unscalable by some pundit on the Web is being used by a massively popular service in some context. Relational databases don't scale? Well, &lt;a title="Inside eBay&amp;#39;s Massive Oracle Database" href="http://www.dba-oracle.com/oracle_news/news_ebay_massive_oracle.htm"&gt;eBay seems to be doing OK&lt;/a&gt;. PHP doesn't scale? I believe it &lt;a title="PHP and Facebook" href="http://blog.facebook.com/blog.php?post=2356432130"&gt;scales well enough for Facebook&lt;/a&gt;. Microsoft technologies aren't scalable? &lt;a title="MySpace Architecture" href="http://highscalability.com/myspace-architecture"&gt;MySpace begs to differ&lt;/a&gt;. And so on…&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;If someone tells you &amp;quot;technology X doesn't scale&amp;quot; without qualifying that statement, it often means the person either doesn't know what he is talking about or is trying to sell you something. Technologies don't scale, services do. Thinking you can just sprinkle a technology on your service and make it scale is the kind of thinking that led Blaine Cook (former architect at Twitter) to publish &lt;a href="http://www.slideshare.net/Blaine/scaling-twitter/"&gt;a presentation on Scaling Twitter&lt;/a&gt; which claimed their scaling problems where solved with their adoption of memcached. That was in 2007. In 2008, let's just say the &lt;a href="http://www.flickr.com/photos/scriptingnews/2537265280/"&gt;Fail Whale&lt;/a&gt; begs to differ.&amp;#160; &lt;/p&gt;  &lt;p&gt;If a service doesn't scale it is more likely due to bad design than to technology choice. Remember that.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Now Playing:&lt;/b&gt; &lt;a href="http://www.amazon.com/gp/search/ref=sr_adv_m_pop/?search-alias=popular&amp;amp;unfiltered=1&amp;amp;field-keywords=&amp;amp;field-artist=Zapp and Roger&amp;amp;field-title=&amp;amp;field-label=&amp;amp;field-binding=&amp;amp;sort=relevancerank&amp;amp;Adv-Srch-Music-Album-Submit.x=19&amp;amp;Adv-Srch-Music-Album-Submit.y=6"&gt;Zapp &amp;amp; Roger&lt;/a&gt; - &lt;a href="http://www.amazon.com/s/ref=nb_ss_dmusic?url=search-alias%3Ddigital-music&amp;amp;field-keywords=Zapp and Roger+Computer Love&amp;amp;x=0&amp;amp;y=0"&gt;Computer Love&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description>
      <comments>http://www.25hoursaday.com/weblog/CommentView.aspx?guid=30e4b272-3cfe-45ba-90b5-57b001266f34</comments>
      <category>Web Development</category>
      <category>XML</category>
    </item>
    <item>
      <trackback:ping>http://www.25hoursaday.com/weblog/Trackback.aspx?guid=5bd5b38e-ae00-4616-86b4-7e35b59435f3</trackback:ping>
      <pingback:server>http://www.25hoursaday.com/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=5bd5b38e-ae00-4616-86b4-7e35b59435f3</pingback:target>
      <dc:creator>Dare Obasanjo (Carnage4Life)</dc:creator>
      <wfw:comment>http://www.25hoursaday.com/weblog/CommentView.aspx?guid=5bd5b38e-ae00-4616-86b4-7e35b59435f3</wfw:comment>
      <wfw:commentRss>http://www.25hoursaday.com/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=5bd5b38e-ae00-4616-86b4-7e35b59435f3</wfw:commentRss>
      <slash:comments>6</slash:comments>
      <title>In Defense of XML</title>
      <guid isPermaLink="false">http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=5bd5b38e-ae00-4616-86b4-7e35b59435f3</guid>
      <link>http://www.25hoursaday.com/weblog/2008/07/02/InDefenseOfXML.aspx</link>
      <pubDate>Wed, 02 Jul 2008 12:56:10 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;Jeff Atwood recently published two anti-XML rants in his blog entitled &lt;a href="http://www.codinghorror.com/blog/archives/001114.html"&gt;XML: The Angle Bracket Tax&lt;/a&gt; and &lt;a href="http://www.codinghorror.com/blog/archives/001139.html"&gt;Revisiting the XML Angle Bracket Tax&lt;/a&gt;. The source of his beef with XML and his recommendations to developers are excerpted below &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Everywhere I look, programmers and programming tools seem to have standardized on &lt;/em&gt;&lt;a href="http://en.wikipedia.org/wiki/XML"&gt;&lt;em&gt;XML&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. Configuration files, build scripts, local data storage, code comments, project files, you name it -- &lt;b&gt;if it's stored in a text file and needs to be retrieved and parsed, it's probably XML.&lt;/b&gt; I realize that we have to use something to represent reasonably human readable data stored in a text file, but XML sometimes feels an awful lot like using an enormous sledgehammer to drive common household nails. &lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;I'm deeply ambivalent about XML. I'm reminded of this Winston Churchill quote: &lt;/em&gt;&lt;/p&gt;    &lt;blockquote&gt;&lt;em&gt;It has been said that democracy is the worst form of government except all the others that have been tried. &lt;/em&gt;&lt;/blockquote&gt;    &lt;p&gt;&lt;em&gt;XML is like democracy. Sometimes it even works. On the other hand, it also means we end up with stuff like this:&lt;/em&gt; &lt;/p&gt;    &lt;pre&gt;&amp;lt;SOAP-ENV:Envelope xmlns:SOAP-ENV=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; 
  SOAP-ENV:encodingStyle=&amp;quot;http://schemas.xmlsoap.org/soap/encoding/&amp;quot;&amp;gt;
  &amp;lt;SOAP-ENV:Body&amp;gt;
    &amp;lt;m:GetLastTradePrice xmlns:m=&amp;quot;Some-URI&amp;quot;&amp;gt;
      &amp;lt;symbol&amp;gt;DIS&amp;lt;/symbol&amp;gt;
    &amp;lt;/m:GetLastTradePrice&amp;gt;
  &amp;lt;/SOAP-ENV:Body&amp;gt;
&amp;lt;/SOAP-ENV:Envelope&amp;gt;&lt;/pre&gt;
… 

  &lt;br /&gt;&lt;em&gt;You could do worse than XML. It's a reasonable choice, and if you're going to use XML, then at least &lt;a href="http://www.codinghorror.com/blog/archives/000647.html"&gt;&lt;em&gt;learn to use it correctly&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. But consider: &lt;/em&gt;&lt;/em&gt;

  &lt;ol&gt;
    &lt;li&gt;&lt;em&gt;Should XML be the default choice? &lt;/em&gt;&lt;/li&gt;

    &lt;li&gt;&lt;em&gt;Is XML the simplest possible thing that can work for your intended use? &lt;/em&gt;&lt;/li&gt;

    &lt;li&gt;&lt;em&gt;Do you &lt;/em&gt;&lt;a href="http://web.archive.org/web/20060325012720/www.pault.com/xmlalternatives.html"&gt;&lt;em&gt;know what the XML alternatives are&lt;/em&gt;&lt;/a&gt;&lt;em&gt;? &lt;/em&gt;&lt;/li&gt;

    &lt;li&gt;&lt;em&gt;Wouldn't it be nice to have easily readable, understandable data and configuration files, without all those sharp, pointy angle brackets jabbing you directly in your ever-lovin' eyeballs?&lt;/em&gt; &lt;/li&gt;
  &lt;/ol&gt;

  &lt;p&gt;&lt;em&gt;I don't necessarily think &lt;/em&gt;&lt;a href="http://c2.com/cgi/wiki?XmlSucks"&gt;&lt;em&gt;XML sucks&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, but the mindless, blanket application of XML as &lt;/em&gt;&lt;a href="http://snltranscripts.jt.org/75/75ishimmer.phtml"&gt;&lt;em&gt;a dessert topping and a floor wax&lt;/em&gt;&lt;/a&gt;&lt;em&gt; certainly does. Like all tools, it's a question of how you use it. Please think twice before subjecting yourself, your fellow programmers, and your users to &lt;b&gt;the XML angle bracket tax&lt;/b&gt;. &amp;lt;CleverEndQuote&amp;gt;Again.&amp;lt;/CleverEndQuote&amp;gt;&lt;/em&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The question of if and when to use XML is one I am intimately familiar with given that I spent the first 2.5 years of my professional career at Microsoft working on the XML team as the “face of XML” on MSDN.&lt;/p&gt;

&lt;p&gt;My problem with Jeff’s articles is that they take a very narrow view of how to evaluate a technology. No one should argue that XML is the simplest or most efficient technology to satisfy the uses it has been put to today. It isn’t. The value of XML isn’t in its simplicity or its efficiency. It is in the fact that there is a &lt;strong&gt;&lt;u&gt;massive&lt;/u&gt;&lt;/strong&gt; ecosystem of knowledge and tools around working with XML. &lt;/p&gt;

&lt;p&gt;If I decide to use XML for my data format, I can be sure that my data will be consumable using a variety off-the-shelf tools on practically every platform in use today. In addition, there are a variety of tools for authoring XML, transforming it to HTML or text, parsing it, converting it to objects, mapping it to database schemas, validating it against a schema, and so on. Want to convert my XML config file into a pretty HTML page? I can use XSLT or CSS. Want to validate my XML against a schema? I have my choice of Schematron, Relax NG and XSD. Want to find stuff in my XML document? XPath and XQuery to the rescue. And so on. &lt;/p&gt;

&lt;p&gt;No other data format hits a similar sweet spot when it comes to ease of use, popularity and breadth of tool ecosystem.&lt;/p&gt;

&lt;p&gt;So the question you really want to ask yourself before taking on the “Angle Bracket Tax” as Jeff Atwood puts it, is whether the benefits of avoiding XML outweigh the &lt;strong&gt;costs&lt;/strong&gt; of giving up the tool ecosystem of XML and the familiarity that practically every developer out there has with the technology? In some cases this might be true such as when deciding whether to go with JSON over XML in AJAX applications (I’ve given &lt;a title="JSON vs. XML: Browser Security Model" href="http://www.25hoursaday.com/weblog/2007/01/02/JSONVsXMLBrowserSecurityModel.aspx"&gt;two&lt;/a&gt; &lt;a title="JSON vs. XML: Browser Programming Models" href="http://www.25hoursaday.com/weblog/2007/01/02/JSONVsXMLBrowserProgrammingModels.aspx"&gt;reasons&lt;/a&gt; in the past why JSON is a better choice).&amp;#160; On the other hand, I can’t imagine a good reason to want to roll your own data format for office documents or application configuration files as opposed to using XML.&lt;/p&gt;
FURTHER READING 

&lt;ul&gt;
  &lt;li&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/ms950805.aspx" href="http://msdn.microsoft.com/en-us/library/ms950805.aspx"&gt;The XML Litmus Test&lt;/a&gt; - Dare Obasanjo provides some simple guidelines for determining when XML is the appropriate technology to use in a software application or architecture design. (6 printed pages) &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa468558.aspx"&gt;Understanding XML&lt;/a&gt; - Learn how the Extensible Markup Language (XML) facilitates universal data access. XML is a plain-text, Unicode-based meta-language: a language for defining markup languages. It is not tied to any programming language, operating system, or software vendor. XML provides access to a plethora of technologies for manipulating, structuring, transforming and querying data. (14 printed pages) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Now Playing:&lt;/b&gt; &lt;a href="http://phobos.apple.com/WebObjects/MZSearch.woa/wa/advancedSearchResults?artistTerm=Metallica" target="_blank"&gt;Metallica&lt;/a&gt; - &lt;a href="http://phobos.apple.com/WebObjects/MZSearch.woa/wa/advancedSearchResults?songTerm=The God That Failed&amp;amp;artistTerm=Metallica" target="_blank"&gt;The God That Failed&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description>
      <comments>http://www.25hoursaday.com/weblog/CommentView.aspx?guid=5bd5b38e-ae00-4616-86b4-7e35b59435f3</comments>
      <category>XML</category>
    </item>
    <item>
      <trackback:ping>http://www.25hoursaday.com/weblog/Trackback.aspx?guid=9fd3f83f-f773-4115-a776-badbfff8729b</trackback:ping>
      <pingback:server>http://www.25hoursaday.com/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=9fd3f83f-f773-4115-a776-badbfff8729b</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.25hoursaday.com/weblog/CommentView.aspx?guid=9fd3f83f-f773-4115-a776-badbfff8729b</wfw:comment>
      <wfw:commentRss>http://www.25hoursaday.com/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=9fd3f83f-f773-4115-a776-badbfff8729b</wfw:commentRss>
      <slash:comments>12</slash:comments>
      <title>Note to Software Vendors, the World is Collaborative and Loosely Coupled</title>
      <guid isPermaLink="false">http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=9fd3f83f-f773-4115-a776-badbfff8729b</guid>
      <link>http://www.25hoursaday.com/weblog/2007/07/17/NoteToSoftwareVendorsTheWorldIsCollaborativeAndLooselyCoupled.aspx</link>
      <pubDate>Tue, 17 Jul 2007 16:10:09 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;&lt;i&gt;&lt;b&gt;Disclaimer:&lt;/b&gt; This may sound like a rant but it isn't meant to be. In the &lt;a href="http://blogs.msdn.com/oldnewthing/archive/2007/07/13/3838514.aspx"&gt;wise words of Raymond Chen&lt;/a&gt; this is meant to highlight problems that are harming&amp;nbsp;the productivity of developers and knowledge workers in today's world.&amp;nbsp;No companies or programs will be&amp;nbsp;named because the intent is not to mock or ridicule.&amp;nbsp; &lt;/i&gt;&lt;/p&gt;
&lt;p&gt;This morning I had to rush into work early instead of going to the gym because of two limitations in&amp;nbsp;the software&amp;nbsp;around us. &lt;/p&gt;
&lt;h4&gt;Problem #1: Collaborative Document Editing &lt;/h4&gt;
&lt;p&gt;So a bunch are working on a document that is due today. Yesterday I wanted to edit the document but found out I could not because the software claimed someone else was currently editing the document. So I opened it in read-only mode, copied out some data, edited it and then sent my changes in an email to the person who was in charge of the document. As if that wasn&amp;rsquo;t bad enough&amp;hellip;&lt;/p&gt;
&lt;p&gt;This morning, as I'm driving to the gym for my morning work out, I glance at my phone to see that I've received mail from several co-workers because it I've "locked" the document and no one can make their changes. When I get to work, I find out that I&amp;nbsp;didn&amp;rsquo;t&amp;nbsp;close the document within the application and this was the reason none of my co-workers could edit it.&amp;nbsp;Wow. &lt;/p&gt;
&lt;p&gt;The notion that&amp;nbsp;only one person at a time can edit a document or that if one is viewing a document, it cannot be edited seems archaic in&amp;nbsp;today&amp;rsquo;s globally networked world. Why&amp;nbsp;is software taking so long to catch up? &lt;/p&gt;
&lt;h4&gt;Problem #2: Loosely Coupled XML Web Services &lt;/h4&gt;
&lt;p&gt;While&amp;nbsp;I was driving to the office I noticed another email from one of the services that integrates with ours via a SOAP-based XML Web Service. As part of the design to handle a news scenario&amp;nbsp;we added a new type that was&amp;nbsp;going to be returned by one of our methods (e.g. imagine that there was a GetFruit() method which used to return apples and&amp;nbsp;oranges which now returns apples, oranges and bananas) . This change was crashing the applications that were invoking our service because they weren&amp;rsquo;t expecting us to return bananas. &lt;/p&gt;
&lt;p&gt;However, the insidious thing is that the failure wasn&amp;rsquo;t because their application was improperly coded to fail if it saw a fruit it didn&amp;rsquo;t know, it was because the platform they built on was statically typed. Specifically, the Web Services platform automatically converted the XML to objects by looking at our &lt;a href="http://www.w3.org/TR/wsdl"&gt;WSDL&lt;/a&gt; file (i.e. the &lt;a href="http://en.wikipedia.org/wiki/Interface_description_language"&gt;interface definition language&lt;/a&gt; which stated up front which types are returned by our service) . So this meant that any time new types were added to our service, our &lt;a href="http://www.w3.org/TR/wsdl"&gt;WSDL&lt;/a&gt;&amp;nbsp;file would be updated and any application invoking our service which was built on a Web services platform that performed such XML&amp;lt;-&amp;gt;object mapping &lt;strong&gt;and&lt;/strong&gt; was statically typed &lt;em&gt;would need to be recompiled&lt;/em&gt;. Yes, recompiled. &lt;/p&gt;
&lt;p&gt;Now, consider how many potentially different applications that could be accessing our service. What are our choices? Come up with GetFruitEx() or GetFruit2() methods so we don&amp;rsquo;t break old clients? Go over our web server logs and try to track down every application that has accessed our service? Never introduce new types?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s sad that&amp;nbsp;as an industry we built a technology on an eXtensible Markup Language (XML) and our first instinct was to make it as inflexible as &lt;a href="http://en.wikipedia.org/wiki/Distributed_Computing_Environment"&gt;technology that is two decades old&lt;/a&gt; which was never meant to scale to a global network like the World Wide Web.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Software should solve problems, not create new ones which require more&amp;nbsp;technology to fix. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Now playing:&lt;/strong&gt; &lt;a href="http://phobos.apple.com/WebObjects/MZSearch.woa/wa/advancedSearchResults?artistTerm=Young Jeezy"&gt;Young Jeezy&lt;/a&gt; - &lt;a href="http://phobos.apple.com/WebObjects/MZSearch.woa/wa/advancedSearchResults?songTerm=Bang (feat. T.I. &amp;amp; Lil Scrappy)&amp;amp;artistTerm=Young Jeezy"&gt;Bang (feat. T.I. &amp;amp; Lil Scrappy)&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description>
      <comments>http://www.25hoursaday.com/weblog/CommentView.aspx?guid=9fd3f83f-f773-4115-a776-badbfff8729b</comments>
      <category>Technology</category>
      <category>XML</category>
      <category>XML Web Services</category>
    </item>
    <item>
      <trackback:ping>http://www.25hoursaday.com/weblog/Trackback.aspx?guid=be04ab7c-428d-4173-8d41-dbe374e5a4c1</trackback:ping>
      <pingback:server>http://www.25hoursaday.com/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=be04ab7c-428d-4173-8d41-dbe374e5a4c1</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.25hoursaday.com/weblog/CommentView.aspx?guid=be04ab7c-428d-4173-8d41-dbe374e5a4c1</wfw:comment>
      <wfw:commentRss>http://www.25hoursaday.com/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=be04ab7c-428d-4173-8d41-dbe374e5a4c1</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <title>Microsoft's Astoria and Jasper data access projects</title>
      <guid isPermaLink="false">http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=be04ab7c-428d-4173-8d41-dbe374e5a4c1</guid>
      <link>http://www.25hoursaday.com/weblog/2007/05/01/MicrosoftsAstoriaAndJasperDataAccessProjects.aspx</link>
      <pubDate>Tue, 01 May 2007 23:28:20 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;Andy Conrad, who I used to work with back on the XML team, has two blog posts about &lt;a href="http://blogs.msdn.com/aconrad/archive/2007/04/30/project-astoria.aspx" title="Project Astoria"&gt;Project Astoria&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/aconrad/archive/2007/04/30/project-jasper.aspx" title="Project Jasper!"&gt;Project Jasper&lt;/a&gt; from Microsoft's Data Programmability team. Both projects are listed as &lt;a href="http://msdn2.microsoft.com/en-us/data/bb419139.aspx"&gt;data access incubation projects&lt;/a&gt; on MSDN. Below are the descriptions of the projects&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;i&gt;&lt;strong&gt;Project Codename “Astoria”&lt;/strong&gt;&lt;br&gt;The goal of Microsoft Codename Astoria is to enable applications to expose 
data as a &lt;/i&gt;&lt;i&gt;data service that can be consumed by web clients within a 
corporate network and across the internet. The data service is reachable over 
regular HTTP requests, and standard HTTP verbs such as GET, POST, PUT and DELETE 
are used to perform operations against the service. The payload format for the 
service is controllable by the application, but all options are simple, open 
formats such as plan XML and JSON. Web-friendly technologies make Astoria an 
ideal data back-end for AJAX-style applications, and other applications that 
need to operate against data that is across the web.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;To learn more about Project Astoria or download the CTP, visit the Project 
Astoria website at &lt;a href="http://astoria.mslivelabs.com/"&gt;http://astoria.mslivelabs.com&lt;/a&gt;.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;&lt;strong&gt;Project Codename “Jasper”&lt;/strong&gt;&lt;br&gt;Project Jasper is geared towards iterative and agile development. You can 
start interacting with the data in your database without having to create 
mapping files or define classes. You can build user interfaces by naming 
controls according to your model without worrying about binding code. Project 
Jasper is also extensible, allowing you to provide your own business logic and 
class model. Since Project Jasper is built on top of the ADO.NET Entity 
Framework, it supports rich queries and complex mapping.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;To learn more about Project Jasper visit the ADO.NET Blog at &lt;a href="http://blogs.msdn.com/adonet"&gt;http://blogs.msdn.com/adonet&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;
I was called in a few weeks ago by an architect on the Data Programmability team to give some advice about Project Astoria. The project is basically a way to create RESTful endpoints on top of a SQL Server database then retrieve the relational data as plain XML, JSON or a subset of RDF+XML using HTTP requests. The reason I was called in was to give some of my thoughts on exposing relational data as RSS/Atom feeds. My feedback was that attempting to map arbitrary relational data to RSS/Atom feeds seemed unnatural and was bordering on abuse of an XML syndication format. Although this feature was not included in the Project Astoria CTP, it seems that mapping relational data to RSS/Atom feeds is still something the team thinks is interesting based on the &lt;a href="http://astoria.mslivelabs.com/faq.aspx"&gt;Project Astoria FAQ&lt;/a&gt;. You can find out more in the &lt;a href="http://astoria.mslivelabs.com/Overview.doc"&gt;Project Astoria overview documentation&lt;/a&gt;. &amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm"&gt;REST&lt;/a&gt; is totally sweeping Microsoft.&lt;/p&gt;&lt;/div&gt;</description>
      <comments>http://www.25hoursaday.com/weblog/CommentView.aspx?guid=be04ab7c-428d-4173-8d41-dbe374e5a4c1</comments>
      <category>XML</category>
      <category>XML Web Services</category>
    </item>
    <item>
      <trackback:ping>http://www.25hoursaday.com/weblog/Trackback.aspx?guid=d15c3dcb-1590-40c2-bcaf-469c3a952bb7</trackback:ping>
      <pingback:server>http://www.25hoursaday.com/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=d15c3dcb-1590-40c2-bcaf-469c3a952bb7</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.25hoursaday.com/weblog/CommentView.aspx?guid=d15c3dcb-1590-40c2-bcaf-469c3a952bb7</wfw:comment>
      <wfw:commentRss>http://www.25hoursaday.com/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=d15c3dcb-1590-40c2-bcaf-469c3a952bb7</wfw:commentRss>
      <slash:comments>8</slash:comments>
      <title>Miguel de Icaza on OOXML vs. ODF</title>
      <guid isPermaLink="false">http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=d15c3dcb-1590-40c2-bcaf-469c3a952bb7</guid>
      <link>http://www.25hoursaday.com/weblog/2007/02/01/MiguelDeIcazaOnOOXMLVsODF.aspx</link>
      <pubDate>Thu, 01 Feb 2007 01:19:28 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Miguel_de_Icaza"&gt;Miguel de Icaza&lt;/a&gt; of &lt;a href="http://www.gnome.org/projects/gnumeric/"&gt;Gnumeric&lt;/a&gt;, &lt;a href="http://www.gnome.org/"&gt;GNOME&lt;/a&gt; and &lt;a href="http://www.ximian.com/"&gt;Ximian&lt;/a&gt; fame has weighed in with his thoughts on the &lt;a href="http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=ac147359-114a-42d2-9ec4-64aa599dec58"&gt;FUD war&lt;/a&gt; that is &lt;a href="http://www.oasis-open.org/committees/office/"&gt;ODF&lt;/a&gt; vs. &lt;a href="http://office.microsoft.com/en-us/products/HA102058151033.aspx"&gt;OOXML&lt;/a&gt;. In his blog post entitled &lt;a href="http://tirania.org/blog/archive/2007/Jan-30.html" title="The EU Prosecutors are Wrong."&gt;The EU Prosecutors are Wrong&lt;/a&gt; Miguel writes&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;i&gt;Open standards and the need for public access to information was a strong 
message. This became a key component of promoting open office, and open source 
software. This posed two problems: 
&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;&lt;font color="#ff0000"&gt;First, those promoting open standards did not stress the importance of having 
a fully open source implementation of an office suite. &lt;/font&gt;Second, it assumed that Microsoft would stand still and would not react to 
this new change in the market.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;And that is where the strategy to promote the open source office suite is 
running into problems. Microsoft did not stand still. It reacted to this new 
requirement by creating a file format of its own, the OOXML.&lt;/i&gt;
&lt;br&gt;...&lt;br&gt;&lt;/p&gt;&lt;h3&gt;&lt;i&gt;The Size of OOXML&lt;/i&gt;&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;A common objection to OOXML is that the specification is "too big", that 
6,000 pages is a bit too much for a specification and that this would prevent 
third parties from implementing support for the standard. Considering that for years we, the open source community, have been trying to 
extract as much information about protocols and file formats from Microsoft, 
this is actually a good thing. 
&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;For example, many years ago, when I was working on Gnumeric, one of the 
issues that we ran into was that the actual descriptions for functions and 
formulas in Excel was not entirely accurate from the public books you could buy. 

&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;OOXML devotes 324 pages of the standard to document the formulas and 
functions. The original submission to the ECMA TC45 working group did not have any of 
this information. Jody Goldberg and Michael Meeks that represented Novell at the 
TC45 requested the information and it eventually made it into the standards. I 
consider this a win, and I consider those 324 extra pages a win for everyone 
(almost half the size of the ODF standard).
 
&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;Depending on how you count, ODF has 4 to 10 pages devoted to it. &lt;b&gt;There is 
no way you could build a spreadsheet software based on this specification.&lt;/b&gt;&lt;/i&gt;&lt;br&gt;
...&lt;br&gt;&lt;i&gt;
I have obviously not read the entire specification, and am biased towards what I have seen in the spreadsheet angle. But considering that it is impossible to implement a spreadsheet program based on ODF, am convinced that the analysis done by those opposing OOXML is incredibly shallow, the burden is on them to prove that ODF is "enough" to implement from scratch alternative applications.&lt;/i&gt;&lt;br&gt;...&lt;br&gt;&lt;i&gt;&lt;font color="#ff0000"&gt;The real challenge today that open source faces in the office space is that 
some administrations might choose to move from the binary office formats to the 
OOXML formats and that "open standards" will not play a role in promoting 
OpenOffice.org nor open source.&lt;/font&gt; 
&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;What is worse is that even if people manage to stop OOXML from becoming an 
ISO standard it will be an ephemeral victory. 
&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;We need to recognize that this is the problem. Instead of trying to bury 
OOXML, which amounts to covering the sun with your finger.&lt;/i&gt; &lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I think there is an interesting bit of insight in Miguel's post which I highlighted in red font. IBM and the rest of the ODF opponents lobbied governments against Microsoft's products by arguing that its file formats where not &lt;b&gt;open&lt;/b&gt;. However they did not expect that Microsoft would turn around and make those very file formats open and instead compete on &lt;a href="http://office.microsoft.com/en-us/products/HA101679411033.aspx"&gt;innovation in the user experience&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;
Now ODF proponents like &lt;a href="http://www.robweir.com/blog/"&gt;Rob Weir&lt;/a&gt; who've been trumpeting the value of open standards now find themselves in the absurd position of arguing that is a bad thing for Microsoft to open up its file formats and provide exhaustive documentation for them. Instead they demand that Microsoft&amp;nbsp; should either&amp;nbsp; abandon backwards compatibility with the billions of documents produced by&amp;nbsp;Microsoft Office in the past decade or that it should &lt;a href="http://en.wikipedia.org/wiki/Embrace,_extend_and_extinguish"&gt;embrace and extend&lt;/a&gt; ODF to meet its needs. Neither of which sounds like a good thing for customers.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
I guess it's like Tim Bray said, &lt;a href="http://www.tbray.org/ongoing/When/200x/2007/01/24/Mixup"&gt;life gets complicated when there are billion$ of dollars on the line&lt;/a&gt;. I'm curious to see how &lt;a href="http://www.robweir.com/blog/"&gt;Rob Weir&lt;/a&gt; responds to Miguel's post. Ideally, we'll eventually move away from these absurd discussions about whether it is a bad thing for Microsoft to open up its file formats and hand them over to an international standards body to talking about how we office productivity software can improve the lives of workers by innovating on features especially with regards to collaboration in the workplace.&amp;nbsp;  After all everyone knows that &lt;a href="http://blogs.zdnet.com/Gillmor/?p=177"&gt;single user, office productivity software is dead&lt;/a&gt;. Right?&lt;/p&gt;&lt;/div&gt;</description>
      <comments>http://www.25hoursaday.com/weblog/CommentView.aspx?guid=d15c3dcb-1590-40c2-bcaf-469c3a952bb7</comments>
      <category>Technology</category>
      <category>XML</category>
    </item>
    <item>
      <trackback:ping>http://www.25hoursaday.com/weblog/Trackback.aspx?guid=ac147359-114a-42d2-9ec4-64aa599dec58</trackback:ping>
      <pingback:server>http://www.25hoursaday.com/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=ac147359-114a-42d2-9ec4-64aa599dec58</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.25hoursaday.com/weblog/CommentView.aspx?guid=ac147359-114a-42d2-9ec4-64aa599dec58</wfw:comment>
      <wfw:commentRss>http://www.25hoursaday.com/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=ac147359-114a-42d2-9ec4-64aa599dec58</wfw:commentRss>
      <slash:comments>9</slash:comments>
      <title>What is Rob Weir (and IBM's) Agenda with the OOXML Bashing?</title>
      <guid isPermaLink="false">http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=ac147359-114a-42d2-9ec4-64aa599dec58</guid>
      <link>http://www.25hoursaday.com/weblog/2007/01/23/WhatIsRobWeirAndIBMsAgendaWithTheOOXMLBashing.aspx</link>
      <pubDate>Tue, 23 Jan 2007 18:34:22 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;In response to my recent post entitled &lt;a href="http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=b9cd3528-e331-4368-9f15-bd8a350c68ac" title="ODF vs. OOXML on Wikipedia"&gt;ODF vs. OOXML on Wikipedia&lt;/a&gt; one of my readers pointed out&lt;br&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;i&gt;
Well, many of Weir's points are not about OOXML being a "second", and therefore unnecessary, standard. Many of them, I think, are about how crappy the standard actually is.&lt;/i&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Since I don't regularly read &lt;a href="http://www.robweir.com/blog/"&gt;Rob Weir's blog&lt;/a&gt; this was interesting to me. I wondered why someone who identifies himself as &lt;a href="http://www.robweir.com/blog/rob.html"&gt;working for IBM on various ODF technical topics&lt;/a&gt; would be spending a lot of his time attacking a related standard as opposed to talking about the technology he worked. I assumed my reader was mistaken and decided to subscribe to his feed and see how many of his recent posts were about&amp;nbsp;&lt;a href="http://office.microsoft.com/en-us/products/HA102058151033.aspx"&gt;OOXML&lt;/a&gt;. Below is a screenshot of what his feed looks like when I subscribed to it in &lt;a href="http://www.rssbandit.org"&gt;RSS Bandit&lt;/a&gt; a few minutes ago&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.25hoursaday.com/weblog/content/binary/rob_weir.JPG" border="0"&gt; 
&lt;/p&gt;
&lt;p&gt;Of his 24 most recent posts, 16 of them are explicitly about &lt;a href="http://office.microsoft.com/en-us/products/HA102058151033.aspx"&gt;OOXML&lt;/a&gt; while 7 of them are about &lt;a href="http://www.oasis-open.org/committees/office/"&gt;ODF&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;
Interesting. I wonder why a senior technical guy at IBM is spending more time attacking a technology whose proponents have claimed is not competitive with it instead of talking about the technology he works on? Reading the blogs of Microsoft folks like &lt;a href="http://blogs.msdn.com/oldnewthing/"&gt;Raymond Chen&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/jensenh/"&gt;Jensen Harris&lt;/a&gt; or &lt;a href="http://blogs.msdn.com/brian_jones/"&gt;Brian Jones&lt;/a&gt; you don't see them dedicating two thirds of their blog postings to bash rival products or technologies.  
&lt;/p&gt;
&lt;p&gt;
From my perspective as an outsider in this debate it seems to me that &lt;a href="http://office.microsoft.com/en-us/products/HA102058151033.aspx"&gt;OOXML&lt;/a&gt; is an overspecified description of an &lt;b&gt;open &lt;/b&gt;XML document format that is backwards compatible with the billions of documents produced in Microsoft Office formats over the past decade. On the other hand, &lt;a href="http://www.oasis-open.org/committees/office/"&gt;ODF&lt;/a&gt; is an &lt;b&gt;open &lt;/b&gt;XML document format that aims to be a generic format for storing business documents that isn't tied to any one product which still needs some work to do in beefing up the specification in &lt;a href="http://blogs.msdn.com/brian_jones/archive/2006/07/20/673323.aspx"&gt;certain&lt;/a&gt;&amp;nbsp;&lt;a href="http://blogs.msdn.com/brian_jones/archive/2006/05/26/607630.aspx"&gt;areas&lt;/a&gt; if interoperability is key. 
&lt;/p&gt;
&lt;p&gt;
In an ideal world both of these efforts would be trying to learn from each other. However it seems that for whatever reasons IBM has decided that it would rather that Microsoft failed at its attempt to open up the XML formats behind the most popular office productivity software in the world. How this is a good thing for Microsoft's customers or IBM's is lost on me. 
&lt;/p&gt;
&lt;p&gt;
Having a family member who is in politics, I've learned that whenever you see what seems like a religious fundamentalism there usually is a quest for money and/or power behind it.  Reading articles such as &lt;a href="http://www.consortiuminfo.org/standardsblog/article.php?story=20060516062009210"&gt;Reader Beware as ODF News Coverage Increases&lt;/a&gt; it seems clear that IBM has a lot of money riding on being first to market with ODF-enabled products while simultaneously &lt;a href="http://www.ibm.com/news/no/no/2006/07/odf.html"&gt;encouraging governments to only mandate ODF&lt;/a&gt;. The fly in the ointment is that the requirement of most governments is that the document format is &lt;b&gt;open&lt;/b&gt;, not that it is &lt;a href="http://www.oasis-open.org/committees/office/"&gt;ODF&lt;/a&gt;. Which explains IBM's unfortunate FUD campaign.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
Usually, I wouldn't care about something like this since this is Big Business and Politics 101, but there was something that Rick Jellife wrote in his post &lt;a href="http://www.oreillynet.com/xml/blog/2007/01/an_interesting_offer.html" title="An interesting offer: get paid to contribute to Wikipedia"&gt;An interesting offer: get paid to contribute to Wikipedia&lt;/a&gt; which is excerpted below
&lt;/p&gt;
&lt;blockquote&gt;&lt;i&gt;
So I think there are distinguishing features for OOXML, and one of the more political issues is do we want to encourage and reward MS for taking the step of opening up their file formats, at last?&lt;/i&gt; 
&lt;/blockquote&gt;
&lt;p&gt;
The last thing I'd personally hate is for this experience to have soured Microsoft from opening up its technologies so I thought I'd throw my hat in the ring at least this once. 
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;PS:&lt;/b&gt; It's pretty impressive that a &lt;a href="http://www.google.com/search?q=ooxml"&gt;Google search for "ooxml"&lt;/a&gt; pulls up a bunch of negative blog posts and the wikipedia article as the first couple of hits. It seems the folks on the Microsoft Office team need to do some SEO to fix that pronto. &lt;/p&gt;&lt;/div&gt;</description>
      <comments>http://www.25hoursaday.com/weblog/CommentView.aspx?guid=ac147359-114a-42d2-9ec4-64aa599dec58</comments>
      <category>Competitors/Web Companies</category>
      <category>XML</category>
    </item>
    <item>
      <trackback:ping>http://www.25hoursaday.com/weblog/Trackback.aspx?guid=b9cd3528-e331-4368-9f15-bd8a350c68ac</trackback:ping>
      <pingback:server>http://www.25hoursaday.com/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=b9cd3528-e331-4368-9f15-bd8a350c68ac</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.25hoursaday.com/weblog/CommentView.aspx?guid=b9cd3528-e331-4368-9f15-bd8a350c68ac</wfw:comment>
      <wfw:commentRss>http://www.25hoursaday.com/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=b9cd3528-e331-4368-9f15-bd8a350c68ac</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <title>ODF vs. OOXML on Wikipedia</title>
      <guid isPermaLink="false">http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=b9cd3528-e331-4368-9f15-bd8a350c68ac</guid>
      <link>http://www.25hoursaday.com/weblog/2007/01/22/ODFVsOOXMLOnWikipedia.aspx</link>
      <pubDate>Mon, 22 Jan 2007 21:44:46 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;This morning I stumbled upon an interestingly titled post by Rick Jellife which piqued my interest entitled &lt;a href="http://www.oreillynet.com/xml/blog/2007/01/an_interesting_offer.html" title="An interesting offer: get paid to contribute to Wikipedia"&gt;An interesting offer: get paid to contribute to Wikipedia&lt;/a&gt; where he writes &lt;/p&gt;
&lt;blockquote&gt;

&lt;p&gt;&lt;i&gt;I’m not a Microsoft hater at all, its just that I’ve swum in a different stream. 
Readers of this blog will know that I have differing views on standards to some 
Microsoft people at least.&lt;br&gt;...
&lt;br&gt;So I was a little surprised to receive email a couple of days ago from 
Microsoft saying they wanted to contract someone independent but friendly (me) 
for a couple of days to provide more balance on Wikipedia concerning ODF/OOXML. 
I am hardly the poster boy of Microsoft partisanship! Apparently they are 
frustrated at the amount of spin from some ODF stakeholders on Wikipedia and 
blogs. &lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;I think I’ll accept it: FUD enrages me and MS certainly are not hiring me to 
add any pro-MS FUD, just to correct any errors I see.&lt;br&gt;...&lt;br&gt; 
Just scanning quickly the Wikipedia &lt;a href="http://en.wikipedia.org/wiki/OOXML"&gt;entry&lt;/a&gt; I see one example straight away: &lt;/i&gt;&lt;i&gt;The OOXML specification requires conforming 
implementations to accept and understand various legacy office applications 
. But the conformance section to the ISO standard (which is only about page 
four) specifies conformance in terms of being able to accept the grammar, use 
the standard semantics for the bits you implement, and document where you do 
something different. The bits you don’t implement are no-one’s business. So that 
entry is simply wrong. The same myth comes up in the form “You have to implement 
all 6000 pages or Microsoft will sue you.” Are we idiots?&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;Now I certainly think there are some good issues to consider with ODF versus 
OOXML, and it is good that they come out an get discussed. For example, the 
proposition that “ODF and OOXML are both office document formats: why should 
there be two standards?” is one that should be discussed. As I have mentioned 
before on this blog, I think OOXML has attributes that distinguish it: ODF has 
simply not been designed with the goal of being able to represent all the 
information possible in an MS Office document; this makes it poorer for 
archiving but paradoxically may make it better for level-playing-field, 
inter-organization document interchange. But the archiving community deserves 
support just as much as the document distribution community. And XHTML is better 
than both for simple documents. And PDF still has a role. And specific markup 
trumps all of them, where it is possible. So I think there are distinguishing 
features for OOXML, and one of the more political issues is do we want to 
encourage and reward MS for taking the step of opening up their file formats, at 
last?&lt;/i&gt; &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I'm glad to hear that Rick Jellife is considering taking this contract. Protecting your brand on Wikipedia, especially against well-funded or organized detractors is unfortunately a full time job and one that really should be performed by an impartial party not a biased one. It's great to see that Microsoft isn't only savvy enough to realize that keeping an eye on Wikipedia entries about itself is important but also is seeking objective 3rd parties to do the policing. &lt;/p&gt;
&lt;p&gt;
It looks to me that online discussion around XML formats for business documents has significantly detoriorated. When I read posts like Rob Weir's &lt;a href="http://www.robweir.com/blog/2007/01/foolish-inconsistency.html"&gt;A Foolish Inconsistency&lt;/a&gt; and &lt;a href="http://www.robweir.com/blog/2007/01/vast-blue-wing-conspiracy.html"&gt;The Vast Blue-Wing Conspiracy&lt;/a&gt; or Brian Jones's &lt;a href="http://blogs.msdn.com/brian_jones/archive/2007/01/19/passing-the-openxml-standard-over-to-iso.aspx" title="Passing the OpenXML standard over to ISO"&gt;Passing the OpenXML standard over to ISO&lt;/a&gt; it seems clear that rational technical discussion is out the windows and the parties involved are in full mud slinging mode. It reminds me of watching TV during U.S. election years.&amp;nbsp;I'm probably a biased party but I think the "why should we have two XML formats for business documents" line that is being thrown around by IBM is crap. The entire reason for XML's existence is so that we can build different formats that satisfy different needs. After all, no one asks them why the ODF folks had to invent their own format when PDF and [X]HTML already exist. The fact that ODF and OOXML exist yet have different goals is fine. What is important is that they both are non-proprietary, &lt;b&gt;open&lt;/b&gt; standards which prevents customers from being locked-in which is what people really want. 
&lt;/p&gt;
&lt;p&gt;And I thought the RSS vs. Atom wars were pointless. &lt;/p&gt;
&lt;p&gt;
&lt;b&gt;PS:&lt;/b&gt; On the issue of &lt;a href="http://blog.outer-court.com/archive/2007-01-22-n21.html"&gt;Wikipedia now using &lt;code&gt;nofollow&lt;/code&gt; links&lt;/a&gt;, I kinda prefer Shelley Powers's idea in her post &lt;a href="http://just.shelleypowers.com/technology/wikipedia-and-nofollow/"&gt;Wikipedia and nofollow&lt;/a&gt; that search engines treat Wikipedia specially as an 'instant answer' (MSN speak) or OneBox result (Google speak) instead of including it in the organic search results page. It has earned its place on the Web and should be treated specially including the placement of disclaimers warning Web n00bs that it's information should be taken with a grain of salt. 
&lt;/p&gt;&lt;/div&gt;</description>
      <comments>http://www.25hoursaday.com/weblog/CommentView.aspx?guid=b9cd3528-e331-4368-9f15-bd8a350c68ac</comments>
      <category>XML</category>
    </item>
    <item>
      <trackback:ping>http://www.25hoursaday.com/weblog/Trackback.aspx?guid=d639d908-7fbc-40cd-8e36-e6d48c07f659</trackback:ping>
      <pingback:server>http://www.25hoursaday.com/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=d639d908-7fbc-40cd-8e36-e6d48c07f659</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.25hoursaday.com/weblog/CommentView.aspx?guid=d639d908-7fbc-40cd-8e36-e6d48c07f659</wfw:comment>
      <wfw:commentRss>http://www.25hoursaday.com/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=d639d908-7fbc-40cd-8e36-e6d48c07f659</wfw:commentRss>
      <slash:comments>17</slash:comments>
      <title>Updated: XML Has Too Many Architecture Astronauts</title>
      <guid isPermaLink="false">http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=d639d908-7fbc-40cd-8e36-e6d48c07f659</guid>
      <link>http://www.25hoursaday.com/weblog/2007/01/03/UpdatedXMLHasTooManyArchitectureAstronauts.aspx</link>
      <pubDate>Wed, 03 Jan 2007 23:25:05 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;Joel Spolsky has an seminal article entitled &lt;a href="http://www.joelonsoftware.com/articles/fog0000000018.html"&gt;Don't Let Architecture Astronauts Scare You&lt;/a&gt; where he wrote&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;i&gt;A recent example illustrates this. Your typical architecture
astronaut will take a fact like "Napster is a peer-to-peer service for
downloading music" and ignore everything but the architecture, thinking
it's interesting because it's peer to peer, completely missing the
point that it's interesting because you can type the name of a song and
listen to it &lt;/i&gt;&lt;i&gt;right away.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;All they'll talk about is peer-to-peer this, that, and the other
thing. Suddenly you have peer-to-peer conferences, peer-to-peer venture
capital funds, and even peer-to-peer backlash with the imbecile
business journalists dripping with glee as they copy each other's
stories: "Peer To Peer: Dead!"&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&amp;nbsp;The Architecture Astronauts will say things like: "Can you imagine a program like&lt;/i&gt;&lt;i&gt; Napster where you can download &lt;/i&gt;&lt;i&gt;anything, not just songs?" Then they'll build applications like Groove that they think are &lt;/i&gt;&lt;i&gt;more
general than Napster, but which seem to have neglected that wee little
feature that lets you type the name of a song and then listen to it --
the feature we wanted in the first place. Talk about missing the point.
If Napster &lt;/i&gt;&lt;i&gt;wasn't peer-to-peer but it &lt;/i&gt;&lt;i&gt;did let you type the name of a song and then listen to it, it would have been just as popular.&lt;/i&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;This article is relevant because I recently wrote a series of posts explaining why Web developers have begun to favor JSON over XML in Web Services. My motivation for writing this article were conversations I'd had with former co-workers who seemed intent on "abstracting" the discussion and comparing whether JSON was a &lt;b&gt;better&lt;/b&gt; data format than XML in all the cases that XML is used today instead of understanding the context in which JSON has become popular.  &lt;/p&gt;
&lt;p&gt;In the past two weeks, I've seen three different posts from various XML heavy hitters committing this very sin
&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;a href="http://www.tbray.org/ongoing/When/200x/2006/12/21/JSON" title="JSON and XML"&gt;JSON and XML&lt;/a&gt; by &lt;b&gt;Tim Bray&lt;/b&gt; - This kicked it off and starts off by firing some easily refutable allegations about the extensibility and unicode capabilities of JSON as a general data transfer format. &lt;br&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pluralsight.com/blogs/dbox/archive/2007/01/03/45560.aspx" title="Tim Bray on JSON and XML"&gt;Tim Bray on JSON and XML&lt;/a&gt; by &lt;b&gt;Don Box&lt;/b&gt; - Refutes the allegations by Tim Bray above but still misses the point.&lt;br&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.megginson.com/blogs/quoderat/2007/01/03/all-markup-ends-up-looking-like-xml/"&gt;All markup ends up looking like XML&lt;/a&gt; by &lt;b&gt;David Megginson&lt;/b&gt; - argues that XML is just like JSON except with the former we use angle brackets and in the latter we use curly braces + square brackets. Thus they are "Turing" equivalent. Academically interesting but not terribly useful information if you are a Web developer trying to get things done. &lt;br&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is my plea to you, if you are an XML guru and you aren't sure why JSON seems to have come out of nowhere to threaten your precious XML, go read &lt;a href="http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=060ca7c3-b03f-41aa-937b-c8cba5b7f986" title="JSON vs. XML: Browser Security Model"&gt;JSON vs. XML: Browser Security Model&lt;/a&gt; and &lt;a href="http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=39842a17-781a-45c8-ade5-58286909226b" title="JSON vs. XML: Browser Programming Models"&gt;JSON vs. XML: Browser Programming Models&lt;/a&gt; then let's have the discussion. &lt;/p&gt;
&lt;p&gt;
If you're too busy to read them, here's the executive summary. JSON is a better fit for Web services that power Web mashups and AJAX widgets due to the fact &lt;strike&gt;&lt;font color="#ff0000"&gt;it gets around the cross domain limitations put in place by browsers that hamper XMLHttpRequest&lt;/font&gt; and&lt;/strike&gt; that it is essentially serialized Javascript objects which makes it fit better client side scripting which is primarily done in Javascript. That's it. XML will never fit the bill as well for these scenarios without changes to the existing browser ecosystem which I doubt are forthcoming anytime soon. 
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Update:&lt;/b&gt; See comments by David Megginson and Steve Marx below. 
&lt;/p&gt;&lt;/div&gt;</description>
      <comments>http://www.25hoursaday.com/weblog/CommentView.aspx?guid=d639d908-7fbc-40cd-8e36-e6d48c07f659</comments>
      <category>XML</category>
    </item>
    <item>
      <trackback:ping>http://www.25hoursaday.com/weblog/Trackback.aspx?guid=39842a17-781a-45c8-ade5-58286909226b</trackback:ping>
      <pingback:server>http://www.25hoursaday.com/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=39842a17-781a-45c8-ade5-58286909226b</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.25hoursaday.com/weblog/CommentView.aspx?guid=39842a17-781a-45c8-ade5-58286909226b</wfw:comment>
      <wfw:commentRss>http://www.25hoursaday.com/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=39842a17-781a-45c8-ade5-58286909226b</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <title>JSON vs. XML: Browser Programming Models</title>
      <guid isPermaLink="false">http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=39842a17-781a-45c8-ade5-58286909226b</guid>
      <link>http://www.25hoursaday.com/weblog/2007/01/02/JSONVsXMLBrowserProgrammingModels.aspx</link>
      <pubDate>Tue, 02 Jan 2007 19:55:11 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;Over the holidays I had a chance to talk to some of my old compadres from the XML team at Microsoft and we got to talking about the JSON as an alternative to XML. I concluded that there are a small number of key reasons that JSON is now more attractive than XML for kinds of data interchange that powers Web-based mashups and Web gadgets widgets. This is the &lt;b&gt;second &lt;/b&gt;in a series of posts on what these key reasons are.&lt;/p&gt;
&lt;p&gt;In my &lt;a href="http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=060ca7c3-b03f-41aa-937b-c8cba5b7f986"&gt;previous post&lt;/a&gt;, I mentioned that getting around limitations in cross domain requests imposed by modern browsers has been a key reason for the increased adoption of JSON. However this is only part of the story. &lt;/p&gt;
&lt;p&gt;
Early on in the adoption of AJAX techniques across various Windows Live services I noticed that even for building pages with no cross domain requirements, our Web developers favored JSON to XML. One response that kept coming up is the easier programming model when processing JSON responses on the client than with XML. I'll illustrate this difference in ease of use via a JScript code that shows how to process a &lt;a href="http://www.json.org/example.html"&gt;sample document in both XML and JSON formats taken from the JSON website&lt;/a&gt;. Below is the code sample  
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;&lt;span style="color: Fuchsia; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;var&lt;/span&gt; json_menu = &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'{"menu": {'&lt;/span&gt; + &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'\n'&lt;/span&gt; + &lt;br&gt;  &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'"id": "file",'&lt;/span&gt; + &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'\n'&lt;/span&gt; + &lt;br&gt;  &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'"value": "File",'&lt;/span&gt; + &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'\n'&lt;/span&gt; + &lt;br&gt;  &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'"popup": {'&lt;/span&gt; + &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'\n'&lt;/span&gt; + &lt;br&gt;    &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'"menuitem": ['&lt;/span&gt; + &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'\n'&lt;/span&gt; +&lt;br&gt;      &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'{"value": "New", "onclick": "CreateNewDoc()"},'&lt;/span&gt; + &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'\n'&lt;/span&gt; + &lt;br&gt;      &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'{"value": "Open", "onclick": "OpenDoc()"},'&lt;/span&gt; + &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'\n'&lt;/span&gt; + &lt;br&gt;      &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'{"value": "Close", "onclick": "CloseDoc()"}'&lt;/span&gt; + &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'\n'&lt;/span&gt; + &lt;br&gt;    &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;']'&lt;/span&gt; + &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'\n'&lt;/span&gt; + &lt;br&gt;  &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'}'&lt;/span&gt; + &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'\n'&lt;/span&gt; + &lt;br&gt;&lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'}}'&lt;/span&gt;;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color: Fuchsia; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;var&lt;/span&gt; xml_menu = &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'&amp;lt;menu id="file" value="File"&amp;gt;'&lt;/span&gt; + &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'\n'&lt;/span&gt; + &lt;br&gt;  &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'&amp;lt;popup&amp;gt;'&lt;/span&gt; + &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'\n'&lt;/span&gt; + &lt;br&gt;    &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'&amp;lt;menuitem value="New" onclick="CreateNewDoc()" /&amp;gt;'&lt;/span&gt; + &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'\n'&lt;/span&gt; + &lt;br&gt;    &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'&amp;lt;menuitem value="Open" onclick="OpenDoc()" /&amp;gt;'&lt;/span&gt; + &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'\n'&lt;/span&gt; + &lt;br&gt;    &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'&amp;lt;menuitem value="Close" onclick="CloseDoc()" /&amp;gt;'&lt;/span&gt; + &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'\n'&lt;/span&gt; + &lt;br&gt;  &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'&amp;lt;/popup&amp;gt;'&lt;/span&gt; + &lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'\n'&lt;/span&gt; + &lt;br&gt;&lt;span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;'&amp;lt;/menu&amp;gt;'&lt;/span&gt;;&lt;br&gt;&lt;br&gt;WhatHappensWhenYouClick_Xml(xml_menu);&lt;br&gt;WhatHappensWhenYouClick_Json(json_menu);&lt;br&gt;&lt;br&gt;&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;function&lt;/span&gt; WhatHappensWhenYouClick_Json(data){&lt;br&gt;&lt;br&gt;&amp;nbsp;  &lt;span style="color: Fuchsia; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;var&lt;/span&gt; j = eval("(" + data + ")");&lt;br&gt;  &lt;br&gt;&amp;nbsp;  WScript.Echo("&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;When &lt;/span&gt;&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;you click the " + j.menu.value + " menu, you get the following options"); &lt;br&gt;&lt;br&gt;&amp;nbsp;  &lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;for&lt;/span&gt;(&lt;span style="color: Fuchsia; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;var&lt;/span&gt; i = 0; i &amp;lt; j.menu.popup.menuitem.length; i++){&lt;br&gt;&amp;nbsp;&amp;nbsp;    WScript.Echo((i + 1) + "." + j.menu.popup.menuitem[i].value &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;                  +  " aka " + j.menu.popup.menuitem[i].onclick); &lt;br&gt;&amp;nbsp; }&lt;br&gt;&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;function&lt;/span&gt; WhatHappensWhenYouClick_Xml(data){&lt;br&gt;&lt;br&gt;&amp;nbsp; &lt;span style="color: Fuchsia; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;var&lt;/span&gt; x = new ActiveXObject( "Microsoft.XMLDOM" );&lt;br&gt;&amp;nbsp; x.loadXML(data); &lt;br&gt;&lt;br&gt;&amp;nbsp; WScript.Echo("When you click the " + x.documentElement.getAttribute("value")&lt;br&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; + " menu, you get the following options"); &lt;br&gt;&lt;br&gt;&amp;nbsp; &lt;span style="color: Fuchsia; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;var&lt;/span&gt; nodes = &lt;b&gt;x.documentElement.selectNodes("//menuitem")&lt;/b&gt;;&lt;br&gt; &lt;br&gt;&amp;nbsp; &lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;for&lt;/span&gt;(&lt;span style="color: Fuchsia; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;var&lt;/span&gt; i = 0; i &amp;lt; nodes.length; i++){&lt;br&gt;&amp;nbsp;&amp;nbsp; WScript.Echo((i + 1) + "." + &lt;b&gt;nodes[i].getAttribute("value")&lt;/b&gt;  +  " aka " + &lt;b&gt;nodes[i].getAttribute("onclick"))&lt;/b&gt;; &lt;br&gt;&amp;nbsp;  }&lt;br&gt; }&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;
When comparing both sample functions, it seems clear that the XML version takes more code and requires a layer of mental indirection as the developer has to be knowledgeable about XML APIs and their idiosyncracies. We should dig a little deeper into this.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;A couple of people have already replied to my &lt;a href="http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=060ca7c3-b03f-41aa-937b-c8cba5b7f986"&gt;previous post&lt;/a&gt; to point out that any good Web application should process JSON responses to ensure they are not malicious. This means my usage of &lt;code&gt;eval()&lt;/code&gt; in the code sample, should be replaced with JSON parser that only accepts 'safe' JSON responses. Given that that there are JSON parsers available that come in &lt;a href="http://www.json.org/js.html"&gt;under 2KB&lt;/a&gt; that particular security issue is not a deal breaker. 
&lt;/p&gt;
&lt;p&gt;
On the XML front, there is no off-the-shelf manner to get a programming model as straightforward and as flexible as that obtained from parsing JSON directly into objects using &lt;code&gt;eval()&lt;/code&gt;. One light on the horizon is that &lt;a href="http://en.wikipedia.org/wiki/E4X"&gt;E4X&lt;/a&gt; becomes widely implemented in Web browsers . With E4X, the code for processing the XML version of the menu document above would be&amp;nbsp; 
&lt;/p&gt;
&lt;blockquote&gt;&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;function&lt;/span&gt; WhatHappensWhenYouClick_E4x(data){&lt;/span&gt;&lt;br&gt;&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;&amp;nbsp;  &lt;span style="color: Fuchsia; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;var&lt;/span&gt; e = new XML(data);&lt;/span&gt;&lt;br&gt;&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;  &lt;/span&gt;&lt;br&gt;&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;&amp;nbsp;  WScript.Echo("&lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;When &lt;/span&gt;&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;you click the " + j.menu.value + " menu, you get the following options"); &lt;/span&gt;&lt;br&gt;&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;&amp;nbsp;  &lt;span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;foreach&lt;/span&gt;(&lt;span style="color: Fuchsia; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;var&lt;/span&gt; m in e.menu.popup.menuitem){&lt;/span&gt;&lt;br&gt;&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;&amp;nbsp;&amp;nbsp;    WScript.Echo( m.@value &lt;/span&gt;&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;+  " aka " + m.@onclick); &lt;/span&gt;&lt;br&gt;&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"&gt;}&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;However as cool as the language seems to be it is unclear whether E4X will ever see mainstream adoption. There is an &lt;a href="http://developer.mozilla.org/en/docs/E4X"&gt;initial implementation of E4X in the engine that powers the Firefox browser&lt;/a&gt; which seems to be incomplete. On the other hand, there is no indication that either Opera or Internet Explorer will support E4X in the future. 
&lt;/p&gt;
&lt;p&gt;
Another option for getting the simpler object-centric programming models out of XML data could be to adopt a simple XML serialization format such as &lt;a href="http://www.xmlrpc.com/spec"&gt;XML-RPC&lt;/a&gt; and providing off-the-shelf Javascript parsers for this data format. A trivial implementation could be for the parser to convert XML-RPC to JSON using XSLT then &lt;code&gt;eval()&lt;/code&gt; the results. However it is unlikely that people would go through that trouble when they can just use JSON. &lt;br&gt;&lt;/p&gt;&lt;p&gt;This may be another nail in the coffin of XML on the Web.&amp;nbsp; 
&lt;/p&gt;
&lt;/div&gt;</description>
      <comments>http://www.25hoursaday.com/weblog/CommentView.aspx?guid=39842a17-781a-45c8-ade5-58286909226b</comments>
      <category>Web Development</category>
      <category>XML</category>
      <category>XML Web Services</category>
    </item>
  </channel>
</rss>