SlideShare a Scribd company logo
Get there together
10 Golden Rules For
Outstanding Titanium Apps
@sugrue www.jamessugrue.ie
Lead Architect / Growth Hacker
Author of Beginning Backbone.js
James Sugrue
Using Titanium since 2010
Carma Carpooling
Founded in early 2007, Carma is the world’s
first social transportation network.
Choose a match
& get in touch
Tap ‘Start Trip’ &
log your journey
Tap ‘End Trip’ &
share the Carma
How the App Works
Native to Native to Hybrid to Native
2010 2012 2013 2014
Replace your tables
with list views
1
The Trouble With Tables
TableViews for tabular data seems natural
!
As row count increases, performance suffers
!
Use ListView for a performance boost
!
ListView !== TableView
!
!
Templates for each ‘row’ bound to a data object
!
Overall list events: no row events
!
Use lazy loading so that the template
compilation doesn’t slow down your app
!
http://www.shockoe.com/blog/titanium-tableview-listview-retrospective/
Beware of
the single thread
2
The Most Frustrating User Experience
Customers will not accept your excuses for an unresponsive app
!


Keep Your App Moving
Ensure that multiple clicks does not mean multiple invocation
Always keep the user informed, even if they have to wait
1
_.defer for UI blocking operations
_.throttle to prevent duplicate actions2
Use activity indicators when necessary
3
4
Try out graviton.TaskManager from Ronald Treur
Obsess over
memory management
3
Don’t Leave It Until The End
Some developers assume there’s no need to worry about memory
management in JavaScript
!
!
!
!


Some Quick Tips
Keep event listeners at a minimum
Use call-backs instead of global event listeners.
!
!
!


1
2 Create a module to manage global state
3 Dispose objects when you are finished with them.
Use require statements
only when needed
4
Modules: A Delicate Balancing Act
It is tempting to add all require statements at the top of each Alloy
controller.
!
!


Lazy Loading Modules
Ensure that you only require essential modules at the beginning
!


1 var event = require("/tracking/tracking_event"),	
analytics = require("/tracking/tracking_manager");	
or

3
Use require(“<path>”).<function> inline with your code
!


require("facebook/facebook_manager").getFacebookId();
Store your module reference within the function
!


2
function loginFacebook(fbManager) {	
var eventTracker = require(“/tracking/tracking_event");
Embrace native modules
5
Writing native modules is not cheating
Use your Objective-C/Swift/Java skills




Multiple Layer Scroller
Be Careful Crossing That Bridge
Reacting to every scroll event was really slow
Use fonts
rather than images
6
Slim Down Your App With Icon Fonts
Don’t overload your app with images
Choose Your Icons http://fontastic.me
Add Font To Project
1
2 Update app.tss
//	
// Icon Font	
// -------------------------------------------------
".icon": {	
	 font: {	
	 	 fontFamily: "splinico"	
	 }	
}	
!
".icon-camera": {	
	 text: "a"	
}	
!
".icon-facebook": {	
	 text: "f"	
}	
!
".icon-envelope": {	
	 text: "b"	
}
Use Your Font
3
<Button id="btnSignupWithFacebook" class="btn btn-	 	
	 	 	 fb-blue btn-lg col-abs-11”>	
	 <Label class="icon icon-facebook btn-icon”/>	
	 <View class="btn-vr"/>	
	 <Label class="lbl-large btn-text" 

	 	 	 text=“L(‘widget_home_btn_signup_facebook')">	
	 </Label>	
</Button>
Get consistent styling
with app.tss
7
Keep Your Designer Happy
Keep all your common app styles in one place
!
!
!
Use this image: http://upload.wikimedia.org/wikipedia/commons/3/3e/
RedBikeLane.JPG
Keep Your Designer Happy
Keep all your common app styles in one place: app.tss
!
!
!
!
!
"Label":{	
font: {	
fontFamily: 'Helvetica Neue Light',	
fontSize: '14dp',	
},	
color: '#333333'	
}	
"Button":{	
font: {	
fontFamily: 'HelveticaNeue-Light', 	
fontSize: '14dp'	
},	
height: '44dp',	
width: '100%'	
}	
"TableView":{	
backgroundColor: 'transparent',	
width: '100%',	
height: Ti.UI.FILL	
}
Wriststrap
https://github.com/TNuzzi/wriststrap
Ti UX Patterns
http://www.uxmobilepatterns.com/
Use TiShadow
for Rapid Development
8
Speed Up Development Exponentially
How much time do you waste in the cycle of building and deploying?
!
What about installing updated builds on all test devices?


You Have To See It to Believe It
1
titanium build -p android -T device --shadow
HAPPY
BIRTHDAY 

DAVID
Start with Android
9
Cross Platform Development Is Difficult
The greatest appeal of Titanium is cross platform
!
With Titanium, iOS support has always been superior

3
Lessons Learned The Hard Way
Use density pixels to gracefully handle varying resolutions
!
When adding events remember to use singletap for Android

click for iOS
! !
!
!
! if (OS_ANDROID) {!
! ! textfield.addEventListener("singletap", textfield.clearError);!
! }!
! else {!
! ! textfield.addEventListener("click", textfield.clearError);!
! }!
!
!
!
!
!
Making Android More Appealing
!
Use Genymotion as your emulator
!
!
!
!
!
!
1
2 Ensure every developer has at least two phones
3 Utilise tishadow to easily deploy to all devices in real time
Go for the latest
OS features
10
Push Your App to Be Cutting Edge
Never limit yourself to the lowest common denominator
"The reasonable man
adapts himself to the
conditions that surround
him... The unreasonable
man adapts surrounding
conditions to himself... All
progress depends on the
unreasonable man.”
!
- George Bernard Shaw
Be Unreasonable
Get Involved in the Titanium Community
Don’t be afraid to submit a pull request
Ask Ingo for what you need
@ronaldtreur
Credits
Keeping Your App Responsive
@davidbankier
TiShadow
@skypanther
Memory Management
@acktie
@dawsontoth
TandemScroll
wriststrap
Get there together
Carma Prize
Your chance to make it big
What is the Carma Prize?
$1 million to Carma employee who enables +1,000 daily carpool trips
$1 million to 3rd party developer who enables +10,000 daily carpool trips
$500,000 to start-ups to take on the challenge
What is the problem?
The average annual cost of driving a sedan in the US = $9,122
The average passenger vehicle emits 5.1 tons of CO2 per year,
making our car culture responsible for 33% of US emissions
The typical American spends a whole week
and wastes 19 gallons of fuel sitting in traffic every year
Most of us drive to work alone, i.e. with three empty seats!
Highways full of “riderless cars”
A road can be 100% full, but with only 25% capacity used.
!
Once we know who the commuters are, and where they are going,
the game changes entirely.
Carma - a better way to commute
Save up to 75% on the cost of driving
Reduce your carbon footprint and fuel dependency
Get access to carpool/HOV lanes and get your free time back
Spend more time with your neighbours and colleagues
Paul | Sean
Open APIs for real-time carpool verification
Open APIs for real-time carpool matching
Open APIs for building occupancy-based apps
The Carma API
api.carmacarpool.com
Inspiration
api.carmacarpool.com
Plug-in for concerts / events
System for sport teams/arenas
Competition for “school-pools” for kids / moms & dads
Ride Board for large campus / colleges
Systems for large employers
App for connected vehicles - Automotive companies
App to open parking garages / toll barriers when carpool comes
$1 million
Third party developer
+10,000 daily carpool trips
Get there together
$1 million
Carma employee
+1,000 daily carpool trips
Get there together
$500K
Accelerator program
funding for startups
Get there together
The Carma Prize
$1 million to Carma employee who enables +1,000 daily carpool trips
$1 million to 3rd party developer who enables +10,000 daily carpool trips
$500,000 to start-ups to take on the challenge
www.carmacarpool.com/prize
@TeamCarma
www.carmacarpool.com

More Related Content

What's hot

Future of Mobile Automation, Appium Steals it
Future of Mobile Automation, Appium Steals itFuture of Mobile Automation, Appium Steals it
Future of Mobile Automation, Appium Steals it
Srinivasan Sekar
 
What's New With Appium? From 1.0 to Now
What's New With Appium? From 1.0 to NowWhat's New With Appium? From 1.0 to Now
What's New With Appium? From 1.0 to Now
Sauce Labs
 
Karl Krukow - What's new and cool in xamarin test cloud - Xamarin Dev Days Si...
Karl Krukow - What's new and cool in xamarin test cloud - Xamarin Dev Days Si...Karl Krukow - What's new and cool in xamarin test cloud - Xamarin Dev Days Si...
Karl Krukow - What's new and cool in xamarin test cloud - Xamarin Dev Days Si...
Xamariners
 
Introduction To Appium With Robotframework
Introduction To Appium With RobotframeworkIntroduction To Appium With Robotframework
Introduction To Appium With Robotframework
Syam Sasi
 
Appium troubleshooting
Appium troubleshootingAppium troubleshooting
Appium troubleshooting
adi ben aroya
 
Appium basics
Appium basicsAppium basics
Appium basics
Syam Sasi
 
Automation testing on ios platform using appium
Automation testing on ios platform using appiumAutomation testing on ios platform using appium
Automation testing on ios platform using appium
Ambreen Khan
 
Appium Interview Questions and Answers | Edureka
Appium Interview Questions and Answers | EdurekaAppium Interview Questions and Answers | Edureka
Appium Interview Questions and Answers | Edureka
Edureka!
 
Appium Meetup #2 - Mobile Web Automation Introduction
Appium Meetup #2 - Mobile Web Automation IntroductionAppium Meetup #2 - Mobile Web Automation Introduction
Appium Meetup #2 - Mobile Web Automation Introduction
snevesbarros
 
Appcelerator Titanium Intro (2014)
Appcelerator Titanium Intro (2014)Appcelerator Titanium Intro (2014)
Appcelerator Titanium Intro (2014)
Nicholas Jansma
 
Vietnam qa meetup
Vietnam qa meetupVietnam qa meetup
Vietnam qa meetup
Syam Sasi
 
Using Selenium to Test Native Apps (Wait, you can do that?)
Using Selenium to Test Native Apps (Wait, you can do that?)Using Selenium to Test Native Apps (Wait, you can do that?)
Using Selenium to Test Native Apps (Wait, you can do that?)
Sauce Labs
 
Appium - test automation for mobile apps
Appium - test automation for mobile appsAppium - test automation for mobile apps
Appium - test automation for mobile apps
Aleksejs Trescalins
 
Advanced Appium Tips & Tricks with Jonathan Lipps
Advanced Appium Tips & Tricks with Jonathan LippsAdvanced Appium Tips & Tricks with Jonathan Lipps
Advanced Appium Tips & Tricks with Jonathan Lipps
Perfecto by Perforce
 
Testing Native iOS Apps with Appium
Testing Native iOS Apps with AppiumTesting Native iOS Apps with Appium
Testing Native iOS Apps with Appium
Sauce Labs
 
Mobile automation testing with selenium and appium
Mobile automation testing with selenium and appiumMobile automation testing with selenium and appium
Mobile automation testing with selenium and appium
BugRaptors
 
Getting started with appium
Getting started with appiumGetting started with appium
Getting started with appium
Pratik Patel
 
Android & iOS Automation Using Appium
Android & iOS Automation Using AppiumAndroid & iOS Automation Using Appium
Android & iOS Automation Using Appium
Mindfire Solutions
 
Appium solution
Appium solutionAppium solution
Appium solution
Nael Abd Eljawad
 
Appcelerator Titanium Intro
Appcelerator Titanium IntroAppcelerator Titanium Intro
Appcelerator Titanium Intro
Nicholas Jansma
 

What's hot (20)

Future of Mobile Automation, Appium Steals it
Future of Mobile Automation, Appium Steals itFuture of Mobile Automation, Appium Steals it
Future of Mobile Automation, Appium Steals it
 
What's New With Appium? From 1.0 to Now
What's New With Appium? From 1.0 to NowWhat's New With Appium? From 1.0 to Now
What's New With Appium? From 1.0 to Now
 
Karl Krukow - What's new and cool in xamarin test cloud - Xamarin Dev Days Si...
Karl Krukow - What's new and cool in xamarin test cloud - Xamarin Dev Days Si...Karl Krukow - What's new and cool in xamarin test cloud - Xamarin Dev Days Si...
Karl Krukow - What's new and cool in xamarin test cloud - Xamarin Dev Days Si...
 
Introduction To Appium With Robotframework
Introduction To Appium With RobotframeworkIntroduction To Appium With Robotframework
Introduction To Appium With Robotframework
 
Appium troubleshooting
Appium troubleshootingAppium troubleshooting
Appium troubleshooting
 
Appium basics
Appium basicsAppium basics
Appium basics
 
Automation testing on ios platform using appium
Automation testing on ios platform using appiumAutomation testing on ios platform using appium
Automation testing on ios platform using appium
 
Appium Interview Questions and Answers | Edureka
Appium Interview Questions and Answers | EdurekaAppium Interview Questions and Answers | Edureka
Appium Interview Questions and Answers | Edureka
 
Appium Meetup #2 - Mobile Web Automation Introduction
Appium Meetup #2 - Mobile Web Automation IntroductionAppium Meetup #2 - Mobile Web Automation Introduction
Appium Meetup #2 - Mobile Web Automation Introduction
 
Appcelerator Titanium Intro (2014)
Appcelerator Titanium Intro (2014)Appcelerator Titanium Intro (2014)
Appcelerator Titanium Intro (2014)
 
Vietnam qa meetup
Vietnam qa meetupVietnam qa meetup
Vietnam qa meetup
 
Using Selenium to Test Native Apps (Wait, you can do that?)
Using Selenium to Test Native Apps (Wait, you can do that?)Using Selenium to Test Native Apps (Wait, you can do that?)
Using Selenium to Test Native Apps (Wait, you can do that?)
 
Appium - test automation for mobile apps
Appium - test automation for mobile appsAppium - test automation for mobile apps
Appium - test automation for mobile apps
 
Advanced Appium Tips & Tricks with Jonathan Lipps
Advanced Appium Tips & Tricks with Jonathan LippsAdvanced Appium Tips & Tricks with Jonathan Lipps
Advanced Appium Tips & Tricks with Jonathan Lipps
 
Testing Native iOS Apps with Appium
Testing Native iOS Apps with AppiumTesting Native iOS Apps with Appium
Testing Native iOS Apps with Appium
 
Mobile automation testing with selenium and appium
Mobile automation testing with selenium and appiumMobile automation testing with selenium and appium
Mobile automation testing with selenium and appium
 
Getting started with appium
Getting started with appiumGetting started with appium
Getting started with appium
 
Android & iOS Automation Using Appium
Android & iOS Automation Using AppiumAndroid & iOS Automation Using Appium
Android & iOS Automation Using Appium
 
Appium solution
Appium solutionAppium solution
Appium solution
 
Appcelerator Titanium Intro
Appcelerator Titanium IntroAppcelerator Titanium Intro
Appcelerator Titanium Intro
 

Similar to 10 Golden Rules For Outstanding Titanium Apps

Mobile Application Design & Development
Mobile Application Design & DevelopmentMobile Application Design & Development
Mobile Application Design & Development
Ronnie Liew
 
Another Update of Tablet Strategy Bootcamp
Another Update of Tablet Strategy BootcampAnother Update of Tablet Strategy Bootcamp
Another Update of Tablet Strategy Bootcamp
Paul Saunders
 
UPDATED: Tablet Strategy Bootcamp
UPDATED: Tablet Strategy BootcampUPDATED: Tablet Strategy Bootcamp
UPDATED: Tablet Strategy Bootcamp
Paul Saunders
 
Appium - Reality check on the world’s leading Open Source Framework for Mobil...
Appium - Reality check on the world’s leading Open Source Framework for Mobil...Appium - Reality check on the world’s leading Open Source Framework for Mobil...
Appium - Reality check on the world’s leading Open Source Framework for Mobil...
Asaf Saar
 
Postdesktop Usability
Postdesktop UsabilityPostdesktop Usability
Postdesktop Usability
Doug Gapinski
 
Screen and Context: Usability in the Postdesktop World
Screen and Context: Usability in the Postdesktop WorldScreen and Context: Usability in the Postdesktop World
Screen and Context: Usability in the Postdesktop World
Doug Gapinski
 
An end-to-end experience of Windows Phone 7 development (Part 1)
An end-to-end experience of Windows Phone 7 development (Part 1)An end-to-end experience of Windows Phone 7 development (Part 1)
An end-to-end experience of Windows Phone 7 development (Part 1)
rudigrobler
 
Getting started with Xamarin Forms
Getting started with Xamarin FormsGetting started with Xamarin Forms
Getting started with Xamarin Forms
Leomaris Reyes
 
Xamarin Platform
Xamarin PlatformXamarin Platform
Xamarin Platform
Rui Marinho
 
Preparing for Release to the App Store
Preparing for Release to the App StorePreparing for Release to the App Store
Preparing for Release to the App Store
Geoffrey Goetz
 
Angular js mobile jsday 2014 - Verona 14 may
Angular js mobile   jsday 2014 - Verona 14 mayAngular js mobile   jsday 2014 - Verona 14 may
Angular js mobile jsday 2014 - Verona 14 may
Luciano Amodio
 
Tablet strategy bootcamp
Tablet strategy bootcampTablet strategy bootcamp
Tablet strategy bootcamp
Paul Saunders
 
Common Missteps in Cross-Platform Development.pdf
Common Missteps in Cross-Platform Development.pdfCommon Missteps in Cross-Platform Development.pdf
Common Missteps in Cross-Platform Development.pdf
Pridesys IT Ltd.
 
Philly ete-2011
Philly ete-2011Philly ete-2011
Philly ete-2011
davyjones
 
HTML5 Can't Do That
HTML5 Can't Do ThatHTML5 Can't Do That
HTML5 Can't Do That
Nathan Smith
 
Get With The Programme
Get With The ProgrammeGet With The Programme
Get With The Programme
Paul Saunders
 
Cloud-Based, Automated Mobile App Testing for the Enterprise
Cloud-Based, Automated Mobile App Testing for the EnterpriseCloud-Based, Automated Mobile App Testing for the Enterprise
Cloud-Based, Automated Mobile App Testing for the Enterprise
TechWell
 
Mobile presentation - Sydney Online Retailer - 26 Sep 2011
Mobile presentation - Sydney Online Retailer - 26 Sep 2011Mobile presentation - Sydney Online Retailer - 26 Sep 2011
Mobile presentation - Sydney Online Retailer - 26 Sep 2011
Craig Sullivan
 
Mobile application development platform
Mobile application development platformMobile application development platform
Mobile application development platform
i4consulting.org
 
Of innovation and impatience - Future Decoded 2015
Of innovation and impatience - Future Decoded 2015Of innovation and impatience - Future Decoded 2015
Of innovation and impatience - Future Decoded 2015
Christian Heilmann
 

Similar to 10 Golden Rules For Outstanding Titanium Apps (20)

Mobile Application Design & Development
Mobile Application Design & DevelopmentMobile Application Design & Development
Mobile Application Design & Development
 
Another Update of Tablet Strategy Bootcamp
Another Update of Tablet Strategy BootcampAnother Update of Tablet Strategy Bootcamp
Another Update of Tablet Strategy Bootcamp
 
UPDATED: Tablet Strategy Bootcamp
UPDATED: Tablet Strategy BootcampUPDATED: Tablet Strategy Bootcamp
UPDATED: Tablet Strategy Bootcamp
 
Appium - Reality check on the world’s leading Open Source Framework for Mobil...
Appium - Reality check on the world’s leading Open Source Framework for Mobil...Appium - Reality check on the world’s leading Open Source Framework for Mobil...
Appium - Reality check on the world’s leading Open Source Framework for Mobil...
 
Postdesktop Usability
Postdesktop UsabilityPostdesktop Usability
Postdesktop Usability
 
Screen and Context: Usability in the Postdesktop World
Screen and Context: Usability in the Postdesktop WorldScreen and Context: Usability in the Postdesktop World
Screen and Context: Usability in the Postdesktop World
 
An end-to-end experience of Windows Phone 7 development (Part 1)
An end-to-end experience of Windows Phone 7 development (Part 1)An end-to-end experience of Windows Phone 7 development (Part 1)
An end-to-end experience of Windows Phone 7 development (Part 1)
 
Getting started with Xamarin Forms
Getting started with Xamarin FormsGetting started with Xamarin Forms
Getting started with Xamarin Forms
 
Xamarin Platform
Xamarin PlatformXamarin Platform
Xamarin Platform
 
Preparing for Release to the App Store
Preparing for Release to the App StorePreparing for Release to the App Store
Preparing for Release to the App Store
 
Angular js mobile jsday 2014 - Verona 14 may
Angular js mobile   jsday 2014 - Verona 14 mayAngular js mobile   jsday 2014 - Verona 14 may
Angular js mobile jsday 2014 - Verona 14 may
 
Tablet strategy bootcamp
Tablet strategy bootcampTablet strategy bootcamp
Tablet strategy bootcamp
 
Common Missteps in Cross-Platform Development.pdf
Common Missteps in Cross-Platform Development.pdfCommon Missteps in Cross-Platform Development.pdf
Common Missteps in Cross-Platform Development.pdf
 
Philly ete-2011
Philly ete-2011Philly ete-2011
Philly ete-2011
 
HTML5 Can't Do That
HTML5 Can't Do ThatHTML5 Can't Do That
HTML5 Can't Do That
 
Get With The Programme
Get With The ProgrammeGet With The Programme
Get With The Programme
 
Cloud-Based, Automated Mobile App Testing for the Enterprise
Cloud-Based, Automated Mobile App Testing for the EnterpriseCloud-Based, Automated Mobile App Testing for the Enterprise
Cloud-Based, Automated Mobile App Testing for the Enterprise
 
Mobile presentation - Sydney Online Retailer - 26 Sep 2011
Mobile presentation - Sydney Online Retailer - 26 Sep 2011Mobile presentation - Sydney Online Retailer - 26 Sep 2011
Mobile presentation - Sydney Online Retailer - 26 Sep 2011
 
Mobile application development platform
Mobile application development platformMobile application development platform
Mobile application development platform
 
Of innovation and impatience - Future Decoded 2015
Of innovation and impatience - Future Decoded 2015Of innovation and impatience - Future Decoded 2015
Of innovation and impatience - Future Decoded 2015
 

Recently uploaded

Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Jeffrey Haguewood
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Project Management Semester Long Project - Acuity
Project Management Semester Long Project - AcuityProject Management Semester Long Project - Acuity
Project Management Semester Long Project - Acuity
jpupo2018
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
fredae14
 
Webinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data WarehouseWebinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data Warehouse
Federico Razzoli
 

Recently uploaded (20)

Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Project Management Semester Long Project - Acuity
Project Management Semester Long Project - AcuityProject Management Semester Long Project - Acuity
Project Management Semester Long Project - Acuity
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
 
Webinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data WarehouseWebinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data Warehouse
 

10 Golden Rules For Outstanding Titanium Apps

  • 1. Get there together 10 Golden Rules For Outstanding Titanium Apps
  • 2. @sugrue www.jamessugrue.ie Lead Architect / Growth Hacker Author of Beginning Backbone.js James Sugrue Using Titanium since 2010
  • 3. Carma Carpooling Founded in early 2007, Carma is the world’s first social transportation network.
  • 4. Choose a match & get in touch Tap ‘Start Trip’ & log your journey Tap ‘End Trip’ & share the Carma How the App Works
  • 5. Native to Native to Hybrid to Native 2010 2012 2013 2014
  • 7. The Trouble With Tables TableViews for tabular data seems natural ! As row count increases, performance suffers ! Use ListView for a performance boost !
  • 8. ListView !== TableView ! ! Templates for each ‘row’ bound to a data object ! Overall list events: no row events ! Use lazy loading so that the template compilation doesn’t slow down your app ! http://www.shockoe.com/blog/titanium-tableview-listview-retrospective/
  • 10. The Most Frustrating User Experience Customers will not accept your excuses for an unresponsive app ! 

  • 11. Keep Your App Moving Ensure that multiple clicks does not mean multiple invocation Always keep the user informed, even if they have to wait 1 _.defer for UI blocking operations _.throttle to prevent duplicate actions2 Use activity indicators when necessary 3 4 Try out graviton.TaskManager from Ronald Treur
  • 13. Don’t Leave It Until The End Some developers assume there’s no need to worry about memory management in JavaScript ! ! ! ! 

  • 14. Some Quick Tips Keep event listeners at a minimum Use call-backs instead of global event listeners. ! ! ! 
 1 2 Create a module to manage global state 3 Dispose objects when you are finished with them.
  • 16. Modules: A Delicate Balancing Act It is tempting to add all require statements at the top of each Alloy controller. ! ! 

  • 17. Lazy Loading Modules Ensure that you only require essential modules at the beginning ! 
 1 var event = require("/tracking/tracking_event"), analytics = require("/tracking/tracking_manager"); or
 3 Use require(“<path>”).<function> inline with your code ! 
 require("facebook/facebook_manager").getFacebookId(); Store your module reference within the function ! 
 2 function loginFacebook(fbManager) { var eventTracker = require(“/tracking/tracking_event");
  • 19. Writing native modules is not cheating Use your Objective-C/Swift/Java skills 
 

  • 21. Be Careful Crossing That Bridge Reacting to every scroll event was really slow
  • 22.
  • 24. Slim Down Your App With Icon Fonts Don’t overload your app with images
  • 25. Choose Your Icons http://fontastic.me
  • 26. Add Font To Project 1 2 Update app.tss // // Icon Font // ------------------------------------------------- ".icon": { font: { fontFamily: "splinico" } } ! ".icon-camera": { text: "a" } ! ".icon-facebook": { text: "f" } ! ".icon-envelope": { text: "b" }
  • 27. Use Your Font 3 <Button id="btnSignupWithFacebook" class="btn btn- fb-blue btn-lg col-abs-11”> <Label class="icon icon-facebook btn-icon”/> <View class="btn-vr"/> <Label class="lbl-large btn-text" 
 text=“L(‘widget_home_btn_signup_facebook')"> </Label> </Button>
  • 29. Keep Your Designer Happy Keep all your common app styles in one place ! ! ! Use this image: http://upload.wikimedia.org/wikipedia/commons/3/3e/ RedBikeLane.JPG
  • 30. Keep Your Designer Happy Keep all your common app styles in one place: app.tss ! ! ! ! ! "Label":{ font: { fontFamily: 'Helvetica Neue Light', fontSize: '14dp', }, color: '#333333' } "Button":{ font: { fontFamily: 'HelveticaNeue-Light', fontSize: '14dp' }, height: '44dp', width: '100%' } "TableView":{ backgroundColor: 'transparent', width: '100%', height: Ti.UI.FILL }
  • 33. Use TiShadow for Rapid Development 8
  • 34. Speed Up Development Exponentially How much time do you waste in the cycle of building and deploying? ! What about installing updated builds on all test devices? 

  • 35. You Have To See It to Believe It 1 titanium build -p android -T device --shadow
  • 38. Cross Platform Development Is Difficult The greatest appeal of Titanium is cross platform ! With Titanium, iOS support has always been superior

  • 39. 3 Lessons Learned The Hard Way Use density pixels to gracefully handle varying resolutions ! When adding events remember to use singletap for Android
 click for iOS ! ! ! ! ! if (OS_ANDROID) {! ! ! textfield.addEventListener("singletap", textfield.clearError);! ! }! ! else {! ! ! textfield.addEventListener("click", textfield.clearError);! ! }! ! ! ! ! !
  • 40. Making Android More Appealing ! Use Genymotion as your emulator ! ! ! ! ! ! 1 2 Ensure every developer has at least two phones 3 Utilise tishadow to easily deploy to all devices in real time
  • 41. Go for the latest OS features 10
  • 42. Push Your App to Be Cutting Edge Never limit yourself to the lowest common denominator
  • 43.
  • 44. "The reasonable man adapts himself to the conditions that surround him... The unreasonable man adapts surrounding conditions to himself... All progress depends on the unreasonable man.” ! - George Bernard Shaw Be Unreasonable
  • 45. Get Involved in the Titanium Community Don’t be afraid to submit a pull request Ask Ingo for what you need
  • 46. @ronaldtreur Credits Keeping Your App Responsive @davidbankier TiShadow @skypanther Memory Management @acktie @dawsontoth TandemScroll wriststrap
  • 47. Get there together Carma Prize Your chance to make it big
  • 48. What is the Carma Prize? $1 million to Carma employee who enables +1,000 daily carpool trips $1 million to 3rd party developer who enables +10,000 daily carpool trips $500,000 to start-ups to take on the challenge
  • 49.
  • 50. What is the problem? The average annual cost of driving a sedan in the US = $9,122 The average passenger vehicle emits 5.1 tons of CO2 per year, making our car culture responsible for 33% of US emissions The typical American spends a whole week and wastes 19 gallons of fuel sitting in traffic every year Most of us drive to work alone, i.e. with three empty seats!
  • 51. Highways full of “riderless cars” A road can be 100% full, but with only 25% capacity used. ! Once we know who the commuters are, and where they are going, the game changes entirely.
  • 52. Carma - a better way to commute Save up to 75% on the cost of driving Reduce your carbon footprint and fuel dependency Get access to carpool/HOV lanes and get your free time back Spend more time with your neighbours and colleagues
  • 53. Paul | Sean Open APIs for real-time carpool verification Open APIs for real-time carpool matching Open APIs for building occupancy-based apps The Carma API api.carmacarpool.com
  • 54. Inspiration api.carmacarpool.com Plug-in for concerts / events System for sport teams/arenas Competition for “school-pools” for kids / moms & dads Ride Board for large campus / colleges Systems for large employers App for connected vehicles - Automotive companies App to open parking garages / toll barriers when carpool comes
  • 55. $1 million Third party developer +10,000 daily carpool trips Get there together
  • 56. $1 million Carma employee +1,000 daily carpool trips Get there together
  • 57. $500K Accelerator program funding for startups Get there together
  • 58. The Carma Prize $1 million to Carma employee who enables +1,000 daily carpool trips $1 million to 3rd party developer who enables +10,000 daily carpool trips $500,000 to start-ups to take on the challenge www.carmacarpool.com/prize