Slide 1

Slide 1 text

Ingredients for Mobile Success DalMob Conclave – September 2012

Slide 2

Slide 2 text

Hi. Chris Voss John Tornow @tophervoss @jdtornow

Slide 3

Slide 3 text

Get going Designing Building Shipping

Slide 4

Slide 4 text

Getting Started

Slide 5

Slide 5 text

Choosing a platform is still a difficult decision.

Slide 6

Slide 6 text

vs. Technologies you know Shared platforms Ubiquitous Rapid deployment No install needed Write once, test everywhere Mobile Web Faster Experiences are usually better Offline access Access device hardware App Stores Write everywhere, test everywhere Native

Slide 7

Slide 7 text

Your decision isn’t set in stone.

Slide 8

Slide 8 text

Choose a platform. Launch. Iterate.

Slide 9

Slide 9 text

Designing the Experience

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

Think mobily.

Slide 12

Slide 12 text

Think mobily mobilier.

Slide 13

Slide 13 text

Think mobily mobilier mobile.

Slide 14

Slide 14 text

Where will they be using your app?

Slide 15

Slide 15 text

Don’t just mirror an existing website.

Slide 16

Slide 16 text

Is this critical information the user needs right now?

Slide 17

Slide 17 text

Focus on the primary tasks

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

Make it obvious how to accomplish the tasks

Slide 20

Slide 20 text

Make it obvious what the user should do next

Slide 21

Slide 21 text

Make it obvious what the user should do next

Slide 22

Slide 22 text

Make accomplishing a task fun

Slide 23

Slide 23 text

Sweet! It looks just like the “Find My Friends” book I had growing up!

Slide 24

Slide 24 text

Developing for the Mobile Web

Slide 25

Slide 25 text

The “Modern” mobile Web is really complicated.

Slide 26

Slide 26 text

About 90% of “modern” mobile web is WebKit 6% 2% 89% 3% Opera WebKit IEMobile Other Source: http://gs.statcounter.com

Slide 27

Slide 27 text

It’s ok to assume WebKit. But don’t count on it.

Slide 28

Slide 28 text

50% of mobile users abandon a page if it doesn’t load in 10 seconds or less.

Slide 29

Slide 29 text

Web page performance is crucial.

Slide 30

Slide 30 text

Don’t try to emulate native too much. Use the Web for what it is.

Slide 31

Slide 31 text

Avoid “all in one” frameworks.

Slide 32

Slide 32 text

Use CSS3 animations instead of JavaScript...

Slide 33

Slide 33 text

...but fall back to JavaScript if necessary.

Slide 34

Slide 34 text

Limit your JavaScript frameworks

Slide 35

Slide 35 text

Overkill? jQuery & jQuery UI Backbone.js Underscore.js Sammy.js Spine.js Knockout.js Ember.js

Slide 36

Slide 36 text

Use only what you need with micro-frameworks.

Slide 37

Slide 37 text

jQuery > Zepto ~8.4k ~32k

Slide 38

Slide 38 text

Use intelligent caching and page loading with pushState.

Slide 39

Slide 39 text

pushState + Ajax = pjax github.com / defunkt / pjax

Slide 40

Slide 40 text

Use “retina” grade graphics sparingly, and only for those that need them.

Slide 41

Slide 41 text

Getting a native app off the ground quickly

Slide 42

Slide 42 text

CocoaPods is the best way to manage library dependencies in Objective-C projects.

Slide 43

Slide 43 text

An example Podfile: platform :ios, '5.0' pod 'AFNetworking', '>= 0.5.1' pod 'NSString-LOLSpeak' pod 'iCarousel', :head target :test, :exclusive => true do pod 'GHUnit' end

Slide 44

Slide 44 text

Networking for iOS and OSX http://afnetworking.com pod search AFNetworking

Slide 45

Slide 45 text

Networking/Object mapping for iOS and Mac http://restkit.org pod search RestKit

Slide 46

Slide 46 text

ZUUIRevealController pod search ZUUI

Slide 47

Slide 47 text

Facebook SDK http://developers.facebook.com pod search Facebook

Slide 48

Slide 48 text

http://cocoapods.org (sudo) gem install cocoapods

Slide 49

Slide 49 text

http://parse.com

Slide 50

Slide 50 text

Parse Data Browser

Slide 51

Slide 51 text

iOS PFObject *post = [PFObject objectWithClassName:@”Post”]; post[@”title”] = @”Hello World”; [post saveInBackground];

Slide 52

Slide 52 text

Android ParseObject post = new ParseObject(“Post”); post.put(“title”, “Hello World”); post.saveInBackground();

Slide 53

Slide 53 text

Free for up to a million API requests and a million Push Notifications a month

Slide 54

Slide 54 text

Easy Push Notifications for iOS and Android

Slide 55

Slide 55 text

User Account Management

Slide 56

Slide 56 text

In-App Purchases for iOS

Slide 57

Slide 57 text

parse.com

Slide 58

Slide 58 text

Ship.

Slide 59

Slide 59 text

“On-time isn’t cool. You know what’s cool? Early.”

Slide 60

Slide 60 text

Break down big projects into bite size chunks.

Slide 61

Slide 61 text

Ship something at least every 90 days.

Slide 62

Slide 62 text

Daily communication is required.

Slide 63

Slide 63 text

Change is inevitable, roll with it.

Slide 64

Slide 64 text

Thanks. ovenbits.com / presenting / dalmob