Learning Ash: Declarative Elixir Apps, Testing and Extensibility

Rebecca Le and Zach Daniel explain how their book and the framework evolved together.

RLRebecca Leゲスト · AlembicZDZach Danielゲスト · Remedy Meds
チャンネル
GOTO Conferences
公開日
2026年10月19日
動画
28:23
読了時間
4 分
原文
英語
YouTube で開く
スクロールすると動画は右下に小さくなって再生を続けます。字幕は閲覧言語に合わせて切り替わります。
閲覧言語2 言語で読めます
この記事はまだ日本語に翻訳されていないため、英語の原文を表示しています。
要約

30 秒でわかる

Christian Alexander interviews Ash maintainers Rebecca Le and Zach Daniel about teaching domain modeling, building testing support, the Cinder library and the tradeoffs of powerful declarative abstractions.

  1. 1Teach in contextThe book introduces framework features when the example application needs them.
  2. 2Extensibility is a core goalResources and actions support extensions for APIs, events and other integrations.
  3. 3The book improved testingTrying to teach testing led to generator-based support in the framework.
  4. 4Cinder abstracts repeated tablesLe built a reusable library for filtering, searching and displaying data.
  5. 5Understand powerful defaultsConvenient API generation still requires understanding exposure and authorization.

ポイント

  1. The book teaches domain modeling before layering on authentication, policies and testing.
  2. Ash’s extensible resources and actions support a variety of interfaces and integrations.
  3. Writing the testing chapter prompted new generator-based tooling.
  4. Powerful abstractions reduce repeated work but still require understanding security and behavior.
全文

チャプターごとに整えた全文を読む

文字起こしのみ
01

Learning Ash through an application

The authors explain the book’s gradual learning path.

Christian Alexander hosts Rebecca Le and Zach Daniel, co-authors of a book on the Ash Framework for Elixir. They discuss learning the framework, its extensibility, testing and the community libraries built around it.

Le says she has used Ash since early version 1 and works on its core team, documentation and user-interface libraries, including the Cinder data-table library. Daniel describes building Ash and learning from Le’s constructive criticism while her team used early versions on client projects.

Alexander says he struggled to learn Ash because he started with relationships and permissions before understanding the application. The book helped him follow a more gradual path. Le says that progression was intentional: the framework’s pieces existed, but learners needed to see how they fit together.

The book starts with domain modeling and introduces authentication, policies and testing as the example application needs them. Le stresses adding security and tests before deployment and real users, even if they are not the very first concepts taught.

The music application Tunez gives the book room to demonstrate relationships, testing and atomic operations without requiring readers to create large amounts of content. Le says the authors traded off other possible examples and features to keep the book manageable.

02

Extensibility and testing

A stable core and book-driven improvements support a growing ecosystem.

Alexander observes that familiar building blocks can support later additions such as TypeScript bindings and AI tooling. Daniel says extensibility was an explicit early goal: extensions can add capabilities or change how actions work, while the core concepts remain useful.

Because the ecosystem was changing quickly, the authors questioned whether it was too early to write foundational material. Daniel says they sought stability for the book’s examples, and that the concepts largely remained stable even as options and extensions grew.

Daniel recalls users who had read the policies guide but still struggled to apply it. A complete reference is valuable, but a learning path with a concrete application can make abstract rules easier to connect to practical decisions.

Daniel compares a framework with strong defaults to a prepared meal and Ash to a customizable bowl: teams can combine extensions to fit their use case. He cites event-driven extensions as an example of changing how actions are implemented.

Writing the book changed the framework. Le says the authors initially omitted testing guidance because Ash applications were ordinary Elixir applications, but users repeatedly asked how to test their actions. Their attempts to explain the process led to generator-based test-data support and a testing chapter.

Daniel says that when he tried to explain the existing testing approach, he realized tooling was missing. Rather than merely documenting an unsatisfactory process, the team built features that made the approach easier to use and teach.

Alexander values testing the central actions because different interfaces and APIs build on them. The speakers describe how declared policies and actions provide a common foundation, while practical tests still matter for the behavior an application relies on.

03

Cinder and shared building blocks

The group discusses reusable tables and community contributions.

Le explains why she built Cinder: applications repeatedly need searchable, filterable, paginated tables. She prototyped an abstraction that composes filters, generates interface elements and queries data; the library has since gained more customization.

Daniel says his team replaced a homegrown table implementation with Cinder and removed code. He finds it rewarding to use a community contribution he did not design himself, and cites Ash Authentication as another example of the ecosystem’s shared work.

Alexander describes migrating an application by representing database tables as resources and replacing large context modules with a domain, resources and access patterns. In his experience, common abstractions make it easier to add capabilities, though the work still depends on understanding the model.

04

Learning curve and powerful abstractions

Nested forms, APIs and AI assistance illustrate tradeoffs.

The group describes an upfront learning curve around Ash’s DSL and concepts. Le contrasts that with tools that are easy to start but may become harder as requirements grow. Once a developer understands resources, actions and policies, the speakers say those ideas recur across extensions.

Alexander highlights nested forms in the book’s music example: songs can be created while creating albums using Ash Phoenix helpers. Daniel adds API generation as another example of deriving an interface from domain modeling.

Daniel cautions that a single line exposing functionality through an API can do a great deal. The convenience is powerful, but engineers need to understand what it exposes and how authorization applies. His lightsaber analogy captures both the learning investment and the potential consequences of misuse.

Daniel reports that AI assistants and existing examples have helped new engineers at his company learn Ash and Elixir more quickly, and says simple questions in the community have become less common. These are observations from his team and community, not a controlled measurement of learning outcomes.

Alexander closes by recommending that learners follow the book, build the example and see how the pieces connect. The authors thank him and the audience.

同じチャンネルの記事

スライド 3 枚39:12EN
GOTO Conferences· 2026年10月28日Cate Huston: How Rigour Supports AI-Assisted Development VelocityCate Huston · TwillA two-person team’s experience with release gates, automated checks, prioritization and the cost of shipping faster.AI エンジニアリングのリーダーシップSoftware engineeringAI agents
スライド 4 枚22:33EN
GOTO Conferences· 2026年10月26日William Schor: From Unit Tests to Synthetic Canaries at NetflixWilliam Schor · NetflixHow generated workloads and production-like infrastructure help test a distributed key-value service.Software engineering
スライド 5 枚34:11EN
GOTO Conferences· 2026年10月23日Anatoliy Bilenko and Alberto Carretero: Making Database Protocols Reliable with Formal Methods and AIAnatoliy Bilenko, Alberto Carretero · CanonicalCanonical’s database engineers connect executable specifications, model-based tests, failure exploration, and reconstructed execution histories—and explain why none of these techniques proves a real system correct on its own.開発ワークフローとテストCode review & verificationオブザーバビリティと信頼性+2
28:15EN
GOTO Conferences· 2026年10月22日Steve Poole on Open-Source Security and AI’s Maintenance ChallengeOlimpiu Pop, Steve PooleWhy faster vulnerability discovery increases pressure on maintainers, dependency users and upgrade processes.Software engineeringAI security
スライド 5 枚46:36EN
GOTO Conferences· 2026年10月21日Don Syme: Building Agentic Automation Around Human CollaborationDon Syme · GitHubContinuous AI, repository workflows and the guardrails needed for unattended software maintenance.Agent orchestrationSoftware engineeringコーディングエージェント
38:07EN
GOTO Conferences· 2026年10月9日Garrison Hinson-Hasty on Systems Programming with ZigTrevor Berrange Sanchez, Garrison Hinson-HastyA conversation about simplicity, memory, strings, graphics APIs and working with C.Programming LanguagesSoftware engineering