Rich Hickey rants about HttpServletRequest in 1080p: Death By Specificity from Clojure Made Simple
Why Hacker News recommends it
Cited as the classic rant on maps versus objects in discussions of data modeling and OOP.
What it is
A five-minute excerpt of Rich Hickey's Clojure Made Simple talk, with new slides, ranting about HttpServletRequest and specificity. He argues for using generic maps instead of many specific classes and getters.
Recommended by 5 HN commenters across 5 different months, 2020 to 2026.
What Hacker News said
Strong rec TacticalCoder · 2021-03 · 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: [this video]
Strong rec daly · 2021-04 · 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 [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".
Strong rec travisjungroth · 2023-11 · on “”
A classic rant by Rich Hickey: [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.
Recommends filoeleven · 2025-04 · 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. [this video]
Recommends drob518 · 2026-06 · 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: [this video]
Cites simongray · 2020-05 · 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): [this video]
Cites uDontKnowMe · 2021-08 · 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
Cites simongray · 2022-02 · 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: [this video]