Showing posts with label Architecture. Show all posts
Showing posts with label Architecture. Show all posts

Friday, April 03, 2009

Enterprise Collaboration at Scale

Ideo is presenting their learnings from operating in a collaborative manner at scale.

Common Enterprise Collaboration Issues:

  • Sharing between multiple locations is difficult.
  • Communications get locked in silos in hierarchical organizations

Most organizations think about technology first:

  • Blogs
  • Wikis
  • Crowdsourcing
  • Social Networking
  • Telepresence
  • Real-Time Collaboration software

The issue is that ROI does not appear because of other factors:

  • Rewards
  • Culture
  • Organization Design
  • Knowledge Sharing
  • Content
  • Achieving Adoption
  • Abilities
  • Systems Design

Design Thinking: Starts and ends with individuals

  • Culture
  • Behaviors
  • Motivations
  • Social Interactions

Human Factors link with technology Factors and Business Factors.

Understand these factors, then brainstorm and prototype then develop:

i.e. Understand, Explore and Develop.

Ideo experimented with Video conferencing by leaving it on all the time. eg. in team rooms and in public places.

Telepresence hasn't worked out effectively. Eye contact doesn't work.

Instead they experimented with adding an iMac on the table in the and a videographer.

May be they should look at Microsoft Roundtable which rpovides a 360 degree panoramic view.

It is hard to get data out of peoples heads and in to Databases. It looses the context that makes it valuable.

Instead connect brains by creating:

  • Intuitive interfaces
  • Reward individual participation
  • Automatic navigation
  • No training setup

iPhone - 6.5% market share for smartphones yet 63% of all mobile browsing.

  • Go where people already are
  • Build Adaptive systems

You can't just deploy a system and be done.

Prototype early and prototype in context. Then iterate quickly.

Create Adaptive Intuitive People Centric systems that reward individual participation and integrate in to their daily workflow.

After five successive attempts at implementation they have implemented ThoughtFarmer

They wrote their own wrapper using Ruby on Linux. The blogging is built on SixApart's MoveableType's platform.

IDEO implements security based upon Trust and a 3 category qualification: Green = Open, Red = Internal only, Black = partitioned due to sensitivity eg. Customer anonymity or conflicts of interest across teams. The Wiki is for Green and Red projects.

Getting people to write valuable people and project pages:

To address this utilize:

  • Recognition
  • Project Staffing
  • Career Development

This is leading to input to organizational design.

The Tools are a natural part of the workflow. eg. a digest of project status rather than dealing with email.

People are bad at describing tacit knowledge. This is what led to a focus on connecting people. People leave so they are working on extending tools through to Ideo affiliates (ie. clients, partners and alumni)

Tiers of knowledge Management (from McKinsey)

  • Friction points (new infrastructure to address)
  • Behavior change (harder to do but builds on new infrastructure)

Wednesday, April 01, 2009

Web 2.0 Expo Day One Proper

Today is the start of the Web 2.0 Expo conference. It is going to be a busy day. I am looking forward to catching Jay Parkinson talking about new business models in Health 2.0.

To warm up I am attending a session by Dave Engberg on Sync-ing between web and client applications. Dave is CTO of Evernote - a hybrid note taking application.



In building a hybrid app Evernote went with full replication and synchronization.
They chose to have one master copy with the option of multiple slaves.
They also chose to use n intelligent update scheme that records an object's state and replicate using update sequence numbers. There is also no locking of records. ie. You don't block the web app from working while a sync takes place.
Their hybrid approach means that they can deal with the disconnected client, eg. while on a plane.
But how do they deal with phone devices when they don't have capacity for a full copy of the client's data. Evernote's Single Master design leverages the IMAP interaction model.The service is the ultimate arbiter.The Replication model uses Update Sequence Numbers. This leverages the Active Directory model.
Time to drop out of this session and head to Web 2.Open.


Tuesday, March 31, 2009

SocialWeb at Web 2.0 Expo

What has been happening with Data Portability on the Social Web. ie. OpenID, OAuth, etc.

The workshop is being run by @chrismessina, @daveman692 and @jsmarr

I will twitter comments from this session using the tag #w2e_sw

If you want to build new and innovative services you don't want to frustrate your users by asking for a bunch of account related data. If the data is out there go and get it. Don't Re-Key!

You need standards to enable mashups. Alternatively, you need consistent formats.

If standards exist - use them!

http://www.oxyweb.co.uk/blog produced a world map of popular social networks. This struck me as a great parallel to the HealthCare world with incompatible/competing health care players.

Functional sites, like Friendfeed, Twitter, last.fm and Dopplr represent specialist services. They have the opportunity to create combined value but they need a social graph to create this.

Facebook solved this for many, as long as developers were prepared to live inside facebook.

Activity streams are an emerging standard. No logo yet.

XMPP is not that popular yet, although it is one of the pipes that Twitter implemented and search.twitter.com leveraged.

Partuza is an Open Social - social Network site that uses Apache Shindig.

Pinax is a platform for rapidly developing websites using social tools such as IM, chat,

The emerging theme is "Connect"

Facebook Connect, OpenSocial Connect.

New building blocks:

  • Who you are
  • Who you know
  • What's going on

These are aspects of the social ecosystem. These create the virtual circle of sharing/knowing.

The anatomy of "Connect":

  • Profile (id, accounts profiles)
  • Relationships (friends, followers)
  • Content
  • Activity
  • Goal (search and discovery)

Most sites are building on the Open Stack:

  • MySpace
  • Yahoo
  • Google
  • Plaxo
  • Microsoft

Supporting:

  • OpenID
  • XRDS-Simple
  • OAuth
  • PortableContacts
  • OpenSocial

Facebook is different but is matching these standards.

Why do this?:

- Why do people have to:

  • Create a new account on every service
  • Re-create their profile
  • Give away their password to every site that asks
  • Re-discover their friends
  • re-friend their friends
  • Learn new ways to share and communicate

Why do developers have to?:

  • Deal with forgotten passwords
  • create another profile form
  • Support every new service API that emerges
  • Force members to invite everyone they know
  • Implement and unsafe method to import contacts
  • Create widgets for incompatible social networks
  • Manually interpret feeds for activity streams

Industry trends:

  • User control of data
  • User centric web services
  • Locatin based services
  • Real time content delivery ubiquitous connectivity
  • Interoperable app platforms
  • content aggregation and syndication
  • increasing quantities of data to work with
  • democratization of digital media creation tools

How do customers benefit:

MySpace has built login with OpenID and OAuth to compete with Facebook Connect.

OpenID popup extension is being developed to simplify the user interface, ala facebook connect.

The emerging issue is that once an item has been made "public" on a social network it can't be withdrawn. If you withdraw an item it may still exist in other places that were connected to the original publishing location.

Demos:

Now for the technical stuff:

OpenID Demo:

Mapquest (owned by AOL). You can sign in to mapquest with OpenID.

In 2009 there are over 30,000 sites that let you login with OpenID (Relying sites). Growth from 20,000 in August 2008 and 10,000 in Jan 2008. (source: http://blog.janrain.com)

Implementing OpenID as a relying party (ie. accept OpenID)

Internally you need to map one or more openIDs to an internal account.

The OpenID User experience

Directed Identity is emerging as one solution to avoid need for users to know URLs.

At least there aren't too many major providers so the button option is still feasible.

Once people have become known to a site it is possible to tailor re-sign in based upon where a user has come from. eg. If they arrive from Gmail then assume a gmail account.

Personal Discovery standard is emerging, driven by EU demands.

The browser knows who you are so this may be a way to simplify login. This moves away from web sites trying to guess which accounts you use.

The Popup extension is emerging as a technique. The challenge is to avoid spoofing. People don't look at the URL bar.

Remember - you can use email address as an indicator of which OpenId providers to support.

Different sites have different account preferences. This leads to sites supporting multiple standards. eg. OpenID + facebook. At least supporting OpenId means you automatically support Yahoo, AOL, Google, MySpace and other popular sites.

Microformats are also important.

Microformats enable webpages to be an API.

Semantic information can be embedded in a page. Some of the oldest standards are hCard (vCard in HTML)

Use CSS classes to markup and style the data. Very simple way to markup information in existing web pages.

This is ideal for database driven sites because you can edit one output web page and apply a microformat to every database record that is displayed through that web page.

Twitter supports hCard and includes the rel=me setting. If you want your blog to be the top search result on your name in Google then add this value to your blog. Simply add rel="me" to a relevant link on your blog.

Discovery

The more you publish the more you need a way to identify what you are publishing as yours. Our desktop is moving out in to the cloud.

Identity enables discovery. XRDS-Simple "the name is more complex than the concept"

XRDS - defines services.

eg. OpenID, PortableContacts

eg. OpenID points to one service. PortableContacts points to Plaxo.

WordPress OpenID plugin supports creating XRDS file.

XRDS-Simple can be used for a personal discovery or for sites to publish their service endpoints

LRDD - Link-based Resource Descriptor Discovery (emerging work)

Authorization

Authorization is important so you don't have to make data public to make it portable.

Will OAuth work in a mobile mode? Yes!

iPhone example is FlightTrack Pro works with Tripit. The iPhone app uses OAuth and Safari to authorize the app on Tripit.com.

OAuth is a protocol for developing password-less APIs.

Plaxo was recently bought by Comcast. Comcast saw a 92% success rate with login using OpenID in collaboration with Google.

The Plaxo-Google connection uses a hybrid. They do the OpenID dance and also handle the OAuth token acquisition at the same time. They also collect and notify user on the basic information that will be used. eg. name and email address.

The Comcast-Google test worked so well that the business folks at Comcast wouldn't let them turn the experiment off!

OAuth can be used asynchronously to allow one user to give permission to someone else to gain access to their information. eg. Dave allows Chris to see his phone number in his contact record.

Relationships and Contacts

Rather than have to support writing to address book APIs for each major service they instead implement a standard protocol. That is PortableContacts. This builds on OAuth and vCard standards.

GMail now supports Portable Contacts. ie. No Google specific code is required to use information from the Google Addressbook.

OpenSocial REST People Protocol is now PortableContact compatible.

vCardDav compatibility is coming with IETF.

Linking Accounts

The XFN Microformat is being used to link accounts and services.

Add a Rel=Me link to connect pages on services..

You can also use Rel=Contact to identify friends.

Google's Social Graph API does this in a simple form. A demo is available.

Activity Streams

Activity Streams are in the realm of "LifeStreaming"

Friendfeed support approximately 59 services. Each was hand coded by Friendfeed.

Activity Streams is about creating a protocol that can be leveraged across sites.

Social Discovery. eg. Plaxo Pulse, LinkedIn network updates, Facebook status updates.

Messaging: Twitter, Yammer, Eventbox (desktop app)

Brand/Personal Monitoring: GetSatisfaction's Overheard searching Twitter.

Primitives: Active, Verb, Object

Actor, Verb Object (context)

Build on Standards

Use ATOM for lists. (aka feeds)

Activity Stream is using a derivation of ATOM to share streams.

Activity Streams is targeted to go in to OpenSocial.

Check out http://activitystrea.ms for the latest info.

Gadgets and OpenSocial

Allow applications to be added tomultiple sites. Write a gadget once and allow in to run on multiple sites. Over 700M users acorss multiple sites support OpenSocial from Myspace to Plaxo to Ning oor Orkut etc.

Shindig is an Apache incubator project for gadgets in OpenSocial.

You can also build OpenSocial apps in the Google AppEngine.

This standard simplifies Engineering integratin and allows developers to focus on PRODUCT integration - ie. How to fit in to the target environment. eg. Ning is different from MySpace.

Next Steps - Homework:

1. Markup existing Data

2. Stop leaking passwords

3. Support OpenID and OAuth

These tools are mature enough to enable simple integration across sites and business partners.

Check out theSocialWeb.tv for the latest news in the space.

Thursday, January 22, 2009

A Parallel Twitter Search Repository

I was reading the news about Twitter limiting API requests for developers to 20,000 per hour. There is a good assessment of the implications on the SocialToo blog. The foundation of Twitter's success has not been the service itself but rather the openness of the API. The API has encouraged developers to create innovative new services that address limitations in the core service. Throttling API calls may seem like a prudent move for Twitter, it could even be the harbinger of a business model, but it potentially hurts Twitter and the ecosystem in subtle but significant ways.

The throttle on the API makes it more difficult for companies to create business models that are based on Twitter. This will encourage more diversity and weaken Twitter's bid to become the ubiquitous communications utility.

If it is a harbinger of a new business model then I hope to see pricing tier details emerge that allow heavy users to raise the API call limits. If this comes to pass then Twitter will have to provide Service Level Agreements to go with this. If Twitter is going to do this they need to move quickly. If they fail to do so then the ecosystem will find a way to isolate the influence of Twitter.

I have been thinking about the Twitter business model for some time and suggested that throttling the API may be an early indicator of that (See my post from July 18th - Twitter's business model emerges?). People may be willing to pay for priority access - the stock quote model.

If Twitter does not move quickly to support the innovative applications that make Twitter so attractive then I have a suggestion to developers. Think on this....

If you are building a business around the Twitter API how about creating a shared search repository with an API that mirrors Twitter. Let's use the wisdom of the crowds to crowd source Twitter data.

What do I mean by this?

There must be a growing number of developers that are building applications that pull the same information from Twitter. The followers of the most popular twitterers, The tweets around the most popular trending topics. Who is following who....

What if the results of those API calls could be pooled in a cloud resource on the Google AppEngine or an Amazon EC2/S3 platform? If this information could be made accessible using the same API structure as Twitter then developers could modify their applications to check this resource first before using their valuable pool of API calls to Twitter. Then when a call is made to Twitter send the returned data to the cloud. If you think about it, the growing number of Twitter desktop clients have tremendous potential to build this parallel repository. What if TweetDeck or Twhirl had an option in their preferences to "Post Twitter search data to community repository"? As the number of desktop clients and users grew so would the power of the community repository.

Yes, there are probably a legion of technical issues to resolve in all this, but we are already seeing services like Identi.ca mirror and extend twitter functionality. If we want the Twitter ecosystem to thrive then developers need to work together to minimize the impact that the core Twitter service can have on their livelihoods.

What are your thoughts?

Tuesday, July 15, 2008

Rise of the Bookmarklet

One of the discussions at the VRM workshop got in to the mechanisms around implementing the RelButton

One of the suggestions was to implement plug-ins. The problem is that plug-ins are browser specific and customers don't all know how to implement and use plug-ins.

An alternative is the Javascript bookmark.

I am not a fan of Plug-ins since these typically don't work on all browsers and also don't tend to work on mobile devices.

My preference is therefore for integration to be based around bookmarklets in any situation where capability has to be incorporated in to a browser.

What are your thoughts?

Is there another solution?

Wednesday, May 21, 2008

Architecture and Speedy Software Development

This evening I attended the Maryland Agile Project Leadership Network meeting. George Dinwiddie was presenting "There Must Be 50 Ways to Speed Up Software Development." This was a great interactive session that generated a lot of discussion.

I am not going to list the 51 ways George identified to speed up software development. I will leave that to him to post his presentation. However I would like to point out a couple from the list:

  • Always build a basic working system and then enrich it. That way you can always stop at any time.
  • Use short iterations and don't worry about knowing all the requirements up front. You can always enhance the requirements in future iterations.
  • If you don't know who will test a feature then don't build it. It is unlikely to get used.
  • Optimize globally not locally
  • De-phase the process. In other words don't do all requirements first then all coding. Instead iterate more frequently in smaller chunks of functionality.
  • If you are struggling to get work done in a 4 week or longer cycle then shorten the cycle. Two week cycles may be a good length to use.
  • Look at Test Driven Development and Test Immediately.

When I put my Architecture hat on I realize that there is one way to speed up development that was not really addressed during the discussion:

  • The fastest software development occurs when software development is not required.

This is really what good architecture, whether enterprise or solutions architecture, is all about. If you can deliver functionality without requiring custom software development then that may indeed be the most effective acceleration technique.

This is one of the critical values that a good Enterprise Architecture and experienced Enterprise and Solutions Architects bring to an organization. The most effective results often come from what doesn't have to be done. In other words, using what already exists in a flexible architecture to deliver against requirements without developing new functionality.

In a world where Software-As-A-Service is becoming more commonplace and where the various Ruby-on-Rails, Grails or similar Model-View-Controller frameworks become more popular it becomes more realistic for functionality to be delivered through configuration rather than custom code. If you are developing in Ruby-on-Rails is there a Gem already available to provide the functionality you require in your application?

Can you use an internal or external web service to deliver the data or functionality you require?

One of the challenges I have is to look at how the Enterprise Architecture value can be measured. This is a fascinating issue. If you are an IT Architect and have addressed these issues I would love to hear about your experiences.