SlideShare a Scribd company logo
Totally Build Apps for Free
*not really
Tony Hillerson ‱ Tack Mobile
Mobile+Web DevConf
San Francisco January 2015
Presentation tackmobile.com
slideshare.net/thillerson/totally-
build-apps-for-free-not-really
Presentation tackmobile.com
About Me
‱ Engineering Director, Tack Mobile
‱ Denver, CO
‱ Android (since Beta), then iOS (since ~ iOS 2)
‱ Various Server-side technologies
‱ Pragmatic Programmers Author
Presentation tackmobile.com
Goals for Today
‱ Very Modest Goal:
‱ Understand what cross-platform solutions get
you
‱ 
 and what they don’t
‱ Offer my experience on which types of cross-
platform solutions make sense
Presentation tackmobile.com
Like It Or Not

‱ Cross platform solutions are necessary
‱ I don’t like it

‱ But it’s the world we live in
‱ Be prepared
Presentation tackmobile.com
FAQ

Presentation tackmobile.com
If we use solution ‘X’, then we can
build an app for platform A‹
and get platform B‹
FOR FREE
Presentation tackmobile.com
FOR FREE,
RIGHT?
Presentation tackmobile.com
Solutions
‱ Cordova/Phonegap Based
‱ Titanium
‱ Xamarin
‱ Fuse Tools *NEW!
‱ React Native *SUPER BRAND NEW!
Presentation tackmobile.com
http://www.gartner.com/technology/reprints.do?id=1-20SX3ZK&ct=140903&st=sb
Presentation tackmobile.com
wut
Presentation tackmobile.com
Presentation tackmobile.com
Presentation tackmobile.com
People Want Answers
Presentation tackmobile.com
Presentation tackmobile.com
Presentation tackmobile.com
First, Let’s Talk About Native
‱ I strongly believe ‹
Native should be your default preference
Presentation tackmobile.com
Doesn’t HTML Solve Everything?
‱ Your Mobile Web is important
‱ A Good Mobile Web Experience is Table Stakes
‱ Web views replacing native - It’s just not the
world we live in yet.
Presentation tackmobile.com
Mobile UX Considerations
‱ Android users want Android conventions
‱ iOS users want iOS conventions
‱ Unless you have a good reason not to
‱ 
 and that reason shouldn’t be that you can’t
do it with your toolchain
Presentation tackmobile.com
What About These
Solutions, Then?
Presentation tackmobile.com
Mobile Development Strategies
‱ Mobile Web - i.e. no app
‱ Single Platform - i.e. iOS only
‱ Multi-platform
‱ Cross-Platform
Presentation tackmobile.com
What Are You Trying to Accomplish?
‱ Make a one-size-ïŹts-all app?
‱ Shield developers from learning a new
language or platform?
‱ Save money on development effort?
‱ Share code, but still build a great UX?
Presentation tackmobile.com
Cross Platform Strategies
‱ Web-view solutions
‱ Vendor Technology/APIs
‱ Native Compilation
Presentation tackmobile.com
Cross Platform Web
‱ PhoneGap/Cordova Based
‱ Strategy: Hide cross platform differences,
Write with web technologies‹
Run in web view
‱ Hard Questions:
‱ Does it look like a web app?
‱ Does it feel like a web app?
Presentation tackmobile.com
Cross Platform Interpreted
‱ Example: Titanium
‱ Strategy: Hide cross platform differences
behind a common, vendor API.‹
Write everything once with web technologies,
interpreted on native platforms
‱ Hard questions:
‱ How hard is it to ïŹt design to the platform?
‱ Do I get native performance and experience?
Presentation tackmobile.com
Cross Platform Native
‱ Example: Xamarin, React Native, RubyMotion
‱ Strategy: UniïŹed language and platform to
native APIs.‹
Runs in native runtime.‹
Write in one language, calling native APIs.
‱ Hard Questions:
‱ Do you trust the developer?
‱ Can they keep up?
Presentation tackmobile.com
A Syllogism
‱ Native applications are preferable to web
‱ and Native execution is preferable to interpreted
‱ and platform native APIs are preferable to vendor
APIs
‱ Cross platform native apps are native, executed,
and access native APIs
‱ Therefore: Cross native platforms are preferable
‱ QED
Presentation tackmobile.com
What’s For Free, Then?
Presentation tackmobile.com
React Native Dev Quote
‱ “We’re not chasing the write once, run
anywhere pipe dream”
‱ “Learn Once, Write Anywhere”
28:50 - http://youtu.be/KVZ-P-ZI6W4?t=28m50s
Presentation tackmobile.com
First, What’s Not Free?
‱ Platform speciïŹc design
‱ Platform speciïŹc expectations
‱ Technical discovery
‱ Licensing fees
Presentation tackmobile.com
The Free Part
‱ Shared code where it makes sense
‱ Common understanding across team(s)
Presentation tackmobile.com
Cross Platform Native Strategies
‱ Share http access
‱ Share local data layer
‱ Build to MVVM, share model and view model
Presentation tackmobile.com
Cherry-picking Shared Code
API Access Layer
+
Deserialization
iOS UIAndroid UI
Presentation tackmobile.com
Push the Shared Code as Far As You Can
API Access Layer
+
Deserialization
iOS UIAndroid UI
Common Data
Model Layer
Common View
Model Layer
Presentation tackmobile.com
Add Caching and Local Data
API Access Layer
+
Deserialization
iOS UIAndroid UI
Common Data
Model Layer
Common View
Model Layer
Local
Datastore
Presentation tackmobile.com
Abstract Platform Services
API Access Layer
+
Deserialization
iOS UIAndroid UI
Common Data
Model Layer
Common View
Model Layer
Local
Datastore
Location
Manager
CoreLocation
Injected Injected
Abstract Location
Manager
Presentation tackmobile.com
Xamarin as an Example
Presentation tackmobile.com
Xamarin
‱ Write in C# using .Net libraries
‱ Access Platform APIs directly
‱ Core project (shared code)
‱ Android project
‱ iOS project
Presentation tackmobile.com
An API Client Interface
public interface CheckvistAPI {‹
[Get("/auth/login.json")]‹
Task<string> LogIn(string username,
string remote_key);‹
‹
[Get("/checklists.json")]‹
Task<Checklist[]> GetChecklists(string token);‹
}‹
‹
Presentation tackmobile.com
iOS Uses It
public override void ViewDidLoad () {‹
base.ViewDidLoad ();‹
‹
var client = new CheckvistClient();‹
var loginTask = new Task(() => {‹
client.LogIn("username", "AP1k3Y");‹
var checklists = client.GetChecklists();‹
foreach (var checklist in checklists) {‹
Debug.WriteLine(checklist.Name);‹
}‹
} );‹
‹
loginTask.Start();‹
}‹
‹
Presentation tackmobile.com
Android Uses It
protected override void OnCreate(Bundle bundle) {‹
base.OnCreate(bundle);‹
SetContentView(Resource.Layout.Main);
‹
var client = new CheckvistClient();‹
var loginTask = new Task(() => {‹
client.LogIn("username", "AP1k3Y");‹
var checklists = client.GetChecklists();‹
foreach (var checklist in checklists) {‹
Console.WriteLine(checklist.Name);‹
}‹
} );‹
‹
loginTask.Start();‹
‹
}
Presentation tackmobile.com
Recap
Presentation tackmobile.com
Recap
‱ Web technologies are not up to native
standards yet
‱ Cross platform solutions deserve your
attention
‱ Don’t give up access to the native APIs
‱ Build good apps
Thank You!
Questions?
tony@tackmobile.com
jobs@tackmobile.com

More Related Content

PPTX
Xamarin - Victim of Phonegap’s horrible reputation
PDF
State of Drupal keynote, DrupalCon Austin
PDF
Don't fear our new robot overlords – A new way to test on mobile
PDF
The new Apple TV and the tvOS
PPTX
Rise of the hybrids
PDF
Agile Tools for Mobile
PDF
Elements of Connected Products
KEY
Call Control Power Tools with Adhearsion
Xamarin - Victim of Phonegap’s horrible reputation
State of Drupal keynote, DrupalCon Austin
Don't fear our new robot overlords – A new way to test on mobile
The new Apple TV and the tvOS
Rise of the hybrids
Agile Tools for Mobile
Elements of Connected Products
Call Control Power Tools with Adhearsion

What's hot (20)

PDF
Design for Non-Designers
PPTX
A Holistic Approach to HTML5 Game Design & Development
PPTX
Joomla 4 is on the Horizon - JAB 2018
PPTX
Emerald
KEY
Effectively Using UI Automation
PPTX
Shift Remote: JS - PoseDance: Build a TikTok Trainer - Jennifer Looper (Micro...
PDF
Last Call Media Drupal 8 Case Study
PPTX
PDF
Nuget
PDF
Introduction to PhoneGap
PDF
28 ways To Create Awesome Blog Content with an iPhone
PPTX
Evaluation question 6
 
PPTX
We’re Going Mobile! Great! Wait
 What Does That Mean?
PDF
Startup Architecture: How to Lean on Others to Get Stuff DoneUntitled
PPTX
Evaluation question 4
PDF
Building Apps for Apple TV
PDF
Building A Platform From Open Source At Yahoo
PPTX
PDF
Android pro tips trilogy
PDF
Tech Thursdays: Building Products
Design for Non-Designers
A Holistic Approach to HTML5 Game Design & Development
Joomla 4 is on the Horizon - JAB 2018
Emerald
Effectively Using UI Automation
Shift Remote: JS - PoseDance: Build a TikTok Trainer - Jennifer Looper (Micro...
Last Call Media Drupal 8 Case Study
Nuget
Introduction to PhoneGap
28 ways To Create Awesome Blog Content with an iPhone
Evaluation question 6
 
We’re Going Mobile! Great! Wait
 What Does That Mean?
Startup Architecture: How to Lean on Others to Get Stuff DoneUntitled
Evaluation question 4
Building Apps for Apple TV
Building A Platform From Open Source At Yahoo
Android pro tips trilogy
Tech Thursdays: Building Products
Ad

Viewers also liked (20)

PDF
ëŒìŽí”„ëĄœêč…, 유행읞가 ëłžëŠ„ìžê°€?
PDF
The Brand Train - Branding on the move
PDF
ICEIM Conference, Durban, SA 2014 - Sudeep Krishnan, IIM Ahmedabad
PPTX
currency trading sample
PDF
Prosessrapport
PDF
Placing Trust in Employee Engagement by Acas Council
PPT
The Journey Toward Cultural Inclusion
PPT
MUC295 LEC1b Job Search 101
 
PPT
Auto Presentation1
PPTX
Mae Hong Son, Thailand
PDF
currency trading sample
ODP
Diapo
PDF
Candidates in Drivers Seat Recruiting Trends Oct 28 Final
PPT
Communicationppt
PDF
MUC295 LEC3a Branding 101
 
PDF
Strategy of Giving
PDF
Flex And Rails
PPTX
Personal branding: Sukses mendapatkan modal min Rp. 15 M dalam 1 hari atau na...
ëŒìŽí”„ëĄœêč…, 유행읞가 ëłžëŠ„ìžê°€?
The Brand Train - Branding on the move
ICEIM Conference, Durban, SA 2014 - Sudeep Krishnan, IIM Ahmedabad
currency trading sample
Prosessrapport
Placing Trust in Employee Engagement by Acas Council
The Journey Toward Cultural Inclusion
MUC295 LEC1b Job Search 101
 
Auto Presentation1
Mae Hong Son, Thailand
currency trading sample
Diapo
Candidates in Drivers Seat Recruiting Trends Oct 28 Final
Communicationppt
MUC295 LEC3a Branding 101
 
Strategy of Giving
Flex And Rails
Personal branding: Sukses mendapatkan modal min Rp. 15 M dalam 1 hari atau na...
Ad

Similar to Totally Build Apps for Free! (not really) (20)

PPTX
WIPJam Cross Platform Tools - Dec 2013
PPTX
Titanium - The Good Parts (TiConf Bangalore)
PPTX
Mobile App Landscape for the Non-Technical
PPTX
Build Your First iPhone or Android App with Telerik AppBuilder
PDF
HTML5 or Android for Mobile Development?
PDF
Android development made easy with appcelerator titanium
PDF
MyAppConverter DroidconUK 2014
PPTX
Top 4 Cross Platform tools for Mobile App Development
PPT
Multi-platform Mobile apps with Phonegap
KEY
Phone gap
PPTX
Cross platform development with c# and xamarin
PPTX
C# everywhere: Xamarin and cross platform development
PDF
Cross platform mobile approaches
PPTX
Cross platform mobile development - you tube videos
PDF
Cross platform development
PPT
Cross platform mobile application development
PPTX
Introduction to building multi platform mobile applications with javascript u...
PDF
Platforms FTW!
PDF
Platforms FTW!
PDF
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGap
WIPJam Cross Platform Tools - Dec 2013
Titanium - The Good Parts (TiConf Bangalore)
Mobile App Landscape for the Non-Technical
Build Your First iPhone or Android App with Telerik AppBuilder
HTML5 or Android for Mobile Development?
Android development made easy with appcelerator titanium
MyAppConverter DroidconUK 2014
Top 4 Cross Platform tools for Mobile App Development
Multi-platform Mobile apps with Phonegap
Phone gap
Cross platform development with c# and xamarin
C# everywhere: Xamarin and cross platform development
Cross platform mobile approaches
Cross platform mobile development - you tube videos
Cross platform development
Cross platform mobile application development
Introduction to building multi platform mobile applications with javascript u...
Platforms FTW!
Platforms FTW!
Building Mobile Cross-Platform Apps with HTML5, jQuery Mobile & PhoneGap

More from Tony Hillerson (10)

PDF
Working with Git
PDF
Dynamic Sound for Android
PDF
Git for Android Developers
PDF
Designing an Android App from Idea to Market
PDF
Rails on HBase
PDF
SCM for Android Developers Using Git
PDF
Flex With Rubyamf
PDF
First Android Experience
PDF
iPhone Persistence For Mere Mortals
PDF
Flex Framework Smackdown
Working with Git
Dynamic Sound for Android
Git for Android Developers
Designing an Android App from Idea to Market
Rails on HBase
SCM for Android Developers Using Git
Flex With Rubyamf
First Android Experience
iPhone Persistence For Mere Mortals
Flex Framework Smackdown

Recently uploaded (20)

PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PPTX
history of c programming in notes for students .pptx
PPTX
CHAPTER 2 - PM Management and IT Context
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PPTX
Introduction to Artificial Intelligence
PPTX
Transform Your Business with a Software ERP System
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
top salesforce developer skills in 2025.pdf
PPTX
ManageIQ - Sprint 268 Review - Slide Deck
PPTX
ISO 45001 Occupational Health and Safety Management System
PPTX
Odoo POS Development Services by CandidRoot Solutions
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
 
PDF
AI in Product Development-omnex systems
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Internet Downloader Manager (IDM) Crack 6.42 Build 41
history of c programming in notes for students .pptx
CHAPTER 2 - PM Management and IT Context
VVF-Customer-Presentation2025-Ver1.9.pptx
Introduction to Artificial Intelligence
Transform Your Business with a Software ERP System
Design an Analysis of Algorithms II-SECS-1021-03
PTS Company Brochure 2025 (1).pdf.......
Design an Analysis of Algorithms I-SECS-1021-03
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
top salesforce developer skills in 2025.pdf
ManageIQ - Sprint 268 Review - Slide Deck
ISO 45001 Occupational Health and Safety Management System
Odoo POS Development Services by CandidRoot Solutions
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
 
AI in Product Development-omnex systems

Totally Build Apps for Free! (not really)