The EmberMap Podcast

The EmberMap Podcast
A weekly podcast where Sam, Ryan and guests chat about development and design in the world of Ember.js. Hosted by Sam Selikoff and Ryan Toronto of EmberMap.

Imports are not code – they’re declarations
Oct 11 • 66 min
Sam and Ryan talk about a confusing situation where moving code into an ES module changed the execution order of a program. They also talk about conflicting advice over whether React’s useEffect is appropriate for writing data, and chat about PostCSS,…
Server-side state means global resource identity
Oct 4 • 73 min
Sam and Ryan chat about building a Vue app with Mirage, and how quickly they ran into a need for a global resource store. They also talk about their recent work on Mirage JS and discuss an Ember NYC talk about how compilers enable abstractions.
The Weekend Warrior Adoption Hypothesis
Sep 19 • 68 min
Sam tells Ryan about his recipes side project built with React, GraphQL and Hasura. They chat about how small “magic moments” that developers experience lead to new technologies getting adopted at organizations, how to use Mirage with GraphQL, and why…
Side effects aren’t declarative. What if they were?
Sep 11 • 71 min
Sam and Ryan talk more about their recent experience working with React Hooks. They dive into useEffect, talk about how the hooks paradigm encourages UI developers to think about their application’s side effects declaratively, discuss whether the paradigm…
What should be abstracted?
Aug 28 • 55 min
Sam and Ryan talk about properties and attributes in Ember’s new component model, how the distinction compares to other frameworks, and what tradeoffs come with the new API. They also talk about TypeScript, how to answer the biggest question in project…
APIs are about Policy
Aug 21 • 97 min
Sam and Ryan read and discuss an article by Steven Wittens that explores the nature of HTTP APIs. Wittens argues that in practice, most APIs violate REST, but they do so because APIs are more about policy than they are about empowering clients with access…
Object references considered helpful
Aug 7 • 79 min
Sam and Ryan talk about a stale state bug in a React app, and how Ember’s decision to use object references helps developers avoid these sorts of bugs. They also talk about how Ember’s framework magic can sometimes make folks feel ill-equipped to work in…
You gotta feel the pain
Jul 31 • 94 min
Sam and Ryan talk about APIs that empower developers, even if it means giving them enough freedom to make mistakes. They also talk about building a component with dynamic children in both Ember and React.
The burden of high-level APIs
Jul 18 • 68 min
Sam and Ryan talk about the tradeoffs between high-level and low-level APIs, and why projects that focus on lower-level APIs tend to be both more sustainable and more popular. They also talk about their experience building Mirage’s new landing page using…
Are staging environments an anti-pattern?
Jul 11 • 54 min
Sam and Ryan chat about whether staging environments encourage bad practices around test coverage, dev ops processes and more. They also talk about Apple’s talk on “Designing Fluid Interfaces”, using FastBoot with no runtime dependencies, and how to work…
When libraries go unmaintained
Jun 26 • 60 min
Sam and Ryan talk about what to do when one of your application’s dependencies becomes an unmaintained library. They also chat about how current tools for building and deploying web apps are underserving the modern multi-app workflow, as well as some…
Microscopic Frontends
Jun 19 • 51 min
Sam and Ryan chat about their experience using aspects of the Micro Frontend architecture at different jobs over the past several years. They also talk about Sam’s recent experience using ReactJS for the first time on a real application.
Open source isn’t free
Jun 5 • 56 min
Sam and Ryan talk about DHH’s 2019 RailsConf keynote, and whether or not open source needs to be sustained. They also chat about keeping tests dumb, when to adopt Ember Octane, and a new EmberMap series on Ember Animated.
Katie Gengler on the tech and processes that power the Ember community
May 29 • 65 min
Katie Gengler joins Sam and Ryan to talk about the important work she’s done for the Ember project, from her creation and maintenance of community tools like Ember Try and Ember Observer to her role on Ember’s Steering Committee. She also talks about…
Stateless development environments
May 22 • 48 min
Sam and Ryan chat about the benefits of keeping your development environment stateless, using tools like Mirage in Ember and database seeds in Rails. They also brainstorm some data-querying APIs that explicitly acknowledge the existence of both sever-side…
Nathan Selikoff on Omnimodal’s real-time tech stack
May 8 • 87 min
Nathan joins Sam and Ryan to talk about how he’s using Ember, Rails, Node, and AWS infrastructure to build Omnimodal, the startup he co-founded to help cities manage their transportation demand in real time.
Frontend developers like us do things like this
May 1 • 54 min
Sam and Ryan talk about how to segment the audience of frontend developers. They also talk about unsustainable open-source development, Mirage 1.0, and what’s in store for Mirage’s future.
Hark! The Halting problem sings
Apr 24 • 62 min
Sam and Ryan chat about the explicit and implicit data dependencies in our components, and how that affects our ability to refactor and reuse them. They also talk about several other topics including Ember LTS versions and angle bracket invocation syntax.
Edward Faulkner on Embroider, Ember CLI’s modern build system
Apr 17 • 113 min
Edward Faulkner joins Sam and Ryan to chat about his work on Embroider, a new three-stage architecture that will power the next generation of the Ember CLI ecosystem. They also talk about myriad other topics, including Yarn Plug’n’Play, the benefits of…
Derrick Reimer on SPA architecture with Elm and GraphQL
Apr 10 • 92 min
Derrick Reimer joins Sam and Ryan to chat about building his new real-time chat product Level as an SPA using Elm, Phoenix and GraphQL. He covers domain modeling in Phoenix, his experience building his first GraphQL API, type safety in Elm, and the data…
Do you trust your test suite?
Apr 4 • 57 min
Sam and Ryan continue their discussion from the end of Episode 54 about how much we actually rely on our test suites versus how much implicit trust we place in semver. They also talk about some new Ember Octane features as well as a data-fetching issue.
Chris Garrett on Ember Octane
Mar 13 • 65 min
Chris Garrett joins Sam and Ryan to chat about what’s coming to Ember in Octane, its first edition. Chris talks about how module unification, decorators, ES6 classes, named args, angle-bracket components, template imports, modifiers, and Glimmer…
SPAs should do more than server-rendered apps, not less
Mar 6 • 55 min
Sam and Ryan chat about why frontend frameworks should make it easy for SPAs to replicate the behavior of a server-rendered web app. They also discuss various data-fetching scenarios, how a client-side app can stay in sync with the server’s database, and…
You still have to build two apps
Feb 27 • 61 min
Sam and Ryan chat about the integration costs that make developing an SPA so difficult. They also talk about different ways to reload an Ember application while people are actively using it, as well as why it’s important for beginners to use the same…
From build-time to run-time
Feb 13 • 64 min
Sam and Ryan chat about using GitHub Issues to power Mirage’s blog, and what implications run-time and build-time data have for the architecture of the AddonDocs site. They also discuss Simon Sinek’s “Celery Test” in the context of Ember.js.
Lenient libraries, strict applications
Feb 6 • 62 min
Sam and Ryan discuss the current state of frontend dependency management, and the areas where it leaves much to be desired. They talk about best practices for how applications and libraries should specify their dependencies, and also what happens when…
Mirage, meet Addon Docs!
Jan 30 • 70 min
Sam and Ryan discuss the process of converting Mirage’s docs from a Jekyll app into an Addon Docs site. They also talk about the Ember Bind Helper addon, as well as their approach to test-driven development with Acceptance Tests.
There’s a bug in my FastBoot
Jan 23 • 60 min
Sam and Ryan discuss two FastBoot bugs that recently caused problems on EmberMap. They talk about what testing strategies could have prevented these bugs, and how they would go about setting up these tests.
The forgotten middle class
Jan 16 • 54 min
Sam and Ryan discuss theory vs. practice in modern SPA development. They talk about whether business logic in the frontend makes UI development easier, or if it ends up creating too much incidental complexity.
Grab bag: Web vs Native, stale data, and build environments
Jan 9 • 55 min
Sam and Ryan discuss a handful of different topics in this grab bag episode, including tradeoffs between web and native applications, stale data across different Ember Data stores, and Ember’s three build environments.
Thoughts on tracked properties
Dec 19, 2018 • 56 min
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.
Incremental Ember upgrades
Dec 12, 2018 • 58 min
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.
The elephant in the room
Dec 5, 2018 • 64 min
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…
Going all in on “outside in”
Nov 28, 2018 • 41 min
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.
A less constrained environment
Nov 21, 2018 • 41 min
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…
Recursive partial application
Nov 14, 2018 • 61 min
Sam and Ryan discuss an elegant solution to the async nested dropdown problem, a FastBoot success story regarding inlined CSS, pre-warming FastBoot’s cache, and implementing a new design alongside an existing design language.
Compose wisely
Nov 6, 2018 • 58 min
Sam and Ryan chat about the challenges of testing custom asynchronous code. They also talk about React’s new Hooks API, and discuss situations where hooks might be more composable than yields and contextual components.
A dropdown nest
Oct 30, 2018 • 55 min
Sam and Ryan talk about the challenges of building nested dropdowns, whether a component reading data from its children is an anti-pattern, how angle-bracket syntax encourages new components, and whether “CSS best practices” exist.
Your frontend is ready for production
Oct 19, 2018 • 54 min
Sam and Ryan talk about their upcoming email course on Ember component patterns, wrapping up their EmberMap series on Functional CSS, refactoring some FastBoot code in Node, and how Mirage might be useful if it could run as a real server.
Scope down!
Oct 12, 2018 • 61 min
Sam and Ryan talk about lessons from Jason Fried’s Q&A about scoping down product features, and how that applies to our open-source work. They also talk about inlining critical-path CSS with FastBoot.
Can small libraries be conventional?
Oct 3, 2018 • 65 min
Sam and Ryan chat about two new EmberMap series, Forms and Async testing, as well as Sam’s keynote at EmberCamp and the best way to avoid product gaps in open-source software. They also answer some listener questions.
The Product Gap
Sep 27, 2018 • 62 min
Sam and Ryan continue their discussion about the role of product in an engineer’s daily working life. They talk about what product gaps are, the symptoms of product gaps on tech teams, and what you can do about product gaps if you’re on a team with no…
80% done, 80% to go
Sep 12, 2018 • 54 min
Sam and Ryan talk about the cost of using engineering as discovery, the consequences of embedding product decisions throughout the design and development phases of a project, and other lessons that software engineers can learn from product developers.…
Ember Octane
Aug 29, 2018 • 43 min
Sam and Ryan talk about the Ember 2018 Roadmap RFC and its focus on improving communication, completing in-progress work, and shipping Ember Octane. They also talk about how to verify complex addon behavior by using full-blown test apps and addons.
Melanie Sumner on empowering JavaScript engineers
Aug 22, 2018 • 53 min
Mel chats with Sam about getting into Ember, lessons learned from collaborating at work and in open source, and how to make it easier for JavaScript engineers to use better UI patterns.
I am a lighthouse
Aug 15, 2018 • 62 min
Sam and Ryan chat (on new mics!) about Ryan’s recent video on declarative keyboard events, changes to EmberMap’s FastBoot architecture, and some of Ryan’s recent work on FastBoot testing.
Jonathan Jackson on FastBoot Rehydration and Codemods
Aug 9, 2018 • 87 min
Jon joins Sam and Ryan to talk about his recent work on rehydration in FastBoot and all the creative ways we can use Codemods to automate the routine parts of our jobs.
Provide this!
Jul 20, 2018 • 52 min
Sam and Ryan chat about provider components in Ember, including the first renderless components they wrote, the different types of data components can provide, and the patterns of template composition that providers unlock. They also talk about the need…
Jen Weber on imaginary bars
Jul 13, 2018 • 37 min
Jen talks to Sam and Ryan about her journey learning from and giving back to Ember, and how she keeps her community contributions sustainable by tying them back to personal goals and rewards.
Mirage, meet Node
Jul 6, 2018 • 55 min
Sam and Ryan talk about their initial attempts to get Mirage running in Node, the benefits and workflows that it will unlock, some different approaches for using code in both the browser and Node, and how we might test FastBoot apps in the future.
Let’s be optimistic
Jun 30, 2018 • 53 min
Sam and Ryan talk about how to deal with building non-optimistic UIs using Ember and Ember Data, and how constrained visual design tools might help us build better UIs. They also answer some questions and talk about their current series on Functional CSS…
A man can dream
Jun 22, 2018 • 50 min
Sam and Ryan talk about bringing the ideas of declarative rendering over to our data layers, how easy it is for data to become stale in SPAs, and more stories from their recent adventures in FastBoot land.
Wrapping libraries reponsibly
Jun 15, 2018 • 51 min
Sam and Ryan chat about what to do when a node module breaks in FastBoot, how to best wrap 3rd-party libraries in an Ember Addon, and how to test the filesystem. They also answer some listener questions.
Bugs vs. features
Jun 7, 2018 • 68 min
Sam and Ryan chat about some ideas around caching in FastBoot, different ways of prioritizing work, and the difference between easy things and hard things in Ember.
Toran Billups on Hot Reloading
May 29, 2018 • 41 min
Toran talks to Sam and Ryan about his project Ember CLI Hot Loader, which is an implementation of component-based hot module reloading for Ember apps.
Test before commit
May 18, 2018 • 40 min
Sam and Ryan chat about Ember at Microconf, two-way bindings, and TDD vs. “Test before commit”.
Adam Wathan on Tailwind CSS
May 11, 2018 • 67 min
Adam joins Sam and Ryan to talk about coupling in HTML and CSS, different approaches to styling applications, and his popular open-source library Tailwind CSS.
Robert Jackson and Tom Dale on Ember at LinkedIn
May 3, 2018 • 65 min
Robert and Tom join Sam and Ryan to chat about how LinkedIn uses Ember, when teams should use Engines, build optimizations that are coming to Ember CLI and more.
Concretions and abstractions
Apr 26, 2018 • 48 min
Sam and Ryan chat about Tailwind and compilers (again), Ryan’s EmberJS homepage teardown, and releasing with git tags. They also answer some listener questions.
Sketch Prototyping and Amazon Workspaces
Apr 19, 2018 • 53 min
Sam and Ryan chat about Sketch’s new Prototyping feature, using Amazon Workspaces to develop Ember apps in a Windows environment on a Mac, and how to use git tag to ensure your project’s dependencies don’t disappear. They also answer some listener…
Alex Matchneer on Routing Patterns
Apr 12, 2018 • 89 min
Alex Matchneer chats with Sam and Ryan about challenging routing patterns in Ember, his involvement with the Ember community, and what Ember’s next router might look like.
Steelman vs. strawman
Apr 5, 2018 • 46 min
Sam and Ryan talk about their new series, “Declarative rendering,” and why we should use steelman arguments instead of strawman arguments when talking about technology. They also answer some listener questions.
Making the impossible, impossible
Mar 30, 2018 • 48 min
Sam and Ryan talk about their Functional CSS training at EmberConf, some ideas for hiding styling implementation details from templates, a new setup for multiple staging environments, an idea from data modeling called “Making the impossible, impossible”,…
Oli Griffiths on the Benefits of Static Typing and How Broccoli Works
Mar 7, 2018 • 51 min
Oli Griffiths joins Sam and Ryan to talk about his experience using typed languages, what kinds of benefits static could bring to the Ember developer experience, and his upcoming EmberConf training on Broccoli.js.
JSONAPI Operations, Caching in FastBoot, and Ember’s Strengths
Feb 22, 2018 • 44 min
Sam and Ryan talk about the upcoming Operations addition to the JSON:API spec, adding FastBoot support to Storefront, how to think about caching in Fastboot, and a thought experiment around how Ember might niche down and focus on its strengths.
Tom Dale on Static Analysis, Upstreaming Glimmer, and Ember in 2018
Jan 31, 2018 • 56 min
Tom Dale chats with Sam and Ryan about static analysis and compilers, upstreaming learnings from Glimmer, and what sort of size and speed improvements Ember.js will see in 2018.
Babel Plugins, Compile-time Components, and Extending Integration Tests
Jan 24, 2018 • 50 min
Sam and Ryan talk about writing Babel plugins, components that can be transformed to plain HTML at compile-time, the differences between run-time and compile-time error messaging, and one way to make integration tests more reusable and domain-specific.
Avoiding Imperative APIs and Expired Data
Jan 17, 2018 • 37 min
Sam and Ryan chat about Sebastian Markbage’s 2015 React Europe talk “DOM as a Second-Class Citizen,” and how to deal with stale data in an Ember app.
Breaking Production, Functional CSS and UI Components, and Testing Async Errors
Jan 10, 2018 • 47 min
Sam and Ryan chat about all the different ways you can make sure your app is working, some of their latest thoughts on functional CSS and presenter components in Ember, and how to test asynchronous errors in an acceptance test.
Declarative Data Fetching, Disposable Code, Easier Upgrades, and the Upfront Cost of Ember
Dec 7, 2017 • 37 min
Sam and Ryan talk about a new Storefront API and why routes should declare their data needs, patterns that make your code more disposable, how Ember CLI Update simplifies the process of upgrading your Ember apps, and what teams should consider when…
Photo Uploads, Server Errors in Ember Data, NPM Dependencies and Ember CLI Addon Docs
Nov 8, 2017 • 40 min
Sam and Ryan talk about uploading images to S3, a new Storefront API for dealing with server errors in Ember Data, how to be a good community citizen when it comes to publishing consumable libraries given that our package managers now use lockfiles, and…
Async Relationships, Store Forking, and Batch Saving in Ember Data
Oct 27, 2017 • 38 min
Sam and Ryan discuss community feedback on Ember Data’s pain points, including asynchronous relationships, store forking and batch saving.
Forms, Authentication, Ember 3.0, and Liquid Tether
Oct 6, 2017 • 32 min
Sam and Ryan discuss using contextual components to clean up forms, a unique authentication scenario using cookies and JWT, the release blog post about Ember 3.0, and building animations with the Liquid Tether addon.
Luke Melia on Styleguides
Sep 14, 2017 • 40 min
Special guest Luke Melia chats with Sam and Ryan about styleguides, CSS patterns, Ember Freestyle and more.
FastBoot, Structural Components and Ember Data Transactions
Aug 29, 2017 • 33 min
Sam and Ryan chat about adding FastBoot to EmberMap’s codebase, the difference between reusable and structural components, and the road to adding transactions to Ember Data.
Glimmer, Ember’s reputation and Tachyons
Jun 2, 2017 • 26 min
Listen to Sam and Ryan chat about their experience using Glimmer, how Ember is perceived in the larger front-end community, and their experience with Tachyons, the functional CSS library.