The list of PDC 2005 sessions is out. The website is rather craptacular since I can't seem to link directly to search results or directly to sessions. However thanks to some inside information from my man Doug I found that if you search for "POX" in the the session track list, you'll find the following session abstract

Indigo: Web Services for XML Programmers
If you love XML, you will love this session. Learn how to write services that range from Plain Old XML (POX) to WS-I Basic Profile and WS-* using Indigo. Learn best practices for transforming and manipulating XML data as well as how and when to expose strong-typed views. If you use XML, XSLT, XSD, and serialization directly in your Web services today, this session offers the information you need to successfully migrate your services to Indigo.
Session Level(s): 300
Track(s): Communications

Microsoft's next generation development platforms are looking good for web developers. AJAX support? check. RSS support? check. And now it looks like the Indigo folks will be enabling developers to build distributed applications on the Web using plain old XML (POX) over HTTP as well as SOAP. 

A number of popular services on the Web expose APIs on the Web using POX (although they mistakenly call them REST APIs). In my post Misunderstanding REST: A look at the Bloglines, del.icio.us and Flickr APIs I pointed out that the Flickr API, del.icio.us API and the Bloglines sync API are actually examples of POX web services not REST web services. This approach to building services on the Web has grown increasingly popular over the past year and it's great that Microsoft's next generation distributed computing platform will support this approach.

I spent a bunch of time convincing the Indigo folks to consider widening their view of Web services and thanks to open minded folks like Doug, Don & Omri it looks like I was successful.

Of course, it isn't over yet. The icing on the cake would be the ability to get full support for using REpresentational State Transfer (REST) in Indigo. Wish me luck. :)

Update: I was going to let the Indigo guys break this themselves but I've been told that it is OK to mention that there will be first class support for building REpresentational State Transfer (REST) web services using Indigo.


 

Categories: XML Web Services

July 13, 2005
@ 01:36 PM

I stumbled on Bus Monster last week and even though I don't take the bus I thought it was a pretty cool application. There's a mapping application that I've been wanting for a few years and I instantly realized that given the Google Maps API I could just write it myself.

Before starting I shot a mail off to Chandu and Steve on the MSN Virtual Earth team and asked if their API would be able to support building the application I wanted. They were like "Hell Yeah" and instead of working on my review I started hacking on Virtual Earth. In an afternoon hacking session, I discovered that I could build the app I wanted and learned new words like geocoding.

My hack should be running internally on my web server at Microsoft before the end of the week. Whenever Virtual Earth goes live I'll move the app to my personal web site. I definitely learned something new with this application and will consider Hacking MSN Virtual Earth as a possible topic for a future Extreme XML column on MSDN. Would anyone be interested in that?


 

Categories: MSN | Web Development | XML

Sometime during the past week, the number of downloads of RSS Bandit from SourceForge crossed 100,000 for the most recent release and 300,000 total downloads since the project moved to SourceForge a year and a half ago. This isn't bad for a project that started of as a code sample in an MSDN article a few years ago.

However even though Torsten and I have been improving the original code for about two years now there is still a bunch of work to do. Some of these areas for improvement were recently pointed out by Jack Vinson in his posts RSSBandit Thoughts and More RSSBandit Experience. Below are his comments and responses from me.

"Next unread item" means the oldest unread item, rather than the youngest.  This seems to run counter to most of the aggregators, which present the newest unread item.  Interestingly, the "newspaper" view shows items in reverse chronological order.

I like to read posts in the order they were written especially when a newer post might be a follow up to an older post [as is the case with the latter post by Jack]. In general, I don't think anyone has really complained about this before.

Space bar goes to "next unread," rather than doing a "scroll" in the current reading pane window when viewing in newspaper mode.  If the reading pane has focus, it will scroll there.  When reading a single post, it does scroll as expected.

The behavior of going to the next unread item on hitting space bar predates the newspaper view. The problem we had when coming up with newspaper views was how to integrate both features in a way that was intuitive. The main issue here being that if the space bar scrolls you through the newspaper and you scroll half way down then click somewhere else, do you expect that half the posts from the newspaper view should be marked as read or stay unread? We didn't have a good idea of what the right choice would be so we punted on the problem by not scrolling in the newspaper view when you hit space but instead keeping the old "Next Unread" behavior.

RSS Bandit is much more sensitive to errors in the feeds - more accurately, it tells me that there are errors in some feeds.  They provide a "feed error" folder that lists problems as they arise.  But I see that the feeds it has trouble with work fine elsewhere.  Not good.

Some of the errors we report really aren't worth showing to end users. Things like HTTP timeouts and the like are really transient issues that are more likely due to the user's network than a problem with the feed. We need to do some filtering of these errors in future releases.

I can't get the full text on excerpt-only feeds.  This is probably the biggest loss of moving from the old reader.

If the feed only has excerpts, how do we get the full text of the entry?

I like the newspaper view, when I select a folder (they call them "categories").  Articles are listed in descending order, but are grouped by feed.  I don't quite understand how the feeds are sorted (it's not by the feed with the most recent article is at the top.)  This is a handy mode for reading unread stuff once or twice a day.

I like this feature as well. In the next version we'll be adding the ability to flag or mark items as read/unread from the newspaper view. The feeds should be sorted by the order the appear in the tree view.

RSS Bandit is a stand-alone application, but it uses the Internet Explorer engine to render HTML and XSLT.  By default, it opens links in tabs within the app.  You can also have it open links in the default browser.  I like the tabs in the application.  Now I need to find out if there are keyboard shortcuts for navigating the tabs.

Tabbed browsing is definitely cool. You can navigate between tabs by pressing the Ctrl+Tab or Shift+Ctrl+Tab keys. It's pretty sweet.

The BlogJet This plug-in works in the reading windows.  But the BlogJet This plug-in for IE does not work in the tabs that open within RSS Bandit

Weird. I'm not sure why this is the case but can look into it.

Email this only emails the URL of the post.  I'd rather it give the entire text (HTML) of the item (along with the URL). 

I've kind of wondered about this myself but since no one has ever really complained I never changed it. Are there other RSS Bandit users out there that would prefer that "Email This" sent the body of the post and not just the URL as it does today?

I'm not quite clear on how the user interface is responding. Sometimes I will select a folder/category that has updated feeds, and I will get a view that lists just the new entries. Other times the newspaper will show both new and old entries. The topic list always shows both the new and old.

For search folders the newspaper view shows all the items in the folder while for regular feeds or folders/categories it shows the unread items.

One can create search folders to display ONLY unread messages, for example.
It seems slow, but this is my complaint with many of these apps. Maybe I just read too many feeds. Marking about 80 unread items read (when in the "unread view") took quite a while. Even 28 unread items took 10-15 seconds to "process." This seems to be a memory issue, because the next time I hit "mark all read" in the same usage session, it is much faster.

I agree that it does seem to take far too long for an operation like "Mark All Read" to be performed in a search folder. I'll work on improving the performance of this for the next version.

There seems to be no easy way to tell the software that I'm offline and to not bother downloading.

Go to the File menu and select "Work Offline". We also detect if you select this option directly from Internet Explorer as well.

When it's checking feeds, it eats a lot of resources. So much so, that I can't even scroll the current window, much less select a new feed to read. (Outlook has been doing the same thing to me lately.)

Downloading feeds is pretty CPU intensive for us. Not because of the actual downloading of the files but because we run the algorithm that infers relationships across different posts so we can show them as threaded conversations. I hacked on this code during the last release but only made it slightly less CPU intensive. I've considered just having an option to turn off this feature for the folks who'd rather have a more responsive UI than the threaded conversation feature.


 

Categories: RSS Bandit

July 12, 2005
@ 02:14 PM

My usage of Wikipedia as an online reference has continued to grow over the last couple of months. Although in general most of the entries are well written I've seen a couple of entries that need a bunch of work. Some of these I could actually help with but just don't have time right now. I have a list of these entries and thought it might make sense to post them on my blog on the off chance that someone reading my blog may be interested in updating these entries. 

The entries I'd like to update if I had some time are

All of these are entries that I consider incomplete and believe I could flesh out. Also some of the writing is extremely sloppy but I guess that's what you get when anyone with a pulse can edit an entry. 


 

Categories: Ramblings

A recent comment left in my blog by someone named Nigel states "Not only is Microsoft unable to create technological tidal waves, it constantly misses the waves produced by others. Aren't you guys learning from the past?"

After watching a number of recent trends in the software industry I've been struck by how many of them were originally started by Microsoft but later abandoned only to be picked up by the rest of the software industry a few years later.

EXHIBIT A - XML Syndication (CDF & ActiveDesktop)
Content syndication  using RSS has emerged as the next big thing. We have Apple's iTunes supporting podcasting, VC funds dedicated to funding startups building on RSS and practically every news organization on the Web sporting RSS feeds.

However the basic approach and technology behind RSS and XML content syndication was originally proposed by Microsoft with its Channel Definition Format (CDF) and ActiveDesktop technology. As with most aspects of the push technology fad of the late 1990s, usage of the technology languished. However CDF did inspire Dave Winer and Netscape to become interested in content syndication using XML. In 2000, Dan Brickley sent a mail to the RSS-DEV mailing list entitled RSS-Classic, RSS 1.0 and a historical debt which points out that the syndication formats created by Dave Winer & Netscape owed a lot to CDF.

Of course, the original killer app for RSS has been blogging. Without the rise of blogging it is unlikely that RSS would be as popular as it has become today.

EXHIBIT B - AJAX (DHTML & XMLHTTP):
Another popular trend on the Web today is using DHTML and server callbacks to build Web applications This approach has been recently been named Asynchronous Javascript & XML or AJAX for short.  This trend really became hot after Jesse James Garrett penned his article Ajax: A New Approach to Web Applications which highlighted the power of applications built using this approach.

As Adam Bosworth points out in his post AJAX Reconsidered and Scott Guthrie in his post Atlas Project, the basic building blocks of AJAX (DHTML & the XMLHTTP object) were invented by Microsoft. However as both Adam & Scott point out, the primary focus of building AJAX applications at Microsoft was on targetting business customers with applications like Outlook Web Access. Eventually interest in building rich internet applications at Microsoft swung towards XAML and Avalon and away from DHTML.

Until Google unleashed GMail, Google Maps and Google Suggest on the Web. Now AJAX is the new hotness.  

EXHIBIT C - Web APIs & Web 2.0 (Hailstorm)
If you hang around web development pundits long enough, you'll eventually hear the phrase "Web 2.0". This is a monicker for the increasing trend of treating web sites as web platforms. Every cool website has APIs these days. At Google Web APIs page you can find APIs for Google Maps, Google Search and Google AdSense. At the Yahoo! Developer Network you can find APIs for Yahoo! Maps, Yahoo! Search, Flickr & Yahoo! MyWeb. On the Amazon Web Services page you can find APIs for creating and searching listings on Amazon. At the eBay Developer Program you can find the same for eBay. Smaller sites also have APIs as are evidenced by the del.icio.us API, Bloglines API or the 43 Things API. Then there are all the weblogging APIs and RSS feeds out there that allow users to create and consume content outside of the traditional window of the Web browser.

Turning web sites into web platforms that can be interacted with from any platform running on any device was a key part of the original vision behind Microsoft's Hailstorm initiative. However there were other parts of the initiative that didn't sit well with potential customers and it was quietly abandoned.

LESSONS LEARNED?
I'm not sure whether the aformentioned trends count as "technological tidal waves" but they are definitely significant to how developers and end users utilize the Web. In all three situations Microsoft started with a vision that was quite innovative, hit some roadblocks and scrapped initiatives instead of changing tactics. Eventually our competitors learned from our mistakes and make us look late to the party when we finally get over our initial failure enough to try again.

I suspect that in a few years, a fourth example that should be added to this list would be comparing Passport to efforts such as the Liberty Alliance. Then again, from reading Kim Cameron's blog it seems that we are trying to switch tactics in the digital identity space instead of giving up.  That is a welcome change.

 

A few months ago I wrote a blog post entitled What Blog Posting APIs are supported by MSN Spaces? which explained the various options we saw in providing an API that would allow desktop tools and web applications interact with MSN Spaces programmatically. Since I wrote that post I've had a number of people inquire about when we'd provide an API and what form the API will take.

Our current plan is to provide an implementation of the MetaWeblog API with some methods from the Blogger API while using HTTPS/SSL for security. These APIs are widely supported by various weblog applications and already have a vibrant developer ecosystem around them. The API will enable people to create, edit and delete posts on the blog in their space. One of our goals is to ensure that bloggers who are already using blog posting tools such Blogjet or w.bloggar can use them to interact with MSN Spaces when we launch the API without having to upgrade or switch clients. Similarly web sites which allow users to post to their blogs such as Flickr and Zoto should be able to support our API without making significant changes.

The launch date of the API is yet to be determined but will be in the near future. In the meantime, we'd like to get developers of blog posting tools and web applications that would like to integrate with MSN Spaces into a beta program to test our implementation of these APIs. If you are a developer of a blog posting tool or web application that wants to use our API and don't mind signing an NDA then you should send me mail at dareoATmicrosoftDOTcom to get into our beta program.  

If you are interested in us providing other APIs, such as allowing programmatic access to the photo albums or the various lists on a space, I'd also like to hear from you. Please send me mail about your scenario and what platform/device your application will be running on.


 

Categories: MSN

My friend Kitty has been working on a bunch of cool projects at work over the past year. She was instrumental in the recently announced PC-to-Mobile Instant Messaging Between MSN Messenger and Vodafone Messenger. Her most recent project as part of our team has been in working with other folks at MSN to get http://rockstar.msn.com/ launched.

The details are in the recent press release MSN Launches Official Web Site for Mark Burnett Productions’ “Rock Star: INXS,” Giving Viewers New Ways to Engage With Reality Show which is excerpted below

MSN is giving fans new ways to take part in the reality-show craze by launching http://rockstar.msn.com , the official Web site for Mark Burnett Productions’ "Rock Star: INXS." The show, which aims to find a new lead singer for the multiplatinum rock band INXS, premieres July 11 on the CBS Television Network in the U.S... Rockstar.msn.com extends and enhances “Rock Star: INXS” by giving fans unique opportunities to connect with the contestants and with one another
...
Beginning July 11, viewers can do the following:

  • Vote for their favorite contestants through http://rockstar.msn.com and MSN® Messenger, which allows people to vote while chatting with friends about the show in real time. Wireless voting also will be available.

  • Watch exclusive "Rock Star: INXS" video not seen on TV, available only through MSN Video.

  • Watch streaming video of contestant performances on MSN Video to relive the highlights and the lowlights before casting a vote.

  • Purchase the contestant performances on MSN Music. Not only can fans download and own their favorite musical moments from the show, downloads of the original artists’ versions of contestant performance songs also will be available for purchase on MSN Music.

  • Read contestant blogs on MSN Spaces that tell fans about everything from their backgrounds to what it's really like onstage, offstage and backstage.

  • Chat with other "Rock Star: INXS" fans through MSN Messenger and download special "Rock Star: INXS" emoticons, dynamic display pictures, backgrounds and winks to spice up their instant messaging (IM) conversations.

  • Play rock-and-roll trivia games created by Cranium Inc. for MSN Encarta®.

  • Sign up for MSN Alerts and a weekly newsletter that give fans the scoop on everything related to "Rock Star: INXS."

  • View weekly "Rock Star" photo galleries and rock-and-roll fashion features.

  • Buy merchandise featured on "Rock Star: INXS" through MSN Shopping.

  • Get weekly fashion tips from the "Rock Star: INXS" official show stylist.

I've been watching a lot more reality TV than I care to admit so it is fun to see that lots of us at MSN are also into this guilty pleasure. Now if only we'd come up with an MSN spin on Being Bobby Brown then my reality TV fix would be complete.


 

Categories: MSN

Since Sam Ruby asked, I feel I must oblige. There have been a bunch of posts in Sam's blog pointing out that the RSS parser used by Apple's iTunes handles invalid RSS feeds which in turn encourages content producers to publish invalid RSS feeds which only work in iTunes.

In the post entitled Insensitive iTunes Sam wrote 

Mark Pilgrim: it appears that iTunes uses a real, draconian, namespace-aware XML parser... except that namespaces are case-insensitive.

What’s worse, is that the high profile Disney The Gears Behind the Ears feed appears to be depending on this functionality, as well as on other non- standard element definitions.

There are a couple of more issues with the iTunes parser mentioned by Mark Pilgrim in the comments to that post. The reason this is actually an issue at all is spelled out by Mark in another response to Sam's post where he wrote

Am I the only one who doesn’t think this is such a big deal?

Apple is an 800-lb. gorilla in this space (at least until Microsoft releases an RSS-enabled IE in Longhorn).  iTunes is to podcasting as Internet Explorer is to HTML.  RSS interoperability, at least as far as podcasting goes, now means “works with iTunes.”  Thousands of people and companies will begin making podcasts that “work with iTunes,” but unintentionally rely on iTunes quirks (e.g. Disney’s incorrect namespace).  This in turn will affect every developer who wants to consume RSS feeds, and who will be required to emulate all the quirks of iTunes to remain competitive.

Apple has effectively redefined the entire structure of an RSS feed, added multiple core RSS elements, made all RSS elements case-insensitive, made XML namespaces case-insensitive, created a new date format, made several previously required attributes optional, and created a morass of undocumented and poorly-documented extensions... to what was already a pretty messy format to begin with.

Case in point: my Universal Feed Parser, which already has 2751 test cases and is so incredibly liberal that it can parse an ill-formed EBCDIC-encoded RDF feed with regular expressions, will require hundreds of new test cases to cover all the schlock that iTunes accepts.  And I’m one of the lucky ones.

The supreme irony of all this is that I remember Dave Hyatt (Apple Safari developer) bitching and moaning about all the work he had to do to make Safari emulate the buggy, undocumented behavior of Internet Explorer, and how the world would be so much better if only everything used XML and everyone implemented draconian error handling.  Never mind the fact that the vast majority of problems that iTunes creates have nothing to do with XML well-formedness; iTunes doesn’t even require well-formed XML in the first place.  Utopia, it seems, will have to wait another decade.

Just like the browser wars I suspect this is going to get a lot worse before it gets any better. Hopefully the folks working on RSS at Apple [and at Microsoft] are paying attention to this discussion and will do the right thing.

The main problem is that every RSS reader is "liberal" to some degree. The problem that causes is that aggregator developers end up being asked to be bug compatible with some other popular RSS reader. I get complaints that RSS Bandit is more strict than RSS readers like Sharpreader all the time but often resist making changes to copy every quirk in other RSS readers. Once an RSS reader rises to dominance, the definition of what it means to be a valid RSS feed won't be what is in the spec but will be whatever that reader supports. This is what often happens in the software industry from web browsers to C compilers. It's great to see Sam fighting to prevent this from happening in the RSS space and his Feed Validator has gone a long way in preventing this from happening. I can only hope that the iTunes folks realize that it is best for everyone if they favor spec compliance to being liberal in what they receive.


 

Yesterday while browsing comments on Slashdot I found a link to an article at LinuxToday on Tim O'Reilly's Open Letter: Rethinking the One-Click Patent which contains the following excerpt from a posting by Tim O'Reilly on the Amazon 1-Click patent controversy

People in many areas of commerce, not just on the Web but also TV and radio (as evidenced by some of our prior art submissions), have put a lot of thought into making the shopping experience quicker and easier. And yet none of these folks really managed to simplify it to the same degree that Amazon did with 1-Click. In the end, we did not have a winner, and it doesn't look as if the prior art submitted can "knock out" the 1-Click patent...So I want to offer Jeff something of an apology. At the same time, at the risk of appearing a "sore loser," I want to reiterate that my fundamental issue with Amazon was never the specific claims of the 1-Click patent. Even if Amazon did create a genuine e-commerce innovation, I maintain that it was still a mistake for them to patent it.

I remember the hubbub on Slashdot about Amazon's 1-Click patent and Tim O'Reilly's bounty for prior art but don't remember this ever getting posted. So it seems that despite all the claims of "obviousness" from the Slashdot crowd, no prior art could be found. I guess it is true that all innovations look obvious in hindsight.

Another interesting data point is this post on Slashdot about the various patent lawsuits Amazon is currently fighting. Lots of people like to polarize the debate about software patents but in truth the situation isn't as cut and dried as folks on either side of the debate like to make it seem.


 

It's been hard to escape coverage of the Live 8 concerts since that's all MTV showed over the weekend and the news channels have been covering it in the mornings while I work out. Events like Live 8 always make me end up feeling ambivalent. One the one hand it is great to see people trying to help with the problems people are facing in Africa and on the other it perpetuates the notion that Africa is the world's charity case. After some consideration, I definitely think my feelings about the concerts are mostly positive. 

I've seen some blog posts complain that not enough African artists were included in the concerts and others criticising the concerts by asking what good will a rock concert end up influencing the members of the G8.

My thoughts are similar to those David Weinberger expressed in his post Live 8: Cause or fashion statement? where he wrote

For me it comes down to this: I can't imagine that people going to a big rock concert will change the mind of any G8 leader, but if Live 8 makes debt relief trendy, I'm all for it. After all, trendiness seemed to have an effect on ending Apartheid in the 80s.

In a similar vein I echo the sentiment's from the post in Brian's Black Star Journal entitled Development issues and celebrities where he wrote  

I remember back when Princess Diana got involved in the landmine question. I wondered how those ordinary activists felt. They worked on the issue for years to little effect but then this fancy royal flies in and suddenly it's the cause célèbre du jour.

But on the other hand, at the end of the day, the Ottawa treaty banning landmines was signed. Most countries (not including the US) do not use landmines anymore. Is it really important who gets credit? As an activist, is it about you or the cause? Do you think any anti-landmine activist would say, "I think we should revoke the Ottawa treaty because it wouldn't have passed without star power"? I hope not. If so, they are not real activists.

Despite these sentiments I agree with the economists and aid groups cited in variousnews storiesabout Live 8 that at the end of the day what African nations need more than aid and debt cancellation is better governance and to participate more fully in international trade. Better governance simply cannot be overemphasized. In certain nations African governments have really, really screwed things up. For many nations, without regime change, giving more aid is just sending in good money after bad.

Unfortunately, there are no easy answers.


 

Categories: Ramblings