building great app experiences by with scalable cloud services - david poll

67
Parse David Poll @depoll Thursday, May 9, 13

Upload: xamarin

Post on 15-Jan-2015

438 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

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

ParseDavid Poll @depoll

Thursday, May 9, 13

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

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

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

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

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

mobile apps are

HARDThursday, May 9, 13

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

Database

Thursday, May 9, 13

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

Database REST API

ZZZ

+

Thursday, May 9, 13

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

Database REST API

ZZZ

Server++

+ users+ security

Thursday, May 9, 13

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

Database REST API

ZZZ

Server++

+ users+ security

Networking

Thursday, May 9, 13

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

Database REST API

ZZZ

Server++

+ users+ security

CachingNetworking

+

Thursday, May 9, 13

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

Database REST API

ZZZ

Server++

+ users+ security

CachingNetworking

+ +

The fun stuff!

Thursday, May 9, 13

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

Database REST API

ZZZ

Server++

+ users+ security

CachingNetworking

+ +

The fun stuff!

Thursday, May 9, 13

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

Database REST API

ZZZ

Server++

+ users+ security

CachingNetworking

+ +

The fun stuff!

nono no

no

no

yes!

Thursday, May 9, 13

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

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

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

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

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

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Thursday, May 9, 13

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

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Thursday, May 9, 13

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

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Thursday, May 9, 13

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

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Thursday, May 9, 13

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

iOS Android

JavaScript REST API

OS X

Windows 8Windows Phone 8

Thursday, May 9, 13

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

DATASaving stuff in the

Thursday, May 9, 13

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

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

Thursday, May 9, 13

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

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

Thursday, May 9, 13

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

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Demo: Saving your first ParseObject

Thursday, May 9, 13

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

So what about locations?

Thursday, May 9, 13

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

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

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

And ?

Pictures

Thursday, May 9, 13

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

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

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

THE DATA BROWSERWorking with your data is

easy!

Thursday, May 9, 13

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

Thursday, May 9, 13

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

USERSThe in your app

Thursday, May 9, 13

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

Sign up a user

Thursday, May 9, 13

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

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

await user.SignUpAsync ();

Thursday, May 9, 13

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

Sign up a user

Login a user

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

await user.SignUpAsync ();

Thursday, May 9, 13

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

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

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

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Demo: User Signup/Login

Thursday, May 9, 13

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

What about sharing on Facebook?

Thursday, May 9, 13

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

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

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

Thursday, May 9, 13

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

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

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

Thursday, May 9, 13

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

QUERIESGetting stuff from the

Thursday, May 9, 13

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

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

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

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

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

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

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

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Demo: Rich Queries

Thursday, May 9, 13

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

RELATIONSIt’s better together

Thursday, May 9, 13

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

var comment = new ParseObject("Comment");

comment["user"] = ParseUser.CurrentUser;

Thursday, May 9, 13

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

var user = ParseUser.CurrentUser;

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

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

await user.SaveAsync();

Thursday, May 9, 13

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

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

It’s code in the

Thursday, May 9, 13

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

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

It’s JavaScript in the Cloud

Thursday, May 9, 13

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

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Thursday, May 9, 13

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

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

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

});

Thursday, May 9, 13

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

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

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

});

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

Thursday, May 9, 13

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

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

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

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

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

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

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

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Is that it...?

Thursday, May 9, 13

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

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Thursday, May 9, 13

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

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

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

});

Thursday, May 9, 13

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

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

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

});

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

Thursday, May 9, 13

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

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

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

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

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

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

Demo: Cloud Code

Thursday, May 9, 13

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

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001

What about 3rd party APIs?

Thursday, May 9, 13

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

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

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

1000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110011000101010101000101100011001110001001100101001111000111001010111000111000101010101101000101010010101010101010101111001010011011011010101100100100010011010101010111010110110000100100101010101110010101011101011011000010010010101010111001100010101010100010110001100111000100110010100111100011100101011100011100010101010110100010101001010101010101010111100101001101101101010110010010001001101010101011101011011000010010010101010111001Thursday, May 9, 13

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

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

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

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

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

ParseDavid Poll @depoll

Thursday, May 9, 13