Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Don't Fear The Hybrid!
Search
Patrick Seda
October 17, 2014
Technology
4
1.4k
Don't Fear The Hybrid!
Making Kickass Mobile Enterprise Apps
Patrick Seda
October 17, 2014
Tweet
Share
More Decks by Patrick Seda
See All by Patrick Seda
The API of Your Company Culture
pxtrick
3
970
Lightning Talk - Enhancing Vue and Vuex for Complex Application State
pxtrick
1
1.2k
Swift - Beyond Beginner
pxtrick
0
1.3k
Crossing the Chasm of Swift
pxtrick
0
1.4k
Architecting Your Project with a Finite-State Machine
pxtrick
1
2.2k
Your Code is Terrible (I Love It!)
pxtrick
0
1.2k
An Introduction to Location-Based Technologies (for Business & Marketing)
pxtrick
0
600
The Passion of Lazy - Enterprise Mobile App Design Patterns
pxtrick
0
2.2k
10 Tips for Kickass Enterprise Mobile Apps
pxtrick
0
1k
Other Decks in Technology
See All in Technology
ZOZOマッチのアーキテクチャと技術構成
zozotech
PRO
3
1.5k
EncryptedSharedPreferences が deprecated になっちゃった!どうしよう! / Oh no! EncryptedSharedPreferences has been deprecated! What should I do?
yanzm
0
280
Android Audio: Beyond Winning On It
atsushieno
0
120
要件定義・デザインフェーズでもAIを活用して、コミュニケーションの密度を高める
kazukihayase
0
110
20250903_1つのAWSアカウントに複数システムがある環境におけるアクセス制御をABACで実現.pdf
yhana
3
550
[ JAWS-UG 東京 CommunityBuilders Night #2 ]SlackとAmazon Q Developerで 運用効率化を模索する
sh_fk2
3
410
なぜテストマネージャの視点が 必要なのか? 〜 一歩先へ進むために 〜
moritamasami
0
220
会社紹介資料 / Sansan Company Profile
sansan33
PRO
6
380k
Aurora DSQLはサーバーレスアーキテクチャの常識を変えるのか
iwatatomoya
1
940
新アイテムをどう使っていくか?みんなであーだこーだ言ってみよう / 20250911-rpi-jam-tokyo
akkiesoft
0
250
ChatGPTとPlantUML/Mermaidによるソフトウェア設計
gowhich501
1
130
生成AI時代のデータ基盤設計〜ペースレイヤリングで実現する高速開発と持続性〜 / Levtech Meetup_Session_2
sansan_randd
1
150
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
53
7.8k
What's in a price? How to price your products and services
michaelherold
246
12k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
Designing for Performance
lara
610
69k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
The Art of Programming - Codeland 2020
erikaheidi
56
13k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.6k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
Transcript
ConnectJS/TiConnect – October 17, 2014 – Atlanta, GA Don’t! FEAR!
The HYBRID!
Patrick Seda @pxtrick
[email protected]
• Lead Mobile Architect @propelics •
Titanium Fanboy … Appc Titan • Creator of Mr. Edison Children’s App
What! Is! HYBRID! ?!
Hybrid Native App Wrapper + Web Application
Hybrid Combine two things BADASS!
Hybrid so BADASS NOT QUITE!
Hybrid
vs. Consumer! ENTERPRISE!
What is Enterprise? • A Business with multiple divisions •
Business strategy is based upon cohesive interaction • Divisions are financially dependent on each other • Core set of metrics and measures
What is Enterprise? • A Business with multiple divisions •
Business strategy is based upon cohesive interaction • Divisions are financially dependent on each other • Core set of metrics and measures
Enterprise vs. Consumer “Enterprise” Apps == B2E / B2B (ish)
Enterprise vs. Consumer “Consumer” Apps == B2C / B2B (ish)
in Enterprise! EXPECT! What to!
Reasonable Expectations • Heightened Security • Interact with Existing Data
Sources • Handle offline / poor connection, intermittent data sync • App architecture had BETTER support future expansion • Charts and graphs!
Reasonable Expectations
Reasonable Expectations
CHARTING! Techniques!
Charts and Graphs
Charts and Graphs
Charts and Graphs
HELP !! Charts and Graphs We need!
Charting Libraries Google Charts
Charting Libraries Google Charts Common Charts : Visual Styling :
Interactivity : Cost : NOTE : Where: Excellent Excellent Excellent FREE Must be online to use ! (developers.google.com/chart)! !
Charting Libraries D3.js
Charting Libraries D3.js Common Charts : Visual Styling : Interactivity
: Cost : Where: Excellent Excellent Excellent FREE ! (d3js.org)! !
Charting Libraries Highcharts
Charting Libraries Highcharts Common Charts : Visual Styling : Interactivity
: Cost : Where: Excellent Excellent Excellent Freemium … $390 - $4500 ! (highcharts.com)! !
Charting Libraries gRaphael
Charting Libraries gRaphael Common Charts : Visual Styling : Interactivity
: Cost : Where: Good Limited Limited FREE ! (g.raphael.com)! !
ANATOMY! Of the Hybrid!
Application WebView HTML / CSS / JS JS Chart Library
Composition
HTML Composition JS Window WebView Creation Sequence: <Window>! <WebView />!
</Window>!
Interaction HTML JS App-to-Chart Communication: App Ti.App.fireEvent(…);! WebView with Events
Interaction HTML App WebView Chart-to-App Communication: Ti.App.fireEvent(…);! JS with Events
Interaction HTML JS WebView App-to-Chart Communication: App webView.evalJS(…);! without Events
Interaction HTML App WebView Chart-to-App Communication: // NOPE! JS without
Events
Interaction // Event handler in HTML/JS.! function render(e) {…};! Ti.App.addEventListener(‘renderChart’,
render);! (In HTML/JS) // Send data to the chart.! Ti.App.fireEvent(‘renderChart’, {…});! (In App) App-to-Chart Communication: with Events
Interaction // Event handler in app.! function chartCB(e) {…};! Ti.App.addEventListener(‘chartTapped’,
chartCB);! (In App) // Send data to the app.! Ti.App.fireEvent(‘chartTapped’, {…});! (In HTML/JS) with Events Chart-to-App Communication:
Interaction // No event handler, just the method to render
data.! function render(chartInfo) {…};! (In HTML/JS) // Send data to the chart.! var data = JSON.stringify(chartInfo);! webView.evalJS(‘render(‘ + data + ‘)’);! (In App) App-to-Chart Communication: without Events
WELCOME! To the Real World!
The Real World
The Real World WTF! WTF!
The Real World
The Real World “The WebView is one of the most
EXPENSIVE components to create in terms of resources” - Titanium docs
The Real World
The Real World Labels! & Views! WebView!
The Real World “Including WebViews in your TableViewRows is a
RECIPE FOR SLUGGISH performance.” - Titanium docs
The Real World
The Real World Section! Headers!
The Real World
WebView Event Quiz When is the “load” event fired? A.
After the WebView contents have loaded B. After the WebView contents have rendered C. Never
WebView Event Quiz When is the “load” event fired? A.
After the WebView contents have loaded B. After the WebView contents have rendered C. Never
WebView Event Quiz When do the contents start loading? A.
After the Window has been laid out B. After the WebView has been laid out C. Before the WebView has been laid out
WebView Event Quiz When do the contents start loading? A.
After the Window has been laid out B. After the WebView has been laid out C. Before the WebView has been laid out * “postlayout” event
WebView Event Quiz When is the WebView laid out? A.
Before the Window “postlayout” event B. After the WebView “focus” event C. Whenever the OS feels like it
WebView Event Quiz When is the WebView laid out? A.
Before the Window “postlayout” event B. After the WebView “focus” event C. Whenever the OS feels like it
WebView Event Quiz Order of events: 1. “postlayout” 2. “beforeload”
3. “load” (App lays out Views As-Needed)
Performance Views are being laid out …
Performance “postlayout” and “load” “postlayout” and “load”
Performance “postlayout” and “load”
Performance “postlayout” and “load” “postlayout” and “load” “postlayout” and “load”
Performance WebView loads are throttled … NO big spikes! NO
crashes!
Reasonable Expectations • Kickass Charts • Performance • Don’t Be
So Lazy Enterprise Charting! ✔ ✔ ✔
SUMMARY! Amazing charts!! Happy clients!! Don’t FEAR the HYBRID! Great
performance!!