In this episode, we explore the Functional Core, Imperative Shell (FC/IS) architecture pattern popularized by Gary Bernhardt. This powerful approach separates pure business logic from side effects, resulting in code that's more testable, maintainable, and reasoning-friendly.
We'll discuss how FC/IS differs from traditional layered architectures by treating effects as data, enabling an impressive 85% of code to exist as pure functions. Using the analogy of a presidential cabinet, we explain how the functional core makes decisions while the imperative shell handles execution.
The episode covers practical implementation strategies, the crucial role of Datomic in solving the "all relevant facts" problem, and real-world benefits including enhanced REPL-driven development, simplified error reproduction, and improved system observability.
Emacs Rocks - https://emacsrocks.com
Parens of the dead - https://parens-of-the-dead.com
Replicant - https://replicant.fun
FC/IS - https://www.destroyallsoftware.com/screencasts/catalog/functional-core-imperative-shell
FC/IS with types https://www.youtube.com/watch?v=P1vES9AgfC4
Datomic - https://www.datomic.com
--------
48:52
E100 - mpenet and open source libraries
Summary:
In this episode, Max Penet talks about his software development journey, Exoscale, and open-source work.
Key Repositories & Links
Max Penet - https://github.com/mpenet
Lingo - https://github.com/exoscale/lingo
Pact - https://github.com/mpenet/pact
Coax - https://github.com/exoscale/coax
Support the Podcast:
Get Clojure Stream courses at https://clojure.stream/
Sponsor via GitHub Sponsors: https://github.com/sponsors/jacekschae
Support the Podcast by subscribing, leaving a review, or sharing with friends.
Thank you for tuning in! Stay tuned for our next episode coming soon.
--------
40:08
E99 - Replicant with Christian Johansen
Summary:
In this episode, Christian Johansen talks about Replicant a data-driven rendering library for Clojure(Script). It renders hiccup to strings or DOM nodes.
Key Repositories & Links
Christian Johansen - https://github.com/cjohansen
Christian Johansen Blog - https://cjohansen.no
Replicant (GitHub) – https://github.com/cjohansen/replicant
Replicant (website) - https://replicant.fun
i18n - https://github.com/cjohansen/m1p
Test library - https://github.com/cjohansen/lookup
Support the Podcast:
Get Clojure Stream courses or subscription at https://clojure.stream/
Sponsor via GitHub Sponsors: https://github.com/sponsors/jacekschae
Support the Podcast by subscribing, leaving a review, or sharing with friends.
Thank you for tuning in! Stay tuned for our next episode coming soon.
--------
43:20
E98 Clojure 1.12 with Alex Miller
Alex Miller on GitHub - https://github.com/puredanger
Clojure 1.12 - https://clojure.org/news/2024/09/05/clojure-1-12-0
Clojure Conj 20% ticket discount - https://ti.to/nubank/clojureconj-2024/discount/CLOJURESTREAM
FREE Clojure Conj ticket - create an issue on https://github.com/clojurestream/podcast and propose a podcast episode. Out of the proposed podcast one person will be chosen and awarded ticket to 2024 Clojure Conj.
--------
55:40
E97 2023 In Review with Alex Miller
Alex Miller on GitHub - https://github.com/puredanger