Thoughts on Functional Programming Podcast by Eric Normand

Follow Thoughts on Functional Programming Podcast by Eric Normand
Share on
Copy link to clipboard

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

Eric Normand


    • Sep 25, 2023 LATEST EPISODE
    • every other week NEW EPISODES
    • 21m AVG DURATION
    • 242 EPISODES


    Search for episodes from Thoughts on Functional Programming Podcast by Eric Normand with a specific topic:

    Latest episodes from Thoughts on Functional Programming Podcast by Eric Normand

    All about the stratified design lens

    Play Episode Listen Later Sep 25, 2023 12:24


    In this episode, I introduce the stratified design lens, which talks about how and why we split things into layers.

    design lens stratified
    All about the time lens

    Play Episode Listen Later Sep 19, 2023 10:36


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

    All about the volatility lens

    Play Episode Listen Later Sep 11, 2023 18:28


    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

    Play Episode Listen Later Jul 31, 2023 24:20


    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

    Play Episode Listen Later Jul 24, 2023 15:18


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

    All about the composition lens

    Play Episode Listen Later Jul 10, 2023 13:44


    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

    Play Episode Listen Later Jul 3, 2023 19:40


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

    Data lens

    Play Episode Listen Later Jun 26, 2023 23:18


    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

    Play Episode Listen Later Jun 19, 2023 19:54


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

    How does executable specifications compare with other modeling paradigms?

    Play Episode Listen Later Jun 12, 2023 23:25


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

    What is the title of my new book?

    Play Episode Listen Later Jun 5, 2023 7:26


    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?

    Play Episode Listen Later May 29, 2023 20:58


    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 introduce each lens.

    How is domain modeling evolving these days?

    Play Episode Listen Later May 22, 2023 20:20


    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?

    Play Episode Listen Later May 15, 2023 7:17


    I give another reason why I don't encounter so many type errors in Clojure.

    What is the "reify to an interpreter" refactoring?

    Play Episode Listen Later May 8, 2023 7:13


    Watch the creation of a simple refactoring to turn functions into data.

    How to teach an essential skill in domain modeling?

    Play Episode Listen Later Apr 24, 2023 12:05


    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 see the same example in multiple languages. So how do I show examples in multiple languages without expanding the size of my book?

    What is an isomorphism?

    Play Episode Listen Later Apr 17, 2023 5:12


    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. So does domain modeling involve isomorphism?

    Applying domain modeling to an existing data structure

    Play Episode Listen Later Apr 10, 2023 9:44


    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?

    Play Episode Listen Later Feb 20, 2023 6:21


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

    Why is the associative property important?

    Play Episode Listen Later Feb 13, 2023 12:31


    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?

    Play Episode Listen Later Jan 30, 2023 14:49


    We describe a three-step process for discovering conceptual models.

    What is the closure property?

    Play Episode Listen Later Jan 23, 2023 7:45


    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

    Play Episode Listen Later Jan 9, 2023 12:37


    What do I mean by algebra? And how do we get from level 0 to level 3?

    Why do we need to model time?

    Play Episode Listen Later Dec 26, 2022 10:59


    All sophisticated models need to include time. We discuss two main ways to do that.

    How do you make a function total?

    Play Episode Listen Later Dec 19, 2022 12:06


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

    What is a mutation function?

    Play Episode Listen Later Dec 12, 2022 6:07


    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?

    Play Episode Listen Later Dec 6, 2022 11:14


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

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

    Play Episode Listen Later Nov 28, 2022 6:56


    Is deferring decisions about our domain a good idea?

    Play Episode Listen Later Nov 21, 2022 5:38


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

    Can domain modeling be taught?

    Play Episode Listen Later Nov 14, 2022 9:01


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

    Why domain modeling?

    Play Episode Listen Later Nov 7, 2022 5:59


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

    How do we evaluate a data model?

    Play Episode Listen Later Oct 31, 2022 31:04


    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?

    Play Episode Listen Later Oct 24, 2022 24:37


    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?

    Play Episode Listen Later Oct 17, 2022 11:50


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

    Collections in domain models

    Play Episode Listen Later Oct 10, 2022 17:59


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

    Layout of Domain Modeling book

    Play Episode Listen Later Oct 3, 2022 25:07


    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

    Play Episode Listen Later Aug 29, 2022 14:39


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

    What is a domain model?

    Play Episode Listen Later Aug 22, 2022 10:08


    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?

    Play Episode Listen Later Aug 15, 2022 6:53


    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.

    Rewrites

    Play Episode Listen Later Aug 8, 2022 9:34


    How is Smalltalk so small? Four rewrites.

    Is the abstract stuff at the top or the bottom?

    Play Episode Listen Later Apr 24, 2022 14:26


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

    The Christopher Alexander Effect

    Play Episode Listen Later Feb 7, 2022 13:34


    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.

    My feelings about static vs dynamic typing

    Play Episode Listen Later Jan 31, 2022 35:37


    Can't we all just get along?

    Computer Science as Empirical Inquiry: Symbols and Search

    Play Episode Listen Later Jan 10, 2022 124:33


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

    How far can we stretch technical debt?

    Play Episode Listen Later Nov 15, 2021 24:52


    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.

    How to avoid premature optimization?

    Play Episode Listen Later Nov 8, 2021 32:10


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

    What is domain modeling?

    Play Episode Listen Later Nov 1, 2021 21:46


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

    Computer Programming as an Art

    Play Episode Listen Later Sep 27, 2021 81:01


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

    Programmer as Navigator

    Play Episode Listen Later Aug 30, 2021 71:29


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

    The Humble Programmer

    Play Episode Listen Later Aug 2, 2021 136:14


    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.

    What's the relationship between abstraction and generality?

    Play Episode Listen Later Jul 19, 2021 16:56


    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.

    Claim Thoughts on Functional Programming Podcast by Eric Normand

    In order to claim this podcast we'll send an email to with a verification link. Simply click the link and you will be able to edit tags, request a refresh, and other features to take control of your podcast page!

    Claim Cancel