Herman J. Radtke III

Read more of my blog or subscribe to my feed.


Emberconf 2014

Written by Herman J. Radtke III on 27 Mar 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

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:

  1. 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. The select and option tags are separate components that are related to each other. The select tag may be aware of which option tag is currently selected.
  2. 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.
  3. 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.

Sketches of Talks

Michael Chan sketched notes from each talk. Links to his Sketch for each talk are below: