SlideShare a Scribd company logo
1 of 67
Download to read offline
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 Trafļ¬c
Global Mobile Web Trafļ¬c
StatsCounter
ITU
WHAT
THE WEB IS
0
0.25
0.5
0.75
1
2011 2012 2013 2014 2015 2016
Chrome Trafļ¬c
IE Trafļ¬c
StatsCounter
ā€¢ Online/Ofļ¬‚ine 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/Ofļ¬‚ine 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 ļ¬lters
ā€¢ <input pattern=
ā€¢ DNS prefetch
ā€¢ Multiple File Selection
ā€¢ Viewport sizes (8vw)
ā€¢ querySelector, matches
IE11+ WEB FEATURES
ā€¢ Online/Ofļ¬‚ine 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 ļ¬lters
ā€¢ <input pattern=
ā€¢ DNS prefetch
ā€¢ Multiple File Selection
ā€¢ Viewport sizes (8vw)
ā€¢ querySelector, matches
ā€¢ File API
ā€¢ IndexedDB
ā€¢ WebGL
ā€¢ dataset
ā€¢ <script> defer
ā€¢ getBoundingClientRect
ā€¢ ::ļ¬rst-line
ā€¢ calc()
ā€¢ requestAnimationFrame
ā€¢ atob / btoa
ā€¢ PageTransitionEvent
ā€¢ <video>
IE11+ WEB FEATURES
ā€¢ Online/Ofļ¬‚ine 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 ļ¬lters
ā€¢ <input pattern=
ā€¢ DNS prefetch
ā€¢ Multiple File Selection
ā€¢ Viewport sizes (8vw)
ā€¢ querySelector, matches
ā€¢ File API
ā€¢ IndexedDB
ā€¢ WebGL
ā€¢ dataset
ā€¢ <script> defer
ā€¢ getBoundingClientRect
ā€¢ ::ļ¬rst-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/Ofļ¬‚ine 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 ļ¬lters
ā€¢ <input pattern=
ā€¢ DNS prefetch
ā€¢ Multiple File Selection
ā€¢ Viewport sizes (8vw)
ā€¢ querySelector, matches
ā€¢ File API
ā€¢ IndexedDB
ā€¢ WebGL
ā€¢ dataset
ā€¢ <script> defer
ā€¢ getBoundingClientRect
ā€¢ ::ļ¬rst-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 speciļ¬cation 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 Uniļ¬cation) closed April
ā€¢ emberjs/rfcs#112 (Element Modiļ¬ers) 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

More Related Content

What's hot

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 Applications in Java
Reactive Applications in JavaReactive Applications in Java
Reactive Applications in JavaAlexander Mrynskyi
Ā 
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
Ā 

What's hot (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
Ā 

Viewers also liked

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
Ā 
Masa Israel Programs Overview
Masa Israel Programs OverviewMasa Israel Programs Overview
Masa Israel Programs OverviewMasa Israel Journey
Ā 
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
Ā 
Ember.js firebase HTML5 NYC
Ember.js firebase HTML5 NYCEmber.js firebase HTML5 NYC
Ember.js firebase HTML5 NYCBrendan O'Hara, MBA
Ā 
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
Ā 

Viewers also liked (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
Ā 

Similar to LA Ember.js Meetup, Jan 2017

Wider than rails
Wider than railsWider than rails
Wider than railsAlexey Nayden
Ā 
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
Ā 

Similar to 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
Ā 

More from 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
Ā 
Attribute actions
Attribute actionsAttribute actions
Attribute actionsMatthew 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
Ā 

More from 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
Ā 

Recently uploaded

IP addressing and IPv6, presented by Paul Wilson at IETF 119
IP addressing and IPv6, presented by Paul Wilson at IETF 119IP addressing and IPv6, presented by Paul Wilson at IETF 119
IP addressing and IPv6, presented by Paul Wilson at IETF 119APNIC
Ā 
Unidad 4 ā€“ Redes de ordenadores (en inglĆ©s).pptx
Unidad 4 ā€“ Redes de ordenadores (en inglĆ©s).pptxUnidad 4 ā€“ Redes de ordenadores (en inglĆ©s).pptx
Unidad 4 ā€“ Redes de ordenadores (en inglĆ©s).pptxmibuzondetrabajo
Ā 
SCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is prediSCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is predieusebiomeyer
Ā 
TRENDS Enabling and inhibiting dimensions.pptx
TRENDS Enabling and inhibiting dimensions.pptxTRENDS Enabling and inhibiting dimensions.pptx
TRENDS Enabling and inhibiting dimensions.pptxAndrieCagasanAkio
Ā 
ć€Žę¾³ę“²ę–‡å‡­ć€ä¹°ę‹‰ē­¹ä¼Æ大学ęƕäøščÆä¹¦ęˆē»©å•åŠžē†ę¾³ę“²LTUę–‡å‡­å­¦ä½čƁ书
ć€Žę¾³ę“²ę–‡å‡­ć€ä¹°ę‹‰ē­¹ä¼Æ大学ęƕäøščÆä¹¦ęˆē»©å•åŠžē†ę¾³ę“²LTUę–‡å‡­å­¦ä½čÆä¹¦ć€Žę¾³ę“²ę–‡å‡­ć€ä¹°ę‹‰ē­¹ä¼Æ大学ęƕäøščÆä¹¦ęˆē»©å•åŠžē†ę¾³ę“²LTUę–‡å‡­å­¦ä½čƁ书
ć€Žę¾³ę“²ę–‡å‡­ć€ä¹°ę‹‰ē­¹ä¼Æ大学ęƕäøščÆä¹¦ęˆē»©å•åŠžē†ę¾³ę“²LTUę–‡å‡­å­¦ä½čƁ书rnrncn29
Ā 
ć€Žę¾³ę“²ę–‡å‡­ć€ä¹°č©¹å§†å£«åŗ“克大学ęƕäøščÆä¹¦ęˆē»©å•åŠžē†ę¾³ę“²JCUę–‡å‡­å­¦ä½čƁ书
ć€Žę¾³ę“²ę–‡å‡­ć€ä¹°č©¹å§†å£«åŗ“克大学ęƕäøščÆä¹¦ęˆē»©å•åŠžē†ę¾³ę“²JCUę–‡å‡­å­¦ä½čÆä¹¦ć€Žę¾³ę“²ę–‡å‡­ć€ä¹°č©¹å§†å£«åŗ“克大学ęƕäøščÆä¹¦ęˆē»©å•åŠžē†ę¾³ę“²JCUę–‡å‡­å­¦ä½čƁ书
ć€Žę¾³ę“²ę–‡å‡­ć€ä¹°č©¹å§†å£«åŗ“克大学ęƕäøščÆä¹¦ęˆē»©å•åŠžē†ę¾³ę“²JCUę–‡å‡­å­¦ä½čƁ书rnrncn29
Ā 
ETHICAL HACKING dddddddddddddddfnandni.pptx
ETHICAL HACKING dddddddddddddddfnandni.pptxETHICAL HACKING dddddddddddddddfnandni.pptx
ETHICAL HACKING dddddddddddddddfnandni.pptxNIMMANAGANTI RAMAKRISHNA
Ā 
Cybersecurity Threats and Cybersecurity Best Practices
Cybersecurity Threats and Cybersecurity Best PracticesCybersecurity Threats and Cybersecurity Best Practices
Cybersecurity Threats and Cybersecurity Best PracticesLumiverse Solutions Pvt Ltd
Ā 
Company Snapshot Theme for Business by Slidesgo.pptx
Company Snapshot Theme for Business by Slidesgo.pptxCompany Snapshot Theme for Business by Slidesgo.pptx
Company Snapshot Theme for Business by Slidesgo.pptxMario
Ā 

Recently uploaded (9)

IP addressing and IPv6, presented by Paul Wilson at IETF 119
IP addressing and IPv6, presented by Paul Wilson at IETF 119IP addressing and IPv6, presented by Paul Wilson at IETF 119
IP addressing and IPv6, presented by Paul Wilson at IETF 119
Ā 
Unidad 4 ā€“ Redes de ordenadores (en inglĆ©s).pptx
Unidad 4 ā€“ Redes de ordenadores (en inglĆ©s).pptxUnidad 4 ā€“ Redes de ordenadores (en inglĆ©s).pptx
Unidad 4 ā€“ Redes de ordenadores (en inglĆ©s).pptx
Ā 
SCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is prediSCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is predi
Ā 
TRENDS Enabling and inhibiting dimensions.pptx
TRENDS Enabling and inhibiting dimensions.pptxTRENDS Enabling and inhibiting dimensions.pptx
TRENDS Enabling and inhibiting dimensions.pptx
Ā 
ć€Žę¾³ę“²ę–‡å‡­ć€ä¹°ę‹‰ē­¹ä¼Æ大学ęƕäøščÆä¹¦ęˆē»©å•åŠžē†ę¾³ę“²LTUę–‡å‡­å­¦ä½čƁ书
ć€Žę¾³ę“²ę–‡å‡­ć€ä¹°ę‹‰ē­¹ä¼Æ大学ęƕäøščÆä¹¦ęˆē»©å•åŠžē†ę¾³ę“²LTUę–‡å‡­å­¦ä½čÆä¹¦ć€Žę¾³ę“²ę–‡å‡­ć€ä¹°ę‹‰ē­¹ä¼Æ大学ęƕäøščÆä¹¦ęˆē»©å•åŠžē†ę¾³ę“²LTUę–‡å‡­å­¦ä½čƁ书
ć€Žę¾³ę“²ę–‡å‡­ć€ä¹°ę‹‰ē­¹ä¼Æ大学ęƕäøščÆä¹¦ęˆē»©å•åŠžē†ę¾³ę“²LTUę–‡å‡­å­¦ä½čƁ书
Ā 
ć€Žę¾³ę“²ę–‡å‡­ć€ä¹°č©¹å§†å£«åŗ“克大学ęƕäøščÆä¹¦ęˆē»©å•åŠžē†ę¾³ę“²JCUę–‡å‡­å­¦ä½čƁ书
ć€Žę¾³ę“²ę–‡å‡­ć€ä¹°č©¹å§†å£«åŗ“克大学ęƕäøščÆä¹¦ęˆē»©å•åŠžē†ę¾³ę“²JCUę–‡å‡­å­¦ä½čÆä¹¦ć€Žę¾³ę“²ę–‡å‡­ć€ä¹°č©¹å§†å£«åŗ“克大学ęƕäøščÆä¹¦ęˆē»©å•åŠžē†ę¾³ę“²JCUę–‡å‡­å­¦ä½čƁ书
ć€Žę¾³ę“²ę–‡å‡­ć€ä¹°č©¹å§†å£«åŗ“克大学ęƕäøščÆä¹¦ęˆē»©å•åŠžē†ę¾³ę“²JCUę–‡å‡­å­¦ä½čƁ书
Ā 
ETHICAL HACKING dddddddddddddddfnandni.pptx
ETHICAL HACKING dddddddddddddddfnandni.pptxETHICAL HACKING dddddddddddddddfnandni.pptx
ETHICAL HACKING dddddddddddddddfnandni.pptx
Ā 
Cybersecurity Threats and Cybersecurity Best Practices
Cybersecurity Threats and Cybersecurity Best PracticesCybersecurity Threats and Cybersecurity Best Practices
Cybersecurity Threats and Cybersecurity Best Practices
Ā 
Company Snapshot Theme for Business by Slidesgo.pptx
Company Snapshot Theme for Business by Slidesgo.pptxCompany Snapshot Theme for Business by Slidesgo.pptx
Company Snapshot Theme for Business by Slidesgo.pptx
Ā 

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 Trafļ¬c Global Mobile Web Trafļ¬c StatsCounter
  • 14. ITU
  • 15.
  • 16.
  • 17.
  • 18.
  • 20. 0 0.25 0.5 0.75 1 2011 2012 2013 2014 2015 2016 Chrome Trafļ¬c IE Trafļ¬c StatsCounter
  • 21. ā€¢ Online/Ofļ¬‚ine 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/Ofļ¬‚ine 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 ļ¬lters ā€¢ <input pattern= ā€¢ DNS prefetch ā€¢ Multiple File Selection ā€¢ Viewport sizes (8vw) ā€¢ querySelector, matches IE11+ WEB FEATURES
  • 23. ā€¢ Online/Ofļ¬‚ine 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 ļ¬lters ā€¢ <input pattern= ā€¢ DNS prefetch ā€¢ Multiple File Selection ā€¢ Viewport sizes (8vw) ā€¢ querySelector, matches ā€¢ File API ā€¢ IndexedDB ā€¢ WebGL ā€¢ dataset ā€¢ <script> defer ā€¢ getBoundingClientRect ā€¢ ::ļ¬rst-line ā€¢ calc() ā€¢ requestAnimationFrame ā€¢ atob / btoa ā€¢ PageTransitionEvent ā€¢ <video> IE11+ WEB FEATURES
  • 24. ā€¢ Online/Ofļ¬‚ine 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 ļ¬lters ā€¢ <input pattern= ā€¢ DNS prefetch ā€¢ Multiple File Selection ā€¢ Viewport sizes (8vw) ā€¢ querySelector, matches ā€¢ File API ā€¢ IndexedDB ā€¢ WebGL ā€¢ dataset ā€¢ <script> defer ā€¢ getBoundingClientRect ā€¢ ::ļ¬rst-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/Ofļ¬‚ine 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 ļ¬lters ā€¢ <input pattern= ā€¢ DNS prefetch ā€¢ Multiple File Selection ā€¢ Viewport sizes (8vw) ā€¢ querySelector, matches ā€¢ File API ā€¢ IndexedDB ā€¢ WebGL ā€¢ dataset ā€¢ <script> defer ā€¢ getBoundingClientRect ā€¢ ::ļ¬rst-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 speciļ¬cation 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 Uniļ¬cation) closed April ā€¢ emberjs/rfcs#112 (Element Modiļ¬ers) 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