You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/about/documentary.adoc
+123-3Lines changed: 123 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,8 +21,128 @@ Featuring Rich Hickey, Alex Miller, Stuart Halloway, and many more, this full-le
21
21
22
22
Documentary made possible with the support of https://building.nubank.com/engineering/[Nubank]!
23
23
24
-
[#trailer]
25
-
.Trailer
26
-
video::JJEyffSdBsk[youtube, width=400, height=225, title="Clojure: The Documentary [OFFICIAL TRAILER]"]
24
+
[#video]
25
+
.Video
26
+
video:Y24vK_QDLFg[youtube, width=400, height=225, title="Clojure: The Documentary"]
27
+
28
+
== Show Notes
29
+
30
+
=== Foundational Research Papers
31
+
32
+
* https://curtclifton.net/papers/MoseleyMarks06a.pdf[Out of the Tarpit] — Ben Moseley & Peter Marks (2006). Identifies mutable state as the primary source of accidental complexity in software.
33
+
* https://infoscience.epfl.ch/record/64398/files/idealhashtrees.pdf[Ideal Hash Trees] — Phil Bagwell. Research on Hash Array Mapped Tries (HAMTs), the direct inspiration for Clojure's persistent data structures.
34
+
* https://dl.acm.org/doi/10.1145/1065944.1065952[Composable Memory Transactions] — Tim Harris, Simon Marlow, Simon Peyton-Jones & Maurice Herlihy (2005). Software Transactional Memory; a key influence behind Clojure's STM concurrency model.
35
+
* https://docs.google.com/spreadsheets/d/1P3z4Nh02l6zIeGypgQ5wKGUe6Lq0lUCR-R35b0MF7mU/edit?gid=1078381722#gid=1078381722[Paper Bibliography] - a full list of talks used by Rich while developing Clojure, compiled by Michael Fogus
36
+
37
+
=== Influential Books
38
+
39
+
* https://paulgraham.com/onlisp.html[On Lisp] — Paul Graham. Widely referenced book on advanced Lisp techniques. Free online.
40
+
* https://pragprog.com/titles/shcloj4/programming-clojure-fourth-edition/[Programming Clojure (4th ed.)] — Alex Miller, Stuart Halloway & Aaron Bedra. The first edition by Stuart Halloway launched alongside Clojure 1.0.
41
+
* https://www.manning.com/books/the-joy-of-clojure-second-edition[The Joy of Clojure] — Michael Fogus & Chris Houser.
42
+
43
+
=== Talks by Rich Hickey
44
+
45
+
* https://www.infoq.com/presentations/Simple-Made-Easy/[Simple Made Easy] (https://www.youtube.com/watch?v=LKtk3HCgTa8[YouTube]) — Strange Loop 2011. Defines the distinction between "simple" and "easy."
46
+
* https://www.infoq.com/presentations/Value-Values/[The Value of Values] (https://www.youtube.com/watch?v=-6BsiVyC1kM[YouTube]) — 2012. The case for immutable values over mutable objects.
47
+
* https://www.youtube.com/watch?v=f84n5oFoZBc[Hammock Driven Development] — On thinking deeply about problems before writing code.
48
+
* https://stuartsierra.com/2007/11/15/clojure-a-lisp-worth-talking-about/[Sierra's Blog on LispNYC Presentation] — 2007. An early public introduction to Clojure.
49
+
* https://github.com/matthiasn/talk-transcripts[Talk Transcripts] — Community-maintained transcripts of Clojure talks by Rich Hickey and others.
50
+
* https://www.youtube.com/playlist?list=PLZdCLR02grLrEwKaZv-5QbUzK0zGKOOcr[Rich Hickey Talks] - A playlist of many of Rich's online talks.
51
+
52
+
=== Paul Graham's Essays
53
+
54
+
* https://paulgraham.com/avg.html[Beating the Averages]
55
+
* https://paulgraham.com/icad.html[Revenge of the Nerds]
* https://www.cognitect.com/blog/[Cognitect Blog] — The consultancy that stewarded Clojure for many years.
61
+
* https://nubank.com.br/en/[Nubank] — World's largest independent digital bank, running core infrastructure on Clojure and Datomic. Acquired Cognitect in 2020 and currently stewards Clojure's development.
62
+
* https://www.datomic.com/[Datomic] — Distributed database built on immutable facts, designed by Rich Hickey and Cognitect.
63
+
64
+
=== Community & Archival Resources
65
+
66
+
* https://www.cognitect.com/blog/2008/9/24/java-next-overview[Java.next Blog Series] — Stuart Halloway's 2008 series on emerging JVM languages.
67
+
* https://chouser.us/clojure-log/[Clojure IRC Log Archive] — Preserved archive of the original Clojure IRC channel.
68
+
69
+
== Clojure Dialects & Runtimes
70
+
71
+
=== Core
72
+
73
+
* https://clojure.org/[Clojure] — Runs on the JVM. Follow the https://clojure.org/guides/getting_started[official getting started guide] or pick up https://www.braveclojure.com/[Brave Clojure] for a free, beginner-friendly introduction.
74
+
* https://clojurescript.org/[ClojureScript] — Compiles to JavaScript. Powers frontend development with libraries like https://reagent-project.github.io/[Reagent] and https://day8.github.io/re-frame/[Re-frame].
75
+
* https://github.com/clojure/clojure-clr[ClojureCLR] — Clojure on the .NET CLR.
76
+
77
+
=== Beyond the Core
78
+
79
+
* https://babashka.org/[Babashka] — Fast scripting without JVM startup time.
80
+
* https://jank-lang.org/[Jank] — Targets LLVM for native compilation.
81
+
* https://github.com/Tensegritics/ClojureDart[ClojureDart] — Flutter mobile apps.
82
+
* https://github.com/squint-cljs/squint[Squint] / https://github.com/squint-cljs/cherry[Cherry] — Compile to ES modules.
* https://scicloj.github.io/noj/[Noj] — Clojure-native data science toolkit from https://scicloj.github.io/[SciCloj], combining dataframes, visualization, and machine learning.
89
+
* https://github.com/generateme/tablecloth[Tablecloth] — Combine Python interop with Clojure's dataframe library.
* https://github.com/BetterThanTomorrow/calva-backseat-driver[Backseat Driver] - Clojure Tools for Copilot
95
+
* https://github.com/bhauman/clojure-mcp[ClojureMCP] — MCP server connecting AI assistants (Claude, Codex, Gemini) to your Clojure REPL with structure-aware editing.
96
+
* https://github.com/ctford/mcp-nrepl[MCP-nREPL] — Minimal Babashka MCP server giving coding agents direct nREPL access.
97
+
* https://github.com/bhauman/clojure-mcp-light[clojure-mcp-light] — Lightweight CLI tools for delimiter repair and REPL eval with any LLM coding assistant.
98
+
* https://clojurians.slack.com/archives/C068E9L5M2Q[#ai-assisted-coding on Clojurians Slack] — Active community channel for AI + Clojure development.
99
+
100
+
== Getting Started
101
+
102
+
. *Full experience* — Follow the https://clojure.org/guides/getting_started[official getting started guide] with step-by-step installation videos for https://www.youtube.com/watch?v=huGyv5yLIM8[macOS], https://www.youtube.com/watch?v=544xOAIg3y0[Linux], https://www.youtube.com/watch?v=TQgzA3QLz-k[Windows WSL], and https://www.youtube.com/watch?v=NFDAChdzThg[Windows]. The videos use https://calva.io/[Calva] in VS Code.
103
+
. *Quickest path* — Install https://babashka.org/[Babashka] and start scripting immediately. No JVM setup needed.
104
+
. *Web / frontend* — Try https://shadow-cljs.github.io/docs/UsersGuide.html[ClojureScript with Shadow CLJS].
105
+
. *Mobile apps* — Try https://github.com/Tensegritics/ClojureDart[ClojureDart] for Flutter.
106
+
. *Already a Python user* — Use https://github.com/clj-python/libpython-clj[libpython-clj] to call your favorite Python libraries directly from Clojure.
107
+
. *Editor* — https://calva.io/[Calva] provides Clojure development in VS Code with interactive REPL, structural editing, and AI integration via https://marketplace.visualstudio.com/items?itemName=betterthantomorrow.calva-backseat-driver[Backseat Driver]. See the https://clojure.org/guides/editors[editors guide] for more options.
108
+
109
+
== Glossary
110
+
111
+
Watched the documentary and want to dig in? Here are a few terms you'll encounter.
112
+
113
+
[cols="1,3", options="header"]
114
+
|===
115
+
| Term | Definition
116
+
117
+
| Lisp
118
+
| A family of programming languages that represent code as nested lists enclosed in parentheses. Clojure is a Lisp dialect.
119
+
120
+
| REPL
121
+
| Read-Eval-Print Loop. An interactive session that reads an expression, evaluates it, prints the result, and repeats. Clojure developers use the REPL to build and test programs while they run.
122
+
123
+
| Functional programming
124
+
| A programming style built around functions that take values and return values, minimizing mutable state and side effects.
125
+
126
+
| Value
127
+
| A piece of data that does not change after creation: a number, a string, or a persistent collection. Clojure defaults to values; you opt in to mutable state explicitly when you need it.
128
+
129
+
| Persistent data structure
130
+
| A collection that preserves its previous version when you modify it. Adding an element returns a new collection; the original remains unchanged. "Persistent" here means version-preserving, not stored to disk.
131
+
132
+
| Accidental complexity
133
+
| Difficulty in software caused by your tools and design choices, not by the problem itself. Contrasted with _essential complexity_, which is inherent to the problem domain.
134
+
135
+
| STM
136
+
| Software Transactional Memory. A concurrency model that coordinates shared-state changes through transactions instead of locks.
137
+
138
+
| Hosted language
139
+
| A language designed to run on an existing platform rather than its own runtime. Clojure runs on the JVM, ClojureScript compiles to JavaScript, and ClojureCLR targets the .NET CLR.
0 commit comments