<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3442944337117380119</id><updated>2012-03-05T01:27:01.438-08:00</updated><category term='Identity'/><category term='People'/><category term='Architecture'/><category term='Risk Management'/><category term='General'/><category term='Organization'/><category term='PayPal'/><category term='Photography'/><category term='eBay'/><category term='Strategy'/><category term='Security'/><category term='Fun'/><category term='Talks'/><category term='product'/><category term='Software Eng. Management'/><title type='text'>Software For All Seasons</title><subtitle type='html'>On Software, Systems and People who Build Them.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>60</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-4883798595833565697</id><published>2011-11-23T00:08:00.000-08:00</published><updated>2011-11-24T14:58:05.110-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><title type='text'>The Uncommon Security Common Sense</title><content type='html'>I can not claim that I actually counted or classified all the reasons peoples cite for not taking security (or for that matter sound and well thought through system design) seriously from the start, but the three following lines seems to be the most common ones:&lt;br /&gt;&lt;br /&gt;1- The "it is too contained" line: So what is the big deal? at worst it may affect a very small percentage of my users.&lt;br /&gt;2- The "it is too early" line: Oh my system/site/project is too small and we only have a few users, we really don't have time/resources for this.&lt;br /&gt;3- The "it is too small" line: My project is too small or too obscure for anyone to care.&lt;br /&gt;&lt;br /&gt;By the way, I have heard these lines or their equivalent not only when it comes to security engineering (or re-engineering) but also in designing business policies or risk management measure to prevent fraud, or in general negative user experiences as well as general system design.&lt;br /&gt;&lt;br /&gt;Now to be fair, these reasons all sound like "common sense", after all why would you take on additional cost and time for your project or accept the expense and risk of re-engineering your code to fix an issue that may only affect 1% or 0.01% of your users? or why should you spend two weeks to fortify a system that takes you 3 days to design and it is "just an experiment"? and finally who really cares about a small project some where with some obscure URLs that takes an email address as one of its inputs and shows some useful error message if the email is not registered? does ANYONE really care?&lt;br /&gt;&lt;br /&gt;Well, as it turns out, security common sense (like many other form of common sense) is actually quite uncommon !&amp;nbsp;Let's look at these frequently cited common sense logic a bit closer.&lt;br /&gt;&lt;br /&gt;To demonstrate the fallacy behind the &lt;b&gt;first logic&lt;/b&gt; (it is too contained, it only affect 0.01% of users) I cannot think of any better illustration than the words of presidential candidate Herman Cain where he said that "for each woman who has accused him of harassment there are probably thousands who haven't" and he is 100% accurate and right! But does that&amp;nbsp;make any difference? In all likelihood his presidential bid is all but over. Or could the Washington D.C police chief during the &lt;a href="http://en.wikipedia.org/wiki/Beltway_sniper_attacks"&gt;"D.C Sniper Attacks&lt;/a&gt;" have possibly argued that the whole thing was not a big deal b/c only 0.001% of D.C metro population were actually killed and therefore there is no need for massive mobilization of police, FBI, ATF and even secret service !?&lt;br /&gt;&lt;br /&gt;The same math is thru for security, it does not matter if only 1000 users out of 10MM become victim of a&lt;br /&gt;poorly secured or design system. What matters is how many people hear and learn about it - and you can be&lt;br /&gt;sure that at least in this day and age that number is a few order of magnitude larger than the actual number of&lt;br /&gt;victims. The sense of insecurity that this causes in the rest of the user community and its economic cost is the real math that matters not the fact that only 1000/10MM=0.01% users were affected.&lt;br /&gt;&lt;br /&gt;The &lt;b&gt;second line&lt;/b&gt; "it is too early" or its equivalents "we don't have enough time or resources" is the most commons line not only in security matters but also system design and architecture aspects as well. What is interesting here is that the exact premise cited for not focusing on security (or sound design for that matter), is why security should be taken seriously i.e. "I am too new to afford not to be secure", if you are releasing a new product (or brand or a site) you REALLY DO NOT HAVE A SECOND CHANCE TO MAKE A FIRST IMPRESSION. If you are not secure, or if your first few user gets taken advantage off (think of AirBnB incident) you are doomed. To further&amp;nbsp;demonstrate&amp;nbsp;the risk in this argument I submit the following&amp;nbsp;picture of one of the more famous car design mistakes : Honda Odyssey 1998&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://trialx.com/curetalk/wp-content/blogs.dir/7/files/2011/06/cars/1998_Honda_Odyssey-2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://trialx.com/curetalk/wp-content/blogs.dir/7/files/2011/06/cars/1998_Honda_Odyssey-2.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Honda designed this in a hurry to get into the growing minivan market dominated by Dodge/Chrysler. They decided to differentiate by replacing a convenient power sliding door with a traditional door! Imagine what would have happened of this was a new no-name company without Honda's established brand? Of course Honda corrected the mistake in 1999 model and beyond and went on to have one of the most successful Minivans. But if you are not Honda, you better spend time and money on designers and marketers to tell you, &amp;nbsp;in the first try, that whoever buys a minivan *needs* a sliding door.&lt;br /&gt;&lt;br /&gt;Now we get to the &lt;b&gt;third line&lt;/b&gt; "Who really cares about me?" I have to admit that I have the most sympathy with people who resort to this logic. After all it is tough to imagine how capable and resourceful the modern fraudester/hacker community is without actually having a brush with them. I do not get into the details - &amp;nbsp;if you are interested you can briefly scan Rick Howard's excellent book &lt;a href="http://product.half.ebay.com/Cyber-Fraud-Tactics-Techniques-and-Procedures-by-Kellie-Bryan-and-Rick-Howard-2009-Hardcover/66819436&amp;amp;cpid=1388234078"&gt;"Cyber Fraud, tactics, Techniques and Procedure"&lt;/a&gt; - for the purpose of this writing I'd suggest you assume the following is true:&lt;br /&gt;&lt;br /&gt;In the game of "Who wants to break into my system" your&amp;nbsp;adversary&amp;nbsp;is more motivated (financially or politically) than you are, more&amp;nbsp;experienced&amp;nbsp;than you are, is more innovative than you are, is more nimble than you are, wants it worst than you do, has a smaller cost base than you do (and therefore) all he needs is 0.01% (or smaller) of your users - the ONLY advantage that you have is that you right the rule of the game. Do not give up that advantage easily. You WILL lose the game.&lt;br /&gt;&lt;br /&gt;Btw, the end point URL that takes an email and very nicely checks and display an error if email does not belong to a valid user - was actually found (although it was a little obscure URL not linked to from anywhere - &amp;nbsp;and used to extract valid company X user emails (cost $5000+) from a large list of non-verified harvested emails (cost $50) - a vital part of phishing industry value chain.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-4883798595833565697?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/4883798595833565697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/11/uncommon-security-common-senses.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/4883798595833565697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/4883798595833565697'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/11/uncommon-security-common-senses.html' title='The Uncommon Security Common Sense'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-2984033521833955864</id><published>2011-11-06T19:18:00.000-08:00</published><updated>2011-11-06T19:18:31.883-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Talks'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>OIX Attribute Exchange Summit - Washington DC</title><content type='html'>Open Identity Exchange (OIX) is holding this year's&lt;a href="http://openidentityexchange.org/events/attribute-exchange-summit"&gt; Attribute Exchange Summit in Washington, DC&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Identity attributes are core of the concept of digital identity. As federated identity ecosystem getting more mature and adoption grows among more&amp;nbsp;sophisticated&amp;nbsp;RPs &amp;nbsp;- with more consequential use cases such as government, health, education, commerce ... - so does the need for wider sets of attributes with more accurate and fresh values. This presents both tough challenges and opportunities for IDPs.&lt;br /&gt;&lt;br /&gt;The challenges center, as one may expect:, around aggregating,&amp;nbsp;correlating, transform&amp;nbsp;and maintaining fresh copy of attributes in a cost effective manner and in a way that it does not compromise the privacy (and other rights) of the principle owner. IDPs can differentiate based on the range of attributes they provide in this way and there in lies the opportunities.&lt;br /&gt;&lt;br /&gt;I will be talking more about identity attributes, their life cycle, uses cases and how they help establish and elevate trust among parties to commercial transactions (online and off-line) as part of a panel with Don Thibeau, OIX/OIDF chairman and Abbie Barbir, VP BoA.&lt;br /&gt;&lt;br /&gt;If you are planning to attend, I'd be happy to hear from you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-2984033521833955864?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/2984033521833955864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/11/oix-attribute-exchange-summit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/2984033521833955864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/2984033521833955864'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/11/oix-attribute-exchange-summit.html' title='OIX Attribute Exchange Summit - Washington DC'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-7372753782241830870</id><published>2011-10-17T22:58:00.000-07:00</published><updated>2011-10-17T22:58:44.340-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>OAuth vs. OpenID Connect ?</title><content type='html'>&lt;div class="MsoNormal"&gt;OpenID Connet 1.0 Spec is finally released (actually it was release back in Aug). Its release was accompanied by two predictable categories of questions/sentiments, one not very well informed and the other one a legitimate question:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpFirst" style="margin-left: .75in; mso-add-space: auto; mso-list: l0 level1 lfo2; text-indent: -.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;OpenID is dead&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: .75in; mso-add-space: auto; mso-list: l0 level1 lfo2; text-indent: -.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;OpenID Connect is really OAuth so why do we need a new protocol?&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: .75in; mso-add-space: auto; mso-list: l0 level1 lfo2; text-indent: -.25in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Granted, this is normally coming from software engineers and social application programmer community and not from identity community, but I feel they are significant enough to be addressed, especially at the time that more and more entities contemplating to become identity providers and they need to decide which protocol they should implement. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;First, on the demise of “OpenId”: &lt;span&gt;&amp;nbsp;&lt;/span&gt;It is true that the earlier versions of Open ID (version 1 and version 2) are, for all intent and purposes, depreciated and will not gain a whole lot of traction. But the general idea of “Open” standards for communicating between RPs and IDPs that enables users to provision fewer accounts and have a portable identity while still maintaining control over their privacy and data is alive and well and actually is even more vital than before. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Second, on relationship between OAuth and OpenID Connect, OAuth is a general protocol for authorizing an agent to access a resource on behalf of resource’s owner. OAuth does not assume any particular knowledge about the resource itself. What does this mean? Let’s go back to the canonical OAuth use case of a user who would like to authorize a printing services to access her photos from a Photo service provider. Now imagine that the photo service is slightly sophisticated and recognizes a few properties associated with photos e.g. resolution, size, whether they are shots with no humans, and if there shots with humans, who appears in the photos – basically let’s assume the resource served by SP has more semantics that simple “access”. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Now imagine that the user wants to grant access to only JPEG photos of himself and not a full access to all photos. How would the IDP encode this semantics in the authorization request and response? How would the SP know that they should only provide access to a subset of images? &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;To be sure, this is doable using OAuth, but the implementer has to add additional parameters to request and response or possibly constraint the input values of some other parameters.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;A protocol that is built this way to access a specialized resource, would be a photo access protocol built on top of OAuth.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;In essence this is exactly what OpenID Connect it: It is a protocol built on top of OAuth that supports features that are often desired and used when the resources being delegated is “identity” and attribute about an identity.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;To illustrate the point, here are what we, at eBay, had to do for an internal authentication protocol on&amp;nbsp;top of OAuth:&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpFirst" style="mso-list: l1 level1 lfo1; text-indent: -.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpFirst" style="mso-list: l1 level1 lfo1; text-indent: -.25in;"&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&amp;nbsp; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;Force Authentication:&lt;/b&gt; adding parameters to authorization request to force users to authenticate no matter what the authentication state with IDP is &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l1 level1 lfo1; text-indent: -.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;Authorization Behavior&lt;/b&gt;: adding parameters to authorization request to indicate to IDPs whether it should display the consent page and how to display the login page (overlay, full page) &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l1 level1 lfo1; text-indent: -.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&amp;nbsp;&amp;nbsp; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;Standard Claim Set&lt;/b&gt;: Defining the default set of attributes returned by IDP&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l1 level1 lfo1; text-indent: -.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;Requested Attributes&lt;/b&gt;: adding mechanism to allow RPs to ask for additional attributes, and annotating them to indicate whether explicit user consent is required.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l1 level1 lfo1; text-indent: -.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;Authentication Context:&lt;/b&gt; adding a fragment to response to communicated authentication context (single v.s multi-factor, PIN vs. Password, number of retires etc.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l1 level1 lfo1; text-indent: -.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;Protection&lt;/b&gt;: adding parameters to indicate how access tokens should be protected (encryption, signature and order of operations)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpLast" style="mso-list: l1 level1 lfo1; text-indent: -.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;Token Validation end point:&lt;/b&gt; adding an endpoint to introspect access tokens on demand.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;These are all features and facets that OpenID Connect enables in a standard and interoperable fashion. In absence of a standard such as OpenID Connect though, any RPs integrating with our IDP had to implement basically a proprietary protocol, be it on top of OAuth.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;The point is that if you want to operate an IDP and you want to use just OAuth, you have to add a few things to OAuth, depend on the depth of your requirements, to make it work for “Identity” resource. This is exactly what Facebook did with FB Connect – and they also did a good job of wrapping it with JavaScript plug-ins. The goal of OpenID Connect is to use OAuth as the basic access authorization protocol and add identity specific features to it so that it becomes a standard “identity protocol” that can enable seamless interoperability.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-7372753782241830870?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/7372753782241830870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/10/oauth-vs-openid-connect.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/7372753782241830870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/7372753782241830870'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/10/oauth-vs-openid-connect.html' title='OAuth vs. OpenID Connect ?'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-6967136798098214720</id><published>2011-10-12T22:15:00.000-07:00</published><updated>2011-10-12T22:20:29.875-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>PayPal Access &amp; Commercial Identity</title><content type='html'>Today eBay Inc. announced an identity and attribute provider product called PayPal Access. Some described as a &lt;a href="http://www.zdnet.com/blog/btl/paypal-access-becomes-the-facebook-connect-for-online-payments/60550"&gt;"Facebook Connect for Commerce"&lt;/a&gt;, others &lt;a href="http://www.digitaltransactions.net/news/story/3236"&gt;described it as an easy registration tool for mobile sit&lt;/a&gt;e. Today at the X,Commerce Innovate Conference someone suggested to me that this is the first step for eBay Inc. to offer full cloud based user management for e-commerce sites and merchants. You can also see the official press release from eBay Inc. &lt;a href="http://www.ebayinc.com/content/press_release/20111012006418"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Most of the press and coverage today focused on "Consumer Identity" - or more accurately Consumer Commercial Identity - and the benefit of PayPal Access for consumers and online merchants visited by those consumer. Consumer identity is indeed one facet of "Commercial identity" - but there is another side to commercial identity, a less understood - and arguably less sexy - side and that is Merchant Identity. What do I mean by this? Let's look at a scenario:&lt;br /&gt;&lt;br /&gt;Merchants themselves are consumers of so many online and offline services (think of it as B2B services) - a company that sells on eBay - or any other online channel - has an eBay account, an account with a shipping company (FedEx), a Facebook account, perhaps another account with a email marketing service, bank account etc. Clearly merchants suffer from the same "account and password hell" that consumers do - but this hell is a lot deeper and hotter for merchants, consider these facts&lt;br /&gt;&lt;br /&gt;- Most merchants have employees/contractors who create these accounts on behalf of the merchant, &lt;br /&gt;- A lot of these employees (for smaller merchants) are part time or temps&lt;br /&gt;- Employee turn over is high&lt;br /&gt;&lt;br /&gt;Here in addition to the usual forgetting one's password - which for merchant leads to loss of productivity and money - sometimes the person who created the account simply leaves - if you are lucky and s/he good terms, you end up having to chase the employee and restore your access, if not, you are exposed to unauthorized access by the employee or down right "account take over".&lt;br /&gt;&lt;br /&gt;You might say, what is the difference between this and consumer identity, these employee are consumers to and technically there is no difference. But look closer. Merchant use cases are&amp;nbsp;fundamentally&amp;nbsp;different. In consumer identity use cases, a consumer is a principle and gives consent on his/her own behalf to a agent (another site or application), the IDP itself recognizes the consumer is the principle and allows her (and ONLY her) to change or revoke this access. In Merchant cases, what appear to be the consumer is really not a principle binded to the merchant identity but an employee. In this case IDP must recognize this "hierarchical&amp;nbsp;relationship" and allow and "admin" employee of merchant to monitor and manage the life cycle of tokens (and identities) of employees.&lt;br /&gt;&lt;br /&gt;In the use case above, merchant X would not reveal its primary eBay user name and password to any employee, the would provision an account for each employee. Employee then logs into eBay using her own account - and via PayPalAccess - All the while PayPal Access monitors and manage all the tokens issued to all employees of merchant X. Should an employee leave or changes function, the token can be revoked by merchant X admin regardless of employee's decision.&lt;br /&gt;&lt;br /&gt;If this sounds familiar to LDAP or ActiveDirectory, b/c it really serves the same function: Enterprise Identity, in this case enterprise is really a merchant. This is not unexpected in the world where enterprise identity, consumer identity (a.k.a social identity) are converging - and there is a need for a cloud based enterprise user management.&lt;br /&gt;&lt;br /&gt;Please note that this is NOT an annoucement (or leak) for PayPal Access Cloud-Base user directory. IT IS NOT, REALLY. I just wanted to point out the there is two sides to commercial identity, a sexy side (consumer) and a side that can make you money (merchants).&lt;br /&gt;&lt;br /&gt;In the next post, I will write a bit about Consumer Commercial Identity and how it may be different that social identity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-6967136798098214720?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/6967136798098214720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/10/paypal-access-commercial-identity.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/6967136798098214720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/6967136798098214720'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/10/paypal-access-commercial-identity.html' title='PayPal Access &amp; Commercial Identity'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-4934076363702620939</id><published>2011-10-08T22:36:00.000-07:00</published><updated>2011-10-08T22:36:12.868-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='People'/><title type='text'>Magician vs. Engineer</title><content type='html'>Steve Jobs, the man, died a few days ago. Steve Jobs the symbol and the icon in all&amp;nbsp;likelihood&amp;nbsp;lives on for a long time. In this status he is joined perhaps only by one other man: Bill Gates (whether people agree or disagree with his business tactics, feel that MSFT produced low quality or hard to use software... no one can deny the fact that he was one of the first few who realized that software would be the key to&amp;nbsp;pervasive&amp;nbsp;computing, co-founded the first real software company and put software engineering as a profession on the map).&lt;br /&gt;&lt;br /&gt;That is why I was so excited to watch them being interviewed on the same stage and at the same time @ D5 in 2007. When the news of Steve Jobs passing came out, I went back and watched it again and this time I found it simply &lt;b&gt;fascinating&lt;/b&gt; - the session is about 1.5 hours, an hour the interview and 30 minutes Q&amp;amp;A.&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/zmInRZ2d-bI" width="420"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;It is long, but it is well worth the time.&lt;br /&gt;&lt;br /&gt;After about 4.5 years, and with hindsight, it is so amazing to see Steve Jobs explaining his vision about "Post-PC" era and superiority of native applications, merits of integration of hardware and software, and in general, what we can only now recognize as a general description of &amp;nbsp;iPad. (with the notable absence of&amp;nbsp;any reference to App Store)&lt;br /&gt;&lt;br /&gt;Interestingly, Bill Gates, in response to what he sees as post PC era, talks, spot on, about tablet computing, significance of touch and the "convergence device". &amp;nbsp;Keep in mind that MSFT had been doing basic research in this field for a long time.&lt;br /&gt;&lt;br /&gt;In my view, both men shared the same over all knowledge of trends and technologies in 2007, both knew that a device that is basically touch enabled and connected will dominate the future. Then why Apple was able to come up with iPad and MSFT ended up with a few tablet from bunch of manufacturers that only a few ever saw live in action, let alone use.&lt;br /&gt;&lt;br /&gt;Amazingly, Bill Gates answers this question himself - in what I think is the most interesting exchange of the interview: a member of audience (a woman @ about 1:22 into the video) asks both Jobs and Gates "...What did you learn about running your own business that you wished you had thought of sooner or first by watching the other guy". Bill Gates volunteers an answer first and says:&lt;br /&gt;&lt;br /&gt;"...he (Steve) has an&amp;nbsp;intuitive&amp;nbsp;taste for product and people, we sat in Mac product reviews and question would come up that I would view it as engineering&amp;nbsp;question&amp;nbsp;b/c that is how my mind works and I'd see Steve make a decision based on a sense of people and product that is even hard for me to explain, the way he does things are just different and I think it is magical and in that case WOW" (he never mentions what that case was)&lt;br /&gt;&lt;br /&gt;There, ladies and&amp;nbsp;gentlemen, you have it! This is why MSFT and Bill Gates, as great as he is, with all the knowledge of trends, technologies could never quiet come up with that "convergence device". They (or any one else) did not have that magical "intuitive&amp;nbsp;taste for product and technology". As Bill Gates said it, it is even hard for him to explain let alone replicate that&amp;nbsp;intuition.&lt;br /&gt;&lt;br /&gt;A lot of things have been said and written about Steve Jobs greatness, but none captures and express the essence of what Jobs did better than the description given by the only other icon of modern computing Bill Gates:&amp;nbsp;intuition&amp;nbsp;vs.solution , soul vs. mechanics,&amp;nbsp;empathy&amp;nbsp;vs. sympathy ..Magic vs. Engineering.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-4934076363702620939?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/4934076363702620939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/10/magician-vs-engineer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/4934076363702620939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/4934076363702620939'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/10/magician-vs-engineer.html' title='Magician vs. Engineer'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/zmInRZ2d-bI/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-5094342764368829463</id><published>2011-09-22T22:02:00.000-07:00</published><updated>2011-09-25T23:51:45.637-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eBay'/><category scheme='http://www.blogger.com/atom/ns#' term='Organization'/><title type='text'>Interviewing @ eBay Part V - Dir. and VP of Engineering</title><content type='html'>&lt;div class="MsoNormal"&gt;My base line for interviewing senior engineering management &amp;nbsp;is the following, non-scientific, completely made up, definition:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Job of a manager is to develop &amp;amp; allocate resources and manage execution of projects to satisfy time, budget and quality constraints and to minimize risks and promote efficiency (repeatability of the whole process). Leadership (as in the ability to inspire and influence change) is desirable, and indeed necessary the higher one goes in the management chain.&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Based on this, there are five types of questions I’d normally ask, &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpFirst" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level1 lfo2; text-indent: -.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;General/ice breaker: One or two questions based on resume or general questions such as Why eBay? Why now&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level1 lfo2; text-indent: -.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Technical Management : Ability to manage large teams, projects, timelines, budgets and plans&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level1 lfo2; text-indent: -.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Leadership: ability to conceive , evangelize and cause positive change&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level1 lfo2; text-indent: -.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Personal: I mean to assess personal integrity, awareness, reflection &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpLast" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level1 lfo2; text-indent: -.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Field Specific: Needless to say, a director of DB engineering gets specific DB questions, director of commerce must know details of order management and payment processing VP of personalization get collaborative filtering and VP of applications get “how you build a large web app” question.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .5in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;Here are the current (and expanding) bank of question I’d normally draw from, please email me or comment if you have other suggestions...&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpFirst" style="mso-list: l1 level1 lfo1; text-indent: -.25in;"&gt;&amp;nbsp;-&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;General &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;First 90 days at eBay?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Why eBay, Why Now?&lt;br /&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Talk about the most defining event in your professional life.&amp;nbsp;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;What are the 2,3 interesting and promising trend you see?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;What is leadership to you? What is management to you?&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;There are safe and conservative answers for these questions, however answers that reflect&lt;br /&gt;measured risk taking and authenticity are always preferable.&amp;nbsp;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l1 level1 lfo1; text-indent: -.25in;"&gt;-&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l1 level1 lfo1; text-indent: -.25in;"&gt;&amp;nbsp;-&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;Tech Management&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How would you structure an engineering org?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you measure the progress and success of a project?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you decide the allocation of engineering resources in multiple locations?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you manage promotion process?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you allocate bonus budget among your team members?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you see your relationship with product and architecture function?&lt;b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you manage your hiring process? Who would you hire?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;A new technology for part of your stack is emerging (e.g. a new presentation technology or a better and open sourced database, new JVM or cache …) would you replace your existing technology stack with the new one, why or why not?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do make sure knowledge sharing is effective among your team members?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you ensure the quality of your delivery?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;What is the most important job of a technology manager (pick one!), why?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you monitor the day to day tasks and assignment of your team?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;What is your view about innovation? How do you practically manage an “innovative” team?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you deal with “NIH” – Not Invented Here – issue?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;What is your talent development philosophy?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you chose and prepare your successor?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Would you direct your team to execute on a course of action you do not support?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you increase productivity? How do you measure it?&lt;br /&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;How do you empower your team to do "the right thing"? even when there is no time or budget for it?&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l1 level1 lfo1; text-indent: -.25in;"&gt;-&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;Technology&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you manage development life cycle? What development life cycle do you use?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;What is the current technology stack you are using? What are the benefits? What are the drawbacks? Why it was chosen? (please don’t say “I don’t know, it was chosen before I join”)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you plan for migration from an old, stable large system to a newer version of the same system?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you feel about redundant work? is there an occasion that It may be useful?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;When do you use open source? What are the challenges? When do you use vendors?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;What is Agile to you? What are the benefits and challenges?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;What 2,3 question you would like to ask about eBay technology?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Explain the CAP theorem.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;What are the measures/steps you take when your system is in operation?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l1 level1 lfo1; text-indent: -.25in;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; The Person&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you stay current of state of technology? What part of stack are you interested in the most?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How have you improved over the years as a manager?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;What is your proudest moment as a manager? &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Tell me about your biggest mistake, how did you realize it was a mistake? What did you do afterwards?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;What is one criticism that your subordinates make about you?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How can twitter be used to improve eBay?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you improve eBay? Now, I just told you to do something else – that you feel is not right - , how do you react? &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;What is your dream company to work for? Imagine now that you have an offer from that company, what should eBay do so that you work for eBay instead?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l1 level1 lfo1; text-indent: -.25in;"&gt;-&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l1 level1 lfo1; text-indent: -.25in;"&gt;&amp;nbsp; -&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;Leadership&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you deal with a “failing” project? Or a project in crisis?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Your plan requires the cooperation of another team, but that team has its own priorities and plans, how do you convince them to allocate time and resource to your project?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you influence and convince a group of people over whom you have no authority? Give an example &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&amp;nbsp;How do you mentor/coach your team member?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;You receive a call at 2am telling you that the entire search (or checkout) is down, what do you do?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpLast" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l1 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Two senior technical leaders (or teams) escalate a technical difference to you (MemCache v.s NoSQL or doing it now vs. doing it in the future …) how do you settle the matter?&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-5094342764368829463?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/5094342764368829463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/09/interviewing-ebay-part-v-dir-and-vp-of.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/5094342764368829463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/5094342764368829463'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/09/interviewing-ebay-part-v-dir-and-vp-of.html' title='Interviewing @ eBay Part V - Dir. and VP of Engineering'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-6382374996895282405</id><published>2011-09-11T21:13:00.000-07:00</published><updated>2011-09-11T22:18:58.738-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Talks'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>OpenID Tech Summit - Mountain view, CA - 9/12-13</title><content type='html'>I am attending the OpenID Tech summit tomorrow (Monday) and Tuesday at the MSFT Silicon Valley campus.&lt;br /&gt;&lt;br /&gt;There are two main topics, first the official&amp;nbsp;announcement&amp;nbsp;of &amp;nbsp;&lt;a href="http://openid.net/connect/"&gt;OpenID Connect&lt;/a&gt; - a standard built on top of OAuth 2.0 to that allows RPs obtain connect and obtain extensible profile information about an identity - &amp;nbsp;and second is the introduction of a concept called &lt;a href="http://accountchooser.com/"&gt;Account Chooser&lt;/a&gt;&amp;nbsp;- a UX pattern for federated login pages proposed based the experience of Google in dealing with federated authentication scenarios.&lt;br /&gt;&lt;br /&gt;I am also part of a panel discussion on "&lt;span class="Apple-style-span" style="font-family: Calibri; font-size: 16px;"&gt;&lt;strong&gt;Identity Schizophrenia - How users want to apply their online identities" &lt;/strong&gt;moderated by Allen Tom, OIDF Board Member. It is scheduled for Tuesday September 13 @ 1:40pm. For a full schedule of the summit see &lt;a href="http://openid.net/tag/summit/"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Calibri; font-size: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Calibri; font-size: 16px;"&gt;It should be interesting ... If you there tomorrow, please do stop by and say hi ...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Calibri; font-size: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Calibri; font-size: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-6382374996895282405?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/6382374996895282405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/09/openid-tech-summit-mountain-view-ca-912.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/6382374996895282405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/6382374996895282405'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/09/openid-tech-summit-mountain-view-ca-912.html' title='OpenID Tech Summit - Mountain view, CA - 9/12-13'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-141520262278683026</id><published>2011-09-10T18:36:00.000-07:00</published><updated>2011-09-10T18:36:56.460-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='People'/><category scheme='http://www.blogger.com/atom/ns#' term='product'/><category scheme='http://www.blogger.com/atom/ns#' term='eBay'/><title type='text'>Interviewing @ eBay Part IV - Product Management Interview</title><content type='html'>&lt;div class="MsoNormal"&gt;First let’s review, very briefly, what product managers are expected to do – I also highly recommend you read the following Q&amp;amp;A from Quora contributors:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #161f21; font-family: Helvetica, sans-serif; letter-spacing: -0.75pt; line-height: 115%;"&gt;&lt;a href="http://www.quora.com/Product-Management/What-are-your-top-3-5-books-or-resources-for-tech-product-managers?q=product+management+boo"&gt;What are your top 3-5 books or resources for tech product managers?&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;b&gt;&lt;span style="color: #161f21; font-family: Helvetica, sans-serif; letter-spacing: -0.75pt; line-height: 115%;"&gt;&lt;a href="http://www.quora.com/Product-Management/What-are-the-best-books-for-Product-Managers?q=product+managment+book"&gt;What are the best books for Product Managers&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;In my view the core of product management role is to understand firm’s resources and capabilities, existing products and markets, customer needs and wants, existing and adjacent market dynamics and economics and use the intersection of these four factors to conceive of and design new products or improve and evolve the existing ones in a manner that is profitable for the firm - i.e. reduces costs or increases revenue.&amp;nbsp;&lt;/div&gt;&lt;div class="MsoNormal"&gt;That is indeed a tall order, and rarely can be performed by one person – it is a role – but an individual product manager should perform any part of this role.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;(Notice that we are not talking about product marketing manager, project manager or program manager, the focus is only product management as it is defined above)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;In addition to – or to accomplish - this core function– product managers at eBay work closely with business to understand the markets and trends, participate in conception of ideas, communicate and get buy-in from all stake holder (formal, actual or both), help marshal resources and come up with execution planning and ensure the success roll out – and post roll and operations out activities. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;To me, the core traits of a product manager are clear and&amp;nbsp;analytical&amp;nbsp;thinking ability, communication and influence and discipline (in capturing assumptions, solutions, exemptions, follow ups, coordination as required by the breadth of activities above etc.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;In a typical interview (45 min) you can expect 4,5 questions from below list: &amp;nbsp;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;-&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;Technical questions: &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle"&gt;Most eBay products are either technology-based or have a strong technology component to them, so you have to understand technology (as in software engineering, operations, statistics …) also you need to build credibility with engineers, for these two reasons expect a few technical questions, I don’t personally ask you to code, unless you volunteer to (a plus) or you state on your resume that you are “fluent in Java”, then I consider it a fair game. By the way if you are applying for a “Technical PM” please read the “architect” interview post. These two jobs are almost the same at eBay.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;What is the general architecture of a web application, how about a mobile application?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Your product has to use service of a service provider – the service is available online – what are the list of question you would like to know about this service provider?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;-&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;Analytical ability &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;What is BMW’s revenue (do not look it up, I actually change the company randomly)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;In a marketplace the actual instance of fraud is decreasing, but the perception of fraud is increasing, what is going on?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;What data/information you’d like to know in order to estimate eBay revenue&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;-&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;Business and Strategy&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Typical management consultant questions on strategy, competition, profitability, new markets etc.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you grow eBay revenue by 20% in one year?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;What adjacent markets eBay should consider entering?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Should eBay expand into Japan?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Should eBay buy ETSY?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Should eBay buy Yelp?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;-&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;Product Design&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you improve eBay buying experience, how about selling experience?&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Should eBay accept Facebook Identity, if so, what are the considerations?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;What do you think about “Social Commerce”, hype or real?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you incentivize excellent selling behavior on eBay? &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How would you plan the launch of a product? Say fashion vault in Germany or integration of a new shipping carrier into the system.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How should eBay verify and confirms the identities of all sellers and buyers? &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How best you think eBay can combine e-commerce and offline commerce?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;What are the risks an electronic marketplace faces? &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How should eBay implement “calendar of event” feature for sellers?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;How do you improve eBay feedback system?&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&amp;nbsp;You are asked to improve eBay registration performance, what would you do?&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;What set of metrics would you use to measure the health of a marketplace?&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;-&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;Awareness of markets and trends&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Which companies eBay marketplaces should acquire &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;What are the eBay main competitors and why?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;What trends (technology, consumers, economical, social etc.) will impact eBay business and how &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Describe the economy of electronic payment industry&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;What are your favorite products and why (please be prepared to mention something other than iPad or iPod)&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;What is the biggest product blunder in your mind and why&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Which web sites do you visit regularly?&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;-&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;E-Commerce and Payment&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you design a multi-merchant shopping cart &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;What is the “e-commerce funnel” – how do you optimize it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How should “best match” algorithm be designed?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;What are the risks an electronic marketplace faces? &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;You meet an eBay seller that complains about low sales volume, what would recommend him to do?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you measure the success of a shopping cart?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;How can you use one's FB and Twitter accounts to improve searches on eBay?&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;How would you design an effective refund experience, how do you measure its&amp;nbsp;effectiveness?&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span class="Apple-style-span" style="font-size: 9px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;-&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;Personal qualities and fit &amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you influence people?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;What is leadership to you? Give me an example where you demonstrated leadership&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Tell me about the most interesting project you worked on in your career&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Suppose a technical leader is telling you that your product requirements is not implementable, what do you do?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpLast" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Courier New';"&gt;o&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;How do you ensure that your product idea/project get priority over competing ideas/products?&lt;/div&gt;&lt;div class="MsoListParagraphCxSpLast" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpLast" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;"&gt;Of course, the list of question changes from time to time and you may not get the same exact&lt;br /&gt;question, but this&amp;nbsp;is the general flavor of your interview. Again, if you happen to see this post&lt;br /&gt;before you interview, please let me know.&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpLast" style="margin-left: 1in; text-align: left; text-indent: -0.25in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-141520262278683026?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/141520262278683026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/09/interviewing-ebay-part-iv-product.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/141520262278683026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/141520262278683026'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/09/interviewing-ebay-part-iv-product.html' title='Interviewing @ eBay Part IV - Product Management Interview'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-5525261566270655333</id><published>2011-09-09T22:18:00.000-07:00</published><updated>2011-09-09T22:18:13.522-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Organization'/><title type='text'>Interviewing @ eBay Part III - Software Architecture Interview</title><content type='html'>&lt;div class="MsoNormal"&gt;I don’t know of any job title/role in technology that is more controversial, and evoke more emotional reaction, than that of an “architect”. Engineer, engineering manager, product manager, accountant, business developer etc. all have almost the same definition/responsibilities from company to company, &lt;span&gt;&amp;nbsp;&lt;/span&gt;architects role though vary widely: in some firms one cannot do anything without an architect permission and in some others the role is completely eliminated.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;You should first know that architecture is a role with a wide definition (TOGAF alone defines five types of architect - enterprise, business, data, application, IT). EBay architects play a combination of tech lead, internal evangelist, tech management and product management, and role is often the agent of change for eBay technical direction, tech stack, technology choices, process and methodologies …&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Interviewing and selecting an architect is especially challenging. In addition to core skills of a software engineer (yes if you are interviewing for an architect position, you should be comfortable coding – no Java guru, but be able to code), the main attributes I am looking for are:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;Integrity&lt;/b&gt;: Change in technology often brings about change in organization and power structure, people currently in power know this and may not be enthusiastic about&lt;span&gt;&amp;nbsp; &lt;/span&gt;it, architect should have the integrity and courage to call for change when &lt;span&gt;&amp;nbsp;&lt;/span&gt;it is not popular.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;Leadership&lt;/b&gt;: integrity and courage is necessary but not sufficient, in this role you should have leadership i.e. the ability to influence, inspire and induce change in direction (often major changes) in a way that people want to make the change, not forced to (you will have no formal power anyway) &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;Clarity&lt;/b&gt; : last but not least, architects MUST bring clarity to situations where goals are unclear, definition of problem is fuzzy, needs are uncertain, data is incomplete, assumptions are inaccurate, yet delivery is urgent and pressure is high …bringing clarity to all aspects of such situations are often the most important function of an architect at eBay.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;So for interview, expect some of the core software engineering questions, with much more emphasis on modeling and problem solving plus few of the followings:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;When you are asked to “architect” a system – say photo album app – what does that mean to you? What tasks do you perform? What would be your deliverables? How would you interact with engineers?&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;How do you ensure the delivered system conforms to your architecture?&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Model and Design eBay&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;From the time you type in www.ebay.com , to when you see eBay home page, explain what happens under the hood, at all layers&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;How does Ajax-style interaction impact a traditional/classical page-oriented architecture? What are the changes it would force to the classic architecture.&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;How would proliferation of Mobile application impact the classical web based architecture?&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Explain Map/Reduce in simple but reasonably accurate term, in a way a marketing person can appreciate it.&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Describe challenges and best practices in developing a distributed system – such as SOA based system.&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Describe the qualities of a well-designed API or service interface .&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Describe your favorite application development framework or design, explain its benefits and shortcomings &lt;span&gt;&amp;nbsp;&lt;/span&gt;(e.g. Spring or Struts, or your own framework)&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Compare and contrast SQL and NoSQL DBs, when do you use each?&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;How do you store a social graph like LinkedIn or Facebook?&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;How do you decide to buy or build a piece of technology?&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;eBay, as other online merchants and markets, has a policy against sale of fire arms, how do you design a system to enforce this policy?&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;How do you design an application – such as a cart or check out flow - in a way that product and UI folks can experiment with and optimized different aspect of it?&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;At any given time, eBay support a set of widely used browsers, for the rest, it display a warning message and asks users to upgrade to another browser. How so you design this system?&lt;/li&gt;&lt;li&gt;In a large and distributed system, how do you ensure data-consistency for critical functions such as &amp;nbsp;authentication/login&amp;nbsp;&lt;/li&gt;&lt;li&gt;Discuss a few significant technology trends, why do you think they are important? How would you anticipate their impact on current architecture/system?&lt;/li&gt;&lt;li&gt;What would you do in your first month of working for eBay&lt;/li&gt;&lt;/ul&gt;&lt;!--[if !supportLists]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;If some of the questions sound vague, it is because they are! (btw, they are a lot clearer than what you'd face with in reality). Remember that you need ask questions, seek and bring clarity to the problem definition before you jump into the solution.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Again if you are interviewing for a particular specialty such as Security, I18N, Messaging, Operations etc. you should expect particular question in those areas (I will post a list of question for my security and identity architecture interview later), but for system and application architecture, be prepared for at least 3 or 4 questions from the list above.&amp;nbsp;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-5525261566270655333?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/5525261566270655333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/09/interviewing-ebay-part-iii-software.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/5525261566270655333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/5525261566270655333'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/09/interviewing-ebay-part-iii-software.html' title='Interviewing @ eBay Part III - Software Architecture Interview'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-553948480096981780</id><published>2011-08-31T00:23:00.000-07:00</published><updated>2011-08-31T00:23:56.984-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Eng. Management'/><category scheme='http://www.blogger.com/atom/ns#' term='eBay'/><title type='text'>Interviewing @ eBay Part II - Software Engineering Interview</title><content type='html'>&lt;br /&gt;&lt;div class="MsoNormal"&gt;I am writing this hoping that candidate interviewing with eBay find this BEFORE their interview (if you did please let me or your interviewer know), but if you are not interviewing with eBay you may still find it useful.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Be prepared for the following category of questions:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;-&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;!--[endif]--&gt;&lt;b&gt;Explain a project or a problem you worked on&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Be prepared to talk in some detail about an interesting, or challenging, important and otherwise mentionable project in your career. Even if you are fresh out of school, there must have been some special class or final project. You should clearly talk about the problem, and describe how you arrived at the solution, your implementation and result …what you learned, where/if you failed, how you fixed it etc. The way you communicate, what you choose to communicate is almost as important as what the project actually was. So be direct, clear and to the point. Be prepared to defend your choices. Do not play it “safe” by saying “..well this was not my decision”, or “Oh..I didn’t like this approach, my boss asked me to do this” etc. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;Data Structure and Algorithm &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Brush up on basic computer science, know data structure. You will be asked a few questions about graphs, hash maps, trees and complexity. Familiarize yourself with how graphs are represented in memory and in persistent storage, how maps and hash maps are implemented, how to traverse trees – basic stuff. Please DO NOT trivialize the questions by saying “oh, there is APIs for this in Java, I never need this in real life”. This, in addition to demonstrating bad judgment and wrong situation assessment, does not get you off the hook!&lt;span&gt;&amp;nbsp; &lt;/span&gt;You should demonstrate that you are an engineer not a technician. &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;Programming Language&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Well, you are applying for a software engineering position, so you must know one or more modern programming languages very well (at least much better than I do) – eBay is a Java shop, so knowing Java really helps. &lt;span&gt;&amp;nbsp;&lt;/span&gt;You should be proficient in basics (variables storage classes, access modifiers, memory management, basic object orientation) as well as advanced features such as multi-threading and concurrency, generics, network programming etc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;You will be asked to write code or code snippets on the white board. I am amazed how many people are surprised when they are asked, for example, to write a simple singleton class on the board. It shows how comfortable you are with coding, syntax does not matter at all, so don’t be shy. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;Basic Modeling &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;You are expected to know how to model basic stuff for example a simple book store, or an email client. You should be able to break it up to basic entities and their relationships. Sometimes I ask candidates to model “eBay Marketplace”, do not be overwhelmed, you are not expected to model entire eBay, do as much as you can and do “out loud” thinking. You approach is as important as final design.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;Problem Solving &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;We are engineers, we solve problems. So you have to be able to frame and analyze problems, recognize tradeoffs in different solution and pick one. So prepared for questions such as “Estimate eBay marketplaces revenue” or “What happens if minimum wage is raised to $100/hr” or “Is hybrid cars more economical or full electric cars?”, “how do you prevent a corrupt DBA from stealing eBay data”, it goes without saying that the actual answer is not really as important as how you think thru the problem.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;“&lt;b&gt;Soft Stuff” - General attitude, fit, personal qualities&lt;/b&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;These may or may not be actual questions, but I’d like to see evidence of several personal qualities for example that you have passion, you care about the stuff that you are&amp;nbsp;tenacious&amp;nbsp;and don't give up easily, that you recognize your mistake you learn from it, that you know what a reasonable compromise is and are willing to reach one, that you can deal with conflict in a constructive way – and for more senior candidate - that you can influence people around you especially on why and what and not simply on how. Also I ask our candidates to tell me what they think a few major trends in technology are and why &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;b&gt;And finally, please know the company&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Last but not least, please familiarize yourself with eBay if you are not familiar with it, nothing gets your rejected faster than saying “eBay? Who uses eBay? I am really not familiar with it” – OK, this is an extreme case but hey it is real. It is &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Of course if you are being interviewed for a particular area, e.g. security, Hadoop or Eclipse tools development, you should expect a few questions in addition to the above in each particular areas, for example in security, you should be very comfortable with authentication protocols and practices (zero proof, Diffie-Hellman algorithm, Kerberos etc.) authorization techniques, RBAC, ABAC, XACML , basic cryptography etc. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;You may ask, how about other stuff, such as JavaScript, CSS, SQL, Unit Test etc. etc. Yes there are a lot of technologies and techniques used in building large internet apps, but my beleife is that if you know the basics and possess the basic qualities, even if you don’t know the rest, you will be a successful productive engineer.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-553948480096981780?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/553948480096981780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/08/interviewing-ebay-part-ii-software.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/553948480096981780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/553948480096981780'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/08/interviewing-ebay-part-ii-software.html' title='Interviewing @ eBay Part II - Software Engineering Interview'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-6348788235010494775</id><published>2011-08-26T23:07:00.000-07:00</published><updated>2011-08-31T00:25:07.461-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='People'/><category scheme='http://www.blogger.com/atom/ns#' term='eBay'/><category scheme='http://www.blogger.com/atom/ns#' term='Organization'/><title type='text'>Interviewing @ eBay, Part I - The basics</title><content type='html'>&lt;div class="MsoNormal"&gt;When someone interviews with eBay, s/he is given an interview schedule with the name and title of all interviewers, the natural expectation (at least mine) is that s/he searches for the name of all those people as part of the pre-interview preparation. I view this as minimum due diligence that a candidate should do 11 years into the 21&lt;sup&gt;st&lt;/sup&gt; century. So I hope whoever interview with me at eBay finds and reads this post &lt;b&gt;(if you do, please let me know)&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Now that you found this, I will give you a leg up over other candidates: &amp;nbsp;in the series of four posts, I tell you what questions I would be asking in my interviews for four positions:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;-&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Software engineer&lt;/li&gt;&lt;li&gt;-&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Product Managers&lt;/li&gt;&lt;li&gt;-&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Software Architects&lt;/li&gt;&lt;li&gt;-&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Engineering Managers (Sr. Managers, Director, Sr. Director and VPs)&lt;/li&gt;&lt;/ul&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Before we start with specific position, let me first cover the common questions and aspects for all interviews.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;I look for the following “necessary” – but not sufficient - qualities that make a candidate productive. In a nutshell, person should be smart, know his field, willing to work hard, willing to compromise and get things done and get along with people under a range of circumstances.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Smart&lt;/b&gt;: I am not talking about genius, or someone that can solve puzzles in 10 seconds, but some one that is generally sharp, can think on his/her feet and is solve problems. One of the clearest indication of it is whether someone listens to question, asks follow up questions to clarify what is being asked and then clearly and directly answers that question and then stop. No rambling, no answering other questions and no circular, perpendicular or random answers!&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Knowledgeable&lt;/b&gt;: Candidate must have proficient level of knowledge in his/her domain, this is separate from being smart, each field requires certain level of experience and formal education – I expand on this with specific question in each of the fields above.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Work ethics&lt;/b&gt;: Regardless of how smart and knowledgeable one may be, s/he has to be focused and will to work hard. Real engineering tasks are 10-20% about great ideas, and 80% about grunt work, boring details, dealing with plumbing, &amp;nbsp;debug, re-build, fine tune etc. If you are not willing to do that, you won’t be successful.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Pragmatic&lt;/b&gt;: You must be willing to compromise, change course, give up credit, change your familiar and favorite terminology etc. to get things done. All the smarts, knowledge, hard work often is wasted if you cannot get it done and out at the end. I ask what you are willing and what you are not willing to compromise on for a given project and why, what you would do if you feel a wrong decision was made…&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Culture fit&lt;/b&gt;: The last of the “necessary qualities” is the ability to get along with others under all sorts of circumstances: uncertain and insufficient data, deadline pressures, failures, inter personal and inter group rivalries … under all those conditions, you should be able to maintain your relationships and get along with others. One of the greatest indicators of whether someone can do it by the way, is sense of humor. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Next post: my list of questions for Software Engineering positions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-6348788235010494775?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/6348788235010494775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/08/if-you-are-interviewing-with-me-ebay.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/6348788235010494775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/6348788235010494775'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/08/if-you-are-interviewing-with-me-ebay.html' title='Interviewing @ eBay, Part I - The basics'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-1125903272003864602</id><published>2011-08-16T00:25:00.000-07:00</published><updated>2011-08-16T22:03:52.077-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><title type='text'>On Bullshit...</title><content type='html'>As some one who&lt;br /&gt;&lt;br /&gt;1- Deals with his fair share of a BS&lt;br /&gt;2- Needs to have definitions for everything&lt;br /&gt;&lt;br /&gt;I have been missing a formal definition for BS.&amp;nbsp;Courtesy&lt;a href="http://www.bogost.com/blog/gamification_is_bullshit.shtml"&gt; &lt;/a&gt;philosopher&amp;nbsp;Harry G. Frankfurt book "&lt;a href="http://product.half.ebay.com/_W0QQprZ43543635"&gt;On BullShit&lt;/a&gt;" &amp;nbsp;- via&amp;nbsp;&lt;a href="http://www.bogost.com/blog/gamification_is_bullshit.shtml"&gt;Ian Bogost post&lt;/a&gt;&amp;nbsp;-&amp;nbsp;that issue has been remedied now.&lt;br /&gt;&lt;br /&gt;"&lt;span class="Apple-style-span" style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19px;"&gt;It is impossible for someone to lie unless he thinks he knows the truth. Producing bullshit requires no such conviction. A person who lies is thereby responding to the truth, and he is to that extent respectful of it. When an honest man speaks, he says only what he believes to be true; and for the liar, it is correspondingly indispensable that he considers his statements to be false. For the bullshitter, however, all these bets are off: he is neither on the side of the true nor on the side of the false. His eye is not on the facts at all, as the eyes of the honest man and of the liar are, except insofar as they may be pertinent to his interest in getting away with what he says. He does not care whether the things he says describe reality correctly. He just picks them out, or makes them up, to suit his purpose."&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19px;"&gt;WOW ..didn't know there were so much academic work done on BS.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-1125903272003864602?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/1125903272003864602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/08/on-bullshit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/1125903272003864602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/1125903272003864602'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/08/on-bullshit.html' title='On Bullshit...'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-4192717470306857423</id><published>2011-08-16T00:05:00.000-07:00</published><updated>2011-08-16T00:05:31.574-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Strategy'/><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>Social Norms, Market Norms and IDPs</title><content type='html'>&lt;br /&gt;&lt;div class="MsoNormal"&gt;Last week LinkedIn caused a backlash and lost a lot of good will – including mine – by opting everyone into their social advertising program. Before that there was (and still is) a LOT of discussion – and disagreement – about Google+ strict real name policy and the words facebook and privacy can almost be used as antonyms…&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;But why users react so strongly to use of their identity, relationship and data by these networks, after all most people, I presume, understand that companies like Google, FB, LinkedIn etc. are for profit firms with the goal to make money, and that is a the core of most of their policies (and&lt;a href="http://www.youtube.com/watch?v=GZPcGapl2dM"&gt; not that anything is wrong with that!&lt;/a&gt;). &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;As someone once said “&lt;a href="http://techland.time.com/2010/10/15/facebook-youre-not-the-customer-youre-the-product/"&gt;if you are not paying them, you are not their customer, you are their product&lt;/a&gt;”, and, as harsh as it sounds, they do (and have to) sell their product one way or another.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;I am not claiming that one unified theory explains the users’ strong reactions to them - and possible solution - but Dan Airely in “Predictable irrationality” may come close. If you have not read “Predictable irrationality” you should. It is an easy read and a very enlightening book – not to mention entertaining – by behavioral economist &lt;a href="http://danariely.com/"&gt;Dan Airely&lt;/a&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Among many interesting observations he makes is the notion of “Market and Social Norms”. It is basically a very simple and common sense notion: All of us live in two worlds simultaneously, a social world where exchanges of good and services are regulated by social norms, the need for being part of a community and a delayed- reciprocity, and a market world where exchange of goods and services are regulated by a cold, sharp edge rules of the market, prices, interest rates, cost and benefits. Life is good as long as these world are kept separated (&lt;a href="http://www.youtube.com/watch?v=uPG3YMcSvzo&amp;amp;feature=related"&gt;as George Costonza famously pronounced&lt;/a&gt;) – but when you mix the two the real trouble starts and “it blows up”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Airely gives a few examples: You go to your mother-in-law for thanksgiving and offer to pay her a large sum for the sumptuous spread she put on the table for you … and next year you’d be sitting in front your TV with a frozen dinner. Or more vividly, the example of a guy who takes out a girl to three or four expensive dates and finally brings up the subject of money and how much the romance is costing him! …and of course suffers the dire consequences. Next time he will sure remember Woody Allen’s word of wisdom: “The most expensive sex is a free one”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;The “Social Networking” sites and identity seems to be a classic example of crossing social and market norms. The use of social networking sites is free and there is no other signal that the relationship between user and network operator is a market or commercial relationship. Users may feel/perceive that they are dealing with a “host” one that allows them to interact with their friends, family and catch up on “social” stuff …you know, everyday life that is so outside the “market norms”. I don’t have data but I feel users do understand that these sites have to make money, and are OK with some ad poping up from time to time or being displayed alongside their content, but I doubt that most people understand how those ads relates to their data (posts, searches, conversations etc.) . Every now and then someone (say WSJ or some tech blog) reminds them of how their data is being shared with others – or why the need to “report” accurate names – and that is the moment where “worlds collide”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Maybe (and only maybe), if an identity provider (or social network) actually started an informed conversation with its users about the data sharing and gave them meaningful control, can it bring the relationship to the “market world”. In that world users are not the network “product”, but informed partners. For example, if an identity provider (or network operator) makes it clear to me that they can get me a good deal on a camera lens with free shipping if I give them my shipping address and the consent for them to obtain the shipping history to that address from a few large merchants, then I may be happy to share my address – that is firmly a relationship in market domain – and I am happy, but when I start to see ads from drunk-driving lawyers in Denver area b/c I searched for “maximum legal blood alcohol level” &lt;span&gt;&amp;nbsp;&lt;/span&gt;- I was taking an online traffic school exam to clear a ticket – while attending a conference in Denver area, that is crossing&lt;span&gt;&amp;nbsp; &lt;/span&gt;the line, and that is when I might have come close to understanding how that girl felt on the fourth date in Dan Airely’s example!&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-4192717470306857423?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/4192717470306857423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/08/social-norms-market-norms-and-idps.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/4192717470306857423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/4192717470306857423'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/08/social-norms-market-norms-and-idps.html' title='Social Norms, Market Norms and IDPs'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-8118091296145422917</id><published>2011-07-20T22:34:00.000-07:00</published><updated>2011-07-25T00:36:46.302-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>BrowserID...and the search for perfect Identity Selector</title><content type='html'>This is a long post, and here is the gist of it:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;In general I think we, as identity community, are still looking for a practical solution to a simple yet&amp;nbsp;adequate "identity selector", CardSpace represent a solution on the rich&amp;nbsp;and complex end and BrowserID represent a solution on the simple (but not rich)&amp;nbsp;end, every solution is a valuable iteration to the final solution of the perfect identity selector - I feel the iterations will continue.&lt;/blockquote&gt;&lt;br /&gt;Now, here is for those you are interested in the details:&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;A few days ago Mozilla &lt;a href="http://identity.mozilla.com/post/7616727542/introducing-browserid-a-better-way-to-sign-in"&gt;announced the availability ofBrowserID&lt;/a&gt;. Identity is a hot topic these days, so almost immediately the community (and my mail box) was buzzing with predictable questions such as:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Is BrowserID the next generation of OpenID?&lt;/li&gt;&lt;li&gt;What are the differences between OpenID and BrowserID?&lt;/li&gt;&lt;li&gt;Will BrowserID is the answer to Identity on the web? &lt;/li&gt;&lt;li&gt;Is BrowserID secure? &lt;/li&gt;&lt;li&gt;What is the relationship between BroswerID and OAuth or OpenID Connect?&lt;/li&gt;&lt;li&gt;Should I implement BrowserID now?&lt;/li&gt;&lt;/ul&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;All legitimate questions to be sure, but perhaps a few of them could have been clarified more easily if Mozilla had called this feature, say, &lt;b&gt;“Verified Email”&lt;/b&gt; – after the title the specification the BrowserID is based on (see &lt;a href="http://www.open-mike.org/entry/verified-email-protocol"&gt;Averified email protocol for the browser&lt;/a&gt;). I think that would have been a name that reflected the intent and use of this feature and helped answered these questions.&lt;br /&gt;&lt;br style="mso-special-character: line-break;" /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;In this post I write about where I think BrowserID would fit in the space and, as risky as it, venture a guess as to whether it will be adopted by identity providers and relying parties (not wise I know…but hey this is a personal blog) - if you want to read more about the implementation details of BrowserID see a very good writeup by Lioyd Hilaiel &lt;a href="http://lloyd.io/how-browserid-works"&gt;here&lt;/a&gt;, and I also recommend reading&lt;a href="http://dickhardt.org/2011/07/browserid/"&gt; Dick Hardt notes on BrowerID&lt;/a&gt; as well.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;To start let me summarize what BrowserID is. BrowserID is a protocol for&amp;nbsp;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;- Verifying users email addresses (as many as a use wants) as reported by an email provider (or Identity Provider)&lt;/div&gt;&lt;div class="MsoNormal"&gt;- Storing it in browser (Firefox as of now) safely - or one would hope so. &lt;/div&gt;&lt;div class="MsoNormal"&gt;- Transmitting email address safely to a "relying party" that is a site that requires an email address securely.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;It uses PK cryptography to ensure integrity of all communications. BrowserID requires two key pairs, one generated by IDP (email provider) to sign the assertion (email x belongs to subject y) and another key pair generated later by browser to sign the (subject+email+IDP public key) token and pass it on to relying party (that is your web site). So it is reasonably safe and uses a subject confirmation method known as "Holder of Key.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;So how should one use BrowserID? is this OpenID? is this a replacement for OAuth?&amp;nbsp;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;I think the proper use of BrowserID, if it ever gets support from other browser vendors, is to replace the annoying "email verification dance". BrowserID is a fantastic lower level solve for this problem. Is this a replacement for OpenID or OpenID Connect? I think not! does it replace OAuth, absolutely not, there are simply two different things. &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;BrowserID, in my view, really is not an ID - my definition of identity is something I can replace registration with, not just login panel.&amp;nbsp;&lt;/div&gt;&lt;div class="MsoNormal"&gt;An identity is more about attributes than about authenticating an identifier (such as email address). and BrowserID is by design is silent about that matter, in the words of Mike Hanson, the author of Email Verification Protocol:&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;"&lt;span style="font-family: Calibri, sans-serif; font-size: 11pt;"&gt;The idea that led to the BrowserID work was not "how can we fix identity on the web", but "what is the smallest possible claim we could make to make progress on the browser as a claims agent?"&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: Calibri, sans-serif; font-size: 11pt;"&gt;&lt;/span&gt;And&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: Calibri, sans-serif; font-size: 11pt;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: Calibri, sans-serif; font-size: 11pt;"&gt;"...&lt;/span&gt;&lt;span style="font-family: Calibri, sans-serif; font-size: 11pt;"&gt;Attribute exchange is deliberately out of scope"&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Mike states the design goals clearly and the solution achieve its goals perfectly, the only thing that complicates the matter is the name BrowserID and the fact that identity means so many things to so many people.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Will BrowserID be adopted widely as a form of identity? will it replace your login button? I have my doubts on both counts.&lt;br /&gt;&lt;br /&gt;First off, let me say that I would use BrowserID for email verification (if it is adopted by consumers), it is a very elegant solution for that. As for wider adoption as a form of identity, let's look at the three main actors in any identity ecosystems: RPs, IDPs and User/Consumers.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;For a large number of relying parties, an identity provider that simply asserts one attribute (email address) is not valuable enough to dedicate scarce real estate of "login page" to (and add to their NASCAR complexity), RPs would opt for richer IDPs (Facebook, G+, Twitter etc.), that way they not only get an email address by rich set of information about a user (you may ask how about privacy? more on that later).&amp;nbsp;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;IDPs (for example email providers such as Gmail, Yahoo, MSN etc.) also do not have clear cut incentive to support BrowserID&amp;nbsp; - maybe receiving fewer number of "confirmation emails"? Entities such as FB and Twitter are unlikely to support BrowserID (x@y.com does not have to be a real email address, it is simply an identifier so FB could decide to support user@facebook.com) since they are strategically dedicated to have a presence on RPs login pages and not to be inter-mediated by Moziall's sign-in button.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;There are also a few questions on the users adoption, prime among them is what happens when a user switches browser or device (with most user today using more than one device/browser to access the internet)&lt;/div&gt;&lt;div class="MsoNormal"&gt;and to lesser degree whether general population of user will sufficiently understand&amp;nbsp;the use experience.&lt;br /&gt;&lt;br /&gt;Finally I have to say I am impressed by one aspect of implementation (which I assume was a lesson learned from CardSpace lack of adoption) and that is the near dead simple implementation for RP sites.&lt;br /&gt;&lt;br /&gt;In general I think we, as identity community, are still looking for a practical solution to a simple yet&amp;nbsp;adequate "identity selector", CardSpace represent a solution on the rich&amp;nbsp;and complex end and BrowserID represent a solution on the simple (but not rich)&amp;nbsp;end, every solution is a valuable iteration to the final solution of the perfect identity selector - I feel the iterations will continue.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-8118091296145422917?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/8118091296145422917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/07/browseridand-search-for-perfect.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/8118091296145422917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/8118091296145422917'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/07/browseridand-search-for-perfect.html' title='BrowserID...and the search for perfect Identity Selector'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-5475520841598609320</id><published>2011-07-19T21:05:00.000-07:00</published><updated>2011-07-19T21:09:17.829-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Talks'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>Identity and E-Commerce: Talk @ Cloud Identity Summit 2011</title><content type='html'>I am attending Cloud Identity Summit in Keystone, CO. It is fast becoming THE identity conference of the year where you can see all, be it small group of, &amp;nbsp;"identeratees".&lt;br /&gt;&lt;br /&gt;I am also giving a talk tomorrow (7/20/2011) @ 4:00pm titled "Role of Identity in E-Commerce' where we share our findings and observations over the past year while building an identity provider for e-commerce sites.&lt;br /&gt;&lt;br /&gt;You can see the presentation here:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="__ss_8640465" style="width: 425px;"&gt;&lt;strong style="display: block; margin: 12px 0 4px;"&gt;&lt;a href="http://www.slideshare.net/farhangkassaei/identity-and-ecommerce" target="_blank" title="Identity and E-Commerce"&gt;Identity and E-Commerce&lt;/a&gt;&lt;/strong&gt; &lt;iframe frameborder="0" height="355" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/8640465" width="425"&gt;&lt;/iframe&gt; &lt;br /&gt;&lt;div style="padding: 5px 0 12px;"&gt;View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/farhangkassaei" target="_blank"&gt;Farhang Kassaei&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The slides are not meant to be read, but to support my talk, so they may feel a bit choppy when you read it.&lt;br /&gt;&lt;br /&gt;If I want to summarize it, it is&lt;br /&gt;&lt;br /&gt;"A viable commercial identity is a Super Identity, one that is not just an identifier but a complete, accurate and up-to-date federated profile compose of attributes from multiple trusted providers, obtained with users' consent and control in exchange for real value"&lt;br /&gt;&lt;br /&gt;If you attend the talk tomorrow, please stop by and say hi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-5475520841598609320?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/5475520841598609320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/07/identity-and-e-commerce-talk-cloud.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/5475520841598609320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/5475520841598609320'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/07/identity-and-e-commerce-talk-cloud.html' title='Identity and E-Commerce: Talk @ Cloud Identity Summit 2011'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-5409657265877290249</id><published>2011-07-12T10:25:00.000-07:00</published><updated>2011-07-12T10:25:23.269-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Talks'/><title type='text'>UMA - User Managed Access - Webinar , July 13 9 AM PST</title><content type='html'>UMA Working group is holding a Webinar tomorrow @ 9am PST. &lt;a href="http://kantarainitiative.org/confluence/display/uma/Home"&gt;See UMA home page for full details.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you own/author public APIs or if you write applications that access such APIs, chances are you have heard or know about OAuth, UMA is the next thing you should know about.&lt;br /&gt;No you don't need to implement this tomorrow, but it informs your opinion about a very important and emerging topic: where the right intersection between access to an individual's information and enabling individuals to control that access should be. UMA aims to be the corner stone of that enablement.&lt;br /&gt;&lt;br /&gt;Attend tomorrow's Webinar to learn more about UMA.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-5409657265877290249?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/5409657265877290249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/07/uma-user-managed-access-webinar-july-13.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/5409657265877290249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/5409657265877290249'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/07/uma-user-managed-access-webinar-july-13.html' title='UMA - User Managed Access - Webinar , July 13 9 AM PST'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-3203698424415527124</id><published>2011-07-12T10:13:00.000-07:00</published><updated>2011-07-12T10:13:33.889-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>Power to the People - Data Sharing Power That is - UMA Draft Recommendation Released</title><content type='html'>After more than a year of hard work, UMA WG (User Managed Access Working Group ) announced the &lt;a href="http://kantarainitiative.org/wordpress/2011/07/announcing-user-managed-access-uma-gives-data-sharing-power-to-the-people/"&gt;draft recommendation for UMA protocol&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;UMA is a communication protocol and is defined by its&lt;a href="http://kantarainitiative.org/confluence/display/uma/UMA+FAQ"&gt; formal FAQ&lt;/a&gt; as&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica,Arial,sans-serif; font-size: 15px; line-height: 17px;"&gt;User-Managed Access (UMA, pronounced "OOH-mah" like the given name) is a protocol designed to give a web user a unified control point for authorizing who and what can get access to their online personal data (such as identity attributes), content (such as photos), and services (such as viewing and creating status updates), no matter where all those things live on the web.&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica,Arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 17px;"&gt;Former&amp;nbsp;colleague and current lead of UMA WG @ Kantara Eve Maler gave a very good presentation last year at Cloud Identity Summit that you can see &lt;a href="http://xmlgrrl.com/publications/CloudID-UMA-21Jul2010.pdf"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica,Arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 17px;"&gt;. &lt;a href="http://kantarainitiative.org/confluence/display/uma/Home"&gt;There is also a Webinar on July 13.&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica,Arial,sans-serif; font-size: 15px; line-height: 17px;"&gt;To explain UMA and what it tries to do, I feel an example works the best (the spec and the terminology are not the easiest way to understand UMA).&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica,Arial,sans-serif; font-size: 15px; line-height: 17px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica,Arial,sans-serif;"&gt;Alice is an on demand speaker and celebrity chef, she travels a lot. She uses&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica,Arial,sans-serif;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo2; text-indent: -.25in;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica,Arial,sans-serif;"&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;A Calendar application,&lt;/span&gt;&lt;/li&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica,Arial,sans-serif;"&gt;&lt;li&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;A general purpose social networking site&lt;/li&gt;&lt;li&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;A niche professional networking/community site of food enthusiast&lt;/li&gt;&lt;li&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;Owns a selling account with a popular marketplace for high end kitchen gadgets and appliance.&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica,Arial,sans-serif;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo2; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo2; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo2; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica,Arial,sans-serif;"&gt;(All above service are called resources and Alice is a resource owner)&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica,Arial,sans-serif;"&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica,Arial,sans-serif;"&gt;&lt;div class="MsoNormal"&gt;She uses the services of several useful applications:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo2; text-indent: -.25in;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Travelers Guide&lt;/b&gt;: An application that recommends restaurants and activity in all major cities based on Alice’s preferences of profile on general purpose social network.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Chef Tracke&lt;/b&gt;r: An application that notifies Alice’s professional connections and fans when she is coming to their town and where she speaks.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Merchandise Lister:&lt;/b&gt; A web application that lists Alice’s autographed recipe books and limited edition appliances to multiple online channels including the marketplace.&lt;/li&gt;&lt;/ul&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo2; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo2; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;(All above are called consumer or requester)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Alice can grant authorization to the three applications above using OAuth directly. In this case the four resource servers (Social network, professional network, calendar server and marketplace) each maintain Alice’s authorization to respective application(s).&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-SVz0lRLiTqg/Thv3cLhRw-I/AAAAAAAAZJU/KHAWoQTX7gU/s1600/UAM1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="218" src="http://3.bp.blogspot.com/-SVz0lRLiTqg/Thv3cLhRw-I/AAAAAAAAZJU/KHAWoQTX7gU/s320/UAM1.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;However Alice (a busy professional) does not have a centralized and easy to access location where she can see all the authorization she granted to different applications. &amp;nbsp;It is true that each resource server maintains a record of Alice’s granted authorization, but since each server has a different way to display the authorization (and they often buried in random places around the resource server) it is unlikely that Alice ever gets a clear view of how different applications are using her information.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Or alternatively, Alice can go to a one server – called Authorization Manager (AM) – and give authorization to three applications at one place. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-xpfD8ek8xus/Thv3h7iMyYI/AAAAAAAAZJY/WC87qnITXHg/s1600/UAM2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="269" src="http://4.bp.blogspot.com/-xpfD8ek8xus/Thv3h7iMyYI/AAAAAAAAZJY/WC87qnITXHg/s320/UAM2.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;The benefits are clear. Alice can literally see all applications that access her information (and the extent of their access) at one place. For example Alice can limit the access of Travelers Guide to one week (during which she travels) &amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;To understand why UMA is important and what UMA does, we should first understand some of the implicit assumptions (or some may argue simplifications) behind OAuth 2.0 authorization.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;OAuth 2.0 does require an authorization step, where the “resource owner” authorizes a consumer application to access a resource on his/her behalf. This authorization however requires and assumes:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpFirst" style="mso-list: l1 level1 lfo1; text-indent: -.25in;"&gt;-&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpFirst" style="mso-list: l1 level1 lfo1; text-indent: -.25in;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Authorization is performed at the time of resource access by consumer&lt;/li&gt;&lt;li&gt;Resource owner should be present to grant authorization&lt;/li&gt;&lt;li&gt;Authorization assume that future access to resource is always made on behalf of resource owner &amp;nbsp;by requester (consumer application) – not on behalf of someone else (say Alice’s assistant in the example above) - This is very important point and deserves its own post :-) OAuth scope does not cover this class of use cases at all.&lt;/li&gt;&lt;/ul&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l1 level1 lfo1; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpLast" style="mso-list: l1 level1 lfo1; text-indent: -.25in;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;And more importantly in my view (and from giving the power back to people point of view)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoListParagraph" style="mso-list: l1 level1 lfo1; text-indent: -.25in;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;Resource owner (user) has to keep track of application/consumers s/he has authorized to access various resource on his/her behalf (how many of you know how many application you have authorized to access the collection of your online accounts? And exactly what type of privileges you granted to them? Think about it!)&lt;/li&gt;&lt;/ul&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;Now, granted, this is not OAuth problem, by it is the byproduct of individual consumer obtaining authorization to access variety of resources individually.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;UMA is set to address all the above with the introduction of a central Access Manager (AM – in UMA terminology) and, the protocols to connect Resource Server and Consumer to AM.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;UMA is an ambitious undertaking (in my experience all authorization initiatives are!) primarily because its success depends on whether users (resource owners) can successfully express policies the govern consumer access to the resources owned by them. This is the linchpin of any authorization project I have ever seen or been part of.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Whether UMA is adopted and implemented as a viable product is remained to be seen, but UMA protocol is a firm step in the right direction. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;In the next entry, I will focus on UMA model and associated communication protocol among its participants.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-3203698424415527124?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/3203698424415527124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/07/power-to-people-data-sharing-power-that.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/3203698424415527124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/3203698424415527124'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/07/power-to-people-data-sharing-power-that.html' title='Power to the People - Data Sharing Power That is - UMA Draft Recommendation Released'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-SVz0lRLiTqg/Thv3cLhRw-I/AAAAAAAAZJU/KHAWoQTX7gU/s72-c/UAM1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-8010180103002848422</id><published>2011-06-20T23:16:00.000-07:00</published><updated>2011-06-20T23:16:29.395-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Eng. Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Organization'/><title type='text'>Decision Making Biases</title><content type='html'>We all make decisions, and I suspect we feel we make most of those decision&amp;nbsp;objectively... or do we?&lt;br /&gt;&lt;br /&gt;Here is a great article from &lt;a href="http://hbr.org/2011/06/the-big-idea-before-you-make-that-big-decision/ar/1"&gt;HBR about decision making biases&lt;/a&gt;&amp;nbsp;(free access till July 4, 2011), the best part is the survey link at the start of the article. Once you answer the survey, it compares your answers to other respondents' answers and grade your decision making biases from low risk to high risk for the following biases:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Pattern Recognition Bias&lt;/b&gt; - The "Oh, I have seen this before. Here is what are going to do ...."&lt;br /&gt;&lt;b&gt;Action Orientation Bias&lt;/b&gt; - The need and bias for action in part of decision maker&lt;br /&gt;&lt;b&gt;Stability Bias&lt;/b&gt; - The need to do as you have always done it&lt;br /&gt;&lt;b&gt;Social Harmony&lt;/b&gt; - The "group think", or "here is what everybody else think/say we should do ..."&lt;br /&gt;&lt;b&gt;Process Orientation Bias&lt;/b&gt; - Speaks for itself&lt;br /&gt;&lt;b&gt;Self-Interest &amp;nbsp;Bias&lt;/b&gt; - simply put, thinking what is good for you is good for the firm or whoever suggest an option, always makes it with the best interest of firm in mind.&lt;br /&gt;&lt;br /&gt;The one, the jumps at me in&amp;nbsp;particular&amp;nbsp;is the "Social Harmony" bias, specially harmony with upper management. This is one bias I have seen so predominantly is most all decision making. Specially when upper managements do not formally separate discussion and decision and simply voice a strong opinion in a debate. Expressing&amp;nbsp;dissent after that becomes so risky that even if you don't have the bias, you are likely to adopt one temporarily !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-8010180103002848422?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/8010180103002848422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/06/decision-making-biases.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/8010180103002848422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/8010180103002848422'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/06/decision-making-biases.html' title='Decision Making Biases'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-7946758199255711641</id><published>2011-06-20T22:54:00.000-07:00</published><updated>2011-06-20T22:54:36.559-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>W3C Workshop on Identity in the Browser</title><content type='html'>OK, it is a a little old, but this was an interesting get together of identity community discussing the role browser can play in managing users identity and perhaps authentication. Although it did come up that in the age that more or more people use embedded apps, any identity solution based on the assumption of a runtime environment called a browser may not be sufficient.&lt;br /&gt;&lt;br /&gt;What I feel was the most insightful comment though was in the last paragraph of Dick Hardt position paper titled &lt;a href="http://www.w3.org/2011/identity-ws/papers/idbrowser2011_submission_46.pdf"&gt;"The Chicken,  the  Egg  and  the  Rooster: Why  Internet  Identity  is  Still  Unsolved"&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Identity  is  more  than  authentication. The  success  of  Facebook  et .al.  is  driven  by &lt;br /&gt;access  to  information  about  the  user  rather  than  just  which  user  it  is.  A  broadly &lt;br /&gt;adopted  solution  will  enable  the  user  to  share  profile  information  and  delegate &lt;br /&gt;authorization.&lt;/blockquote&gt;This is the key point that I some times referred to it as "Pizza and Delivery", authentication, SSO is like delivery&amp;nbsp;mechanism, but RPs are interested in "information about the user" or attributes and profile, not how it is delivered to them. Much like people who order pizza are interested in pizza not how it is delivered.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-7946758199255711641?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/7946758199255711641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/06/w3c-workshop-on-identity-in-browser.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/7946758199255711641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/7946758199255711641'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/06/w3c-workshop-on-identity-in-browser.html' title='W3C Workshop on Identity in the Browser'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-5065859216573956934</id><published>2011-05-25T22:39:00.000-07:00</published><updated>2011-05-25T22:39:24.286-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Photography'/><title type='text'>...on a mote of dust suspended in a sunbeam</title><content type='html'>The famous "&lt;a href="http://en.wikipedia.org/wiki/Pale_Blue_Dot"&gt;Pale Blue Dot&lt;/a&gt;" photo showing earth as seen from the edge of the solar system:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://tecnoscience.squarespace.com/storage/paleblue_custom.jpg?__SQUARESPACE_CACHEVERSION=1298982804049" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://tecnoscience.squarespace.com/storage/paleblue_custom.jpg?__SQUARESPACE_CACHEVERSION=1298982804049" width="236" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;"&lt;span class="Apple-style-span" style="color: #323229; font-family: Georgia, 'Times New Roman', serif; font-size: 14px; line-height: 20px;"&gt;Look again at that dot. That’s here. That’s home. That’s us. On it everyone you love, everyone you know, everyone you ever heard of, every human being who ever was, lived out their lives. The aggregate of our joy and suffering, thousands of confident religions, ideologies, and economic doctrines, every hunter and forager, every hero and coward, every creator and destroyer of civilization, every king and peasant, every young couple in love, every mother and father, hopeful child, inventor and explorer, every teacher of morals, every corrupt politician, every ‘superstar,’ every ‘supreme leader,’ every saint and sinner in the history of our species lived there — &lt;b&gt;&lt;i&gt;on a mote of dust suspended in a sunbeam&lt;/i&gt;&lt;/b&gt;." Carl Sagan&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #323229; font-family: Georgia, 'Times New Roman', serif; font-size: 14px; line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #323229; font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 20px;"&gt;Also illustrated by the photo is the&amp;nbsp;superiority&amp;nbsp;of imagination over knowledge ... knowledge sent the Voyager to the edge of the solar system and beyond, but imagination (by Sagan) turned its camera toward earth to take this photo - perhaps one the most impact-full photos of all time.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #323229; font-family: Georgia, 'Times New Roman', serif; font-size: 14px; line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #323229; font-family: Georgia, 'Times New Roman', serif; font-size: 14px; line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-5065859216573956934?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/5065859216573956934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/05/on-mote-of-dust-suspended-in-sunbeam.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/5065859216573956934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/5065859216573956934'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/05/on-mote-of-dust-suspended-in-sunbeam.html' title='...on a mote of dust suspended in a sunbeam'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-8560127896129164489</id><published>2011-05-15T22:05:00.000-07:00</published><updated>2011-05-15T22:05:44.900-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><title type='text'>To OSGi or not to OSGi ... that is NOT the question</title><content type='html'>&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black; font-size: 13.5pt;"&gt;&lt;br /&gt;The topic of OSGi is&amp;nbsp;attracting&amp;nbsp;some attention these days, at least in my neck of the woods. The short of it is that a lot of web application developers are asking whether they should use OSGi or not. My answer: this is not the question you should be asking!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black; font-size: 13.5pt;"&gt;Yes, I know that the popular narrative is that OSGi makes your system more modular, makes&amp;nbsp;dependency management a thing of the past, certainly solves all CLASSPATH issues, allows you to have multiple version of the same bundle running at the same time and enables you to start, stop, and deploy new bundles without restarting your framework (or server).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black; font-size: 13.5pt;"&gt;The reality though is that OSGi is a component technology (much like SOA or EJB) and a tool, it perhaps can make a well design system be implemented with more ease and fidelity to its original design, but it can NOT do anything for a poorly designed or organically grown system and in fact makes it more complex. So the right question to consider is what qualities my system has to have so that OSGi can actually help me?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black; font-size: 13.5pt;"&gt;To me, the answer is similar to SOA system, or any&amp;nbsp;granularly&amp;nbsp;componentized system,&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;b&gt;&lt;span style="color: black; font-size: 13.5pt;"&gt;1- Granularity and boundaries of components:&lt;/span&gt;&lt;/b&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="color: black; font-size: 13.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black; font-size: 13.5pt;"&gt;This is perhaps the most important aspect of a distributed system. OSGi unit of component is a "bundle", physically bundle is a jar file, it can logically be a Java class or a full subsystem - such as Jetty or a large web application - or anything in between, OSGi does not offer any hint here - nor should it. Granularity of modules is an architectural matter. For existing system, this (breaking the system apart into logical modules) is almost always the most difficult step toward any&amp;nbsp;modularization. If your system already does not clear module with defined&amp;nbsp;boundaries, and if it is organically grown, there is no easy or automated way to decide what modules are, needless to say that simply creating one massive OSGi module does not help you at all and simply add one more layer of useless abstraction on top of everything else.&amp;nbsp;&amp;nbsp;Your best bet here is to use a dependency graph tool and try to isolate and bundle packages/jar files based on some topological sort method. This often requires refactoring of existing code to remove bad dependencies and transform the graph into architecture layering you intend. This brings me to the second aspect of a well design modular system.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;b&gt;&lt;span style="color: black; font-size: 13.5pt;"&gt;2- Layering and velocity:&lt;/span&gt;&lt;/b&gt;&lt;span class="apple-converted-space"&gt;&lt;span style="color: black; font-size: 13.5pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black; font-size: 13.5pt;"&gt;In order to define your logical modules correctly, you need to define some form of layering that informs your dependency management i.e. a lowest layer (let's call it Kernel), with no dependencies but the standard runtime, one layer above (say Core), with dependency on Kernel. Core is a layer and may include multiple logical module (jars/packages), then you may have Service and Application layer etc. You need to decompose and map your entire code based to your own pre-defined layer and in addition decide a velocity (release cycle) for each layer, as well as whether your release of lower layer would be forever backward compatible or it would impact higher layers. (more on this in 4)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black; font-size: 13.5pt;"&gt;Again OSGi does not offer help here - and nor should it - it simple is a technology.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;b&gt;&lt;span style="color: black; font-size: 13.5pt;"&gt;3- Dependency Management:&lt;span class="apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-size: 13.5pt;"&gt;defining layers does not&amp;nbsp;guarantee&amp;nbsp;that dependency schema will be enforced, still you need to manage it (preferably using tools and automatically) to make sure that for example your Kernel does not depend on your Core layer or there is no cyclical dependencies among your logical modules. More tricky yet is the nature of dependencies. If dependencies are not managed you may notice that there is a very large module in say , Core, layer with a large number of services and applications depending on it. At first glance it may look like a useful module! but the large size should make you suspicious, often time the upper layers simply leak what should be located in application or service layer down to lower layer - lack of engineering&amp;nbsp;disciplines, knowledge, time of all above.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black; font-size: 13.5pt;"&gt;In this case, OSGi would help you capture and discover the dependency, but does not tell you that they should not be there to begin with.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black; font-size: 13.5pt;"&gt;4- &lt;b style="mso-bidi-font-weight: normal;"&gt;Version-ing policy:&lt;/b&gt;&amp;nbsp;As I said in (2), well designed systems has layers, from “lower” layer to “upper” layers – based on topological sort of dependency graph. Typically each layer has a version number visible to other layers (some may choose to have each module in a layer to have a version number visible to all other module in upper layer, this makes life a bit more difficult for module in upper layers). One should decide how many active version of each layer (or module) to be active at any given time. This, seemingly straightforward, decision have significant implications, options are&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin-bottom: 0in; margin-left: .5in; margin-right: 0in; margin-top: 0in; mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: black; font-size: 13.5pt;"&gt;&lt;span style="mso-list: Ignore;"&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color: black; font-size: 13.5pt;"&gt;If at any given time you maintain only one version, everything is a bit easier, but you either have to maintain perpetual backward compatibility or force all the upper layer change at the same pace with lower layers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin-bottom: 0in; margin-left: .5in; margin-right: 0in; margin-top: 0in; mso-list: l0 level1 lfo1; text-indent: -.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: black; font-size: 13.5pt;"&gt;&lt;span style="mso-list: Ignore;"&gt;-&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="color: black; font-size: 13.5pt;"&gt;If you maintain multiple version, you don’t need to be backward compatible and you may transition upper layer gradually – very desirable. But you have to deal with two version at&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;the same time (not only at runtime, but development branches, testing …)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black; font-size: 13.5pt;"&gt;For most web application, people maintain one version and deal with the downsides – often in form of a backward compatible changes. OSGi can help with maintain multiple version at the same time - something that is certainly useful for client side application, for web application most people I talked to are not planning to use this feature.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin-bottom: 0in; margin-left: .5in; margin-right: 0in; margin-top: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black; font-size: 13.5pt;"&gt;5- &lt;b style="mso-bidi-font-weight: normal;"&gt;Testing strategy:&lt;/b&gt; Distributed systems are tough to test. A monolithic system is one large binary, you can build, deploy it and test it. For distributed system, test environment has to be setup, one would build only his module, the other module you depend on must be ready (either as out of process services in SOA, or bundles in OSGi) and have the right version. If you are using, say, five modules and each of them has two active version, there are 32 possible combinations you need to test (to be exhastive) – one reason having only one version at the time is often preferable. Again OSGi does not help you with designing your test strategy, you should have one regardless of technology you use to modularize you system.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black; font-size: 13.5pt;"&gt;6- &lt;b style="mso-bidi-font-weight: normal;"&gt;Deployment&lt;/b&gt;: Last but not least is deployment of your system/web application. You need to decide whether to deploy OSGi framework as a web application under you Servlet container, or deploy your servlet container as a bundle in your OSGi framework. If you are using SOA, you need to decide where to deploy each service and how to bundle service stubs with your application (if any stubs are needed), or you may use a combination by deciding that each service stub is an OSGi bundle. In any case, there should be a clear design for correct deployment of a distributed/modular system.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin: 0in;"&gt;&lt;span style="color: black; font-size: 13.5pt;"&gt;If you design a system in a way that these aspects are taken into accounts, then OSGi probably helps you implement it easier - although for web applications the issue to "two runtimes" is a bit too much for my taste - but then again if all the above aspects are taken into account, you may not have an urgent need to OSGi anyway (banks offer credit of people with good credit but probably the don't need it anyway....). Often times engineers and managers who work on poorly designed or organically grown systems, and in an effort to reduce complexity and increase productivity of people working on them, stumble upon OSGi...if you fit into this category, my recommendation is to focus on fixing the underlying issues that makes your system complex, inter-dependent and coupled. Until you do that, OSGi (or any other alphabet soup of technology) will not help you.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-8560127896129164489?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/8560127896129164489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/05/to-osgi-or-not-to-osgi-that-is-not.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/8560127896129164489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/8560127896129164489'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/05/to-osgi-or-not-to-osgi-that-is-not.html' title='To OSGi or not to OSGi ... that is NOT the question'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-4958639790385644817</id><published>2011-03-07T23:28:00.000-08:00</published><updated>2011-03-07T23:28:34.126-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Talks'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>2011 OpenID Retail Summit - March 8 @ PayPal Offices</title><content type='html'>Our collegues at PayPal are hosting the &lt;a href="http://wiki.openid.net/w/page/34000463/2011-OpenID-Retail-Summit"&gt;OpenID Retail Summit&lt;/a&gt; tomorrow from noo to 5:00pm. It sounds like it will be an interesting exchange of ideas between identity providers and retailer (as relying parties).&lt;a href="http://openid-retail-summit.eventbrite.com/"&gt; I will be presenting our experiences&lt;/a&gt; (and wishes) as large relying party tomorrow @ 3:00pm.&lt;br /&gt;&lt;br /&gt;I will post the presentation and a short post tomorrow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-4958639790385644817?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/4958639790385644817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/03/2011-openid-retail-summit-march-8.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/4958639790385644817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/4958639790385644817'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/03/2011-openid-retail-summit-march-8.html' title='2011 OpenID Retail Summit - March 8 @ PayPal Offices'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-5753616620399018489</id><published>2011-03-07T23:20:00.000-08:00</published><updated>2011-03-07T23:20:02.748-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>CardSpace II : "Change of Authentication Behavior"</title><content type='html'>&lt;div style="line-height: 13.5pt; margin-top: 0in;"&gt;&lt;span style="color: #3f3f3f; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 9.0pt;"&gt;After I wrote a short post on announcement of end of life for CardSpace, Kim Cameron (a great visionary in the field of digital identity and someone I learned a LOT from but never had the opportunity to meet) reflected on it &lt;a href="http://www.identityblog.com/?p=1166"&gt;here&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 13.5pt; margin-top: 0in;"&gt;&lt;span style="color: #3f3f3f; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 9.0pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 13.5pt; margin-top: 0in;"&gt;&lt;span style="color: #3f3f3f; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 9.0pt;"&gt;A few people (independently) emailed me and asked me whether Kim is implying that Card Space lack of adoption, at least partially, was “eBay’s fault”. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 13.5pt; margin-top: 0in;"&gt;&lt;span style="color: #3f3f3f; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 9.0pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 13.5pt; margin-top: 0in;"&gt;&lt;span style="color: #3f3f3f; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 9.0pt;"&gt;I read his post, partially quoted below, a few times and although to me it more sounds like a reflection, but I see how one may think that way. So, I decided to add a bit more details to my original post on “change of behavior”. &lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 13.5pt; margin-top: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 13.5pt; margin-top: 0in;"&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="color: #3f3f3f; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.0pt; mso-bidi-font-size: 9.0pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="line-height: 13.5pt; margin-top: 0in;"&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="color: #3f3f3f; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.0pt; mso-bidi-font-size: 9.0pt;"&gt;“In the history of computing there have actually&amp;nbsp;been plenty of cases where users DID change their behavior - even though at first only a few people could understand or use the new alternatives.&amp;nbsp; But those “early adopters”&amp;nbsp;were able to&amp;nbsp;try&amp;nbsp;the new inventions&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;em&gt;&lt;span style="color: #3f3f3f; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.0pt; font-style: normal; mso-bidi-font-size: 9.0pt; mso-bidi-font-style: italic;"&gt;on their own.&lt;/span&gt;&lt;/em&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="color: #3f3f3f; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.0pt; mso-bidi-font-size: 9.0pt;"&gt;&amp;nbsp; They didn’t need anyone else to approve something or decide they would like it first.&amp;nbsp; Once convinced, they could show&amp;nbsp;the new&amp;nbsp;ideas&amp;nbsp;to others.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="line-height: 13.5pt; margin-top: 0in;"&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="color: #3f3f3f; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.0pt; mso-bidi-font-size: 9.0pt;"&gt;When&amp;nbsp;Visicalc appeared, I don’t know how many people in IT would have bet that every accountant in the world would soon be throwing out his pencils and starting to&amp;nbsp;use spreadsheets for things no one can even now&amp;nbsp;believe&amp;nbsp;are possible!&amp;nbsp;&amp;nbsp;The same is true&amp;nbsp;for a thousand other&amp;nbsp;applications&amp;nbsp;people came to love.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="line-height: 13.5pt; margin-top: 0in;"&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="color: #3f3f3f; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.0pt; mso-bidi-font-size: 9.0pt;"&gt;But because authentication doesn’t stand on its own, users&amp;nbsp;never got&amp;nbsp;the chance&amp;nbsp;to start using Information Cards “just because they felt like it”.&amp;nbsp; They needed web sites to make&amp;nbsp;the same bet they did&amp;nbsp;by implementing Information Card support&amp;nbsp;as an option.&amp;nbsp;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="line-height: 13.5pt; margin-top: 0in;"&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="color: #3f3f3f; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.0pt; mso-bidi-font-size: 9.0pt;"&gt;Web sites didn’t want to bet.&amp;nbsp; They wanted to keep to “the matter at hand” and prevent their users from getting lost or distracted.&amp;nbsp;&amp;nbsp;The result:&amp;nbsp;a preemptive chill settled over the technology, and we never really got to see what users would make of it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="line-height: 13.5pt; margin-top: 0in;"&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="color: #3f3f3f; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.0pt; mso-bidi-font-size: 9.0pt;"&gt;My conclusion:&amp;nbsp;&amp;nbsp;regardless of what new features they support, user centric identity solutions need to be built so they work with as many existing&amp;nbsp;web sites&amp;nbsp;as possible.&amp;nbsp;&amp;nbsp;They can’t require&amp;nbsp;buy-in from&amp;nbsp;the all the big web sites&amp;nbsp;in order to be useful.”&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="line-height: 13.5pt; margin-top: 0in;"&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="color: #3f3f3f; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 8.0pt; mso-bidi-font-size: 9.0pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;I agree that users, and people in general, do change their behavior, and sometimes relatively quickly – if there is a direct and tangible benefit for them to do so.&amp;nbsp;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;In case of CardSpace, our end users simply did not perceive the benefits, besides they had to download a large binary and deal with unfamiliar experience. &lt;a href="http://itickr.com/?p=82"&gt;Ashih Jain's post capture the sentimen&lt;/a&gt;t around the time we were experimenting with CardSpace – 2008 - &lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;(One seller kept asking me why I was asking him to “do all this just to login” ).&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;eBay is in the commerce business,&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;we do take reasonable risks in changing people’s behavior around commerce related activities such as listing, classification, payment, feedback, finding, shipping, trust etc. but for login and authentication we rely largely on users' already learned behavior (or as Andrew Nash refers to it the established “steady state” of authentication).&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Perhaps one way to get a large number of users familiar with Card Space, and generate consumer demand for it, was full adoption within MSFT (including Windows login panel). Microsoft owns one of the largest (if not the largest) user-facing authentication experiences in the world, if they had fully supported Card Space everywhere a login panel appears today, maybe adoption story for Card Space would have been different. That would have made it much easier for company like eBay to adopt it as well.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-5753616620399018489?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/5753616620399018489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/03/cardspace-ii-change-of-authentication.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/5753616620399018489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/5753616620399018489'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/03/cardspace-ii-change-of-authentication.html' title='CardSpace II : &quot;Change of Authentication Behavior&quot;'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-6145988891825991088</id><published>2011-02-21T15:06:00.000-08:00</published><updated>2011-02-21T15:06:04.023-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>It is Finally Official: The End of MSFT CardSpace</title><content type='html'>There were a few things I wanted to write about recently ranging from all the discussion around OSGi in the Java community (and eBay) to what I would expect from an industrial grade Identity Provider (hint: it is not about which protocol it uses) and from when not to use No SQL to the emergence of a little known art and science called Entity Resolution, but let me resume my posts after a month with this:&amp;nbsp; &lt;a href="http://blogs.msdn.com/b/card/archive/2011/02/15/beyond-windows-cardspace.aspx"&gt;Microsoft announced that it would not ship CardSpace 2.0.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Having worked on a authentication concept with MSFT for eBay sellers, I had mixed feelings about this. On one hand I was on the record &lt;b&gt;not&lt;/b&gt; supporting the use of CardSpace for eBay sellers (or buyer). On the other hand I am concerned that technical community discounts the significance of Claim Based identity altogether and concludes that "FaceBook Conncet" is all we'll ever need.&lt;br /&gt;&lt;br /&gt;There is a good reflection (from an insider's point of view) on Card Space &lt;a href="http://self-issued.info/?p=458"&gt;here.&lt;/a&gt; (courtesy &lt;a href="http://1raindrop.typepad.com/"&gt;Gunnar Peterson&lt;/a&gt;) My personal view (and the reason I didn't support the adoption of Card Space at eBay) though centers around the challenges of "Change of Behavior" required by Card Space.&lt;br /&gt;&lt;br /&gt;Basically, CardSpace failed b/c it requied uses to change their behavior. See, the "User name and password" protocol (a simple challenge and response) IS a protocol, one where a human being (a normal user) is a participant in. It has taken about 20-30 years (depending on how you count) to train users what to do when they see a "login panel" , the "login panel" contract is so widely understood that despite all of its short coming is the most viable remote authentication protocol we have today. It is flawed, it is costly, it is not secure, but it is a widely understood by users on the other end of the protocol. CardSpace, despite all its advantages, was not understood, would (and did) make people confused, they did not know what to do when the CardSpace screen popped up ... a technology whose adoption depends on change of a strongly learned behavior is unlikely to succeed (or at least I didn't think eBay sellers - not the early adopters of technology - would learn and accept it).&lt;br /&gt;&lt;br /&gt;It also didn't help that a lot of browsers didn't support it (installing a plug-in does not count), and the fact that developers didn't know how to issue cards (or validate, update or revoke them). &lt;br /&gt;&lt;br /&gt;Having said that, I did like the idea of decentralized identity provider and not having any one identity provider to be THE identity provider that everyone else had to rely on (putting user in control of their own identity). Compare this with a world where one identity provider (be it facebook or Google or twitter or anyone else) is the dominant identity provider because it is easy for RPs to embed a simple button&amp;nbsp; and for users to click on it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-6145988891825991088?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/6145988891825991088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/02/it-is-finally-official-end-of-msft.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/6145988891825991088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/6145988891825991088'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/02/it-is-finally-official-end-of-msft.html' title='It is Finally Official: The End of MSFT CardSpace'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-9032757473146115573</id><published>2011-01-02T21:50:00.000-08:00</published><updated>2011-01-02T21:53:21.780-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Kingdom of Nouns ...</title><content type='html'>&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;The other day I took advantage of a rare couple of hours of peace and decided to catch up on my blog readings, I came across a nice post by Joel Spolsky from the &lt;a href="http://www.joelonsoftware.com/"&gt;Joel on Software&lt;/a&gt; fame on Map/Reduce. The post is probably one of the clearest writing on origin of Map/Reduce and what it does - if you haven't read it I &lt;a href="http://www.joelonsoftware.com/items/2006/08/01.html"&gt;highly recommend it,&lt;/a&gt; even if you are a Map/Reduce pro - in the course of explaining Map/Reduce he talks about how thinking in terms of functional languages made inventing Map/Reduce possible and implying that if one only think in term of OO languages where functions (or verbs) are not first class citizens coming up with an abstraction such as map() or reduce() function is tough. He includes a link to another interesting post title &lt;a href="http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html"&gt;"Execution in Kingdom of Nouns"&lt;/a&gt; that contends that Java is a kingdom of nouns and verbs are "owned" by nouns. I like this post too, especially the witty narration. However I disagree with conclusion (or implication) that one can not effectively or elegantly model certain class of thoughts and abstraction with a statically typed language like Java.&lt;/div&gt;&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Look at any natural language, they ALL seems to be kingdom of nouns. Look at how babies start to talk, they almost excursively uses nouns for a while and THEN add verbs to form sentences (or form thoughts). The core example of the post for taking garbage out that I copied here:&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;i&gt;get&lt;/i&gt; the garbage bag from under the sink&lt;br /&gt;  &lt;i&gt;carry&lt;/i&gt; it out to the garage&lt;br /&gt;  &lt;i&gt;dump&lt;/i&gt; it in the garbage can&lt;br /&gt;  &lt;i&gt;walk&lt;/i&gt; back inside&lt;br /&gt;  &lt;i&gt;wash&lt;/i&gt; your hands&lt;br /&gt;  &lt;i&gt;plop&lt;/i&gt; back down on the couch&lt;br /&gt;  &lt;i&gt;resume&lt;/i&gt; playing your video game (or whatever you were doing)&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;(italic emphasis is from original post)&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre style="color: black; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;This example is there to show that a normal function is a sequence of verbs and&amp;nbsp;&lt;/pre&gt;&lt;pre style="color: black; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;can be easily expressed without needing a "noun", but the noun here is hidden,&amp;nbsp;&lt;/pre&gt;&lt;pre style="color: black; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;it is the "subject" that is actually doing it. In a function language like JavaScript&lt;/pre&gt;&lt;pre style="color: black; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;the replacement would be the "global" scope, or some form of function that author would&lt;/pre&gt;&lt;pre style="color: black; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;create called "takeOutTheGarbage()" and call it from different "context"s, those context&lt;/pre&gt;&lt;pre style="color: black; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;would be the nouns.&lt;/pre&gt;&lt;pre style="color: black; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;I admit,I am not a language guy, I am more of a modeling guy but i do think that&amp;nbsp;&lt;/pre&gt;&lt;pre style="color: black; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;type spaces formed around collaborating nouns (subject, objects etc.) are capable of modeling and asbtracting&lt;/pre&gt;&lt;pre style="color: black; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;any concept/thoughts. I do agree that some folks in the "Javaland" overuse classes and have too many&lt;/pre&gt;&lt;pre style="color: black; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;factories and adapters, mediators, visitors etc. but this is more of a "fashion" issue than a basic&lt;/pre&gt;&lt;pre style="color: black; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;OO modeling issue.&amp;nbsp;&lt;/pre&gt;&lt;pre style="color: black; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;I also agree (and have seen) that functional languages are better for certain tasks&lt;/pre&gt;&lt;pre style="color: black; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;but I wishing for live in a "kingdom of verbs" is a bit extreme in my view, after all&amp;nbsp;&lt;/pre&gt;&lt;pre style="color: black; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;verbs are all performed by somebody/soemthing unless you prefer to live in the land of anonymous. &lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-9032757473146115573?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/9032757473146115573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/01/kingdom-of-nouns.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/9032757473146115573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/9032757473146115573'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2011/01/kingdom-of-nouns.html' title='Kingdom of Nouns ...'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-3487227597036746500</id><published>2010-12-26T16:07:00.000-08:00</published><updated>2010-12-26T16:07:14.726-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><title type='text'>Best description of what architecture is ... by Charles Darwin (yes, THE Charles Darwin)</title><content type='html'>Here is a quote attributed to Darwin:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;&lt;span class="body"&gt;"It is not the strongest of the species that survives, nor the most intelligent that survives. It is the one that is the &lt;u&gt;most adaptable to change.&lt;/u&gt;&lt;/span&gt;"&amp;nbsp;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Right there, for me, is the best definition of software architecture I have seen. Software architecture is whatever you do that allows your system to be adaptable to whatever changes its environments throws at it (scale, hardware failure, legal changes, change of business model, new forms of distribution etc.), better yet Darwin goes to to say&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;&lt;span class="body"&gt;"In the long history of humankind (and animal kind, too) those who learned to &lt;/span&gt;&lt;u&gt;&lt;span class="body"&gt;collaborate &lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;b&gt;&lt;span class="body"&gt;and &lt;u&gt;improvise &lt;/u&gt;most effectively have prevailed.&lt;/span&gt;" &lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;So in his view the keys to adaptability are collaboration and improvisation, which I'd translate it into modern systems as "Communication" and "Experimentation". Communication is THE key to collaboration and a quality lacking in a large number of leading engineer/architects. The core communication skill here is not about communicating what one's particular solution to a problem is, but more a style that is about inquiry, a style that illicit input and views from all significant parties and synthesize them into models and hypothesis and communicate them back and form common understanding (does your architect do that?)&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;Experimentation is both a personal quality and something that must built into any system as a first class architecture requirement. Experimentation is generally under-valued in architecture discussion. Systems in general have multiple views, the most popular being the 4+1-views, I would add an "Experimentation View", a view of architecture that describes which sub-systems can be experimented with and in what ways, and how would an experiment success be measured. More on "Experiment View" later, but for, I am even more convinced that analogies with and inspiration from biological systems is worthy guide for designing software systems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-3487227597036746500?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/3487227597036746500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/12/best-description-of-what-architecture.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/3487227597036746500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/3487227597036746500'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/12/best-description-of-what-architecture.html' title='Best description of what architecture is ... by Charles Darwin (yes, THE Charles Darwin)'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-9045207551837577552</id><published>2010-12-22T21:50:00.000-08:00</published><updated>2011-11-16T22:31:14.187-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>Cannonical Use Cases for a Relying Party</title><content type='html'>I have always felt that in identity community we spend most of our time discussing identity providers and their concerns (such as token format, protocol etc.) and do not spend enough time on and attention to relying parties. At eBay we play both roles i.e. we are both an identity provider (we provide sellers' identity and attributes to 3rd party developers) and relying party (accepting identities provisioned outside eBay marketplaces as eBay users). I can say that building a architecturally sound relying party is as challenging as building an identity provider. &lt;br /&gt;&lt;br /&gt;In this post I simply want to enumerate the major use cases that any major relying party (that is anyone that for example plans to accept Facebook Connect) has to account for. I used the qualifier "major" to denote that these use cases are important if a given relying party has millions of uses and many services and applications (much like eBay does).&lt;br /&gt;&lt;br /&gt;The list of use case are:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1-Sign-In and out&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2-Connect and Reception&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3-Link/Unlink&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4-Profile Access Extension&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5-Role Elevation&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;6-Recovery&lt;/b&gt; &lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;7-Disconnect&lt;/b&gt; &lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;8-Force Authentication&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;9-Customer Support&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;10-Capturing Alternative/Second Secret&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;and here is the descriptions:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1-Sign-In and out:&lt;/b&gt; This includes changes to your standard sign-in page to make it a "federated sign-in" page. The challenge here is mostly user experience i.e. how to design the UI correctly to achieve two goals:&lt;br /&gt;&amp;nbsp;&amp;nbsp; - Not confuse existing users who will not sign up with external IDP&lt;br /&gt;&amp;nbsp;&amp;nbsp; - Communicate to the user of external IDP what they need to do (without creating the NASCAR problem)&lt;br /&gt;&amp;nbsp;There are also techniques for detecting the IDPs that user may have an account with and to show a "smart" list of IDPs&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2-Connect and Reception:&lt;/b&gt; Once users clicks on "Connect" button (if you are using connect style IDPs such as FB) or entered her OpenId URI (although this is unlikely to be adopted by users), the user is send to IDPs to sign-in and given consent to his/her information to be send to you site - let's refer to this process as Connect - then user is sent back to your site to a page/application that we refer to as "Reception". This is the processes that greets the users for the first time and provision an account in RP for him/her. I use the word "reception" to make it distinct from "registration" which is when provision is done based on data collected by RP itself. The reception process is significant b/c it covers the gap between data received from IDP and what is needed for a user to be provisioned, also it assigns the roles for new user. These roles are typically minimal since data coming from external IDPs are normally not trusted or verified. Also during reception token received from external IDP together with associated meta data is stored in a central location accessible to different functional units (application) of RP&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3-Link/Unlink&lt;/b&gt;: Another use case (often part of reception) is to detect whether the user connecting to RP is one who already has an account. The detection can be done based on mapping the data received from IDPs to existing account, the simplest form is to check whether email addressed returned by IDP already exists.Once an account is detected, user has to prove s/he actually owns it (normally by providing password) and the accounts are link. Since architecture hygiene calls for symmetric operation, you should also allow for unlinking of accounts.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4-Profile Access Extension:&lt;/b&gt; RP obtain a token during reception (such as OAuth token that comes with FB Connect), this token stores a set of access permissions to user resources (perhaps hosted by IDP). Any large RP has a set of applications that will use this token (for example MyeBay application as well as eBay Search Application) it is likely that one of these applications requires more information/access privileges that user originally consented to, in these case RPs should provide a central capabilities that conduct the process of requesting, receiving extended permissions from user and updating token meta information associated with user &lt;br /&gt;&lt;br /&gt;&lt;b&gt;5-Role Elevation:&lt;/b&gt; The first time users connect to RP they are granted a certain role (roles), normally this is a basic role since data provided by most IDPs are not reliable (eBay as an IDP does provides verified reliable data), at some point during the user's life cycle, users needs to perform an action that requires higher role assignment, in this cases RPs should provide capabilities to assign users higher role, this normally requires users to enter more information or go thru verification. This processes produce more attributes that will become part of users profile at RP.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;6-Recovery:&lt;/b&gt; Every RP always has to establish a method for externally provisioned identities to authenticate WITHOUT the presence of external IDP. What does this mean? suppose you accept FB Connect and FB is down for 6 hours (an event that recently happened), further imagine that you operate a site that every minute of users not being able to login means financial loss. What do you do in this scenario? You may say, this is easy, ask users to enter a password during the first time reception, but wouldn't this defeat the whole purpose (or a big part of it) of users not having to remember many passwords?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;7-Disconnect:&lt;/b&gt; All RPs must provide the capability for a user to "disconnect" i.e. close the account that was created based on an identity provided by external IDP. I personally believe that user owns his/her data and if user wants to disconnect and remove all of his/her activities from the record. s/he should be able to (to the extent that is legal)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;8-Force Authentication:&lt;/b&gt; This is actually a capability of IDP, but RPs need to use this when they require user to be authenticated regardless of session's authentication state as seen by IDP. For certain operation RPs require a fresh session (or session that started in the past N minutes), in this cases RPs should request a forced authentication (I am using SAML terminology here) from IDP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-9045207551837577552?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/9045207551837577552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/12/cannonical-use-cases-for-relying-party.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/9045207551837577552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/9045207551837577552'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/12/cannonical-use-cases-for-relying-party.html' title='Cannonical Use Cases for a Relying Party'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-2895990135726473384</id><published>2010-12-06T22:16:00.000-08:00</published><updated>2010-12-06T22:16:47.128-08:00</updated><title type='text'>OAuth protocol and "Emdedded Browser" : Illustration of a simple security decision making framework</title><content type='html'>The discussion about whether to use an embedded browser or a full browser while performing OAuth protocol ,although passionate, is nothing new. Instead of expressing a position (I am for a full browser for the record), I want to use this case to illustrate a simple framework I use to make security design/implementation decision.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_9omyFnkXzaE/TP3MOa-wcGI/AAAAAAAAREc/8csJojZomBg/s1600/SecDecisionMaking.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="277" src="http://1.bp.blogspot.com/_9omyFnkXzaE/TP3MOa-wcGI/AAAAAAAAREc/8csJojZomBg/s320/SecDecisionMaking.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;For every question/decision we designate one engineer as "good guy" and one engineer as "bad guy" and we ask each how this decision help or hurt you. I emphasis that it is critical to think and view a decision from a bad guy point of view. Most of us are basically not fraudsters and think in terms of "getting things done" and "being helpful", we rarely look at a feature and think to ourselves "How can I abuse it" (if you do, please contact me, I may have a job for you), so we assign an engineer just to do that.&lt;br /&gt;&lt;br /&gt;Of course we want all our decision to be just as shown in the figure above :Help good guys and hurt bad guys. But that is not always the case, take using the embedded browser (and not a full pop up) to perform OAuth. This decision looks more like this:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_9omyFnkXzaE/TP3ON9F8dqI/AAAAAAAAREg/4Zkw4pDtIDM/s1600/SecDecisionMaking_2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="290" src="http://2.bp.blogspot.com/_9omyFnkXzaE/TP3ON9F8dqI/AAAAAAAAREg/4Zkw4pDtIDM/s320/SecDecisionMaking_2.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;It helps good guys (by not having every app render a login panel, perform authentication and deal with errors etc.), but it also helps bad guys (as illustrated nicely by my friend and colleague Yitao Yao&amp;nbsp; &lt;a href="http://security-n-tech.blogspot.com/2010/11/serious-oauth-security-hole-in-facebook.html"&gt;here &lt;/a&gt;- facebook is only one example) by making phishing easier. (it is worth pointing out that having application capture user secrets directly is along the counter diagonal in matrix above: hurts good guys and helps bad guys)&lt;br /&gt;&lt;br /&gt;Does this mean you should never do this? I wish there was a simple and universal answer, but there is not.&lt;br /&gt;In general you should not use embedded browser unless there is a good reason and more importantly the decision maker is fully aware of the risk (at least seen the matrix above and know the bad guys will benefit). Mitigating circumstances could be unattractive economy of fraud (your application is not a prime target fraudsters), you believe fraudsters can not effectively distribute their application to a large enough group of people, your user base is exceptionally savvy (I envy you) or your mobile operator has a good control over nature of applications and what they do (think Apple-like).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-2895990135726473384?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/2895990135726473384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/12/oauth-protocol-and-emdedded-browser.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/2895990135726473384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/2895990135726473384'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/12/oauth-protocol-and-emdedded-browser.html' title='OAuth protocol and &quot;Emdedded Browser&quot; : Illustration of a simple security decision making framework'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_9omyFnkXzaE/TP3MOa-wcGI/AAAAAAAAREc/8csJojZomBg/s72-c/SecDecisionMaking.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-3495442476294909861</id><published>2010-12-05T21:51:00.000-08:00</published><updated>2010-12-05T21:51:52.451-08:00</updated><title type='text'>Kitchen Meeting</title><content type='html'>I started an experimentation a few weeks back. Instead of scheduling and holding a meeting in one of eBay's formal meeting rooms, I tried to meet with people in kitchen or cafe (or starbucks across the street from the Hamilton campus) - now this is partly b/c it is getting too tough to find a free room, but I also had a hypothesis that when people meet in informal setting - specially a place that has to do with eating - they are more likely to collaborate.&lt;br /&gt;&lt;br /&gt;I have to say the results are mixed so far, on one hand it indeed does make a difference, people seem to be friendlier and more willing to see "the other side" of issue - whatever it might be. However I also noticed that they are more likely to "forget" or back-off from agreements or conclusions that were reached too.&lt;br /&gt;&lt;br /&gt;For now I keep doing this as much as I can, at least it gives me an incentive to keep the number of people in a meeting to 3 people max, this alone helps increase the effectiveness of meetings.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-3495442476294909861?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/3495442476294909861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/12/kitchen-meeting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/3495442476294909861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/3495442476294909861'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/12/kitchen-meeting.html' title='Kitchen Meeting'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-2425267001469118338</id><published>2010-10-27T22:45:00.000-07:00</published><updated>2010-10-27T22:45:33.819-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Talks'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>PayPal Identity Services Talk @ PayPal Innovate 2010</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:View&gt;Normal&lt;/w:View&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:TrackMoves/&gt;   &lt;w:TrackFormatting/&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:DoNotPromoteQF/&gt;   &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:SnapToGridInCell/&gt;    &lt;w:WrapTextWithPunct/&gt;    &lt;w:UseAsianBreakRules/&gt;    &lt;w:DontGrowAutofit/&gt;    &lt;w:SplitPgBreakAndParaMark/&gt;    &lt;w:DontVertAlignCellWithSp/&gt;    &lt;w:DontBreakConstrainedForcedTables/&gt;    &lt;w:DontVertAlignInTxbx/&gt;    &lt;w:Word11KerningPairs/&gt;    &lt;w:CachedColBalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathPr&gt;    &lt;m:mathFont m:val="Cambria Math"/&gt;    &lt;m:brkBin m:val="before"/&gt;    &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;    &lt;m:smallFrac m:val="off"/&gt;    &lt;m:dispDef/&gt;    &lt;m:lMargin m:val="0"/&gt;    &lt;m:rMargin m:val="0"/&gt;    &lt;m:defJc m:val="centerGroup"/&gt;    &lt;m:wrapIndent m:val="1440"/&gt;    &lt;m:intLim m:val="subSup"/&gt;    &lt;m:naryLim m:val="undOvr"/&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"  DefSemiHidden="true" DefQFormat="false" DefPriority="99"  LatentStyleCount="267"&gt;   &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;   &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;   &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;   &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;   &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;   &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;   &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;   &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"   UnhideWhenUsed="false" Name="Table Grid"/&gt;   &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;   &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;   &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;   &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;   &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;   &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;   &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;   &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;   &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt; /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin-top:0in; mso-para-margin-right:0in; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0in; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;}&lt;/style&gt; &lt;![endif]--&gt;  &lt;br /&gt;&lt;div class="MsoNormal"&gt;Today at the &lt;a href="https://www.paypal-xinnovate.com/"&gt;PayPal Developers&lt;/a&gt; conference Ashish Jain, my friend and colleague and PayPal’s point man on all things identity, talked about PayPal vision of identity and PayPal Identity Service in his presentation titled, not surprisingly, “PayPal Identity Services”.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;If you are involved in the world of internet, as a developer or even an observer, or if you have attended any web related conference in the past 12-18 month (including our own DevCon) you must be familiar with the core identity problem: users have too many accounts, too many password, too often they forget them, it is too easy to phish passwords and too expensive for companies to support users who either forgot their passwords or have had their account taken over …. Ashish talked about it in his presentation (as it is mandatory for these presentations, including mine, to recount the carnage first).&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;You may have guessed the next step, PayPal, among many others, offers to be an Identity Provider (IDP). Your one and only account you ever need (at least for whenever you want to shop on the Internet).&amp;nbsp;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;You may think, so what? There are so many other identity providers (most notably Facebook) … but (as Lee Corso of ESPN says) “not so fast my friend”, there is actually a difference in this game of being identity provider between PayPal and everyone else, what Ashish, modestly, calls “&lt;i&gt;&lt;b&gt;Qualified Data&lt;/b&gt;&lt;/i&gt;” (interestingly the second bullet point in his slide – why not the first? I have to ask him).&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;See, as it turns out providing identity (as in what an IDP does) it is not that hard, pick a protocol (OpenID, OAuth, SAML …) and transfer identity data (unique identifier, name, email, phone number etc.) from the IDP to Relying Party (RP). You can do that in few hours (literally), what turns out to be hard (and expensive and complex), is providing &lt;u&gt;&lt;i&gt;&lt;b&gt;“High Quality”&lt;/b&gt;&lt;/i&gt;&lt;/u&gt; identity, as in identity data the someone actually validates and make sure they are accurate and up to date and actually owned by the person who claims s/he owns it. This is what Ashish means by “Qualified Data”. Now if you are a merchant, which identity you rather rely on? An identity from a site that simply takes users claims (about what her name is, where she lives etc.) and toss it over to you or from PayPal where this set of data is verified and maintained and by the way you know that there is a valid financial/payment instrument attached to it?&amp;nbsp;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Too often people responsible for building an identity provider argue endlessly&amp;nbsp; about merits of protocols, compare OpenID to OAuth and talk about how complex SAML is. In the process they miss the much bigger point: what matters is the quality of identity provided not the means by which it is provided.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;This is what make PayPal identity (regardless of whether they use OpenID or OAuth or anything else) potentially the most interesting and useful identity in my view.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Ashish also shows a demo where PayPal OpenID service is wrap by Gigya API. Gigya is an aggregator of identity provider, instead of learning multiple APIs from different IDPs, developers simply deal with Gigya API. It is an interesting concept. &lt;a href="http://www.gigya.com/"&gt;Check them out here&lt;/a&gt;.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;It would be interesting to see how far PayPal push their Identity Service (both in terms of end user adoption and merchant adoption) and whether or not they offer different classes of identity (based on data quality) and respective financial assurance levels.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-2425267001469118338?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/2425267001469118338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/10/paypal-identity-services-talk-paypal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/2425267001469118338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/2425267001469118338'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/10/paypal-identity-services-talk-paypal.html' title='PayPal Identity Services Talk @ PayPal Innovate 2010'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-7464575072691475118</id><published>2010-10-13T21:11:00.000-07:00</published><updated>2010-10-13T21:11:34.175-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PayPal'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>My old blog post on PayPal Platform</title><content type='html'>I found &lt;a href="http://ebaydeveloper.typepad.com/dev/2009/06/next-generation-paypal-platform.html"&gt;this old blog&lt;/a&gt; that&amp;nbsp; I posted after 'Next Gen PayPal Platform" in eBay DevCon 2009. I am adding here for the record and also b/c the format of the session and the ideas that were generated was very interesting.&lt;br /&gt;&lt;br /&gt;Looking back,&amp;nbsp; you can also track which ideas PayPal actually implemented ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-7464575072691475118?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/7464575072691475118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/10/my-old-blog-post-on-paypal-platform.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/7464575072691475118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/7464575072691475118'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/10/my-old-blog-post-on-paypal-platform.html' title='My old blog post on PayPal Platform'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-3951482079570315874</id><published>2010-10-07T00:48:00.000-07:00</published><updated>2010-10-07T00:48:17.291-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><title type='text'>MongoDB is Web scale ...</title><content type='html'>This is a&lt;a href="http://nosql.mypopescu.com/post/1016320617/mongodb-is-web-scale"&gt; funny clip&lt;/a&gt; - produced by the &lt;a href="http://www.blogger.com/goog_2108561253"&gt;xtrano&lt;span id="goog_2108561249"&gt;&lt;/span&gt;&lt;span id="goog_2108561250"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://www.xtranormal.com/watch/6995033/"&gt;rmal&lt;/a&gt; technolog - courtesy my friend &lt;a href="http://1raindrop.typepad.com/"&gt;Gunnar Peterson. It pokes&lt;/a&gt; fun at people jumping on No SQL and MongoDB bandwagon. I have to say I can relate to the sentiment, No SQL, KV storages etc. are suited for certain use cases and access pattern, but a vast majority of day to day use cases can be handled just fine with SQL.Even if you are Mongo fan it is fun to watch this.&lt;br /&gt;&lt;br /&gt;- Warning: The clip uses adult language.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-3951482079570315874?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/3951482079570315874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/10/mongodb-is-web-scale.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/3951482079570315874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/3951482079570315874'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/10/mongodb-is-web-scale.html' title='MongoDB is Web scale ...'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-8455894593068365029</id><published>2010-09-22T23:28:00.000-07:00</published><updated>2010-09-22T23:28:40.548-07:00</updated><title type='text'>Login Failed, Try Again: 10 Best Practices for Authentication in the Cloud</title><content type='html'>Here is the deck for my presentation at 2010 JavaOne. It summarizes our experience and leanings in creating an identity foundation for eBay application platform (AP). In retrospect a lot of the lessons seems like "Motherhood and apple pie" but I suppose there is knowing and then there is understanding. Also what I have seen is that in general there is not a deep understanding (or even awareness) of identity architecture as a first class enterprise infrastructure among enterprise architect and software engineers.&lt;br /&gt;&lt;br /&gt;Anyway, the deck is designed to be talked over, so simply reading it may not be as interesting. &lt;br /&gt;&lt;br /&gt;&lt;div id="__ss_5264999" style="width: 425px;"&gt;&lt;b style="display: block; margin: 12px 0pt 4px;"&gt;&lt;a href="http://www.slideshare.net/farhangkassaei/login-failedtryagain-javaone2010" title="JaveOne 2010 - Distributed Identity Architecture"&gt;JaveOne 2010 - Distributed Identity Architecture&lt;/a&gt;&lt;/b&gt;&lt;object height="355" id="__sse5264999" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=loginfailedtryagainjavaone2010-100923011502-phpapp01&amp;stripped_title=login-failedtryagain-javaone2010&amp;userName=farhangkassaei" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse5264999" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=loginfailedtryagainjavaone2010-100923011502-phpapp01&amp;stripped_title=login-failedtryagain-javaone2010&amp;userName=farhangkassaei" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;div style="padding: 5px 0pt 12px;"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/farhangkassaei"&gt;farhangkassaei&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-8455894593068365029?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/8455894593068365029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/09/login-failed-try-again-10-best.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/8455894593068365029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/8455894593068365029'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/09/login-failed-try-again-10-best.html' title='Login Failed, Try Again: 10 Best Practices for Authentication in the Cloud'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-4826497455701502406</id><published>2010-09-20T23:00:00.000-07:00</published><updated>2010-09-20T23:00:15.996-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Organization'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>LSE economist answers: "Why are terrorists often engineers?</title><content type='html'>IEEE Spectrum has an interesting podcast here title &lt;a href="http://spectrum.ieee.org/podcast/at-work/tech-careers/why-are-terrorists-often-engineers/?utm_source=techalert&amp;amp;utm_medium=email&amp;amp;utm_campaign=091610"&gt;Why are terrorists often engineers&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Basically two hypothesis:&lt;br /&gt;&lt;br /&gt;- Engineers are smart and high potential people and when/if they don't find ample employment opportunities they become frustrated&lt;br /&gt;- Engineers have orientations toward hierarchy and order that is also a common theme with fundamentalism.&lt;br /&gt;&lt;br /&gt;Also interesting (according to the LSE researchers) engineers are more religious and right leaning compare to others - one wouldn't guess that living in the Bay Area.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-4826497455701502406?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/4826497455701502406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/09/lse-economist-answers-why-are.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/4826497455701502406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/4826497455701502406'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/09/lse-economist-answers-why-are.html' title='LSE economist answers: &quot;Why are terrorists often engineers?'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-3321815051673250875</id><published>2010-09-19T21:28:00.000-07:00</published><updated>2010-09-19T21:28:01.404-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='Talks'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>JaveOne 2010 Talk</title><content type='html'>Latest details I received from conference organizers today (it is kind of late, isn't it?) about time and location of my talk @ JavaOne:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ID#&amp;nbsp;&amp;nbsp; : S314414 &lt;br /&gt;Title&amp;nbsp; : &lt;span style="background-color: blue; color: white;"&gt;Login Failed, Try Again: 10 Best Practices for Authentication in the Cloud &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;br /&gt;Track: &lt;span style="color: orange;"&gt;Enterprise Service Architectures and the Cloud &lt;/span&gt;&lt;br /&gt;Date&amp;nbsp; : &lt;span style="background-color: blue; color: white;"&gt;23-SEP-10&lt;/span&gt; &lt;span style="background-color: blue;"&gt;&lt;/span&gt;&lt;br /&gt;Time&amp;nbsp; : &lt;span style="background-color: blue; color: white;"&gt;14:00 - 15:00 &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;br /&gt;Venue: &lt;span style="background-color: blue; color: white;"&gt;Parc 55&lt;/span&gt; &lt;br /&gt;Room : &lt;span style="background-color: blue; color: white;"&gt;Cyril Magnin I &lt;/span&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-3321815051673250875?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/3321815051673250875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/09/javeone-2010-talk.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/3321815051673250875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/3321815051673250875'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/09/javeone-2010-talk.html' title='JaveOne 2010 Talk'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-4864188099765246621</id><published>2010-09-19T21:22:00.000-07:00</published><updated>2010-09-19T21:22:36.319-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><title type='text'>what is a "Platform"?</title><content type='html'>Usually the answer to the question “What is X”, at least in the context of software engineering, is given in two different ways:&lt;br /&gt;- What does X do or what is X supposed to d.&lt;br /&gt;- How does X work.&lt;br /&gt;The former is more of philosophical answer and the latter more of a pragmatic one. For example, “what is a service?” could be answered in one the two ways:&lt;br /&gt;&lt;br /&gt;-&amp;nbsp; A unit of functionality that is exposed thru a well defined interface and is loosely coupled to its consumers, it is autonomous, reusable, discoverable and stateless.&lt;br /&gt;&lt;br /&gt;Or it can be answered as&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp; It is a unit of code exposed thru a WSDL and invoked using SOAP and it is language neutral &lt;br /&gt;&lt;br /&gt;Those who know me know that I am more inclined toward philosophy. So when I attempt to answer “what is a platform?” – as I had to recently when we were building eBay Application Platform - I opt for what it does.&lt;br /&gt;To me the answer is simple, at least in the realm of software engineering:&lt;br /&gt;A software platform is any set of functionality that increases developers’ productivity, plain and simple.&lt;br /&gt;Operating systems do that, languages do that, APIs do that so do IDEs such as Eclipse. So what is the difference between tools and platforms? Tools are not programmable, platforms are. In other words developers can “program” platforms to suit their needs. In other words tools are used to accomplish one task, platforms can be used (i.e. programmed) to perform different tasks. Some platforms start as tools (like Eclipse, Excel) but evolve to become a platform.&lt;br /&gt;&lt;br /&gt;Why, besides philosophical clarity, is this important? It can be used to define a clear goal and metrics for success of whatever is called a “Platform”.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-4864188099765246621?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/4864188099765246621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/09/what-is-platform.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/4864188099765246621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/4864188099765246621'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/09/what-is-platform.html' title='what is a &quot;Platform&quot;?'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-7470038323906095310</id><published>2010-09-07T22:03:00.000-07:00</published><updated>2010-09-07T22:03:35.786-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><title type='text'>Authorization: One Step At a Time</title><content type='html'>In my experience authorization (much like identity and authentication) is a poorly understood topic by most engineers, architects and product managers. The prevailing narrative about authorization is magic box protecting a resource that knows every policy applicable to a resource and how to correctly enforce them, or at least know who can access the resources and in what way.&lt;br /&gt;&lt;br /&gt;Both of these views are inaccurate (or partially true) and often lead to construction of single layer, complex to implement and impossible to manage systems.Authorization by nature is a hierarchical filtering mechanism; the operating keyword by far is hierarchical. The successful authorization systems are the ones that consist of several collaborating layers of authorization and filtering, each layer controls one dimension of access. &lt;br /&gt;&lt;br /&gt;For example, imagine a company with a few departments: Executives, Marketing, Accounting, Sales and Product Development. Further imagine that each department has resources (data and services that operate on data) and applications (software users use to access services, view and manipulate data). In particular accounting has three applications: a data entry application, reporting application and a full book management application (web based or native app does not matter here). Here are the logical authorization rules expressed as typical requirement statements:&lt;br /&gt;&lt;br /&gt;1. No person or application in marketing can access any resources in accounting&lt;br /&gt;2. Data entry application cannot access account payable, any payment services or reporting services&lt;br /&gt;3. Reporting applications cannot make any changes (write, edit) data&lt;br /&gt;4. Full Book Management application can perform any function&lt;br /&gt;5. Only Accounting manager can pay an invoice greater than $1000&lt;br /&gt;6. Only CFO can run quarterly profit and loss reports.&lt;br /&gt;&lt;br /&gt;Do you see the hierarchy here? Can you translate it to AuthZ system hierarchy?&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_9omyFnkXzaE/TIcYpG3NCAI/AAAAAAAAPOI/meX-GiPgYEw/s1600/AuthZ-Levels.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_9omyFnkXzaE/TIcYpG3NCAI/AAAAAAAAPOI/meX-GiPgYEw/s320/AuthZ-Levels.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Rule (1) talks about a large granularity “department”, rules 2,3,4 talk about applications and rule 5,6 talk about roles within a particular application or set of apps.&lt;br /&gt;The first rule should be enforced thru a router or a gateway that blocks access to any application from marketing department. That is an effective isolation mechanism implement an authorization rule.&lt;br /&gt;Second set of rules (2,3,4) should be enforced via a system level guard that only operate in request headers and tokens binded to them. Examples of such systems are ESB or pipeline style authorization handlers.&lt;br /&gt;The last set of rules 5,6 should be enforced with an application level authorization system or guard that is aware of different roles within an application and their privileges vis-à-vis resources.&lt;br /&gt;Now what happens if you collapsed three systems into one? Well in short the authorization system becomes complex to implement and tough to manage and three different layers with three different velocity of change would become one constantly changing piece of code.&lt;br /&gt;&lt;br /&gt;The authorization system must scan everything in request, from originating IP address, to headers identifying calling application to payload determining parameters of operations. It has to understand a wide range of concerns from deployment (impacting IP addresses) to business logic ($1000 limit).&lt;br /&gt;&lt;br /&gt;Authorization is tough but single layer authorizations systems like this are nightmares of manageability.&lt;br /&gt;&lt;br /&gt;Imagine what would have happened if all checks at the airports (from entry to the terminal till when you sit in your seat inside the plane) would have been performed by the security officer upfront who today only checks your driver license and matches that with your ticket? At the airport there is three different levels: The guys who check your driver license and ticket, the TSA guys who check your bags and the crew at the gate who check your ticket and make sure you don’t sit in first class.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-7470038323906095310?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/7470038323906095310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/09/authorization-one-step-at-time.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/7470038323906095310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/7470038323906095310'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/09/authorization-one-step-at-time.html' title='Authorization: One Step At a Time'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_9omyFnkXzaE/TIcYpG3NCAI/AAAAAAAAPOI/meX-GiPgYEw/s72-c/AuthZ-Levels.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-8425930514439974408</id><published>2010-08-08T14:31:00.000-07:00</published><updated>2010-08-08T14:31:36.408-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>CAP Therom and Digital Identity</title><content type='html'>If you read this blog chances are you are familier with the  &lt;a href="http://en.wikipedia.org/wiki/CAP_theorem"&gt;CAP theorem&lt;/a&gt;, it basically states that any distributed system operating at scale can choose at most two of the followings three:&lt;br /&gt;- Consistency &lt;br /&gt;- Availability&lt;br /&gt;- Partition Tolerance &lt;br /&gt;&lt;br /&gt;There other examples of pick any "2 out of 3" in life are:&lt;br /&gt;&lt;br /&gt;- The management rule of thumb: Good, Cheap, Fast&lt;br /&gt;- Graduate student dilemma: Fun, Grades, Sleep (replace fun with your own idea of it)&lt;br /&gt;- Investment advice: Low Risk, High Return, Legality - if you pick low risk and high return chances are you are compromising legality :-)&lt;br /&gt;&lt;br /&gt;They way I look at all these "rules" is that the space of each of these domains offer only two degrees are freedom and once you choose two points (that effectively determine or fix your degree of freedom, the third point will be chosen for you)&lt;br /&gt;&lt;br /&gt;For example in "Good, Cheap, Fast", your degrees of freedom are basically time and money, once you choose how much time and money you want to spend all three qualities are determined. So now, if you choose time and money not directly, but indirectly via the choice of say good and fast, you automatically also chosen "not cheap".&lt;br /&gt;&lt;br /&gt;Interestingly digital identity offers the same 2 out of 3 dynamics among the three main attributes of &lt;br /&gt;&lt;br /&gt;- Quality of Identity &lt;br /&gt;- Usability &lt;br /&gt;- Cost &lt;br /&gt;&lt;br /&gt;"Quality of Identity" is a measure of how uniquely a set of data represents a real world person and how strongly an IDP stands behind such assertion (for example whether IDP guarantees up to a certain amount damages resulting from inaccurate data), usability is how easy it is for IDP to provision such identities.&lt;br /&gt;&lt;br /&gt;It is clear that if an IDP chooses to provide high quality identity and also wants to makes its provisioning easy to use (or scalable for that matter), it has to spend a lot of money.&lt;br /&gt;&lt;br /&gt;In practice though, IDPs segment the user base and only provide high quality identity for users to whom maximum credit are extended (e.g. users who can sell the most on eBay).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-8425930514439974408?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/8425930514439974408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/08/cap-therom-and-digital-identity.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/8425930514439974408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/8425930514439974408'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/08/cap-therom-and-digital-identity.html' title='CAP Therom and Digital Identity'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-337804742961993152</id><published>2010-07-12T13:52:00.000-07:00</published><updated>2010-08-08T14:00:39.807-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>Enole - A New Identity Linking Startup</title><content type='html'>The other day, via Venture Beat, I learn about a new start up called Enole. Since the company is in Identity domain I was naturally interested and start looking around. The idea is as interesting as it is old: to unify all identities online and offline and to carry it with you with your cell phone. (use your fav search engine to look for products, ideas and patent on storing all sorts of identity information on cell phones ranging from credit card to login name and passwords to codes that unlock cars and doors etc.)&lt;br /&gt;However it is often not the novelty of an idea that sets a company apart but the strength in execution and market strategy. So with a bit of healthy skepticism I looked at the site.&lt;br /&gt;There is the usual marketing and hype in the web site – which I completely understand. Beyond the hype Enole is a service that allows a developer/application (identified by a pre-issued token) to link up a user and a device. A user simply means an identifier string (email or any other string).  So effectively there is a link among three entities Application that creates a link, user and device. &lt;br /&gt;The rest of the API is about the basic create, update, query of link, users and devices. However there a few key questions that are not answered in the documentation:&lt;br /&gt;- Can an application that has not created a user or device query them?&lt;br /&gt;- How does the system deals with duplicate email addresses and identifiers across multiple applications?&lt;br /&gt;- If another application picks up my devices unique id, can they query Enole DB? If they can and get my information, do I need to authorize (OAuth style) the &lt;br /&gt;information before application can use it?&lt;br /&gt;- How would a user remove his/her account.&lt;br /&gt;- How the "sign-up" tokens are stored and what happens if they are compromised &lt;br /&gt;&lt;br /&gt;In essence, the API document describes the CRUD operation of user, device and link entity but does not describe a formal authentication protocol between users, devices etc. As such it can not really be evaluated in details.&lt;br /&gt;&lt;br /&gt;Additionally, it is not very clear how end users (not developers) are in control of their own identity and information. This is really big for any company that has ambitions in the identity area.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Also, if you have been reading my blog regularly you know that I give a LOT of significance to the language and terminology one uses to describe either her problem or solution. The language used in Enole site is not that of identity, authentication or communication protocol domains. This, to me, is not the most positive sign.&lt;br /&gt;&lt;br /&gt;Having said that, I think Enole is an early stage start up and like any other early stage start up their original idea will evolve, I will keep an eye them to see how they evolve and how their technology be used.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-337804742961993152?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/337804742961993152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/07/enole-new-identity-linking-startup.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/337804742961993152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/337804742961993152'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/07/enole-new-identity-linking-startup.html' title='Enole - A New Identity Linking Startup'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-2257432710641112097</id><published>2010-07-03T16:44:00.000-07:00</published><updated>2010-07-03T16:44:06.593-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Risk Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><title type='text'>Recall and Precision: It is not how many bad guys you caught, it is how many good guys suffered</title><content type='html'>The measurement of "Recall and Precision" is front and center in all of our fraud prevention measures and algorithms, you can read a &lt;a href="http://en.wikipedia.org/wiki/Precision_and_recall"&gt;general description of this concept and the mathematical definition in Wikipedia&lt;/a&gt;, but I have had better luck explaining the concept with this example:&lt;br /&gt;&lt;br /&gt;Imagine there is a band of armed rubbers (say 5 guys) in your town and you sent   your best cops to round them up. After a day they come back arresting a group of men. How do know if they did a good job?&lt;br /&gt;&lt;br /&gt;The obvious answer is whether they have arrested ALL the gang members. So the measurement is "how many gang members have they arrested?" in this regard 5 is better than 4 and 4 is better than 3. Simple&lt;br /&gt;&lt;br /&gt;But is that enough? Let's imagine three out comes&lt;br /&gt;&lt;br /&gt;1 - The cops came back having arrested 5 guys, all of them gang member. This is perfect, they arrested ALL the RIGHT people, and ZERO WRONG person, recall = Precision = 100%.&lt;br /&gt;&lt;br /&gt;2 - The cops came back having arrested 10 guys, 5 gang members of 5 random and innocent guys. In this case recall=100% but precision is 50% - which in this case is clearly not acceptable (even worse they could have arrested all men in the community, recall still would be 100% but precision would be near zero - that is called Carpet Bombing)&lt;br /&gt;&lt;br /&gt;3- The cops came back with 3 guys, all gang member, no innocent guys was arrested. In this case recall= 60% but precision=100% - this is called Proof Beyond the Reasonable Doubt i.e. a philosophy of design whereby it is better to let a bad guy go free then to harm a good guy.&lt;br /&gt;&lt;br /&gt;In modeling risk and fraud and designing algorithms to prevent them, we always have to measure the algorithm based on their recall and precision. Low precision methods typically cost a lot in term of customer support and friction in user experience, low recall algorithms and method result in higher losses for the company. &lt;br /&gt;&lt;br /&gt;in designing a Risk Management strategy, I tend to side with lower recall then lower precision and then manage the ratio of loss/revenue with the higher revenue generated by higher precision - or right customer who were let in.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What if the cops came back with 10 guys, 5 are gang members and 5 are innocent? in this case they arrested all gang members (100% catch rate or 100% recall) but&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-2257432710641112097?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/2257432710641112097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/07/recall-and-precision-it-is-not-how-many.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/2257432710641112097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/2257432710641112097'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/07/recall-and-precision-it-is-not-how-many.html' title='Recall and Precision: It is not how many bad guys you caught, it is how many good guys suffered'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-602228493881178346</id><published>2010-06-25T23:19:00.000-07:00</published><updated>2010-06-25T23:19:53.233-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Organization'/><title type='text'>Special Forces, Regular Army and Start ups</title><content type='html'>From time to time I advise start ups on mostly technical matters, inevitably they ask me for referrals to hire engineers or help with editing their job postings.&lt;br /&gt;&lt;br /&gt;Typically they email me a very detailed and specific job description for a, say, Data Architect or Ajax messaging programmer or Java Engineer complete with an obscure list of libraries and technologies that the candidate expected to be master in (probably those technologies were suggested by their VC to them in their last meeting)&lt;br /&gt;&lt;br /&gt;Start ups should be built like special forces, with a few brave and smart generalists with a lot of heart and "get it done" attitude, not by deep specialists in any certain area - I am talking about the first few engineers here - a statistical modeler with no programming skills or a Data Architect with focus on data replication makes a fine contractor for a short time to advise your core engineering team, but should not be one the first 5 engineers you hire.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-602228493881178346?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/602228493881178346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/06/special-forces-regular-army-and-start.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/602228493881178346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/602228493881178346'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/06/special-forces-regular-army-and-start.html' title='Special Forces, Regular Army and Start ups'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-5113761237179787378</id><published>2010-06-25T22:54:00.000-07:00</published><updated>2010-06-25T22:54:50.449-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Strategy'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><title type='text'>Wanna Make Your Life Hard? There is an app for that, or maybe 100,000</title><content type='html'>These days it is not uncommon to find some one with 100+ apps installed on his/her phone (maybe you are one of those?). I imagine most of those apps are used once or twice and will never be used, the only time you see them (or their icon) is when you scroll past by them to get to your 2 or 3 (or five) apps you actually use frequently.&lt;br /&gt;&lt;br /&gt;This app mania clutters UIs and waste a lot time, and I can't help but thinking "do we simply forget all the lessons and progress of last 10-15 years simply because a device came along with attractive aesthetics?"&lt;br /&gt;&lt;br /&gt;What happened to "browser is the operating system?" in the days that most desktop apps are moving to cloud and being delivered thru browsers, why is it that most (if not all) mobile apps are native code? Yes native apps still have certain capability that browsers do not offer YET, but with HTML 5 and Web Kit (and maybe with a little bit of industry support to close the remaining gaps) browser based apps would be sufficient for large majority of mobile apps.&lt;br /&gt;&lt;br /&gt;Don't get me wrong, there will always be need for native apps, but much like with desktop, over time only a few apps will be privileged to be native, most other will and should be browser based standard, write one, run on any browser apps.&lt;br /&gt;&lt;br /&gt;This makes development of mobile apps simpler and more cost effective, instead of maintaining three apps for iPhone, Andriod and Blackberry, most developer only maintain one version, and you only install a few apps that truly need to be native apps.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-5113761237179787378?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/5113761237179787378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/06/wanna-make-your-life-hard-there-is-app.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/5113761237179787378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/5113761237179787378'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/06/wanna-make-your-life-hard-there-is-app.html' title='Wanna Make Your Life Hard? There is an app for that, or maybe 100,000'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-4348712464260640117</id><published>2010-06-14T22:18:00.000-07:00</published><updated>2010-06-14T22:18:05.623-07:00</updated><title type='text'>"My Dad is 50 years old, weighs 30 lbs and is 40 ft tall...I like him b/c he is silly"</title><content type='html'>A very competent and respected colleague of mine, in his early 30s, 5’9” and reasonably proportional I might add, has the following written by his 5 year old son posted in his cube:&lt;br /&gt;&lt;br /&gt;“My dad is 50 years old, 30lbs and 40 feet tall and I like him because he is silly”&lt;br /&gt;&lt;br /&gt;Besides it being funny and making me think what my daughters really think about me, it reminds me of how our products can be perceived and used by other engineers: They way they see it not they way “they are”.&lt;br /&gt;&lt;br /&gt;If you are developing systems, services and products for other developers, it is important to understand that your will be used they way others understand it and not the way you planned it to be used. I have seen a session service used as a general purpose cache, ESB riddled with use-case specific routing logic, authentication service used as data pre-fetch mechanism&amp;nbsp; and presentation logic (in XSL) saddled with complex and critical business logic – of course in XSL. All examples of how we all use tools to solve our problems regardless of whether or not the tool is meant for it (remember eating jelly with knife?)&lt;br /&gt;&lt;br /&gt;The first solution of course is documentation, but here is what that documentation should include:&lt;br /&gt;&lt;br /&gt;- Real world, working and end to end examples of the right way to use the services/product&lt;br /&gt;&lt;br /&gt;- Examples should be cut-and-paste able (to the extent possible)&lt;br /&gt;&lt;br /&gt;- Realistic examples of wrong way of using systems, updated periodically as new misuses surface&lt;br /&gt;&lt;br /&gt;- Direction and pointers for how to address the original need leading to the misuse.&lt;br /&gt;&lt;br /&gt;- Address of a user (or expert monitored) forum where users can get help&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-4348712464260640117?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/4348712464260640117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/06/my-dad-is-50-years-old-weighs-30-lbs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/4348712464260640117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/4348712464260640117'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/06/my-dad-is-50-years-old-weighs-30-lbs.html' title='&quot;My Dad is 50 years old, weighs 30 lbs and is 40 ft tall...I like him b/c he is silly&quot;'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-3956498952567523884</id><published>2010-06-10T11:44:00.000-07:00</published><updated>2010-06-10T11:44:27.636-07:00</updated><title type='text'>Presentation for my eBay DevCon 2010 Talk</title><content type='html'>Here is the slide deck for my talk @ eBay DevCon 2010" &lt;a href="http://www.slideshare.net/farhangkassaei/the-userwhocameinfromthecloud-devcon2010v5"&gt;The User Who Came In From the Cloud&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you ever wanted to consume identity from external identity providers (Facebook, Google, Yahoo, PayPal etc.) you may want to check it out.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="__ss_4467245" style="width: 425px;"&gt;&lt;strong style="display: block; margin: 12px 0pt 4px;"&gt;&lt;a href="http://www.slideshare.net/farhangkassaei/the-userwhocameinfromthecloud-devcon2010v5" title="The userwhocameinfromthecloud devcon2010-v_5"&gt;The userwhocameinfromthecloud devcon2010-v_5&lt;/a&gt;&lt;/strong&gt;&lt;object height="355" id="__sse4467245" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=theuserwhocameinfromthecloud-devcon2010v5-100610133828-phpapp01&amp;amp;stripped_title=the-userwhocameinfromthecloud-devcon2010v5" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse4467245" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=theuserwhocameinfromthecloud-devcon2010v5-100610133828-phpapp01&amp;amp;stripped_title=the-userwhocameinfromthecloud-devcon2010v5" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding: 5px 0pt 12px;"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/farhangkassaei"&gt;farhangkassaei&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-3956498952567523884?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/3956498952567523884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/06/presentation-for-my-ebay-devcon-2010.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/3956498952567523884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/3956498952567523884'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/06/presentation-for-my-ebay-devcon-2010.html' title='Presentation for my eBay DevCon 2010 Talk'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-7634161704403784339</id><published>2010-06-04T22:12:00.000-07:00</published><updated>2010-06-04T22:12:41.995-07:00</updated><title type='text'>"Failure is not fatal, but failure to change might be" John Wooden</title><content type='html'>John Wooden, the Wizard and West wood, passed away today. I imagine most of the readers of my blog probably do not know him, you can read all about him by visiting &lt;a href="http://www.coachwooden.com/"&gt;his official web site.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;He was the embodiment of the word "coach", not only did he win 10 national championship (7 consecutive), he developed players and MEN.&lt;br /&gt;&lt;br /&gt;I am a Big Ten guy and never cared much about Pac 10, but I learned about Wooden by leanring about his amazing basketball dynasty at UCLA - anyone who ever worked with young 20 year old programmers can appriciate what it takes to get them focus on a goal and develop the decipline to achive it - then I read his books and his favoriate maxims. And only then I truely appriciated why they call him "The Wizard".&lt;br /&gt;&lt;br /&gt;Of course he was not a software architect, but what said about "...failure to change" should be on top of every architect's mind, he proved it by architecting a system that work flawlessly level in 12 different environments.&amp;nbsp; How many of us can create a system that works in 12 different environments? &amp;nbsp; &lt;br /&gt;&lt;br /&gt;Yet again, make me convinced that the essence of architecture is about changing gracefully.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-7634161704403784339?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/7634161704403784339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/06/failure-is-not-fatal-but-failure-to.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/7634161704403784339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/7634161704403784339'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/06/failure-is-not-fatal-but-failure-to.html' title='&quot;Failure is not fatal, but failure to change might be&quot; John Wooden'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-5592463605660394545</id><published>2010-05-29T11:46:00.000-07:00</published><updated>2010-05-29T12:01:36.410-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Talks'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>eBay DevCon 2010 Talk and The Spy Who Came in from the Cold</title><content type='html'>&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_9omyFnkXzaE/TAFkewif0dI/AAAAAAAAMCU/tEOc4KCV-TY/s1600/imgDevConLogo.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/_9omyFnkXzaE/TAFkewif0dI/AAAAAAAAMCU/tEOc4KCV-TY/s200/imgDevConLogo.gif" width="105" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_9omyFnkXzaE/TAFiOzeUR1I/AAAAAAAAMCM/UoeQCUwnSpM/s1600/spy-who-came-in-from-the-cold-the-xlarge.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180/" src="http://3.bp.blogspot.com/_9omyFnkXzaE/TAFiOzeUR1I/AAAAAAAAMCM/UoeQCUwnSpM/s320/spy-who-came-in-from-the-cold-the-xlarge.jpg" width="100" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;I will give a talk on federated identity and best practices for relying parties at this year's eBay Developers' Conference in San Jose. The talk in start @ 1:30 pm on June 10th, the location is San Jose Fairmont Hotel in grossly under rated San Jose's beautiful downtown.&lt;br /&gt;&lt;br /&gt;The title for the talk is "The User Who Came in From the Cloud". It is a play on my favoriate cold war spy novels of all time &lt;a href="http://en.wikipedia.org/wiki/The_Spy_Who_Came_in_from_the_Cold"&gt;"The Spy Who Came in from the Clod"&lt;/a&gt;, if you are into spy novel or cold war buff, I recommend reading the it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-5592463605660394545?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/5592463605660394545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/05/ebay-devcon-2010-talk.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/5592463605660394545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/5592463605660394545'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/05/ebay-devcon-2010-talk.html' title='eBay DevCon 2010 Talk and The Spy Who Came in from the Cold'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_9omyFnkXzaE/TAFkewif0dI/AAAAAAAAMCU/tEOc4KCV-TY/s72-c/imgDevConLogo.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-2918387925698031479</id><published>2010-05-16T21:25:00.000-07:00</published><updated>2010-05-16T21:26:07.548-07:00</updated><title type='text'>LinkedIn Recommendations Negatively Corelate to Performance?</title><content type='html'>I always wondered how true LinkedIn recommendations really are, it is a given that there is strong positive bias in them, after all you ask for those recommendations presumably from people that liked what you did. Still I was curious to see whether it has a correlation with performance, now, rather unscientifically, I am arriving at the conclusion that it does. but &lt;b&gt;negatively &lt;/b&gt;!!&amp;nbsp; &amp;nbsp; &lt;br /&gt;&lt;br /&gt;I interview a lot of people, due to the nature of my job I also know and work with a lot of people. These people range from junior engineers to mid-level manager and to senior executives and from smart, talented and competent to not very effective and some times down right "wrongly casted". For all my interviews and recently for people I worked with that, in my view fall into extremes of performance I looked them up in LinkedIn. The outcome was surprising: The competent people almost never had any recommendations and half the time not even a complete profile. On the other hand, the people on the less competent side of the spectrum often had glowing references from half dozen folks. Why is it? I can not be sure, but here is my guess:&lt;br /&gt;&lt;br /&gt;The less competent people know where they fit in the performance curve, they anticipate needing to look for a job sooner than later so they make sure their affairs are in order. They ask for references more frequently and are likely to get it since, first, people are or would like to be nice and helpful, second, they expect reciprocity.&lt;br /&gt;On the other hand, more competent folks either do not expect a job hunt and if they need one often get it thru their own network (either follow their bosses or other colleagues who do whatever they can to get them to join them in their new gig).&lt;br /&gt;&lt;br /&gt;To be clear, I do not hold anyone's LinkedIn recommendations against them, I am just stating an observation over the past 18-24 months.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-2918387925698031479?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/2918387925698031479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/05/linkedin-recommendations.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/2918387925698031479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/2918387925698031479'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/05/linkedin-recommendations.html' title='LinkedIn Recommendations Negatively Corelate to Performance?'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-6575287405249130195</id><published>2010-04-29T23:35:00.000-07:00</published><updated>2010-04-29T23:35:06.778-07:00</updated><title type='text'>Appholes!</title><content type='html'>Jon Stewart is a communication genius - as evident by the title of this post borrowed from him. He some how mastered the art of hiding behind comedy shield and turn serious when he needs it to make his point. He has become the nations moral compass of sorts. But that is a different story.&lt;br /&gt;&lt;br /&gt;I read &lt;a href="http://www.apple.com/hotnews/thoughts-on-flash/"&gt;Jobs' Thoughts on Flash&lt;/a&gt; where he describes Apple's reasons for banning popular Adobe's Flash technology from Apple products. All the while thinking to myself " you got to be kidding me!".&lt;br /&gt;&lt;br /&gt;Where are all the MSFT bashers of mid 90s and early 2000s? Half the countries in the world would have dragged MSFT to their highest court if they ever did such thing. After all MSFT didn't ban NetScape browsers, it simply made its own the default.&lt;br /&gt;&lt;br /&gt;Back then, MSFT made the same claim as Apple does today:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"Our motivation is simple – we want to provide the most advanced and innovative platform to our developers..."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;Why is there no outrage this time around in the tech world? Why the double standard?&lt;br /&gt;&lt;br /&gt;Now, banning Flash is only one example, Apple's reaction to Gizmodo is also something that makes you wonder. Listen to Stewart version of it:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table cellpadding="0" cellspacing="0" height="353" style="-x-system-font: none; background-color: whitesmoke; color: #333333; font-family: arial; font-size-adjust: none; font-size: 11px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; width: 360px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: #e5e5e5;" valign="middle"&gt;&lt;td style="padding: 2px 1px 0px 5px;"&gt;&lt;a href="http://www.thedailyshow.com/" style="color: #333333; font-weight: bold; text-decoration: none;" target="_blank"&gt;The Daily Show With Jon Stewart&lt;/a&gt;&lt;/td&gt;&lt;td style="font-weight: bold; padding: 2px 5px 0px; text-align: right;"&gt;Mon - Thurs 11p / 10c&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 14px;" valign="middle"&gt;&lt;td colspan="2" style="padding: 2px 1px 0px 5px;"&gt;&lt;a href="http://www.thedailyshow.com/watch/wed-april-28-2010/appholes" style="color: #333333; font-weight: bold; text-decoration: none;" target="_blank"&gt;Appholes&lt;/a&gt;&lt;a href=""&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background-color: #353535; height: 14px;" valign="middle"&gt;&lt;td colspan="2" style="overflow: hidden; padding: 2px 5px 0px; text-align: right; width: 360px;"&gt;&lt;a href="http://www.thedailyshow.com/" style="color: #96deff; font-weight: bold; text-decoration: none;" target="_blank"&gt;www.thedailyshow.com&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="middle"&gt;&lt;td colspan="2" style="padding: 0px;"&gt;&lt;embed allowfullscreen="true" allownetworking="all" allowscriptaccess="always" bgcolor="#000000" flashvars="autoPlay=false" height="301" src="http://media.mtvnservices.com/mgid:cms:item:comedycentral.com:307953" style="display: block;" type="application/x-shockwave-flash" width="360" wmode="window"&gt;&lt;/embed&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 18px;" valign="middle"&gt;&lt;td colspan="2" style="padding: 0px;"&gt;&lt;table cellpadding="0" cellspacing="0" height="100%" style="margin: 0px; text-align: center;"&gt;&lt;tbody&gt;&lt;tr valign="middle"&gt;&lt;td style="padding: 3px; width: 33%;"&gt;&lt;a href="http://www.thedailyshow.com/full-episodes/" style="-x-system-font: none; color: #333333; font-family: arial; font-size-adjust: none; font-size: 10px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; text-decoration: none;" target="_blank"&gt;Daily Show Full Episodes&lt;/a&gt;&lt;/td&gt;&lt;td style="padding: 3px; width: 33%;"&gt;&lt;a href="http://www.indecisionforever.com/" style="-x-system-font: none; color: #333333; font-family: arial; font-size-adjust: none; font-size: 10px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; text-decoration: none;" target="_blank"&gt;Political Humor&lt;/a&gt;&lt;/td&gt;&lt;td style="padding: 3px; width: 33%;"&gt;&lt;a href="http://www.thedailyshow.com/videos/tag/Tea+Party" style="-x-system-font: none; color: #333333; font-family: arial; font-size-adjust: none; font-size: 10px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; text-decoration: none;" target="_blank"&gt;Tea Party&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-6575287405249130195?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/6575287405249130195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/04/appholes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/6575287405249130195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/6575287405249130195'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/04/appholes.html' title='Appholes!'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-6028678087798759523</id><published>2010-04-21T23:24:00.000-07:00</published><updated>2010-09-07T22:06:14.358-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>xAuth: Second Tier IDP Club</title><content type='html'>I learned today that the toolbar company Meebo today announced a proposed standard called &lt;a href="http://ww.auth.org/"&gt;xAuth &lt;/a&gt;to solve the so called &lt;a href="http://factoryjoe.com/blog/2009/04/06/does-openid-need-to-be-hard/"&gt;NASCAR problem&lt;/a&gt; of OpenID.&lt;br /&gt;&lt;br /&gt;The essence of the solution is to create a centralized database (xauth.org) where users preferred IDPs are listed. For example if you use Google Friend Connect then xauth.org DB saves that preference for you. Now the publishers/RP that you visit, make a call to xauth.org (upon your visit) and learn that you prefer to "login" using GFC and only show that logo to you instead of a dozen logos from FB, Tweeter, Yahoo, AOL, Google, Microsoft, VeriSign and whoever else who jumps on federated ID band wagon.&lt;br /&gt;&lt;br /&gt;My initial reaction (emphasis on initial) is "Are you serious?" and "Is it opt-in or opt-out" (apparently it is opt-out).&lt;br /&gt;&lt;br /&gt;Two comments:&lt;br /&gt;1- Of course collecting all people's information in one central database make a lot of things easier/smoother or more efficient, but there is a reason we don't do it (at least not yet), regardless of how noble the initial intent maybe.&lt;br /&gt;&lt;br /&gt;2- And this is important, identity provider business is one of those things that have a real &lt;a href="http://en.wikipedia.org/wiki/Network_effect"&gt;network effect&lt;/a&gt;, that means by definition and nature, in the IDP business there can not be dozen winners, it is a winner take all type of a game (or maybe a few - two, three) winners at most. NASCAR problem exists because no one wants to admit that it will not be one of the winners. But time will take care of this. For now support for xAuth seems to have become an admission of membership to "Second Tier IDP Club". after all if you think you are going to be one the winners, why would you want to remove your logo from the NASCAR race?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-6028678087798759523?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/6028678087798759523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/04/xauth-second-tiere-idp-club.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/6028678087798759523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/6028678087798759523'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/04/xauth-second-tiere-idp-club.html' title='xAuth: Second Tier IDP Club'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-7326271828393593842</id><published>2010-04-19T10:46:00.000-07:00</published><updated>2010-04-19T10:51:35.421-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='Talks'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>Identity Assertion Framework Talk @ Stanford Presentation</title><content type='html'>Here is the presentation for my talk today @ &lt;a href="http://crypto.stanford.edu/seclab/sem-09-10/farhang.html"&gt;Stanford&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="__ss_3777089" style="width: 425px;"&gt;&lt;strong style="display: block; margin: 12px 0pt 4px;"&gt;&lt;a href="http://www.slideshare.net/farhangkassaei/ebay-identity-assertion-framework-iaf" title="eBay Identity Assertion Framework (IAF)"&gt;eBay Identity Assertion Framework (IAF)&lt;/a&gt;&lt;/strong&gt;&lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=iaf-stanfordsecurityseminar04192010-100419120018-phpapp01&amp;amp;stripped_title=ebay-identity-assertion-framework-iaf" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=iaf-stanfordsecurityseminar04192010-100419120018-phpapp01&amp;amp;stripped_title=ebay-identity-assertion-framework-iaf" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding: 5px 0pt 12px;"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/farhangkassaei"&gt;farhangkassaei&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You can &lt;a href="http://www.slideshare.net/farhangkassaei/ebay-identity-assertion-framework-iaf"&gt;download the presentation for eBay's Identity Assertion Framework&lt;/a&gt; now. The talk is today (April 19, 2010), &lt;a href="http://crypto.stanford.edu/seclab/sem-09-10/farhang.html"&gt;here is more information on time and place&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I have promised to write a bit more about IAF to a few people and I intend to keep my promise.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-7326271828393593842?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/7326271828393593842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/04/identity-assertion-framework-talk.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/7326271828393593842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/7326271828393593842'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/04/identity-assertion-framework-talk.html' title='Identity Assertion Framework Talk @ Stanford Presentation'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-2668870932877301881</id><published>2010-04-07T22:59:00.000-07:00</published><updated>2010-04-07T22:59:42.769-07:00</updated><title type='text'>10 Decisions a Relying Party should make.</title><content type='html'>Open and federated identity schemes such as &lt;a href="http://www.openid.net/"&gt;OpenID&lt;/a&gt;, InfoCard, &lt;a href="http://developers.facebook.com/connect.php"&gt;FBConnect&lt;/a&gt;, &lt;a href="http://www.google.com/friendconnect/"&gt;GFC&lt;/a&gt; or sometimes even SAML getting a lot of attention these days, with OpenID capturing the biggest mind share.&lt;br /&gt;&lt;br /&gt;A lot has been written (and standardized) about Open Identity protocols, transport binding and token format, (things that are primary concerns of IDPs - IDentity Providers). However I feel less attention has been paid to changes that Relying Parties (RPs) have to make to their systems (user experience and design, identity and account structure, session management etc.), after all there is a big difference between provisioning your own identity and performing your own primary authentication, v.s. relying on some one else to do it for you.&lt;br /&gt;&lt;br /&gt;Here is a list of 10 things (you know it had to be 10 !) that you need to think about and decide if you are planning to be a Relying Party:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Decide which IDPs to accept&lt;/b&gt;: Not all IDP are created equal of course.&amp;nbsp;   &lt;br /&gt;2.&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;The design of the sign-in and registration page&lt;/b&gt;: in way that encourages the use of OpenID but not confuse users who do not use OpenID or do not know what it is.&lt;br /&gt;3.&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;Covering the "Information gap"&lt;/b&gt;: How to capture information you need and is not provided by user's IDP during initial session, also determining whether you can call IDP (thru back channel) and ask for more (or updated) information about a user.&lt;br /&gt;4.&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;Privileges:&lt;/b&gt; Decide whether an OpenID user of your site has all the privileges of a local user or do they need to create a local account before they can perform certain activities.&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;br /&gt;5.&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;Covering the "trust gap"&lt;/b&gt;: Do you need IDP to provide some level of assurance (or verification) of the attributes it is providing you. For example if IDP provides user's home address, do you need this address to be verified?&lt;br /&gt;6.&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;Account Linking&lt;/b&gt; - decide whether you plan to become a true RP (i.e. no local account with local user name and password) or upon initial OpenID session, you plan to ask user to "register" with you site and create a local user name and password. &lt;br /&gt;7.&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;Session Management&lt;/b&gt;:Do you plan to sync you local session with IDP session length (or shorter or longer?) regardless will you "force re-authentication" for certain activities?&lt;br /&gt;8.&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;Profile Change Management&lt;/b&gt;: How do you plan to deal with users' who lose/forget their OpenID, is it important for you that a user&amp;nbsp; &lt;br /&gt;9.&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;Account Cardinality: &lt;/b&gt;How many local account will you allow to be associated with one OpenID identifier, conversely, can an OpenID account be associated with multiple local accounts?&lt;br /&gt;10.&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;Logout: &lt;/b&gt;Whenan OpenID user logs out of your site, are you planning to report that to IDP for federated logout?&lt;br /&gt;&lt;br /&gt;And if you are looking for controversy, consider the issue of "reporting adverse behavior" i.e. if a RP experienced an adverse behavior from a user with OpenID, should the RP report it to the IDP? If you consider IDPs equivalent to robots then, it seems like the &lt;a href="http://en.wikipedia.org/wiki/Three_Laws_of_Robotics"&gt;Three laws of Robotics &lt;/a&gt;says no, but if you think of IDP more like credit bureaus (or evolving to become more like identity bureaus) then the &lt;a href="http://en.wikipedia.org/wiki/ChexSystems"&gt;ChexSystem&lt;/a&gt; indicates otherwise....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-2668870932877301881?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/2668870932877301881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/04/10-decision-relying-party-should-make.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/2668870932877301881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/2668870932877301881'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/04/10-decision-relying-party-should-make.html' title='10 Decisions a Relying Party should make.'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-7975668049375259991</id><published>2010-04-02T22:51:00.000-07:00</published><updated>2010-04-02T22:52:57.860-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><title type='text'>Key to Scalability: Distributed System Development</title><content type='html'>Today I came across this &lt;a href="http://www.cs.cornell.edu/projects/ladis2009/talks/dean-keynote-ladis2009.pdf"&gt;nice presentation about Google internal architecture practices&lt;/a&gt; by Jeff Dean.plenty of valuable advice and common sense (the most uncommon of all senses). I just wanted to highlight one item that I feel is a bit under-appreciated - on page 20 when he talks about key attributes of distributed system, there is on bullet point that reads:&lt;br /&gt;&lt;br /&gt;Development cycles largely decoupled&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; – lots of benefits: small teams can work independently&lt;br /&gt;&lt;br /&gt;On one hand this is so obvious! After all they are "distributed" systems, how can they have coupled life cycle, on the other hand in so many people complain about lack of productivity and agility in large "distributed" systems. When you look closer, you find out that they have fairly decoupled system initally, more or less get the boundaries right, however &lt;b&gt;&lt;u&gt;they coupled the life cycles of all applications and services together&lt;/u&gt;&lt;/b&gt; !! &lt;br /&gt;&lt;br /&gt;This means the whole organization releases with one giant push, the whole system all together. Everyone has to be on the same page, over time this unified "beat"brings down the boundaries and soon "the distributed" system becomes a monolith.&lt;br /&gt;&lt;br /&gt;I will write a few more entries about the basic principles that enable true distributed (and autonomous) application development.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;By the way,&amp;nbsp;&amp;nbsp; &lt;a href="http://www.addsimplicity.com/downloads/eBaySDForum2006-11-29.pdf"&gt;Here is eBay version of scalability advice&lt;/a&gt; (a bit dated but updating it is in my todo list) by Dan Pritchet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-7975668049375259991?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/7975668049375259991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/04/key-to-scalability-distributed-system.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/7975668049375259991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/7975668049375259991'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/04/key-to-scalability-distributed-system.html' title='Key to Scalability: Distributed System Development'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-1250220737715002134</id><published>2010-04-02T22:27:00.000-07:00</published><updated>2010-04-02T22:27:42.914-07:00</updated><title type='text'>eBay Social Shopping w/ Google Friend Connect</title><content type='html'>Today, with &lt;a href="http://googlesocialweb.blogspot.com/2010/03/introducing-ebay-social-shopping-gadget.html"&gt;Jay Patel's post on Google Social Web Blog&lt;/a&gt;,&amp;nbsp; we released the alpha version of eBay Social Shopping gadget. It is a little cool Gadget that allows any sites (that is registered with Google Friend Connect), to surface eBay inventory and mix it with social functions such as recommendation to friend, rankings, sharing eBay activities (bid, buy, watch etc.) with friends etc.&lt;br /&gt;&lt;br /&gt;You can read more about it by visiting &lt;a href="http://ess.ebay.com/"&gt;ess.ebay.com&lt;/a&gt; and see our demos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-1250220737715002134?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/1250220737715002134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/04/ebay-social-shopping-w-google-friend.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/1250220737715002134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/1250220737715002134'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/04/ebay-social-shopping-w-google-friend.html' title='eBay Social Shopping w/ Google Friend Connect'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-5965387520283905130</id><published>2010-03-31T22:37:00.000-07:00</published><updated>2010-03-31T22:37:23.652-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='Organization'/><title type='text'>Meetings kill  Loose Coupling</title><content type='html'>There is a brilliant, yet underutilized, sociological observation called the &lt;a href="http://www.melconway.com/research/committees.html"&gt;Conway’s Law&lt;/a&gt;. It was stated by Mel Conway in his 1968 paper. It states that:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;Any organization that designs a system will inevitably produce a design whose structure is a copy of the organization's communication structure.&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;The key phrase is “communication structure”, that is roughly, but not always, equal to organization structure.&lt;br /&gt;You may have not heard of or read his paper, but I am sure you have seen the effect of his observation: &lt;br /&gt;&lt;br /&gt;If you have two teams called Application and Kernel, then chances are you end up with two deployment units called applications and kernel (jars or folders or zip files or any other form of bundling code), on the other hand if you engineering organization has two teams called Books and Games, then you end up with a book and a game application, if there is no other team/group, it is unlikely that you can see a kernel or core subsystem that encapsulate the common construct between the two.&lt;br /&gt;&lt;br /&gt;Now, we all know about the principal of loose coupling, and how it enables flexibility, efficiency, increased productivity etc. One very effective way of creating loose coupling between two system (let’s call then consumer and producer) is to make sure that members of the producer team do not meet with members of consumer team! You may convey requirements to them, but forbid meetings. If there is not communication, it is hard to build hard coupling. It is a bit strange and counter-intuitive, but we have used this with success in building key infrastructure services.&lt;br /&gt;&lt;br /&gt;I have found out that a good early predictor of the level of coupling (or quality of interfaces in general) of a system is the list of invitees to their early design meetings. Whenever one of few engineers from a future consumer is part of the meeting, there is a good indication that they systems will be somehow coupled (either thru the types or domain values of parameters passed or the way errors are handled, the marshalling of the result, or even the terminology used) – This of course is a generalization, the team somehow has to collect requirements, or share result s and get early feedback, this is all OK, but if your goal is to create “loosely coupled” system, you should make sure your communication structure,&amp;nbsp; are loosely coupled as well.&lt;br /&gt;Take a service that verifies a credit card number to ensure validity and that a provided name indeed matches credit card issuer record. This service may have a method/operation in its interface:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Result VerifyCreditCard(UserId id)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;It assumes that somehow the service can obtain a credit card number from a supplied UserID. This is a very tightly coupled interface that shows the service provider has had too much knowledge about its consumer. &lt;br /&gt;Here is a less tightly coupled (better) example:&lt;br /&gt;&lt;br /&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Result VerifyCreditCard(CreditCard card, BuyerName buyerName)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This is not too bad, but the choice of “BuyerName” indicates that the provider has the knowledge that consumer (the one she probably met with) happens to deal with principals that are buyer.&lt;br /&gt;Consider a loosely coupled version that one would probably write if there is no additional knowledge of potential consumers&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Result VerifyCreditCard(CreditCard card, Name name)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Communication channels are very important interface design, this means people in each design meetings should be selected carefully, if system A should not be dependent on system B, the best way to ensure it, is to reduce communication between developers of system A and system B.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-5965387520283905130?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/5965387520283905130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/03/meetings-kill-loose-coupling.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/5965387520283905130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/5965387520283905130'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/03/meetings-kill-loose-coupling.html' title='Meetings kill  Loose Coupling'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-3762336737078084945</id><published>2010-03-30T22:07:00.000-07:00</published><updated>2010-03-30T22:07:39.737-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><title type='text'>Evolving Gracefully - Example I</title><content type='html'>In my posts, "What is Architecture", &lt;a href="http://softwareforallseasons.blogspot.com/2010/03/what-is-software-architecture-part-i.html"&gt;Part I&lt;/a&gt; and &lt;a href="http://softwareforallseasons.blogspot.com/2010/03/what-is-software-architecture-part-ii.html"&gt;Part II&lt;/a&gt;, I argued that architecture is essentially what enables a system to evolve gracefully and traverse an optimal path in response to changes (requirements, assumptions, context, inputs etc.). In this post (and in a few more) I give examples of such changes and possible optimal/graceful (or non-optimal/disruptive) responses of a system.&lt;br /&gt;&lt;br /&gt;Take "Accessibility Requirement" as an example. Few software systems are designed with the explicit goal of accessibility as one of the main architecture and design goals. However, some systems at some point must comply to certain accessibility standards and guidelines (it is good usability practices, the right thing to do, good business and the law) - &lt;a href="http://www.webaim.org/intro/"&gt;see a very good introduction to accessibility from WebAIM.org here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now, if some one came one morning and asked you to make sure every image in every single HTML page of your site has an alt tag, what would be your response? Remember this maybe 1000s or image tag in 10s or 100s of applications produced by developers across three continents.&lt;br /&gt;&lt;br /&gt;If your architecture (and the design and implementation of it) decoupled model construction from actual rendering, and a centralized rendering engine that takes a data structure (such as DOM) and uses a rendering strategy to produce XHTML, then your architecture (and you) has no problem responding to this new requirement easily. You'd simply make sure that when the render visit an &lt;img /&gt; element, it finds an alt attribute. This is an optimal response to change. Although the system was not particullary designed with accessibility in mind, since it was built based on the right architecture, it can evolve to accommodate change.&lt;br /&gt;&lt;br /&gt;However, if the 1000s HTML pages on your site are produced by 100s of JSP scripts, a few PHP scripts, some XSL, a few instances of dynamically created &lt;img /&gt; tags in JavsScript etc. You would have a nightmare on your hand. This is an example of architecture that can not evolve ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-3762336737078084945?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/3762336737078084945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/03/evolving-gracefully-example-i.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/3762336737078084945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/3762336737078084945'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/03/evolving-gracefully-example-i.html' title='Evolving Gracefully - Example I'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-1158281421684066403</id><published>2010-03-29T20:47:00.000-07:00</published><updated>2010-03-29T20:47:43.432-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='Talks'/><title type='text'>Identity Assertion Framework (IAF) Talk at Stanford</title><content type='html'>&amp;nbsp;I will give a &lt;a href="http://crypto.stanford.edu/seclab/sem-09-10/farhang.html"&gt;talk&lt;/a&gt; about eBay's framework for handling federation, federated token services and distributed authentication - called IAF - at Stanford on Monday April 19th, 2010. Here is a &lt;a href="http://crypto.stanford.edu/seclab/sem-09-10/farhang.html"&gt;brief description&lt;/a&gt;&amp;nbsp; The talk is part of the &lt;a href="http://crypto.stanford.edu/seclab/sem.html"&gt;Stanford Security Seminar&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;This is an area that is poorly understood by software developer and architects that are new to security or authentication. I will write more about the topic of "authentication" and eBay's framework for handling it in more details. Look for under the label "Identity" and "Security".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-1158281421684066403?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/1158281421684066403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/03/identity-assertion-framework-iaf-talk.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/1158281421684066403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/1158281421684066403'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/03/identity-assertion-framework-iaf-talk.html' title='Identity Assertion Framework (IAF) Talk at Stanford'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-8595622780260827253</id><published>2010-03-26T21:12:00.000-07:00</published><updated>2010-03-26T21:12:10.217-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><title type='text'>What is Software Architecture - Part II</title><content type='html'>In part I, I offered my view of software architecture by illustrating what "architecture" does for you: Allows you to deal with change optimally. This is basically saying architecture is what allows a system to change with out changing fundamentally what it is (forgetting about &lt;a href="http://en.wikipedia.org/wiki/Dialectic"&gt;Dialectics &lt;/a&gt;for a moment). In other words:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&amp;nbsp; Architecture is what enables a system to evolve gracefully &lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;You may ask, how else a system would change? How is &lt;a href="http://www.youtube.com/watch?v=h3K3kEDEAN4"&gt;this&lt;/a&gt; for an example? Don't let the glitz and glitter fool you. This is an example of architecture that fail to evolve according to the changes in its context and accumulation of demands for change finally resulted in its destruction. However, I doubt that you see an implosion of &lt;a href="http://www.boncherry.com/blog/wp-content/uploads/2009/08/taj-mahal.jpg"&gt;Taj Mahal&lt;/a&gt; - architect &lt;a href="http://en.wikipedia.org/wiki/Ustad_Ahmad_Lahauri"&gt;&lt;b&gt;Ustad (Master) Ahmad Lahouri&lt;/b&gt; &lt;/a&gt;- any time soon.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Now you may say, well these are building, what do they have to do with software? I don't want to over play the building metaphor, but software systems acts similarly. How many times you have seen a multi million dollar investment in, say, customer support system or CRM system or messaging infrastructure or authorization system etc. only to scrap them two, or three years later by another multi million dollar system?&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;On the start up side, often the first and only concern is to make it work and to survive, but when time comes to scale, they often have to re-write from scratch, that is the software counterpart of a Vegas hotel implosion.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;In my next post, I will give you a few software and system examples of graceful evolution courtesy of good architecture practice and "implosion" for lack thereof. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-8595622780260827253?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/8595622780260827253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/03/what-is-software-architecture-part-ii.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/8595622780260827253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/8595622780260827253'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/03/what-is-software-architecture-part-ii.html' title='What is Software Architecture - Part II'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-2324558775190550499</id><published>2010-03-25T21:51:00.000-07:00</published><updated>2010-03-26T22:11:26.090-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><title type='text'>What is Software Architecture - Part I</title><content type='html'>My job title carries the word “architect” - although my Mom never fails to point out that I am not a real architect like my brother is. This title among the software engineering community in general and in the Silicon Valley in particular almost always is received as an incomplete description of what a person does. People always expect an additional clarification; they give you an inquiring look “… so what is it exactly that you do?”&lt;br /&gt;The title reminds me of “food supplement” industry, unlike drugs it is unregulated and anyone can claim anything from magical weight loss pill to cure for emphysema powder. In our industry too, anyone can claim the title and define it as he s/he sees fit.  The title also conjures up images of a two-class software society: a lower class of software engineers who actually code and a ruling, elite class of architects that do not code or even read and understand code– and inevitably overtime lose touch with reality. Out of concern for the latter, some companies even eliminate the title altogether.&lt;br /&gt;But what do exactly architects do? &lt;br /&gt;I try to answer this question by answering the closely related question: What is Software Architecture? &lt;br /&gt;Let me get to the bottom line first and explain later:  I view architecture as a discipline that enables system to deal with change in optimally.&lt;br /&gt;There are two key terms in this definition, change and “optimally”. &lt;br /&gt;Let’s start with change.&lt;br /&gt;Non-trivial software is a system, and like any other system is subject to change over time. The change happens in all aspects and along all dimensions: scale, cost, expectations, visibility, criticality, operating environment, competitive landscape, technology, economy, people, organization etc.&lt;br /&gt;One prominent and widely known example of “change” is rapid growth in demand from a software system or what is commonly known as “scale”. Our general expectation of well architected system is to handle the scale gracefully and with no disruption. However some systems crash and need to be fully re-designed for the new level of demand (remember early days of Tweeter ?)&lt;br /&gt;To be presicous, this type of scale is scalability to handle homoginous user i.e. all users of eBay were assumed to be individual buyers and sellers (no medium to large sellers), all facebook users were assumed to be college student or all users of an enterprise system could be assumed to be internal users.&lt;br /&gt;Another example of change is scale of operation or non-homoginous user demand i.e. the system dose not necessary experience a change in volume of demand from one type of users, but has to handle demand from different types of users for example eBay wanting to deal with large merchants, or facebook wanting to open its platform to everyone (not just college students). &lt;br /&gt;These were only two example of change in form of scale. What differentiate a well architected system from a “system that works” is how well systems respond to those changes.&lt;br /&gt;The second key term in our definition was “optimally”. Optimally means the change can be absorbed and handled by the system with no (or minimum) disruption and in other words system is designed in a way that the scope of change is predetermined and extent of it is contained: no crisis, no building the system from scratch, no revolution! They system simply evolves along a smooth path. That is the essence of architecture (at least the software kind).&lt;br /&gt;The pictures below depict the graceful and disruptive response to change:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_9omyFnkXzaE/S6w8YQgPgfI/AAAAAAAAJv4/vX--V9WNao4/s1600/DisruptiveChange.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_9omyFnkXzaE/S6w8YQgPgfI/AAAAAAAAJv4/vX--V9WNao4/s320/DisruptiveChange.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This one, shows the same change scenario but one where change is handled gracefully, presumable with a well architected system.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_9omyFnkXzaE/S6w8l-5sjwI/AAAAAAAAJwA/jrJDvgAeOoU/s1600/gracefulChange.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_9omyFnkXzaE/S6w8l-5sjwI/AAAAAAAAJwA/jrJDvgAeOoU/s320/gracefulChange.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;In the next post, I will give a few examples to make this view of what architecture is clearer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-2324558775190550499?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/2324558775190550499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/03/what-is-software-architecture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/2324558775190550499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/2324558775190550499'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2010/03/what-is-software-architecture.html' title='What is Software Architecture - Part I'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_9omyFnkXzaE/S6w8YQgPgfI/AAAAAAAAJv4/vX--V9WNao4/s72-c/DisruptiveChange.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-872157451414882254</id><published>2009-10-27T22:14:00.000-07:00</published><updated>2010-04-06T22:22:24.463-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Talks'/><title type='text'>SDForum Talk on Open eBay</title><content type='html'>I will be giving a talk at &lt;a href="http://www.sdforum.org/index.cfm"&gt;SD Forum&lt;/a&gt; about the architecture of "Open eBay", the platform for developers to deploy their application inside eBay.com.&amp;nbsp; You can an &lt;a href="http://www.sdforum.org/index.cfm?fuseaction=Calendar.eventDetail&amp;amp;eventId=13536&amp;amp;nodeID=1"&gt;abstract and detailed information here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-872157451414882254?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/872157451414882254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2009/10/sdforum-talk-on-open-ebay.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/872157451414882254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/872157451414882254'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2009/10/sdforum-talk-on-open-ebay.html' title='SDForum Talk on Open eBay'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3442944337117380119.post-5503389555371714772</id><published>2009-03-31T22:12:00.000-07:00</published><updated>2010-03-29T20:56:19.557-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Talks'/><title type='text'>2009 Web 2.0 Talk @ SF</title><content type='html'>I will be giving a &lt;a href="http://www.web2expo.com/webexsf2009/public/schedule/detail/8677"&gt;talk @ SF, Web 2.0 introducing the new eBay Open Platform&lt;/a&gt;. This is a platform based on Gadget/OpenSocial and opens up eBay's Selling Manager to all 3rd party developers.&lt;br /&gt;&lt;br /&gt;Look for this platform to be used in wider scope at eBay to open up other areas of the site including buying flows to 3P apps.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3442944337117380119-5503389555371714772?l=softwareforallseasons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwareforallseasons.blogspot.com/feeds/5503389555371714772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://softwareforallseasons.blogspot.com/2009/03/2009-web-20-talk-sf.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/5503389555371714772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3442944337117380119/posts/default/5503389555371714772'/><link rel='alternate' type='text/html' href='http://softwareforallseasons.blogspot.com/2009/03/2009-web-20-talk-sf.html' title='2009 Web 2.0 Talk @ SF'/><author><name>Farhang (@farhangkassaei)</name><uri>http://www.blogger.com/profile/10216650661623100973</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
