Emberconf 2014
My notes from Emberconf.
Opening Keynote
Open source communities value contributions that are not just code. --- Yehuda Katz
- Robert Jackson contributed a lot of works to making the 6 week release process much more automated.
- A number of people worked to create ember-cli tooling.
- Jo Liss created Broccoli.
- Leah Silber organized Emberconf.
I believe a successful team requires more than just someone who writes the primary code. It requires meta-contributions that make the environment and culture excellent. This is my vision for the HauteLook team and embraces concepts, such as DevOps, as first class citizens of the process.
Emphasis on screens and flows
- Yehuda referenced a Basecamp blog post A shorthand for designing UI flows to emphasize the need to focusing on flows now that Ember has first-class URL support.
This was a call to action to start thinking differently about building web applications. The github website was used to demonstrate the complexity of web applications. The github website puts a lot of information on a single screen and uses flows within that screen to organize the experience. There are often flows within flows and we need to start documenting all the states to manage the complexity.
A later talk, given by Nathan Hammond introduced ember-flow which used a digraph to manage state transitions within an application. Nathan argued that it is our responsibility as application developers not to pollute the browser history with unnecessary transitions of state. To prevent this, he recommended the use of replaceWith instead of transitionTo.
Ember Components
Ryan Florence gave an inspiring talk about Ember Components. He demonstrateded a number of components that he has built for instructure. Ryan provided some sage wisdom for component design:
- Good components usually do not have a template. If your component does have a template, consider breaking it down into multiple components. Ryan used
<select><option /></select>
as an example of good component design. Theselect
andoption
tags are separate components that are related to each other. Theselect
tag may be aware of whichoption
tag is currently selected. - Create a component that groups small components together. Ryan's ic-tabs component groups together many small components together to make it easier for others to use.
- The child should inform the parent when it is present. Do not make the parent poll for children components. Ryan used the
<form>
tag as an example of how this should work. A form can exist on its own. When adding a<button type="submit">
tag to the form, the button informs form.
Distributed Computing
Christopher Meiklejohn from Basho gave a very dense, but inspiring talk on distributed computing. The main take-away was that ember-data
is trying to solve a problem of distrbuted computing.
- thinkdistributed.io - Christopher hosts a podcast that is a great introduction to the concepts of distributed computing.
- https://syncfree.lip6.fr - Christopher is part of an EU project that is trying to solve "Large-scale computation without synchronisation".
Ember Performance
Matthew Beale discussed Ember performance. His book Developing an Ember Edge takes a deeper look into creating performant Ember applications. The main take-away was that a lot of the performance issues may not be related to JavaScript. Look at how the network and the browser painting (animations, rendering) are affecting performance. Ready High Performance Browser Networking for more insight into how to diagnose and resolve network issues.
Matthew did point out that observers are actually a synchronous operation. Expensive functions that are observing a property should be handled with care. He suggested the use of setProperties
, Ember.run.once
and pushObjects
to work around performance issues. Yehuda commented that the core team considers the synchronous nature of observers a bug, but it is hard to fix without breaking existing Ember 1.0 compatibility.
Other Links Related To Talks
- Broccoli: First Beta Release - Broccoli is an awesome build tool created by Jo Liss.
- The Extensible Web Manifesto was part of the closing keynote given by David Herman
Sketches of Talks
Michael Chan sketched notes from each talk. Links to his Sketch for each talk are below:
- Opening Keynote
- Using Ember To Make The Impossible Possible
- Contributing To Ember
- Ember Data And The Way Forward
- Broccoli
- Animations And Transitions
- Angular Directives
- Modeling The App Store
- HTMLBars - The Next Generation Of Templating
- The {{x-foo}} In You
- ember-cli
- Ember Is For The Children
- Query Params In Ember
- Ember Testing
- Covergent/Divergent
- Controlling Route Traversal With Flows
- Snappy Means Happy: Performance In Ember Apps
- Closing Keynote