SlideShare a Scribd company logo
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
A world outside Polymer
Horacio Gonzalez
@LostInBrittany
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Horacio Gonzalez
@LostInBrittany
Spaniard lost in Brittany,
developer, dreamer and
all-around geek
http://cityzendata.com
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
We want the code!
https://github.com/LostInBrittany/a-world-outside-polymer
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Web Components
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
A very basic web component
class MyElement extends HTMLElement {
// This gets called when the HTML parser sees your tag
constructor() {
super(); // always call super() first in the ctor.
this.msg = 'Hello, RennesJS!';
}
// Called when your element is inserted in the DOM or
// immediately after the constructor if it’s already in the DOM
connectedCallback() {
this.innerHTML = `<p>${this.msg}</p>`;
}
}
customElements.define('my-element', MyElement);
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Custom Elements:
● Let you define your own HTML tag with bundled
JS behavior
● Trigger lifecycle callbacks
● Automatically “upgrade” your tag when inserted in
the document
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Custom Elements don’t:
● Scope CSS styles
○ Shadow DOM
● Scope JavaScript
○ ES2015
● “Reproject” children into <slot> elements
○ Shadow DOM
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Adding ShadowDOM
class MyElementWithShadowDom extends HTMLElement {
// This gets called when the HTML parser sees your tag
constructor() {
super(); // always call super() first in the ctor.
this.msg = 'Hello, RennesJS!';
this.attachShadow({ mode: 'open' });
}
// Called when your element is inserted in the DOM or
// immediately after the constructor if it’s already in the DOM
connectedCallback() {
this.shadowRoot.innerHTML = `<p>${this.msg}</p>`;
}
}
customElements.define('my-element-with-shadowdom', MyElementWithShadowDom);
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Adding ShadowDOM
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Lifecycle callbacks
class MyElementLifecycle extends HTMLElement {
constructor() {
// Called when an instance of the element is created or upgraded
super(); // always call super() first in the ctor.
}
// Tells the element which attributes to observer for changes
// This is a feature added by Custom Elements
static get observedAttributes() {
return [];
}
connectedCallback() {
// Called every time the element is inserted into the DOM
}
disconnectedCallback() {
// Called every time the element is removed from the DOM.
}
attributeChangedCallback(attrName, oldVal, newVal) {
// Called when an attribute was added, removed, or updated
}
adoptedCallback() {
// Called if the element has been moved into a new document
}
}
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
my-counter custom element
class MyCounter extends HTMLElement {
constructor() {
super();
this._counter = 0;
this.attachShadow({ mode: 'open' });
}
connectedCallback() { this.render() }
static get observedAttributes() { return [ 'counter' ] }
attributeChangedCallback(attr, oldVal, newVal) {
if (oldVal !== newVal) {
this[attr] = newVal;
}
}
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
my-counter custom element
get counter() {
return this._counter;
}
set counter(value) {
if (value != this._counter) {
this._counter = Number.parseInt(value);
this.setAttribute('counter', value);
this.display();
}
}
increment() {
this.counter = this.counter + 1;
}
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
my-counter custom element
render() {
let button = document.createElement('button');
button.innerHTML = '+';
button.addEventListener('click', this.increment.bind(this));
this.shadowRoot.appendChild(button);
this.output = document.createElement('span');
this.shadowRoot.appendChild(this.output);
this.style.display = 'block';
this.style.fontSize = '5rem';
button.style.fontSize = '5rem';
button.style.borderRadius = '1rem';
button.style.padding = '0.5rem 2rem';
this.output.style.marginLeft = '2rem';
}
display() {
this.output.innerHTML = `${this.counter}`;
}
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
my-counter custom element
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Polymer
Adding syntactic sugar to the standard
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Everything is better with sugar
<link rel="import" href="./bower_components/polymer/polymer.html">
<dom-module id="my-polymer-counter">
<template>
<style>
:host {
font-size: 5rem;
}
button {
font-size: 5rem;
border-radius: 1rem;
padding: 0.5rem 2rem;
}
</style>
<button on-click="increment">+</button>
<span>[[counter]]</span>
</template>
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Everything is better with sugar
<script>
class MyPolymerCounter extends Polymer.Element {
static get is() { return 'my-polymer-counter'; }
static get properties() {
return {
counter: { type: Number, reflectToAttribute:true, value: 0 }
}
}
increment() {
this.counter = Number.parseInt(this.counter) + 1;
}
}
customElements.define('my-polymer-counter', MyPolymerCounter);
</script>
</dom-module>
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Everything is better with sugar
Polymer is like jQuery for Web components
@notwaldorf
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
But they are still custom elements
100% interoperables
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Interoperation pattern
Attributes for data in
Events for data out
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
To infinity and beyond!
There is a world outside Polymer
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Lots of web components libraries
For different need and sensibilities
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Slim.js
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Slim.js
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Slim.js
● Lightweight web component library
● Extended capabilities for components
○ data binding
● Using es6 native class inheritance
● Without Shadow DOM
Like a lighter and lesser-featured Polymer
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Slim.js
Slim.tag('my-slim-counter', `
<style> [...] </style>
<div class="container">
<div class="button" slim-id="button"> <img src="./img/slim.png"> </div>
<div class="value" bind> [[counter]] </div>
</div>`,
class extends Slim {
onCreated() {
if (this.counter == undefined) {
this.counter = Number.parseInt(this.getAttribute('counter'))||0;
}
this.button.onclick = () => {
this.counter++;
this.dispatchEvent(new CustomEvent('counter-changed', {detail: {counter: this.counter}}));
}
}
});
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Bram.js
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Bram.js
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Bram.js
● Lightweight web component library
● Extended capabilities for components
○ data binding
● Using es6 native class inheritance
● With Shadow DOM (optional)
Like a lighter and lesser-featured Polymer, with
Shadow DOM
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Bram.js
let template=`
<style> [...] </style>
<div class="container">
<div class="button" on-click="increase"> <img src="./img/bram.png"> </div>
<div class="value" > {{counter}} </div>
</div>`;
class MyBramCounter extends Bram(HTMLElement) {
static get template() {
let t = document.createElement('template');
t.innerHTML = template;
return t;
}
static get events() { return ['counter-changed']; }
constructor() {
super();
this.model.counter = this.getAttribute('counter') || 0;
}
static get observedProperties() { return [ 'counter' ] } //Non documented
increase() {
this.model.counter++;
this.dispatchEvent(new CustomEvent('counter-changed', {detail: {counter: this.model.counter}}));
}
}
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Skatejs
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Skatejs
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Skatejs
● Lightweight web component library
● Functional rendering pipeline
○ backed by Google's Incremental DOM
● Very very fast
● With a React/Preact flavour
Nice if you dislike declarative syntax and DOM...
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Skatejs
class MySkateCounter extends skate.Component {
static get props () {
return {
counter: skate.prop.number({ attribute: true })
};
}
renderCallback () {
console.log("render", skate.h('div',{},'hello'));
return [
skate.h('style', {}, '.container { [...] }'),
skate.h('style', '.button { [...] }'),
skate.h('style', {}, '.value { margin: 0.5rem; color: #eee; }'),
skate.h('div', { 'class': 'container'},
skate.h('div', {
'class': 'button' ,
'onClick': () => {
this.counter++;
skate.emit(this, 'counter-changed', { detail: { counter: this.counter } });
}},
skate.h('img', { 'src' : './img/skate.png' })),
skate.h('div', { 'class': 'value'}, this.counter))
];
}
}
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Conclusion
That's all folks!
@LostInBrittany#RennesJS #Polymer #MixingWebComponents
Thank you!

More Related Content

What's hot

React.js or why DOM finally makes sense
React.js or why DOM finally makes senseReact.js or why DOM finally makes sense
React.js or why DOM finally makes sense
Eldar Djafarov
 

What's hot (20)

Angular Directives from Scratch
Angular Directives from ScratchAngular Directives from Scratch
Angular Directives from Scratch
 
Art of Javascript
Art of JavascriptArt of Javascript
Art of Javascript
 
Anton Minashkin Dagger 2 light
Anton Minashkin Dagger 2 lightAnton Minashkin Dagger 2 light
Anton Minashkin Dagger 2 light
 
A Journey with React
A Journey with ReactA Journey with React
A Journey with React
 
React.js or why DOM finally makes sense
React.js or why DOM finally makes senseReact.js or why DOM finally makes sense
React.js or why DOM finally makes sense
 
Angular JS2 Training Session #1
Angular JS2 Training Session #1Angular JS2 Training Session #1
Angular JS2 Training Session #1
 
ReactJS
ReactJSReactJS
ReactJS
 
JavaScript and UI Architecture Best Practices
JavaScript and UI Architecture Best PracticesJavaScript and UI Architecture Best Practices
JavaScript and UI Architecture Best Practices
 
Data binding в массы! (1.2)
Data binding в массы! (1.2)Data binding в массы! (1.2)
Data binding в массы! (1.2)
 
REACT.JS : Rethinking UI Development Using JavaScript
REACT.JS : Rethinking UI Development Using JavaScriptREACT.JS : Rethinking UI Development Using JavaScript
REACT.JS : Rethinking UI Development Using JavaScript
 
Domain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with RailsDomain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with Rails
 
React with Redux
React with ReduxReact with Redux
React with Redux
 
Os Leonard
Os LeonardOs Leonard
Os Leonard
 
Intro to Angular.JS Directives
Intro to Angular.JS DirectivesIntro to Angular.JS Directives
Intro to Angular.JS Directives
 
Os Harris
Os HarrisOs Harris
Os Harris
 
Basic Tutorial of React for Programmers
Basic Tutorial of React for ProgrammersBasic Tutorial of React for Programmers
Basic Tutorial of React for Programmers
 
AngularJS
AngularJSAngularJS
AngularJS
 
Controller Testing: You're Doing It Wrong
Controller Testing: You're Doing It WrongController Testing: You're Doing It Wrong
Controller Testing: You're Doing It Wrong
 
JavaScript Promises
JavaScript PromisesJavaScript Promises
JavaScript Promises
 
AngularJs
AngularJsAngularJs
AngularJs
 

Similar to Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27

#NewMeetup Performance
#NewMeetup Performance#NewMeetup Performance
#NewMeetup Performance
Justin Cataldo
 
! Modernizr v2.0.6 httpwww.modernizr.com Copyri.docx
!  Modernizr v2.0.6  httpwww.modernizr.com   Copyri.docx!  Modernizr v2.0.6  httpwww.modernizr.com   Copyri.docx
! Modernizr v2.0.6 httpwww.modernizr.com Copyri.docx
MARRY7
 
От экспериментов с инфраструктурой до внедрения в продакшен
От экспериментов с инфраструктурой до внедрения в продакшенОт экспериментов с инфраструктурой до внедрения в продакшен
От экспериментов с инфраструктурой до внедрения в продакшен
Dmitry Makhnev
 
Cristiano Betta (Betta Works) - Lightweight Libraries with Rollup, Riot and R...
Cristiano Betta (Betta Works) - Lightweight Libraries with Rollup, Riot and R...Cristiano Betta (Betta Works) - Lightweight Libraries with Rollup, Riot and R...
Cristiano Betta (Betta Works) - Lightweight Libraries with Rollup, Riot and R...
Techsylvania
 

Similar to Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27 (20)

The Web Components interoperability challenge - Horacio Gonzalez - Codemotion...
The Web Components interoperability challenge - Horacio Gonzalez - Codemotion...The Web Components interoperability challenge - Horacio Gonzalez - Codemotion...
The Web Components interoperability challenge - Horacio Gonzalez - Codemotion...
 
Introduction to Polymer and Firebase - Simon Gauvin
Introduction to Polymer and Firebase - Simon GauvinIntroduction to Polymer and Firebase - Simon Gauvin
Introduction to Polymer and Firebase - Simon Gauvin
 
Polymer - pleasant client-side programming with web components
Polymer - pleasant client-side programming with web componentsPolymer - pleasant client-side programming with web components
Polymer - pleasant client-side programming with web components
 
JavaScript Refactoring
JavaScript RefactoringJavaScript Refactoring
JavaScript Refactoring
 
#NewMeetup Performance
#NewMeetup Performance#NewMeetup Performance
#NewMeetup Performance
 
! Modernizr v2.0.6 httpwww.modernizr.com Copyri.docx
!  Modernizr v2.0.6  httpwww.modernizr.com   Copyri.docx!  Modernizr v2.0.6  httpwww.modernizr.com   Copyri.docx
! Modernizr v2.0.6 httpwww.modernizr.com Copyri.docx
 
Stencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrivedStencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrived
 
Learn Dart And Angular, Get Your Web Development Wings With Kevin Moore
Learn Dart And Angular, Get Your Web Development Wings With Kevin MooreLearn Dart And Angular, Get Your Web Development Wings With Kevin Moore
Learn Dart And Angular, Get Your Web Development Wings With Kevin Moore
 
Interoperable Component Patterns
Interoperable Component PatternsInteroperable Component Patterns
Interoperable Component Patterns
 
Desbravando Web Components
Desbravando Web ComponentsDesbravando Web Components
Desbravando Web Components
 
«От экспериментов с инфраструктурой до внедрения в продакшен»​
«От экспериментов с инфраструктурой до внедрения в продакшен»​«От экспериментов с инфраструктурой до внедрения в продакшен»​
«От экспериментов с инфраструктурой до внедрения в продакшен»​
 
От экспериментов с инфраструктурой до внедрения в продакшен
От экспериментов с инфраструктурой до внедрения в продакшенОт экспериментов с инфраструктурой до внедрения в продакшен
От экспериментов с инфраструктурой до внедрения в продакшен
 
Clean Javascript
Clean JavascriptClean Javascript
Clean Javascript
 
Home Improvement: Architecture & Kotlin
Home Improvement: Architecture & KotlinHome Improvement: Architecture & Kotlin
Home Improvement: Architecture & Kotlin
 
React js
React jsReact js
React js
 
How to Mess Up Your Angular UI Components
How to Mess Up Your Angular UI ComponentsHow to Mess Up Your Angular UI Components
How to Mess Up Your Angular UI Components
 
Cristiano Betta (Betta Works) - Lightweight Libraries with Rollup, Riot and R...
Cristiano Betta (Betta Works) - Lightweight Libraries with Rollup, Riot and R...Cristiano Betta (Betta Works) - Lightweight Libraries with Rollup, Riot and R...
Cristiano Betta (Betta Works) - Lightweight Libraries with Rollup, Riot and R...
 
Android workshop
Android workshopAndroid workshop
Android workshop
 
[@IndeedEng] Building Indeed Resume Search
[@IndeedEng] Building Indeed Resume Search[@IndeedEng] Building Indeed Resume Search
[@IndeedEng] Building Indeed Resume Search
 
Oleksandr Tolstykh
Oleksandr TolstykhOleksandr Tolstykh
Oleksandr Tolstykh
 

More from Horacio Gonzalez

More from Horacio Gonzalez (20)

But there is no web component for that - Web Components Remote Conference - 2...
But there is no web component for that - Web Components Remote Conference - 2...But there is no web component for that - Web Components Remote Conference - 2...
But there is no web component for that - Web Components Remote Conference - 2...
 
Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27
 Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27 Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27
Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27
 
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...
 
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
 
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
 
Mixing Web Components - Best of Web Paris - 2016 06-09
Mixing Web Components - Best of Web Paris - 2016 06-09Mixing Web Components - Best of Web Paris - 2016 06-09
Mixing Web Components - Best of Web Paris - 2016 06-09
 
Polymer in the real life - Devoxx France - 2016 04-20
Polymer in the real life - Devoxx France - 2016 04-20Polymer in the real life - Devoxx France - 2016 04-20
Polymer in the real life - Devoxx France - 2016 04-20
 
Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24
Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24 Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24
Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24
 
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScriptENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
 
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQLENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JSENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
 
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQLENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
 
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScriptENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...
 
Beyond Polymer - JUG Summer Camp - 2015-09-18
Beyond Polymer - JUG Summer Camp - 2015-09-18Beyond Polymer - JUG Summer Camp - 2015-09-18
Beyond Polymer - JUG Summer Camp - 2015-09-18
 
Mixing Web Components - Paris Web Components - 2015 09-16
Mixing Web Components - Paris Web Components - 2015 09-16 Mixing Web Components - Paris Web Components - 2015 09-16
Mixing Web Components - Paris Web Components - 2015 09-16
 

Recently uploaded

Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 

Recently uploaded (20)

Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 

Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27