EmberConf 2017 in Review

Notes from EmberConf 2017, highlighting what I want to investigate further.


Tom and Yehuda introduce Glimmer.js as a stand-alone library for making components. Cool, right?!

The web component and TypeScript goodness is exciting, but I'm left imagining what it all means.

Just drop your Glimmer components into an Ember app.1

How Glimmer components fit into existing Ember apps or what a Glimmer app is remain a mystery. I'm sure we'll find out eventually:

This means we're working on making it possible to use the Glimmer components you've seen above in your existing Ember apps, just by installing an addon.2

Casey Watts: Dev Psych

An intro to introspection, mindfulness, and unhelpful thinking styles from a cognitive behavioral therapy perspective.

Ingrid E.: Security

Catching things like target="_blank" without rel=noopener. This should probably be standard.

Oli Griffiths: Tumblr

Hackdays are neat; they're a great way to promote creativity and inspiration—more dev teams should hold them. Oli described labs as being the next step, if one produces something worth taking further, like the Tumblr PWA.

Keeping a style guide and pattern library fresh and useful is challenging; Ember Freestyle is a compelling response.

Balint Erdi: Ember Data Patterns

Data loading needs to be part of the design process

Too often, how to handle delay is an afterthought. Balint reminds us that it's not always as simple as a loading indicator.

RSVP.hash in the model hook is considered an anti-pattern 3

By whom? It's in the guides.

Miguel Camba: Higher Order Components

Miguel put together a wicked game as a tool for presenting component patterns.

  • miguelcamba.com

  • Related: Presentational and Container Components

    Remember, components don’t have to emit DOM.
    They only need to provide composition boundaries between UI concerns.

  • {{assign}} helper

  • recursive component pattern (e.g. for nested menus)

  • look for link to game on twitter

Jen Weber: SVG with Ember

  • Paint order rendering

  • Components within SVG need to be tagless or have tagName like g

  • "Remember, kids..., the difference between screwing around and science is writing it down." - Adam Savage, Mythbusters4

  • Don't forget about accessibility, cross-browser, optimization

  • Sara Soueidan

Alex Matchneer: ember-concurrency

  • return a value in a task and access it with lastSuccessful.value

Lauren Tan: add-on development

  • add-on configuration precedence is configurable, e.g. for conflict resolution
  • add-on hooks in Nodeland
  • augmenting ember-cli, e.g. for custom commands
  • developer experience: give background, contribution instructions, usage, live examples
  • ember-try config
  • test with a real browser
  • configuration strategy, different environments
  • consider extensibility: child add-ons
  • open sourcing it
  • finding another maintainer
  • semver: ember-cli-release

See also:


  • Ember API Docs 2.0
  • lbaillie/assemble "safety app"
  • QUnit-cli: randomization, QUnit.todo(), assert.step(), assert.verifySteps(), QUnit.on(), npm install -g qunitjs
  • "We like to think we know what is slow": regarding performance profiling


  • NPM shrinkwrap versus Yarn

Gavin Joyce

Gave a low-level walkthrough on Glimmer's internals.

Post-EmberConf Goals

Lots of great content this year. I'm looking forward to trying out some new things:

  • write an add-on
  • PWAs, service workers, appcache
  • web VR, 3DS, a-frame (ember-a-frame)
  • glimmer.js components
  • web sockets, webRTC, push notifications
  • hackdays
  • TypeScript in VS Code