Building great app experiences by with scalable cloud services - David Poll

Post on 15-Jan-2015

438 views 0 download

Tags:

description

 

transcript

ParseDavid Poll @depoll

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Building Great Experiences With Scalable Cloud Services

• What is Parse?• Saving data• Managing users• Rich querying• Going beyond the client

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

About Me

• Software Engineer, Parse• In a past life, I was...

• Program Manager, Microsoft Silverlight• Software Engineer, Google

• Avid a cappella enthusiast• I have app!

Thursday, May 9, 13

mobile apps are

HARDThursday, May 9, 13

Database

Thursday, May 9, 13

Database REST API

ZZZ

+

Thursday, May 9, 13

Database REST API

ZZZ

Server++

+ users+ security

Thursday, May 9, 13

Database REST API

ZZZ

Server++

+ users+ security

Networking

Thursday, May 9, 13

Database REST API

ZZZ

Server++

+ users+ security

CachingNetworking

+

Thursday, May 9, 13

Database REST API

ZZZ

Server++

+ users+ security

CachingNetworking

+ +

The fun stuff!

Thursday, May 9, 13

Database REST API

ZZZ

Server++

+ users+ security

CachingNetworking

+ +

The fun stuff!

Thursday, May 9, 13

Database REST API

ZZZ

Server++

+ users+ security

CachingNetworking

+ +

The fun stuff!

nono no

no

no

yes!

Thursday, May 9, 13

Database REST API

ZZZ

Server++

+ users+ security

Networking+ +

The fun stuff!

nono no

no

no

yes!

+

REST API

Z ZZ

Server++

no

noParseThursday, May 9, 13

Database REST API

ZZZ

Server++

+ users+ security

Networking+ +

The fun stuff!

nono no

no

no

yes!ParseFiles

Objects

GeoPoints

Facebook

Queries

Queries

Cloud Code

ACLs

UI Components

Security

Data Browser

REST API

Images

Users

JavaScript

Android

Emails

AndroidRoles

SDKs

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Thursday, May 9, 13

iOS Android

JavaScript REST API

OS X

Windows 8Windows Phone 8

Thursday, May 9, 13

DATASaving stuff in the

Thursday, May 9, 13

var comment = new ParseObject ("Comment");comment ["text"] = "Great pic!";comment ["user"] = ParseUser.CurrentUser;await comment.SaveAsync ();

Thursday, May 9, 13

var comment = new ParseObject ("Comment");comment ["text"] = "Great pic!";comment ["user"] = ParseUser.CurrentUser;await comment.SaveAsync ();

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Demo: Saving your first ParseObject

Thursday, May 9, 13

So what about locations?

Thursday, May 9, 13

var comment = new ParseObject ("Comment");comment ["text"] = "Great pic!";

comment ["user"] = ParseUser.CurrentUser;await comment.SaveAsync ();

var evolve = new ParseGeoPoint (30.265348, -97.738613);comment ["location"] = evolve;

Thursday, May 9, 13

And ?

Pictures

Thursday, May 9, 13

var picture = new ParseObject ("Picture");picture ["title"] = "What?! Parse is Evolving!";

picture ["image"] = imageFile;await picture.SaveAsync ();

var imageData = GetStreamForImage (image);var imageFile = new ParseFile ("evolving.png", imageData);await imageFile.SaveAsync ();

Thursday, May 9, 13

THE DATA BROWSERWorking with your data is

easy!

Thursday, May 9, 13

Thursday, May 9, 13

USERSThe in your app

Thursday, May 9, 13

Sign up a user

Thursday, May 9, 13

Sign up a uservar user = new ParseUser { Username = "Apps", Password = "r0ck"};

await user.SignUpAsync ();

Thursday, May 9, 13

Sign up a user

Login a user

var user = new ParseUser { Username = "Apps", Password = "r0ck"};

await user.SignUpAsync ();

Thursday, May 9, 13

Sign up a user

Login a user

var user = new ParseUser { Username = "Apps", Password = "r0ck"};

await user.SignUpAsync ();

await ParseUser.LogInAsync ("Apps", "r0ck");var current = ParseUser.CurrentUser;

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Demo: User Signup/Login

Thursday, May 9, 13

What about sharing on Facebook?

Thursday, May 9, 13

Facebook Usersawait ParseFacebookUtils.LinkAsync (ParseUser.CurrentUser, facebookId, accessToken, expiration);

await ParseFacebookUtils.LogInAsync (facebookId, accessToken, expiration);

Thursday, May 9, 13

Facebook Usersawait ParseFacebookUtils.LinkAsync (ParseUser.CurrentUser, facebookId, accessToken, expiration);

await ParseFacebookUtils.LogInAsync (facebookId, accessToken, expiration);

Thursday, May 9, 13

QUERIESGetting stuff from the

Thursday, May 9, 13

var query = ParseObject.GetQuery("Picture") .WhereEqualTo("user", ParseUser.CurrentUser) .WhereGreaterThan("createdAt", DateTime.Now - TimeSpan.FromDays(7));

IEnumerable<ParseObject> pictures = await query.FindAsync();

Thursday, May 9, 13

var query = ParseObject.GetQuery("Picture") .WhereEqualTo("user", ParseUser.CurrentUser) .WhereGreaterThan("createdAt", DateTime.Now - TimeSpan.FromDays(7));

IEnumerable<ParseObject> pictures = await query.FindAsync();

Or, if you’re using Xamarin.Android...

Thursday, May 9, 13

var query = ParseObject.GetQuery("Picture") .WhereEqualTo("user", ParseUser.CurrentUser) .WhereGreaterThan("createdAt", DateTime.Now - TimeSpan.FromDays(7));

IEnumerable<ParseObject> pictures = await query.FindAsync();

Or, if you’re using Xamarin.Android...

var query = from pic in ParseObject.GetQuery ("Picture") where pic ["user"] == ParseUser.CurrentUser where pic.CreatedAt > DateTime.Now - TimeSpan.FromDays (7) select pic;

IEnumerable<ParseObject> pictures = await query.FindAsync ();

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Demo: Rich Queries

Thursday, May 9, 13

RELATIONSIt’s better together

Thursday, May 9, 13

var comment = new ParseObject("Comment");

comment["user"] = ParseUser.CurrentUser;

Thursday, May 9, 13

var user = ParseUser.CurrentUser;

var relation = user.GetRelation<ParseUser>("following");

relation.Add(newFriend);relation.Add(anotherFriend);

await user.SaveAsync();

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

It’s code in the

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

It’s JavaScript in the Cloud

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Parse.Cloud.define("averageLikes", function(request, response) {

});

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Parse.Cloud.define("averageLikes", function(request, response) {

});

  var query = new Parse.Query("Photo");  query.equalTo("user", Parse.User.current());

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Parse.Cloud.define("averageLikes", function(request, response) {

});

  var query = new Parse.Query("Photo");  query.equalTo("user", Parse.User.current()); query.find({

  });

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Parse.Cloud.define("averageLikes", function(request, response) {

});

  var query = new Parse.Query("Photo");  query.equalTo("user", Parse.User.current()); query.find({

  });

    success: function(results) {      var sum = 0;      for (var i = 0; i < results.length; ++i) {        sum += results[i].get("likes");      }      response.success(sum / results.length);    },

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Parse.Cloud.define("averageLikes", function(request, response) {

});

  var query = new Parse.Query("Photo");  query.equalTo("user", Parse.User.current()); query.find({

  });

    error: function() {      response.error("Oops, something went wrong.");    }

    success: function(results) {      var sum = 0;      for (var i = 0; i < results.length; ++i) {        sum += results[i].get("likes");      }      response.success(sum / results.length);    },

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Is that it...?

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Parse.Cloud.beforeSave("Comment", function(request, response) {

});

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Parse.Cloud.beforeSave("Comment", function(request, response) {

});

  var text = request.object.get("text");

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Parse.Cloud.beforeSave("Comment", function(request, response) {

});

  var text = request.object.get("text");

if (text.length > 140) { request.object.set("text",text.substring(0,137 + "..."); }

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Parse.Cloud.beforeSave("Comment", function(request, response) {

});

  var text = request.object.get("text");

if (text.length > 140) { request.object.set("text",text.substring(0,137 + "..."); } response.success();

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Demo: Cloud Code

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

What about 3rd party APIs?

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Parse.Cloud.httpRequest({   url: 'http://www.parse.com/',   success: function(httpResponse) {     console.log(httpResponse.text);   },   error: function(httpResponse) {     console.error('Request failed: ' + httpResponse.status);   }});

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Building Great Experiences With Scalable Cloud Services

• What is Parse?• Saving data• Managing users• Rich querying• Going beyond the client

Thursday, May 9, 13

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Resources

• Parse Xamarin Platform Page: http://www.parse.com/xamarin• .NET Guide: http://www.parse.com/docs/dotnet_guide• API docs: http://www.parse.com/docs/dotnet/api• Twitter: @depoll or @ParseIt

Thursday, May 9, 13

ParseDavid Poll @depoll

Thursday, May 9, 13