SlideShare a Scribd company logo
Ember is for 
Everybody 
Cory Forsyth 
@bantic
201 Created 
Cory Forsyth Matthew Beale 
http://201-created.com/
Our Stack 
• Frontend: Ember.js, 
Sass 
• Editor: Vim 
• Remote collab:tmux / 
tmate / screenhero 
• Backend: Ruby, Node, 
Python 
• Github Issues & PRs 
• Test-Driven 
• Communication: Slack 
• Organization: Trello 
• Deployment: Divshot, 
Heroku, S3, Azure
Our Work 
• Single Page App Development 
• Training 
• Tune-Up / Rescue 
• 0-100% Development 
• Open Source Contributions
Front-End 
Development in 2014 
is growing up
import/export 
JavaScript in 2014 
is growing up 
ecmascript 6 
generators 
Promises 
Broccoli 
TDD single-page apps 
classes 
JShint 
Systemjs
CSS in 2014 
is growing up 
transforms 
border-radius 
web fonts 
CSS performance tooling 
Sass/LESS 
[attr$=val] 
layout thrashing
Browsers in 2014 
are growing up 
transforms 
developer tools 
offline-first 
HTML5 APIs 
evergreen 
Content Security Policy 
mobile emulation
JavaScript is eating the 
world 
• Massive deployment base 
• “Fast” 
• Node 
• Node-webkit 
• Powerful Browser APIs
Evolution of Front-End 
JavaScript 
• onclick! 
• “Sprinkles” of JS! 
• “frameworks” (Prototype, MooTools, jQuery)! 
• build systems, asset pipelines (multi-file js)! 
• frameworks v2 (Backbone)! 
• high-level frameworks (Ember, Angular…)
JavaScript is Frontierland 
• Exciting new developments 
• ES6: First new JavaScript version in…? 
• Exciting new tools 
• Grunt, AMD, require.js, jspm, Broccoli, transpiler 
• Changing quickly 
• proliferation of libraries
Ember 
• Feels like 
• “Mature” Development 
• iOS App Development 
• Everything has a place 
• Holistic
The Ember Trifecta 
Ember + Ember Data 
Ember-CLI Ember Inspector
Ember-CLI 
• Command-line tool (like “rails”) 
• 1-step to a new app (ember new my-app) 
• Code generators (ember generate model User) 
• Built-in Test Harness 
• Rich, rapidly-growing plugin ecosystem
Ember Inspector 
• Chrome Extension 
• X-Ray Vision for 
• Ember Views 
• Ember Routes 
• Ember Data
Ember Demo 
Data Binding 
<p>! 
{{input value=name placeholder="Enter your name"}}! 
{{input type='checkbox' checked=showMany}}! 
</p>! 
! 
{{#if name}}! 
<p>! 
Your name is: {{name}}! 
</p>! 
{{/if}}! 
template
Ember Demo 
Computed Properties 
<h2>Computed Properties</h2>! 
! 
<p>! 
{{input value=firstName}}! 
{{input value=lastName}}! 
</p>! 
! 
{{#if name}}! 
<p>! 
Your full name is: {{name}}! 
</p>! 
{{/if}}! 
import Ember from 'ember';! 
! 
export default Ember.Controller.extend({! 
name: function(){! 
var first = this.get('firstName'),! 
last = this.get('lastName');! 
if (!first || !last) { return; }! 
! 
return first + ' ' + last;! 
}.property('firstName','lastName')! 
});! 
template controller
Ember Demo 
Computed Property Setters 
fullName: function(key, value){! 
if (arguments.length > 1) { // setter! 
var fullName = value,! 
names = fullName.split(' '),! 
firstName = names[0],! 
lastName = names[1];! 
controller 
! 
this.setProperties({! 
firstName: firstName,! 
lastName: lastName! 
});! 
}! 
! 
if (this.get('firstName') && this.get('lastName')) {! 
return this.get('firstName') + ' ' +! 
this.get('lastName');! 
}! 
}.property('firstName', 'lastName')!
Ember Demo 
Routes 
• Manage Asynchrony 
• Sub states: Loading, error 
• Promises
Ember Demo 
Query Params 
export default Ember.Controller.extend({! 
queryParams: ['page', 'count'],! 
! 
// defaults! 
page: 1,! 
count: 10! 
});!
Ember Demo 
Tests 
test('visiting /', function() {! 
visit('/');! 
! 
andThen(function() {! 
var h1 = find('h1:contains(Ember Is For Everybody)');equal(h1.length,! 
1,! 
'has title');! 
! 
equal(find('a[href="/data-binding"]').length,! 
1,! 
'has link to data-binding demo');! 
! 
equal(currentURL(), '/');! 
});! 
});!
Ember Is For Everybody
The Front-End Story 
• Ember is Mainstream-ready 
• Ember + Ember-CLI = 1st Class Dev 
Environment 
• How do apps grow with us? What does a long-lived 
SPA look like?
Other Ember Niceties 
• ember addons 
• ember data 
• ember components
Thank you 
Cory Forsyth 
@bantic 
Photo credits 
! ! 
! Wild West Dragon-orb! 
! Evolution Wikimedia! 
! Everybody Wikipedia!
Links 
Cory Forsyth 
@bantic 
Photo credits 
! ! 
! Wild West Dragon-orb! 
! Evolution Wikimedia! 
! Everybody Wikipedia! 
Slides: http://bit.ly/ember-everybody 
Example app: https://github.com/bantic/ember-is-for- 
everybody 
http://emberjs.com 
http://201-created.com/codethroughs 
http://ember-cli.com

More Related Content

What's hot (20)

PDF
Padrino - the Godfather of Sinatra
Stoyan Zhekov
 
PDF
Riding the Edge with Ember.js
aortbals
 
PPTX
GIB2021 - Testing with Postman
Daniel Toomey
 
PDF
Building a Desktop Streaming console with Node.js and WebKit
Emanuele Rampichini
 
PDF
Building a Desktop Streaming console with Electron and ReactJS
Emanuele Rampichini
 
PDF
Jozef Ve Providing Scalability for Pirates, Lizards and Zombies at #DOXLON
Outlyer
 
KEY
RESTful Api practices Rails 3
Anton Narusberg
 
PDF
Ruby conf 2011, Create your own rails framework
Pankaj Bhageria
 
PDF
PLAT-7 Spring Web Scripts and Spring Surf
Alfresco Software
 
PDF
Building APIs in an easy way using API Platform
Antonio Peric-Mazar
 
PDF
Cross-Platform Desktop Apps with Electron (Condensed Version)
David Neal
 
PDF
Kissy autocomplete
yiming he
 
PDF
Manage WordPress From the Command Line with WP-CLI
Shawn Hooper
 
PDF
Cucumber & BDD
Sam Davarnia
 
PPTX
Introduce cucumber
Bachue Zhou
 
PPTX
Automating Your Daily Tasks with Scripting - RubyConf 2015 Taiwan
Adler Hsieh
 
KEY
In-house web automation?
Adam Christian
 
PDF
Welcome to Swift (CocoaCoder 6/12/14)
Carl Brown
 
PDF
Cross-Platform Desktop Apps with Electron
David Neal
 
PPTX
Managing SharePoint Anywhere with Windows PowerShell
Ryan Dennis
 
Padrino - the Godfather of Sinatra
Stoyan Zhekov
 
Riding the Edge with Ember.js
aortbals
 
GIB2021 - Testing with Postman
Daniel Toomey
 
Building a Desktop Streaming console with Node.js and WebKit
Emanuele Rampichini
 
Building a Desktop Streaming console with Electron and ReactJS
Emanuele Rampichini
 
Jozef Ve Providing Scalability for Pirates, Lizards and Zombies at #DOXLON
Outlyer
 
RESTful Api practices Rails 3
Anton Narusberg
 
Ruby conf 2011, Create your own rails framework
Pankaj Bhageria
 
PLAT-7 Spring Web Scripts and Spring Surf
Alfresco Software
 
Building APIs in an easy way using API Platform
Antonio Peric-Mazar
 
Cross-Platform Desktop Apps with Electron (Condensed Version)
David Neal
 
Kissy autocomplete
yiming he
 
Manage WordPress From the Command Line with WP-CLI
Shawn Hooper
 
Cucumber & BDD
Sam Davarnia
 
Introduce cucumber
Bachue Zhou
 
Automating Your Daily Tasks with Scripting - RubyConf 2015 Taiwan
Adler Hsieh
 
In-house web automation?
Adam Christian
 
Welcome to Swift (CocoaCoder 6/12/14)
Carl Brown
 
Cross-Platform Desktop Apps with Electron
David Neal
 
Managing SharePoint Anywhere with Windows PowerShell
Ryan Dennis
 

Viewers also liked (11)

PDF
OAuth 2.0 Misconceptions
Cory Forsyth
 
PDF
Chrome Extensions at Manhattan JS
Cory Forsyth
 
PDF
Microsoft tech talk march 28 2014
Cory Forsyth
 
KEY
APIs: Internet for Robots
Cory Forsyth
 
PDF
EmberFest Mobiledoc Demo Lightning Talk
Cory Forsyth
 
PDF
Making ember-wormhole work with Fastboot
Cory Forsyth
 
PDF
Torii: Ember.js Authentication Library
Cory Forsyth
 
PDF
Ember testing internals with ember cli
Cory Forsyth
 
PDF
HTTP by Hand: Exploring HTTP/1.0, 1.1 and 2.0
Cory Forsyth
 
PPTX
Introduction to HTTP/2
Ido Flatow
 
PDF
What HTTP/2.0 Will Do For You
Mark Nottingham
 
OAuth 2.0 Misconceptions
Cory Forsyth
 
Chrome Extensions at Manhattan JS
Cory Forsyth
 
Microsoft tech talk march 28 2014
Cory Forsyth
 
APIs: Internet for Robots
Cory Forsyth
 
EmberFest Mobiledoc Demo Lightning Talk
Cory Forsyth
 
Making ember-wormhole work with Fastboot
Cory Forsyth
 
Torii: Ember.js Authentication Library
Cory Forsyth
 
Ember testing internals with ember cli
Cory Forsyth
 
HTTP by Hand: Exploring HTTP/1.0, 1.1 and 2.0
Cory Forsyth
 
Introduction to HTTP/2
Ido Flatow
 
What HTTP/2.0 Will Do For You
Mark Nottingham
 
Ad

Similar to Stackup New Languages Talk: Ember is for Everybody (20)

PDF
Workshop 16: EmberJS Parte I
Visual Engineering
 
PPT
Ember.js: Jump Start
Viacheslav Bukach
 
PPTX
Ember - introduction
Harikrishnan C
 
PDF
The road to Ember 2.0
Filippo Zanella
 
PDF
A Beginner's Guide to Ember
Richard Martin
 
PPTX
Intro to EmberJS
Billy Onjea
 
PDF
Ember presentation
Daniel N
 
ODP
Introduction to ember js
Adnan Arshad
 
PDF
Parse Apps with Ember.js
Matthew Beale
 
PDF
Intro to ember.js
Leo Hernandez
 
PDF
Introduction to Ember.js and how we used it at FlowPro.io
Paul Knittel
 
PDF
Delivering with ember.js
Andrei Sebastian Cîmpean
 
PPTX
Introduction to Ember.js
Vinoth Kumar
 
PPTX
The road to Ember.js 2.0
Codemotion
 
PPTX
Full slidescr16
Lucio Grenzi
 
PDF
Modern, Scalable, Ambitious apps with Ember.js
Mike North
 
PDF
Workshop 17: EmberJS parte II
Visual Engineering
 
PPTX
Intro to Ember.JS 2016
Sandino Núñez
 
PPTX
Emberjs and ASP.NET
Mike Melusky
 
PDF
Ember.js 101 - JSChannel NCR
Achal Aggarwal
 
Workshop 16: EmberJS Parte I
Visual Engineering
 
Ember.js: Jump Start
Viacheslav Bukach
 
Ember - introduction
Harikrishnan C
 
The road to Ember 2.0
Filippo Zanella
 
A Beginner's Guide to Ember
Richard Martin
 
Intro to EmberJS
Billy Onjea
 
Ember presentation
Daniel N
 
Introduction to ember js
Adnan Arshad
 
Parse Apps with Ember.js
Matthew Beale
 
Intro to ember.js
Leo Hernandez
 
Introduction to Ember.js and how we used it at FlowPro.io
Paul Knittel
 
Delivering with ember.js
Andrei Sebastian Cîmpean
 
Introduction to Ember.js
Vinoth Kumar
 
The road to Ember.js 2.0
Codemotion
 
Full slidescr16
Lucio Grenzi
 
Modern, Scalable, Ambitious apps with Ember.js
Mike North
 
Workshop 17: EmberJS parte II
Visual Engineering
 
Intro to Ember.JS 2016
Sandino Núñez
 
Emberjs and ASP.NET
Mike Melusky
 
Ember.js 101 - JSChannel NCR
Achal Aggarwal
 
Ad

Recently uploaded (20)

PPTX
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
 
PPTX
Top Managed Service Providers in Los Angeles
Captain IT
 
PDF
Rethinking Security Operations - Modern SOC.pdf
Haris Chughtai
 
PDF
How Current Advanced Cyber Threats Transform Business Operation
Eryk Budi Pratama
 
PDF
Building Resilience with Digital Twins : Lessons from Korea
SANGHEE SHIN
 
PPTX
The Yotta x CloudStack Advantage: Scalable, India-First Cloud
ShapeBlue
 
PDF
How a Code Plagiarism Checker Protects Originality in Programming
Code Quiry
 
PDF
TrustArc Webinar - Navigating Data Privacy in LATAM: Laws, Trends, and Compli...
TrustArc
 
PDF
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
PDF
Novus Safe Lite- What is Novus Safe Lite.pdf
Novus Hi-Tech
 
PDF
UiPath on Tour London Community Booth Deck
UiPathCommunity
 
PDF
Shuen Mei Parth Sharma Boost Productivity, Innovation and Efficiency wit...
AWS Chicago
 
PDF
Integrating IIoT with SCADA in Oil & Gas A Technical Perspective.pdf
Rejig Digital
 
PDF
UiPath vs Other Automation Tools Meeting Presentation.pdf
Tracy Dixon
 
PPTX
Building and Operating a Private Cloud with CloudStack and LINBIT CloudStack ...
ShapeBlue
 
PDF
TrustArc Webinar - Data Privacy Trends 2025: Mid-Year Insights & Program Stra...
TrustArc
 
PDF
Women in Automation Presents: Reinventing Yourself — Bold Career Pivots That ...
DianaGray10
 
PDF
2025-07-15 EMEA Volledig Inzicht Dutch Webinar
ThousandEyes
 
PDF
Apache CloudStack 201: Let's Design & Build an IaaS Cloud
ShapeBlue
 
PDF
CloudStack GPU Integration - Rohit Yadav
ShapeBlue
 
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
 
Top Managed Service Providers in Los Angeles
Captain IT
 
Rethinking Security Operations - Modern SOC.pdf
Haris Chughtai
 
How Current Advanced Cyber Threats Transform Business Operation
Eryk Budi Pratama
 
Building Resilience with Digital Twins : Lessons from Korea
SANGHEE SHIN
 
The Yotta x CloudStack Advantage: Scalable, India-First Cloud
ShapeBlue
 
How a Code Plagiarism Checker Protects Originality in Programming
Code Quiry
 
TrustArc Webinar - Navigating Data Privacy in LATAM: Laws, Trends, and Compli...
TrustArc
 
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
Novus Safe Lite- What is Novus Safe Lite.pdf
Novus Hi-Tech
 
UiPath on Tour London Community Booth Deck
UiPathCommunity
 
Shuen Mei Parth Sharma Boost Productivity, Innovation and Efficiency wit...
AWS Chicago
 
Integrating IIoT with SCADA in Oil & Gas A Technical Perspective.pdf
Rejig Digital
 
UiPath vs Other Automation Tools Meeting Presentation.pdf
Tracy Dixon
 
Building and Operating a Private Cloud with CloudStack and LINBIT CloudStack ...
ShapeBlue
 
TrustArc Webinar - Data Privacy Trends 2025: Mid-Year Insights & Program Stra...
TrustArc
 
Women in Automation Presents: Reinventing Yourself — Bold Career Pivots That ...
DianaGray10
 
2025-07-15 EMEA Volledig Inzicht Dutch Webinar
ThousandEyes
 
Apache CloudStack 201: Let's Design & Build an IaaS Cloud
ShapeBlue
 
CloudStack GPU Integration - Rohit Yadav
ShapeBlue
 

Stackup New Languages Talk: Ember is for Everybody

  • 1. Ember is for Everybody Cory Forsyth @bantic
  • 2. 201 Created Cory Forsyth Matthew Beale http://201-created.com/
  • 3. Our Stack • Frontend: Ember.js, Sass • Editor: Vim • Remote collab:tmux / tmate / screenhero • Backend: Ruby, Node, Python • Github Issues & PRs • Test-Driven • Communication: Slack • Organization: Trello • Deployment: Divshot, Heroku, S3, Azure
  • 4. Our Work • Single Page App Development • Training • Tune-Up / Rescue • 0-100% Development • Open Source Contributions
  • 5. Front-End Development in 2014 is growing up
  • 6. import/export JavaScript in 2014 is growing up ecmascript 6 generators Promises Broccoli TDD single-page apps classes JShint Systemjs
  • 7. CSS in 2014 is growing up transforms border-radius web fonts CSS performance tooling Sass/LESS [attr$=val] layout thrashing
  • 8. Browsers in 2014 are growing up transforms developer tools offline-first HTML5 APIs evergreen Content Security Policy mobile emulation
  • 9. JavaScript is eating the world • Massive deployment base • “Fast” • Node • Node-webkit • Powerful Browser APIs
  • 10. Evolution of Front-End JavaScript • onclick! • “Sprinkles” of JS! • “frameworks” (Prototype, MooTools, jQuery)! • build systems, asset pipelines (multi-file js)! • frameworks v2 (Backbone)! • high-level frameworks (Ember, Angular…)
  • 11. JavaScript is Frontierland • Exciting new developments • ES6: First new JavaScript version in…? • Exciting new tools • Grunt, AMD, require.js, jspm, Broccoli, transpiler • Changing quickly • proliferation of libraries
  • 12. Ember • Feels like • “Mature” Development • iOS App Development • Everything has a place • Holistic
  • 13. The Ember Trifecta Ember + Ember Data Ember-CLI Ember Inspector
  • 14. Ember-CLI • Command-line tool (like “rails”) • 1-step to a new app (ember new my-app) • Code generators (ember generate model User) • Built-in Test Harness • Rich, rapidly-growing plugin ecosystem
  • 15. Ember Inspector • Chrome Extension • X-Ray Vision for • Ember Views • Ember Routes • Ember Data
  • 16. Ember Demo Data Binding <p>! {{input value=name placeholder="Enter your name"}}! {{input type='checkbox' checked=showMany}}! </p>! ! {{#if name}}! <p>! Your name is: {{name}}! </p>! {{/if}}! template
  • 17. Ember Demo Computed Properties <h2>Computed Properties</h2>! ! <p>! {{input value=firstName}}! {{input value=lastName}}! </p>! ! {{#if name}}! <p>! Your full name is: {{name}}! </p>! {{/if}}! import Ember from 'ember';! ! export default Ember.Controller.extend({! name: function(){! var first = this.get('firstName'),! last = this.get('lastName');! if (!first || !last) { return; }! ! return first + ' ' + last;! }.property('firstName','lastName')! });! template controller
  • 18. Ember Demo Computed Property Setters fullName: function(key, value){! if (arguments.length > 1) { // setter! var fullName = value,! names = fullName.split(' '),! firstName = names[0],! lastName = names[1];! controller ! this.setProperties({! firstName: firstName,! lastName: lastName! });! }! ! if (this.get('firstName') && this.get('lastName')) {! return this.get('firstName') + ' ' +! this.get('lastName');! }! }.property('firstName', 'lastName')!
  • 19. Ember Demo Routes • Manage Asynchrony • Sub states: Loading, error • Promises
  • 20. Ember Demo Query Params export default Ember.Controller.extend({! queryParams: ['page', 'count'],! ! // defaults! page: 1,! count: 10! });!
  • 21. Ember Demo Tests test('visiting /', function() {! visit('/');! ! andThen(function() {! var h1 = find('h1:contains(Ember Is For Everybody)');equal(h1.length,! 1,! 'has title');! ! equal(find('a[href="/data-binding"]').length,! 1,! 'has link to data-binding demo');! ! equal(currentURL(), '/');! });! });!
  • 22. Ember Is For Everybody
  • 23. The Front-End Story • Ember is Mainstream-ready • Ember + Ember-CLI = 1st Class Dev Environment • How do apps grow with us? What does a long-lived SPA look like?
  • 24. Other Ember Niceties • ember addons • ember data • ember components
  • 25. Thank you Cory Forsyth @bantic Photo credits ! ! ! Wild West Dragon-orb! ! Evolution Wikimedia! ! Everybody Wikipedia!
  • 26. Links Cory Forsyth @bantic Photo credits ! ! ! Wild West Dragon-orb! ! Evolution Wikimedia! ! Everybody Wikipedia! Slides: http://bit.ly/ember-everybody Example app: https://github.com/bantic/ember-is-for- everybody http://emberjs.com http://201-created.com/codethroughs http://ember-cli.com