August 31, 2004
@ 05:52 AM

This release fixes a number of bugs in v1.2.0.114. Major features will show up in the next release as described in the RSS Bandit product roadmap.

Download the installer from here.  Differences between v1.2.0.117 and v1.2.0.114 below.

UPDATE: v1.2.0.117 replaces v1.2.0.114 SP1

  • FEATURE: French translation added.

  • FEATURE: Double clicking on an item in the list view opens the link in a new browser tab.

  • FIXED: In certain situations RSS Bandit crashes with the following error message 'StartMainGui() exiting main event loop on exception.'

  • FIXED: Mouse wheel now supported in embedded Web browser pane.

  • FIXED: Changing the maximum item age for a feed does not refresh the feed and download old items still available in the feed.

  • FIXED: Synchronizing feed lists caused exceptions if categories were renamed, moved or deleted.

  • FIXED: Feeds that use 302 redirects with relative URIs as the location no longer result in 'Unsupported URI format' errors

  • FIXED: Fetching feeds behind a proxy no longer results in 'The remote server returned an error: (407) Proxy Authentication Required.' when the feed references a DTD

  • FIXED: Duplicate entries when the title of an item changes

  • FIXED: Relative URIs in images and links show up with about:blank as their base URI for certain XSLT templates.

  • FIXED: Space bar sometimes does not always move to the next unread item

  • FIXED: Environment variables are not accepted within Options|Remote Storage configuration protocol "File Share"

  • FIXED: Toolbars don't remember that their visible state on restart when RSS Bandit closed via system tray context menu

  • FIXED: Feeds returning HTTP 410 status code now disabled automatically and report the error "The requested resource is not longer available"


Categories: RSS Bandit

August 30, 2004
@ 04:21 PM

Today I was going to release the RSS Bandit v1.2.0.114 service pack 1. However I will not be able to because even though everything worked fine when testing the application the moment I decided to build the installer and run it for the first time on my machine it crashed. The only difference I could tell was that while testing it I created 'Debug' builds but for the installer I created a 'Release' build. Even more annoying is the exception that occurs. It seems having an empty static constructor is causing a TypeInitializationException but only in 'Release' builds.

I hate this shit. I'll have to look into this when I get back from work this evening.

On the positive side, it looks like the RSS Bandit road map is on schedule. SP1 for v1.2.0.114 is basically done once I can track down the TypeInitializationException issue and then an installer should show up shortly afterwards. We've started the refactorings needed for NNTP support this weekend and should be done later this week. It's funny, I used to think the code was well factored because the infrastructure for supporting multiple  syndication formats was straightforward and flexible. Then supporting NNTP comes along and a lot of the assumptions we made in the code need to be thrown out of the Window.


Categories: Ramblings | Technology

August 28, 2004
@ 03:52 PM

According to the Microsoft press release Microsoft Announces 2006 Target Date for Broad Availability Of Windows "Longhorn" Client Operating System

Microsoft will deliver a Windows storage subsystem, code-named "WinFS," after the "Longhorn" release. The new storage system provides advanced data organization and management capabilities and will be in beta testing when the "Longhorn" client becomes available.

"We’ve heard loud and clear from customers that they want improved productivity, easier deployment, increased reliability and enhanced security, as well as the many innovations we’ve been working on. We’ve had to make some trade-offs to deliver the features corporate customers, consumers and OEMs are asking for in a reasonable time frame," said Jim Allchin, group vice president of the Platforms Group at Microsoft. "Our long-term vision for the Windows platform remains the same."
At a meeting today with several hundred of the company’s top developer evangelists from around the world, Microsoft also announced that the Windows WinFX developer technologies, including the new presentation subsystem code-named "Avalon" and the new communication subsystem code-named Indigo, will be made available for Microsoft® Windows XP and Windows Server 2003 in 2006. This availability will expand the scope of opportunity for developers by enabling them to write applications that can run on hundreds of millions of PCs, resulting in enhanced experiences for users of those operating systems.

I'm happy about this decision, but the cynic in me is thinking "better late than never". This has been an instructive experience in learning how long it takes information to go from the front lines to the ones pulling the strings in the B0rg cube.  And how long it takes folks to act on this information.


Categories: Life in the B0rg Cube

A few months ago in Joel Spolsky's  How Microsoft Lost the API War  he wrote

There are two opposing forces inside Microsoft, which I will refer to, somewhat tongue-in-cheek, as The Raymond Chen Camp and The MSDN Magazine Camp.
The Raymond Chen Camp believes in making things easy for developers by making it easy to write once and run anywhere (well, on any Windows box). The MSDN Magazine Camp believes in making things easy for developers by giving them really powerful chunks of code which they can leverage, if they are willing to pay the price of incredibly complicated deployment and installation headaches, not to mention the huge learning curve. The Raymond Chen camp is all about consolidation. Please, don't make things any worse, let's just keep making what we already have still work. The MSDN Magazine Camp needs to keep churning out new gigantic pieces of technology that nobody can keep up with.

When I first read the above paragraphs I disagreed with them because I was in denial. But as the months have passed and I've looked at various decisions my team has made in recent years I see the pattern. The patterns repeats itself in the actions of other product teams and divisions at Microsoft. I know realize this is an unfortunate and poisonous aspect of Microsoft's culture which doesn't work in the best interest of our customers. A few months ago I found some advice given to Ward Cunningham on joining Microsoft which read

 Take a running start and don't look back

  1. Recognize that your wonderful inventiveness is the most valuable thing you will own in a culture that values its employees solely by their latest contributions. In a spartan culture like this, you will rise quickly.

  2. Keep spewing ideas, even when those ideas are repeatedly misunderstood, implemented poorly, and excised from products for reasons that have nothing to do with the quality of the idea. When you give up on communicating your new ideas, you will just go insane waiting to vest.

The Microsoft culture is about creating the newest, latest greatest thing that 'changes the world' not improving what is already out there and working for customers. When I read various Microsoft blogs and MSDN headlines about how even though we've made paradigm shifts in developer technologies in the recent years we aren't satisfied and want to introduce radically new and different technologies all over again. This bothers me. I hate the fact that 'you have to rewrite a lot of your code' is a common answer to questions a customer might ask about how to leverage new or upcoming functionality in a developer technology.

Our team [and myself directly] has gone through a process of rethinking a number of decisions we made in this light. Up until very recently we were planning to ship the System.Xml.XPath.XPathDocument class as a replacement for the System.Xml.XmlDocument class. One of the driving reasons for doing this was XPath and XSLT performance. The mismatch between the DOM data model and that of XPath meant that XPath queries or XSLT transformations over the XmlDocument would never be as fast as XPathDocument. Another reason we were doing this was that since the XmlDocument is not an interface based design there isn't a way for people who implement their own XML document-like classes to plug-in to our world. So we decided to de-emphasize (but not deprecate) the XmlDocument by not adding any new functionality or performance improvements to it and focused all our energy on XPathDocument.

The problem was that the XPathDocument had a radically different programming model than the XmlDocument meaning that anyone who'd written code using the XmlDocument against our v1.0/v1.1 bits would have to radically rewrite their code to get performance improvements and new features. Additionally any developers migrating to the .NET Framework from native code (MSXML) or from the Java world would already be familiar with the XML DOM API but not the cursor-based model used by the XPathDocument. This was really an untenable situation. For this reason we've reverted the XPathDocument to what it was in v1.1 while new functionality and perf improvements will be made to the XmlDocument. Similarly we will keep the new and improved XPathEditableNavigator XPathNavigator class which will be the API for programming against XML data sources where one wants to abstract away what the underlying store actually is. We've shown the power of this model with examples such as the ObjectXPathNavigator and the DataSetNavigator.

It's good to be back in the Raymond Chen camp.


Categories: Life in the B0rg Cube | XML

From a Sports Ilustrated Article entitled Iraqi soccer players angered by Bush campaign ads 

Afterward, Sadir had a message for U.S. president George W. Bush, who is using the Iraqi Olympic team in his latest re-election campaign advertisements. In those spots, the flags of Iraq and Afghanistan appear as a narrator says, "At this Olympics there will be two more free nations -- and two fewer terrorist regimes."

(To see the ad, click here.)

"Iraq as a team does not want Mr. Bush to use us for the presidential campaign," Sadir told through a translator, speaking calmly and directly. "He can find another way to advertise himself."

Ahmed Manajid, who played as a midfielder on Wednesday, had an even stronger response when asked about Bush's TV advertisement. "How will he meet his god having slaughtered so many men and women?" Manajid told me. "He has committed so many crimes."

"The ad simply talks about President Bush's optimism and how democracy has triumphed over terror," said Scott Stanzel, a spokesperson for Bush's campaign. "Twenty-five million people in Iraq are free as a result of the actions of the coalition."

To a man, members of the Iraqi Olympic delegation say they are glad that former Olympic committee head Uday Hussein, who was responsible for the serial torture of Iraqi athletes and was killed four months after the U.S.-led coalition invaded Iraq in March 2003, is no longer in power.

But they also find it offensive that Bush is using Iraq for his own gain when they do not support his administration's actions. "My problems are not with the American people," says Iraqi soccer coach Adnan Hamad. "They are with what America has done in Iraq: destroy everything. The American army has killed so many people in Iraq. What is freedom when I go to the [national] stadium and there are shootings on the road?"

I find the We had to destroy the village to save it mentality an interesting and perhaps uniquely American perspective.  Based on some of the comments in my post So Why Are You Voting For George W Bush? it seems there are still people who feel the financial and human cost of the war in Iraq was worth it both for selfish reasons (it distracts Islamic terrorists who'd probably be focusing on attacking the American mainland) and for the fact that the war has made the Iraqi people "better off" despite the fact that many of them have gone from living in a relatively stable country to living in a bombed out warzone. This is a very interesting peek into the American psyche.

UPDATE: Based on some of the comments to this entry I decided to further clarify what I find so interesting. After it became clear that there were no WMDs in Iraq or strong ties to Al-Qaeda and 9/11 the reaction to this from the Bush Administration and American people could have been regret and sorrow (”I can't believe we killed thousands of civilians and spent billions of dollars without just cause”). Instead the Bush administration and certain portions of the American public instead have have reacted by stating that this invasion is actually good for Iraq and America should be commended for rescuing the Iraqi people. The reaction and the mentality behind it aren't what I'd expect after such a significant folly. Of course, history will be the judge of whether the current belief that America's interventions in Afghanistan and Iraq will improve the lives of the people of these nations for future generations.


August 22, 2004
@ 03:30 AM

Every once in a while I like to post a list of articles I'm either in the process of writing or considering writing to get feedback from people on what they'd like to see or whether the topics are even worthwhile. Below is a list of the next couple of articles I'm either in the process of writing or plan to write over the next few months.

  1. An Introduction to Validating XML Documents with Schematron (MSDN) : An introduction to Schematron including examples showing how one can augment a W3C XML Schema document using Schematron thus creating an extremely powerful XML schema language.  Code samples will use Schematron.NET

  2. Designing XML Formats: Versioning vs. Extensibility (XML 2004 Conference) : This is the presentation and paper for my XML 2004 talk. It will basically be the ideas in my article On Designing Extensible, Versionable XML Formats with more examples and less fluff.

  3. The XML Litmus Test - Deciding When and Why To Use XML (MSDN) : After seeing more and more people at work who seem to not understand what XML is good for or what the decision making process should be for adopting XML I decided to put this article together.  This will basically be an amalgamation of my XML Litmus Test blog post and my Understanding XML article on MSDN.  

  4. XML in Cw (  : An overview of the XML based features of Cw. The Cw type system contains several constructs that reduce the impedance mismatch between OO and XSD by introducing concepts such as anonymous types, choices [aka union types], nullable types and constructing classes from XML literals into the .NET world. The ability to process such strongly typed XML objects using rich query constructs based on SQL's select operator will also be covered.

  5. A Comparison of Microsoft's C# Programming Language to Sun Microsystems' Java Programming Language 2nd edition : About 3 years ago I wrote a C# vs. Java comparison while I was still in school which has become the most popular comparison of both languages on the Web. I still get mail on a semi-regular basis from people who've been able to transition between both languages due to the information in my comparison document. I plan to update this article to reflect the proposed changes announced in Java 1.5 and C# 2.0

On top of this I've been approached twice in the past few months about writing a technology book. Based on watching the experiences of others my gut feel is that it isn't worth the effort. I'd be interested in any feedback on the above article ideas or even suggestions for new articles that you'd be interested in seeing on MSDN or from me.


Categories: Technology | XML

August 22, 2004
@ 02:53 AM

It seems a number of people are now using RSS Bandit v1.2.0.114 SP1 release candidate 1 and so far it doesn't seem like we've gotten any reports of crashing related to opening new browser tabs which plagued v1.2.0.114. However there are some bugs, in changing the feed parsing code to use less memory I ended up introducing a bug where Atom 0.3 feeds are no longer updated. This bug has since been fixed along with a few others. Torsten and I will likely produce a release candidate 2 next weekend.

The progress on the Wolverine release is slow and steady. We recently had to reorganize the code due to my pending addition of NNTP support to make the names and behaviors of certain internal classes less focused on RSS and more on processing news items be they RSS items, Atom entries or USENET posts. I should be checking in the infrastructure for NNTP support by the middle of next week. Once that is done the next major piece of work will be adding the ability to delete posts which is made trickier by the fact that we have to make sure that information is passed along when synchronizing instances of RSS Bandit. 

Now that Hotmail has begun to deliver on the announced 250MB of space for free users it is seeming more and more attractive to add Hotmail as a synchronization source for RSS Bandit users. It would be very cool if all you had to do was enter your Hotmail username and password then RSS Bandit simply used one of your Hotmail folders for synchronizing between instances without requiring you to setup an FTP or WebDAV server as is currently needed. I've talked to some people who work in the MSN/Passport part of MSFT such as Omar Shahine, Joshua Allen and Julien Couvreur about the feasibility of using Hotmail in this way from a .NET Framework application. They all implied it won't be easy. Since I spoke to them I've found an an article about talking to Hotmail from C# and a spec for the HTTPMail protocol which Outlook Express uses to talk to Hotmail. It probably won't be easy but it doesn't look like it'll be too hard either.

Back to coding.


Categories: RSS Bandit

In his post I Want RELAX NG! Tim Ewald writes

This recent post on Mark Nottingham's site pushed me over the edge. I agree with Sean's comment: I want Relax NG. Can I make systems work with XSD? Yes, sort of. But it adds a ludicrous amount of complexity. First you have to know how it works, then what not to do because it's too complicated (like complicated type or element substitution models), then figure out how to contort your schema to do what you want (like extensibility and versioning). Relax NG is much simpler and much closer to how XML actually works. And yes, you can still map it to /from objects if you want to.

I can't help but wonder why, if WS-* and SOAP 1.2 keep XSD at arms length (referencing simple types only and providing non-normative schema definitions) and WSDL 2.0 defines its own simple types, everyone assumes I want to use XSD to define my Web service interface. Pretty much everyone I know who works in this space agrees that Relax NG is a better choice. What is stopping us from making this change?

This is one of those times where I both agree and disagree with Tim. To explain why, I first need to list the two three reasons people tend to write schemas.

  1. To provide a way to annotate an XML document with type information and thus created a type annotated infoset.
  2. To provide a means to ensure that an XML documents satisfies the constraints of a given message contract
  3. To provide terse, human readable documentation of an XML format.

In most developer scenarios [including XML Web Services] the most popular use case is the first from the list above. An XML Schema is used primarily for mapping the contents of an XML document either into relational tables (e.g. SQLXML, ADO.NET DataSet) or into a set of programming language objects (e.g. System.Xml.Serialization.XmlSerializer). Every XML Web Service toolkit I have encountered emphasizes this scenario and in fact most customers do not use XML schemas for validation of business documents for either performance reasons or the fact that their business rules cannot be adequately described using an XML schema. The main problem with XSD for this use case is that it is actually too expressive and has a richer type system than either the relational model or traditional object oriented programming languages. This leads to impedance mismatches which makes it hard for XML Web Service stacks to map schema declarations to objects thus leading to calls from folks like the WS-I to propose creating a subset or profile of XSD.

On the other hand, XSD is notoriously bad at dealing with the second use case described above. The language makes either makes it hard to describe common XML idioms (see the hoops I have to jump through in my Designing Extensible, Versionable XML Formats article) or impossible (e.g. if an attribute has a certain value then the element should have a certain content model or the providing a choice of attributes). This is where RELAX NG shines. Of course, being more expressive than XSD means that the impedance mismatch between it and the relational and OO models is even more significant. 

In practice today, most XML Web Services need an XML schema language for creating type annotated infosets not for validating message structure. This means that for their use cases XSD is preferable to RELAX NG. Ideally, a simple language that just allowed creating named structures and primitive types such as Microsoft's now-obsolete XML Data Reduced (XDR) would be even more optimal.  

Of course, the XML Web Services world could one day evolve to the point where being able to validate incoming messages against a schema is deemed more important than being able to deserialize the XML into objects and vice versa. In which case, Aaron Skonnard's statement in his post Could RelaxNG Replace XSD? which describe the existing industry inertia around XSD is also a point to consider.


Categories: XML

August 18, 2004
@ 10:16 AM

I saw the following excerpt in Shelley Powers's post entitled Differences of Humor where she wrote

Sam Ruby has posted a note about the upcoming Applied XML Conference put on by Chris Sells. When I looked at the agenda and realized that the conference managed to put together two days worth of presentations without one woman speaker,

Knowing the nature of Chris Sells's conferences this is unsurprising. They seem to mostly be an opportunity for Chris's DevelopMentor clique and their buddies to hang out. However Shelley's post did make me start thinking about how many women I knew who worked with XML and just like the time I started to keep a list of Seinfeld episodes in which at least one African or African American appeared in (don't ask) I started tracking down the number of women I knew off who worked on XML technologies who's works I'd rather see present than at least one of the presentations currently on the roster. Here is my list


  • Eve Maler - Sun's most notable XML geek after Jon Bosak and Tim Bray. She's worked on SAML and UBL. I meet her at XML 2003 where we chatted about versioning in UBL and what truly meant by polymorphic XML processing.

  • Jeni Tennison - the most knowledgeable person on the planet about W3C XML Schema. I've lost count of the amount of times I've seen her school members of the W3C XML Schema working group about the technology on various mailing lists. Also an XSLT and XPath guru. She's always pushing boundaries in the XML world such as with her work on layered hierarchies in markup vocabularies with LMNL

  • Priscilla Walmsley - the author of Definitive XML Schema which is probably the best book on W3C XML Schema on the market. She's also co-written a book on XML in Office 2003 which I haven't read but would love to get a presentation on especially with regard to some finer details on how Office uses XML schemas. 

  • Amelia Lewis - a co-author of the WS-ReliableMessaging specification and the author of an excellent critique of the W3C XML Schema primitive types in her article Not My Type: Sizing Up W3C XML Schema Primitives


  • Elena - the Microsoft XML Web Service stack rests on her shoulders. What makes Visual Studio.NET an awesome XML Web Service environment is that there is functionality that lets you point at a WSDL and automatically you get handy dandy .NET classes generated for you. Elena owns the meat of this code, a lot of which resides in the XmlSerializer class

  • Denise Draper - an architect on our team who in a past life has been a member of the XQuery working group, worked an XML data integration suite for Nimble Technology and worked in the AI field.

  • Priya Lakshminarayanan - the developer for the W3C XML Schema validation technology in the .NET Framework. She's the most knowledgeable about the technology at Microsoft, I'm a distant second to her breadth of knowledge about this somewhat arcane and cryptic technology. She the first person I've seen implement a tool for generating sample XML documents from XML schemas that didn't suck.

  • Helena Kupkova - the developer for the XML parser in the .NET Framework. She completely gutted our old implementation and doubled the perf in some scenarios. A totally impressive developer. More impressive is that she ships stuff like the XML Diff and Patch demo on GotDotNet in her spare time.

  • Nithya Sampathkumar - the developer on the XML schema inference technology in the .NET Framework. Once I took over as the program manager for this technology I grew to understand the subtleties involved in trying to infer a schema for arbitrary XML documents. A presentation on the techniques used in her implementation and the limitations of XML schema inference would be quite interesting.

  • Neetu Rajpal - the program manager for XML tools in Visual Studio. I've overheard some interesting conversations involving her discussing some of the trickiness involved in implementing an XSLT debugger. An in-depth presentation about what the XML tools team is planning to ship and the issues they encountered would be killer.

  • Vinita - the program manager for MSXML which is the most widely deployed XML library on the planet. Even without shipping in Internet Explorer, Windows and Office they still get millions of downloads a year.

  • Tejal Joshi - works on the XML tools in Visual Studio. At last year's XML 2003 conference I enjoyed hearing James Clark discuss implementation strategies for his nxml-mode in Emacs. I'm sure Tejal would have similarly interesting stories to tell.

  • Lanqing Dai - used to be developer for the XmlDocument class but has moved on to WinFS. I'd love to hear a her thoughts on how working in an XML-centric world compares to living in the item-centric world of WinFS.

There are more women I know off in the XML field both within and outside Microsoft but these are the ones whose presentations I'd rather see than something like XML as a Better COM (for example). Maybe next time Chris Sells should look around the usual XML hang outs both online (like the xml-dev mailing list) and within Microsoft internally for conference speakers instead of announcing them in his blog. It may lead to a more diverse list of topics and speakers.

I need to go watch Berserk. Talk to you guys later.


Categories: XML

My issue of Playboy came in the mail so I got to read the the infamous Google interview. If you don't have a Playboy subscription or balk at buying the magazine from the newstands you can get the interview from Google's amended SEC filings. I didn't read the entire interview but there were no surprises in what I read.

I was recently talking to a coworker who's on the fence about whether to go to Google or stay at Microsoft and it was interesting talking about the pros and cons of both companies. As we talked Google began to remind me of Netscape in its heyday. A company full of bright, young guys who've built a killer application for the World Wide Web and is headed for a monster IPO. The question is whether Google will squander their lead like Netscape did (Yes, I realize my current employer may have had something to do with that) or whether they'll be the next Yahoo!

There are a couple of things Google has done over the past few years that have made me wonder whether the company has enough adult supervision and business acumen to rise above being a one trick pony in the constantly changing Internet landscape. Some of them are touched on by Larry and Sergey in their interview

  1. is non-sticky: Nothing on the main Google site encourages the user to hang around the site or even return to the website besides the quality of the search results. According to the company's founders this is by design. The problem with this reasoning is that if and when its competitors such as MSN Search and Yahoo! Search get good enough there isn't anything keeping people tied to the site. It seems unfathomable now but there was a time that it seemed unfathomable that anyone would use anything besides AltaVista or Excite to search the Web. It's happened before and it can happen again. Google seems ill-prepared for this occurence.

  2. Inability to tie together disparate offerings: The one thing that has separated Yahoo! from all the Web portals that were all the rage a couple of years ago is that it managed to tie its many offerings into a single cohesive package with multiple revenue streams. The Yahoo! experience seamlessly ties in My Yahoo!, Yahoo! Groups (formerly eGroups), Yahoo! Calendar, Yahoo! Maps, Yahoo! Shopping, Yahoo! Finance, Yahoo! News, Yahoo! Movies, Yahoo! Messenger and the Yahoo! Companion. I use most of these Yahoo sites and tools on a daily basis and use all of them at least once a month. Besides advertising related to search there are several entry points for Yahoo! to get revenue from me.

    Compare this to Google which although has a number of other offerings available from the Google website has a number of offerings they haven't figured out how to make synergistic such as their purchase of Blogger or sites like Orkut. Yahoo! would have gotten a lot more mileage out of either site than Google currently has done. Another aspect of this issue is gleaned from this excerpt from a post by Dave Winer entitled Contact with Google

    Another note, I now have four different logins at Google: Orkut, AdSense, Blogger and Gmail. Each with a different username and password. Now here's an area where Google could be a leader, provide an alternative to Passport, something we really need, a Google-size problem.

    Yahoo! has a significantly larger number of distinct offerings yet I access all of them through a single login. This lack of cohesiveness indicates that either there isn't a unified vision as to how to unite this properties under a single banner or Google has been unable to figure out how to do so.

  3. GMail announced to quickly: Google announced GMail with its strongest selling point being that it gave you 100 times more space than competing free email services. However GMail is still in beta and not available to the general public while it's competitors such as Hotmail and Yahoo! Mail have announced upping their limits to 250MB and 100MB respectively with gigabytes of storage available and other features available to users for additional fees. This has basically stolen Google's thunder and halted a potential exodus of users from competing services while GMail isn't even out of beta yet.

  4. Heavy handed tactics in the Web syndication standards world: Recently Google decided to use a interim draft of a technology specification instead of a de facto industry standard for syndicating content from their Blogger website thus forcing users to upgrade or change their news aggregators as well as ensuring that there would be at least two versions of the Atom syndication format in the wild (the final version and the interim version supported by Google). This behavior upset a lot of users and aggregator developers. In fact, the author of the draft specification of the Atom syndication format that Google supported over RSS has also expressed dismay at the choice Google made and is encouraging others not to repeat their actions.

All of these are examples of less than stellar decision making at Google. Even though in previous entries such as What Is Google Building? and What is Google Building II: Thin Client vs. Rich Client vs. Smart Client I've implied that Google may be on the verge of a software move so bold it could upstage Microsoft the same way Netscape planned to with the browser upstaging the operating system as a development and user platform, it isn't a slam dunk that they have what it takes to get there.

It will be interesting watching the Google saga unfold.


Categories: Technology

According to the current version of the Chris Sells XML DevCon page (don't bother bookmarking it, Chris Sells doesn't believe in permalinks so all the content on that page is transient) I noticed that Chris Anderson is presenting the following

Developers Hate XML

Chris Anderson

While everyone is currently infatuated with XML, developers are constantly doing battle with trying to rationalize and leverage XML in their applications. Ill talk about having to balance correct XML-isms vs. usability in XAML, about the preponderance of XML reader/writer/DOM/serialization APIs, and about how all of this throws you into a horrible programming experience of loosely typed runtime errors. This reveals XML for what it is a data encoding. XML is the ASCII text file of the 2000s. While web services are often called "XML Web Services," the reality is that every web service API abstracts the developer from the XML view.

Nothing says vote of confidence like when the chief architects of one of teams you work closely with says your technology sucks. :)

Seriously though, I am curious as to what his presentation actually will be about. Reading the abstract, it seems like it is another iteration of a data-centric user of XML coming to the realization that for their scenarios XML is just CSV on steroids. People's behavior when they realize this usually follows a pattern similar to the five stages of grief. First there is denial, this usually takes the form of an initial disbelief that after all the hype they've heard about XML it isn't working out fantastically for them. Then there is bargaining, this usually manifests itself as attempts to not use XML but still use it. Often you here phrases like "binary XML", "XML subset" or "XML profile" at this point. Then there is anger at XML for being more complex and verbose than they need. At this point you get to either read a rant-filled email, blog post, conference paper or in this case conference presentation about how badly the technology is suited for its purpose. Then there is either despair or acceptance. One doesn't follow the other. If the next stage is despair in this case the person ends up not using XML to solve that particular problem. On the other hand if it is acceptance, XML is still used but in some cases it is in one of the forms that were mentioned in the bargaining stage such as a binary representation of an XML stream or uing some subset of XML.

Hopefully Chris Anderson will post his slides online.


Categories: XML

Anders Norås has an interesting blog entry entitled A JavaScript XmlSerializer where he shows how to build a class equivalent to the .NET Framework's System.Xml.Serialization.XmlSerializer class in Javascript. He writes

In ASP.NET 2.0 it is possible to invoke server events from client side script without posting back the page. This is supported through a new mechanism called script callbacks. For more information on this technology, read Dino Espositio’s excellent “Cutting Edge” article on the subject.

Mostly out-of-band calls have been used with fairly simple return values such as strings and numerals. The “advanced” uses have typically been passing arrays as comma separated lists. This has greatly limited the applicability of the technology and created a wide functionality gap between the object oriented programming environment of the server world and the more primitive environment in the browser...

A JavaScript XmlSerializer

One of the most celebrated classes in the .NET framework is the XmlSerializer class. This class enables you to serialize objects into XML documents and deserialize XML documents into objects. As we all know, XML documents are represented as strings, so it is simple to pass an XML document as either a parameter or a return value on an out-of-band call.

By implementing a client side XML based serialization and deserialization it would be possible to pass an object from a client script to a server method and vice versa. There are of course huge differences between the powerful .NET platform and the simple JavaScript language, but these have little impact on a client to server communications channel as it would only make sense to pass data transfer objects.

Definitely an interesting bit of code. What is also very interesting is that he has a previous article entitled Declarative JavaScript programming where he implements metadata annotations (akin to .NET Framework attributes) for Javascript. Excellent stuff.


One important lesson I've learned about designing software is that sometimes it pays to smother one's perfectionist engineer instincts and be less ambitious about the problems one is trying to solve. Put more succintly, a technology doesn't have to solve every problem just enough problems to be useful. Two examples come to mind which hammered this home to me; Tim Berners-Lee's World Wide Web and collaborative filtering which sites like Amazon use.

  1. The World Wide Web: Almost every history of the World Wide Web you find online mentions how Tim Berners-Lee was inspired by Ted Nelson's Xanadu. The current Web is a pale imitation of the what Ted Nelson described over forty years ago of what a rich hypertext system should be capable of doing. However you're reading these words of mine over Tim Berners-Lee's Web not Ted Nelson's. Why is this?

    If you read the descriptions of the Xandadu model you'll notice it has certain lofty goals. Some of these include the ability to create bi-directional links, links that do not break, and built-in version management. To me it doesn't seem feasible to implement all these features without ending up building a closed system. It seems Tim Berners-Lee came to a similar conclusion and greatly simplified Ted Nelson's dream thus making it feasible to implement and adopt on a global scale. Tim Berners-Lee's Web punts on all the hard problems. How does the system ensure that documents once placed on the Web are always retrievable? It doesn't. Instead you get 404 pages and broken links. How does the Web ensure that I can find all the pages that link to another page? It doesn't. Does the Web enable me to view old versions of a Web page and compare revisions of it side by side? Nope.

    Despite these limitations Tim Berners-Lee's Web sparked a global information revolution. Even more interestingly over time various services have shown up online that have attempted to add the missing functionality of the Web such as The Internet Archive, Technorati and the Google Cache.

  2. Collaborative Filtering on Amazon: The first place I ever bought CDs online was (now owned by Amazon). One feature of the site that blew my mind was the fact the ability to get a list of recommended CDs to buy based on your purchase history and the ratings you gave various albums. The suggestions were always quite accurate and many times it suggested CDs I already owned and liked a lot.

    This feature always seemed like magic to me. I imagined how difficult it must have been to come up with a categorization and ranking systems for music CDs that could accurately match people up with music based on their tastes. It wasn't until Amazon debuted this feature that I realize the magic algorithms were simply 'people who purchased X aldo purchased Y'. My magic algorithms were just a bunch of not very interesting SQL queries.  

    There are limitations to this approach ,you need a large enough user base and enough purchases of certain albums to make them statistically significant, but the system works for the most part.

Every once in a while I am part of endless discussions about how we need to complicate a technology to satisfy every use case when in truth we don't have to solve every problem. Edge cases should not dictate a software systems design but too often they do.  


Categories: Technology

August 12, 2004
@ 03:27 AM

From the post entitled XP Lite. Seriously... they cannot be serious....  on Gerry Steele's weblog

BBC News Xp Lite XP Lite System
From the horse's mouth

Perhaps I'm a little late on picking this up, but at our last weekly meeting a colleague mentioned "XP Lite". My immediate reaction was: "Oh Dear, what have they schemed up now?!" Well, I sound like a Microsoft cynic I know, but I'd love to convince you that this is not because of a hate of Microsoft... I'm just a technology enthusiast who feels insulted an pained by pretty much every executive descision the company makes. Which I feel is a shame. A lot of smart people work there, but the mandate of their work is to create products which tie people to more of their expensive (in some way or other) products. Thus work that could go towards the creation of better software for everyone and for the benefit of all customers is lost. The recent "truce" between Sun & MS has bred a new submission to a standards body on web delivery services I cannot help but fear is just a token gesture to repreave the closed-shop image of Microsoft.

Anyway. XP Lite. Now I feared this would be bad. But no. It is much worse than i thought. A cut down version of XP aimed at the Asian market where Linux and ripped off copies of Windows abound. what's different I hear you ask? Well here's a few:

  • Cut down Networking capabilities
  • You won't be allowed To switch to higher resolutions (800x600 maximum!)
  • You may only run three programs at once, with each program opening only three windows at a time
  • No multiple user accounts

On the up side you get a locale specific patriotic desktop background included. Super duper eh? At the end of the press release is a list of positive quotes from distinguished Asian representatives (PhDs first! mortals, kids get in queue) who seems to have very little clue about anything to do with technology (indicated by their positive comments)

Perhaps the clearest indication that Microsoft are worried about the superior alternative open & free Linux products thus far. But unfortunately they will convince OEMs to ship this alleged software with the hardware (the OEM route is the key to printing money if the past is anything to go by). I don't see why Microsoft don't just go the whole hog and force hardware manufacturers to insert a coin slot on every box and have a trained monkey vist us each and collect the money (we would be so distracted by the cute ickle monkey visiting to notice the daylight robbery)

I could write all day about why XP Lite or XP starter or whatever it's called is bad for you, me, your children, the economy, free speech and liberty, but unlike Microsoft I'm hoping that your smart enough to know why this software is bad and why Microsoft should feel ashamed for their manipulation of the markets. I'm off to go and find my skin which has crawled off somewhere else in anger. I hope it hasn't hurt anyone

If you are unfamiliar with the phrase "two minute hate", see the Newspeak Dictionary


August 11, 2004
@ 06:26 PM

Working at a software company (i.e. around geeks with disposable income) and living in the yuppie part of downtown (i.e. around yuppies with disposable income) I see a lot of people driving around in expensive cars that have a popular brand name but not the quality associated with that brand. Such people would have gotten more value for their money by buying equivalently priced cars from other manufacturers but decided that riding around in a big name brand was better. Examples of such vehicles include the

  1. Jaguar X-Type

  2. Hummer H2

Some others come to mind but I won't mention so as not to risk offending people I know. I always shake my head when I see people driving around in these cars.


Categories: Ramblings

I have been remiss about talking about the ongoing and upcoming content on the MSDN XML Developer Center. The most interesting recent article has been Priya's Generating XML Documents from XML Schemas. In this article she provides a tool that allows you to generate sample documents that validate against a particular schema. This is very useful if you have a schema document but would like to see what a valid instance of that schema looks like. This is one of those tools I'd love to see added to the XML editor in Visual Studio. The one caveat is that her tool requires .NET Framework v2.0 beta 1 or higher to run.

The next couple of articles we have scheduled include an overview of how to use EXSLT to make one more productive as an XSLT developer by Oleg Tkachenko, an implementation of XPathNavigator over the ADO.NET DataSet by Arpan Desai, and an introduction Daniel Cazzulino's implementation of Schematron for the .NET Framework by myself.

I'm currently working on the content plan for the next quarter of the year and would like to know what articles people have liked and would like to see in the future. Also if you are interested in writing for MSDN about XML technologies on Microsoft platfortms go ahead and send me an email at my work address.


Categories: XML

According to the RSS Bandit Product Roadmap there should is a service pack for the current version of RSS Bandit scheduled for release at the end of the summer. The primary issues that  will be fixed by the service pack are

  1. There is a memory corruption bug that manifests itself by RSS Bandit crashing with the following error message, StartMainGui() exiting main event loop on exception.
  2. When RSS Bandit is configured to use proxy settings from Internet Explorer sometimes downloading certain feeds fails with the error (407) Proxy authentication required even though one can access these feeds directly using a web browser with no problem

There are also a number of smaller bug fixes such as better mouse wheel support and no longer producing duplicate entries when the title of an entry changes in the RSS feed. If any of these problems have affected you then download and give us feedback on whether these issues have been fixed or not.

I've started working on the Wolverine release more. The first thing I'll be implementing is NNTP support. So far I've figured out how to list newsgroups on a server, fetch posts, post responses aand the like. One of the questions I'm interested in users answering is whether newsgroups should be put in a seperate category from feeds in the tree view or whether we shouldn't differentiate between newsgroups and feeds in the tree view so one could have a category that contained both feeds and news groups. I'm also interested in finding public NNTP servers so I don't end up coding against just the pecularities of the server.


Categories: RSS Bandit

August 4, 2004
@ 04:13 PM

I've always been under the impression that there were SEC rules that prevented senior executives of companies from making declarations that could affect the share price of their companies or their competitors without certain disclaimers in place. So I was very surprised to see Jonathan Schwartz's post entitled IBM is in a Pickle (Again) which seemed to imply that IBM had some strategic weaknesses that could be exploited by some entity acquiring Novell. This posting in combination with some statements Schwartz made to ZDNet fueled a bunch of speculation online including a jump in Novell's stock price.

Anyone who looks at his statements critically should realize they are divorced from reality. I was going to write up some criticisms of his arguments but others have beaten me to the punch. Read the Business Week article Don't Quote My Blog on That . The article is subtitled 

A Web musing by Sun's president fueled rumors of a possible Novell acquisition. Nice idea, but no panacea for his struggling outfit.

That summarizes the situation nicely. Jonathan Schwartz's post seems like a lot of wishful thinking as opposed to musings rooted in reality. I also like the verbal upraiding that James Robertson provided to Schwartz's ideas in his post Still Whistling. I was going to post an excerpt but his post is worth reading in its entirety. It is definitely amusing to see Sun scramble to stay relevant as they realize that their hard ware is overpriced and they can't figure out how to make money from Java's popularity. If not for the billions they have stashed this would definitely be a company in its death throes.


Categories: Ramblings

I was reading USA Today at lunch today and noticed that for the first time in decades a presidential candidate hasn't received a rise in the polls after a national convention. In fact, in some polls Kerry is actually doing worse now than he was 2 weeks ago. I flipped to the back of the magazine to read the weather section and something else caught my eye. Besides listing the temperature and possibility of rain the USA Today weather section also displays the Air Quality Index (AQI) of 36 cities. I noticed that only 2 cities had a rating of unhealthy, Houston and Dallas-Forth Worth. The description of the unhealthy rating advised avoiding strenous excercise in the open air and the like. Then I thought to myself, “Wasn't GW the governor of Texas just a few years ago?”.

Part of me is confused and dismayed by the fact that here's a president whose administration started a war under false pretences that has left thousands dead, under whom severe disrespect to the rule of law and the US constitution have been perpetrated,  and significant leeway has been given to corporations to abuse the environment and the American  people but yet it looks like he has a good chance of being re-elected. Then I talk to a couple of people who plan to vote for Bush this year and things become clearer. Like Doug Purdy mentions in his post U.S. Presidential Election II , many people in my field who make as much as I do care more about tax breaks and the like than any of the things Bush has done wrong or failed to do correctly. I even have a friend who's going to vote for Bush because he doesn't like Kerry's stance on gun control.

I'm curious about the various reasons people have for deciding to vote for Bush instead of Kerry in the coming election. I've listed two reasons above but imagine there are lots more that I can't see. Help me see things from your perspective.


Categories: Ramblings

August 3, 2004
@ 08:17 AM

I was reading Hugh Macleod's post on How To Be Creative which currently has 13 items on the list and was struck by some of what he wrote on point number 7, don't quit your day job, where he explains the The Sex & Cash theory

7. Keep your day job.

I’m not just saying that for the usual reason i.e. because I think your idea will fail. I’m saying it because to suddenly quit one’s job in a big ol' creative drama-queen moment is always, always, always in direct conflict with what I call "The Sex & Cash Theory".

THE SEX & CASH THEORY: "The creative person basically has two kinds of jobs: One is the sexy, creative kind. Second is the kind that pays the bills. Sometimes the task in hand covers both bases, but not often. This tense duality will always play center stage. It will never be transcended."
A good example is Phil, a NY photographer friend of mine. He does really wild stuff for the indie magazines- it pays nothing, but it allows him to build his portfolio. Then he'll go off and shoot some catalogues for a while. Nothing too exciting, but it pays the bills.
Or geeks. You spend you weekdays writing code for a faceless corporation ("Cash"), then you spend your evening and weekends writing anarchic, weird computer games to amuse your techie friends with ("Sex")
I'm thinking about the young writer who has to wait tables to pay the bills, in spite of her writing appearing in all the cool and hip magazines.... who dreams of one day of not having her life divided so harshly. Well, over time the 'harshly' bit might go away, but not the 'divided'.

"This tense duality will always play center stage. It will never be transcended." As soon as you accept this, I mean really accept this, for some reason your career starts moving ahead faster. I don't know why this happens. It's the people who refuse to cleave their lives this way- who just want to start Day One by quitting their current crappy day job and moving straight on over to best-selling author... Well, they never make it.

That blog post sums up a lot of my thinking recently. Designing the classes in System.Xml is a decent day job but I only really light up in front of a computer when I'm fixing bugs or adding features in RSS Bandit. One pays the bills, the other allows me to express myself without artificial limitation in my medium of choice.

If you have time you should read Hugh's entire list, its actually quite insightful.


Categories: Ramblings

On July 8th, a couple of us from the XML team held a hosted chat on MSDN Chats. The transcripts of the C# and XML chat are now available. We answered questions on our existing behavior in Everett as well as upcoming technologies in Whidbey. If there are any followup questions to those asked during the chat just post them here and I'd love to answer them.

Categories: Life in the B0rg Cube | XML

I recently got a number of bug reports that in certain situations RSS Bandit would report a proxy authentication error when fetching certain RSS feeds over the Web when connecting through a proxy server. It seemed most feeds would work fine but a particular set of feeds would result in the following message

The remote server returned an error: (407) Proxy Authentication Required.

Examples of sites that had problems include the feeds for Today on Java.netMartin Fowler's bliki and Wired News. It dawned on me that the one the one thing all these feeds had in common was that they referenced a DTD. The problem was that although I was using an instance of the System.Net.IWebProxy interface in combination with an HttpWebRequest when fetching the RSS feed I did not provide the XmlValidatingReader used to process the feed that it should use the proxy information when resolving DTDs.  

This is where things got less intuitive. All XmlReaders have an XmlResolver property used to retrieve resources external to the file. However the XmlResolver class does not provide a way to specify proxy information, only authenticattion information. To solve this problem I had to create a subclass of the XmlResolver class which used the proxy connection when retrieving external resources. It seems I'm not the only person who's come up across this problem and the solution was presented on the microsoft.public.dotnet.xml newsgroup a while ago in the thread entitled XmlValidatingReader, XmlResolver, Proxy Authentication, Credentials, Remote schema. This post shows how to create a custom XmlResolver which utilizes proxy information and how to use this class to prevent the errors I was seeing.

I checked in the fix to RSS Bandit this morning, so very soon a number of users of the most sophisticated news aggregator on the Windows platform will be very happy campers seeing this annoying bug fixed.  


Categories: XML

August 1, 2004
@ 02:45 AM

The August issue of Playboy magazine has an article entitled “Detroit, Death City” which cites some depressing statistics about this once great city. Excerpts from the article include

“Beyond the murder rate, there are three statistics that tell you a lot of what's happening in Detroit,” says Wayne State's Herron. “More than half the residents don't have high school diplomas, 47 percent of adults are functionally illiterate, and 44 percent of the people between the ages of 16 and 60 are either unemployed or not looking for work. Half the population is disqualified from participating in the official economy except at the lowest levels.”
Married couples head only 36.9 percent of Detroit families. Single fathers head 8.2 percent, single mothers 54.9 percent.

Detroit is 82.8 percent African American, second only to Gary, Indiana. Livonia, nine miles from the city is 96.5 percent white.

Detroit is the nation's number one city for auto arson. In 1999, more than 3300 cars were torched, costing insurers $22 million.

In 1950 Detroit's population was 1.9 million making it the fifth largest US city. By 2000 its population was 950,000.

Detroit's yearly pedestrian fatality rate is the nation's highest at 5.05 per 100,000 residents. New York City's rate is half that.

The author of the article tells the story of his father in-law, a 1960s revolutionary who became a well-known figure in the fight to save Detroit, and his brother-in-law who became a drug dealer. I found the juxtaposition of the life of the father and the son presented an interesting contrast. The article was definitely one of the better things-are-really-screwed-up-in-America's-inner-cities style articles  I've read in a while.

There's also an interview with Spike Lee in this month's issue. This subscription is definitely working out.


Categories: Ramblings