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: joyent

– opensocial apps are free for 6 months

– servers run solaris

– netbeans supports php, java

– virtualbox?


– sun will be releasing a compute and storage cloud services

– joyent features

— root access

— php, ruby, etc.

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__':