The Eric Normand Podcast
च्यानल विवरणहरू
The Eric Normand Podcast
An off-the-cuff stream of Functional Programming ideas, skills, patterns, and news from Functional Programming expert Eric Normand of LispCast. Formerly known as Thoughts on Functional Programming.
हालैका एपिसोडहरू
242 एपिसोडहरू
All about the stratified design lens
In this episode, I introduce the stratified design lens, which talks about how and why we split things into layers.

All about the time lens
In this episode, I introduce the time lens, and I posit a law about representing time in complex domains.

All about the volatility lens
In this episode, I introduce the volatility lens, which seeks to help us write code that deals with a changing world.

All about the architecture lens
In this episode, I introduce the architecture lens, its questions, and its goal of modeling architectural domains to manage complexity.

All about the executable specification lens
In this episode, I introduce the executable specification lens, its questions, and its goal of getting to runnable, testable code as quickly as possib...

All about the composition lens
In this episode, I introduce the composition lens, its questions, and its goal of figuring what's true when you perform multiple operations in a row.

All about the operation lens
In this episode, I introduce the operation lens, its questions, and its goal of capturing the use cases of your software.

Data lens
In this episode, I introduce the data lens, its questions, and its goals of capturing relationships among data values in data.

All about the domain lens
In this episode, I introduce the domain lens, its questions, and its goal.

How does executable specifications compare with other modeling paradigms?
In this episode, I compare executable specifications to UML, DDD, and software design.

What is the title of my new book?
I've found a better title for my book: Executable Specifications. Listen to find out why it's better.

What are the domain modeling lenses?
I'm organizing my new book in terms of lenses. Each lens focuses our attention on one important aspect of software design. In this episode, I briefly...

How is domain modeling evolving these days?
I talk about the progress I've made on my book and why I'm throwing it away and starting over.

Why don't I encounter more type errors when programming in Clojure?
I give another reason why I don't encounter so many type errors in Clojure.

What is the "reify to an interpreter" refactoring?
Watch the creation of a simple refactoring to turn functions into data.

How to teach an essential skill in domain modeling?
One important skill in domain modeling is learning to see the semantics of your language, past the habits you've developed. To do that, it helps to se...

What is an isomorphism?
An isomorphism is a one-to-one mapping from two sets, and encoding your domain model involves finding a mapping between the real world and your code....

Applying domain modeling to an existing data structure
Domain modeling also works after you've already got lots of code. How can we apply domain modeling analysis to existing data structures?

What is the commutative property?
We discuss the commutative property, why we use it, and three different possible meanings.

Why is the associative property important?
We look at several examples where the associative property gives us expressive power.

What is the process for coming up with a good conceptual model?
We describe a three-step process for discovering conceptual models.

What is the closure property?
I discuss the closure property, which creates operations that can be nested. It's one thing that makes an API feel like a DSL.

All about level three, algebraic modeling
What do I mean by algebra? And how do we get from level 0 to level 3?

Why do we need to model time?
All sophisticated models need to include time. We discuss two main ways to do that.

How do you make a function total?
It is easier to reason about total functions. And you can make any pure function total using three techniques!

What is a mutation function?
Mutation functions let you represent changing state over time. They are easily reified, used as reducing functions, and can operate on nested data.

What is Signature-Driven Development?
Signature-Driven Development means starting with function signatures before you
implement them. I also discuss why we implement the hardest fun...

What's the problem with using arrays for pizza toppings?

Is deferring decisions about our domain a good idea?
I wonder when to deal with business rules. Do they belong in the domain layer?

Can domain modeling be taught?
I answer a listener's questions about whether domain modeling is a skill that can be taught.

Why domain modeling?
We explore why focusing on the domain model can improve your software quality.

How do we evaluate a data model?
We talk about how you can evaluate the two parts of a domain model.

What is a domain model and how do we think about them?
In this episode, I talk about the three-part model of domain modeling and what it means about how they are used.

When do we want to refer to things by name?
In a domain model, when should we refer to things by name, and when should we nest a subcomponent?

Collections in domain models
When do we use collections in domain models, and how do we think about the states they represent?

Layout of Domain Modeling book
In this episode, I talk about the three parts of my book, which mirror the three levels of domain modeling.

The power of runnable specifications
I talk about the advantages of writing a spec directly in your production language.

What is a domain model?
In this episode, I continue the exploration of the definition of domain model to serve as a base layer of understanding to write my next book.

What is a high-level language?
We've all heard the term _high-level language_. Initially, it referred to the
step from assembly languages to compiled languages. But it has an...
