April 4, 2006
@ 07:02 PM

Eric Gunnerson has a blog post entitled Mom and Apple Pie where he writes

What do following words all have in common:

  • Passion
  • Innovation
  • Synergy
  • Agility

They're what I call "Mom and Apple Pie" words, for two reasons.

First, they all have a positive connotation. Who wouldn't want to be more agile, more innovative? Who is going to argue against having a more synergistic approach? Shouldn't everybody have passion?

Combine that with the fact that these words are used in a content-free environment, and you get a nice-sounding platitude that means nothing, but makes it sound like you are for changing things.

You don't think we should have more apple pie? What's wrong with you? Why do you hate your mother?

People who want to make an organization more agile don't say, "We're going to improve agility". They say, "we're going to get rid of <x>, we're going to change <y>, we're going to release every <x> months". People who want to improve synergy say, "Our users are trying to do <x>, and it's way too hard. What do I need to do to help you fix this?"

I have a blog post in my head about the top 3 things I'd like to see from Microsoft executives. One of the three things I'd like to see our execs do addresses one of the words mentioned by Eric Gunnerson; agility.

I am currently part of the Plaforms & Services Division which encompasses both Windows and MSN Windows Live. There've been two reorganizations that have affected this division in the past eight months. Both times, the claim has been that these reorganizations are intended to boost our 'agility'. The first reorg involved adding a new layer of vice presidents between David Cole who ran MSN at the time and Steve Ballmer. This meant that at the time I had four people with the title 'Vice President' between me and our CEO [Brian Arbogast->Blake Irving->David Cole->Kevin Johnson]. How adding more management made us more agile was a mystery to me. Our most recent reorganization involved splitting the teams that build the Windows kernel from the team that builds the Windows user interface and the teams that build the Windows Live services from the teams that build the user interfaces. In practical terms it means that when I work on features like Photo E-Mail and Social Networking, the folks I work with not only don't share the same boss as me but our management chains don't meet until it gets all the way up to Kevin Johnson and Jim Allchin (i.e. 3 vice presidents up the hierarchy later). I don't see how this makes us more agile but maybe I'm just dumb.

At Microsoft, agility has joined innovation and passion as words that now have negative connotations to me. The longer I am at Microsoft, the more words I end up excising from my vocabulary.

I agree with Eric that what I'd like to see is less buzzwords and more concrete talk about how things are being improved for our users. I'm still waiting for the mail from Kevin Johnson which contains an FAQ explaining why adding layers of management and splitting up teams makes us more agile. I hope I'm not waiting in vain.


 

Categories: Life in the B0rg Cube

I stopped paying attention to the syndication wars a couple of months ago. I barely have time to stay on top of all the stuff I have to worry about as part of my day job let alone keeping track of the pointlessness that is the Atom vs. RSS debate. Unfortunately, every once in a while something happens that forces me to pay attention because I'm also the project lead for RSS Bandit.

One cool thing about XML syndication formats like RSS and Atom is that they are easily extensible. This means that anyone can come up with a new extension to the RSS/Atom formats which adds a new feature but is ignored by feed readers that don't understand the extension. Some of my favorite extensions are slash:comments which provides a count of the number of comments in a feed and wfw:commentRss which provides the URL to the feed for the comments to a blog post in the feed. One of my work items for the next version of RSS Bandit is to make it easier for people to 'watch' the comments for a blog post they are interested in if it supports these extensions. That way I can get get a notification everytime some comment thread I am interested in gets new posts directly from my aggregator instead of using other tools like CoComment.

A few days ago Sam Ruby posted an entry entitled Rogers Switches! where he mentioned that he now redirects all requests for his RSS feeds to his Atom feed. This meant that in RSS Bandit I now no longer see the comment count for the blog posts in Sam's feed nor can I view the comments to his posts directly within my aggregator. Sam and I had the following exchange in his blog comments when I discovered the ramifications of his change

I was trying to figure out if I’d introduced a bug in RSS Bandit to make your comment count and inline comments disappear. Instead, it seems you have made your feed less useful as part of the fallout of yet another iteration of the eternal pissing match which is the XML syndication wars.

sigh

Posted by Dare Obasanjo at 20:25

Dare, is this is your way of saying that you don’t intend to support the Feed Thread Extension?  I’d think that you would be on the watch for it.

Posted by Sam Ruby at 22:08

I looked at the draft of the Feed Thread Extension specification Sam linked to and it seems like a reinvention of the functionality provided by the slash:comments, wfw:commentRss and annotate:reference extensions. Great, not only do we now have to deal with the an increase in the number of competing XML syndication formats due to the Atom process ...By the way, have you seen the Atom 0.3 vs. Atom 1.0 debate? I told you so... we now also have to deal with duplicates of all the popular RSS extensions as well? Give me a break!

That said, you can expect support for these new extensions in the next version of RSS Bandit. At the end of the day, what matters is building useful software for our users regardless of how many petty annoyances are thrown in our way on the road there.


 

I mentioned recently that my new kick is storage platforms for Internet-scale services. Sometimes it's hard to describe the problems that large scale services have with modern relational databases. Thankfully, I now have the post I want a big, virtual database by Greg Linden to crib a simple 1 sentence description of the problem and solution. Greg writes

In my previous story about Amazon, I talked about a problem with an Oracle database.

You know, eight years later, I still don't see what I really want from a database. Hot standbys and replication remain the state of the art.

What I want is a robust, high performance virtual relational database that runs transparently over a cluster, nodes dropping in an out of service at will, read-write replication and data migration all done automatically.

I want to be able to install a database on a server cloud and use it like it was all running on one machine.

It's interesting how your database problems change when you're thinking about hundreds of transactions a second over terabytes of data belonging to hundreds of millions of users.You might also be interested in Greg's post on Google's BigTable.

PS: If building large scale services relied on by hundreds of millions of people to communicate with their friends and family sounds interesting to you, we're still hiring for test, developer and PM positions.
 

Categories: Web Development

In his post Exploring Live Clipboard Jon Udell posts a screencast he made about LiveClipboard. He writes

I've been experimenting with microformats since before they were called that, and I'm completely jazzed about Live Clipboard. In this screencast I'll walk you through examples of Live Clipboard in use, show how the hCalendar payload is wrapped, grab hCalendar data from Upcoming and Eventful, convert it to iCalendar format for insertion into a calendar program, inject it natively into Live Clipboard, and look at Upcoming and Eventful APIs side-by-side.

All this leads up to a question: How can I copy an event from one of these services and paste it into another? My conclusion is that adopting Live Clipboard and microformats will be necessary but not sufficient. We'll also need a way to agree that, for example, this venue is the same as that venue. At the end, I float an idea about how we might work toward such agreements.

The problem that Jon Udell describes is a classic problem when dealing with mapping data from different domains. I posted about this a few months ago in my post Metadata Quality and Mapping Between Domain Languages where I wrote

The problem Stefano has pointed out is that just being able to say that two items are semantically identical (i.e. an artist field in dataset A is the same as the 'band name' field in dataset B) doesn't mean you won't have to do some syntactic mapping as well (i.e. alter artist names of the form "ArtistName, The" to "The ArtistName") if you want an accurate mapping.

This is the big problem with data mapping. In Jon's example, the location is called Colonial Theater in Upcoming and Colonial Theater (New Hampshire) in Eventful. In Eventful it has a street address while in Upcoming only the street name is provided. Little differences like these are what makes data mapping a hard problem. Jon's solution is for the community to come up with global identifiers for venues as tags (e.g. Colonial_Theater_NH_03431) instead of waiting for technologists to come up with a solution. That's good advice because there really isn't a good technological solution for this problem. Even RDF/Semantic Web junkies like Danny Ayers in posts like Live clipboard and identifying things start with assumptions like every venue has a unique identifier which is it's URI. Of course this ignores the fact that coming up with a global, unique identification scheme for the Web is the problem in the first case. The problem with Jon's approach is the same one that is pointed out in almost every critique of folksonomies, people won't use the same tags for the same concept. Jon might useColonial_Theater_NH_03431 while I use Colonial_Theater_95_Maine_Street_NH_03431 which leaves us with the same problem of inconsistent identifiers being used for the same venue. 

I assume that for the near future we continue seeing custom code being written to make data integration across domains work. Unfortunately, no developments on the horizon look promising in making this problem go away.

PS: Ray Ozzie has a post on some of the recent developments in the world of Live Clipboard in his post Wiring Progress, check it out.


 

Categories: Technology | Web Development

One of the features I've been working on is soon going to see the light of day. In the post A picture is worth a thousand words, Vlada Breiburg talks about an upcoming feature in the Windows Live Mail Desktop Beta (formerly Outlook Express) which we worked on together. She writes

We are (re)introducing Photo E-mail—a super duper easy way to share photos (for those of you who use MSN Premium client this will be very familiar).


As soon as you insert a few pictures they show up in the message with an easy way to add some (funny) captions. We’ve also decided to give you a few fun and productive tools to make your pictures truly yours:

  • you’ll be able to add some borders
  • change pictures to black and white
  • change background color
  • and even auto-correct.

When designing this we debated a lot of what we should offer and decided to start with these tools until we hear more user feedback. We don’t ever want to be a full photo editing tool, but we do want to make things easier for our customers (Thank you Heather for making the tough calls; Heather was the original PM on the feature). So let us know what you think!

On sending these pictures, the photos will be uploaded to our servers and smaller versions will be placed inside the message (Thank you Dare, Richard, and Jura from the storage team on making this happen!). This will make sure that your friends and family don’t get huge messages that fill out their inboxes...

If your friends want to view bigger versions of the photos, all they have to do is hit “Play slideshow”. This is where are our friends from the Spaces team come in. They’ve created an awesome viewer for your friends and family to enjoy your pictures (Thank you DeEtte, Greg, and James).

I worked with both Heather (the original PM for the feature) and Vlada on making the Photo E-mail feature come together. It was different working on a feature for one of our desktop applications instead of a web-based property. As usual it was fun to work on a feature that I not only would use but could recommend to friends and family as well. Working on consumer software definitely rocks in this regard.

Working on the services for this feature clarified some of the thinking I've been doing around photo APIs for MSN Windows Live Spaces. I can't wait until we are ready to put some new stuff up on the Windows Live Developer Center. Exciting times indeed.


 

Categories: Windows Live

March 28, 2006
@ 06:56 AM

Today I read two contradictory posts about Microsoft employees and passion. The first post I found via Mini-Microsoft. It is entitled Microsoft, Your Slip Is Showing (Passion) and is excerpted below

And this partly explains the passion of the comments you will read on this post at Mini-Microsoft.

Skewering the Microsoft leadership. Calling for heads to roll. Frustration. Disgust. Dark humor. Cynicism. Optimism. Pessimism. Rage. Love. Hate.

Another reason -- big reason -- why the Microsoft commenters are so passionate: They give a damn. Whatever else you may think about their comments, their Give-A-Damn meter is registering in the Green. Sure, it may seem like I've got it ass backwards and they're pegged out in the dreaded Red zone.

I'm sure a few are indeed red-zoning, but what I see mostly are folks who want to to be the best. They want their team to be the best. They are proud people. They are winners. They hate the thought of losing -- in any endeavor... to any person or thing.

The people who work for Microsoft are not only some of the best minds in the computer industry, they give a damn about what they do. That is a good thing.

I could be critical of this post but Rory Blyth beat me to the punch in his [unrelated] yet quite relevant post entitled Ten Minutes of Sincerity - Enthusiasthma where he writes

Enthusiasthma

The contemporary blight of communication, at least at Microsoft, is passion. You can’t walk three feet on the Redmond campus without hearing someone talk about passion. If you interview for a job at Microsoft, you will get drilled about your passion. During the course of your job, you will attend meetings in which people constantly refer to passion. You will receive emails about passion.

Again, like communication, passion is a good thing. It’s good to talk. It’s good to be excited. But, it’s gotten to the point that the passion has become a sort of disease. I call it "Enthusiasthma"
...
This notion of constantly being excited is exhausting. It’s not healthy. It isn’t normal. It’s downright stupid and counter-productive.

People at the company are so terrified now of not appearing to show passion that they’ll give you Oscar-winning speeches about what they had for lunch and why it was so great for customers. If you end a sentence with fewer than three exclamation points, offset by several spaces to isolate the excitement and drive it home, then you clearly aren’t really behind whatever it is that you’re talking about.
...
As long as employees feel pressured to constantly overflow with passion, they’re going to be terrified to speak when it’s time to address what isn’t going so well. I’ve watched projects continue, and not with any great success, fueled mainly by passion. In those cases, yeah, people are being passionate, but they’re putting all this passion into things that aren’t really helping. They’ve been fooled by their own passion.

And this is happening company-wide. It’s like open honesty and skepticism are getting brushed aside for passion. It’s spreading thanks to that other often celebrated social disease, the meme. It’s everywhere. And the word is used so often that it’s losing its meaning.

At Microsoft, one of the other words you’ll hear left and right is “innovation.” I’ve already said what I want to say about this awful word, but regardless of how overused I think the word “innovation” is, I still understand its importance.

So here’s something to think about: As long as people are running around with all this passion, having left their critical thinking and skepticism in the late 90’s, and while they’re driving these sometimes winning/sometimes losing projects with all this passion, they’re handicapping their ability to innovate. Innovation is only good as long as what’s being created is actually useful.

We have this situation, then, where one company ideal, innovation, is getting squashed by another company ideal, which is passion.

The problem is that all of this reeks of extremism and zealotry, which never lead to real success. The way you win with extremism is by fooling yourself into believing that everything you think is right, and then bludgeoning your enemies with your abundant resources until they give. That’s not really winning.

Rory says a lot of what I would have said in criticism of the passion post I found via Mini-Microsoft and does it with a lot less bitterness than I could ever muster. If you ask me, Microsoft could do with a lot less of its so-called passionate employees.


 

Categories: Life in the B0rg Cube

Alex Russell has a blog post entitled ajaxWrong where he writes

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

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

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


 

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

If you'd like an example of what is wrong with your feeds. Click on http://feedvalidator.org/check?url=http://nothing-more.blogspot.com/atom.xml which shows the results of validating the feed for Derek Denny-Brown's blog. Below is the list of errors returned

This feed does not validate.

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

    <feed xmlns="http://purl.org/atom/ns#" version="0.3" xml:lang="en-US">
  • line 4, column 0: Unexpected version attribute on feed element [help]

    <feed xmlns="http://purl.org/atom/ns#" version="0.3" xml:lang="en-US">
  • line 7, column 0: type attribute must be "text", "html", or "xhtml" [help]

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

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

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

    <modified>2006-03-27T00:01:47Z</modified>
  • line 12, column 0: Unexpected url attribute on generator element [help]

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

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

    <feed xmlns="http://purl.org/atom/ns#" version="0.3" xml:lang="en-US">
  • line 22, column 0: Undefined entry element: issued (6 occurrences) [help]

    <issued>2006-03-26T15:25:00-08:00</issued>
  • line 23, column 0: Undefined entry element: modified (6 occurrences) [help]

    <modified>2006-03-27T00:01:47Z</modified>
  • line 24, column 0: Undefined entry element: created (6 occurrences) [help]

    <created>2006-03-27T00:01:47Z</created>
  • line 27, column 0: type attribute must be "text", "html", or "xhtml" (6 occurrences) [help]

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

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

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

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

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

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

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

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

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

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

    <div xmlns="http://www.w3.org/1999/xhtml">

Thanks for listening.


 

March 25, 2006
@ 04:31 PM

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

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

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

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

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

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

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

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

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

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


 

Categories: XML Web Services

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

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

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

Johnson said three goals drove the changes:

Advance Microsoft’s software plus services and Live strategy

Increase Microsoft’s agility in delivering innovation to customers

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

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

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

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


 

Categories: Windows Live