Friday, 26 February 2010

Orkut

Orkut is a social networking site with more than 37 million total members, the majority of which are Brazilian, followed smaller numbers of users from India and the United States, mainly in the 18-30 demographic.

The site is owned and operated by Google and is named after its creator, Google employee Orkut Büyükkökten.

For OpenSocial development, Orkut is an attractive platform, despite its niche demographic (mainly Brazilians under 30) - because it is very easy to set up a developer "sandbox" account that can be used to explore deployment of OpenSocial applications that integrate with data from the Icodeon Common Cartridge Platform.

Once the an application has been developed in the Orkut "sandbox", the same application can be deployed to other platforms- such as MySpace - where perhaps the development environment is less comfortable to use or harder to set up.

You first need to sign up for a standard Orkut account and then for a "sandbox" at the following location: http://sandbox.orkut.com/SandboxSignup.aspx.

All that is required is name, company name and email - and you are ready to start deploying OpenSocial apps to  "sandbox" - see screen shot above right and click for full size image.

The screenshot  on the left shows an application deployed to Orkut that intgerates data and functionality from the social network with data from a discussion topic deployed to the Icodeon Common Cartridge Platform.

Click for full size image.
















Tuesday, 23 February 2010

Content Delivery


For internet applications that make heavy use of static content, there are a number of solutions that can be used to improve performance - by reducing load on the web server that is managing the dynamic content and by moving static content to the shortest network distance from the requesting client.

Content Delivery Networks (CDNs) are commercially available as sets of grid computers - to free up resources from the server that manages the dynamic content and produce a fast response time for the client through caching and local geographic proximity.

The Icodeon Common Cartridge Platform has a static content hosting plug-in architecture so that plug-ins for different hosting solutions and  CDNs can be added.

For example, the platform is provided with a default plug-in that uses the Amazon S3 Simple Storage hosting service for all static content from within a cartridge.

When a request is made to the Icodeon platform, the dynamic content (XML, JSON) representation is returned, but all references to static content (images, media files, styles sheets and so on) are re-written by the static content hosting plug-in to point out to the hosting service or CDNs.

In the screen shot below of a MySpace app the dynamic content is created both by the Icodeon Platform and the social network site (using a web application hybrid mashup design) - but the references images and attachments are re-written to be requested from the hosting service or CDN:

 The requests made to the  hosting service or CDN are also time stamped - so that the actual URL used to request the static content will expire - protecting the cartridge resources, the images and attachments, from being used outside their intended apps and domains.






Monday, 22 February 2010

Overview

Most implementations of IMS Common Cartridge are within Learning Management Systems.

The Icodeon Common Cartridge Platform takes a radically different approach, and provides a powerful set of web service defintions.

These web services provide a set of building blocks to enable developers to construct e-learning tools for learning management systems, websites, blogs, wikis, mobile applications and social networking sites. Download an overview presentation here

.

Sunday, 21 February 2010

MySpace

MySpace is a social networking website - a popular web destination that allows users to interact and share data based around permissions granted to photos, comments and other items with site "friends".

MySpace became the most popular social networking site in the United States in June 2006, with a strong demographic of US teenagers. The 100 millionth account was created on My Space during August 2006 and currently has about 20 million users.

MySpace was also one of the initial launch partners for OpenSocial - the set of Web APIs for working with Social Network data. You can read more about OpenSocial here.

The set of Web APIs used by the Icodeon Common Cartridge Platform closely mirrors the Web APIs used in OpenSocial - which opens up an opportunity for writing  apps that integrate e-learning content into group, peer, collaborative and social contexts.

The IMS Common Cartridge specification includes a schema for an intstructor to set up a discussion topic - with rich HTML formatting, images, links and attachments. The XML below conforms to this schema, and could be added to a cartridge:

<dt:topic xmlns:dt="http://www.imsglobal.org/xsd/imsdt_v1p0">
 <title>The Psychology of Faces</title>
 <text texttype="text/html">
   Might there be a culture in the world that expresses joy 
through scowling and fear through laughter? Does your dog 
smile when he's happy?<br/>
<img src="$IMS-CC-FILEBASE$../I_media_R/smiling_dog.jpg"/>
</text>
<attachments>
  <attachment href="angry_person.jpg"/>
 </attachments>
</dt:topic>

It is simple for an OpenSocial app to construct an HTTP request to the Icodeon Common Cartridge Platform - which then responds with a data format (OpenSocial JavaScript Object Notation, OpenSocial XML or OpenSocial ATOM) that can easily processed into the MySpace app canvas:

GET /cartridges/{cartridge}/items/{item}/topics/psychology101

The result is a Common Cartridge discussion with all the specificed rich HTML formatting, images, links and attachments running in a group, peer, collaborative and social context.

The discussion posts are persisted to the Icodeon Common Cartridge Platform - the discussion can be concluded when the instructor decides and a transcript of the discussion printed off from the Icodeon platform - either for assessment/grading or for classroom use.

The resulting discussion running in MySpace  is shown below - click for full-size image.

Saturday, 20 February 2010

Open Social


Good teachers have always recognised that they require of variety of teaching methods - and that their students will have a variety of learning styles.

In addition, some topics are best learnt with one type of teaching method and learning style - but this approach may not be best for a different topic.

Recently, there has been recoginition that learning that takes place within a group, peer, collaborative or social environment can be an important teaching and learning style.

OpenSocial is a set of definitions and practices that enable developers to work with the kind of data that is used in social networks.


 These definitions and practices align well with the Icodeon Common Cartridge Platform when developers wish to use the platform to build e-learning tools for pedagogies that include a group, peer, collaborative or social dimension.

The OpenSpocial definitions enable developers to:
  • build apps that run within social network applications.
  • build apps that run outside social network applications, but use data from social networks.
OpenSocial is currently being developed by a broad set of members of the web community. The ultimate goal is for any social website to be able to implement the OpenSocial and host 3rd party social applications. There are many organizations, projects and web sites that support OpenSocial, including:
  • LinkedIn
  • MySpace
  • Ning
  • Google
  • Netlog
  • Apache Shindig
  • Yahoo!
  • Hi5
Read more about OpenSocial here.

Read more about the open source  Apache Shindig project currently undergoing incubation at the Apache Software Foundation.

The OpenSocial set of definitions include:
  • a URL language for creating HTTP requests.
  • a schema for defining the representations returned by the HTTP response.
The definitions align nicely with the Icodeon Common Cartridge Platform which also has a URL language and a set of representations.

For example, compare the OpenSocial request for a list of posts made by a user to a social network activity stream:
GET /activities/@viewer/@self
with the Icodeon Common Cartridge Platform request for the first post made by a user to a Common Cartridge discussion topic:
GET /cartridges/{cartridge}/items/{item}/topics/
{context}/activities/@first
and compare the response from a social network:
<activity xmlns="http://ns.opensocial.org/2008/opensocial">
  <title>My Status</title>
  <updated>2008-02-20T23:35:37.266Z</updated>
  <body>Studying this evening for that new psychology 
course on human emotional states. Hard work - but 
worth the effort I hope!</body>
  <userId>example.org:34KJDCSKJN2HHF0DW20394</userId>
</activity>
with the response from the Icodeon platform:
<activity xmlns="http://ns.opensocial.org/2008/opensocial">
  <id>233778</id>
  <title>My Comment on Psychology Course</title>
  <updated>2010-01-20T23:45:27.126Z</updated>
  <body>I think recognition of human emotional states is 
learned and not innate. There could be a culture in the world 
that expresses joy through scowling and fear through 
laughter!</body>
  <userId>example.org:34KJDCSKJN2HHF0DW20394</userId>
</activity>
The two example responses above, one from a social network and one from the Icodeon Common Cartridge Platform, can be equally parsed using the jquery-opensocial library. For example, the jquery code below works equally well with either of the responses:
  $.ajax({
    url: '/activities/@viewer/@self',
    data: {},
    dataType: 'data',
    success: function(activities) {
      $.each(activities, function(i, activity) {
        console.info(activity.title);
        $.each(activity.mediaItems, function(i, mediaItem) {
           console.log(mediaItem.mimeType);
           console.log(mediaItem.url);
         });
      });
    },
    error: function(xhr, status, e) {
      console.info(xhr, status, e);
    }
  });
This alignment between the OpenSocial definitions and the defintions used for the Icodeon Common Cartridge Platform has two major implications:
  • code libraries used for OpenSocial can be re-used when building e-learning tools with the Icodeon Common Cartridge Platform. The jquery-opensocial library is an excellent example.
  • response representations from the Icodeon Common Cartridge Platform are easily "mashed-up" into social nework apps to create learning tools that exisit with the social, peer, group or collaborative learing context.