SlideShare a Scribd company logo
1 of 36
Download to read offline
Hello World
What is "Data Binding"
<h1>Hello 
{{name}}</h1> 
! 
<p> 
You 
are 
{{age}} 
years 
old 
</p> 
! 
<ul> 
{{#each 
number 
in 
numbers}} 
<li>{{number}}</li> 
{{/each}} 
</ul>
Data Binding 
• Instantiation 
• Parent Mutation 
• Child Mutation
function 
person() 
{ 
! 
! 
! 
} 
<h1>Hello 
{{name}}</h1> 
! 
<p> 
You 
are 
{{age}} 
years 
old 
</p> 
! 
<ul> 
{{#each 
number 
in 
numbers}} 
<li>{{number}}</li> 
{{/each}} 
</ul>
<h1>Hello 
{{name}}</h1> 
! 
<p> 
You 
are 
{{age}} 
years 
old 
</p> 
! 
<ul> 
{{#each 
number 
in 
numbers}} 
<li>{{number}}</li> 
{{/each}} 
</ul> 
( name 
"Yehuda 
Katz" 
age 
) 
32 
numbers 
[ 
"718-­‐877-­‐1325" 
] <h1>Hello 
Yehuda 
Katz</h1> 
! 
<p> 
You 
are 
32 
years 
old 
</p> 
! 
<ul> 
<li>718-­‐877-­‐1325</li> 
</ul> →
Data Binding 
• Instantiation 
• Parent Mutation 
• Child Mutation
<h1>Hello 
{{name}}</h1> 
! 
<p> 
You 
are 
{{age}} 
years 
old 
</p> 
! 
<ul> 
{{#each 
number 
in 
numbers}} 
<li>{{number}}</li> 
{{/each}} 
</ul> 
( name 
"Yehuda 
Katz" 
age 
) 
32 
numbers 
[ 
"718-­‐877-­‐1325" 
] <h1>Hello 
Yehuda 
Katz</h1> 
! 
<p> 
You 
are 
32 
years 
old 
</p> 
! 
<ul> 
<li>718-­‐877-­‐1325</li> 
</ul> →
[ 
"718-­‐877-­‐1325" 
] ( ) 
<h1>Hello 
Yehuda 
Katz</h1> 
! 
<p> 
You 
are 
32 
years 
old 
</p> 
! 
<ul> 
<li>718-­‐877-­‐1325</li> 
</ul> 
<h1>Hello 
{{name}}</h1> 
! 
<p> 
You 
are 
{{age}} 
years 
old 
</p> 
! 
<ul> 
{{#each 
number 
in 
numbers}} 
<li>{{number}}</li> 
{{/each}} 
</ul> 
name 
"Yehuda 
Katz" 
age 
33 
numbers 
33 
→
Data Binding 
• Instantiation 
• Parent Mutation 
• Child Mutation
function 
person() 
{ 
! 
! 
! 
} 
<h1>Hello 
{{name}}</h1> 
! 
<p> 
{{input 
value=age}} 
You 
are 
{{age}} 
years 
old 
</p> 
! 
<ul> 
{{#each 
number 
in 
numbers}} 
<li>{{number}}</li> 
{{/each}} 
</ul>
<h1>Hello 
{{name}}</h1> 
! 
<p> 
{{input 
value=age}} 
You 
are 
{{age}} 
years 
old 
</p> 
! 
<ul> 
{{#each 
number 
in 
numbers}} 
<li>{{number}}</li> 
{{/each}} 
</ul> 
( name 
"Yehuda 
Katz" 
age 
) 
32 
numbers 
[ 
"718-­‐877-­‐1325" 
] <h1>Hello 
Yehuda 
Katz</h1> 
! 
<p> 
<input 
value="32"> 
You 
are 
32 
years 
old 
</p> 
! 
<ul> 
<li>718-­‐877-­‐1325</li> 
</ul> →
<h1>Hello 
{{name}}</h1> 
! 
<p> 
{{input 
value=age}} 
You 
are 
{{age}} 
years 
old 
</p> 
! 
<ul> 
{{#each 
number 
in 
numbers}} 
<li>{{number}}</li> 
{{/each}} 
</ul> 
( name 
"Yehuda 
Katz" 
age 
) 
32 
numbers 
[ 
"718-­‐877-­‐1325" 
] <h1>Hello 
Yehuda 
Katz</h1> 
! 
<p> 
<input 
value="33"> 
You 
are 
32 
years 
old 
</p> 
! 
<ul> 
<li>718-­‐877-­‐1325</li> 
</ul> →
<h1>Hello 
{{name}}</h1> 
! 
<p> 
{{input 
value=age}} 
You 
are 
{{age}} 
years 
old 
</p> 
! 
<ul> 
{{#each 
number 
in 
numbers}} 
<li>{{number}}</li> 
{{/each}} 
</ul> 
( name 
"Yehuda 
Katz" 
age 
) 
33 
numbers 
[ 
"718-­‐877-­‐1325" 
] <h1>Hello 
Yehuda 
Katz</h1> 
! 
<p> 
<input 
value="33"> 
You 
are 
32 
years 
old 
</p> 
! 
<ul> 
<li>718-­‐877-­‐1325</li> 
</ul> →
<h1>Hello 
{{name}}</h1> 
! 
<p> 
{{input 
value=age}} 
You 
are 
{{age}} 
years 
old 
</p> 
! 
<ul> 
{{#each 
number 
in 
numbers}} 
<li>{{number}}</li> 
{{/each}} 
</ul> 
( name 
"Yehuda 
Katz" 
age 
) 
33 
numbers 
[ 
"718-­‐877-­‐1325" 
] <h1>Hello 
Yehuda 
Katz</h1> 
! 
<p> 
<input 
value="33"> 
You 
are 
33 
years 
old 
</p> 
! 
<ul> 
<li>718-­‐877-­‐1325</li> 
</ul> →
Child Mutation, How 
<input 
value="{{name}}"> 
<h1>{{name}}</h1>
Child Mutation, Observation 
<input 
value="{{name}}"> 
<h1>{{name}}</h1> 
(Polymer, Knockout, Ember) 
Object Model
Pros 
• Very predictable performance 
• Transparent Updates 
• Maximal Decoupling 
Cons 
• Requires .set (except O.o) 
• Can obscure data flow
Child Mutation, Pub Sub 
<input 
value="{{name}}"> 
<h1>{{name}}</h1> 
(Flux, Backbone) 
Event Bus
Pros Cons 
• Very simple 
• Reasonable decoupling 
• Very repetitive 
• Often uses globals 
• Obscures data flow
Child Mutation, Dirty Checking 
<input 
value="{{name}}"> 
<h1>{{name}}</h1> 
(Angular) 
Post-Event
Pros Cons 
• Mostly transparent updates* 
• Good decoupling 
• No .set and works today 
• Unpredictable performance 
• Can obscure data flow 
• *Leaky watch abstraction
Child Mutation, Virtual DOM 
<input 
value="{{name}}"> 
<h1>{{name}}</h1> 
(React, Ember.next?) 
Parent 
Component
Pros 
• Explicit data flow 
• No .set and works today 
• Reasonably predictable 
performance 
Cons 
• Explicit updates 
• Performance edge cases 
• Asterisks around server 
coordination
Data Binding 
• Instantiation 
• Parent Mutation 
• Child Mutation
Instantiation, When? 
• App bootstrap 
• Page navigation
Bootstrap Instantiation, Frameworks 
• Backbone and React: up to you 
• Angular: Automatically, via the app attribute 
• Ember: Automatically, via the router
Navigation Instantiation, Frameworks 
• Backbone: Optionally, through the router 
• React: Up to you 
• Angular: Optionally, via the router 
• Ember: Automatically, via the router
Parent Mutation, When? 
• Ajax response 
• WebSockets
Parent Mutation, How? 
• Option 1: Indirectly, through pub/sub or observation 
• Option 2: Directly, by coupling the request or response to UI
Ideally, Consistent
Router, Observable Objects 
instantiation 
& 
navigation 
internal mutation 
& 
external mutation
Instantation Navigation Internal External 
React Your choice Your choice Explicit via Callbacks 
Notify parent 
component, which 
async triggers setState 
Angular <app> Optional Router Transparent 
Notify $scope, which 
async updates itself, 
then transparent 
Ember Router Router Transparent 
Notify router, which 
async updates model, 
then transparent 
Backbone Your choice, optional 
router 
Your choice, optional 
router "Pub Sub" "Pub Sub"
Instantation Navigation Internal External 
React Your choice Your choice Explicit via Callbacks 
Notify parent 
component, which 
async triggers setState 
React w/ 
Flux Same as React Same as React Same as React 
or "Pub Sub" 
Same as React or 
notify Flux, which 
notifies listening views 
("Pub Sub") 
React w/ 
React Router React Router React Router Same as React Same as React 
React w/ 
Both React Router React Router Same as React 
or "Pub Sub" 
Same as React or 
notify Flux, which 
notifies listening views 
("Pub Sub")
Hello World

More Related Content

Viewers also liked

Creating a Smile Worthy World
Creating a Smile Worthy WorldCreating a Smile Worthy World
Creating a Smile Worthy WorldFITC
 
Hardware for a_soft_world_bkup
Hardware for a_soft_world_bkupHardware for a_soft_world_bkup
Hardware for a_soft_world_bkupFITC
 
Gamify Your Life – My Epic Quest of Awesome - Eric Boyd
Gamify Your Life – My Epic Quest of Awesome - Eric BoydGamify Your Life – My Epic Quest of Awesome - Eric Boyd
Gamify Your Life – My Epic Quest of Awesome - Eric BoydFITC
 
The Little Shop of TDD Horrors
The Little Shop of TDD HorrorsThe Little Shop of TDD Horrors
The Little Shop of TDD HorrorsFITC
 
The Working Dead
The Working DeadThe Working Dead
The Working DeadFITC
 
“It’s all a matter of Perspective.” Incorporating Play to Help Solve Problems
“It’s all a matter of Perspective.” Incorporating Play to Help Solve Problems“It’s all a matter of Perspective.” Incorporating Play to Help Solve Problems
“It’s all a matter of Perspective.” Incorporating Play to Help Solve ProblemsFITC
 
! or ? with Chip Kidd
! or ? with Chip Kidd! or ? with Chip Kidd
! or ? with Chip KiddFITC
 
Technolust: Kitbashing the Future
Technolust: Kitbashing the FutureTechnolust: Kitbashing the Future
Technolust: Kitbashing the FutureFITC
 
Goofy, Goodfellas and a Gardener: The Masters of Experience Design.
Goofy, Goodfellas and a Gardener: The Masters of Experience Design.Goofy, Goodfellas and a Gardener: The Masters of Experience Design.
Goofy, Goodfellas and a Gardener: The Masters of Experience Design.FITC
 
Defying Definition: The Path to Eschewing Traditional Design Genres with Davi...
Defying Definition: The Path to Eschewing Traditional Design Genres with Davi...Defying Definition: The Path to Eschewing Traditional Design Genres with Davi...
Defying Definition: The Path to Eschewing Traditional Design Genres with Davi...FITC
 
Managing The Process
Managing The ProcessManaging The Process
Managing The ProcessFITC
 
Adapt or Die
Adapt or DieAdapt or Die
Adapt or DieFITC
 
Breaking The Broken Web
Breaking The Broken WebBreaking The Broken Web
Breaking The Broken WebFITC
 
Designing True Cross-Platform Apps
Designing True Cross-Platform AppsDesigning True Cross-Platform Apps
Designing True Cross-Platform AppsFITC
 
CSS: A Slippery Slope to the Backend
CSS: A Slippery Slope to the BackendCSS: A Slippery Slope to the Backend
CSS: A Slippery Slope to the BackendFITC
 
Customizing Your Process
Customizing Your ProcessCustomizing Your Process
Customizing Your ProcessFITC
 
Programming Play
Programming PlayProgramming Play
Programming PlayFITC
 
Design that’s easy on the brain
Design that’s easy on the brainDesign that’s easy on the brain
Design that’s easy on the brainFITC
 
Why Everyone Should Own a Giant Robot Arm
Why Everyone Should Own a Giant Robot ArmWhy Everyone Should Own a Giant Robot Arm
Why Everyone Should Own a Giant Robot ArmFITC
 
The Power of Play in Experimental Design with Claudia Chagüi De León
The Power of Play in Experimental Design with Claudia Chagüi De LeónThe Power of Play in Experimental Design with Claudia Chagüi De León
The Power of Play in Experimental Design with Claudia Chagüi De LeónFITC
 

Viewers also liked (20)

Creating a Smile Worthy World
Creating a Smile Worthy WorldCreating a Smile Worthy World
Creating a Smile Worthy World
 
Hardware for a_soft_world_bkup
Hardware for a_soft_world_bkupHardware for a_soft_world_bkup
Hardware for a_soft_world_bkup
 
Gamify Your Life – My Epic Quest of Awesome - Eric Boyd
Gamify Your Life – My Epic Quest of Awesome - Eric BoydGamify Your Life – My Epic Quest of Awesome - Eric Boyd
Gamify Your Life – My Epic Quest of Awesome - Eric Boyd
 
The Little Shop of TDD Horrors
The Little Shop of TDD HorrorsThe Little Shop of TDD Horrors
The Little Shop of TDD Horrors
 
The Working Dead
The Working DeadThe Working Dead
The Working Dead
 
“It’s all a matter of Perspective.” Incorporating Play to Help Solve Problems
“It’s all a matter of Perspective.” Incorporating Play to Help Solve Problems“It’s all a matter of Perspective.” Incorporating Play to Help Solve Problems
“It’s all a matter of Perspective.” Incorporating Play to Help Solve Problems
 
! or ? with Chip Kidd
! or ? with Chip Kidd! or ? with Chip Kidd
! or ? with Chip Kidd
 
Technolust: Kitbashing the Future
Technolust: Kitbashing the FutureTechnolust: Kitbashing the Future
Technolust: Kitbashing the Future
 
Goofy, Goodfellas and a Gardener: The Masters of Experience Design.
Goofy, Goodfellas and a Gardener: The Masters of Experience Design.Goofy, Goodfellas and a Gardener: The Masters of Experience Design.
Goofy, Goodfellas and a Gardener: The Masters of Experience Design.
 
Defying Definition: The Path to Eschewing Traditional Design Genres with Davi...
Defying Definition: The Path to Eschewing Traditional Design Genres with Davi...Defying Definition: The Path to Eschewing Traditional Design Genres with Davi...
Defying Definition: The Path to Eschewing Traditional Design Genres with Davi...
 
Managing The Process
Managing The ProcessManaging The Process
Managing The Process
 
Adapt or Die
Adapt or DieAdapt or Die
Adapt or Die
 
Breaking The Broken Web
Breaking The Broken WebBreaking The Broken Web
Breaking The Broken Web
 
Designing True Cross-Platform Apps
Designing True Cross-Platform AppsDesigning True Cross-Platform Apps
Designing True Cross-Platform Apps
 
CSS: A Slippery Slope to the Backend
CSS: A Slippery Slope to the BackendCSS: A Slippery Slope to the Backend
CSS: A Slippery Slope to the Backend
 
Customizing Your Process
Customizing Your ProcessCustomizing Your Process
Customizing Your Process
 
Programming Play
Programming PlayProgramming Play
Programming Play
 
Design that’s easy on the brain
Design that’s easy on the brainDesign that’s easy on the brain
Design that’s easy on the brain
 
Why Everyone Should Own a Giant Robot Arm
Why Everyone Should Own a Giant Robot ArmWhy Everyone Should Own a Giant Robot Arm
Why Everyone Should Own a Giant Robot Arm
 
The Power of Play in Experimental Design with Claudia Chagüi De León
The Power of Play in Experimental Design with Claudia Chagüi De LeónThe Power of Play in Experimental Design with Claudia Chagüi De León
The Power of Play in Experimental Design with Claudia Chagüi De León
 

Similar to Building Apps with Ember

To scale or not to scale: Key/Value, Document, SQL, JPA – What’s right for my...
To scale or not to scale: Key/Value, Document, SQL, JPA – What’s right for my...To scale or not to scale: Key/Value, Document, SQL, JPA – What’s right for my...
To scale or not to scale: Key/Value, Document, SQL, JPA – What’s right for my...Uri Cohen
 
Async. and Realtime Geo Applications with Node.js
Async. and Realtime Geo Applications with Node.jsAsync. and Realtime Geo Applications with Node.js
Async. and Realtime Geo Applications with Node.jsShoaib Burq
 
Mongo db 101 dc group
Mongo db 101 dc groupMongo db 101 dc group
Mongo db 101 dc groupJohn Ragan
 
Python Code Camp for Professionals 3/4
Python Code Camp for Professionals 3/4Python Code Camp for Professionals 3/4
Python Code Camp for Professionals 3/4DEVCON
 
JavaScript for Flex Devs
JavaScript for Flex DevsJavaScript for Flex Devs
JavaScript for Flex DevsAaronius
 
FIFA fails, Guy Kawasaki and real estate in SF - find out about all three by ...
FIFA fails, Guy Kawasaki and real estate in SF - find out about all three by ...FIFA fails, Guy Kawasaki and real estate in SF - find out about all three by ...
FIFA fails, Guy Kawasaki and real estate in SF - find out about all three by ...Elżbieta Bednarek
 
Implementing Awesome: An HTML5/CSS3 Workshop
Implementing Awesome: An HTML5/CSS3 WorkshopImplementing Awesome: An HTML5/CSS3 Workshop
Implementing Awesome: An HTML5/CSS3 WorkshopShoshi Roberts
 
MongoDB for Analytics
MongoDB for AnalyticsMongoDB for Analytics
MongoDB for AnalyticsMongoDB
 
Elasticsearch: You know, for search! and more!
Elasticsearch: You know, for search! and more!Elasticsearch: You know, for search! and more!
Elasticsearch: You know, for search! and more!Philips Kokoh Prasetyo
 
Happy Go Programming
Happy Go ProgrammingHappy Go Programming
Happy Go ProgrammingLin Yo-An
 
Forcelandia 2016 PK Chunking
Forcelandia 2016 PK ChunkingForcelandia 2016 PK Chunking
Forcelandia 2016 PK ChunkingDaniel Peter
 
Overview of GraphQL & Clients
Overview of GraphQL & ClientsOverview of GraphQL & Clients
Overview of GraphQL & ClientsPokai Chang
 
Python Code Camp for Professionals 4/4
Python Code Camp for Professionals 4/4Python Code Camp for Professionals 4/4
Python Code Camp for Professionals 4/4DEVCON
 
AstriCon 2017 - Machine Learning, AI & Asterisk
AstriCon 2017  - Machine Learning, AI & AsteriskAstriCon 2017  - Machine Learning, AI & Asterisk
AstriCon 2017 - Machine Learning, AI & AsteriskEvan McGee
 

Similar to Building Apps with Ember (20)

To scale or not to scale: Key/Value, Document, SQL, JPA – What’s right for my...
To scale or not to scale: Key/Value, Document, SQL, JPA – What’s right for my...To scale or not to scale: Key/Value, Document, SQL, JPA – What’s right for my...
To scale or not to scale: Key/Value, Document, SQL, JPA – What’s right for my...
 
Async. and Realtime Geo Applications with Node.js
Async. and Realtime Geo Applications with Node.jsAsync. and Realtime Geo Applications with Node.js
Async. and Realtime Geo Applications with Node.js
 
Mongo db 101 dc group
Mongo db 101 dc groupMongo db 101 dc group
Mongo db 101 dc group
 
Python Code Camp for Professionals 3/4
Python Code Camp for Professionals 3/4Python Code Camp for Professionals 3/4
Python Code Camp for Professionals 3/4
 
JavaScript for Flex Devs
JavaScript for Flex DevsJavaScript for Flex Devs
JavaScript for Flex Devs
 
Streaming SQL
Streaming SQLStreaming SQL
Streaming SQL
 
Fuzzing - A Tale of Two Cultures
Fuzzing - A Tale of Two CulturesFuzzing - A Tale of Two Cultures
Fuzzing - A Tale of Two Cultures
 
FIFA fails, Guy Kawasaki and real estate in SF - find out about all three by ...
FIFA fails, Guy Kawasaki and real estate in SF - find out about all three by ...FIFA fails, Guy Kawasaki and real estate in SF - find out about all three by ...
FIFA fails, Guy Kawasaki and real estate in SF - find out about all three by ...
 
Html5 101
Html5 101Html5 101
Html5 101
 
Implementing Awesome: An HTML5/CSS3 Workshop
Implementing Awesome: An HTML5/CSS3 WorkshopImplementing Awesome: An HTML5/CSS3 Workshop
Implementing Awesome: An HTML5/CSS3 Workshop
 
MongoDB for Analytics
MongoDB for AnalyticsMongoDB for Analytics
MongoDB for Analytics
 
Elasticsearch: You know, for search! and more!
Elasticsearch: You know, for search! and more!Elasticsearch: You know, for search! and more!
Elasticsearch: You know, for search! and more!
 
Happy Go Programming
Happy Go ProgrammingHappy Go Programming
Happy Go Programming
 
Forcelandia 2016 PK Chunking
Forcelandia 2016 PK ChunkingForcelandia 2016 PK Chunking
Forcelandia 2016 PK Chunking
 
Ws rest
Ws restWs rest
Ws rest
 
Overview of GraphQL & Clients
Overview of GraphQL & ClientsOverview of GraphQL & Clients
Overview of GraphQL & Clients
 
Python Code Camp for Professionals 4/4
Python Code Camp for Professionals 4/4Python Code Camp for Professionals 4/4
Python Code Camp for Professionals 4/4
 
Java script
Java scriptJava script
Java script
 
The Devil and HTML5
The Devil and HTML5The Devil and HTML5
The Devil and HTML5
 
AstriCon 2017 - Machine Learning, AI & Asterisk
AstriCon 2017  - Machine Learning, AI & AsteriskAstriCon 2017  - Machine Learning, AI & Asterisk
AstriCon 2017 - Machine Learning, AI & Asterisk
 

More from FITC

Cut it up
Cut it upCut it up
Cut it upFITC
 
Designing for Digital Health
Designing for Digital HealthDesigning for Digital Health
Designing for Digital HealthFITC
 
Profiling JavaScript Performance
Profiling JavaScript PerformanceProfiling JavaScript Performance
Profiling JavaScript PerformanceFITC
 
Surviving Your Tech Stack
Surviving Your Tech StackSurviving Your Tech Stack
Surviving Your Tech StackFITC
 
How to Pitch Your First AR Project
How to Pitch Your First AR ProjectHow to Pitch Your First AR Project
How to Pitch Your First AR ProjectFITC
 
Start by Understanding the Problem, Not by Delivering the Answer
Start by Understanding the Problem, Not by Delivering the AnswerStart by Understanding the Problem, Not by Delivering the Answer
Start by Understanding the Problem, Not by Delivering the AnswerFITC
 
Cocaine to Carrots: The Art of Telling Someone Else’s Story
Cocaine to Carrots: The Art of Telling Someone Else’s StoryCocaine to Carrots: The Art of Telling Someone Else’s Story
Cocaine to Carrots: The Art of Telling Someone Else’s StoryFITC
 
Everyday Innovation
Everyday InnovationEveryday Innovation
Everyday InnovationFITC
 
HyperLight Websites
HyperLight WebsitesHyperLight Websites
HyperLight WebsitesFITC
 
Everything is Terrifying
Everything is TerrifyingEverything is Terrifying
Everything is TerrifyingFITC
 
Post-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future HumanPost-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future HumanFITC
 
The Rise of the Creative Social Influencer (and How to Become One)
The Rise of the Creative Social Influencer (and How to Become One)The Rise of the Creative Social Influencer (and How to Become One)
The Rise of the Creative Social Influencer (and How to Become One)FITC
 
East of the Rockies: Developing an AR Game
East of the Rockies: Developing an AR GameEast of the Rockies: Developing an AR Game
East of the Rockies: Developing an AR GameFITC
 
Creating a Proactive Healthcare System
Creating a Proactive Healthcare SystemCreating a Proactive Healthcare System
Creating a Proactive Healthcare SystemFITC
 
World Transformation: The Secret Agenda of Product Design
World Transformation: The Secret Agenda of Product DesignWorld Transformation: The Secret Agenda of Product Design
World Transformation: The Secret Agenda of Product DesignFITC
 
The Power of Now
The Power of NowThe Power of Now
The Power of NowFITC
 
High Performance PWAs
High Performance PWAsHigh Performance PWAs
High Performance PWAsFITC
 
Rise of the JAMstack
Rise of the JAMstackRise of the JAMstack
Rise of the JAMstackFITC
 
From Closed to Open: A Journey of Self Discovery
From Closed to Open: A Journey of Self DiscoveryFrom Closed to Open: A Journey of Self Discovery
From Closed to Open: A Journey of Self DiscoveryFITC
 
Projects Ain’t Nobody Got Time For
Projects Ain’t Nobody Got Time ForProjects Ain’t Nobody Got Time For
Projects Ain’t Nobody Got Time ForFITC
 

More from FITC (20)

Cut it up
Cut it upCut it up
Cut it up
 
Designing for Digital Health
Designing for Digital HealthDesigning for Digital Health
Designing for Digital Health
 
Profiling JavaScript Performance
Profiling JavaScript PerformanceProfiling JavaScript Performance
Profiling JavaScript Performance
 
Surviving Your Tech Stack
Surviving Your Tech StackSurviving Your Tech Stack
Surviving Your Tech Stack
 
How to Pitch Your First AR Project
How to Pitch Your First AR ProjectHow to Pitch Your First AR Project
How to Pitch Your First AR Project
 
Start by Understanding the Problem, Not by Delivering the Answer
Start by Understanding the Problem, Not by Delivering the AnswerStart by Understanding the Problem, Not by Delivering the Answer
Start by Understanding the Problem, Not by Delivering the Answer
 
Cocaine to Carrots: The Art of Telling Someone Else’s Story
Cocaine to Carrots: The Art of Telling Someone Else’s StoryCocaine to Carrots: The Art of Telling Someone Else’s Story
Cocaine to Carrots: The Art of Telling Someone Else’s Story
 
Everyday Innovation
Everyday InnovationEveryday Innovation
Everyday Innovation
 
HyperLight Websites
HyperLight WebsitesHyperLight Websites
HyperLight Websites
 
Everything is Terrifying
Everything is TerrifyingEverything is Terrifying
Everything is Terrifying
 
Post-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future HumanPost-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future Human
 
The Rise of the Creative Social Influencer (and How to Become One)
The Rise of the Creative Social Influencer (and How to Become One)The Rise of the Creative Social Influencer (and How to Become One)
The Rise of the Creative Social Influencer (and How to Become One)
 
East of the Rockies: Developing an AR Game
East of the Rockies: Developing an AR GameEast of the Rockies: Developing an AR Game
East of the Rockies: Developing an AR Game
 
Creating a Proactive Healthcare System
Creating a Proactive Healthcare SystemCreating a Proactive Healthcare System
Creating a Proactive Healthcare System
 
World Transformation: The Secret Agenda of Product Design
World Transformation: The Secret Agenda of Product DesignWorld Transformation: The Secret Agenda of Product Design
World Transformation: The Secret Agenda of Product Design
 
The Power of Now
The Power of NowThe Power of Now
The Power of Now
 
High Performance PWAs
High Performance PWAsHigh Performance PWAs
High Performance PWAs
 
Rise of the JAMstack
Rise of the JAMstackRise of the JAMstack
Rise of the JAMstack
 
From Closed to Open: A Journey of Self Discovery
From Closed to Open: A Journey of Self DiscoveryFrom Closed to Open: A Journey of Self Discovery
From Closed to Open: A Journey of Self Discovery
 
Projects Ain’t Nobody Got Time For
Projects Ain’t Nobody Got Time ForProjects Ain’t Nobody Got Time For
Projects Ain’t Nobody Got Time For
 

Recently uploaded

On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024APNIC
 
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLLucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLimonikaupta
 
VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...
VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...
VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...SUHANI PANDEY
 
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebGDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebJames Anderson
 
Russian Call Girls Pune (Adult Only) 8005736733 Escort Service 24x7 Cash Pay...
Russian Call Girls Pune  (Adult Only) 8005736733 Escort Service 24x7 Cash Pay...Russian Call Girls Pune  (Adult Only) 8005736733 Escort Service 24x7 Cash Pay...
Russian Call Girls Pune (Adult Only) 8005736733 Escort Service 24x7 Cash Pay...SUHANI PANDEY
 
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.soniya singh
 
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...Delhi Call girls
 
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine ServiceHot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Servicesexy call girls service in goa
 
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...Neha Pandey
 
Trump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts SweatshirtTrump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts Sweatshirtrahman018755
 
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...SUHANI PANDEY
 
Real Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirtReal Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirtrahman018755
 
Al Barsha Night Partner +0567686026 Call Girls Dubai
Al Barsha Night Partner +0567686026 Call Girls  DubaiAl Barsha Night Partner +0567686026 Call Girls  Dubai
Al Barsha Night Partner +0567686026 Call Girls DubaiEscorts Call Girls
 
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort ServiceBusty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort ServiceDelhi Call girls
 
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.soniya singh
 

Recently uploaded (20)

On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024
 
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLLucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
 
VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...
VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...
VIP Model Call Girls NIBM ( Pune ) Call ON 8005736733 Starting From 5K to 25K...
 
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebGDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
 
Russian Call Girls Pune (Adult Only) 8005736733 Escort Service 24x7 Cash Pay...
Russian Call Girls Pune  (Adult Only) 8005736733 Escort Service 24x7 Cash Pay...Russian Call Girls Pune  (Adult Only) 8005736733 Escort Service 24x7 Cash Pay...
Russian Call Girls Pune (Adult Only) 8005736733 Escort Service 24x7 Cash Pay...
 
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
 
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
 
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
 
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine ServiceHot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
 
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
 
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
 
Trump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts SweatshirtTrump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts Sweatshirt
 
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
 
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
 
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
 
Real Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirtReal Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirt
 
Al Barsha Night Partner +0567686026 Call Girls Dubai
Al Barsha Night Partner +0567686026 Call Girls  DubaiAl Barsha Night Partner +0567686026 Call Girls  Dubai
Al Barsha Night Partner +0567686026 Call Girls Dubai
 
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort ServiceBusty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
 
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
 
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
 

Building Apps with Ember

  • 1.
  • 3. What is "Data Binding"
  • 4. <h1>Hello {{name}}</h1> ! <p> You are {{age}} years old </p> ! <ul> {{#each number in numbers}} <li>{{number}}</li> {{/each}} </ul>
  • 5. Data Binding • Instantiation • Parent Mutation • Child Mutation
  • 6. function person() { ! ! ! } <h1>Hello {{name}}</h1> ! <p> You are {{age}} years old </p> ! <ul> {{#each number in numbers}} <li>{{number}}</li> {{/each}} </ul>
  • 7. <h1>Hello {{name}}</h1> ! <p> You are {{age}} years old </p> ! <ul> {{#each number in numbers}} <li>{{number}}</li> {{/each}} </ul> ( name "Yehuda Katz" age ) 32 numbers [ "718-­‐877-­‐1325" ] <h1>Hello Yehuda Katz</h1> ! <p> You are 32 years old </p> ! <ul> <li>718-­‐877-­‐1325</li> </ul> →
  • 8. Data Binding • Instantiation • Parent Mutation • Child Mutation
  • 9. <h1>Hello {{name}}</h1> ! <p> You are {{age}} years old </p> ! <ul> {{#each number in numbers}} <li>{{number}}</li> {{/each}} </ul> ( name "Yehuda Katz" age ) 32 numbers [ "718-­‐877-­‐1325" ] <h1>Hello Yehuda Katz</h1> ! <p> You are 32 years old </p> ! <ul> <li>718-­‐877-­‐1325</li> </ul> →
  • 10. [ "718-­‐877-­‐1325" ] ( ) <h1>Hello Yehuda Katz</h1> ! <p> You are 32 years old </p> ! <ul> <li>718-­‐877-­‐1325</li> </ul> <h1>Hello {{name}}</h1> ! <p> You are {{age}} years old </p> ! <ul> {{#each number in numbers}} <li>{{number}}</li> {{/each}} </ul> name "Yehuda Katz" age 33 numbers 33 →
  • 11. Data Binding • Instantiation • Parent Mutation • Child Mutation
  • 12. function person() { ! ! ! } <h1>Hello {{name}}</h1> ! <p> {{input value=age}} You are {{age}} years old </p> ! <ul> {{#each number in numbers}} <li>{{number}}</li> {{/each}} </ul>
  • 13. <h1>Hello {{name}}</h1> ! <p> {{input value=age}} You are {{age}} years old </p> ! <ul> {{#each number in numbers}} <li>{{number}}</li> {{/each}} </ul> ( name "Yehuda Katz" age ) 32 numbers [ "718-­‐877-­‐1325" ] <h1>Hello Yehuda Katz</h1> ! <p> <input value="32"> You are 32 years old </p> ! <ul> <li>718-­‐877-­‐1325</li> </ul> →
  • 14. <h1>Hello {{name}}</h1> ! <p> {{input value=age}} You are {{age}} years old </p> ! <ul> {{#each number in numbers}} <li>{{number}}</li> {{/each}} </ul> ( name "Yehuda Katz" age ) 32 numbers [ "718-­‐877-­‐1325" ] <h1>Hello Yehuda Katz</h1> ! <p> <input value="33"> You are 32 years old </p> ! <ul> <li>718-­‐877-­‐1325</li> </ul> →
  • 15. <h1>Hello {{name}}</h1> ! <p> {{input value=age}} You are {{age}} years old </p> ! <ul> {{#each number in numbers}} <li>{{number}}</li> {{/each}} </ul> ( name "Yehuda Katz" age ) 33 numbers [ "718-­‐877-­‐1325" ] <h1>Hello Yehuda Katz</h1> ! <p> <input value="33"> You are 32 years old </p> ! <ul> <li>718-­‐877-­‐1325</li> </ul> →
  • 16. <h1>Hello {{name}}</h1> ! <p> {{input value=age}} You are {{age}} years old </p> ! <ul> {{#each number in numbers}} <li>{{number}}</li> {{/each}} </ul> ( name "Yehuda Katz" age ) 33 numbers [ "718-­‐877-­‐1325" ] <h1>Hello Yehuda Katz</h1> ! <p> <input value="33"> You are 33 years old </p> ! <ul> <li>718-­‐877-­‐1325</li> </ul> →
  • 17. Child Mutation, How <input value="{{name}}"> <h1>{{name}}</h1>
  • 18. Child Mutation, Observation <input value="{{name}}"> <h1>{{name}}</h1> (Polymer, Knockout, Ember) Object Model
  • 19. Pros • Very predictable performance • Transparent Updates • Maximal Decoupling Cons • Requires .set (except O.o) • Can obscure data flow
  • 20. Child Mutation, Pub Sub <input value="{{name}}"> <h1>{{name}}</h1> (Flux, Backbone) Event Bus
  • 21. Pros Cons • Very simple • Reasonable decoupling • Very repetitive • Often uses globals • Obscures data flow
  • 22. Child Mutation, Dirty Checking <input value="{{name}}"> <h1>{{name}}</h1> (Angular) Post-Event
  • 23. Pros Cons • Mostly transparent updates* • Good decoupling • No .set and works today • Unpredictable performance • Can obscure data flow • *Leaky watch abstraction
  • 24. Child Mutation, Virtual DOM <input value="{{name}}"> <h1>{{name}}</h1> (React, Ember.next?) Parent Component
  • 25. Pros • Explicit data flow • No .set and works today • Reasonably predictable performance Cons • Explicit updates • Performance edge cases • Asterisks around server coordination
  • 26. Data Binding • Instantiation • Parent Mutation • Child Mutation
  • 27. Instantiation, When? • App bootstrap • Page navigation
  • 28. Bootstrap Instantiation, Frameworks • Backbone and React: up to you • Angular: Automatically, via the app attribute • Ember: Automatically, via the router
  • 29. Navigation Instantiation, Frameworks • Backbone: Optionally, through the router • React: Up to you • Angular: Optionally, via the router • Ember: Automatically, via the router
  • 30. Parent Mutation, When? • Ajax response • WebSockets
  • 31. Parent Mutation, How? • Option 1: Indirectly, through pub/sub or observation • Option 2: Directly, by coupling the request or response to UI
  • 33. Router, Observable Objects instantiation & navigation internal mutation & external mutation
  • 34. Instantation Navigation Internal External React Your choice Your choice Explicit via Callbacks Notify parent component, which async triggers setState Angular <app> Optional Router Transparent Notify $scope, which async updates itself, then transparent Ember Router Router Transparent Notify router, which async updates model, then transparent Backbone Your choice, optional router Your choice, optional router "Pub Sub" "Pub Sub"
  • 35. Instantation Navigation Internal External React Your choice Your choice Explicit via Callbacks Notify parent component, which async triggers setState React w/ Flux Same as React Same as React Same as React or "Pub Sub" Same as React or notify Flux, which notifies listening views ("Pub Sub") React w/ React Router React Router React Router Same as React Same as React React w/ Both React Router React Router Same as React or "Pub Sub" Same as React or notify Flux, which notifies listening views ("Pub Sub")