Skip to content
0:00 / 0:00

#clojure#richhickey#oop

Rich Hickey rants about HttpServletRequest in 1080p: Death By Specificity from Clojure Made Simple

Fred Overflow

4.2K subscribers • 15 videos on Hallway

YouTube
  • Recommended by 6 people: 5 on Hacker News and 1 in engineering communities.
  • A classic. People kept recommending it from 2019 to 2026.
  • Presented by Rich Hickey, creator of Clojure
  • An opinion. It argues one side of a question engineers disagree on.

Intermediate. Assumes working knowledge.

42K views6 years ago6 recommendations

Software designProgramming languagesData-oriented designSimplicity and complexityFunctional programming

Rich Hickey rants about the over-specificity of Java's HttpServletRequest, arguing instead for representing data using generic maps.

excerpt from youtube.com/watch?v=VSdnJDO-xdg with new slides

Why it's here

6 people recommend this

What people say. Highly recommended as a classic, persuasive argument for data-oriented design over object-oriented specificity.

u/JavaSuckin r/Clojure • Recommends

Rich Hickey rants about HttpServletRequest in 1080p: Death By Specificity from Clojure Made Simple

TacticalCoderon Hacker News • Recommends

On “Clojure from a Schemer's Perspective”

> Do people actually build large codebases with the 'hash map first' approach? There are a few large projects written in Clojure. I'd say it's a "data first" approach, not uniquely "map first". There's this famous 4 minutes rant by Rich Hickey (the creator of Clojure) where he talks about maps and about how Java does OOP (and how maps are served through getters but you can't see easily that they're maps), it's golden: link to this video

dalyon Hacker News • Recommends

On “Languages you must know #10 (Lisp)”

Rich Hickey "thinks in lisp". For example, he talks about his "maps" data structure (aka association lists). See link to this video Since data and programs are the same thing in lisp you can fluidly shift from one to the other, like I did with "knowledge" vs "rules". They both have the same representation (defstructs) but they are also code and have execution semantics. Clojure allows you to do this with map objects. The fact that you can use the whole language on everything at any time and that everything at any time is also "the language" is how you "think in lisp". Nobody thinks of Python programs as "data" or data as Python programs. Watch anything Rich Hickey talks about. He really "gets it".

travisjungrothon Hacker News • Recommends

A classic rant by Rich Hickey: link to this video I say this even though I don’t usually code this way: I think the big benefit for business code is sort of a constrained flexibility. Objects tend to get really big (the alternative is you have a ton of classes). Think about all the data that makes up one Uber ride. So if I want to do anything with a Ride, I need everything. An even the many classes thing doesn’t really solve that because maybe what I want is cross-cutting. So either way, I just end up having to supply a bunch of stuff I don’t need. The maps-first approach is more incremental. Every function takes what it needs and gives what it can.

filoelevenon Hacker News • Recommends

On “Why I Program in Lisp”

I like "Clojure, Made Simple" even more. link Someone helpfully pulled out this chunk, which is a good illustration of why data is better than functions, a key driver of Clojure's design. link to this video

drob518on Hacker News • Recommends

On “My thoughts after using Clojure for about a month”

> I personally find OOP to be the most intuitive for large scale systems design, but that's just me. At one point, I was the same. But after going functional in Clojure, I can’t imagine going back. Using maps nd just having common functions that transform data into different data is definitely the way to go. This is with your time: link to this video

u/Holmqvistin r/Clojure • Mentions

On “what is the difference between Clojure and other languages, what is the best use cases of Clojure, and why it is one of the most loved programming languages?”

Clojure is to functional programming what Go is to procedural programming: A small, opinionated and stable language that comes with batteries included, that expects you to solve your own problems by giving you tools (libraries) rather than machines (frameworks). Here is a four minute clip of Rich distilling the difference between Clojure and Java: [video

u/RealLordDevienin r/Clojure • Mentions

On “Tired by the dynamicism”

No no no link to this video I never understood the fetish for static typing to be honest. Sure. If you work in a big team on a huge peace of software it is very nice to have the static analytic tools in your editor that help you discover the shape of data. But in Clojure we have the REPL. It offers all the discoverability you need. Like another poster in this thread i program by molding the live running program in my editor and can live inspect and inject data. I almost never have problems with mismatching types. Don't know what others do to have them either. Clojure represents data as maps containing other containers and or simple value types. Why would you expect e.g. an int where a string is? T…

u/SimonGrayin r/Clojure • Mentions

On “Is this sentence a question?”

That sounds like something a Lisper would do, but how about a data-lovin' Clojure user? After seeing the REBL talk at the 2018 Conj I went back home to Denmark and tried to datafy the CoreNLP objects, since I had already written a little CoreNLP wrapper as my first Clojure project. Here's what I did (see the bottom of the file). The trick is - like with many Java objects - locating the underlying map that the Java devs have tried to hide from you. (relevant Rich Hickey rant that I often share)

u/onetomin r/Clojure • Mentions

On “Is there a Clojure book that doesn't read like Soviet propaganda?”

It's not a book, but I don't think it sounds like any kind of propaganda. Also it's from a trusted source :) Part 1: link to this video Part 2: link to this video and to understand better where does the hate for OOP come from: link to this video it's not really "just an opinion". it's an extremely well reasoned argument, IMHO.

u/daveliepmannin r/Clojure • Mentions

On “New Clojurians: Ask Anything - August 11, 2025”

In Clojure Made Simple Rich gets into one aspect. >So one of the other things I think we suffer from in object orientation is **death by specificity**. All the time, we have a new thing, we have a new idea, a new piece of data. Boom! We have a new class. Get this, get that, get whatever. >I do not care if they are value types, whatever. It is just a glorified map, except you cannot even use it as a map in Java. There is no generic way to manipulate something that says: get this, get that, get that. So new type, new language, it has got its own little vocabulary. >So you are going to have more code. You are going to have much less reuse. You are going to have more coupling. Because essenti…

simongrayon Hacker News • Mentions

On “Pretending OOP Never Happened”

> I have an object... what do I do with it? So I hit the '.' on my keyboard and read the list of things that the object can do. As a counterpoint (relevant Rich Hickey rant): link to this video

simongrayon Hacker News • Mentions

On “The Future of Clojure”

The same amount of static analysis as Python, Ruby, or any other language that doesn't have static type checking. Some people need something to happen when they press dot, though: link to this video

uDontKnowMeon Hacker News • Mentions

On “Six Years of Professional Clojure”

Not who you are responding to, but the common idea that static types are all win and no cost has become very popular these days, but isn't true, it's just that the benefits of static typing are immediately apparent and obvious, but their costs are more diffuse and less obvious. I thought this was a pretty good write up on the subject that gets at a few of the benefits link Just to name some of the costs of static types briefly: * they are very blunt -- they will forbid many perfectly valid programs just on the basis that you haven't fit your program into the type system's view of how to encode invariants. So in a static typing language you are always to greater or lesser extent modifying y…

simongrayon Hacker News • Mentions

On “Try Clojure – An interactive tutorial in the browser”

> there was no type-checking (...) intellisense/autocomplete popups for the methods. First of all, yes there is. Maybe your editor didn't support it, but e.g. IntelliJ IDEA with the Cursive plugin does. Secondly: link to this video

ducktectiveon Hacker News • Mentions

On “Rust: A Critical Retrospective”

> I found Rust syntax to be dense, heavy, and difficult to read Reminds me of this section of Rich Hickey talk: link to this video