Titanium Appcelerator for real developer



Why a native coder should use Titanium?
Semi-serious guide

WHO am i?

I'm Paolo Mosca
Freelance Developer
Prototype - Startup Supporter
Titanium Lover
also Tango Dancer, Amateur Photographer...
....Strong Traveler, Workaholic...
Life addicted

twitter: @tangotrotter

Who are you?

Business shark
Native coder
experienced programmer
Mobile solutions expert
Marketer
Just Curious
Lost Tourist
I'm here for the BEER

Who you are NOT?


Code Purist


I can write a NASA launching rocket 
algorithm in a single line...


...i will forget how to read that again in 5 minutes

...but I don't need that... 
I never write wrong code

Flash Programmer / Graphic Designer


I got fired
I cannot find job

I made a great website buying a great template for Wordpress
I know Dreamweaver
I know FrontPage (really?!?)

I will start to develop awesome apps

... please don't... or try AdobeAir

.NET Developer

I worked for a long time in a big company
I'm tired to work for corporate projects,
proprietary CMS, CRM, SAP...
I really know C#
I love Microsoft

I want to step in the smart world of app dev

try Xamarin

PhoneGAP Lover


I'm here for my Religion War
to tell you you're wrong

I will refute all your theories about Hybrid 
and Cross Platform development


Cross Platform Promise


Write Once
Works Everywhere

Average revenue for single platform app (~500$/month)
Average revenue for multiple platform app (~1500$/month)
[...source: Developer Economics 2013...]

THIS IS SPARTA!



SOMETIMES DEVELOPERS FORGET THAT WE ARE HERE TO NOT JUST BUILD GREAT STUFF, BUT ALSO TO MAKE MONEY.

WORK SMARTER, NOT HARDER.

Starting with Titanium

I was old school native coder.
I must admit, this was my face when i started with Titanium

why?

I will lose control
I cannot optimize my code
I will not be able to use the last smartest paradigm I've learned in the course "best practices for awesome developer"

I will lose in performances for my great app



a near-real case

the customer: Can you develop a very simple app (no more than an hello world application)?
me: Sure! Let's do it

day 1: design the best architecture I can think, respect all the paradigm of MVC decoupling even my brain from my head
day 2: hard coding
day 3: (the customer) can you add a button to make a coffee? can you move this label to give a better experience of happiness to the end user? can you blablabla


Pure spaghetti code

45 days later...

COst ANalysis

To build a Multi Platform app going Native
iOS Development = €€€
Android Development = €€€
Development cost = €€€ + €€€
Maintain 2 different codes (often 2 teams)

To build a Cross Platform app with Titanium
Js/Titan Development = €€€ 
(usually less expensive than native and easier to find)
Development cost = LESS

Let's start to take it seriously


what I need to start with Titanium?

  • It's better if you are a native coder
  • knowledge about OOP paradigms
  • strong JS skills (no... jquery is not enough) 
  • you really know what is (not how-to) mobile development

Titanium Platform

Development IDE (Titanium Studio)
CLI (Command line interface)
API System based on native UI control
JS to native build -> node.js
Simulator / Emulator / Devices Integration
Marketplaces Deployment
Cloud Solution (ACS)

Free & OpenSource

Pros

Pros:
  • development faster than native (~70%) even on single platform
  • one SDK for multiple platform
  • javascript (Write Once, ADAPT Everywhere)
  • performances close to native (~85-90%)
  • very good documentation (since 6 months, before was horrible)
  • great community
  • more than 500k developers in the world

Cons

Fake Cons:
  • Memory leaks (usually caused by js bad programming)
Cons:
  • Bigger app (not so much)
  • Native controls not 100% provided
  • Debugging (Android debugging really sucks)
  • Update delay on native SDK new features released
  • No visual UI 

Code sample

var win = Ti.UI.createWindow({
	backgroundColor:'#fff'
});
var button = Ti.UI.createButton({
 	right:20,
	left:20,
	title:'Hi there'
});
win.add(button);
win.open();
button.addEventListener('click', function(e){
	alert('click!');
});

let's run our code



iphone

tizen

android

Alloy MVC

Model: Backbone
Views:
<Alloy>
   <Window id="win">
       <Button id="button" class="cool" onClick="clickMe" platform="ios,android"/>
   </Window>
</Alloy>
Style View:
"#win":{
   backgroundColor:'#fff'
},
"#button":{
   right:20,
   left:20,
   title:'Hi there'
},".cool":{   backgroundColor: '#999'}
Controller:
win.open();
function clickME(){
   alert('click!');
};

Titanium Today

  • iOS/Android/Tizen/BB10/MobileWeb(html5 export)
  • UI controls
  • Database Managements
  • Push Notifications
  • Social Network support
  • Native Modules integration
  • Alloy MVC
  • ACS support

Near Future: Ti.next

  • WP8 Support
  • Including Native Code
  • Compilation in ASM (faster than native!!)
  • Smaller build

 Slides: https://slid.es/pablotango/titanium-presentation

 paolo@idev.io

 @tangotrotter

Muchas Gracias

TITANIUM APPCELERATOR FOR REAL DEVELOPER

By Paolo Mosca

TITANIUM APPCELERATOR FOR REAL DEVELOPER

Why a native coder should use Titanium? Semi-serious guide

  • 926