Greg Linden has a blog post entitled Early Amazon: Shopping Cart Recommendations where he writes

I loved the idea of making recommendations based on the items in your Amazon shopping cart. Add a couple things, see what pops up. Add a couple more, see what changes. The idea of recommending items at checkout is nothing new. Grocery stories put candy and other impulse buys in the checkout lanes. Hardware stores put small tools and gadgets near the register. But here we had an opportunity to personalize impulse buys. It is as if the rack near the checkout lane peered into your grocery cart and magically rearranged the candy based on what you are buying.
...
I hacked up a prototype. On a test site, I modified the Amazon.com shopping cart page to recommend other items you might enjoy adding to your cart. Looked pretty good to me. I started showing it around. While the reaction was positive, there was some concern. In particular, a marketing senior vice-president was dead set against it. His main objection was that it might distract people away from checking out -- it is true that it is much easier and more common to see customers abandon their cart at the register in online retail -- and he rallied others to his cause.

At this point, I was told I was forbidden to work on this any further. I was told Amazon was not ready to launch this feature. It should have stopped there. Instead, I prepared the feature for an online test. I believed in shopping cart recommendations. I wanted to measure the sales impact.

I heard the SVP was angry when he discovered I was pushing out a test. But, even for top executives, it was hard to block a test. Measurement is good. The only good argument against testing would be that the negative impact might be so severe that Amazon couldn't afford it, a difficult claim to make. The test rolled out
...
The results were clear. Not only did it win, but the feature won by such a wide margin that not having it live was costing Amazon a noticeable chunk of change. With new urgency, shopping cart recommendations launched.

On the O'Reilly Radar site, Marc Hedlund points to this post as an example company leadership that encourages employees to not only come up with innovations but go head-to-head with management to get them out to customers.

It's interesting how different people look at the same story. When I originally read the story, what jumped out to me was that Amazon must have a great A/B testing framework which allows them to measure such tweaks to the user experience of their site so accurately. Coincidentally, I just had lunch with one of the folks at work who is building a generic A/B testing framework for Windows Live, MSN and third party developers; the Microsoft Experimentation Platform.

I wonder how many web companies have the infrastructure to test and measure the kind of change Greg prototyped at Amazon on their website today? Probably not a lot. We should fix that.


 

From the Microsoft press release Microsoft Introduces New Version of Windows Live Local we learn

REDMOND, Wash. — May 23, 2006 — Microsoft Corp. today announced the third release of Windows Live™ Local, the company’s online local search and mapping service that gives people the ability to quickly find maps, directions and local search information that is layered on top of rich, immersive aerial photography.
...
New Sharing Capabilities

The following new capabilities in the online service enable the seamless sharing of localized knowledge:

Real-time traffic flow. Customizable driving directions are now even more useful with the addition of real-time traffic flow and incident reporting provided by Traffic.com. This functionality will be available only in the U.S. release.

Collections. Social networking functionality allows customers to create lists of favorite landmarks and locations, attach personal photos and save them to a Scratchpad. Collections can be saved, recalled later, “permalinked,” and shared with friends and community in e-mail or through their MSN® Spaces blog.

Integration with Windows Live Messenger. Sharing maps and location information from within Windows Live Messenger chats is easier. Users begin a sharing session from the Actions menu. People sharing a chat session can see and interact with the same Windows Live Local map and benefit from a shared mapping and local search experience.

Integration With Microsoft Office Outlook

Also being released today is Windows Live Local Add-in for Microsoft Office Outlook. This add-in introduces Windows Live Local mapping capabilities to the Outlook Calendar, enabling Outlook users to find and print maps and directions to meeting locations from within Outlook...This add-in is available for users of Outlook running on Windows® XP and Outlook 2003 and can be downloaded free of charge from http://outlook.local.live.com.

New Tools for Businesses and Developers

Virtual Earth map control was also released today, enabling developers to bring the same great mapping, imagery and local search capabilities into their business applications and "mashups" (Web applications that seamlessly combine content from more than one source). Virtual Earth map control is available to all developers free of charge for limited use and can be licensed for commercial service and support along with the rest of the Virtual Earth platform components. Windows Live Local is built on the Virtual Earth platform, and includes Virtual Earth map control. Key new features include support for address lookups and driving directions, improved local search functionality, and the ability to easily display standard data sets and Windows Live Local user Collections.

Expansion of Windows Live Local Into and the U.K.

Following last year’s launch of Windows Live Local in the U.S., its arrival, along with that of the MSN Virtual Earth platform, in the U.K. and Canada is evidence of Microsoft’s ongoing commitment to provide this set of services in new markets and regions. Customers in these countries will experience similar high-quality local search and driving directions capabilities currently available in the U.S. Features such as bird's-eye-view imagery, improved aerial views and real-time traffic will be included in future releases and updates. Bird’s-eye-view imagery, also known as oblique imagery, is an image from an angled view taken from a range of 3,000 to 3,500 feet. The perspective offers the customer a unique view of a given area at superior resolution.

The Virtual Earth folks just keep cranking out releases at a great pace. The traffic flow information is something I've been dying to get so that I don't have to get directions from Windows Live Local and then have to go to the Seattle Area Trafic page to see what traffic looks like. Adding the bird's eye imagery to countries besides the U.K. is pretty cool too. I wonder if I'll ever get bird's eye imagery of Lagos.

On a side note, our team worked on the user collections feature with the VE folks. The cool thing about being a platform team is that we are like sand on the beach we get in everything. ;)


 

Categories: Windows Live

May 24, 2006
@ 01:27 AM

As someone who was raised in the third world, I can't help but shake my head at articles like Study: Obesity rises faster in poor teens which begins

Older American teenagers living in poverty have grown fatter at a higher rate than their peers, according to research that seems to underscore the unequal burden of obesity on the nation's poor.

"Today the percentage of adolescents age 15-17 who are overweight is about 50 percent higher in poor as compared to non-poor families, a difference that has emerged recently," said Johns Hopkins' sociologist Richard Miech, the study's lead author.

Being poor and being overweight seems like an oxymoron to me. Or at least it was when I was growing up. You gotta love America, where the poor are overweight and people go hunting on a full stomach. :)
 

I've been reading some interesting conspiracy theories about why some recent Microsoft product launches have missed the boat on targetting features of interest to tech geeks.

In his post Microsoft's lack of action will slow Podcasting Growth Todd Cochrane writes

Well it is pretty obvious that Microsoft did not get Podcasting support built into Windows Media Player 11 and all I can say is that they obviously blew it. I have been debating what to say for a few days. My summation is not fit to print, what I really don't understand is how they could have been so stupid.

They had a opportunity with Windows Media Player 11 to get in the game, I can guarantee that their inaction will slow the growth of podcasting in a big way. But it makes sense Podcasting does not make them any money, if I were a betting man I bet MTV had something to say in the process and likely killed any podcasting integration as it would have made the URGE network a lesser value.

In his post How Internet Explorer Stifles Microsoft Devanshu Mehta writes

Microsoft has chosen the growth of IE over every other division in the company for 10 years now. Windows versions from 95 onwards have suffered enough. Now, the company’s IE-centric view of its business is hurting younger divisions of the company that have a chance of becoming a major force as the company looks to take on Google...It all began when MSN announced their AdCenterGoogle AdWords- sells text-based, contextual, per-click advertising for MSN properties on the internet. Curious, I went to sign up for an account...I was more curious in Microsoft’s method, their design and approach as compared to my experience with AdSense. So I went to the MSN adCenter site and clicked to sign up. service which – similar to

Lo and behold:

Microsoft adCenter does not currently support the web browser you are using. Please sign in using Internet Explorer 6+. More about system requirements
Oh great! Another MS web site that does not work with Firefox. So I click on the phrase system requirements to find out what I would need. Would a Mac user like me have any recourse? Or did MS not want my business? It only got worse. The System requirements link did not work either! Not only could they not design a web site for my browser, they couldn’t even manage to create a link to their requirements page that I could click on!

Unlike Devanshu and Todd, I don't think there are sinister conspiracy theories for why two Microsoft products were released and ignored features of interest to the geek demographic. In every product release, you have a limited amount of resources and time in which to apply those resources to your next version. This means that you tend to focus on features that will provide the most bang for the buck and may ignore features that have limited appeal such as supporting a browser which is used by 8% of the market or a media subscription model is only used by 1% of internet users. I don't always agree with the practice of deciding on features based on market penetration statistics but I can understand when product teams make such decisions. I suspect that is more likely the cause of these omissions than some nefarious collusion between MTV and the Windows Media team or some plot to ensure IE's market dominance by having Windows Live services require only that browser.

Disclaimer: The post above is my own personal opinion and does not reflect the opinions, intentions or strategies of my employer or the Microsoft product teams referenced.


 

Categories: Life in the B0rg Cube

I took a shower on campus this morning because I got stuck in traffic and didn't have enough time to do my work out. Usually I'd still go to the gym just to take a shower but thanks to the recent changes I could just come into work and use the showers in my building. There were a bunch of folks in the locker room and the conversation dwelled on the return of the towels for most of the time I was there. I couldn't help but remember one of my old blog posts entitled On Cost Cutting: Penny Wise, Pound Foolish where I wrote

Recently I found out that we no longer had office supplies on the floor of the building I work in. Now if you need to grab a pen or get a marker after your last one runs out in the middle of a meeting you need to go upstairs. Folks have given me the impression that this is due to the recent cost cutting drive across the company. At first, I couldn't figure out why disrupting people by making them go to another floor for office supplies would cut costs.

Then it hit me. When faced with having to go to another floor to find office supplies the average geek desk jockey will probably say "forget it" and do without. The immediate saving is less office supplies used. But I suspect this is only phase one of the plan. Most people at MSFT believe that on average 50% - 75% of projects and features an employee works on in his career in the b0rg cube never ship. This is all just wasted cash. The best way to nip this is in the bud by preventing people from being able to write down their ideas or whiteboard different ideas with coworkers thus spreading the meme about new projects or features. The amount of money saved by not investing in new money losing ventures like *** and **** would be immense. It all makes a weird kind of sense now.

Of course, the post is tongue-in-check. However a later post where I pointed out that moving office supplies to 'cut costs' was an example used in The Dilbert Principle in a section entitled Companies That Turn On Themselves was not. It sucks when you realize your day job is ripped from the pages of Dilbert. The towel issue was another example of how company can turn on itself. A comment on TDavid's blog by Eric captures the sentiment of many fellow b0rg drones when he writes

Here’s the point on the towels:

1) Health care costs are a huge - and rising - expense for Microsoft. People who are using the towels are exercising - some of them pretty heavily - and are therefore likely to save MS a significant amount of money.
2) There is a serious parking shortage at MS. Some of the people who use the towels are commuting by bicycle, and therefore aren’t taking up a parking space - which has a specific cost per year that you can figure out.

It’s in Microsoft’s best interest to encourage both of those behaviors, and in fact, they have programs specifically designed to encourage such behaviors. But they made a decision that actively discouraged people from these behaviors, for a very measly cost savings.

It’s not that people felt that they *deserved* free towels. It’s that by taking away the towels, management was demonstrating that they weren’t paying attention, because doing so was so clearly against the programs already in place, and clearly not in the company’s self-interest.

I care whether my company has internal coherence in its decisions, and I think that customers and stockholders should also care.

The towel thing was penny wise yet pound foolish. I'm glad that there are two less Dilbert-esque things about my day job. The perks like better cafeteria food and the like are actually less interesting to me than just getting rid of counterproductive practices like The Curve, playing hide & seek with office supplies or removing complimentary towels from on-campus showers.

PS: While looking for the link above, I found one of my old blog posts entitled Post Mortems, Reorganizations and the Dilbert Principle which makes me realize that my blog used to be a lot better two years ago. :)

PPS: For the various folks in the B0rg cube who talk about how much better things are at places like Google, this thread may be of interest to you. The grass is always greener on the other side of the fence.


 

Categories: Life in the B0rg Cube

In his post Missed big HR meeting (MyMicrosoft is now improved) Robert Scoble mentions that he missed yesterday's town hall meeting at work where a bunch of employee benefits/compensation changes were announced. I missed the meeting as well because I took a friend on the Ride the Ducks of Seattle tour. I haven't been to work yet so I haven't read what the changes are but bits and pieces have come out in blog posts and news articles. Todd Bishop excerpts some of the highlights in his blog post Microsoft rethinks employee reviews ... and towels such as

  • "To reset our approach, beginning with this review period we are retiring the 2.5-5.0 rating scale and introducing a three point Commitment Rating scale of Exceeded, Achieved and Underperformed. ... There will be no forced distribution (i.e. curve) associated with this commitment rating, which allows managers and employees to have a more candid discussion about performance."
  • "We are increasing our investment in our annual review stock award program. This incremental investment is focused on providing meaningful stock awards to our top talent. 'Top talent' refers to employees who are strong performers, achieve results in the right way and are expected to make the greatest future contributions."
  • "We're planning to provide on-campus access to a variety of services, including laundry and dry cleaning, grocery delivery from Safeway and opening convenience stores -- all of which are designed to ease the burden given the hectic pace of life. We will expand and upgrade dining services adding great new retail food in select cafes, dinners to go from Wolfgang Puck and other services. We are also arranging discounts on a variety of home services including house keeping, yard care, pet care, auto services and more.

Getting rid of the curve is great news. Having a quota of how many people get good or bad scores during annual reviews has been a recipe for bad morale for as long as I've seen it practiced at Microsoft. Bringing back a bunch of the stupid cost cuts like the towel service [free towels in the on-campus showers for people who bike to work] is just common sense. The amount of money it saved couldn't have counterbalanced the amount of bad will it generated. Better food in the cafeteria is cool, auto services is also interesting since I my car always seems to need washing and I never seem to have time to do it. I gotta say kudos to Lisa Brummel on doing something to make the employees lives better.

I was surprised to see negative comments from people who aren't Microsoft employees such as TDavid's post For employees Microsoft throws in the towels where he writes

In a move which is bound to be seen as placation and a serious case of Googleplex envy — by those who aren’t employees anyway — Microsoft has restored the employee towel service that was axed for “cost cutting measures.”...

Towels a “symbol of poor leadership?” Who da Punk’s real name must be Who da Kidding. If Microsoft plays lemming to anon cowards like this then the decline of their stock is far from over. I’m sure shareholders will be pleased that they restored towel service and put better food on the menu, thus restoring employee morale — until the stock drops even further.

Outsider customers like me have to wonder what’s next in the long list of employee perks for these major corporations? Why stop at the marginally sane perks? How about insane ones like escort services? If only Microsoft and Google were in Nevada, they could cut deals with the local brothels I’m sure. Heck, maybe escorts.live.com could be a promising vertical niche. The search for skin and sin is on.

I don't think the perks are worthy of such vitriol. First of all, a lot of the Googleplex-style perks are designed to keep people at work instead of having them leave early to manage their personal lives (e.g. getting the car washed, getting home early to walk the dog, etc) or leave campus for meals by having better food in the cafeteria. Secondly, it is common knowledge that Microsoft doesn't pay that great. I've heard that our pay scale is in the 65th percentile meaning that for every 10 companies out there, 3 to 4 of them would pay the average Microsoft employee more for doing the same job. In a climate where Google recruiters are spamming every half-decent employee at Microsoft and recruiter cold calls are not unheard off, the company needs to step up its game if it plans to retain its talent in an increasingly competitive software landscape. 

Taking care of your employees is just good business.


 

Categories: Life in the B0rg Cube

Mary Jo Foley has an article on the Microsoft-Watch site entitled Worst Microsoft Product Name Ever where she writes

As Microsoft watchers inside and outside the company have noted, Microsoft is not terribly astute when it comes to naming its products. But on Wednesday, the branding department hit a new low, in terms of bad naming choices. Microsoft has decided to christen the new Windows desktop search application (that can search your desktop/Intranet and Internet), due to go beta later this year, as "Windows Live Search." But there already is a Windows Live Search – the Internet search service that is currently in beta. Are the two products the same? No, the Softies said. Are they related? Nope. We've decided we're going to try using Windows Live Search A (for the desktop app version) and Windows Live Search S for the MSN service. And we thought the SharePoint branding was confusing!

This sounds pretty amazing. Microsoft has created two unrelated products that are both called Windows Live Search. Wow. It's like we are determined to cause the Windows Live brand to turn to crap before any of the services even get out of beta. I guess the folks who were behind the .NET branding fiasco are still alive and well in the B0rg cube.

Update: I should clarify that this is likely just poor storytelling on our part as opposed to actual different products being named the same thing. If you read the press release Microsoft Enterprise Search Solutions Help Enable Effective Information Management you'll see the excerpt

To that end, the company will deliver a solution called Windows Live Search, which offers a single user interface (UI) to help people find and use all the information they care about from across the entire enterprise and beyond. It essentially binds together previously separate search solutions including Windows Desktop Search, Intranet search provided by Microsoft Office SharePoint Server 2007 and Internet search via Windows Live Search, among others. Any information available to any of these systems can be exposed in one place, instantly showing relevant and actionable search results from all its enterprise data sources, from the desktop and from the Web
...
To illustrate, a sales representative trying to find information about a customer she plans to visit could gather the needed data by accessing Office SharePoint Server 2007, initiating a search and pulling business data from a Siebel application in addition to gathering data off her desktop using Windows Desktop Search. However, the same search could be performed from within Windows Live Search to produce all of the relevant desktop, e-mail, intranet and Internet results. Furthermore, when the sales representative clicks through the results, she will see they are actually displayed from that same window. Windows Live Search displays full results without navigating away or opening additional applications.

The press release makes it hard to tell whether this is new functionality of http://search.live.com being announced or a duplicate product which is branded with the same name. If reporters are getting confused about our messaging then there is definitely something broken that we need to fix.


 

Categories: Windows Live

I just saw the following post on in the RSS Bandit forums entitled Dead? where one of our users asks

Haven't seen a news update in a long time, no releases for about 5 months... is rss bandit dead? It's a nice aggregator, but there are some neat features popping up in stuff like Rss Owl / other feed readers, so I'm debating changing readers...

...but if there's going to be active improvements in the future, there's no reason for me to learn an entirely new program just to come back to rss bandit in the end. ;)

What say you, Code Writers?

This has been bothering me as well. Torsten and I have been busy with our respective day jobs. Over the past few of months, I keep telling myself I'll start work on RSS Bandit "next week" but the following week always seems busier than the last. It hasn't helped that I've had conferences, vacations or out of town visitors every other month this year. I think I have the worst of the disruptions in my schedule done for this year. In addition, the project which has been consuming the lion's share of my time at work also looks like it will soon be able to go on auto-pilot.

Although I can't give an exact date for our next release, what I can say for sure is that we will have an RSS Bandit release this summer. What I would like from our users is some feedback on the RSS Bandit road map. I don't think I'm particularly attached to the features we currently have on tap for the Jubilee release. The major reworkings I'd like to do for the next release are fixing our excessive memory consumption, improving the integration with NewsGator Online, and rewriting our multithreaded code in a way that fixes the pernicious feed mix up issue. As for new features, the ones I want primarily revolve around enclosures/podcasts and conversation tracking similar to TechMeme, Megite and TailRank.

I believe Torsten also plans to revamp our UI. What else would you like to see us do in the next release?


 

Categories: RSS Bandit

If you're a regular reader of Don Box's weblog then you probably know that Microsoft has made available another Community Technical Preview (CTP) of Language Integrated Query (LINQ) aka C# 3.0. I think the notion of integrating data access and query languages into programming languages is the next natural evolution in programming language design. A large number of developers write code that performs queries over rich data structures of some sort whether they are relational databases, XML files or just plain old objects in memory. In all three cases, the code tends to be verbose and more cumbersome than it needs to be. The goal of the LINQ project is to try to simplify and unify data access in programming languages built on the .NET Framework. 

When I used to work on the XML team, we also used to salivate about the power that developers would get if they could get rich query over their data stores in a consistent manner. I was the PM for the IXPathNavigable interface and the related XPathNavigator class which we hoped people would implement over their custom stores to enable them to use XPath to query them. Some developers did do exactly that such as Steve Saxon with the ObjectXPathNavigator which allows you to use XPath to query a graph of in-memory objects. The main problem with this approach is that implementing IXPathNavigable for custom data stores is non-trivial especially given the impedence mismatch between XML and other data models. In fact, I've been wanting to do something like this in RSS Bandit for a while but the complexity of implementing my own custom XPathNavigator class over our internal data structures is something I've balked at doing.

According to Matt Warren's blog post Oops, we did it again it looks like the LINQ folks have similar ideas but are making it easier than we did on the XML team. He writes 

What's the coolest new feature?  IMHO, its IQueryable<T>. 

 DLINQ's query mechanism has been generalized and available for all to use as part of System.Query.  It implements the Standard Query Operators for you using expression nodes to represent the query. Your queries can now be truly polymorphic, written over a common abstraction and translated into the target environment only when you need it to.

    public int CustomersInLondon(IQueryable<Customer> customers) {

        int count = (from c in customers

                     where c.City == "London"

                     select c).Count();

        return count;

    }

Now you can define a function like this and it can operate on either an in memory collection or a remote DLINQ collection (or you own IQueryable for that matter.)  The query is then either run entirely locally or remotely depending on the target. 

If its a DLINQ query a count query is sent to the database.

SELECT COUNT(*) AS [value]

FROM [Customers] AS [t0]

WHERE [t0].[City] = @p0

If its a normal CLR collection, the query is executed locally, using the System.Query.Sequence classes definitions of the standard query operators.  All you need to do is turn your IEnumerable<Customer> into IQueryable<Customer>.  This is accomplished easily with a built-in ToQueryable() method.

  List<Customer> customers = ...;

  CustomersInLondon(customers.ToQueryable());

Wow!  That was easy.  But, how is this done?  How can you possible turn my List<T> into some queryable thingamabob?

Good question.  Glad you asked.

Check out this little gem: 

  Expression<Func<Customer,bool>> predicate = c => c.City == "London";           

  Func<Customer,bool> d = predicate.Compile();

 

Now you can compile lambda expressions directly into IL at runtime!

ToQueryable() wraps your IEnumerable<T> in IQueryable<T> clothing, uses the Queryable infrastructure to let you build up your own expression tree queries, and then when you enumerate it, the expression is rebound to refer to your IEnumerable<T> directly, the operators rebound to refer to System.Query.Sequence, and the resulting code is compiled using the built-in expression compiler.  That code is then invoked producing your results.

Amazing, but true.

I think it's pretty amazing that all I have to do as a developer is implement a simple iterator over my data structures (i.e. IEnumerable) and then I get all the power of Linq for free. Of course, if I want the queries to be performant it would make sense to implement IQueryable directly but the fact that the barrier to entry is so low if my perf needs aren't high is goodness.

For more information on LINQ, read the Linq project overview. If you are like me and are primarily interested in XLinq then check out XLinq: XML Programming Refactored (The Return Of The Monoids) which has the fingerprints of my former team all over it. Way to go guys!


 

Categories: XML

One of the reasons I like providing APIs to online services is that it gives users more control of their data. Alex Boyko, who's one of the testers on our team wrote a tool for migrating his blog from one blog service to the other using the APIs they provide. In his blog post Blog Content Transfer he wrote

Apparently, my old blogging site (Blogger) and the new one (MSN Spaces) expose some APIs that can be used to play with your content (Metaweblog API for Space and Atom API for Blogger). I spent some time over the weekend and wrote a tool that helped me to transfer my data between two sites.

In case if somebody else is excited about gleams as much as I am ;] I've decided to share a copy of BCTransfer (Blog Content Transfer).

 DOWNLOAD HERE

Please let me know if it works and especially if it does not work for your. I’ll be more than glad to help.

Please read this first. It tells your how to get a login for your space.

At this moment, it is a command-line tool written using .NET 2.0. So you need to have it installed (the easiest option for that is Windows Update). Here’s how you run it in the most basic scenario:

bctransfer -bu <old-username> -bp <old-password> -su <new-username> -sp <new-password>

Yet another reason why providing APIs for online services is a good for regular users as well as developers. Nice.