SlideShare a Scribd company logo
1 of 67
Download to read offline
CAN WE MAKE ES6 THE BASELINE OF THE
“MODERN WEB”?
CHRIS HEILMANN (@CODEPO8), BRAZILJS 2015
IN MOST BANDS, THE
BASS PLAYER IS A VERY
IMPORTANT PART, THAT
NOBODY GIVES
ENOUGH CREDIT.
THE BASS BRINGS THE
DRIVE, IT MOVES THE
SONG FORWARD,
KEEPS IT IN RHYTHM
AND TIGHT…
MANY BANDS I ADMIRE
ARE BASS-DRIVEN…
(MOTORHEAD, FAITH NO MORE, RED
HOT CHILLI PEPPERS, PRONG,
SACRED REICH, CLUTCH, NINE INCH
NAILS, PRIMUS…)
AND YET, WHEN IT
COMES TO ROCKSTARS
AND THE ONES THAT
GET MOST OF THE
CREDIT, IT’S THE
FRONTMEN AND
SINGERS…
THESE ALSO BURN OUT
FAR TOO OFTEN AND
MOVE ON TO LESS
SUCCESSFUL SOLO
CAREERS.
MOST BASS PLAYERS
ARE DEDICATED TO
KEEPING THE BAND
TOGETHER.
THEY ARE ALSO THE
ONES WITH THE BEST
CONNECTIONS TO
OTHER BANDS.
BRUCE CODDINGTON
@BRUCECODDINGTON
GITHUB SHIRT
JS STICKER
Bruce is an ex-rockstar wannabe that
stumbled across web development over a
decade ago. He loves writing JavaScript,
trying new frameworks, and using other
people’s good ideas to make his life
easier … He is currently the Chief
Operating Officer for a small finance
company so all of his coding is officially for
fun.
https://nejsconf.com/2015/brucecoddington/
THIS ROCKS!
IT SHOULDN’T BE
ABOUT WHO IS
BANGING THE
DRUM THE
LOUDEST…
OR SCREAMS THE
LOUDEST AND IS ANGRY
ABOUT EVERYTHING…
Bruce is an ex-rockstar wannabe that
stumbled across web development over a
decade ago. He loves writing JavaScript,
trying new frameworks, and using other
people’s good ideas to make his life
easier … He is currently the Chief
Operating Officer for a small finance
company so all of his coding is officially for
fun.
https://nejsconf.com/2015/brucecoddington/
Bruce is an ex-rockstar wannabe that
stumbled across web development over a
decade ago. He loves writing JavaScript,
trying new frameworks, and using other
people’s good ideas to make his life
easier … He is currently the Chief
Operating Officer for a small finance
company so all of his coding is officially for
fun.
https://nejsconf.com/2015/brucecoddington/
Bruce is an ex-rockstar wannabe that
stumbled across web development over a
decade ago. He loves writing JavaScript,
trying new frameworks, and using other
people’s good ideas to make his life
easier … He is currently the Chief
Operating Officer for a small finance
company so all of his coding is officially for
fun.
https://nejsconf.com/2015/brucecoddington/
Bruce is an ex-rockstar wannabe that
stumbled across web development over a
decade ago. He loves writing JavaScript,
trying new frameworks, and using other
people’s good ideas to make his life
easier … He is currently the Chief
Operating Officer for a small finance
company so all of his coding is officially for
fun.
https://nejsconf.com/2015/brucecoddington/
I AM TIRED OF THE FIGHTS AND AGGRESSIVE FANS…
THERE ARE A FEW
THINGS ABOUT THE
WEB THAT CAN’T BE
CHANGED…
'use strict';
const web = 1;
THE WEB IS DESIGNED TO WORK INDEPENDENT
OF HARDWARE, SOFTWARE, ABILITY OR LOCATION.
NATIVE, MORE DEFINED
ENVIRONMENTS CAN
INNOVATE FASTER, AS
THEY CONTROL THE
USER.
THERE’LL ALWAYS BE BROWSER FRAGMENTATION
OUR JOB IS TO
DELIVER CONTENT
AND FUNCTIONALITY
TO END USERS.
WE ARE THERE FOR
THEM. NOT THEY FOR
US.
?
http://www.w3.org/TR/html-design-principles/#priority-of-constituencies
In case of conflict, consider users over authors over
implementors over specifiers over theoretical purity.
In other words costs or difficulties to the user should
be given more weight than costs to authors; which in
turn should be given more weight than costs to
implementors; which should be given more weight
than costs to authors of the spec itself, which should
be given more weight than those proposing changes
for theoretical reasons alone. Of course, it is
preferred to make things better for multiple
constituencies at once.
“
PRIORITIES OF CONSTITUENCIES…
THIS IS A TALL ORDER,
AND WE HAVE TO FIND
A WAY TO DEAL WITH
THIS.
THE MAIN THING THAT
DEMANDED CHANGE
(AND CAUSED A LOT OF DRAMA)
IS THE RISE OF MOBILE.
ON MOBILE, THE
DECK IS STACKED
AGAINST THE WEB…
ON MOBILE, THE
DECK IS STACKED
AGAINST THE WEB…
• Browsers are hard-wired and
update with operating systems
• Hardware creators, service
providers and even third party
vendors fork and release their
own unholy versions of the OS
and the browser.
• The more you control the
experience, the more
competitive you are.
TO COMPETE ON MOBILE,
WE NEED OUR WEB
TECHNOLOGY STACK TO
IMPROVE.
THE NEEDS FOR
JAVASCRIPT HAVE
CHANGED OVER
THE YEARS.
WE NEED TIRES
WITH MORE GRIP
FOR THE
CHANGED WEB.
IT IS IMPOSSIBLE,
OR AT LEAST VERY
DANGEROUS TO
DO SO TO A
MOVING CAR…
THIS IS WHY A LOT OF
DISCUSSION ABOUT
WEB INNOVATION
ASSUMES DEFINED
ENVIRONMENTS…
• Many innovative ideas are
experimental in one browser for a
long time
• Some features rely on pre-
processing, post-processing or
compilation
• Some features even rely on
conversion to binary formats
• A lot of great innovation happens on
the server side in node
environments.
THERE IS NOTHING
WRONG WITH THAT.
BUT WE NEED TO
FIND A WAY TO MOVE
THE WHOLE WEB
FORWARD.
TODAY YOU WILL
HEAR A LOT ABOUT
NEW IDEAS, NEW
INNOVATIONS AND
NEW APPROACHES
TO SOLVE OUR
PROBLEMS.
ONE OF THE MOST
PROMISING AND
IMPORTANT TO ME IS
ES6.
• Arrow functions as a short-hand version of an
anonymous function.
• Block-level scope using let instead of var makes
variables scoped to a block (if, for, while, etc.)
• Classes to encapsulate and extend code.
• Constants using the const keyword.
• Default parameters for functions like foo(bar = 3, baz =
2)
• Destructuring to assign values from arrays or objects
into variables.
• Generators that create iterators using function* and
the yield keyword.
• Map, a Dictionary type object that can be used to store
key/value pairs. and Set as a collection object to store
a list of data values.
• Modules as a way of organizing and loading code.
• Promises for async operations avoiding callback hell
• Rest parameters instead of using arguments to access
functions arguments.
• Template Strings to build up string values including
multi-line strings.
ES6 COMES WITH
SO MUCH
GOODNESS,
TECHNICALLY IT
HAS TO BE
FATTENING…
Library Builders
map, set & weakmap
__proto__
Proxies
Symbols
Sub7classable built7ins
Scalable Apps
let, const & block7
scoped bindings
Classes
Promises
Iterators
Generators
Typed arrays
Modules
Syntactic Sugar
Arrow functions
Enhanced object literals
Template strings
Destructuring
Rest, Spread, Default
String, Math, Number,
Object, RegExp APIs
ALL OF THESE PARTS HAVE DIFFERENT AUDIENCES
SUPPORT IS ENCOURAGING, BUT ALSO PATCHY
http://kangax.github.io/compat-table/es6/
THE PROBLEM: FOR
NON-SUPPORTING
BROWSERS, ES6
FEATURES ARE
SYNTAX ERRORS…
THE SOLUTION:
TRANSPILING INTO
ES5…
https://babeljs.io
✘ It adds an extra step in between
writing code and running it in the
browser - probably the thing that
made the web grow as fast as it
did.
✘ We don’t run or debug the code
we write.
✘ We’re at the mercy of the
transpiler to create efficient code
✘ We create probably much more
code than We need
✘ Browsers that support ES6 will
never get any.
THE PROBLEMS WITH
TRANSPILING:
https://featuretests.io/
WHAT ABOUT FEATURE TESTING?
✘ It is an extra step that might be
costly
✘ We can only do it client-side
✘ We can get false positives -
experimental features might be
implemented in a rudimentary
fashion
✘ We have to keep your feature
tests up-to-date and extend them
as needed - support for one
feature doesn’t mean support for
another.
THE PROBLEMS WITH
FEATURE TESTING:
YOU CAN USE AN
ABSTRACTION,
FRAMEWORK OR
LIBRARY THAT HAS
SIMILAR FEATURES…
✘ They makes us dependent on
that abstraction
✘ We can’t control possible version
clashes in the abstraction layer -
if the creators choose to make a
new version completely different
all our code needs changing
✘ Maintainers need to know the
abstraction instead of the
standard of ES6
PROBLEMS WITH ANY
ABSTRACTION
CONTROVERSIAL
STATEMENT
FOLLOWING!
WE ALL KNOW THE
DOM IS SLOW,
TERRIBLE AND TO
BLAME FOR ALL OUR
PROBLEMS.
https://www.youtube.com/watch?v=Y2Y0U-2qJMs
http://ejohn.org/blog/the-dom-is-a-mess/
WE ALL KNOW THE
DOM IS SLOW,
TERRIBLE AND TO
BLAME FOR ALL OUR
PROBLEMS.
DID WE ALLOW IT TO
STAY THAT WAY AND
STILL BE A PROBLEM
AS WE ABSTRACTED
ITS ISSUES AWAY?
THE ES6
CONUNDRUM:
• We can’t use it safely in the wild
• We can use TypeScript or transpile it
• We can feature test for it, but that
can get complex quickly
• Browsers that support it, will not get
any ES6 that way (but can use it
internally)
• The performance is bad right now
(which is a normal thing). To improve
this, we need ES6 to be used in the
wild…
BUT THERE’S ALSO
GOOD NEWS!
THINGS YOU LEARN WHEN YOU WRITE A NEW JS
ENGINE
https://channel9.msdn.com/events/WebPlatformSummit/2015/Chakra-The-
JavaScript-Engine-that-powers-Microsoft-Edge
@BTERLSON
@GAURAVSETH
THINGS YOU LEARN
WHEN YOU WRITE A
NEW JS ENGINE
✘ Only a third of the top 3000 sites
can benefit from JS inlining.
Reason is lots of scripts instead
of concatenation.
✘ You need to optimise a lot of JS in
the engine (length reading on
every iteration of for loops!)
✘ Outdated libraries are still very
much in use and clash with new
JS features (mootools breaking
with array.contains(), zepto
disliking array constructors)
✓ Minification is used a lot on the
web and optimising for uglify.js
code is a big win
THINGS I LEARNED
WORKING FOR
BROWSER MAKERS
✓ It is a constant race not to break the
web - every mistake web developers
make needs to get catered for.
✓ The pressure is immense. Instead of
pushing for an interoperable web,
browsers are constantly compared
and expected to be different.
✓ When implementing standards, we
find a lot of problems and feed them
back. That’s why a score of 100% in
feature tests makes no sense.
✓ Most speed increases are based on
analysing and fixing developer
mistakes/sloppiness.
ONE PROBLEM ES6
DOESN’T HAVE THAT
A LOT OF OTHER
INNOVATION HAS IS
THAT SAFARI IOS IS
ON BOARD…
http://nolanlawson.com/2015/06/30/safari-is-the-new-ie/
WE NEED YOU TO HELP
US FIX THIS ISSUE.
LET’S MAKE A
BASELINE A REALITY.
HELP ES6 BY
LOOKING AT ITS
UNIT TESTS…
https://github.com/tc39/test262
http://test262.ecmascript.org/
YOU CAN LEARN
AND FIX ISSUES.
http://es6katas.org
CHECK BACK PERIODICALLY ON SUPPORT
http://kangax.github.io/compat-table/es6/
TEST ES6 PERFORMANCE http://kpdecker.github.io/six-speed/
THE GREAT THING
ABOUT JAVASCRIPT IS
THAT IT IS A VERY
FLEXIBLE LANGUAGE
USED IN MANY
ENVIRONMENTS…
ES6 SHOULD NOT BE A FUTURE
PROMISE BY BROWSER VENDORS,
PLATFORM OWNERS, OR LIBRARY
CREATORS.
IT IS UP TO US TO CATCH THAT
CARROT AND EAT IT.
TRY TO USE AS MUCH ES6
AS YOU CAN - EVEN IN THE
CLIENT
• Feature test for a few things that do make
a lot of sense - promises for example.
• Get to play with template strings inside
<template> elements - you are already in a
non-poly-fillable world then.
• Run tests, feed back what works and what
doesn’t
• This kind of research is never a waste, and
it means you learn by doing.
IN DEFINED
ENVIRONMENTS GO CRAZY
AND TEST AS MUCH AS
YOU CAN.
• Node solutions, browser extensions,
in-browser functionality are all great
opportunities to knock out kinks of
the standard.
• You control the environment and no
browser support isn’t a problem for
you.
• Any issue found here can speed up
adaptation on the client - better to
find it now than when it is too late.
ABOVE ALL, FIND SOME LOVE FOR INNOVATION
YOU ARE A CREATOR OF THE NEXT WEB!
• The web became the success it is because
people like you cared for it - there was not one
company to tell the world how to use it.
• This is important and should be cherished by all
involved.
• Help it stay that way, by supporting those
pushing it forward and using what is on offer
• Features get prioritised when they are in use by
developers - so, see what you can do to give
back real data using new and innovative
technology in real products.
THANK YOU!
CHRIS HEILMANN
@CODEPO8
Stick and Carrot: Alan O’Rourke
https://www.flickr.com/photos/33524159@N00/17233999165
Stick, Carrot and heart: opensourceway
https://www.flickr.com/photos/47691521@N07/5537457133/
Changing tire: Afroswede
https://www.flickr.com/photos/51035768826@N01/1172892
Speeding Car: amira_a
https://www.flickr.com/photos/46646401@N06/6778014952
Rocks: Tambako the Jaguar
https://www.flickr.com/photos/8070463@N03/5143889969/
Drummers: abbilder
https://www.flickr.com/photos/21617436@N00/8770084959/
Screaming singer: Photohunny
https://www.flickr.com/photos/43122725@N07/5981736281/
Screaming at fight: martingarri
https://www.flickr.com/photos/38001453@N00/6191907945
Raygun: miss_rogue
https://www.flickr.com/photos/92544710@N00/190255724
Tired Dog: Mini D
https://www.flickr.com/photos/24963327@N00/14934721105
Fix: Deborah Fitchett
https://www.flickr.com/photos/31320962@N05/4374565545
Card Deck: waitscm
https://www.flickr.com/photos/78341140@N00/6245359243/

More Related Content

What's hot

Moore vs. May - everything is faster and better: we can fix that
Moore vs. May - everything is faster and better: we can fix thatMoore vs. May - everything is faster and better: we can fix that
Moore vs. May - everything is faster and better: we can fix thatChristian Heilmann
 
All the small things… - Awwwards 2016
All the small things… - Awwwards 2016All the small things… - Awwwards 2016
All the small things… - Awwwards 2016Christian Heilmann
 
Upgrading JavaScript to ES6 and using TypeScript as a shortcut
Upgrading JavaScript to ES6 and using TypeScript as a shortcutUpgrading JavaScript to ES6 and using TypeScript as a shortcut
Upgrading JavaScript to ES6 and using TypeScript as a shortcutChristian Heilmann
 
Responsive, adaptive and responsible - keynote at NebraskaJS
Responsive, adaptive and responsible - keynote at NebraskaJSResponsive, adaptive and responsible - keynote at NebraskaJS
Responsive, adaptive and responsible - keynote at NebraskaJSChristian Heilmann
 
The image problem of the web and how to solve it…
The image problem of the web and how to solve it…The image problem of the web and how to solve it…
The image problem of the web and how to solve it…Christian Heilmann
 
The wheel is spinning but the hamster is almost dead - Smartweb 2015
The wheel is spinning but the hamster is almost dead - Smartweb 2015The wheel is spinning but the hamster is almost dead - Smartweb 2015
The wheel is spinning but the hamster is almost dead - Smartweb 2015Christian Heilmann
 
Making ES6 available to all with ChakraCore and Typescript
Making ES6 available to all with ChakraCore and TypescriptMaking ES6 available to all with ChakraCore and Typescript
Making ES6 available to all with ChakraCore and TypescriptChristian Heilmann
 
NodeConfLondon - Making ES6 happen with ChakraCore and Node
NodeConfLondon - Making ES6 happen with ChakraCore and NodeNodeConfLondon - Making ES6 happen with ChakraCore and Node
NodeConfLondon - Making ES6 happen with ChakraCore and NodeChristian Heilmann
 
Mind the Gap - State of the Browser 2015
Mind the Gap - State of the Browser 2015Mind the Gap - State of the Browser 2015
Mind the Gap - State of the Browser 2015Christian Heilmann
 
Turning huge ships - Open Source and Microsoft
Turning huge ships - Open Source and MicrosoftTurning huge ships - Open Source and Microsoft
Turning huge ships - Open Source and MicrosoftChristian Heilmann
 
Innovating the other web - #wrocsharp keynote
Innovating the other web - #wrocsharp keynote Innovating the other web - #wrocsharp keynote
Innovating the other web - #wrocsharp keynote Christian Heilmann
 
A New Hope – the web strikes back
A New Hope – the web strikes backA New Hope – the web strikes back
A New Hope – the web strikes backChristian Heilmann
 
Advancing JavaScript without breaking the web - MunichJS
Advancing JavaScript without breaking the web - MunichJSAdvancing JavaScript without breaking the web - MunichJS
Advancing JavaScript without breaking the web - MunichJSChristian Heilmann
 
Automating all the wrong things - You Gotta Love Frontend Keynote
Automating all the wrong things - You Gotta Love Frontend KeynoteAutomating all the wrong things - You Gotta Love Frontend Keynote
Automating all the wrong things - You Gotta Love Frontend KeynoteChristian Heilmann
 
JavaScript : What is it really? AND Some new features in ES6
JavaScript : What is it really? AND Some new features in ES6JavaScript : What is it really? AND Some new features in ES6
JavaScript : What is it really? AND Some new features in ES6Aayush Shrestha
 
Breaking out of the Tetris mind set #btconf
Breaking out of the Tetris mind set #btconfBreaking out of the Tetris mind set #btconf
Breaking out of the Tetris mind set #btconfChristian Heilmann
 
5 Quick JavaScript Performance Improvement Tips
5 Quick JavaScript Performance Improvement Tips5 Quick JavaScript Performance Improvement Tips
5 Quick JavaScript Performance Improvement TipsTroy Miles
 
Looking for a place to hang my helmet
Looking for a place to hang my helmetLooking for a place to hang my helmet
Looking for a place to hang my helmetBrad Frost
 
JavaScript is a buffet - Scriptconf 2017 keynote
JavaScript is a buffet - Scriptconf 2017 keynoteJavaScript is a buffet - Scriptconf 2017 keynote
JavaScript is a buffet - Scriptconf 2017 keynoteChristian Heilmann
 
High performance java script why everything youve been taught is wrong
High performance java script why everything youve been taught is wrongHigh performance java script why everything youve been taught is wrong
High performance java script why everything youve been taught is wrongTao Gao
 

What's hot (20)

Moore vs. May - everything is faster and better: we can fix that
Moore vs. May - everything is faster and better: we can fix thatMoore vs. May - everything is faster and better: we can fix that
Moore vs. May - everything is faster and better: we can fix that
 
All the small things… - Awwwards 2016
All the small things… - Awwwards 2016All the small things… - Awwwards 2016
All the small things… - Awwwards 2016
 
Upgrading JavaScript to ES6 and using TypeScript as a shortcut
Upgrading JavaScript to ES6 and using TypeScript as a shortcutUpgrading JavaScript to ES6 and using TypeScript as a shortcut
Upgrading JavaScript to ES6 and using TypeScript as a shortcut
 
Responsive, adaptive and responsible - keynote at NebraskaJS
Responsive, adaptive and responsible - keynote at NebraskaJSResponsive, adaptive and responsible - keynote at NebraskaJS
Responsive, adaptive and responsible - keynote at NebraskaJS
 
The image problem of the web and how to solve it…
The image problem of the web and how to solve it…The image problem of the web and how to solve it…
The image problem of the web and how to solve it…
 
The wheel is spinning but the hamster is almost dead - Smartweb 2015
The wheel is spinning but the hamster is almost dead - Smartweb 2015The wheel is spinning but the hamster is almost dead - Smartweb 2015
The wheel is spinning but the hamster is almost dead - Smartweb 2015
 
Making ES6 available to all with ChakraCore and Typescript
Making ES6 available to all with ChakraCore and TypescriptMaking ES6 available to all with ChakraCore and Typescript
Making ES6 available to all with ChakraCore and Typescript
 
NodeConfLondon - Making ES6 happen with ChakraCore and Node
NodeConfLondon - Making ES6 happen with ChakraCore and NodeNodeConfLondon - Making ES6 happen with ChakraCore and Node
NodeConfLondon - Making ES6 happen with ChakraCore and Node
 
Mind the Gap - State of the Browser 2015
Mind the Gap - State of the Browser 2015Mind the Gap - State of the Browser 2015
Mind the Gap - State of the Browser 2015
 
Turning huge ships - Open Source and Microsoft
Turning huge ships - Open Source and MicrosoftTurning huge ships - Open Source and Microsoft
Turning huge ships - Open Source and Microsoft
 
Innovating the other web - #wrocsharp keynote
Innovating the other web - #wrocsharp keynote Innovating the other web - #wrocsharp keynote
Innovating the other web - #wrocsharp keynote
 
A New Hope – the web strikes back
A New Hope – the web strikes backA New Hope – the web strikes back
A New Hope – the web strikes back
 
Advancing JavaScript without breaking the web - MunichJS
Advancing JavaScript without breaking the web - MunichJSAdvancing JavaScript without breaking the web - MunichJS
Advancing JavaScript without breaking the web - MunichJS
 
Automating all the wrong things - You Gotta Love Frontend Keynote
Automating all the wrong things - You Gotta Love Frontend KeynoteAutomating all the wrong things - You Gotta Love Frontend Keynote
Automating all the wrong things - You Gotta Love Frontend Keynote
 
JavaScript : What is it really? AND Some new features in ES6
JavaScript : What is it really? AND Some new features in ES6JavaScript : What is it really? AND Some new features in ES6
JavaScript : What is it really? AND Some new features in ES6
 
Breaking out of the Tetris mind set #btconf
Breaking out of the Tetris mind set #btconfBreaking out of the Tetris mind set #btconf
Breaking out of the Tetris mind set #btconf
 
5 Quick JavaScript Performance Improvement Tips
5 Quick JavaScript Performance Improvement Tips5 Quick JavaScript Performance Improvement Tips
5 Quick JavaScript Performance Improvement Tips
 
Looking for a place to hang my helmet
Looking for a place to hang my helmetLooking for a place to hang my helmet
Looking for a place to hang my helmet
 
JavaScript is a buffet - Scriptconf 2017 keynote
JavaScript is a buffet - Scriptconf 2017 keynoteJavaScript is a buffet - Scriptconf 2017 keynote
JavaScript is a buffet - Scriptconf 2017 keynote
 
High performance java script why everything youve been taught is wrong
High performance java script why everything youve been taught is wrongHigh performance java script why everything youve been taught is wrong
High performance java script why everything youve been taught is wrong
 

Similar to Can we make es6 the baseline of the “modern web”? - BrazilJS 2105

Stapling and patching the web of now - ForwardJS3, San Francisco
Stapling and patching the web of now - ForwardJS3, San FranciscoStapling and patching the web of now - ForwardJS3, San Francisco
Stapling and patching the web of now - ForwardJS3, San FranciscoChristian Heilmann
 
Of innovation and impatience - Future Decoded 2015
Of innovation and impatience - Future Decoded 2015Of innovation and impatience - Future Decoded 2015
Of innovation and impatience - Future Decoded 2015Christian Heilmann
 
Breaking out of the endless callback look - #jsday Italy keynote
Breaking out of the endless callback look - #jsday Italy keynoteBreaking out of the endless callback look - #jsday Italy keynote
Breaking out of the endless callback look - #jsday Italy keynoteChristian Heilmann
 
Quo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynoteQuo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynoteChristian Heilmann
 
Web Performance - Why it matters
Web Performance - Why it mattersWeb Performance - Why it matters
Web Performance - Why it mattersEnrico Foschi
 
A call to JS Developers - Let’s stop trying to impress each other and start b...
A call to JS Developers - Let’s stop trying to impress each other and start b...A call to JS Developers - Let’s stop trying to impress each other and start b...
A call to JS Developers - Let’s stop trying to impress each other and start b...Christian Heilmann
 
Play Framework: Intro & High-Level Overview
Play Framework: Intro & High-Level OverviewPlay Framework: Intro & High-Level Overview
Play Framework: Intro & High-Level OverviewJosh Padnick
 
Progressing JavaScript and Apps the Web way…
 Progressing JavaScript and Apps the Web way…  Progressing JavaScript and Apps the Web way…
Progressing JavaScript and Apps the Web way… Christian Heilmann
 
Making sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverlessMaking sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverlessChristian Posta
 
Performance Tuning Web Apps - The Need For Speed
Performance Tuning Web Apps - The Need For SpeedPerformance Tuning Web Apps - The Need For Speed
Performance Tuning Web Apps - The Need For SpeedVijay Rayapati
 
Style Guide Best Practices
Style Guide Best PracticesStyle Guide Best Practices
Style Guide Best PracticesBrad Frost
 
CSS3 and a brief introduction to Google Maps API v3
CSS3 and a brief introduction to Google Maps API v3 CSS3 and a brief introduction to Google Maps API v3
CSS3 and a brief introduction to Google Maps API v3 Jeffrey Barke
 
Doing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code Camp
Doing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code CampDoing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code Camp
Doing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code CampChris Love
 
New Rules of The Responsive Web
New Rules of The Responsive WebNew Rules of The Responsive Web
New Rules of The Responsive WebMatt Carver
 
Introduction to a Responsive Master Page with the Design Manager
Introduction to a Responsive Master Page with the Design ManagerIntroduction to a Responsive Master Page with the Design Manager
Introduction to a Responsive Master Page with the Design ManagerShareGate
 
Bootstrap for Beginners
Bootstrap for BeginnersBootstrap for Beginners
Bootstrap for BeginnersD'arce Hess
 

Similar to Can we make es6 the baseline of the “modern web”? - BrazilJS 2105 (20)

Stapling and patching the web of now - ForwardJS3, San Francisco
Stapling and patching the web of now - ForwardJS3, San FranciscoStapling and patching the web of now - ForwardJS3, San Francisco
Stapling and patching the web of now - ForwardJS3, San Francisco
 
Of innovation and impatience - Future Decoded 2015
Of innovation and impatience - Future Decoded 2015Of innovation and impatience - Future Decoded 2015
Of innovation and impatience - Future Decoded 2015
 
Breaking out of the endless callback look - #jsday Italy keynote
Breaking out of the endless callback look - #jsday Italy keynoteBreaking out of the endless callback look - #jsday Italy keynote
Breaking out of the endless callback look - #jsday Italy keynote
 
Jsday
JsdayJsday
Jsday
 
Responsive Design
Responsive DesignResponsive Design
Responsive Design
 
Quo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynoteQuo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynote
 
Web Performance - Why it matters
Web Performance - Why it mattersWeb Performance - Why it matters
Web Performance - Why it matters
 
A call to JS Developers - Let’s stop trying to impress each other and start b...
A call to JS Developers - Let’s stop trying to impress each other and start b...A call to JS Developers - Let’s stop trying to impress each other and start b...
A call to JS Developers - Let’s stop trying to impress each other and start b...
 
Play Framework: Intro & High-Level Overview
Play Framework: Intro & High-Level OverviewPlay Framework: Intro & High-Level Overview
Play Framework: Intro & High-Level Overview
 
Progressing JavaScript and Apps the Web way…
 Progressing JavaScript and Apps the Web way…  Progressing JavaScript and Apps the Web way…
Progressing JavaScript and Apps the Web way…
 
Dean4j@Njug5
Dean4j@Njug5Dean4j@Njug5
Dean4j@Njug5
 
Making sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverlessMaking sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverless
 
Performance Tuning Web Apps - The Need For Speed
Performance Tuning Web Apps - The Need For SpeedPerformance Tuning Web Apps - The Need For Speed
Performance Tuning Web Apps - The Need For Speed
 
Style Guide Best Practices
Style Guide Best PracticesStyle Guide Best Practices
Style Guide Best Practices
 
CSS3 and a brief introduction to Google Maps API v3
CSS3 and a brief introduction to Google Maps API v3 CSS3 and a brief introduction to Google Maps API v3
CSS3 and a brief introduction to Google Maps API v3
 
Doing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code Camp
Doing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code CampDoing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code Camp
Doing Modern Web, aka JavaScript and HTML5 in the Enterprise NYC Code Camp
 
New Rules of The Responsive Web
New Rules of The Responsive WebNew Rules of The Responsive Web
New Rules of The Responsive Web
 
Introduction to a Responsive Master Page with the Design Manager
Introduction to a Responsive Master Page with the Design ManagerIntroduction to a Responsive Master Page with the Design Manager
Introduction to a Responsive Master Page with the Design Manager
 
Prototyping: Helping to take away the suck
Prototyping: Helping to take away the suckPrototyping: Helping to take away the suck
Prototyping: Helping to take away the suck
 
Bootstrap for Beginners
Bootstrap for BeginnersBootstrap for Beginners
Bootstrap for Beginners
 

More from Christian Heilmann

Develop, Debug, Learn? - Dotjs2019
Develop, Debug, Learn? - Dotjs2019Develop, Debug, Learn? - Dotjs2019
Develop, Debug, Learn? - Dotjs2019Christian Heilmann
 
Taking the "vile" out of privilege
Taking the "vile" out of privilegeTaking the "vile" out of privilege
Taking the "vile" out of privilegeChristian Heilmann
 
Seven ways to be a happier JavaScript developer - NDC Oslo
Seven ways to be a happier JavaScript developer - NDC OsloSeven ways to be a happier JavaScript developer - NDC Oslo
Seven ways to be a happier JavaScript developer - NDC OsloChristian Heilmann
 
Artificial intelligence for humans… #AIDC2018 keynote
Artificial intelligence for humans… #AIDC2018 keynoteArtificial intelligence for humans… #AIDC2018 keynote
Artificial intelligence for humans… #AIDC2018 keynoteChristian Heilmann
 
Killing the golden calf of coding - We are Developers keynote
Killing the golden calf of coding - We are Developers keynoteKilling the golden calf of coding - We are Developers keynote
Killing the golden calf of coding - We are Developers keynoteChristian Heilmann
 
Progressive Web Apps - Techdays Finland
Progressive Web Apps - Techdays FinlandProgressive Web Apps - Techdays Finland
Progressive Web Apps - Techdays FinlandChristian Heilmann
 
Taking the "vile" out of privilege
Taking the "vile" out of privilegeTaking the "vile" out of privilege
Taking the "vile" out of privilegeChristian Heilmann
 
Five ways to be a happier JavaScript developer
Five ways to be a happier JavaScript developerFive ways to be a happier JavaScript developer
Five ways to be a happier JavaScript developerChristian Heilmann
 
Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"Christian Heilmann
 
You learned JavaScript - now what?
You learned JavaScript - now what?You learned JavaScript - now what?
You learned JavaScript - now what?Christian Heilmann
 
Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"Christian Heilmann
 
Progressive Web Apps - Covering the best of both worlds - DevReach
Progressive Web Apps - Covering the best of both worlds - DevReachProgressive Web Apps - Covering the best of both worlds - DevReach
Progressive Web Apps - Covering the best of both worlds - DevReachChristian Heilmann
 
Progressive Web Apps - Covering the best of both worlds
Progressive Web Apps - Covering the best of both worldsProgressive Web Apps - Covering the best of both worlds
Progressive Web Apps - Covering the best of both worldsChristian Heilmann
 
Non-trivial pursuits: Learning machines and forgetful humans
Non-trivial pursuits: Learning machines and forgetful humansNon-trivial pursuits: Learning machines and forgetful humans
Non-trivial pursuits: Learning machines and forgetful humansChristian Heilmann
 
Progressive Web Apps - Bringing the web front and center
Progressive Web Apps - Bringing the web front and center Progressive Web Apps - Bringing the web front and center
Progressive Web Apps - Bringing the web front and center Christian Heilmann
 
CSS vs. JavaScript - Trust vs. Control
CSS vs. JavaScript - Trust vs. ControlCSS vs. JavaScript - Trust vs. Control
CSS vs. JavaScript - Trust vs. ControlChristian Heilmann
 
Leveling up your JavaScipt - DrupalJam 2017
Leveling up your JavaScipt - DrupalJam 2017Leveling up your JavaScipt - DrupalJam 2017
Leveling up your JavaScipt - DrupalJam 2017Christian Heilmann
 
The Soul in The Machine - Developing for Humans (FrankenJS edition)
The Soul in The Machine - Developing for Humans (FrankenJS edition)The Soul in The Machine - Developing for Humans (FrankenJS edition)
The Soul in The Machine - Developing for Humans (FrankenJS edition)Christian Heilmann
 

More from Christian Heilmann (20)

Develop, Debug, Learn? - Dotjs2019
Develop, Debug, Learn? - Dotjs2019Develop, Debug, Learn? - Dotjs2019
Develop, Debug, Learn? - Dotjs2019
 
Hinting at a better web
Hinting at a better webHinting at a better web
Hinting at a better web
 
Taking the "vile" out of privilege
Taking the "vile" out of privilegeTaking the "vile" out of privilege
Taking the "vile" out of privilege
 
Seven ways to be a happier JavaScript developer - NDC Oslo
Seven ways to be a happier JavaScript developer - NDC OsloSeven ways to be a happier JavaScript developer - NDC Oslo
Seven ways to be a happier JavaScript developer - NDC Oslo
 
Artificial intelligence for humans… #AIDC2018 keynote
Artificial intelligence for humans… #AIDC2018 keynoteArtificial intelligence for humans… #AIDC2018 keynote
Artificial intelligence for humans… #AIDC2018 keynote
 
Killing the golden calf of coding - We are Developers keynote
Killing the golden calf of coding - We are Developers keynoteKilling the golden calf of coding - We are Developers keynote
Killing the golden calf of coding - We are Developers keynote
 
Progressive Web Apps - Techdays Finland
Progressive Web Apps - Techdays FinlandProgressive Web Apps - Techdays Finland
Progressive Web Apps - Techdays Finland
 
Taking the "vile" out of privilege
Taking the "vile" out of privilegeTaking the "vile" out of privilege
Taking the "vile" out of privilege
 
Five ways to be a happier JavaScript developer
Five ways to be a happier JavaScript developerFive ways to be a happier JavaScript developer
Five ways to be a happier JavaScript developer
 
Taking the P out of PWA
Taking the P out of PWATaking the P out of PWA
Taking the P out of PWA
 
Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"
 
You learned JavaScript - now what?
You learned JavaScript - now what?You learned JavaScript - now what?
You learned JavaScript - now what?
 
Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"
 
Progressive Web Apps - Covering the best of both worlds - DevReach
Progressive Web Apps - Covering the best of both worlds - DevReachProgressive Web Apps - Covering the best of both worlds - DevReach
Progressive Web Apps - Covering the best of both worlds - DevReach
 
Progressive Web Apps - Covering the best of both worlds
Progressive Web Apps - Covering the best of both worldsProgressive Web Apps - Covering the best of both worlds
Progressive Web Apps - Covering the best of both worlds
 
Non-trivial pursuits: Learning machines and forgetful humans
Non-trivial pursuits: Learning machines and forgetful humansNon-trivial pursuits: Learning machines and forgetful humans
Non-trivial pursuits: Learning machines and forgetful humans
 
Progressive Web Apps - Bringing the web front and center
Progressive Web Apps - Bringing the web front and center Progressive Web Apps - Bringing the web front and center
Progressive Web Apps - Bringing the web front and center
 
CSS vs. JavaScript - Trust vs. Control
CSS vs. JavaScript - Trust vs. ControlCSS vs. JavaScript - Trust vs. Control
CSS vs. JavaScript - Trust vs. Control
 
Leveling up your JavaScipt - DrupalJam 2017
Leveling up your JavaScipt - DrupalJam 2017Leveling up your JavaScipt - DrupalJam 2017
Leveling up your JavaScipt - DrupalJam 2017
 
The Soul in The Machine - Developing for Humans (FrankenJS edition)
The Soul in The Machine - Developing for Humans (FrankenJS edition)The Soul in The Machine - Developing for Humans (FrankenJS edition)
The Soul in The Machine - Developing for Humans (FrankenJS edition)
 

Recently uploaded

Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)cama23
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...Postal Advocate Inc.
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatYousafMalik24
 
Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4JOYLYNSAMANIEGO
 
How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17Celine George
 
Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Mark Reed
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYKayeClaireEstoconing
 
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxQ4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxlancelewisportillo
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxAshokKarra1
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designMIPLM
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)lakshayb543
 
ICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdfICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdfVanessa Camilleri
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPCeline George
 
Food processing presentation for bsc agriculture hons
Food processing presentation for bsc agriculture honsFood processing presentation for bsc agriculture hons
Food processing presentation for bsc agriculture honsManeerUddin
 
Active Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdfActive Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdfPatidar M
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxAnupkumar Sharma
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...Nguyen Thanh Tu Collection
 
ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4MiaBumagat1
 

Recently uploaded (20)

Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice great
 
Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4Daily Lesson Plan in Mathematics Quarter 4
Daily Lesson Plan in Mathematics Quarter 4
 
How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17
 
Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
 
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxQ4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptx
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-design
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
 
ICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdfICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdf
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERP
 
Food processing presentation for bsc agriculture hons
Food processing presentation for bsc agriculture honsFood processing presentation for bsc agriculture hons
Food processing presentation for bsc agriculture hons
 
Active Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdfActive Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdf
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
 
ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4
 
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptxLEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
 
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptxYOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
 

Can we make es6 the baseline of the “modern web”? - BrazilJS 2105

  • 1. CAN WE MAKE ES6 THE BASELINE OF THE “MODERN WEB”? CHRIS HEILMANN (@CODEPO8), BRAZILJS 2015
  • 2. IN MOST BANDS, THE BASS PLAYER IS A VERY IMPORTANT PART, THAT NOBODY GIVES ENOUGH CREDIT.
  • 3. THE BASS BRINGS THE DRIVE, IT MOVES THE SONG FORWARD, KEEPS IT IN RHYTHM AND TIGHT…
  • 4. MANY BANDS I ADMIRE ARE BASS-DRIVEN… (MOTORHEAD, FAITH NO MORE, RED HOT CHILLI PEPPERS, PRONG, SACRED REICH, CLUTCH, NINE INCH NAILS, PRIMUS…)
  • 5. AND YET, WHEN IT COMES TO ROCKSTARS AND THE ONES THAT GET MOST OF THE CREDIT, IT’S THE FRONTMEN AND SINGERS…
  • 6. THESE ALSO BURN OUT FAR TOO OFTEN AND MOVE ON TO LESS SUCCESSFUL SOLO CAREERS.
  • 7. MOST BASS PLAYERS ARE DEDICATED TO KEEPING THE BAND TOGETHER.
  • 8. THEY ARE ALSO THE ONES WITH THE BEST CONNECTIONS TO OTHER BANDS.
  • 11. Bruce is an ex-rockstar wannabe that stumbled across web development over a decade ago. He loves writing JavaScript, trying new frameworks, and using other people’s good ideas to make his life easier … He is currently the Chief Operating Officer for a small finance company so all of his coding is officially for fun. https://nejsconf.com/2015/brucecoddington/
  • 13. IT SHOULDN’T BE ABOUT WHO IS BANGING THE DRUM THE LOUDEST…
  • 14. OR SCREAMS THE LOUDEST AND IS ANGRY ABOUT EVERYTHING…
  • 15. Bruce is an ex-rockstar wannabe that stumbled across web development over a decade ago. He loves writing JavaScript, trying new frameworks, and using other people’s good ideas to make his life easier … He is currently the Chief Operating Officer for a small finance company so all of his coding is officially for fun. https://nejsconf.com/2015/brucecoddington/
  • 16. Bruce is an ex-rockstar wannabe that stumbled across web development over a decade ago. He loves writing JavaScript, trying new frameworks, and using other people’s good ideas to make his life easier … He is currently the Chief Operating Officer for a small finance company so all of his coding is officially for fun. https://nejsconf.com/2015/brucecoddington/
  • 17. Bruce is an ex-rockstar wannabe that stumbled across web development over a decade ago. He loves writing JavaScript, trying new frameworks, and using other people’s good ideas to make his life easier … He is currently the Chief Operating Officer for a small finance company so all of his coding is officially for fun. https://nejsconf.com/2015/brucecoddington/
  • 18. Bruce is an ex-rockstar wannabe that stumbled across web development over a decade ago. He loves writing JavaScript, trying new frameworks, and using other people’s good ideas to make his life easier … He is currently the Chief Operating Officer for a small finance company so all of his coding is officially for fun. https://nejsconf.com/2015/brucecoddington/
  • 19. I AM TIRED OF THE FIGHTS AND AGGRESSIVE FANS…
  • 20. THERE ARE A FEW THINGS ABOUT THE WEB THAT CAN’T BE CHANGED… 'use strict'; const web = 1;
  • 21. THE WEB IS DESIGNED TO WORK INDEPENDENT OF HARDWARE, SOFTWARE, ABILITY OR LOCATION.
  • 22. NATIVE, MORE DEFINED ENVIRONMENTS CAN INNOVATE FASTER, AS THEY CONTROL THE USER.
  • 23. THERE’LL ALWAYS BE BROWSER FRAGMENTATION
  • 24. OUR JOB IS TO DELIVER CONTENT AND FUNCTIONALITY TO END USERS. WE ARE THERE FOR THEM. NOT THEY FOR US. ?
  • 25. http://www.w3.org/TR/html-design-principles/#priority-of-constituencies In case of conflict, consider users over authors over implementors over specifiers over theoretical purity. In other words costs or difficulties to the user should be given more weight than costs to authors; which in turn should be given more weight than costs to implementors; which should be given more weight than costs to authors of the spec itself, which should be given more weight than those proposing changes for theoretical reasons alone. Of course, it is preferred to make things better for multiple constituencies at once. “ PRIORITIES OF CONSTITUENCIES…
  • 26. THIS IS A TALL ORDER, AND WE HAVE TO FIND A WAY TO DEAL WITH THIS.
  • 27. THE MAIN THING THAT DEMANDED CHANGE (AND CAUSED A LOT OF DRAMA) IS THE RISE OF MOBILE.
  • 28. ON MOBILE, THE DECK IS STACKED AGAINST THE WEB…
  • 29. ON MOBILE, THE DECK IS STACKED AGAINST THE WEB… • Browsers are hard-wired and update with operating systems • Hardware creators, service providers and even third party vendors fork and release their own unholy versions of the OS and the browser. • The more you control the experience, the more competitive you are.
  • 30. TO COMPETE ON MOBILE, WE NEED OUR WEB TECHNOLOGY STACK TO IMPROVE.
  • 31. THE NEEDS FOR JAVASCRIPT HAVE CHANGED OVER THE YEARS. WE NEED TIRES WITH MORE GRIP FOR THE CHANGED WEB.
  • 32. IT IS IMPOSSIBLE, OR AT LEAST VERY DANGEROUS TO DO SO TO A MOVING CAR…
  • 33. THIS IS WHY A LOT OF DISCUSSION ABOUT WEB INNOVATION ASSUMES DEFINED ENVIRONMENTS… • Many innovative ideas are experimental in one browser for a long time • Some features rely on pre- processing, post-processing or compilation • Some features even rely on conversion to binary formats • A lot of great innovation happens on the server side in node environments.
  • 34. THERE IS NOTHING WRONG WITH THAT. BUT WE NEED TO FIND A WAY TO MOVE THE WHOLE WEB FORWARD.
  • 35. TODAY YOU WILL HEAR A LOT ABOUT NEW IDEAS, NEW INNOVATIONS AND NEW APPROACHES TO SOLVE OUR PROBLEMS.
  • 36. ONE OF THE MOST PROMISING AND IMPORTANT TO ME IS ES6.
  • 37. • Arrow functions as a short-hand version of an anonymous function. • Block-level scope using let instead of var makes variables scoped to a block (if, for, while, etc.) • Classes to encapsulate and extend code. • Constants using the const keyword. • Default parameters for functions like foo(bar = 3, baz = 2) • Destructuring to assign values from arrays or objects into variables. • Generators that create iterators using function* and the yield keyword. • Map, a Dictionary type object that can be used to store key/value pairs. and Set as a collection object to store a list of data values. • Modules as a way of organizing and loading code. • Promises for async operations avoiding callback hell • Rest parameters instead of using arguments to access functions arguments. • Template Strings to build up string values including multi-line strings. ES6 COMES WITH SO MUCH GOODNESS, TECHNICALLY IT HAS TO BE FATTENING…
  • 38. Library Builders map, set & weakmap __proto__ Proxies Symbols Sub7classable built7ins Scalable Apps let, const & block7 scoped bindings Classes Promises Iterators Generators Typed arrays Modules Syntactic Sugar Arrow functions Enhanced object literals Template strings Destructuring Rest, Spread, Default String, Math, Number, Object, RegExp APIs ALL OF THESE PARTS HAVE DIFFERENT AUDIENCES
  • 39. SUPPORT IS ENCOURAGING, BUT ALSO PATCHY http://kangax.github.io/compat-table/es6/
  • 40. THE PROBLEM: FOR NON-SUPPORTING BROWSERS, ES6 FEATURES ARE SYNTAX ERRORS…
  • 42. ✘ It adds an extra step in between writing code and running it in the browser - probably the thing that made the web grow as fast as it did. ✘ We don’t run or debug the code we write. ✘ We’re at the mercy of the transpiler to create efficient code ✘ We create probably much more code than We need ✘ Browsers that support ES6 will never get any. THE PROBLEMS WITH TRANSPILING:
  • 44. ✘ It is an extra step that might be costly ✘ We can only do it client-side ✘ We can get false positives - experimental features might be implemented in a rudimentary fashion ✘ We have to keep your feature tests up-to-date and extend them as needed - support for one feature doesn’t mean support for another. THE PROBLEMS WITH FEATURE TESTING:
  • 45. YOU CAN USE AN ABSTRACTION, FRAMEWORK OR LIBRARY THAT HAS SIMILAR FEATURES…
  • 46. ✘ They makes us dependent on that abstraction ✘ We can’t control possible version clashes in the abstraction layer - if the creators choose to make a new version completely different all our code needs changing ✘ Maintainers need to know the abstraction instead of the standard of ES6 PROBLEMS WITH ANY ABSTRACTION
  • 48. WE ALL KNOW THE DOM IS SLOW, TERRIBLE AND TO BLAME FOR ALL OUR PROBLEMS. https://www.youtube.com/watch?v=Y2Y0U-2qJMs http://ejohn.org/blog/the-dom-is-a-mess/
  • 49. WE ALL KNOW THE DOM IS SLOW, TERRIBLE AND TO BLAME FOR ALL OUR PROBLEMS. DID WE ALLOW IT TO STAY THAT WAY AND STILL BE A PROBLEM AS WE ABSTRACTED ITS ISSUES AWAY?
  • 50. THE ES6 CONUNDRUM: • We can’t use it safely in the wild • We can use TypeScript or transpile it • We can feature test for it, but that can get complex quickly • Browsers that support it, will not get any ES6 that way (but can use it internally) • The performance is bad right now (which is a normal thing). To improve this, we need ES6 to be used in the wild…
  • 52. THINGS YOU LEARN WHEN YOU WRITE A NEW JS ENGINE https://channel9.msdn.com/events/WebPlatformSummit/2015/Chakra-The- JavaScript-Engine-that-powers-Microsoft-Edge @BTERLSON @GAURAVSETH
  • 53. THINGS YOU LEARN WHEN YOU WRITE A NEW JS ENGINE ✘ Only a third of the top 3000 sites can benefit from JS inlining. Reason is lots of scripts instead of concatenation. ✘ You need to optimise a lot of JS in the engine (length reading on every iteration of for loops!) ✘ Outdated libraries are still very much in use and clash with new JS features (mootools breaking with array.contains(), zepto disliking array constructors) ✓ Minification is used a lot on the web and optimising for uglify.js code is a big win
  • 54. THINGS I LEARNED WORKING FOR BROWSER MAKERS ✓ It is a constant race not to break the web - every mistake web developers make needs to get catered for. ✓ The pressure is immense. Instead of pushing for an interoperable web, browsers are constantly compared and expected to be different. ✓ When implementing standards, we find a lot of problems and feed them back. That’s why a score of 100% in feature tests makes no sense. ✓ Most speed increases are based on analysing and fixing developer mistakes/sloppiness.
  • 55. ONE PROBLEM ES6 DOESN’T HAVE THAT A LOT OF OTHER INNOVATION HAS IS THAT SAFARI IOS IS ON BOARD… http://nolanlawson.com/2015/06/30/safari-is-the-new-ie/
  • 56. WE NEED YOU TO HELP US FIX THIS ISSUE. LET’S MAKE A BASELINE A REALITY.
  • 57. HELP ES6 BY LOOKING AT ITS UNIT TESTS… https://github.com/tc39/test262 http://test262.ecmascript.org/
  • 58. YOU CAN LEARN AND FIX ISSUES. http://es6katas.org
  • 59. CHECK BACK PERIODICALLY ON SUPPORT http://kangax.github.io/compat-table/es6/
  • 60. TEST ES6 PERFORMANCE http://kpdecker.github.io/six-speed/
  • 61. THE GREAT THING ABOUT JAVASCRIPT IS THAT IT IS A VERY FLEXIBLE LANGUAGE USED IN MANY ENVIRONMENTS…
  • 62. ES6 SHOULD NOT BE A FUTURE PROMISE BY BROWSER VENDORS, PLATFORM OWNERS, OR LIBRARY CREATORS. IT IS UP TO US TO CATCH THAT CARROT AND EAT IT.
  • 63. TRY TO USE AS MUCH ES6 AS YOU CAN - EVEN IN THE CLIENT • Feature test for a few things that do make a lot of sense - promises for example. • Get to play with template strings inside <template> elements - you are already in a non-poly-fillable world then. • Run tests, feed back what works and what doesn’t • This kind of research is never a waste, and it means you learn by doing.
  • 64. IN DEFINED ENVIRONMENTS GO CRAZY AND TEST AS MUCH AS YOU CAN. • Node solutions, browser extensions, in-browser functionality are all great opportunities to knock out kinks of the standard. • You control the environment and no browser support isn’t a problem for you. • Any issue found here can speed up adaptation on the client - better to find it now than when it is too late.
  • 65. ABOVE ALL, FIND SOME LOVE FOR INNOVATION
  • 66. YOU ARE A CREATOR OF THE NEXT WEB! • The web became the success it is because people like you cared for it - there was not one company to tell the world how to use it. • This is important and should be cherished by all involved. • Help it stay that way, by supporting those pushing it forward and using what is on offer • Features get prioritised when they are in use by developers - so, see what you can do to give back real data using new and innovative technology in real products.
  • 67. THANK YOU! CHRIS HEILMANN @CODEPO8 Stick and Carrot: Alan O’Rourke https://www.flickr.com/photos/33524159@N00/17233999165 Stick, Carrot and heart: opensourceway https://www.flickr.com/photos/47691521@N07/5537457133/ Changing tire: Afroswede https://www.flickr.com/photos/51035768826@N01/1172892 Speeding Car: amira_a https://www.flickr.com/photos/46646401@N06/6778014952 Rocks: Tambako the Jaguar https://www.flickr.com/photos/8070463@N03/5143889969/ Drummers: abbilder https://www.flickr.com/photos/21617436@N00/8770084959/ Screaming singer: Photohunny https://www.flickr.com/photos/43122725@N07/5981736281/ Screaming at fight: martingarri https://www.flickr.com/photos/38001453@N00/6191907945 Raygun: miss_rogue https://www.flickr.com/photos/92544710@N00/190255724 Tired Dog: Mini D https://www.flickr.com/photos/24963327@N00/14934721105 Fix: Deborah Fitchett https://www.flickr.com/photos/31320962@N05/4374565545 Card Deck: waitscm https://www.flickr.com/photos/78341140@N00/6245359243/