Thoughts on Functional Programming Podcast by Eric Normand: Recent Episodes

Eric Normand

An off-the-cuff stream of Functional Programming ideas, skills, patterns, and news from Functional Programming expert Eric Normand of LispCast.

View Details

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

View Details

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

View Details

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.

View Details

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

View Details

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

View Details

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

View Details

In this episode, I compare executable specifications to UML, DDD, and software design.

View Details

I wonder when to deal with business rules. Do they belong in the domain layer?

View Details

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

View Details

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

View Details

We talk about how you can evaluate the two parts of a domain model.

View Details

In this episode, I talk about the three-part model of domain modeling and what it means about how they are used.

View Details

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

View Details

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

View Details

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

View Details

I talk about the advantages of writing a spec directly in your production language.

View Details

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.

View Details

We've all heard the term _high-level language_. Initially, it referred to the step from assembly languages to compiled languages. But it has another definition, which has to do with how well the language lets you think.

View Details

How is Smalltalk so small? Four rewrites.

View Details

I explore a new perspective about what abstraction means and how it can cause problems.

View Details

Why does some design advice work for some people, but not for others? And why do some agile practices work for some people, but not for others? I call that The Christopher Alexander Effect and explain how it works.

View Details

Can't we all just get along?

View Details

In this episode, I excerpt from and comment on Allen Newell's and Herbert Simon's 1975 ACM Turing Award Lecture.

View Details

Technical debt is a metaphor used to explain the tradeoff we all face when we have a deadline. How much is it worth to rush the code out the door? It's a good metaphor, but the term is often used these days to mean 'code I don't like'. In this episode, I examine the parts of the metaphor and ways in which technical debt differs from financial debt.

View Details

I explore why clean code is a lagging indicator and how the domain model is a leading indicator of maintenance cost.

View Details

I begin exploring the process of domain modeling with a definition.

View Details

I read from the 1974 Turing Award Lecture by Don Knuth.

View Details

We read and discuss the 1973 ACM Turing Award Lecture by Charles W. Bachman.

View Details

We read from and comment on Edsger Dijkstra's 1972 Turing Award Lecture called The Humble Programmer. Is the problem with programming that we don't recognize our own limitations? We'll explore that and more.

View Details

Do abstract and general mean the same thing? I don't think so. I've actually stopped using the term 'abstraction' because it's so laden with semantic baggage. We explore what they do mean in different contexts, and why abstract is not a relative term.

View Details

In this episode, we explore why Clojure's stance of not wrapping data much is so powerful in the world we live in.

View Details

In this episode, I read from and discuss a comment thread between Rich Hickey and Alan Kay.

View Details

In this episode, I read from David Parnas's important paper on modularity.

View Details

In this episode, I explore the notion of fit and how it is missing from the Stratified Design paper.

View Details

In this episode, I read and comment on excerpts from John McCarthy's 1971 Turing Award Lecture.

View Details

In this episode, I read and comment on an excerpt from the 1970 Turing Award Lecture by James Wilkinson.

View Details

When using the onion architecture, you need to consider the dependencies (actions depend on calculations), but also you need to consider the semantic dependencies (the domain should not know about the database).

View Details

Functional programming is a mindset that distinguishes actions, calculations, and data. That's where it derives its power. Simply applying the discipline of 'only pure functions' lets you programming using a procedural mindset and still think you're doing functional programming.

View Details

Force is an important concept in Newtonian mechanics. But do forces really exist? In fact, it is an abstraction invented by Newton. The insight revolutionized physics and universalized his model. What can we learn from it?

View Details

One of the greatest domain models ever built was Newtonian mechanics. Why did it take physics, as a field, thousands of years to figure it out? What can we learn from Newtonian mechanics to help us model our own domains?

View Details

We discuss two phases of domain modeling, one easy and one difficult.

https://lispcast.com/how-is-domain-modeling-related-to-starbucks/

View Details

For audio, video, and text transcripts: https://lispcast.com/is-design-a-noun-or-a-verb/

View Details

For audio, video, and text transcripts: https://lispcast.com/has-software-design-taken-a-wrong-turn/

View Details

For audio, video, and text transcripts: https://lispcast.com/form-and-content-in-computer-science/

View Details

For audio, video, and text transcripts: https://lispcast.com/one-mans-view-of-computer-science/

View Details

For audio, video, and text transcripts: https://lispcast.com/computing-then-and-now/

View Details

For audio, video, and text transcripts: https://lispcast.com/the-synthesis-of-algorithmic-systems/

View Details

For audio, video, and text transcripts: https://lispcast.com/is-clojure-a-language-for-hipsters/

View Details

For audio, video, and text transcripts: https://lispcast.com/lambda-the-ultimate-goto/

View Details

For audio, video, and text transcripts: https://lispcast.com/can-programming-be-liberated-from-the-von-neumann-style/

View Details

For audio, video, and text transcripts: https://lispcast.com/do-we-use-metacircular-evaluators-in-real-life/

View Details

For audio, video, and text transcripts: https://lispcast.com/the-next-700-programming-languages/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-makes-some-apis-become-dsls/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-software-design-definition/

View Details

For audio, video, and text transcripts: https://lispcast.com/why-functional-programming-matters/

View Details

For audio, video, and text transcripts: https://lispcast.com/my-response-to-out-of-the-tar-pit/

View Details

For audio, video, and links: https://lispcast.com/out-of-the-tar-pit/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-software-architecture/

View Details

For audio, video, and text transcripts: https://lispcast.com/the-early-history-of-smalltalk/

View Details

For audio, video, and text transcripts: https://lispcast.com/lisp-a-language-for-stratified-design/

View Details

Show notes:

For audio, video, and text transcripts: https://lispcast.com/year-end-update-2019/

View Details

For audio, video, and text transcripts: https://lispcast.com/are-monads-practical/

View Details

For audio, video, and text transcripts: https://lispcast.com/where-does-structural-similarity-come-from/

View Details

For audio, video, and text transcripts: https://lispcast.com/do-you-need-immutability-for-functional-programming/

View Details

For audio, video, and text transcripts: https://lispcast.com/algebra-is-about-composition/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-do-product-and-sum-types-have-to-do-with-data-modeling/

View Details

For audio, video, and text transcripts: https://lispcast.com/can-you-have-a-clean-domain-model/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-abstraction-2/

View Details

For audio, video, and text transcripts: https://lispcast.com/why-does-stratified-design-work/

View Details

For audio, video, and text transcripts: https://lispcast.com/why-are-algebraic-properties-important/

View Details

For audio, video, and text transcripts: https://lispcast.com/functional-programming-is-a-set-of-skills/

View Details

For audio, video, and text transcripts: https://lispcast.com/the-commercialization-of-computers/

View Details

For audio, video, and text transcripts: https://lispcast.com/two-kinds-of-data-modeling/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-are-product-and-sum-types/

View Details

For audio, video, and text transcripts: https://lispcast.com/why-do-i-prefer-clojure-to-haskell/

View Details

For audio, video, and text transcripts: https://lispcast.com/why-do-i-like-denotational-design/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-the-difference-between-a-domain-model-and-business-rules/

View Details

For audio, video, and text transcripts: https://lispcast.com/power-of-nil-punning/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-nil-punning/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-the-curse-of-lisp/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-an-abstraction-barrier/

View Details

For audio, video, and text transcripts: https://lispcast.com/in-the-onion-architecture-how-do-you-make-business-decisions-that-rely-on-information-from-actions/

View Details

For audio, video, and text transcripts: https://lispcast.com/can-you-use-types-with-data-orientation/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-the-benefit-of-data-orientation/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-data-orientation/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-a-total-function/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-a-continuation/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-kind-of-software-is-functional-programming-not-suited-for/

View Details

For audio, video, and text transcripts: https://lispcast.com/monads-in-the-real-world/

View Details

For audio, video, and text transcripts: https://lispcast.com/grokking-simplicity-launch/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-the-difference-between-parallelism-and-concurrency/

View Details

For audio, video, and text transcripts: https://lispcast.com/how-do-you-develop-algebraic-thinking/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-an-algebra/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-a-calculation/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-so-great-about-object-oriented-programming/

View Details

For audio, video, and text transcripts: https://lispcast.com/why-should-you-throw-away-all-of-your-code/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-data-modeling/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-an-action/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-tail-recursion/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-memoization/

View Details

For audio, video, and text transcripts: https://lispcast.com/how-does-making-something-first-class-give-you-power/

View Details

For audio, video, and text transcripts: https://lispcast.com/is-there-a-silver-bullet-for-software-part-2/

View Details

For audio, video, and text transcripts: https://lispcast.com/is-there-a-silver-bullet-for-software-development-part-1/

View Details

For audio, video, and text transcripts: https://lispcast.com/why-getters-and-setters-are-terrible/

View Details

For audio, video, and text transcripts: https://lispcast.com/why-taming-complex-software/

View Details

For audio, video, and text transcripts: https://lispcast.com/3-examples-of-algebraic-thinking/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-a-higher-order-function/

View Details

For audio, video, and text transcripts: https://lispcast.com/the-3-levels-of-functional-thinking/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-functional-thinking/

View Details

For audio, video, and text transcripts: https://lispcast.com/we-make-information-systems/

View Details

For audio, video, and text transcripts: https://lispcast.com/how-to-distinguish-between-commutativity-and-associativity/

View Details

For audio, video, and text transcripts: https://lispcast.com/why-side-effecting-is-not-all-bad/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-an-inverse-and-why-is-it-useful/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-makes-a-repl/

View Details

For audio, video, and text transcripts: https://lispcast.com/how-is-haskell-faster-than-c/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-a-functor/

View Details

For audio, video, and text transcripts: https://lispcast.com/why-am-i-podcasting-about-functional-programming/

View Details

For audio, video, and text transcripts: https://lispcast.com/is-your-layer-of-indirection-actually-useful/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-a-monoid-is-and-why-monoids-kick-monads-butt/

View Details

For audio, video, and text transcripts: https://lispcast.com/how-do-you-implement-lazy-evaluation/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-lazy-evaluation/

View Details

For audio, video, and text transcripts: https://lispcast.com/how-is-recursion-like-a-for-loop/

View Details

For audio, video, and text transcripts: https://lispcast.com/why-do-programmers-put-up-with-so-much-pain/

View Details

For audio, video, and text transcripts: https://lispcast.com/can-you-always-find-a-layer-of-meaning-in-which-your-problem-is-easier/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-point-free-style/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-referential-transparency/

View Details

For audio, video, and text transcripts: https://lispcast.com/why-you-shouldnt-hide-your-data/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-are-higher-order-functions/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-function-composition/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-does-it-mean-for-a-function-to-have-a-zero/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-a-functions-identity/

View Details

For audio, video, and text transcripts: https://lispcast.com/why-do-promises-make-async-javascript-better-than-callbacks/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-are-first-class-functions/

View Details

For audio, video, and text transcripts: https://lispcast.com/where-to-find-time-to-learn-functional-programming/

View Details

For audio, video, and text transcripts: https://lispcast.com/do-locks-slow-down-your-code/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-idempotence/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-commutativity-and-why-is-it-so-useful-in-distributed-systems/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-associativity-and-why-is-it-useful-in-parallel-programming/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-are-timelines-and-what-do-they-have-to-do-with-functional-programming/

View Details

For audio, video, and text transcripts: https://lispcast.com/cheap-or-free-functional-programming-for-your-team/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-recursion-and-when-should-i-use-it/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-are-side-effects/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-are-concurrency-and-parallelism/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-are-race-conditions/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-are-pure-functions/

View Details

For audio, video, and text transcripts: https://lispcast.com/how-to-apply-the-onion-architecture/

View Details

For audio, video, and text transcripts: https://lispcast.com/how-do-you-create-a-semantic-base-layer/

View Details

For audio, video, and text transcripts: https://lispcast.com/tension-between-data-and-entity/

View Details

For audio, video, and text transcripts: https://lispcast.com/is-react-functional-programming/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-event-sourcing/

View Details

For audio, video, and text transcripts: https://lispcast.com/is-there-always-a-way-to-implement-an-algorithm-without-mutable-state/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-the-universal-process-pattern/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-the-onion-architecture/

View Details

For audio, video, and text transcripts: https://lispcast.com/more-about-stratified-design/

View Details

For audio, video, and text transcripts: https://lispcast.com/why-is-functional-programming-gaining-traction-why-now/

View Details

For audio, video, and text transcripts: https://lispcast.com/some-thoughts-on-map-filter-and-reduce/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-do-functional-programmers-think-of-the-class-inheritance-hierarchy/

View Details

For audio, video, and text transcripts: https://lispcast.com/why-do-functional-programmers-focus-on-time/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-to-reify-in-software/

View Details

For audio, video, and text transcripts: https://lispcast.com/why-do-functional-programmers-model-things-as-data/

View Details

For audio, video, and text transcripts: https://lispcast.com/sources-of-complexity-in-software/

View Details

For audio, video, and text transcripts: https://lispcast.com/how-do-we-represent-relationships-in-functional-programming/

View Details

For audio, video, and text transcripts: https://lispcast.com/single-responsibility-principle-for-functional-programming/

View Details

For audio, video, and text transcripts: https://lispcast.com/how-is-a-book-a-monad/

View Details

For audio, video, and text transcripts: https://lispcast.com/layered-design-in-functional-programming/

View Details

For audio, video, and text transcripts: https://lispcast.com/keeping-functional-code-organized/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-software-design/

View Details

For audio, video, and text transcripts: https://lispcast.com/how-to-create-a-habit-of-reuse/

View Details

For audio, video, and text transcripts: https://lispcast.com/the-easiest-way-to-make-your-existing-code-more-functional/

View Details

For audio, video, and text transcripts: https://lispcast.com/how-does-fp-achieve-reuse/

View Details

For audio, video, and text transcripts: https://lispcast.com/why-are-actions-hard-to-test-by-definition/

View Details

For audio, video, and text transcripts: https://lispcast.com/how-do-things-compose-across-domains/

View Details

For audio, video, and text transcripts: https://lispcast.com/is-functional-programming-declarative/

View Details

For audio, video, and text transcripts: https://lispcast.com/how-can-you-work-with-a-json-value-if-you-know-nothing-about-it/

View Details

For audio, video, and text transcripts: https://lispcast.com/is-the-little-typer-the-static-typing-book-ive-been-waiting-for/

View Details

For audio, video, and text transcripts: https://lispcast.com/something-i-missed-in-rich-hickeys-last-keynote-clojure-conj-2017/

View Details

For audio, video, and text transcripts: https://lispcast.com/are-categories-design-patterns/

View Details

For audio, video, and text transcripts: https://lispcast.com/why-is-making-something-first-class-the-key-to-expressivity/

View Details

For audio, video, and text transcripts: https://lispcast.com/how-can-pure-functions-represent-state-change/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-callback-hell/

View Details

For audio, video, and text transcripts: https://lispcast.com/how-is-a-cook-like-functional-programming/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-the-primary-superpower-of-functional-programmers/

View Details

For audio, video, and text transcripts: https://lispcast.com/does-functional-programming-have-an-answer-for-everything/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-does-it-mean-to-compose-in-functional-programming/

View Details

For audio, video, and text transcripts: https://lispcast.com/reduce-complexity-at-every-step/

View Details

For audio, video, and text transcripts: https://lispcast.com/why-is-functional-programming-more-expressive/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-immutability/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-does-it-mean-for-programs-to-be-built-using-whole-values/

View Details

For audio, video, and text transcripts: https://lispcast.com/how-is-functional-programming-like-grocery-shopping/

View Details

For audio, video, and text transcripts: https://lispcast.com/divide-and-conquer-algorithms/

View Details

For audio, video, and text transcripts: https://lispcast.com/the-3-most-important-idea-in-computer-science/

View Details

For audio, video, and text transcripts: https://lispcast.com/the-2-most-important-idea-in-computer-science/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-is-the-business-value-of-clojure/

View Details

For audio, video, and text transcripts: https://lispcast.com/the-1-most-important-idea-in-computer-science/

View Details

For audio, video, and text transcripts: https://lispcast.com/is-smalltalk-a-functional-language-is-lisp-object-oriented/

View Details

For audio, video, and text transcripts: https://lispcast.com/why-do-we-need-a-theory-of-functional-programming/

View Details

For audio, video, and text transcripts: https://lispcast.com/my-big-beef-with-refactoring/

View Details

For audio, video, and text transcripts: https://lispcast.com/build-your-core-abstraction/

View Details

For audio, video, and text transcripts: https://lispcast.com/focus-on-composition-first/

View Details

For audio, video, and text transcripts: https://lispcast.com/build-an-interface-around-data/

View Details

For audio, video, and text transcripts: https://lispcast.com/focus-on-the-data-first/

View Details

For audio, video, and text transcripts: https://lispcast.com/how-variants-can-reduce-complexity/

View Details

For audio, video, and text transcripts: https://lispcast.com/why-are-corner-cases-the-devil-%f0%9f%98%88/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-will-increase-your-programming-productivity-the-most/

View Details

For audio, video, and text transcripts: https://lispcast.com/a-cool-functional-programming-pattern-do-you-know-what-to-call-it/

View Details

For audio, video, and text transcripts: https://lispcast.com/can-you-do-functional-programming-in-any-language/

View Details

For audio, video, and text transcripts: https://lispcast.com/what-does-it-mean-for-actions-to-be-first-class/

View Details

For audio, video, and text transcripts: https://lispcast.com/should-we-waste-memory/

View Details

For audio, video, and text transcripts: https://lispcast.com/is-fp-just-programming-with-pure-functions/

View Details

For audio, video, and text transcripts: https://lispcast.com/algebraic-properties-composition/

View Details

For audio, video, and text transcripts: https://lispcast.com/algebraic-properties-composition/

View Details

For audio, video, and text transcripts: https://lispcast.com/bottom-vs-top-programming/

View Details

For audio, video, and text transcripts: https://lispcast.com/clojure-web-framework-might-look-like/

View Details

For audio, video, and text transcripts: https://lispcast.com/theory-functional-programming-0006/

View Details

For audio, video, and text transcripts: https://lispcast.com/clojure-needs-grow-boring-web-framework-boring-data-science/

View Details

For audio, video, and text transcripts: https://lispcast.com/programming-pop-culture/

View Details

For audio, video, and text transcripts: https://lispcast.com/theory-functional-programming-0005/

View Details

For audio, video, and text transcripts: https://lispcast.com/theory-functional-programming-0004/

View Details

For audio, video, and text transcripts: https://lispcast.com/theory-functional-programming-0003/

View Details

For audio, video, and text transcripts: https://lispcast.com/theory-functional-programming-0002/

View Details

For audio, video, and text transcripts: https://lispcast.com/theory-functional-programming-0001/