Many have complained about the fact that one of the major problems with RSS aggregators is the fact that if one uses an aggregator on multiple machines (such as at home and at work) then there is no easy way to synchronize the readers on both machines. This was one of the problems I set out to solve when I first started working on RSS Bandit, now thanks to some prodding from some of the co-developers on the RSS Bandit workspace multiple solutions have been implemented. Click below for details.
 

Categories: RSS Bandit

October 21, 2003
@ 07:35 AM

Dave Winer writes

Just had a phone talk with Scoble, and finally I have a clue why people use aggregators integrated with email clients. He had a couple of compelling reasons. 1. Since it's integrated with email he can easily forward an item to people he works with via email. 2. He has a folder where he drags items he wants to write about later. BTW he uses NewsGator. I still prefer the blog-style interface of Radio's aggregator.

Both of which are features RSS Bandit supports. There is one feature requested by Jeff Sandquist which Newsgator has and RSS Bandit does not; the ability to specify a username/password combo when accessing a particular feed. Torsten and I will see about getting this in by the weekend so Jeff can use it next week.

My bed beckons but so do my recent purchases that just arrived in the mail; Chinese Super Ninja and Shaolin Challenges Ninja.

Bah, sleep is for the weak.


 

Categories: RSS Bandit

October 19, 2003
@ 07:56 PM
The original impetus for designing XML was to create "SGML on the Web". Six years later, although XML has found widespread applicability in the software industry it seems to have failed at its original goal. Some thoughts about this follow.
 

Categories: XML

October 19, 2003
@ 05:52 PM

Rob Volk writes

Is XML Evil?

About a month ago I was asked by a contractor I work with who needed to import some very plain, fixed-width, ASCII text file data into SQL Server. In fact, this SQL Team post is very much like his situation, in that he also was going to convert PLAIN, FIXED-WIDTH, ASCII TEXT (did I mention that already?) into XML and THEN import it into SQL Server...  <snip />

Fortunately (!) we use SQL Server 7.0 so none of the XML extensions were available for him to use. As it turned out I already had a bcp format file that could read the text format he needed to import. So, with ONE LINE OF SQL, I was able to do something he would have had to write over 100 lines of C# to parse the file, XML-ize it, and then save out to ANOTHER FILE so that he could import it (using about 12-20 lines of SQL, or more) Using bcp also would've entailed one DOS prompt command. Even DTS would've been harder to use to accomplish the same thing.

So, exactly how is XML making this process easier? Where is the ease of use and interoperability it's supposed to provide? I'm completely astounded that so many people have been so thoroughly brainwashed by the XML hype that they not only see it as the best way to do something, but as the ONLY WAY TO DO IT.

Situations like the above were my motivation for writing the article Understanding XML on MSDN. Using XML for a software development project buys you two things (a) the ability to interoperate better with others and (b) a number of off-the-shelf tools for dealing with format. If neither of these things apply to a given situation then it doesn't make much sense to use XML.

Applying the interoperability litmus test, unless the data in the text file in the situation described above is going to be shared with partners there really isn't any reason to convert it to XML to gain interoperability. Even then one could argue that it may make more sense to just pull out relevant data from the database and convert that to XML as needed when data needs to be exchanged with partners. As for the gains from off-the-shelf tools, given that there were already tools existing for the format used by the text file that performed the required task there really wasn't anything to be gained by converting it to XML.  

Applying this litmus test makes it fairly easy to figure out when to use XML and when using it isn't such a good idea. This is one of the reasons I consider articles such as Parsing RSS At All Costs as setting a bad example because they encourage the notion that it is OK to produce and consume ill-formed XML. Of course, once you do that you can't really interoperate with others and traditional XML tools cannot be used on the ill-formed documents so you might as well not be using XML.


 

Categories: XML

I found a link to an article entitled The Great Walmart Wars via a link on Robert Scoble. The main thesis of the article is that although consumers like Walmart it is actually bad for the overall economy of a region, they don't their employees that highly and they drive smaller competitors out of business leading to homogenization.

I wasn't really interested in the veracity of the claims or otherwise. Instead what I found interesting was the overlap the article had with similar screeds I'd seen against large booksellers like Barnes & Nobles and Borders as well as a number of the rants on "Why Microsoft is Evil" style websites such as What's So Bad About Microsoft? on the No Pity For Microsoft website. The complaint about driving smaller competitors out of business seemed to be an underlying theme in such diatribes.

It seems that at a higher level the problem people seem to have is with the inherrent competitiveness of the capitalistic system. Few would argue that consumers have chosen with their feet that they prefer the goods and services of Walmart, Barnes & Nobles and Microsoft to those of their competitors due to being happier with their prices and convenience compared to alternatives. However the inherrent nature of competition is that there will be winners and that there will be losers. In a way, competition amongst producers in capitalist systems is a Zero Sum Game.

I am curious about examples of companies that have grown dominant in their particular markets without there being parties that complain about similar damage to the ecosystems of those particular markets. This would prove enlightening.


 

Categories: Ramblings

October 18, 2003
@ 06:25 PM
Tarantino serves up a homage to chop socky movies from yester-year including cameos from greats like Sonny Chiba and Gordon Liu as well as beats from the Rza. Although it kicked off kind of slowly the movie was a feast to behold and laugh out loud funny in a bunch of places as well. Score: **** out of *****
 

Categories: Movie Review

The author of the "Reflecting on Microsoft" blog  writes

Why Doesn't Microsoft have a Blogging Tool?

Have you ever wondered why Microsoft doesn't produce a blogging tool? To me, it seems a surprising omission.

AOL seems to see a commercial opportunity to interest a significant proportion of its subscribers. However, so far as I am aware Microsoft has no plans in this direction.

Microsoft already offers Office to students at a discount. Why not offer a blogging tool too?

The odd thing ... at least it seems odd to me ... is that Microsoft has many of the parts of a great blogging tool already in place but the parts have not been brought together yet.

To me this has been the most interesting aspect of working at Microsoft. Before I was assimilated I'd hear complaints about lock-in and how people hated the fact that Microsoft was unfairly competing by building software products that competed with offerings from other companies or making products work better together. Since I used to hang out on Slashdot a lot I usually got the "Microsoft is a greedy, evil company that is trying to rule the software world" perspective.

Working in B0rg Cube I've found out that in many cases there is significant customer demand for the actions Microsoft takes that its competitors rail against. Customers do want everything and the kitchen sink to be built into the products they buy so they don't have to buy multiple products or deal with multiple vendors. I suspect the main problem people have with the Microsoft isn't that it tries to satisfy customer needs for more functionality and software that works better together but that in some cases it builds the software itself instead of licensing from others and thus contributing to the software ecosystem. From what I've seen this isn't the general case, in general this extra value is added by Microsoft Partners but in the cases where partners become competitors there are always hard feelings.

Disclaimer: The above comments do not represent the thoughts, intentions, plans or strategies of my employer. They are solely my opinion.


 

Categories: Life in the B0rg Cube

October 18, 2003
@ 03:41 AM
Recently I've noticed the replacement in the buzzword lexicon of the phrase "XML Web Services" with "Service Oriented Architecture". I speculate on why I think the shift occured and what it means for XML and the Web.
 

Categories: XML

October 18, 2003
@ 02:33 AM

Elizabeth Spiers writes

If Markoff thinks all (or even most) bloggers are keeping diaries online, then Jarvis is probably right: he doesn't read blogs—which seems ironic, given that he's the technology reporter for the Times

I find her quote puzzling. From what I've seen the average weblog is an online diary. In general weblogs take the form of diaries, commentaries, link collections or some combination thereof. The most common form is the online diary which can be confirmed by selecting any dozen blogs at random from the hundreds of thousands at Blogger, LiveJournal or Xanga and examining the writings. The fact of the matter is that for every blog that is enlightened commentary about technology or politics there are a dozen blogs by some high school girl complaining about pimples and boys.

I find it amusing that the "blogs will change everything" hype crowd try to deny this. That's like denying that for a long time the only way to make money on the World Wide Web was with pr0n or that the driving incentive for broadband is copyright infringement and pr0n. Let's not forget that lots of innovation on the Web was driven by pr0n sites.

The blogerati need to accept the fact that their medium of communication is also the favored way for teenage girls to carry on in the grand tradition of "Dear Diary". Remember , just because IRC is mainly the haven of script kiddies and w4r3z d00ds doesn't make it any less useful nor does the predominance of email forwards and spam make email a pointless technology. Blogs are the same way.  


 

Categories: Ramblings

October 17, 2003
@ 04:30 AM

After Joel Spolsky's recent post on exceptions which generated lots of dissenting opinions he has attempted to recant in a way that leads one to believe he is bad at accepting critical feedback.

In his most recent posting Joel writes

And Back To Exceptions

There's no perfect way to write code to handle errors. Arguments about whether exception handling is "good" or "bad" quickly devolve into disjointed pros and cons which never balance each other out, the hallmark of a religious debate. There are lots of good reasons to use exceptions, and lots of good reasons not to. All design is about tradeoffs. There is no perfect design and there is certainly never any perfect code.

His response is a cop out and not something I'd expect from a professional software developer who had been shown the errors in his proposed solution. This non-recant actually lowers my opinion of Joel in ways his original post did not. At least the original post could be based on past experience with bad uses of exceptions or usage of exceptions in programming languages where they were bolted on such as C++. His newest post just sounds like he is trying to save face instead of critically analyzing the dissenting opinions and showing the pros and cons of his approach and that of others. The best part is that he picks perhaps the worst defense of using exceptions to counterpoint against

With status returns:

STATUS DoSomething(int a, int b)
{
    STATUS st;
    st = DoThing1(a);
    if (st != SGOOD) return st;
    st = DoThing2(b);
    if (st != SGOOD) return st;
    return SGOOD;
}

And then with exceptions:

void DoSomething(int a, int b)
{
    DoThing1(a);
    DoThing2(b);
}

Ned, for the sake of argument, could you do me a huge favor, let's use a real example. Change the name of DoSomething() to InstallSoftware(), rename DoThing1() to CopyFiles() and DoThing2() to MakeRegistryEntries().

Since I'm always one to take a challenge here goes how I'd probably write the code

void DoSomething(string name, string location)
{

try{
    InstallSoftware(name);
    CopyFiles(location);
    MakeRegistryEntries(name);

  }catch(SoftwareInstallationException e){

  RollbackInstall(name);

  }catch(FileIOException fioe){

  RollbackFileCopy(location); 

  RollbackInstall(name);

 }catch(RegistryException re){

   RollbackRegistryWrite(name);

   RollbackFileCopy(location); 

   RollbackInstall(name);

  }

DisplayInstallationCompleteMessage(name, location);

}

or even better

void DoSomething(string name, string location)
{

    try{
    InstallSoftware(name);
    CopyFiles(location);
    MakeRegistryEntries(name);

   }catch(Exception e){

     throw InstallationException(e, name, location);

  }

DisplayInstallationCompleteMessage(name, location);

}

Of course, you could ask what happens if a rollback attempt fails in which case it either should catch the exceptions in itself or throw an exception. Either way, I prefer that the above approaches to littering the code with if...else blocks.


 

Categories: Ramblings