opensocial.weekendapps:upcoming myspace features

– os templates

– iframes

– multi-invite modal

– asynch notifications w/o confirmation modals

– osml

– lightweight js lib osapi.*

– activites

— apps can post to friends’ update feeds

– notifications

— app to person messages

— customizable templates

– rich media support

— photo uploads

– osml

— data piplining

— replace 20 lines of js w/ a single osml tag

— custom tags

— subviews for navigation w/in a view

– look for preso on slideshare

opensocial.weekendapps: kevin’s intro

– portable contacts maps directly to opensocial profile (?)
– data store
– activities
– scaling: opensocila handles the db interface
– users have expectations re. what to see in a given container
– makeing assumptions
— the owner need not be a person
— the viewer need not be logged in
— personal dashboard -> owner = viewer
– types of container
— any web site is a container
— friend connect
— good for rapid prototyping
– open stack
— openid
— user proves he ownes a url
— xrds
— a means for navigating from the openid-verified url
— oauth

– opensocila dev app
– templates
— like fbml
— full impl @
– eclipse opensocial

opensocial.weekendapps: monetization using virtual currency panel

– a lot of code gets thrown out -> if you see yourself writing a lot of code or spending a lot of time on a feature, stop.

– most of the panelists make all their money on virtual money and almost no money on banner ads

– take advantage of best-practices

— gift giving

— reverse bell-curve pricing to qty sold

— limited edition goods

— aftermarket for virtual goods

– create and control scarcity

— check out user-generated scarcity

– create games across profiles

– don’t raise prices.ย  set expectations and leave yourself an open door by saying items are offered at this price only for a limited time

– offerpal?

– currency inflation

— ingame currency vs outside market

— use metrics to track sinks and sources

App Engine Y!AP app that pushes updates via OpenSocial JS API


  1. create App Engine app
  2. edit to look like the code below and deploy
  3. create YAP app
  4. set app base url to
  5. preview your app
import wsgiref.handlers
from google.appengine.ext import webapp

class ExampleHandler(webapp.RequestHandler):
	def post(self):
		html = """
		var postActivity = function(title, body) {
				var params = {};
				params[opensocial.Activity.Field.TITLE] = title;
				params[opensocial.Activity.Field.BODY] = body;
				var activity = opensocial.newActivity(params);
			handleResponse = function(response){

				var viewer = response.get('viewer').getData(),
					name = viewer.getDisplayName();

					name + ' posted an update ...',
					'... using OpenSocial!'
			getViewerData = function() {
				var req = opensocial.newDataRequest();
			  	req.add(req.newFetchPersonRequest("VIEWER"), "viewer");

		//this is the bare minimum code to push updates
		var params = {};
		params[opensocial.Activity.Field.TITLE] = 'title';
		params[opensocial.Activity.Field.BODY] = 'body';
		var activity = opensocial.newActivity(params);

		//this is a slightly enhanced update flow

		self.response.headers['Content-Type'] = 'text/html'

application = webapp.WSGIApplication(
	[('/example', ExampleHandler)],

def main():

if __name__ == '__main__':

AppEngine unconference

free, scalable hosts:
— free up to 5m page views per mo

–enforces constraints optimized for scalability







—uses the same cloud-access points as are available within Google

–moving forward

—map appengine SDK to hadoop