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 RssBandit1.2.0.114SP1_RC1.zip 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 news.microsoft.com 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.”
...
FAMILY VALUES
Married couples head only 36.9 percent of Detroit families. Single fathers head 8.2 percent, single mothers 54.9 percent.

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

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

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

MOTOR CITY
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

Since I wrote my What is Google Building? I've seen lots of interesting responses to it in my referrer logs. As usual Jon Udell's response gave me the most food for thought. In his post entitled Bloglines he wrote

Finally, I'd love it if Bloglines cached everything in a local database, not only for offline reading but also to make the UI more responsive and to accelerate queries that reach back into the archive.

Like Gmail, Bloglines is the kind of Web application that surprises you with what it can do, and makes you crave more. Some argue that to satisfy that craving, you'll need to abandon the browser and switch to RIA (rich Internet application) technology -- Flash, Java, Avalon (someday), whatever. Others are concluding that perhaps the 80/20 solution that the browser is today can become a 90/10 or 95/5 solution tomorrow with some incremental changes.
...
It seems pretty clear to me. Web applications such as Gmail and Bloglines are already hard to beat. With a touch of alchemy they just might become unstoppable.

This does seem like the missing part of the puzzle. The big problem with web applications (aka thin client applications) is that they cannot store a lot of local state. I use my primary mail readers offline (Outlook & Outlook Express) and I use my primary news aggregator (RSS Bandit) offline on my laptop when I travel or in meetings when I can't get a wireless connection. There are also lots of dial up users out there who don't have the luxury of an 'always on' broadband connection who also rely on the offline capabilities of such applications.

I suspect this is one of the reasons Microsoft stopped trying to frame the argument as thin client vs fat rich client. This discussion basically is arguing that an application with zero deployment and a minimalistic user interface is inferior to a desktop application that needs to be installed, updated and patched but has a fancier GUI. This is an argument that holds little water to most people which is why the popularity of Web applications has grown both on the Internet and on corporate intranets.

Microsoft has attempted to tackle this problem in two ways. The first attempt is to make rich client applications as easy to develop and deploy as web applications by creating a rich client markup language, XAML as well as the ClickOnce application deployment technology. The second is with better positioning by emphasizing the offline capabilities of rich clients and coming up with a new monicker for them, smart clients.

Companies that depend on thin client applications such as Google with GMail do realize their failings. However Google is in a unique position of being able to attract some very smart people who've been working on this problem for a while. For example, their recent hire Adam Bosworth wrote about technologies for solving this limitation in thin clients in a number of blog posts from last year; Web Services Browser, Much delayed continuation of the Web Services Browser and When connectivity isn't certain. The latter post definitely has some interesting ideas such as

the issue that that I want a great user experience even when not connected or when conected so slowly that waiting would be irritating. So this entry discusses what you do if you can't rely on Internet connectivity.

Well, if you cannot rely on the Internet under these circumstances, what do you do? The answer is fairly simple. You pre-fetch into a cache that which you'll need to do the work. What will you need? Well, you'll need a set of pages designed to work together. For example, if I'm looking at a project, I'll want an overview, details by task, breakout by employee, late tasks, add and alter task pages, and so on. But what happens when you actually try to do work such as add a task and you're not connected? And what does the user see.

To resolve this, I propose that we separate view from data. I propose that a "mobile page" consists both of a set of related 'pages' (like cards in WML), an associated set of cached information and a script/rules based "controller" which handles all user gestures. The controller gets all requests (clicks on Buttons/URL's), does anything it has to do using a combination of rules and script to decide what it should do, and then returns the 'page' within the "mobile page" to be displayed next. The script and rules in the "controller" can read, write, update, and query the associated cache of information. The cache of information is synchronized, in the background, with the Internet (when connected) and the mobile page describes the URL of the web service to use to synchronize this data with the Internet. The pages themselves are bound to the cache of information. In essence they are templates to be filled in with this information. The mobile page itself is actually considered part of the data meaing that changes to it on the Internet can also be synchronized out to the client. Throw the page out of the cache and you also throw the associated data out of the cache.

Can you imagine using something like GMail, Google Groups or Bloglines in this kind of environment? That definitely would put the squeeze on desktop applications.


 

Categories: Technology