Alex Russell has a blog post entitled ajaxWrong where he writes

Apparently a new XUL app called “ajaxWrite” was just launched. I think this thing is going to be my poster child for what’s wrong with single-renderer markup languages from now on. It might be a fine app, I haven’t used it long enough to have a strong opinion, but its marketing is truly reprehensible. I’m sure someone assured Michael Robertson that they couldn’t launch a web-ish app without tacking the word “ajax” in the title and the folks with sense were shouted down. A pity.

This thing is appropriating the necessarily amorphous terminology of “Ajax” for an implementation that is directly at odds with why Ajax is an important technology. A XUL app being billed as “Ajax” is just as laughable as a Flex or XAML app suddenly growing the same moniker. That it’s Mozilla’s walled-garden language doesn’t really excuse the gaffe.

I find this quite hilarious. I would have never thought of sprinkling technology buzzwords in the name of my product even though my product didn't use said technology. I guess that's why I'm not in marketing.


Thanks to numerous reports from RSS Bandit users it has come to my attention that the Atom feeds provided by Google's Blogger are invalid and in many cases aren't even well-formed XML. Please fix this. I'm tired of dealing with threads like Blogspot feeds - XML Failure in our support forums.

If you'd like an example of what is wrong with your feeds. Click on which shows the results of validating the feed for Derek Denny-Brown's blog. Below is the list of errors returned

This feed does not validate.

  • line 4, column 0: This feed uses an obsolete namespace [help]

    <feed xmlns="" version="0.3" xml:lang="en-US">
  • line 4, column 0: Unexpected version attribute on feed element [help]

    <feed xmlns="" version="0.3" xml:lang="en-US">
  • line 7, column 0: type attribute must be "text", "html", or "xhtml" [help]

    <title mode="escaped" type="text/html">only this, and nothing more</title>
  • line 7, column 0: Unexpected mode attribute on title element (7 occurrences) [help]

    <title mode="escaped" type="text/html">only this, and nothing more</title>
  • line 8, column 0: Undefined feed element: tagline [help]

    <tagline mode="escaped" type="text/html">irregular eccentic eclecticisms, di ...
  • line 11, column 0: Undefined feed element: modified [help]

  • line 12, column 0: Unexpected url attribute on generator element [help]

    <generator url="" version="5.15">Blogger</generator>
  • line 13, column 0: Undefined feed element: info [help]

    <info mode="xml" type="text/html">
  • line 4, column 0: Missing feed element: updated [help]

    <feed xmlns="" version="0.3" xml:lang="en-US">
  • line 22, column 0: Undefined entry element: issued (6 occurrences) [help]

  • line 23, column 0: Undefined entry element: modified (6 occurrences) [help]

  • line 24, column 0: Undefined entry element: created (6 occurrences) [help]

  • line 27, column 0: type attribute must be "text", "html", or "xhtml" (6 occurrences) [help]

    <title mode="escaped" type="text/html">You call that Democracy?</title>
  • line 36, column 0: Missing entry element: updated (5 occurrences) [help]

  • line 153, column 156: XML parsing error: <unknown>:153:156: unbound prefix [help]

    ... S-X's niceties. If I knew people on the <st1:place st="on">Vista</st1:pl ...

In addition, this feed has issues that may cause problems for some users. We recommend fixing these issues.

  • line 5, column 134: is not a registered link relationship (2 occurrences) [help]

    ... hing more" type="application/atom+xml"/>
  • line 7, column 66: text/html type used for a document fragment [help]

    <title mode="escaped" type="text/html">only this, and nothing more</title>
  • line 4, column 0: Missing atom:link with rel="self" [help]

    <feed xmlns="" version="0.3" xml:lang="en-US">
  • line 18, column 150: service.edit is not a registered link relationship (6 occurrences) [help]

    ... emocracy?" type="application/atom+xml"/>
  • line 27, column 63: text/html type used for a document fragment (6 occurrences) [help]

    <title mode="escaped" type="text/html">You call that Democracy?</title>
  • line 29, column 0: application/xhtml+xml type used for a document fragment (6 occurrences) [help]

    <div xmlns="">

Thanks for listening.


March 25, 2006
@ 04:31 PM

In his post Going Down To The Crossroads… Don Box uses the terms Lo-REST and Hi-REST to describe classes of services on the Web. Specifically he writes

This one is a bit tougher to catalog, because REST is a fairly subjective (and sometimes divisive) term.  To get a more accurate picture of what we've done so far, I'll break this category in two: Lo-Rest, which is the use of HTTP GET (or equiv) for information retrieval/query, and Hi-Rest, which is characterized by the use of HTTP PUT and DELETE (or equiv) for doing update. 

Although I agree that there is a difference in theory versus practice in how various services that claim to be RESTful are implemented, I'm not sure I agree with Don's definitions. The way Don's definitions read, it looks like the categories of RESTful services are those that only perform information retrieval using GET such as RSS feeds and does that use a wider gamut of HTTP verbs such as the Atom Publishing Protocol. However if you read further into Don's post it seems that he means something else, especially when he writes

With the exception of our DAV support (listed above), most Microsoft technologies that update stores over HTTP tunnel server-specific update requests through HTTP INVOKEPOST the way the rest of the apps on the web do. Hence the need to distinguish between Hi-Rest and Lo-Rest

So now it seems Don's definitions of Lo-REST and Hi-REST refer respectively to applications which misuse HTTP verbs and those that use HTTP correctly. I don't think it is a good idea to call the latter class of applications RESTful because it muddies the term. In my post Misunderstanding REST: A look at the Bloglines, and Flickr APIs I wrote about APIs on the Web that claimed to be RESTful but actually were just Plain Old XML over HTTP (POX/HTTP) services not RESTful services. I prefer to use the term Plain Old XML (POX) to describe these services because it is closer to the truth. These services aren't much different from SOAP-based web services in how they abuse the Web, the only difference is that they have eschewed the baggage and complexity of being based on WS-* technologies.

Once one takes a hard look at the Web, it is hard to find truly a lot of RESTful services. Many misuse GET by not only using it for information retrieval but also for updates and deletes (e.g Bloglines sync API and the API). Others simply tunnel all updates, deletes and state changes through POST (e.g. the Flickr API). In practice, the verbs used primarily on the Web are GET for information retrieval and POST for everything else. WebDAV is probably the only widely deployed exception to this rule. 

Don's definitions can probably be altered a little to become

Lo-Rest, which is the use of HTTP GET (or equiv) for information retrieval/query and POST for everything else, and Hi-Rest, which is characterized by the use of distinct HTTP methods to perform distinct operations on resources, for example using HTTP PUT and DELETE (or equiv) for doing update.

This definition draws a distinction between REST as it is practiced on the Web today (i.e. Lo-REST) and REST as it should be practiced on the Web today (i.e. Hi-REST).

A couple of other folks also disagreed with Don's definitions. They include Jonnay in his post Hi-Rest and Lo-Rest, two broken halves of the tower of Babylon and Dimitri Glazkov Lo-REST: This is your REST on Crack who both argue that Lo-REST does not satisfy the REST architectural style. I agree with them, however I also think that it is fair to draw a distinction between what actually exists on the Web today and what should exist on the Web. 


Categories: XML Web Services

From the press release Microsoft Realigns Platforms & Services Division for Greater Growth and Agility we learn

REDMOND, Wash. — March 23, 2006 — Microsoft Corp. today announced a broad restructuring of its Platforms & Services Division (PSD) to better align existing Windows® and MSN® assets with Microsoft’s overall Live strategy, and to ensure the company delivers a full range of software-based services to consumers and businesses around the world.

"As we launch new Windows Live™ services and finalize Windows Vista™, we’re looking ahead to how we deliver the best possible experience for customers, now and into the future. Today we are enhancing the leadership team and structure across the division to ensure we have the right organization to support our technology vision,” said Kevin Johnson, co-president of PSD.

Johnson said three goals drove the changes:

Advance Microsoft’s software plus services and Live strategy

Increase Microsoft’s agility in delivering innovation to customers

Target new growth opportunities related to Windows Live services, online advertising and solutions in emerging markets

The new PSD organization will be made up of eight new and existing groups: the Windows and Windows Live Group, led by Steven Sinofsky, senior vice president; the Windows Live Platform Group, led by Blake Irving, corporate vice president; the Online Business Group, led by David Cole, senior vice president; the Market Expansion Group, led by Will Poole, senior vice president; the Core Operating System Division (COSD), led by Brian Valentine, senior vice president; the Windows Client Marketing Group, led by Mike Sievert, corporate vice president; the Developer and Platform Evangelism Group, led by Sanjay Parthasarathy, corporate vice president; and the Server and Tools Business Group, led by Bob Muglia, senior vice president.

One comes to expect a reorg every year at Microsoft so this one was about due. Steven Sinofsky comes off as a great guy from his blog and the Office product team runs as a pretty tight ship so this can only be good for Windows Live. Of course, I won't be reporting up through him. Instead I'll be part of Blake Irving's Windows Live Platform Group which will provide the back-end infrastructure services, platform capabilities and global operational support for services being created in Windows Live, Office Live, and other Microsoft and third-party applications that use the Live platform.

So I'm still going to be doing pretty much the same thing I've always been doing. Exciting.


Categories: Windows Live

Due to some recent releases by one of our competitors I've been thinking about branding again. Does anything below strike you as odd or at least interesting?

  1. Google

  2. Yahoo

  3. Microsoft

As you can tell, I'm still not sure what the difference is meant to be between stuff branded MSN and stuff branded Windows Live besides confusing the heck out of people.

Categories: Windows Live

One of the things that was announced at MIX '06 this week was the launch of the Windows Live developer center at If you are a developer interested in building applications that use Windows Live services and applications you should definitely check it out.

Expect more in the coming months.


Categories: Windows Live

I have found James McGovern's post More Thoughts on Ruby and Why it isn't enterprise ready! to be quite entertaining reading. The problem with blogging is that sometimes it is so easy to publish your thoughts that you don't stop to think about what you are writing. Instead of picking at James McGovern's arguments myself, I'll post a summary of his tirade made by David Heinemeier Hansson in his post Boy, is James McGovern enterprise or what!

Allow me to summarize a few choice bits from McGovern's incomprehensibly convoluted ranting. You may not have the patience to finish through his tirade:

  • Productivity doesn't matter any more (8), but even if it did, there's no way Ruby could deliver more of it because sales people have used the word productivity to lie to me in the past (11).
  • Whatever we're doing now is already the right thing (2) until the big consulting firms tell us that something else is the right thing (3). And they're not going to tell us about Ruby because they can't make money off it (7).
  • None of my fellow Enterprise Architects talk about Ruby (5) because they're too busy to think about their business to worry about new technology (4).
  • All magazines that write about Ruby are bad (4) and all books written about Ruby are bad (1). If other people say they're good, it's because they were paid to say that (12).

The funny thing about a lot of the people who claim to be 'Enterprise Architects' is that I've come to realize that they tend to seek complex solutions to relatively simple problems. How else do you explain the fact that web sites that serve millions of people a day and do billions of dollars in business a year like Amazon and Yahoo are using scripting languages like PHP and approaches based on REST to solve the problem of building distributed applications while you see these 'enterprise architect' telling us that you need complex WS-* technologies and expensive toolkits to build distributed applications for your business which has less issues to deal with than the Amazons and Yahoos of this world?

I was chatting with Dion Hinchcliffe at the Microsoft SPARK workshop this weekend and I asked him who the audience was for his blog on Web 2.0. He mentioned that he gets thousands of readers who are enterprise developers working for government agencies and businesses who see all the success that Web companies are having with simple technologies like RSS and RESTful web services while they have difficulty implementing SOAs in their enterprises for a smaller audience than these web sites. The lesson here is that all this complexity being pushed by so-called enterprise architects, software vendors and big 5 consulting companies is bullshit. If you are building distributed applications for your business, you really need to ask yourself what is so complex about the problems that you have to solve that makes it require more complex solutions than those that are working on a global scale on the World Wide Web today.

NOTE: This post isn't pro-Ruby or not since I have NOT used the language or any of its platforms.


Categories: Web Development

In his post Microsoft Goes Social discusses some of the design decisions we made when adding Social Networking to MSN Spaces. He questions the decision to not use people's instant messaging contact list as their public social network. Specifically he asks

2.  Dare warns about automatically converting a Buddy List into a social network.  Hmmm - we’re about to find out how that works with AIM.  This notion of the Buddy list as social network tantalizes me - the results will be fascinating.  Dare claims it will be a 'privacy nightmare'. I don’t necessarily agree with him - but (as I said above) we're about to find out if this is true - in spades.

I can describe why this unsettles users by painting out a scenario. Now imagine that I get contacted by a recruiter for one of our competitors by email and she asks for my IM contact info so she can give me the sales pitch on why I should switch jobs and perhaps figure out an interview schedule. When I get the request to add her to my contact list, what I have agreed to is for her to be able to talk to me online and see my online presence. If later on the provider of the instant messaging service adds a feature that exposes people's relationships to the public then my relationship with this recruiter would be outted even though I never agreed to be listed as their "public friend".

Of course, nothing stops the recruiter from just blogging about our relationship or creating a blogroll of "people I'm trying to poach from Microsoft" but that's just her word against mine. With publicly exposing her social network, it is now confirmed that we have some sort of relationship. That's not what I agreed to when I accepted her as an IM contact.

A lot of this is gut feel from a lot of us who use and build these products. However I'd rather err on the conservative side than piss off our users in a crass attempt to increase the usage of one of our features.


Categories: Social Software | Windows Live

Although I won't be attending MIX '06 this week, I am interested in what people think of some of the announcements that will be made around building Web platforms with Microsoft technologies and various Windows Live announcements this week. I am also surprised to see that a bunch of talks are from external folks from companies like Yahoo! and Amazon which is nice. 

Some of the sessions I'd attend if I was in Las Vegas would be

Speaker(s): Scott Isaacs
Explore the challenges and lessons learned developing the Windows Live and Gadgets Web client frameworks powering Windows Live, Hotmail (Kahuna beta), Spaces, and more. This technical talk presents design and architectural considerations for building interactive AJAX-like sites. See how componentization, network management, accessibility, page composition, and more impact the design and engineering of your Web application.

Speaker(s): Brian Arbogast, Ken Levy
Windows Live provides unique opportunities for developers from hobbyists to large ISVs to build social networking applications on top of the largest contact and address book database on the Internet. Developers can build these applications utilizing Windows Live services such as instant messaging, search, location based mapping, blogging, gadgets, and others. These can be AJAX style Web applications, run within Messenger or other rich applications. The Windows Live Platform provides several business models based on revenue sharing and paid placement. Brian Arbogast, Vice President of the Windows Live Platform, discusses and demonstrates the latest developments of the Windows Live platform.

Speaker(s): Doug Purdy, Clemens Vasters
Your site is more than a collection of pages; it's a programmable platform that your users are leveraging in innovative new ways. Scraping, mashups, and RSS mean that your site is already a service, and the fastest, most flexible way to build that service is with Windows Communication Foundation (WCF). With WCF you can expose your site over a whole host of different transports and formats, ensuring that clients of all kinds can access your content. Use WCF to take your site to the next level and provide an optimized experience for all of your users.

DIS004 - Beyond the Banner: Advertising on the Web and Where It’s Going
Speaker(s): Ron Belanger (Yahoo!), Bant Breen (Interpublic Group), David Jakubowski, Jeff Lanctot (Avenue A), Jed Nahum, Jason Rapp (New York Times), Jennifer Slegg (JenStar)
Advertising revenues in traditional venues like print magazines and television are declining, while online advertising is exploding. Advertisers want richer online ad platforms. Content providers want ads that maximize revenue without negatively impacting the user experience. What role will advertising play in "podcasting," "video blogging" and other emerging media? Join a panel of industry luminaries to discuss these and other issues.

Speaker(s): Jeff Barr (Amazon)
Amazon subsidiary is leveling the search playing field. For the first time, developers looking to build the next "big thing" in search or an ultra custom search engine have access to the 300 terabytes of Alexa crawl data, along with the utilities to search, process, and publish their own custom subset of the data-all at a reasonable price. Developers no longer need a million dollar budget or to reinvent the wheel designing search algorithms, to be able to build their own search engines or create customized Web services based on data from the Alexa crawl. As a full-service Web analysis and Web service publication platform, the Alexa Web Search Platform should allow any user with an Internet connection to access Web content on a large scale and provide new services or applications to the online community. Jeff Barr provides an overview of the Alexa API and shows developers and designers how to get on the new, leveled search playing field.

Speaker(s): Jeffrey McManus (Yahoo!)
Yahoo! is opening up to developers using Web services. Today our services enable developers to access Yahoo! properties as diverse as Web search, maps, Flickr, comparison shopping, and many more -- and we're making more available all the time. In this session you'll learn how you can incorporate Yahoo! Web services in your application or Web site, and see a demonstration of integration between Yahoo! Web Services, the new Yahoo! Presentation Library, and ASP.NET "Atlas".

Focus(s): Architect, Developer
Session Type(s): Hands-On Lab
In this lab, you'll create a gadget that mashes up concert event info from with images from

Speaker(s): Alex Daley
As content and services are delivered to customers in more locations, on more devices, users are expecting information to be more tailored to their context and more relevant not to just "what" they are looking for, but "where". Microsoft's Alex Daley hosts this session exploring ways to reach customers with location relevant information, building richer experiences that make your site or application more "sticky" and fulfilling for users. Alex covers using Microsoft's Virtual Earth development technologies to build applications from store locators to location-based social networking to customized vertical search experiences.

BTB025 - Developing Interactive Applications Using Windows Live Robots, Activities, and Alerts
Speaker(s): Pierre Berkaloff (Conversagent), Campbell Gunn, John Kim (Conversagent)
Learn how to create rich and deeply integrated applications leveraging the 200 million worldwide Windows Live Messenger users. Windows Live Messenger offers a unique platform for building applications that provide a shared experience, such as joint shopping, multi-user gaming, customer support, and more. Windows Live Messenger applications can use a combination of features including BOTS, Alerts, and Activities (which is the application window within Messenger), as well as social networking. Learn about the business opportunities exposed by the Windows Live Messenger platform and details on how to build applications that capitalize on these opportunities.

Speaker(s): Brad Abrams, Rick Spencer
This session explores best practices for designers and developers who are tackling the real challenges of building AJAX-style user experiences on the Web. Explore a few key principles that are the hallmark of the modern web from developers on the Microsoft Live and "Atlas" teams. These principles will be illustrated with real-world examples from the Windows Live Local and you will learn how they are easy to leverage with Atlas. Discover how the "Atlas" controls and components remove the complexity from designing rich, interactive experiences, and help you build AJAX-style applications more quickly.

Speaker(s): Garrett Serack
"InfoCard" can bring a new level of security to authenticating users to your site. In this session, take a deep developer look at how this can be achieved. A traditional forms-based authentication implementation is converted to use InfoCard, along with explanations of the Web services, protocols, and security considerations that one needs to understand.

Speaker(s): David Jakubowski, Jed Nahum
adCenter is the next generation of online advertising that will allow you to conveniently plan, execute, and adjust your online advertising programs. Get the insider view of our current search advertising pilot in the U.S., and a preview of the innovations we're testing at the Microsoft adLabs.

Definitely a diverse set of talks. Check them out and let me know what you learned.


Categories: Trip Report | Windows Live

Tim Bray has written some good food for thought in his post WS-Gartner where criticizes some of the party-line praise of WS-* technologies as the future of building services on the Web and calls for vendors to provide better tooling and developer support around simple XML/HTTP/REST technologies.

Don Box has written two good responses from the perspective of a Microsoft employee. The first Going Down to the Crossroads outlines the various ways Microsoft supports working with XML, HTTP and REST. One thing I particularly like about Don's post is the following excerpt

To get a more accurate picture of what we've done so far, I'll break this category in two: Lo-Rest, which is the use of HTTP GET (or equiv) for information retrieval/query, and Hi-Rest, which is characterized by the use of HTTP PUT and DELETE (or equiv) for doing update.

I like the distinction between Lo-Rest which I've also seen people call Plain Old XML over HTTP (POX/HTTP) and Hi-Rest which is actually rare in practice with notable examples being WebDAV and the Atom Publishing Protocol. Don isn't the first person I've seen make this distinction using this terminology. Nelson Minar of Google was the first person I've heard make the distinction between Hi-Rest and Lo-Rest In his talk Building a New web Service at Google at last year's O'Reilly Emerging Technology Conference.

Don's second post in response to Tim Bray is entitled HTTP, XML, REST and $100 and he uses what has become a common tactic by Microsoft bloggers to get prioritizations of feature requests from our users. He asks how Microsoft should better support building RESTful web services including better support for HTTP and XML. Specifically he wrote

You have $100 engineering dollars to spend. No matter how many millions we'd actually wind up spending, we use $100 as an easy number for people to keep in their heads.

There are well over $100 dollars worth of features you want.

The challenge is in determining how to spread the $100 in a way that produces with the most aggregate value.

So how would you allocate resources?  Here's my  first stab with not a lot of deep thinking [after all, I'm still in Las Vegas] ;)

  • $40 - better support for consuming XML in the browser. Specifically Microsoft should follow the lead of Mozilla and implement E4X in the browser.
  • $30 - first class support for building RESTful (i.e. HTTP-centric) web services in Windows Communication Foundation [formerly Indigo]. It should be just as easy for a developer to build a service that exposes SOAP/WSDL as it should be to build one that exposes PlainOldXML, supports the core HTTP methods and some of the more esoteric but useful aspects of HTTP such as content negotiation which no one really supports well today. My ideal scenario is that it should be brain dead easy for me to build a WebDAV server on top of WCF/Indigo. Of course, I assume that supports for multiple serializations beyond XML such as JSON or binary formats is also a given.
  • $20 - add the functionality in XLinq to C# as well as VB.NET. I think it would be really dumb that in the next version of Visual Studio I'm going to have to switch languages to VB.NET if I want to use a programming language that has integrated support for XML.
  • $10 - add support for some non-W3C XML technologies in Microsoft's core XML stacks (i.e. MSXML and System.Xml). I'd love to see native support for RELAX NG or Schematron in Microsoft tools.

I'd write more but my girlfriend is giving me that look that says I've already spent too much time in front of the computer. :)


Categories: XML Web Services