6 ms·
Clojure: The Documentary, official trailer [video]
- boriskourt 6mo agoI am so glad that this has been made! And happy that it features so many familiar faces from the last two decades of Clojure. There is a lot more to a programming language than just the code committed.
- jakeinspace 6mo agoI'll never be as cool as them.
- jimbokun 6mo agoWell yeah how can you compete with a programming language created by the 4th Doctor?
- gleenn 6mo agoRich Hickey, Alex Miller, Stu Holloway, Nathan Marz, and the other people in this video are all very impressive, intelligent people. But never undercount how much if their success is due to consistent effort. They worked hard at something they cared about with depth, and also longevity. Anyone can learn Clojure with a bit of skill and tenacity. Anyone can contribute to the community in a meaningful way. It takes effort though. Please join us and contribute back to the community in ways that help you scratch an itch, give it some polish, and then share it. Or join the forums on Clojurians on Zulip. Come to Clojure/Conj, it was fantastic last year.
- ares623 6mo agoBut with AI now is your/everyone's chance!
- zshrdlu 6mo agoSupposedly. If the productivity boost is good for commercial software it's good for open source.
- vaylian 6mo agoAI might help you with building the thing that you want. But AI can't help you with finding out what is worthwhile wanting. See also Rich Hickey's remarks on AI: https://www.youtube.com/watch?v=MLDwbhuNvZo https://www.youtube.com/watch?v=MLDwbhuNvZo
- ares623 6mo agoIt was sarcasm. My point was that with AI, anyone has a chance to make their name about this "amazing new tech" just like Rich and contemporaries did in the 2010's. Not AI as the means to an end, but as the end in itself.
- kqr 6mo agoI feel this way about Common Lisp hackers too. What they have going on is very impressive wizardry. I want that. But whenever I try, it just does not mesh with my brain and I end up going back to Haskell and its compile-fix-compile-run loop instead.
- waynesonfire 6mo agoVery cool. My first instinct was to buy a Clojure book.. so for those that had the same, Programming Clojure, Fourth Edition 4th Edition is on pre-order scheduled to be released May 2026. https://pragprog.com/titles/shcloj4/programming-clojure-fourth-edition/ https://pragprog.com/titles/shcloj4/programming-clojure-four...
- embedding-shape 6mo agoSame! I think I acquired 2-3 books that I tried to slog through in order to understand Clojure, but never really clicked until I bought and went through "Clojure for the Brave and True", which somehow made it click. Also available for free online, highly recommend: https://www.braveclojure.com/ https://www.braveclojure.com/
- eduction 6mo agoYea, this book worked like a charm for me too. The author recently weighed in on what he’d cut and add to a future version - could be useful to anyone reading today, if they want to skip some things. https://www.reddit.com/r/Clojure/comments/1rxknpj/quick_question_does_clojure_for_the_brave_and/ https://www.reddit.com/r/Clojure/comments/1rxknpj/quick_ques...
- vaylian 6mo agoClojure is the language that made me "understand Lisp", as originally stated by Eric Raymond and citet by Paul Graham: https://paulgraham.com/avg.html https://paulgraham.com/avg.html It seems like a small thing, but Clojure's choice to open up for other types of parentheses made seeing the structure of lisp programs much easier. This helped me understand how code is data and how macros are functions that can transform both code and data. An important design philosophy (which is also hinted at in the trailer) is "simplicity". Clojure is designed to give you the tools to build simple solutions to the problems that you want to solve. It approaches mutability, which is one of the key sources of complexity in programming, with immutable data structures. It's a really clever way to do functional programming where your data is copied a lot but the copies are lightweight. I don't write Clojure any more these days. I'm mostly doing Rust. But it is true what Eric Raymond said: Lisp has made me a better programmer. Also: XKCD 224 and 297
- zerr 6mo agoLisp philosophy is all about inventing languages (libraries), creating abstractions for each problem. Clojure is all about using primitive data types and maps everywhere explicitly.
- midnight_eclair 6mo agovirtually all abstractions are built on top of primitive data types and mappings
- lo_zamoyski 6mo ago> virtually all abstractions are built on top of primitive data types Obviously. The point being made is that the Clojure style discourages building DSLs and the like and prefers to remain close to Clojure types and constructs. It departs in various ways from traditionally Lisps.
- midnight_eclair 6mo ago> Clojure style discourages building DSLs does it really? https://github.com/simongray/clojure-dsl-resources https://github.com/simongray/clojure-dsl-resources
- jwr 6mo agoI've been running my business for 10 years now, relying on Clojure and ClojureScript. It is amazing to be able to base one's livelihood on a foundation that is so stable and well designed. Clojure has been designed by a very smart and very experienced person, and it shows. It has then been maintained and extended by a team built around a culture of maturity and stability, and the result is something you can rely on. The fact that I can use the same language to develop business model code that runs on both the client and the server, or that I don't have to use a different on-the-wire format for sending data between them (EDN does the job great) is just icing on the cake in this context. I am very thankful to Rich and the entire Clojure (and ClojureScript) teams for giving me access to all their work (for free!). BTW, if you haven't seen any of Rich's talks, go see them — they are worth it even if you do not intend to use Clojure.
- abyssin 6mo agoRich's talks have been the apex of my programming career. I didn't like sitting in front of a computer to the extent needed to make a living from it, so I moved on to another industry. And maybe I wasn't smart enough to become competent in Clojure. But I'm thankful for the eureka moments that Rich offered me. He's such a beautiful mind.
- thsbrown 6mo agoWould love to know what industry you ended up in. Daydreaming about working with my hands out and about one day lol.
- 6mo ago
- arikrahman 6mo agoI'm forever grateful for putting me onto this amazing language and even more amazing community. I know many others that feel the same way.
- lukashrb 6mo agoEvery time I write another DTO → domain → DB mapping layer in Kotlin/TypeScript, I think about Clojure. I’m pretty grateful I learned it. It really changed how I think about software. Still, it’s a trade: less ceremony, more responsibility.
- ajmoon 6mo agoClojure is very enjoyable if you respect the practices encouraged by Rich Hickey. I've worked with Clojure in a number of companies, it's an elegant language and a thing of real beauty when done well, but it's not so much fun when you're working on a codebase that doesn't respect the philosophy of avoiding breaking changes; especially when these breaking changes are done in library code, and where a more liberal approach has been taken when it comes testing. "less ceremony, more responsibility" is a good summary, in a larger codebase a bit of ceremony is not always a bad thing though. I'm also glad I learnt Clojure, it made me a far better programmer. Kudos to Mr Hickey, I'm looking forward to the documentary.
- pllbnk 6mo agoI was lucky at one point to work professionally with Clojure for several years and it has made a huge impact how I think and write code in other languages as well. Also, those other languages now seem needlessly verbose and annoying compared with Clojure.
- yakshaving_jgt 6mo ago> `a -> a`; `[a] -> [a]`; It means nothing! It tells you nothing! — Rich Hickey, Effective Programs[0] [0]: https://www.youtube.com/watch?v=2V1FtfBDsLU&t=4020s https://www.youtube.com/watch?v=2V1FtfBDsLU&t=4020s --- A disastrously poor take. I used to work at a Clojure company, and there's no chance I'd ever go back to that.
- embedding-shape 6mo agoI used to work in a Clojure company, but you wouldn't believe how loudly the lead developer chewed when we had lunch, never Clojure again after that.
- abeppu 6mo agoI worked for a startup that used clojure and found it so frustrating because, following the idiomatic style, pathways passed maps around, added keys to maps, etc. For any definition which received some such map, you had to read the whole pathway to understand what was expected to be in it (and therefore how you could call it, modify it, etc). I think the thing is that yes, `[a] -> [a]` tells you relatively little about the particular relationship between lists that the function achieves, but in other languages such a signature tells you _everything_ about: - what you need to call invoke it - what the implementation can assume about its argument i.e. how to use or change the function is much clearer
- waffletower 6mo agoI think the pipeline paradigm you speak of is powerful, and some of the clarity issues you claim can be improved through clear and consistent use of keyword destructuring in function signatures. Also by using function naming conventions ('add-service-handle' etc.) and grouping functions in threading forms which have additive dependencies, can also address these frustrations.
- acestus5 5mo agothis is the new standard in hyperscale. Even Microsoft is doing Medallion architecture in Fabric. if you are going to be modifying the same data with a sequence of functions, you got to write that down somewhere so new people get it. Lisp is great at processing lists in such a manner.
- coolThingsFirst 6mo agoIs this lang for web dev?
- emoII 6mo agoYes, as ClojureScript
- embedding-shape 6mo agoYes, web development is a pleasure with Clojure. On the backend side, you start your server once, and whenever you change it locally, you apply what you changed directly to the running process, so you don't lose any state and without having to restart the server at all, so iterating on the program becomes very easy. Bugs are easy to track down too, as you can evaluate parts ("forms") of the program inside the process itself, debugging becomes a breeze. On the frontend side, you have ClojureScript that basically enables the same but in a browser environment. Usually I have the browser on the right, my editor on the left, and whenever I "evaluate a function", it runs in the browser context, so again same thing; the frontend keeps the same state even after your changes, so no more "make change -> wait for compilation -> get frontend into the state that reproduces the issue -> output debug info -> make change again", you just change one part, see the page update and then continue changing. If you've used React+Redux (or similar) before, it's basically that experience, but much tighter and together with code evaluation inside of the browser context. If I recall correctly, Redux was pretty much directly inspired by ClojureScript and Reagent in the first place, I think Abramov even referenced ClojureScritp/Reagent in the first Redux talk.
- midnight_eclair 6mo agoclojure itself is a joy to use, on the web or outside of it BUT it doesn't have the equivalent of rails, mostly because lispers are an opinionated bunch and can't come together to agree on how web development should be done the frameworks that do exist are more of a collections of libraries with some plumbing to connect the dots
- embedding-shape 6mo agoWhich in reality isn't a problem, once you absorb the ideas of Clojure and try to apply them when using Clojure. Composition of well picked libraries beat batteries-included frameworks for most use cases, both short term and long term, at least in 99% of the cases I'm writing Clojure/Script code.
- asxndu 6mo agoWhere do I actually get the documentary on April 16th?
- christophilus 6mo agoI think it’ll be on that same YouTube channel.
- puredanger 6mo agoCorrect, it will be on the CultRepo channel.
- midnight_eclair 6mo agothe wonders of visibility algorithm: https://news.ycombinator.com/item?id=47556827 https://news.ycombinator.com/item?id=47556827
- vaylian 6mo agoI guess all the Clojure fans were in their hammocks?
- shivekkhurana 6mo agoI have been writing Clojure since 2017. Unlike every other language that helps you achieve a task, Clojure helped me think. Clojure for me is a rich vocabulary to talk interact with data. When Jank becomes stable, Clojure will be unstoppable.
- barrell 6mo agoI’ve been writing ClojureScript now for around a decade. I tried to get into Clojure many times, but as someone with no Java experience, the JVM really makes it unbearable. I ended up trying Elixir though and absolutely loved it. Both Clojure and Elixir really changed the way I think about programming. They’ve both basically ruined me as far as other languages go. Structural editing + repo driven development in Clojure, BEAM + pattern matching in elixir. But there is something just infinitely more fun about writing Clojure code, and insanely satisfying. I’m eagerly awaiting the day that jank takes off and I can start building native mobile apps in Clojure (and who knows, maybe some web backend tech stack will spring up around it!)
- veqq 6mo agohttps://janet-lang.org https://janet-lang.org is already Clojure without the JVM
- embedding-shape 6mo agoI feel like calling Janet "A Clojure" is doing both a disservice. It's more like a "Clojure-like but smaller on purpose" programming language, and it's also (self-described) for "exploratory programming, scripting, and fun side projects" rather than Clojure's intended target audience. Nothing wrong with that, having different target audiences makes sense and is probably preferable, but Janet is more than just "Clojure without the JVM" much like C# is more than just "Java without the JVM".
- veqq 6mo agoYes, clojure-like is good
- pjmlp 6mo agoMy favourite companion to Java, when on the JVM, especially because the host language community culture. If you want a Lisp Machines like experience with Clojure, support the Cursive folks. https://cursive-ide.com/ https://cursive-ide.com/
- lo_zamoyski 6mo agoClojure is IMO indisputably a good language within a certain scope, and especially relative to many other languages used in practice. However, I think it's greatest merit is not so much the language itself - and there is nothing especially innovative about any of its features per se - but that it introduced so many programmers to a more functional style and the selection of very practical features it includes (Java interop was a smart move, as the ecosystem is a major hurdle for adoption). Much of the fandom and enthusiasm IMO comes from the contrast between the other sorts of languages people use in industry - which traditionally are imperative - and this functional style. It is much easier to reason about functional programs than imperative programs where names can refer to one thing at one moment, and to another at another moment. Mutability really is bad and should generally only be used judiciously and in very confined and controlled contexts. In my experience, while I have found Clojure enjoyable and practical, it is still a "dynamic" language. A good deal of run-of-the-mill programming can manage quite well with such a language, but as projects become larger, deeper, and more complex, the lack of static types really does become a cost and an impediment. To understand any function and what it expects, you often need to read a few layers in to find what exactly something consumes and returns. Types really are a boon in such code bases. Some may point to various schema libraries in Clojure. While these can be helpful, they are often comparably inscrutable in practice (both in terms of specification and the resulting errors) and really do not compare to bona fide types, especially with LSP integration. And when you model something using types, the code sort of just falls out of the type definition.
- rbanffy 6mo agoI don't have much love for Java - it's an OK statically typed language - but I have the utmost respect for the Java runtime environment. Clojure is a beautiful Lisp, and coupled with the JVM it's extremely powerful.
- m1n1 6mo agoOnly a few languages allow you to change a system while it is running (saving time on deploying new development versions and re-creating state) ... and have a recording debugger (saving time since you can inspect any part of a recording at leisure instead of accidentally passing the interesting spot and having to start over) I hope more people get to experience this kind of joy :)