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
— osda.appsot.com
– templates
— like fbml
— full impl @ ostemplates-demo.appspot.com
– eclipse opensocial
— eisbahn.jp/trac/osde

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

Usage:

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

class ExampleHandler(webapp.RequestHandler):
	def post(self):
		html = """
		
		//ref: http://developer.yahoo.com/yap/guide/opensocial-examples.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);
				opensocial.requestCreateActivity(
					activity,
					opensocial.CreateActivityPriority.LOW,
					function(){});
			},
			handleResponse = function(response){

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

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

		//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);
		opensocial.requestCreateActivity(
			activity,
			opensocial.CreateActivityPriority.LOW,
			function(){});

		//this is a slightly enhanced update flow
		getViewerData();

		
		"""
		self.response.headers['Content-Type'] = 'text/html'
		self.response.out.write(html)

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

def main():
	wsgiref.handlers.CGIHandler().run(application)

if __name__ == '__main__':
 main()

AppEngine unconference

free, scalable hosts:
-joyant/sun
-amazon
-appengine
— free up to 5m page views per mo

–enforces constraints optimized for scalability

—python

—BigTable

—GQL

–features

—memcache

—WSGI-compliant

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

–moving forward

—map appengine SDK to hadoop