SlideShare ist ein Scribd-Unternehmen logo
1 von 67
Downloaden Sie, um offline zu lesen
January 2017
twitter.com/mixonic
Ember.js Core Team
madhatted.com
FORMALISM
1 let spaceship = {
2 mass: 2
3 };
4
5 let acceleration = 2;
6 let force = spaceship.mass * acceleration;
7
8 accelerate(spaceship, force);
1 let spaceship = {
2 mass: 2
3 };
4
5 function deriveForce(mass, acceleration) {
6 return mass * acceleration;
7 }
8
9 let acceleration = 2;
10 let force = deriveForce(spaceship.mass, acceleration);
11
12 accelerate(spaceship, force);
“The purpose of abstraction is not to be
vague, but to create a new semantic level in
which one can be absolutely precise.”
The Humble Programmer
Edsger Dijkstra 1972
1 let spaceship = {
2 mass: 2
3 };
4
5 function deriveForce(mass, acceleration) {
6 return mass * acceleration;
7 }
8
9 let acceleration = 2;
10 let force = deriveForce(spaceship.mass, acceleration);
11
12 accelerate(spaceship, force);
INTUITION
We now come to the decisive step of mathematical
abstraction: we forget about what the symbols stand for.
The mathematician is concerned with the catalogue alone;
he is like the man in the catalogue room who does not
care what books or pieces of an intuitively given
manifold the symbols of his catalogue denote. He need
not be idle; there are many operations which he may
carry out with these symbols, without ever having to
look at the things they stand for.
The Mathematical Way of Thinking
Hermann Weyl 1940
20172011 2013 2015
1.0 2.0
WHO USES
THE WEB
AND HOW
0
0.25
0.5
0.75
1
2011 2012 2013 2014 2015 2016
Global Desktop Web Traffic
Global Mobile Web Traffic
StatsCounter
ITU
WHAT
THE WEB IS
0
0.25
0.5
0.75
1
2011 2012 2013 2014 2015 2016
Chrome Traffic
IE Traffic
StatsCounter
• Online/Offline status
• Selection API
• XHR2 / CORS
• background-color: currentColor
• All ES5
• let / const
• High Resolution Timers
• MessageChannel
• Blobs
• TypedArrays
• Geolocation
• Web Sockets
IE11+ WEB FEATURES
• Online/Offline status
• Selection API
• XHR2 / CORS
• background-color: currentColor
• All ES5
• let / const
• High Resolution Timers
• MessageChannel
• Blobs
• TypedArrays
• Geolocation
• Web Sockets
• Web Workers
• Internationalization API
• Strict HTTPS Transport
• HTTP2
• MP3, AAC, MPEG-4/H.264
• WOFF
• SVG, SVG filters
• <input pattern=
• DNS prefetch
• Multiple File Selection
• Viewport sizes (8vw)
• querySelector, matches
IE11+ WEB FEATURES
• Online/Offline status
• Selection API
• XHR2 / CORS
• background-color: currentColor
• All ES5
• let / const
• High Resolution Timers
• MessageChannel
• Blobs
• TypedArrays
• Geolocation
• Web Sockets
• Web Workers
• Internationalization API
• Strict HTTPS Transport
• HTTP2
• MP3, AAC, MPEG-4/H.264
• WOFF
• SVG, SVG filters
• <input pattern=
• DNS prefetch
• Multiple File Selection
• Viewport sizes (8vw)
• querySelector, matches
• File API
• IndexedDB
• WebGL
• dataset
• <script> defer
• getBoundingClientRect
• ::first-line
• calc()
• requestAnimationFrame
• atob / btoa
• PageTransitionEvent
• <video>
IE11+ WEB FEATURES
• Online/Offline status
• Selection API
• XHR2 / CORS
• background-color: currentColor
• All ES5
• let / const
• High Resolution Timers
• MessageChannel
• Blobs
• TypedArrays
• Geolocation
• Web Sockets
• Web Workers
• Internationalization API
• Strict HTTPS Transport
• HTTP2
• MP3, AAC, MPEG-4/H.264
• WOFF
• SVG, SVG filters
• <input pattern=
• DNS prefetch
• Multiple File Selection
• Viewport sizes (8vw)
• querySelector, matches
• File API
• IndexedDB
• WebGL
• dataset
• <script> defer
• getBoundingClientRect
• ::first-line
• calc()
• requestAnimationFrame
• atob / btoa
• PageTransitionEvent
• <video>
• <audio>
• Session History
• <progress>
• MutationObserver
• Navigation Timing API
• <script> async
• naturalWidth, naturalHeight
• input event
• matchMedia
• crypto.getRandomValues()
• Viewport sizes (8vw)
• classList
IE11+ WEB FEATURES
• Online/Offline status
• Selection API
• XHR2 / CORS
• background-color: currentColor
• All ES5
• let / const
• High Resolution Timers
• MessageChannel
• Blobs
• TypedArrays
• Geolocation
• Web Sockets
• Web Workers
• Internationalization API
• Strict HTTPS Transport
• HTTP2
• MP3, AAC, MPEG-4/H.264
• WOFF
• SVG, SVG filters
• <input pattern=
• DNS prefetch
• Multiple File Selection
• Viewport sizes (8vw)
• querySelector, matches
• File API
• IndexedDB
• WebGL
• dataset
• <script> defer
• getBoundingClientRect
• ::first-line
• calc()
• requestAnimationFrame
• atob / btoa
• PageTransitionEvent
• <video>
• <audio>
• Session History
• <progress>
• MutationObserver
• Navigation Timing API
• <script> async
• naturalWidth, naturalHeight
• input event
• matchMedia
• crypto.getRandomValues()
• Viewport sizes (8vw)
• classList
• Custom events
• TTF/OTF
• CSP 1.0
• Range
• page visibility
• SVG in CSS background
• 3d transforms
• Semantic Elements, e.g. <section>
• AppCache
• Web Crypto
• CSS3 multi-column layout
• console log methods
• insertAdjacentHTML
• Session History
IE11+ WEB FEATURES
WHO DEVELOPS
FOR THE WEB
0
32500
65000
97500
130000
2011 2013 2015
BLS
Fulltime Web Developers, USA
2011
2017
• Make Ember easier to learn
• Deliver it to clients in smaller, smarter chunks
• Do less work on the client
• Better arrange work on the client
• Make it easier for addons and contributors to participate
INITIATIVESThe Road Ahead
ENGINES & LAZY LOADING
• emberjs/rfcs#10 Merged in April 2016
• Design cycle was 1.5 years!
• Additions to Ember were kept minimal, the majority of the
functionality is in the ember-engines addon
• Further specification for lazy loading in emberjs/rfcs#153
(asset manifest) and emberjs/rfcs#158 (loader service)
• Support for lazy loading is in ember-engines@0.4.0
MODULE UNIFICATION
• Proceeded by emberjs/rfcs#124, Module Normalization
• emberjs/rfcs#143 Merged in mid-October
• Design cycle was 8 months
• Included building a migration tool for real apps to test our
assumptions about aesthetics (ember-module-migrator)
• Work on a dynamic version of the resolver begun in ember-
cli/ember-cli#6332
• Work on improving IDE support in emberjs/ember.js#14430
JAVASCRIPT MODULE API
• emberjs/rfcs#176 opened November 2016, closed 5 days
ago
• Based on feedback from “module shims”, emberjs/rfcs#68
• Includes plans for a migration tool via static analysis
• Was considered for 2.12, but we decided to go slow
ROUTER SERVICE
• emberjs/rfcs#95 was merged November 2016
• Design cycle a little over a year
• There have been several partial implementations, but no
complete PR
GLIMMER COMPONENTS &
ELEMENT MODIFIERS
1 <div {{my-element-modifier}}></div>
1 <my-ember-component />
GLIMMER COMPONENTS &
ELEMENT MODIFIERS
• emberjs/rfcs#60 (Component Unification) closed April
• emberjs/rfcs#112 (Element Modifiers) open since January
• Challenges:
• Moving from this.attrs to this.args. New two way binding callback API
• If we migrate to this.args, what happens to the name `didReceiveAttrs`
• Is there a better way to express recompilation than observers?
• DOM attributes and props
• @arg
GLIMMER COMPONENTS &
ELEMENT MODIFIERS
1 <my-ember-component>
2 Hello
3 </my-ember-component>
1 <my-ember-component class="important">
2 Hello
3 </my-ember-component>
GLIMMER COMPONENTS &
ELEMENT MODIFIERS
1 <my-ember-component
2 class="important"
3 data-priority>
4 Hello
5 </my-ember-component>
GLIMMER COMPONENTS &
ELEMENT MODIFIERS
1 <div>
2 {{@model.name}}
3 </div>
1 <my-ember-component
2 class="important"
3 data-priority
4 @model={{someProperty}} />
1 <div class="important" data-priority>
2 Mitchell
3 </div>
GLIMMER COMPONENTS &
ELEMENT MODIFIERS
1 <div>
2 {{@model.name}}
3 </div>
1 <my-ember-component
2 class="important"
3 data-priority
4 @model={{someProperty}} />
1 <div class="important" data-priority>
2 Mitchell
3 </div>
GLIMMER COMPONENTS &
ELEMENT MODIFIERS
1 <div>
2 {{@model.name}}
3 </div>
1 <my-ember-component
2 class="important"
3 data-priority
4 @model={{someProperty}} />
1 <div class="important" data-priority>
2 Mitchell
3 </div>
GLIMMER COMPONENTS &
ELEMENT MODIFIERS
1 <div>
2 {{@model.name}}
3 </div>
1 <my-ember-component
2 class="important"
3 data-priority
4 @model={{someProperty}} />
1 <div class="important" data-priority>
2 Mitchell
3 </div>
GLIMMER COMPONENTS &
ELEMENT MODIFIERS
1 <div class="solid">
2 {{@model.name}}
3 </div>
1 <div class="important solid">
2 Mitchell
3 </div>
1 <my-ember-component
2 class="important"
3 @model={{someProperty}} />
GLIMMER COMPONENTS &
ELEMENT MODIFIERS
1 <div class="solid">
2 {{@model.name}}
3 </div>
1 <div class="important solid">
2 Mitchell
3 </div>
1 <my-ember-component
2 class="important"
3 @model={{someProperty}} />
GLIMMER COMPONENTS &
ELEMENT MODIFIERS
1 <my-ember-component
2 @model={{someProperty}} as |name|>
3 {{name}}
4 </my-ember-component>
1 <div>
2 {{yield @model.name}}
3 </div>
1 <div>
2 Mitchell
3 </div>
GLIMMER COMPONENTS &
ELEMENT MODIFIERS
1 <my-ember-component
2 @model={{someProperty}} as |name|>
3 {{name}}
4 </my-ember-component>
1 <div>
2 {{yield @model.name}}
3 </div>
1 <div>
2 Mitchell
3 </div>
GLIMMER COMPONENTS &
ELEMENT MODIFIERS
IGNITER
• No RFC yet. Experimentation in runspired/igniter
• Would remove the requirement of explicit runloops
IGNITER
1 obj.set('name', 'Betsy');
2 obj.set('age', '42');
3 obj.set('shoes', 'heels');
1 obj.set('name', 'Betsy');
2 obj.set('age', '42');
3 obj.set('shoes', 'heels');
render();
render();
render();
IGNITER
1 obj.set('name', 'Betsy');
2 obj.set('age', '42');
3 obj.set('shoes', 'heels');
render();
render();
render();
IGNITER
1 obj.set('name', 'Betsy');
2 obj.set('age', '42');
3 obj.set('shoes', 'heels');
scheduleRender();
scheduleRender();
scheduleRender();
IGNITER
Ember.run(() => {
2
3
4
});
1 obj.set('name', 'Betsy');
2 obj.set('age', '42');
3 obj.set('shoes', 'heels');
scheduleRender();
scheduleRender();
scheduleRender();
IGNITER
Ember.run.begin();
2
3
4
Ember.run.end();
1 obj.set('name', 'Betsy');
2 obj.set('age', '42');
3 obj.set('shoes', 'heels');
scheduleRender();
scheduleRender();
scheduleRender();
IGNITER
Ember.run.begin();
2
3
4
Ember.run.end();
1 obj.set('name', 'Betsy');
2 obj.set('age', '42');
3 obj.set('shoes', 'heels');
scheduleRender();
scheduleRender();
scheduleRender();
render();
IGNITER
1 obj.set('name', 'Betsy');
2 obj.set('age', '42');
3 obj.set('shoes', 'heels');
scheduleRender();
scheduleRender();
scheduleRender();
IGNITER
1 obj.set('name', 'Betsy');
2 obj.set('age', '42');
3 obj.set('shoes', 'heels');
scheduleRender();
scheduleRender();
scheduleRender();
1 setTimeout(() => {
2 render();
3 });
IGNITER
IGNITER
1 obj.set('name', 'Betsy');
2 obj.set('age', '42');
3 obj.set('shoes', 'heels');
scheduleRender();
scheduleRender();
scheduleRender();
1 requestAnimationFrame(() => {
2 render();
3 });
• Glimmer binary VM and wire format, stack VM
• Interoperability with ES Classes
• Lazy evaluation and dead code elimination
• Fastboot rehydration
• Critical path rendering
• Improved RFC automation
• Improved visibility of feature progress
The Future
“…is already here —”
William Gibson
1999
“it’s just not evenly distributed”
William Gibson
1999
“It is hard for people to imagine what the web is capable of.”
201 Created Clients
2017
shop-201.com
• SEO Friendly
• Great animations
• Install-to-homescreen
• Tap-to-pay (ApplePay)
• Phones, tablets,
desktops
Thanks

Weitere ähnliche Inhalte

Was ist angesagt?

Interactive Kafka Streams
Interactive Kafka StreamsInteractive Kafka Streams
Interactive Kafka Streamsconfluent
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaYevgeniy Brikman
 
Developing Microservices with Apache Camel
Developing Microservices with Apache CamelDeveloping Microservices with Apache Camel
Developing Microservices with Apache CamelClaus Ibsen
 
Akka Http , Routes, Streams with Scala
Akka Http , Routes, Streams with ScalaAkka Http , Routes, Streams with Scala
Akka Http , Routes, Streams with ScalaJerry Kuru
 
Reactive stream processing using Akka streams
Reactive stream processing using Akka streams Reactive stream processing using Akka streams
Reactive stream processing using Akka streams Johan Andrén
 
Gwt and rpc use 2007 1
Gwt and rpc use 2007 1Gwt and rpc use 2007 1
Gwt and rpc use 2007 1Sam Muhanguzi
 
Pulsar Architectural Patterns for CI/CD Automation and Self-Service_Devin Bost
Pulsar Architectural Patterns for CI/CD Automation and Self-Service_Devin BostPulsar Architectural Patterns for CI/CD Automation and Self-Service_Devin Bost
Pulsar Architectural Patterns for CI/CD Automation and Self-Service_Devin BostStreamNative
 
Developing Java based microservices ready for the world of containers
Developing Java based microservices ready for the world of containersDeveloping Java based microservices ready for the world of containers
Developing Java based microservices ready for the world of containersClaus Ibsen
 
Async and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRubyAsync and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRubyJoe Kutner
 
Distributed Eventing in OSGi
Distributed Eventing in OSGiDistributed Eventing in OSGi
Distributed Eventing in OSGiCarsten Ziegeler
 
Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...
Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...
Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...Claus Ibsen
 
Journey into Reactive Streams and Akka Streams
Journey into Reactive Streams and Akka StreamsJourney into Reactive Streams and Akka Streams
Journey into Reactive Streams and Akka StreamsKevin Webber
 
Exploring Twitter's Finagle technology stack for microservices
Exploring Twitter's Finagle technology stack for microservicesExploring Twitter's Finagle technology stack for microservices
Exploring Twitter's Finagle technology stack for microservices💡 Tomasz Kogut
 
Lightbend Lagom: Microservices Just Right (Scala Days 2016 Berlin)
Lightbend Lagom: Microservices Just Right (Scala Days 2016 Berlin)Lightbend Lagom: Microservices Just Right (Scala Days 2016 Berlin)
Lightbend Lagom: Microservices Just Right (Scala Days 2016 Berlin)mircodotta
 
Algebird : Abstract Algebra for big data analytics. Devoxx 2014
Algebird : Abstract Algebra for big data analytics. Devoxx 2014Algebird : Abstract Algebra for big data analytics. Devoxx 2014
Algebird : Abstract Algebra for big data analytics. Devoxx 2014Samir Bessalah
 
Walkthrough Neo4j 1.9 & 2.0
Walkthrough Neo4j 1.9 & 2.0Walkthrough Neo4j 1.9 & 2.0
Walkthrough Neo4j 1.9 & 2.0Neo4j
 
Buiilding reactive distributed systems with Akka
Buiilding reactive distributed systems with AkkaBuiilding reactive distributed systems with Akka
Buiilding reactive distributed systems with AkkaJohan Andrén
 
Distributed Eventing in OSGi - Carsten Ziegeler
Distributed Eventing in OSGi - Carsten ZiegelerDistributed Eventing in OSGi - Carsten Ziegeler
Distributed Eventing in OSGi - Carsten Ziegelermfrancis
 
Kick your database_to_the_curb_reston_08_27_19
Kick your database_to_the_curb_reston_08_27_19Kick your database_to_the_curb_reston_08_27_19
Kick your database_to_the_curb_reston_08_27_19confluent
 

Was ist angesagt? (20)

Interactive Kafka Streams
Interactive Kafka StreamsInteractive Kafka Streams
Interactive Kafka Streams
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and Scala
 
Developing Microservices with Apache Camel
Developing Microservices with Apache CamelDeveloping Microservices with Apache Camel
Developing Microservices with Apache Camel
 
Akka Http , Routes, Streams with Scala
Akka Http , Routes, Streams with ScalaAkka Http , Routes, Streams with Scala
Akka Http , Routes, Streams with Scala
 
Reactive Applications in Java
Reactive Applications in JavaReactive Applications in Java
Reactive Applications in Java
 
Reactive stream processing using Akka streams
Reactive stream processing using Akka streams Reactive stream processing using Akka streams
Reactive stream processing using Akka streams
 
Gwt and rpc use 2007 1
Gwt and rpc use 2007 1Gwt and rpc use 2007 1
Gwt and rpc use 2007 1
 
Pulsar Architectural Patterns for CI/CD Automation and Self-Service_Devin Bost
Pulsar Architectural Patterns for CI/CD Automation and Self-Service_Devin BostPulsar Architectural Patterns for CI/CD Automation and Self-Service_Devin Bost
Pulsar Architectural Patterns for CI/CD Automation and Self-Service_Devin Bost
 
Developing Java based microservices ready for the world of containers
Developing Java based microservices ready for the world of containersDeveloping Java based microservices ready for the world of containers
Developing Java based microservices ready for the world of containers
 
Async and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRubyAsync and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRuby
 
Distributed Eventing in OSGi
Distributed Eventing in OSGiDistributed Eventing in OSGi
Distributed Eventing in OSGi
 
Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...
Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...
Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...
 
Journey into Reactive Streams and Akka Streams
Journey into Reactive Streams and Akka StreamsJourney into Reactive Streams and Akka Streams
Journey into Reactive Streams and Akka Streams
 
Exploring Twitter's Finagle technology stack for microservices
Exploring Twitter's Finagle technology stack for microservicesExploring Twitter's Finagle technology stack for microservices
Exploring Twitter's Finagle technology stack for microservices
 
Lightbend Lagom: Microservices Just Right (Scala Days 2016 Berlin)
Lightbend Lagom: Microservices Just Right (Scala Days 2016 Berlin)Lightbend Lagom: Microservices Just Right (Scala Days 2016 Berlin)
Lightbend Lagom: Microservices Just Right (Scala Days 2016 Berlin)
 
Algebird : Abstract Algebra for big data analytics. Devoxx 2014
Algebird : Abstract Algebra for big data analytics. Devoxx 2014Algebird : Abstract Algebra for big data analytics. Devoxx 2014
Algebird : Abstract Algebra for big data analytics. Devoxx 2014
 
Walkthrough Neo4j 1.9 & 2.0
Walkthrough Neo4j 1.9 & 2.0Walkthrough Neo4j 1.9 & 2.0
Walkthrough Neo4j 1.9 & 2.0
 
Buiilding reactive distributed systems with Akka
Buiilding reactive distributed systems with AkkaBuiilding reactive distributed systems with Akka
Buiilding reactive distributed systems with Akka
 
Distributed Eventing in OSGi - Carsten Ziegeler
Distributed Eventing in OSGi - Carsten ZiegelerDistributed Eventing in OSGi - Carsten Ziegeler
Distributed Eventing in OSGi - Carsten Ziegeler
 
Kick your database_to_the_curb_reston_08_27_19
Kick your database_to_the_curb_reston_08_27_19Kick your database_to_the_curb_reston_08_27_19
Kick your database_to_the_curb_reston_08_27_19
 

Andere mochten auch

Testing Ember Apps: Managing Dependency
Testing Ember Apps: Managing DependencyTesting Ember Apps: Managing Dependency
Testing Ember Apps: Managing DependencyMatthew Beale
 
Testing ember data transforms
Testing ember data transformsTesting ember data transforms
Testing ember data transformsSara Raasch
 
Velocity spa faster_092116
Velocity spa faster_092116Velocity spa faster_092116
Velocity spa faster_092116Manuel Alvarez
 
Ember Community 2016 - Be the Bark
Ember Community 2016 - Be the BarkEmber Community 2016 - Be the Bark
Ember Community 2016 - Be the BarkMatthew Beale
 
20120518 mssql table_schema_xml_namespace
20120518 mssql table_schema_xml_namespace20120518 mssql table_schema_xml_namespace
20120518 mssql table_schema_xml_namespaceLearningTech
 
What I learned in my First 9 months of Ember
What I learned in my First 9 months of EmberWhat I learned in my First 9 months of Ember
What I learned in my First 9 months of EmberSara Raasch
 
electron for emberists
electron for emberistselectron for emberists
electron for emberistsAidan Nulman
 
Ember: Guts & Goals
Ember: Guts & GoalsEmber: Guts & Goals
Ember: Guts & GoalsBob Lail
 
Nest v. Flat with EmberData
Nest v. Flat with EmberDataNest v. Flat with EmberData
Nest v. Flat with EmberDataRyan M Harrison
 
Developing Single Page Apps with Ember.js
Developing Single Page Apps with Ember.jsDeveloping Single Page Apps with Ember.js
Developing Single Page Apps with Ember.jsLeo Hernandez
 
Intro to emberjs
Intro to emberjsIntro to emberjs
Intro to emberjsMandy Pao
 
Ember.js the Second Step
Ember.js the Second StepEmber.js the Second Step
Ember.js the Second StepDopin Ninja
 
Ember.js internals backburner.js and rsvp.js
Ember.js internals  backburner.js and rsvp.jsEmber.js internals  backburner.js and rsvp.js
Ember.js internals backburner.js and rsvp.jsgavinjoyce
 
Write Once, Run Everywhere - Ember.js Munich
Write Once, Run Everywhere - Ember.js MunichWrite Once, Run Everywhere - Ember.js Munich
Write Once, Run Everywhere - Ember.js MunichMike North
 
Parse Apps with Ember.js
Parse Apps with Ember.jsParse Apps with Ember.js
Parse Apps with Ember.jsMatthew Beale
 
Complex Architectures in Ember
Complex Architectures in EmberComplex Architectures in Ember
Complex Architectures in EmberMatthew Beale
 

Andere mochten auch (20)

Testing Ember Apps: Managing Dependency
Testing Ember Apps: Managing DependencyTesting Ember Apps: Managing Dependency
Testing Ember Apps: Managing Dependency
 
Testing ember data transforms
Testing ember data transformsTesting ember data transforms
Testing ember data transforms
 
Velocity spa faster_092116
Velocity spa faster_092116Velocity spa faster_092116
Velocity spa faster_092116
 
Ember Community 2016 - Be the Bark
Ember Community 2016 - Be the BarkEmber Community 2016 - Be the Bark
Ember Community 2016 - Be the Bark
 
20120518 mssql table_schema_xml_namespace
20120518 mssql table_schema_xml_namespace20120518 mssql table_schema_xml_namespace
20120518 mssql table_schema_xml_namespace
 
What I learned in my First 9 months of Ember
What I learned in my First 9 months of EmberWhat I learned in my First 9 months of Ember
What I learned in my First 9 months of Ember
 
Delivering with ember.js
Delivering with ember.jsDelivering with ember.js
Delivering with ember.js
 
electron for emberists
electron for emberistselectron for emberists
electron for emberists
 
Masa Israel Programs Overview
Masa Israel Programs OverviewMasa Israel Programs Overview
Masa Israel Programs Overview
 
Ember: Guts & Goals
Ember: Guts & GoalsEmber: Guts & Goals
Ember: Guts & Goals
 
Nest v. Flat with EmberData
Nest v. Flat with EmberDataNest v. Flat with EmberData
Nest v. Flat with EmberData
 
Developing Single Page Apps with Ember.js
Developing Single Page Apps with Ember.jsDeveloping Single Page Apps with Ember.js
Developing Single Page Apps with Ember.js
 
Intro to emberjs
Intro to emberjsIntro to emberjs
Intro to emberjs
 
Ember.js the Second Step
Ember.js the Second StepEmber.js the Second Step
Ember.js the Second Step
 
Ember.js internals backburner.js and rsvp.js
Ember.js internals  backburner.js and rsvp.jsEmber.js internals  backburner.js and rsvp.js
Ember.js internals backburner.js and rsvp.js
 
Write Once, Run Everywhere - Ember.js Munich
Write Once, Run Everywhere - Ember.js MunichWrite Once, Run Everywhere - Ember.js Munich
Write Once, Run Everywhere - Ember.js Munich
 
Ember.js firebase HTML5 NYC
Ember.js firebase HTML5 NYCEmber.js firebase HTML5 NYC
Ember.js firebase HTML5 NYC
 
Parse Apps with Ember.js
Parse Apps with Ember.jsParse Apps with Ember.js
Parse Apps with Ember.js
 
Complex Architectures in Ember
Complex Architectures in EmberComplex Architectures in Ember
Complex Architectures in Ember
 
Intro to Ember.JS 2016
Intro to Ember.JS 2016Intro to Ember.JS 2016
Intro to Ember.JS 2016
 

Ähnlich wie LA Ember.js Meetup, Jan 2017

Running Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on HadoopRunning Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on Hadoopclairvoyantllc
 
From MEAN to the MERN Stack
From MEAN to the MERN StackFrom MEAN to the MERN Stack
From MEAN to the MERN StackTroy Miles
 
Evolution of a cloud start up: From C# to Node.js
Evolution of a cloud start up: From C# to Node.jsEvolution of a cloud start up: From C# to Node.js
Evolution of a cloud start up: From C# to Node.jsSteve Jamieson
 
MWLUG 2015 - AD114 Take Your XPages Development to the Next Level
MWLUG 2015 - AD114 Take Your XPages Development to the Next LevelMWLUG 2015 - AD114 Take Your XPages Development to the Next Level
MWLUG 2015 - AD114 Take Your XPages Development to the Next Levelbalassaitis
 
5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)Christian Rokitta
 
Web program-peformance-optimization
Web program-peformance-optimizationWeb program-peformance-optimization
Web program-peformance-optimizationxiaojueqq12345
 
MEAN Stack Warm-up
MEAN Stack Warm-upMEAN Stack Warm-up
MEAN Stack Warm-upTroy Miles
 
How to Build Single Page HTML5 Apps that Scale
How to Build Single Page HTML5 Apps that ScaleHow to Build Single Page HTML5 Apps that Scale
How to Build Single Page HTML5 Apps that ScalePhil Leggetter
 
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & MobileIVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & MobileAmazon Web Services Japan
 
(DVO308) Docker & ECS in Production: How We Migrated Our Infrastructure from ...
(DVO308) Docker & ECS in Production: How We Migrated Our Infrastructure from ...(DVO308) Docker & ECS in Production: How We Migrated Our Infrastructure from ...
(DVO308) Docker & ECS in Production: How We Migrated Our Infrastructure from ...Amazon Web Services
 
What's New in .Net 4.5
What's New in .Net 4.5What's New in .Net 4.5
What's New in .Net 4.5Malam Team
 
How and why we evolved a legacy Java web application to Scala... and we are s...
How and why we evolved a legacy Java web application to Scala... and we are s...How and why we evolved a legacy Java web application to Scala... and we are s...
How and why we evolved a legacy Java web application to Scala... and we are s...Katia Aresti
 
Lessons learned while building Omroep.nl
Lessons learned while building Omroep.nlLessons learned while building Omroep.nl
Lessons learned while building Omroep.nltieleman
 
Lessons learned while building Omroep.nl
Lessons learned while building Omroep.nlLessons learned while building Omroep.nl
Lessons learned while building Omroep.nlbartzon
 
Intro to node and mongodb 1
Intro to node and mongodb   1Intro to node and mongodb   1
Intro to node and mongodb 1Mohammad Qureshi
 

Ähnlich wie LA Ember.js Meetup, Jan 2017 (20)

Wider than rails
Wider than railsWider than rails
Wider than rails
 
Running Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on HadoopRunning Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on Hadoop
 
Remix
RemixRemix
Remix
 
From MEAN to the MERN Stack
From MEAN to the MERN StackFrom MEAN to the MERN Stack
From MEAN to the MERN Stack
 
Evolution of a cloud start up: From C# to Node.js
Evolution of a cloud start up: From C# to Node.jsEvolution of a cloud start up: From C# to Node.js
Evolution of a cloud start up: From C# to Node.js
 
AD102 - Break out of the Box
AD102 - Break out of the BoxAD102 - Break out of the Box
AD102 - Break out of the Box
 
MWLUG 2015 - AD114 Take Your XPages Development to the Next Level
MWLUG 2015 - AD114 Take Your XPages Development to the Next LevelMWLUG 2015 - AD114 Take Your XPages Development to the Next Level
MWLUG 2015 - AD114 Take Your XPages Development to the Next Level
 
5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)
 
Web program-peformance-optimization
Web program-peformance-optimizationWeb program-peformance-optimization
Web program-peformance-optimization
 
React inter3
React inter3React inter3
React inter3
 
MEAN Stack Warm-up
MEAN Stack Warm-upMEAN Stack Warm-up
MEAN Stack Warm-up
 
How to Build Single Page HTML5 Apps that Scale
How to Build Single Page HTML5 Apps that ScaleHow to Build Single Page HTML5 Apps that Scale
How to Build Single Page HTML5 Apps that Scale
 
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & MobileIVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
 
(DVO308) Docker & ECS in Production: How We Migrated Our Infrastructure from ...
(DVO308) Docker & ECS in Production: How We Migrated Our Infrastructure from ...(DVO308) Docker & ECS in Production: How We Migrated Our Infrastructure from ...
(DVO308) Docker & ECS in Production: How We Migrated Our Infrastructure from ...
 
What's New in .Net 4.5
What's New in .Net 4.5What's New in .Net 4.5
What's New in .Net 4.5
 
How and why we evolved a legacy Java web application to Scala... and we are s...
How and why we evolved a legacy Java web application to Scala... and we are s...How and why we evolved a legacy Java web application to Scala... and we are s...
How and why we evolved a legacy Java web application to Scala... and we are s...
 
Oracle OpenWorld 2014 Review Part Four - PaaS Middleware
Oracle OpenWorld 2014 Review Part Four - PaaS MiddlewareOracle OpenWorld 2014 Review Part Four - PaaS Middleware
Oracle OpenWorld 2014 Review Part Four - PaaS Middleware
 
Lessons learned while building Omroep.nl
Lessons learned while building Omroep.nlLessons learned while building Omroep.nl
Lessons learned while building Omroep.nl
 
Lessons learned while building Omroep.nl
Lessons learned while building Omroep.nlLessons learned while building Omroep.nl
Lessons learned while building Omroep.nl
 
Intro to node and mongodb 1
Intro to node and mongodb   1Intro to node and mongodb   1
Intro to node and mongodb 1
 

Mehr von Matthew Beale

Ember.js Module Loading
Ember.js Module LoadingEmber.js Module Loading
Ember.js Module LoadingMatthew Beale
 
Interoperable Component Patterns
Interoperable Component PatternsInteroperable Component Patterns
Interoperable Component PatternsMatthew Beale
 
The Hidden Power of HTMLBars (or, Scope in Ember.js Templates)
The Hidden Power of HTMLBars (or, Scope in Ember.js Templates)The Hidden Power of HTMLBars (or, Scope in Ember.js Templates)
The Hidden Power of HTMLBars (or, Scope in Ember.js Templates)Matthew Beale
 
Aligning Ember.js with Web Standards
Aligning Ember.js with Web StandardsAligning Ember.js with Web Standards
Aligning Ember.js with Web StandardsMatthew Beale
 
New Component Patterns in Ember.js
New Component Patterns in Ember.jsNew Component Patterns in Ember.js
New Component Patterns in Ember.jsMatthew Beale
 
Scalable vector ember
Scalable vector emberScalable vector ember
Scalable vector emberMatthew Beale
 
Snappy Means Happy: Performance in Ember Apps
Snappy Means Happy: Performance in Ember AppsSnappy Means Happy: Performance in Ember Apps
Snappy Means Happy: Performance in Ember AppsMatthew Beale
 
Client-side Auth with Ember.js
Client-side Auth with Ember.jsClient-side Auth with Ember.js
Client-side Auth with Ember.jsMatthew Beale
 
Containers & Dependency in Ember.js
Containers & Dependency in Ember.jsContainers & Dependency in Ember.js
Containers & Dependency in Ember.jsMatthew Beale
 
Ember and containers
Ember and containersEmber and containers
Ember and containersMatthew Beale
 

Mehr von Matthew Beale (11)

Ember.js Module Loading
Ember.js Module LoadingEmber.js Module Loading
Ember.js Module Loading
 
Interoperable Component Patterns
Interoperable Component PatternsInteroperable Component Patterns
Interoperable Component Patterns
 
Attribute actions
Attribute actionsAttribute actions
Attribute actions
 
The Hidden Power of HTMLBars (or, Scope in Ember.js Templates)
The Hidden Power of HTMLBars (or, Scope in Ember.js Templates)The Hidden Power of HTMLBars (or, Scope in Ember.js Templates)
The Hidden Power of HTMLBars (or, Scope in Ember.js Templates)
 
Aligning Ember.js with Web Standards
Aligning Ember.js with Web StandardsAligning Ember.js with Web Standards
Aligning Ember.js with Web Standards
 
New Component Patterns in Ember.js
New Component Patterns in Ember.jsNew Component Patterns in Ember.js
New Component Patterns in Ember.js
 
Scalable vector ember
Scalable vector emberScalable vector ember
Scalable vector ember
 
Snappy Means Happy: Performance in Ember Apps
Snappy Means Happy: Performance in Ember AppsSnappy Means Happy: Performance in Ember Apps
Snappy Means Happy: Performance in Ember Apps
 
Client-side Auth with Ember.js
Client-side Auth with Ember.jsClient-side Auth with Ember.js
Client-side Auth with Ember.js
 
Containers & Dependency in Ember.js
Containers & Dependency in Ember.jsContainers & Dependency in Ember.js
Containers & Dependency in Ember.js
 
Ember and containers
Ember and containersEmber and containers
Ember and containers
 

Kürzlich hochgeladen

20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdfMatthew Sinclair
 
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)Delhi Call girls
 
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...singhpriety023
 
Katraj ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For S...
Katraj ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For S...Katraj ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For S...
Katraj ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For S...tanu pandey
 
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...SUHANI PANDEY
 
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...SUHANI PANDEY
 
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdfMatthew Sinclair
 
20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdfMatthew Sinclair
 
Microsoft Azure Arc Customer Deck Microsoft
Microsoft Azure Arc Customer Deck MicrosoftMicrosoft Azure Arc Customer Deck Microsoft
Microsoft Azure Arc Customer Deck MicrosoftAanSulistiyo
 
Real Escorts in Al Nahda +971524965298 Dubai Escorts Service
Real Escorts in Al Nahda +971524965298 Dubai Escorts ServiceReal Escorts in Al Nahda +971524965298 Dubai Escorts Service
Real Escorts in Al Nahda +971524965298 Dubai Escorts ServiceEscorts Call Girls
 
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
 
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
 
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
 
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
 
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...SUHANI PANDEY
 
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Call Girls in Nagpur High Profile
 
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Bookingdharasingh5698
 

Kürzlich hochgeladen (20)

20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
 
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
 
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
 
Katraj ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For S...
Katraj ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For S...Katraj ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For S...
Katraj ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For S...
 
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
Pirangut | Call Girls Pune Phone No 8005736733 Elite Escort Service Available...
 
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
Shikrapur - Call Girls in Pune Neha 8005736733 | 100% Gennuine High Class Ind...
 
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
 
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf
 
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 🥵
 
Microsoft Azure Arc Customer Deck Microsoft
Microsoft Azure Arc Customer Deck MicrosoftMicrosoft Azure Arc Customer Deck Microsoft
Microsoft Azure Arc Customer Deck Microsoft
 
Real Escorts in Al Nahda +971524965298 Dubai Escorts Service
Real Escorts in Al Nahda +971524965298 Dubai Escorts ServiceReal Escorts in Al Nahda +971524965298 Dubai Escorts Service
Real Escorts in Al Nahda +971524965298 Dubai Escorts Service
 
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...
 
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
 
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
 
Russian Call Girls in %(+971524965298 )# Call Girls in Dubai
Russian Call Girls in %(+971524965298  )#  Call Girls in DubaiRussian Call Girls in %(+971524965298  )#  Call Girls in Dubai
Russian Call Girls in %(+971524965298 )# Call Girls in Dubai
 
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
 
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
VVIP Pune Call Girls Sinhagad WhatSapp Number 8005736733 With Elite Staff And...
 
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
 
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Pollachi 7001035870 Whatsapp Number, 24/07 Booking
 

LA Ember.js Meetup, Jan 2017

  • 3.
  • 5. 1 let spaceship = { 2 mass: 2 3 }; 4 5 let acceleration = 2; 6 let force = spaceship.mass * acceleration; 7 8 accelerate(spaceship, force);
  • 6. 1 let spaceship = { 2 mass: 2 3 }; 4 5 function deriveForce(mass, acceleration) { 6 return mass * acceleration; 7 } 8 9 let acceleration = 2; 10 let force = deriveForce(spaceship.mass, acceleration); 11 12 accelerate(spaceship, force);
  • 7. “The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise.” The Humble Programmer Edsger Dijkstra 1972
  • 8. 1 let spaceship = { 2 mass: 2 3 }; 4 5 function deriveForce(mass, acceleration) { 6 return mass * acceleration; 7 } 8 9 let acceleration = 2; 10 let force = deriveForce(spaceship.mass, acceleration); 11 12 accelerate(spaceship, force);
  • 10. We now come to the decisive step of mathematical abstraction: we forget about what the symbols stand for. The mathematician is concerned with the catalogue alone; he is like the man in the catalogue room who does not care what books or pieces of an intuitively given manifold the symbols of his catalogue denote. He need not be idle; there are many operations which he may carry out with these symbols, without ever having to look at the things they stand for. The Mathematical Way of Thinking Hermann Weyl 1940
  • 13. 0 0.25 0.5 0.75 1 2011 2012 2013 2014 2015 2016 Global Desktop Web Traffic Global Mobile Web Traffic StatsCounter
  • 14. ITU
  • 15.
  • 16.
  • 17.
  • 18.
  • 20. 0 0.25 0.5 0.75 1 2011 2012 2013 2014 2015 2016 Chrome Traffic IE Traffic StatsCounter
  • 21. • Online/Offline status • Selection API • XHR2 / CORS • background-color: currentColor • All ES5 • let / const • High Resolution Timers • MessageChannel • Blobs • TypedArrays • Geolocation • Web Sockets IE11+ WEB FEATURES
  • 22. • Online/Offline status • Selection API • XHR2 / CORS • background-color: currentColor • All ES5 • let / const • High Resolution Timers • MessageChannel • Blobs • TypedArrays • Geolocation • Web Sockets • Web Workers • Internationalization API • Strict HTTPS Transport • HTTP2 • MP3, AAC, MPEG-4/H.264 • WOFF • SVG, SVG filters • <input pattern= • DNS prefetch • Multiple File Selection • Viewport sizes (8vw) • querySelector, matches IE11+ WEB FEATURES
  • 23. • Online/Offline status • Selection API • XHR2 / CORS • background-color: currentColor • All ES5 • let / const • High Resolution Timers • MessageChannel • Blobs • TypedArrays • Geolocation • Web Sockets • Web Workers • Internationalization API • Strict HTTPS Transport • HTTP2 • MP3, AAC, MPEG-4/H.264 • WOFF • SVG, SVG filters • <input pattern= • DNS prefetch • Multiple File Selection • Viewport sizes (8vw) • querySelector, matches • File API • IndexedDB • WebGL • dataset • <script> defer • getBoundingClientRect • ::first-line • calc() • requestAnimationFrame • atob / btoa • PageTransitionEvent • <video> IE11+ WEB FEATURES
  • 24. • Online/Offline status • Selection API • XHR2 / CORS • background-color: currentColor • All ES5 • let / const • High Resolution Timers • MessageChannel • Blobs • TypedArrays • Geolocation • Web Sockets • Web Workers • Internationalization API • Strict HTTPS Transport • HTTP2 • MP3, AAC, MPEG-4/H.264 • WOFF • SVG, SVG filters • <input pattern= • DNS prefetch • Multiple File Selection • Viewport sizes (8vw) • querySelector, matches • File API • IndexedDB • WebGL • dataset • <script> defer • getBoundingClientRect • ::first-line • calc() • requestAnimationFrame • atob / btoa • PageTransitionEvent • <video> • <audio> • Session History • <progress> • MutationObserver • Navigation Timing API • <script> async • naturalWidth, naturalHeight • input event • matchMedia • crypto.getRandomValues() • Viewport sizes (8vw) • classList IE11+ WEB FEATURES
  • 25. • Online/Offline status • Selection API • XHR2 / CORS • background-color: currentColor • All ES5 • let / const • High Resolution Timers • MessageChannel • Blobs • TypedArrays • Geolocation • Web Sockets • Web Workers • Internationalization API • Strict HTTPS Transport • HTTP2 • MP3, AAC, MPEG-4/H.264 • WOFF • SVG, SVG filters • <input pattern= • DNS prefetch • Multiple File Selection • Viewport sizes (8vw) • querySelector, matches • File API • IndexedDB • WebGL • dataset • <script> defer • getBoundingClientRect • ::first-line • calc() • requestAnimationFrame • atob / btoa • PageTransitionEvent • <video> • <audio> • Session History • <progress> • MutationObserver • Navigation Timing API • <script> async • naturalWidth, naturalHeight • input event • matchMedia • crypto.getRandomValues() • Viewport sizes (8vw) • classList • Custom events • TTF/OTF • CSP 1.0 • Range • page visibility • SVG in CSS background • 3d transforms • Semantic Elements, e.g. <section> • AppCache • Web Crypto • CSS3 multi-column layout • console log methods • insertAdjacentHTML • Session History IE11+ WEB FEATURES
  • 28. 2011
  • 29. 2017
  • 30. • Make Ember easier to learn • Deliver it to clients in smaller, smarter chunks • Do less work on the client • Better arrange work on the client • Make it easier for addons and contributors to participate
  • 32. ENGINES & LAZY LOADING • emberjs/rfcs#10 Merged in April 2016 • Design cycle was 1.5 years! • Additions to Ember were kept minimal, the majority of the functionality is in the ember-engines addon • Further specification for lazy loading in emberjs/rfcs#153 (asset manifest) and emberjs/rfcs#158 (loader service) • Support for lazy loading is in ember-engines@0.4.0
  • 33. MODULE UNIFICATION • Proceeded by emberjs/rfcs#124, Module Normalization • emberjs/rfcs#143 Merged in mid-October • Design cycle was 8 months • Included building a migration tool for real apps to test our assumptions about aesthetics (ember-module-migrator) • Work on a dynamic version of the resolver begun in ember- cli/ember-cli#6332 • Work on improving IDE support in emberjs/ember.js#14430
  • 34. JAVASCRIPT MODULE API • emberjs/rfcs#176 opened November 2016, closed 5 days ago • Based on feedback from “module shims”, emberjs/rfcs#68 • Includes plans for a migration tool via static analysis • Was considered for 2.12, but we decided to go slow
  • 35. ROUTER SERVICE • emberjs/rfcs#95 was merged November 2016 • Design cycle a little over a year • There have been several partial implementations, but no complete PR
  • 36. GLIMMER COMPONENTS & ELEMENT MODIFIERS 1 <div {{my-element-modifier}}></div> 1 <my-ember-component />
  • 37. GLIMMER COMPONENTS & ELEMENT MODIFIERS • emberjs/rfcs#60 (Component Unification) closed April • emberjs/rfcs#112 (Element Modifiers) open since January • Challenges: • Moving from this.attrs to this.args. New two way binding callback API • If we migrate to this.args, what happens to the name `didReceiveAttrs` • Is there a better way to express recompilation than observers? • DOM attributes and props • @arg
  • 38. GLIMMER COMPONENTS & ELEMENT MODIFIERS 1 <my-ember-component> 2 Hello 3 </my-ember-component>
  • 39. 1 <my-ember-component class="important"> 2 Hello 3 </my-ember-component> GLIMMER COMPONENTS & ELEMENT MODIFIERS
  • 40. 1 <my-ember-component 2 class="important" 3 data-priority> 4 Hello 5 </my-ember-component> GLIMMER COMPONENTS & ELEMENT MODIFIERS
  • 41. 1 <div> 2 {{@model.name}} 3 </div> 1 <my-ember-component 2 class="important" 3 data-priority 4 @model={{someProperty}} /> 1 <div class="important" data-priority> 2 Mitchell 3 </div> GLIMMER COMPONENTS & ELEMENT MODIFIERS
  • 42. 1 <div> 2 {{@model.name}} 3 </div> 1 <my-ember-component 2 class="important" 3 data-priority 4 @model={{someProperty}} /> 1 <div class="important" data-priority> 2 Mitchell 3 </div> GLIMMER COMPONENTS & ELEMENT MODIFIERS
  • 43. 1 <div> 2 {{@model.name}} 3 </div> 1 <my-ember-component 2 class="important" 3 data-priority 4 @model={{someProperty}} /> 1 <div class="important" data-priority> 2 Mitchell 3 </div> GLIMMER COMPONENTS & ELEMENT MODIFIERS
  • 44. 1 <div> 2 {{@model.name}} 3 </div> 1 <my-ember-component 2 class="important" 3 data-priority 4 @model={{someProperty}} /> 1 <div class="important" data-priority> 2 Mitchell 3 </div> GLIMMER COMPONENTS & ELEMENT MODIFIERS
  • 45. 1 <div class="solid"> 2 {{@model.name}} 3 </div> 1 <div class="important solid"> 2 Mitchell 3 </div> 1 <my-ember-component 2 class="important" 3 @model={{someProperty}} /> GLIMMER COMPONENTS & ELEMENT MODIFIERS
  • 46. 1 <div class="solid"> 2 {{@model.name}} 3 </div> 1 <div class="important solid"> 2 Mitchell 3 </div> 1 <my-ember-component 2 class="important" 3 @model={{someProperty}} /> GLIMMER COMPONENTS & ELEMENT MODIFIERS
  • 47. 1 <my-ember-component 2 @model={{someProperty}} as |name|> 3 {{name}} 4 </my-ember-component> 1 <div> 2 {{yield @model.name}} 3 </div> 1 <div> 2 Mitchell 3 </div> GLIMMER COMPONENTS & ELEMENT MODIFIERS
  • 48. 1 <my-ember-component 2 @model={{someProperty}} as |name|> 3 {{name}} 4 </my-ember-component> 1 <div> 2 {{yield @model.name}} 3 </div> 1 <div> 2 Mitchell 3 </div> GLIMMER COMPONENTS & ELEMENT MODIFIERS
  • 49. IGNITER • No RFC yet. Experimentation in runspired/igniter • Would remove the requirement of explicit runloops
  • 50. IGNITER 1 obj.set('name', 'Betsy'); 2 obj.set('age', '42'); 3 obj.set('shoes', 'heels');
  • 51. 1 obj.set('name', 'Betsy'); 2 obj.set('age', '42'); 3 obj.set('shoes', 'heels'); render(); render(); render(); IGNITER
  • 52. 1 obj.set('name', 'Betsy'); 2 obj.set('age', '42'); 3 obj.set('shoes', 'heels'); render(); render(); render(); IGNITER
  • 53. 1 obj.set('name', 'Betsy'); 2 obj.set('age', '42'); 3 obj.set('shoes', 'heels'); scheduleRender(); scheduleRender(); scheduleRender(); IGNITER
  • 54. Ember.run(() => { 2 3 4 }); 1 obj.set('name', 'Betsy'); 2 obj.set('age', '42'); 3 obj.set('shoes', 'heels'); scheduleRender(); scheduleRender(); scheduleRender(); IGNITER
  • 55. Ember.run.begin(); 2 3 4 Ember.run.end(); 1 obj.set('name', 'Betsy'); 2 obj.set('age', '42'); 3 obj.set('shoes', 'heels'); scheduleRender(); scheduleRender(); scheduleRender(); IGNITER
  • 56. Ember.run.begin(); 2 3 4 Ember.run.end(); 1 obj.set('name', 'Betsy'); 2 obj.set('age', '42'); 3 obj.set('shoes', 'heels'); scheduleRender(); scheduleRender(); scheduleRender(); render(); IGNITER
  • 57. 1 obj.set('name', 'Betsy'); 2 obj.set('age', '42'); 3 obj.set('shoes', 'heels'); scheduleRender(); scheduleRender(); scheduleRender(); IGNITER
  • 58. 1 obj.set('name', 'Betsy'); 2 obj.set('age', '42'); 3 obj.set('shoes', 'heels'); scheduleRender(); scheduleRender(); scheduleRender(); 1 setTimeout(() => { 2 render(); 3 }); IGNITER
  • 59. IGNITER 1 obj.set('name', 'Betsy'); 2 obj.set('age', '42'); 3 obj.set('shoes', 'heels'); scheduleRender(); scheduleRender(); scheduleRender(); 1 requestAnimationFrame(() => { 2 render(); 3 });
  • 60. • Glimmer binary VM and wire format, stack VM • Interoperability with ES Classes • Lazy evaluation and dead code elimination • Fastboot rehydration • Critical path rendering • Improved RFC automation • Improved visibility of feature progress
  • 62. “…is already here —” William Gibson 1999
  • 63. “it’s just not evenly distributed” William Gibson 1999
  • 64. “It is hard for people to imagine what the web is capable of.” 201 Created Clients 2017
  • 65.
  • 66. shop-201.com • SEO Friendly • Great animations • Install-to-homescreen • Tap-to-pay (ApplePay) • Phones, tablets, desktops