@LostInBrittany#JSC2015 #BeyondPolymer
Speaker :
Horacio Gonzalez - @LostInBrittany
Beyond Polymer
Mixing Webcomponents
@LostInBrittany#JSC2015 #BeyondPolymer
Horacio Gonzalez
@LostInBrittany
Cityzen Data
http://cityzendata.com
Spaniard lost in Brittany,
developer, dreamer and all-
around geek
@LostInBrittany#JSC2015 #BeyondPolymer
Introduction
Because I love to tell old stories
@LostInBrittany#JSC2015 #BeyondPolymer
Polymer tour
@LostInBrittany#JSC2015 #BeyondPolymer
Web components == Revolution
Image: bu.edu
@LostInBrittany#JSC2015 #BeyondPolymer
Build a world brick by brick
Images: BitRebels & Brickset
@LostInBrittany#JSC2015 #BeyondPolymer
Variations of the same questions
But does it really works with
<inser techno here/>?
And what about the other
web components technologies?
@LostInBrittany#JSC2015 #BeyondPolymer
The questions deserved answers
So I decided to prepare a new talk
@LostInBrittany#JSC2015 #BeyondPolymer
I prepared everything before BreizhCamp
J'étais tranquille, j'étais pénard...
@LostInBrittany#JSC2015 #BeyondPolymer
And the Google made me a gift
The gift of living interesting moments...
@LostInBrittany#JSC2015 #BeyondPolymer
During a week sleep was optional
And tiredness began to take its toll
@LostInBrittany#JSC2015 #BeyondPolymer
But it worked!
Everything was rewritten in time
And people seemed to like it!
@LostInBrittany#JSC2015 #BeyondPolymer
Will it work today?
I had prepared a rather traditional slidedeck
Comparing Polymer with X-Tag and Bosomic
Explaining how to make them work together
@LostInBrittany#JSC2015 #BeyondPolymer
But I decided a new approach
The truth is in the code
I FIND YOUR LACK OF SOURCE CODE
DISTURBING
@LostInBrittany#JSC2015 #BeyondPolymer
Web Components
Reinventing the wheel... and this time
making it round
@LostInBrittany#JSC2015 #BeyondPolymer
Example : the Google+ button
● If you want to place a Google+ button in your page
<!-- Place this tag where you want the +1 button to render. -->
<div class="g-plusone" data-annotation="inline" data-width="300"
></div>
<!-- Place this tag after the last +1 button tag. -->
<script type="text/javascript">
(function() {
var po = document.createElement('script');
po.type = 'text/javascript';
po.async = true;
po.src = 'https://apis.google.com/js/plusone.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(po, s);
})();
</script>
@LostInBrittany#JSC2015 #BeyondPolymer
Example : the Google+ button
● And what I would like is simple
<g:plusone></g:plusone>
@LostInBrittany#JSC2015 #BeyondPolymer
Example : the Google+ button
● To be fair, Google already makes it simpler
<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
</script>...
<g:plusone></g:plusone>
● They create directives with JS to emulate components
○ AngularJS approach
○ Respecting the spirit of the future standard
○ Working in current browsers
Totally non standard...
@LostInBrittany#JSC2015 #BeyondPolymer
Another example : the RIB
● If you're French, you know what a RIB is
○ A banking account identification number
● To show a RIB in HTML:
○ All styling & surface control must be done elsewhere by CSS and JS
● What I would like
○ A semantic tag
○ With encapsulated styling and surface controlling
<div class="rib">58496 87451 00014500269 74</div>
<x-rib banque="58496" guichet="87451" compte="00014500269" cle="74" />
@LostInBrittany#JSC2015 #BeyondPolymer
But we already can do that!
● In most modern frameworks we can already do components, in
a way or another
○ And all those ways are different!
○ Using different JavaScript libraries
○ Almost no component sharing between frameworks
● W3C's works aim to make a standard way
○ Supported natively by all browsers
○ Allowing for component reuse
@LostInBrittany#JSC2015 #BeyondPolymer
W3C standard
● Web Components standard is being worked at W3C
○ We all know what this means
■ Clue : HTML5
They will work for years, bickering and fighting
Browsers and devs will use the WiP document
@LostInBrittany#JSC2015 #BeyondPolymer
The 4 pillars of the Web Components
● Templates
● Shadow DOM
● Custom Elements
● Imports
@LostInBrittany#JSC2015 #BeyondPolymer
Templates
Image : Instructables
The clone wars
@LostInBrittany#JSC2015 #BeyondPolymer
● Reusable blocks in the DOM with a new tag
● Content inside the tag is parsed but not interpreted
○ HTML not shown
○ Resources are not loaded
○ Scripts not executed
● Create the elements in page by cloning the template
The <template> tag
<template id="commentTemplate">
<div>
<img src="">
<div class="comment-text"></div>
</div>
</template>
@LostInBrittany#JSC2015 #BeyondPolymer
Shadow DOM
Image: Springfield Punx
Join the shadowy side,
young padawan
@LostInBrittany#JSC2015 #BeyondPolymer
Encapsulation
● Each component should have
○ Public interface
○ Private inner code
● When using a component
○ You manipulate the interface only
○ You don't need to know anything about inner code
○ No conflict between inner code and outside code
@LostInBrittany#JSC2015 #BeyondPolymer
Your browser cheats on you
● Considerer this simple slider
○ How does the browser deal with it?
■ With HTML, CSS and JS!
○ It has a movable element, I can recover it's position
■ Why cannot see it in DOM tree?
Browsers hide DOM sub-trees for standard components
They have a public interface and hidden inner code
That's Shadow DOM!
<input id="foo" type="range">
<video width="320" height="240" controls>
<source src="movie.mp4" type="video/mp4">
</video>
Image: Springfield Punx
@LostInBrittany#JSC2015 #BeyondPolymer
My name is DOM, Shadow DOM
● Shadow DOM: ability of the browser to
○ Include a DOM subtree into the rendering
○ But not into the main document DOM tree
● In Chome you can see the Shadow DOM
○ By activating the option in Inspector
@LostInBrittany#JSC2015 #BeyondPolymer
Looking into the Shadow
● For the slider :
@LostInBrittany#JSC2015 #BeyondPolymer
Shadow DOM is already here
● Browser use it everyday...
○ For their inner needs
○ Not exposed to developers
● Web Components makes Shadow DOM available
○ You can use it for your own components
Image: Springfield Punx
@LostInBrittany#JSC2015 #BeyondPolymer
Example
@LostInBrittany#JSC2015 #BeyondPolymer
Custom Elements
Image: The Brick Blogger
Elemental mayhem !
@LostInBrittany#JSC2015 #BeyondPolymer
Custom elements : the HTML side
● An element encloses template, lifecycle and behaviour
○ Templates done with <template> tag
<!-- Template Definition -->
<template id="template">
<style>
...
</style>
<div id="container">
<img src="http://webcomponents.org/img/logo.svg">
<content select="h1"></content>
</div>
</template>
<!-- Custom Element usage -->
<x-component>
<h1>This is Custom Element</h1>
</x-component>
@LostInBrittany#JSC2015 #BeyondPolymer
Custom elements : the JavaScript side
● An element encloses template, lifecycle and behaviour
○ JavaScript to define behaviour and register the element
var proto = Object.create(HTMLElement.prototype);
proto.createdCallback = function() {
// Adding a Shadow DOM
var root = this.createShadowRoot();
// Adding a template
var template = document.querySelector('#template');
var clone = document.importNode(template.content, true);
root.appendChild(clone);
}
var XComponent = document.registerElement('x-component', {
prototype: proto
});
@LostInBrittany#JSC2015 #BeyondPolymer
Imports
Image: Brikipedia
Because you hate long files
@LostInBrittany#JSC2015 #BeyondPolymer
● Custom elements can be loaded from external files
○ Using the link tag:
○ Only <decorator> and <element> are interpreted
○ The DOM of this document is available to script
○ Documents are retrieved according to cross-origin policies
Imports
<link rel="import" href="goodies.html">
@LostInBrittany#JSC2015 #BeyondPolymer
Can I use?
Image: Christoph Hauf
If not, why are you telling us all this sh*t?
@LostInBrittany#JSC2015 #BeyondPolymer
Are we componentized yet?
@LostInBrittany#JSC2015 #BeyondPolymer
WebComponents.org
@LostInBrittany#JSC2015 #BeyondPolymer
Polymer
Webcomponents for today's web
@LostInBrittany#JSC2015 #BeyondPolymer
● A Google project
○ Introduced in Google I/O 2013
○ New type of library for the web
○ Built on top of Web Components
○ Designed to leverage the evolving web platform
Version 1.0 just released last week at Google IO
Oh yeah!
Polymer
@LostInBrittany#JSC2015 #BeyondPolymer
● What does it means ?
○ Polymer is comprised of two efforts :
■ A paper platform to give Web Component
capabilities to modern browsers
● Shims for all modern browsers
● Shared with Mozilla x-tag project
■ A next-generation web framework built upon
this core platform
● Called Polymer Elements
Polymer
@LostInBrittany#JSC2015 #BeyondPolymer
Polymer
@LostInBrittany#JSC2015 #BeyondPolymer
Polymer elements
@LostInBrittany#JSC2015 #BeyondPolymer
● Principes:
○ Everything is a component
■ Encapsulation is needed for a component oriented application
○ Extreme pragmatism
■ Boilerplate is bad
■ Anything repetitive should be re-factored into a component
● Handled by Polymer itself or
● Added into the browser platform itself
Polymer
@LostInBrittany#JSC2015 #BeyondPolymer
● Principes:
○ Salt to taste
■ Use as much or as little of the framework as you wish.
● You want polyfills only : load polymer-
all/platform/platform.js
● You want extra bits : load polymer-
all/polymer/polymer.js
○ Polymer elements
Polymer
@LostInBrittany#JSC2015 #BeyondPolymer
● Platform technologies are already functional
○ You can use it to add templates, shadow DOM, custom elements and imports
to your app
● Lots of examples in the site
Polymer
@LostInBrittany#JSC2015 #BeyondPolymer
WebComponents
beyond Polymer
A whole world
@LostInBrittany#JSC2015 #BeyondPolymer
● X-Tag is a small JavaScript library
○ created and supported by Mozilla
○ that brings Web Components capabilities
○ to all modern browsers
● Polymer vs X-Tag?
○ Different features and approaches
○ Mozilla and Google worked together
■ building the shared polyfills platform
○ More barebones approach
X-Tag?
@LostInBrittany#JSC2015 #BeyondPolymer
● AngularJS directives allow to create custom elements
○ Same spirit, different implementation
AngularJS?
<!doctype html>
<html>
<head>
<title>Directive Test</title>
<script type="text/javascript" src="jquery.min.js" ></script>
<script type="text/javascript" src="angular.min.js"></script>
<script type="text/javascript" src="mydirectives.js"></script>
</head>
<body ng-app>
<div test-elem></div>
</body>
</html>
@LostInBrittany#JSC2015 #BeyondPolymer
Google Web Components
From small widgets to full-scoped apps
@LostInBrittany#JSC2015 #BeyondPolymer
Mozilla Brick
@LostInBrittany#JSC2015 #BeyondPolymer
Bosonic
@LostInBrittany#JSC2015 #BeyondPolymer
Web components polyfill
Making developers life a bit easier
@LostInBrittany#JSC2015 #BeyondPolymer
Web components polyfill library
Set of polyfills built on top of the
Web Components specifications
@LostInBrittany#JSC2015 #BeyondPolymer
What's in webcomponents.js?
● Web Components
○ Custom Elements .
○ HTML Imports
○ Shadow DOM
● DOM
○ WeakMap
○ Mutation Observers
@LostInBrittany#JSC2015 #BeyondPolymer
Your own webcomponents!
Building directly over webcomponents.js
@LostInBrittany#JSC2015 #BeyondPolymer
Or webcomponent libraries
Also built on top of webcomponents.js
@LostInBrittany#JSC2015 #BeyondPolymer
Many webcomponents libraries
Based on the same polyfill
@LostInBrittany#JSC2015 #BeyondPolymer
Mixing webcomponents
My challenge today
@LostInBrittany#JSC2015 #BeyondPolymer
Objectifs
Using webcomponents from different
libraries in an AngularJS webapp
@LostInBrittany#JSC2015 #BeyondPolymer
Will it work?
or
@LostInBrittany#JSC2015 #BeyondPolymer
Base project: Angular Beers!
https://github.com/LostInBrittany/angular-beers
@LostInBrittany#JSC2015 #BeyondPolymer
Let's show the code!
Image: dcplanet.fr
Coding is a superpower, my friends
https://github.com/LostInBrittany/beyond-polymer
@LostInBrittany#JSC2015 #BeyondPolymer
angular-polymer-beers
Because directives are subpar webcomponents
@LostInBrittany#JSC2015 #BeyondPolymer
angular-polymer-xtag-beers
Polymer and X-tags play along nicely
@LostInBrittany#JSC2015 #BeyondPolymer
angular-polymer-react-beers
Thanks to Mathieu Ancelin (@TrevorReznik)
@LostInBrittany#JSC2015 #BeyondPolymer
angular-polymer-xtag-react-beers
And they all are happy...
@LostInBrittany#JSC2015 #BeyondPolymer
Thank you !

More Related Content

PDF
Mixing Web Components - Paris Web Components - 2015 09-16
PDF
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...
PDF
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
PDF
Web components the future is here
PPTX
Rapid and Responsive - UX to Prototype with Bootstrap
PDF
BreizhBeans - Web components
PDF
Custom Elements with Polymer Web Components #econfpsu16
PDF
Developing a Web Application
Mixing Web Components - Paris Web Components - 2015 09-16
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
Web components the future is here
Rapid and Responsive - UX to Prototype with Bootstrap
BreizhBeans - Web components
Custom Elements with Polymer Web Components #econfpsu16
Developing a Web Application

What's hot (20)

PPT
WordPress Development Confoo 2010
PDF
Shifting Gears
PPTX
Web Components
PDF
Build Reusable Web Components using HTML5 Web cComponents
PPTX
Structured Data in WordPress
PPTX
The Truth About Your Web App's Performance
PDF
Prototyping w/HTML5 and CSS3
PPTX
Extending & Scaling | Dallas PHP
PDF
Polymer - Welcome to the Future @ PyGrunn 08/07/2014
PDF
Use atomic design ftw
PDF
PPTX
Web Components
PDF
Atomic Design - BDConf Nashville, 2013
PDF
How cgi scripting works
PPTX
JavaScript : A trending scripting language
PDF
Atomic Design - An Event Apart San Diego
PDF
Web Design for Literary Theorists I: Introduction to HTML
PPTX
Polymer and web component
PDF
Web Projects: From Theory To Practice
PDF
Introduction to web components
WordPress Development Confoo 2010
Shifting Gears
Web Components
Build Reusable Web Components using HTML5 Web cComponents
Structured Data in WordPress
The Truth About Your Web App's Performance
Prototyping w/HTML5 and CSS3
Extending & Scaling | Dallas PHP
Polymer - Welcome to the Future @ PyGrunn 08/07/2014
Use atomic design ftw
Web Components
Atomic Design - BDConf Nashville, 2013
How cgi scripting works
JavaScript : A trending scripting language
Atomic Design - An Event Apart San Diego
Web Design for Literary Theorists I: Introduction to HTML
Polymer and web component
Web Projects: From Theory To Practice
Introduction to web components
Ad

Similar to Beyond Polymer - JUG Summer Camp - 2015-09-18 (20)

PDF
Devoxx France - Web Components, Polymer et Material Design
PDF
2014 03-25 - GDG Nantes - Web Components avec Polymer
PPTX
Javascript & SEO 2019
PDF
Polymer is production ready, how about you?
PDF
Codemotion Rome 2016 - Polymer
ODP
Build and Deploy a Python Web App to Amazon in 30 Mins
PDF
How we use Bottle and Elasticsearch
PDF
Introduction to Web Components & Polymer Workshop - JS Interactive
PDF
The Web Components interoperability challenge - Horacio Gonzalez - Codemotion...
PPTX
Google I/O extended 2019 Fellyph Cintra
PDF
You Can Work on the Web Patform! (GOSIM 2023)
PDF
Challenges of building a search engine like web rendering service
PDF
Taking the plunge: Why you should use new technology on client projects
PDF
2016 stop writing javascript frameworks by Joe Gregorio
PPTX
Google Cloud: Next'19 Extended Hanoi
PDF
Volto: A Journey towards Personalization
PDF
Twitter Bootstrap for web UI development
PPTX
Blazor - An Introduction
PPTX
Web components. Compose the web.
PPTX
New Ranking Metrics by Google
Devoxx France - Web Components, Polymer et Material Design
2014 03-25 - GDG Nantes - Web Components avec Polymer
Javascript & SEO 2019
Polymer is production ready, how about you?
Codemotion Rome 2016 - Polymer
Build and Deploy a Python Web App to Amazon in 30 Mins
How we use Bottle and Elasticsearch
Introduction to Web Components & Polymer Workshop - JS Interactive
The Web Components interoperability challenge - Horacio Gonzalez - Codemotion...
Google I/O extended 2019 Fellyph Cintra
You Can Work on the Web Patform! (GOSIM 2023)
Challenges of building a search engine like web rendering service
Taking the plunge: Why you should use new technology on client projects
2016 stop writing javascript frameworks by Joe Gregorio
Google Cloud: Next'19 Extended Hanoi
Volto: A Journey towards Personalization
Twitter Bootstrap for web UI development
Blazor - An Introduction
Web components. Compose the web.
New Ranking Metrics by Google
Ad

More from Horacio Gonzalez (20)

PDF
Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27
PDF
But there is no web component for that - Web Components Remote Conference - 2...
PDF
Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27
PDF
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...
PDF
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
PDF
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
PDF
Mixing Web Components - Best of Web Paris - 2016 06-09
PDF
Polymer in the real life - Devoxx France - 2016 04-20
PDF
Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24
PDF
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
PDF
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
PDF
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
PDF
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
PDF
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
PDF
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
PDF
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
PDF
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
PDF
Steven Le Roux - Kafka et Storm au service de la lutte antiDDoS à OVH - Soiré...
PDF
Bootcamp d'Initiation à Android - 2013/11/30 - Live coding : Hello world!
PDF
Bootcamp d'Initiation à Android - 2013/11/30
Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27
But there is no web component for that - Web Components Remote Conference - 2...
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 1/3 - HTTP, HTML, CSS, JS
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
Mixing Web Components - Best of Web Paris - 2016 06-09
Polymer in the real life - Devoxx France - 2016 04-20
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 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 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- 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 1/3 - HTTP, HTML, CSS, JS
Steven Le Roux - Kafka et Storm au service de la lutte antiDDoS à OVH - Soiré...
Bootcamp d'Initiation à Android - 2013/11/30 - Live coding : Hello world!
Bootcamp d'Initiation à Android - 2013/11/30

Recently uploaded (20)

PDF
Toolkit of the MultiCloud DevOps Professional.pdf
PPTX
Going_to_Greece presentation Greek mythology
PPTX
Basic_of_Computer_System.pptx class-8 com
PPTX
FreePBX_Project_Presentation_With_Gantt.pptx
PPTX
IoT Lecture IoT Lecture IoT Lecture IoT Lecture
PPTX
北安普顿大学毕业证UoN成绩单GPA修改北安普顿大学i20学历认证文凭
PPT
Expect The Impossiblesssssssssssssss.ppt
PPTX
REE IN CARBONATITE EEPOSIT AND INCLUDE CASE STUDY ON AMBADUNGAR
PDF
ilide.info-huawei-odn-solution-introduction-pdf-pr_a17152ead66ea2617ffbd01e8c...
DOCX
MLS 113 Medical Parasitology (LECTURE).docx
PPTX
IT-Human Computer Interaction Report.pptx
PPTX
Dating App Development Cost: Factors, Features & Estimates
PPTX
日本横滨国立大学毕业证书文凭定制YNU成绩单硕士文凭学历认证
PDF
B2B Marketing mba class material for study
PPTX
c_languagew_structure_and_functions.pptx
PPTX
WEEK 15.pptx WEEK 15.pptx WEEK 15.pptx WEEK 15.pptx
PPTX
Data Flows presentation hubspot crm.pptx
PPTX
Slides: The World Games Great Redesign: Eco Economic Epochs.pptx
PDF
How Technology Shapes Our Information Age
PDF
B450721.pdf American Journal of Multidisciplinary Research and Review
Toolkit of the MultiCloud DevOps Professional.pdf
Going_to_Greece presentation Greek mythology
Basic_of_Computer_System.pptx class-8 com
FreePBX_Project_Presentation_With_Gantt.pptx
IoT Lecture IoT Lecture IoT Lecture IoT Lecture
北安普顿大学毕业证UoN成绩单GPA修改北安普顿大学i20学历认证文凭
Expect The Impossiblesssssssssssssss.ppt
REE IN CARBONATITE EEPOSIT AND INCLUDE CASE STUDY ON AMBADUNGAR
ilide.info-huawei-odn-solution-introduction-pdf-pr_a17152ead66ea2617ffbd01e8c...
MLS 113 Medical Parasitology (LECTURE).docx
IT-Human Computer Interaction Report.pptx
Dating App Development Cost: Factors, Features & Estimates
日本横滨国立大学毕业证书文凭定制YNU成绩单硕士文凭学历认证
B2B Marketing mba class material for study
c_languagew_structure_and_functions.pptx
WEEK 15.pptx WEEK 15.pptx WEEK 15.pptx WEEK 15.pptx
Data Flows presentation hubspot crm.pptx
Slides: The World Games Great Redesign: Eco Economic Epochs.pptx
How Technology Shapes Our Information Age
B450721.pdf American Journal of Multidisciplinary Research and Review

Beyond Polymer - JUG Summer Camp - 2015-09-18