
Frontend First
A podcast about modern UI development on the web. Hosted by Sam Selikoff and Ryan Toronto.
Latest episodes

Feb 6, 2019 • 1h 2min
Lenient libraries, strict applications
Topics include:
04:01: Welcome to Node Dependency Hell.
14:00: How should the way we declare dependencies change if an addon is an implementation detail of another addon?
21:45: Can Ember CLI address these problems a layer above Yarn/npm?
23:25: Is JavaScript's fractured module ecosystem (CommonJS in node vs. ES6 modules in the frontend) contributing to the problem?
26:21: Someone's app broke when they installed their dependencies due to a Mirage dependency changing. How can we reliably solve this for users?
35:05: Even if the tooling were better, there's a cultural problem where JS library authors don't consider the dependencies they bring in.
39:04: Lessons learned:
apps should specify strict dependencies, libraries (including addons) should specify lenient dependencies
apps should use lockfiles
ember-dependency-lint & yarn resolutions are a good top-level escape hatch
addons should use the dependencies key & ember-auto-import for most of their dependencies
41:12: Ember Auto Import attempts some deduplication of dependencies. If you're writing an addon that has a dependency the host app cares a lot about, you can use addPackagesToProject to put the burden on host app.
48:33: Would you build Ember CLI Tailwind the same if you were building it from scratch today?
54:55: Call for input. What are any best practices that we've missed? What did we get wrong?
59:20: Mirage blog using GitHub issues teaser
Links:
Ember Auto Import
Discourse topic on conflicting dependencies
Dependency Lint
Ember CLI Addon Docs
Ember CLI Tailwind

Jan 30, 2019 • 1h 11min
Mirage, meet Addon Docs!
Topics include:
01:17: Mirage's new Addon Docs site
35:55: Ember Bind Helper
45:23: Why start with Acceptance Tests?
Links:
EmberCLI Mirage
Ember Bind Helper
Sam Selikoff on Twitter
Ryan Toronto on Twitter

Jan 23, 2019 • 1h
There's a bug in my FastBoot
Topics include:
0:00 Housekeeping: Upgrades, trainings, and nested dropdowns
12:24: FastBoot bug 1: How HTML responses turn into DOM nodes
37:22: FastBoot bug 2: XMLHTTPRequest and redirects
Links:
Sam Selikoff on Twitter
Ryan Toronto on Twitter

Jan 16, 2019 • 55min
The forgotten middle class
Topics include:
03:16: Incidental complexity in SPA development
33:04: Dealing with undocumented but relied-upon behavior in OSS libraries
Links:
Sam Selikoff on Twitter
Ryan Toronto on Twitter

Jan 9, 2019 • 56min
Grab bag: Web vs Native, stale data, and build environments
Topics include:
0:00: Making movies
05:08: Ryan Florence's tweet about Twitter App
18:08: Ember Data stores across browsers
32:58: Laravel's ascending option
35:51: YouTube transition to UI pattern
42:15: Ember's build environments
Links:
Sam's Star Wars movie
Ryan Florence on Twitter's PWA

Dec 19, 2018 • 56min
Thoughts on tracked properties
Sam and Ryan discuss the wording behind the proposed "@tracked" syntax and how it shapes their understanding of Ember's new programming model. They also talk about 404 pages, data ownership, and their upcoming EmberConf trainings.
Topics include:
0:00: Tracked properties
13:27: 404 pages
26:38: Smart components
41:00: EmberConf trainings
Links:
Ember Conf
Component Side Effects
EmberData Storefront
Ember Animation
Liquid Fire

Dec 12, 2018 • 59min
Incremental Ember upgrades
Sam and Ryan discuss a new process for upgrading Ember apps and Sam's experience using it on EmberMap's codebase. They also talk about leadership in Open Source projects and lessons learned from Mirage.
Topics include:
04:45: What is a leader's job?
13:17: Step-by-Step: Upgrading EmberMap
Links:
Most leaders don't even know the game they are in
ember-cli-update
Dependabot

Dec 5, 2018 • 1h 5min
The elephant in the room
Sam and Ryan discuss the difficulty of working with a design system that doesn't have good escape hatches, how implementing HTML and CSS can be more complex and time-consuming than coding user behavior, and some creative approaches to ensuring JSON:API payloads represent canonical server-side state.
Topics include:
04:15: Design systems and when they break down
22:38: The complexity of implementing designs in HTML and CSS
34:38: JSON:API mutations. How incomplete response payloads can put your Ember app into an impossible state.
Links:
Forms
JSON API Spec
Conway’s Law

Nov 28, 2018 • 42min
Going all in on "outside in"
Sam and Ryan discuss getting Mirage and Ember to work in CodeSandbox, how FastBoot affects different approaches to rendering responsive content, and different ways an outside-in mindset can benefit product teams and open-source software projects.
Topics include:
2:50: Getting Ember and Mirage working on CodeSandbox. Coding in the browser.
10:30: How FastBoot affects the use of screen width services
24:40: Going all-in on outside-in development. Starting at the end.
Links:
CodeSandbox
Mirage boilerplate in CodeSandbox
EmberMap Email Course
Conway's Law

Nov 21, 2018 • 41min
A less constrained environment
Sam and Ryan discuss new videos on async testing and declarative form validations. They also talk about why it's so hard to create good abstractions in Ember, or more generally the front-end landscape. They discuss constraints versus flexibility, and how the size of a library's problem space affects the likelihood of arriving at a good abstraction.
Topics include:
01:14: Lessons learned from the Async Testing series
06:20: Forms: declarative validations, building blocks & escape hatches
12:56: Why building forms in UI libraries is hard – unconstrained environments
30:45: Philosophical differences, and over- vs. under-abstracting
Links:
EmberMap's premium series on Async Testing
Andrew Clark on Twitter