The Microsoft Careers website has a section entitled Meet Our People where various profiles of employees of various divisions at Microsoft are highlighted. For whatever reason, I was one of the people picked this year and you can go there find my employee profile here.

The process was quite lightweight. I spoke to an interviewer on the phone for several minutes and then she sent me a transcript of key parts of our conversation which I got to edit or veto. After that there was the photo shoot and a couple of weeks later, voila.

Reading the profile, there is some stuff that stands out to me. I've already been here 3 years so I'm no longer a new guy yet I still don't feel like part of the B0rg. There is also the point about management being interested in your career and you as a person.

  • A while ago Mike Torres and I had a presentation for Brian Arbogast which was my first presentation for anyone with Vice President in their job title. While setting up my laptop, Brian chatted with Mike about a post he'd read in Mike's blog about wanting to upgrade his home sound system. Brian also mentioned that he'd remembered seeing my name come up in a lengthy internal email thread where I was in a debate with Vic Gundotra and didn't back down, he commended me for sticking to my guns. That was cool.

  • After a recent all-hands meeting I disagreed with parts of the presentations made by David Cole and Steve Liffick, so I sent them some critical feedback. They not only received it well but after exchanging some mail, Steve suggested we meet in person to discuss things further. When I eventually met with Steve, he readily accepted my  feedback so we spent a most of the time talking about Social Software as the Platform of the Future. That was fun.  

  • Our dev manager, Farookh Mohammed is just as interested as I am in making sure we have something akin to an MSN Developer Network when we start shipping our APIs for accessing MSN Spaces and we'll be working together to evangelize some ideas around this topic to upper management.

  • My boss's boss knows I'm fairly good at communicating my ideas in writing and that I'm passionate about social software so he's been encouraging me to produce a whitepaper that can be shared with various folks around work. 

  • My boss, Mike Pacholec, has told me I need to attend more conferences and has suggested that I should plan to attend at least one more conference before the end of the year.  

At the end of the profile it states that I have my dream job which is true. I get to work on software that I like using and which directly affects millions of users. All of this in a ship cycle that is measured in months instead of years. What's not to love?


 

Categories: Life in the B0rg Cube

May 2, 2005
@ 06:40 PM

Happy 50th birthday to Dave Winer. He is one of the few people in our industry to say that he has changed the world with the work he has done. From being one of the co-authors of the SOAP 1.1 specification and the author of the XML-RPC specification to being a key evangelist of the power of weblogging and RSS, Dave's impact has been felt across the world.

Dave and I have had our differences in the past (and probably still do now) but there are few people who I can point to in the software industry whose existence has been as much of a net positive to us all.


 

A bunch of folks from the Spaces team were in Asia recently talking to customers about how they used social software applications like instant messaging, blogging tools, email, social networking services, chat and dating sites. Recently Moz Hussain who's one of the product managers for the Spaces team provided some insights on current thinking about classifying users of social networking applications.

Below are excerpts from his blog post

In a people centric world, I see two major dimensions of people interaction: who I want to know about and who I want to share information with. This leads to four distinct segments as shown below.

 

1) The Content Consumer 

This group values their privacy but is voyeuristic in its desire to learn about others. One focus group participant explained how they like to compare thoughts and lifestyles of people in their social status and age bracket. They primarily use the Internet to search for information but rely on traditional communication methods for keeping in touch with close friends.

This group needs easier ways to find information, including user generated content, on a particular topic. A company that does this well in Japan is Livedoor with rich categorization and editorials on user generated content.

This group is often slightly older, but not exclusively so.

2) The Relationship Builder

This group is interested ONLY in their close circle of friends. They neither care about or want to share information with strangers. We have seen much higher prevalence of this group in Europe than elsewhere.

Relationship Builders use a variety of online and offline communications tools to share private thoughts and memories with those close to them. This can include photos, opinions, what's going on in their lives. The reason can be to keep in touch, or just for fun with friends. In China, MSN Messenger is seen as a great product for this group. In Japan, MIXI is the leading web based service for this group.

As many social networking tools are new to this group, they would benefit from greater education on the scenarios that are applicable to them.

This group is often slightly older, but not exclusively so.

3) The Social Networker

This group enjoys meeting people, even strangers, online and interacting to kill time. They enjoy chat rooms, dating services and generally having multiple superficial relationships. It is not uncommon for this group to have more than 200 contacts in their Messenger contact list.

This group is often younger and accesses the Internet from net cafes or mobile phones, i.e. away from prying eyes of parents and room mates. They often use paid for content to enrich their entertainment experience.

Many early web based social networking products such as Friendster and Orkut effectively targeted this segment.

4) The Content Creator

This group is the classic "Maven". They consider themselves experts in a field (ranging from shopping to high tech) or have a desire to express their creativity publicly. They want to get their opinions heard. They use the Internet to research topics of interest, and then create blogs to write their take on the situation.

This group is also interested in rewards for their content and opinions. There is an opportunity to align this group to service provider interests with appropriate reward mechanisms.

This group is also slightly older and has a narrower range of feature interests.

These groups are present in every geography, their relative size varies. The challenge now lies in addressing their needs and figuring out how to use each group to create a synergistic ecosystem of viewer and authors.

All great fun and why I love this job so much!

I think this classification of users of social networking services hits the mark. I also think it is quite cool that we are actually sharing this kind of information with the community of social software enthusiasts as opposed to keeping this as private market research.  I wonder what the various folks on the Corante Many2Many blog would have to say about the above classification scheme.

I like the fact that this classification takes into account online social butterflies like Robert Scoble as well people who simply want to use social software to enhance their existing real world relationships.

Putting the above data together with the Degrees of Kevin Bacon post by Mike Torres seems to imply that we are very interested in how people use social networking applications. I wonder why?

;)


 

Categories: MSN

April 28, 2005
@ 08:26 AM

I tend to talk about MSN Spaces a lot which makes people think I work on that team when in truth I work with them as well as with the MSN Messenger and Hotmail folks. Although its easy to find folks who work on Spaces by simply starting from Mike Torres's blog, it isn't so straightforward for Hotmail or Messenger. Below is a short list of a few of MSN communications services folks blogs I am aware of

HOTMAIL BLOGS

MSN MESSENGER BLOGS

There are a bunch of other blogs by the folks on the various client and server teams but these four are the ones that talk most about the products they work on. In fact, if you browse the various blog rolls on their spaces and mine you'll notice that most of the MSN folks use their spaces for personal stuff not work blogging.


 

Categories: MSN

April 28, 2005
@ 08:06 AM

Below is a grab bag of mildly interesting stuff that I happened to come across while browsing various blogs in the MSN Spaces universe

  • Today is Bloggers 101. I've already seen a bunch of Spaces blogs where folks have posted 101 facts about themselves. So far I've liked Deadites: My 101.

  • A couple of folks are trying to have an MSN Spaces block party. I don't know how successful it's going to be but this is the kind of thing folks used to use Meetup.com for. If they can't have a party I hope they at least get enough people to have a blogger dinner.

  • According to the PubSub linkcounts page for yesterday the most linked domains in the blogosphere where http://storage.msn.com (367,042 links links from 13,577 sites) and http://spaces.msn.com (30,727 links from 7,539 sites). Not only are we growing to be the biggest blog hosting service on the Web but it looks like we are becoming the most active community as well.


 

Categories: Mindless Link Propagation | MSN

Daniel Steinberg has a an article entitled Bosworth's Web of Data where he discusses some of the ideas Adam Bosworth evangelized in his keynote at the MySQL Users Conference 2005. Daniel writes,

Bosworth explained that the key factors that enabled the web began with simplicity. HTTP was simple enough that any "P" language or JavaScript programmer could build applications. On the consumption side, web browsers such as Internet Explorer 4 were committed to rendering whatever they got. This meant that people could be sloppy and they didn't need to be high priests of syntax. Because it was a sloppy standard, people who otherwise couldn't have authored content did. The fact that it was a standard allowed this single, simple, sloppy, open wire format to run on every platform.
...
The challenge is to take a database and do for the web what was done for content. Bosworth explained that you "need a model that allows for massively linear scalability and federation of information that can spread effortlessly across a federated web."

Solutions that were suggested were to use XML and XQuery. The problem with XML is that unlike HTML, there is not a single grammar. This removed the simple and sloppy aspects of the web. The problem with XQuery is the time it took to finish the specification. Bosworth noted that it took more than four years and that "anything that takes four years is not worth doing. It is over-designed. Intead, take six months and learn from customers."
...
The next solution used web services, which began as an easy idea: you send an XML request and you get XML back. Instead, the collection of WS-* specs were huge and again, overly complicated. Bosworth said that this was a deliberate effort on the part of the companies that control the specs, like IBM and Microsoft, which deliberately made the specification hard, because then only they could deliver technology to do it.
...
Bosworth predicts that RSS 2.0 and Atom will be the lingua franca that will be used to consume all data from everywhere. These are simple formats that are sloppily extensible. Anyone who wants to can use these formats to consume content or to author content. Contrast this with the Semantic Web, which requires that you get a large group of people to agree on the schema of everything.

There are lots of interesting ideas here. I won't dwell on the criticisms of XQuery & WS-* mainly because I tend to agree that they are both overdesigned and complicated. I also wont dwell on the apparent contradiction inherent in claiming that the Semantic Web is doomed because it requires people to agree on the same schema for everything then proposing that everyone agree on using RSS as the schema for all data on the Web. I have a suspicion of what he sees as the difference but I'll wait for a blog post from him clarifying that.

What I find very interesting is using RSS is the data access format for the Web. RSS gained popularity as a way to syndicate blog posts and news sites but its turned out to be a lot more versatile than that. Sites like Feedster and Amazon's OpenSearch technology show you can use RSS as a mechanism for providing search results and integrating search engines respectively. Podcasting shows you can use RSS to syndicate digital media content instead of just plain old text or HTML. With Amazon's syndicated feeds one can keep abreast of when new CDs, books and more are released.

Over the weekend I wrote the MSN Spaces photo album browser page which displays slideshows of all the photos in the various albums on a particular user's MSN Spaces space. This page also can display the photos on a randomly selected space. This webpage is entirely powered by RSS. The photos are obtained from the RSS feed for the Space and the list of random spaces is obtained by querying MSN search with the query "site:spaces.msn.com photo album" and requesting the results as RSS. In fact, the information from the MSN Spaces RSS feeds is enough to build something like the Flickr related tags browser, where instead of showing related tags one could show spaces related to the user from the information in their blog roll which happens to also be provided in the RSS feed. Pretty nifty and all without requiring building a REST, SOAP or XML-RPC API.

In situations where one simply wants to expose read-only data via a service on the Web, it's looking like RSS is the technology to beat. As more and more information is exposed as RSS feeds, there will be even more interesting things people will be able to do with this technology. At Microsoft we definitely are gung ho about exposing as much data as possible via RSS and I've been amazed at how much enthusiasm there is around the opportunites in this area.   

Side Note: Yesterday while at the Microsoft Research Social Computing Symposium I was chatting with Randy Farmer, who's one of the guys behind Yahoo! 360° and Yahoo's purchase of Flickr, and I mentioned that it seemed like 2003 was the year that RSS really started to take off. This was also the year that Dave Winer froze the RSS 2.0 spec and Sam Ruby gathered all the malcontents in the XML syndication space and gave them a shiny new toy to play with in Atom. Coincidence?


 

Categories: Syndication Technology | XML

Almost four years ago I wrote an article entitled C# from a Java Developer's Perspective which is still one of the most popular comparisons of C# and Java on the Web. The article gets a couple thousand hits a month and I still get email about it from developers thanking me for writing it. Given the amount of changes in Java 1.5 5.0 and C# 2.0 I think the time has come to update this article. Below is my proposed table of contents for the new version. I'd appreciate comments on anything people thing is either missing or placed incorrectly.

  1. The More Things Change The More They Stay The Same
    This section describes concepts and language features that are almost exactly the same in C# and Java.
    1. We Are All Objects
    2. Keyword Jumble
    3. Of Virtual Machines and Language Runtimes
    4. Heap Based Classes and Garbage Collection
    5. Arrays Can Be Jagged
    6. No Global Methods
    7. Interfaces, Yes. Multiple Inheritance, No.
    8. Strings Are Immutable
    9. Unextendable Classes
    10. Throwing and Catching Exceptions
    11. Member Initialization at Definition and Static Constructors
    12. Generics - new!!!
    13. Boxing - new!!!
    14. Variable Length Parameter Lists - new!!!

  2. The Same But Different
    This section describes concepts and language features that differ either only in syntax or in some similarly minor manner between C# and Java.
    1. Main Method
    2. Inheritance Syntax
    3. Run Time Type Identification (is operator)
    4. Namespaces
    5. Constructors, Destructors and Finalizers
    6. Synchronizing Methods and Code Blocks
    7. Access Modifiers
    8. Reflection
    9. Declaring Constants
    10. Primitive Types
    11. Array Declarations
    12. Calling Base Class Constructors and Constructor Chaining
    13. For or is that foreach loops? - new!!!
    14. Metadata Annotations - new!!!
    15. Enumerations - new!!!

  3. An Ever So Slight Feeling of Dj Vu
    This section describes concepts and language features that exist in C# that are similar to those that exist in Java but with a significant difference.
    1. Nested classes
    2. Threads and Volatile Members
    3. Operator Overloading
    4. switch Statement
    5. Assemblies
    6. Collections
    7. goto (no longer considered harmful)
    8. Virtual Methods (and final ones too)
    9. File I/O
    10. Object Serialization
    11. Documentation Generation from Source Code Comments
    12. Multiple Classes in a Single File
    13. Importing Libraries
    14. Events
    15. Cross Language Interoperability

  4. Now For Something Completely Different
    This section describes language features and concepts that exist in C# and have no Java counterpart.
    1. Deterministic Object Cleanup
    2. Delegates - changed!!!
    3. Value Types (Structs)
    4. Run Time Type Identification (as operator)
    5. Properties - changed!!!
    6. Multidimensional Arrays
    7. Indexers
    8. Preprocessor Directives - changed!!!
    9. Aliases
    10. Runtime Code Generation
    11. Pointers and Unsafe Code
    12. Pass by Reference
    13. Verbatim Strings
    14. Overflow Detection
    15. Explicit Interface Implementation
    16. Friend Assemblies - new!!!
    17. The Global Namespace Qualifier - new!!!
    18. Continuations (Iterators) - new!!!
    19. Partial Classes - new!!!
    20. Anonymous Methods - new!!!

  5. Wish You Were Here
    This section describes language features and concepts that exist in Java and have no C# counterpart.
    1. Checked Exceptions
    2. Cross Platform Portability (Write Once, Run Anywhere)
    3. Extensions
    4. strictfp
    5. Dynamic Class Loading
    6. Interfaces That Contain Fields
    7. Anonymous Inner Classes
    8. Static Imports - new!!!

 

Categories: Technology

Aaron Skopnnard has posted a response to my Contract-First XML Web Service Design is No Panacea blog post. In his post The virtue of contract-first Aaron Skonnard writes

I love being challenged on my opinions. I've been challenged extensively regarding my opinion on contract-first development, although mostly by folks at Microsoft like Don , Doug , and Dare . The funny thing is when I have the same discussions with folks in the field building systems today, it's a no-brainer.
 
So why the disconnect between vendors and the rest of the world?
 
I believe it's because most vendors don't see (or appreciate) the main virtue of the contract-first approach, which has more to do with collaboration than interoperability. The latter is a result of the former. Let me explain.
 
Interoperability is the net result of a well-designed contract. By "well-designed" I mean a contract that experiences fewer interoperability issues when used across a variety of toolkits. Simply using contract-first does not guarantee a good contract. However, increased collaboration during contract does. This means getting all parties (everyone who will have to deal with the contract) involved early, during design, so you can identify what will and won't work in each implementation environment. This allows you to bring local expertise to the table early in the process before the implementation investment begins. This process influences the subset of XSD constructs that can be safely used given the identified limitations.
The first thing that I'll point out is that I'm not a 'vendor'. Now that I work at MSN, I am as much a customer of the XML Web Services stuff coming out of the Indigo folks as anybody else. My approach to XML Web Service design comes from the perspective of having to figure out what strategy we should use when deploying services that will be used by millions of customers either directly or indirectly.
 
With that out of the way, I can focus on the fundamental error in the generalization presented by Aaron Skonnard. He writes "This means getting all parties (everyone who will have to deal with the contract) involved early, during design". Unfortunately there is simply no chance that
providers of XML Web Services on the Web whether they are big companies like Microsoft, Google and Amazon or small startups like del.icio.us, Bloglines or Flickr can poll all the potential users of their XML web services to figure out what XSD constructs their toolkits can handle and then design a schema that uses the intersection of these features.
 
The approach Aaron encourages may work if you are in a small company and are designing services that will be used by a few parties but doesn't really work if you are providing services on the Web or even at a large company where it is hard to get everyone who will be using the service in the same country let alone the same meeting room. The latter scenario is what likely happened in the original mail to XML-DEV which sparked my blog post on Friday.
 
I should clarify that when I say 'code-first' development that this doesn't mean that there shouldn't be guidelines as to what types are exposed as XML Web Services. At work we've settled on using a small set of types within XML Web Services; System.Int32 and other numeric types, System.Double, System.String, System.DateTime, System.Boolean, various instances of System.Enum and arrays of System.Byte for base 64 encoded binary data. The only collection types we pass around are arrays. This maps to a very small subset of XSD and is reminiscent of the set of types supported in XML-RPC.
 
With these guidelines our developers can build XML Web Service applications in a 'code first' manner yet have a high degree of confidence that the services we build will be interoperable across various toolkits. One doesn't have to be an expert (or even deeply knowledgeable) about complex technologies like XSD and WSDL to build XML Web Service applications in this manner. And quite frankly, I think it is a waste of our developer's time to make them experts at these technologies when it tangential to the bulk of the work their code has to do.
 
 

 

Categories: XML Web Services

I mentioned in a recent post that I was considering writing an article entitled Using Javascript, XMLHttpRequest and RSS to create an MSN Spaces photo album browser. It actually took less work than I thought to build a webpage that allows you to browse the photo albums in a particular person's Space or from a randomly chosen Space. 

I haven't used Javascript in about 5 years but it didn't take much to put the page together thanks mostly to the wealth of information available on the Web.

You can find the page at http://www.25hoursaday.com/spaces/photobrowser.html 

The page requires Javascript and currently only works in Internet Explorer but I'm sure that some intrepid soul could make it work in Firefox in a couple of minutes. If you can, please send me whatever changes are necessary.  


 

Categories: MSN | XML

The current issue of Seattle's favorite free weekly newspaper has an article entitled Microsoft Caves on Gay Rights which describes recent happenings in local politics about how Microsoft apparent withdrawal of support for a state bill that would prevent discrimination against gays and lesbians may have been key in preventing the law from passing.

I've tried to write down my feelings about the issue several times over the past few days but words have escaped me. In the meantime you should read some posts from others at Microsoft who've done a better job a capturing their disappointment with our employer than I seem able.

  1. Robert Scoble: Steve Ballmer's memo posted, my reply
  2. Cyrus Najmabadi: Gay Rights (part 2)
  3. Adam Barr: Microsoft and the Anti-Discrimination Bill

I also strongly disagree with Vic Gundotra's post in his response Responding to Scoble. Corporations should not be amoral entities that only exist to generate money. They employee members of a community, they exist as part of community and their actions affect both local and global communities. Sometimes the greatest sins are acts of omission instead of commission.

I hope this feeling of disappointment will soon pass.


 

Categories: Life in the B0rg Cube