ABOUT THIS EPISODE
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
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
English
United States
TRANSCRIPT 🔗
Are you the producer of this podcast?
Add a podcast transcript
Need Audio-to-Text?
Transcribe with Listen411 in Just 60 Seconds
SEARCH PAST EPISODES
Search past episodes of ClojureStream Podcast.
OTHER EPISODES IN THIS PODCAST
Roman on GitHub - https://github.com/roman01la
Roman on YouTube - https://www.youtube.com/@roman01la
UIx - https://github.com/pitch-io/uix
Alex on GitHub - https://github.com/armincerf
React Query - https://github.com/TanStack/query
Babashka - https://github.com/babashka/babashka
SCI - https://github.com/babashka/sci
Scittle - https://github.com/babashka/scittle
EQL - https://github.com/edn-query-language/eql
Malcolm on Twitter - twitter.com/malcolmsparks
Malcolm on GitHub - github.com/malcolmsparks
Atomic Architecture - https://www.juxt.pro/blog/atomic-architecture/
Atomic Architecture JUXT Conf - https://www.youtube.com/watch?v=5ygrCpC0axM
Kit Workshop - https://clojure.stream/workshops/kit
Dimitri on Twitter - twitter.com/yogthos
Dimitri on GitHub - github.com/yogthos
Dimitri on 500px - 500px.com/p/dmitrisotnikov
Dimitri's website - yogthos.net
Kit on GitHub - https://github.com/kit-clj/kit
Kit's website - https://kit-clj.github.i…
Francis Acila on GitHub - https://github.com/favila
Datomic - https://www.datomic.com/
Shortcut - https://www.shortcut.com/
Disclaimer: The podcast and artwork embedded on this page are from Jacek Schae, which is the property of its owner and not affiliated with or endorsed by Listen Notes, Inc.
EDIT
Thank you for helping to keep the podcast database up to date.