The Value of Values with Rich Hickey
InfoQ10 HN recommenders · recommended in 11 months, 2014–2023
talk · intermediate · evergreen · 2014–2023 on HN
Rich Hickey's JaxConf 2012 keynote examines what values are and why immutable values matter as information systems grow more complex and data gets bigger. It contrasts places with values and builds the case for immutability.
HN commenters cite it as the talk that convinced them of immutability and functional programming.
Up next
9 mo on HNSpec-ulation Keynote - Rich Hickey
ClojureTV
10 HN recommender · 2016–2024
3 mo on HNPi and the Mandelbrot Set - Numberphile
Numberphile
3 HN recommender · 2017–2019
10 mo on HNRailsConf 2016 - Turbolinks 5: I Can’t Believe It’s Not Native! by Sam Stephenson
Confreaks
6 HN recommender · 2017–2020
9 mo on HNThe Language of the System - Rich Hickey
ClojureTV
10 HN recommender · 2013–2025
8 mo on HN"Simple Made Easy" - Rich Hickey (2011)
ClojureTV
9 HN recommender · 2021–2026
5 mo on HNJordan Peterson debate on the gender pay gap, campus protests and postmodernism
Channel 4 News
5 HN recommender · 2018–2023
2 mo on HNHjernevask - Brainwashing (Eng Sub) Part 1 - The Gender Equality Paradox
The Bookman
3 HN recommender · 2015–2018
5 mo on HNHow one tweet can ruin your life | Jon Ronson
TED
5 HN recommender · 2018–2025
18 mo on HNRuby Conf 12 - Y Not- Adventures in Functional Programming by Jim Weirich
Confreaks
17 HN recommender · 2013–2026
14 mo on HNThe Soul of Erlang and Elixir • Sasa Juric • GOTO 2019
GOTO Conferences
16 HN recommender · 2019–2024
14 mo on HN"Simple Made Easy" - Rich Hickey (2011)
Strange Loop Conference
14 HN recommender · 2022–2026
13 mo on HN"Making Impossible States Impossible" by Richard Feldman
elm-conf
9 HN recommender · 2017–2026
12 comments from Hacker News
Simple Made Easy ( link ) The Language of the System ( link ) The Value of Values ( ▶ this video ) All by Rich Hickey (Clojure creator) - strongest programming speaker I've found to date.
Most software isn’t FAANG. In the long tail of database size, I’d guess 95%+ of databases are smaller than a few hundred megs. And at that size, storage is cheap and storing a full historical record of changes should absolutely be the default. Rich Hickey has a great talk on this a few years ago talking about the difference between Place and Value. He says accountants learned this lesson hundreds of years ago with bookkeeping. Users just don’t generate much data relative to the size of our disks. Well worth a watch, especially if you disagree: ▶ this video
Immutability has been pretty hot of late, though still controversial. There are several popular languages which encourage or even force immutability (Elixir, Clojure). What sold me on the idea was Rich Hickey's talk, "The Value of Values": ▶ this video I look at it as mostly a safety net: I'd rather use const by default, unless I have a good reason to be able to mutate the variable. (To flip it around: what problem does being mutable-by-default solve?) 9 times out of 10, I don't need to change the value for the lifecycle of the function; and often if I do, the code is cleaner anyway if I use an immutable pattern (such as `const foo = bar.map()` rather than `for(x in bar) foo.push()`). Thanks to the magic of Merkle trees, we can generally make fresh pointers without it costing much memory overhead.
Rich Hickey's "Value of Values"[0] is what finally sold me on the benefits of pure functional programming and immutable data structures. (It remains horrifying to continue working with MySQL in my day job, knowing that every UPDATE is potentially a destructive action with no history and no undo.) [0]: ▶ this video
Leporello.js follows a pragmatic functional approach. You can use IO functions and throw exceptions as you typically would, without the need for an IO monad or an Option monad. However, there is one critical limitation – you cannot mutate your data structures. Mutations are not allowed because they would make time-travel debugging impossible. For instance, the following code is forbidden: const point = {x: 1, y: 2} point.x = 2 And instead you should use this: const point = {x: 1, y: 2} const another_point = {...point, x : 2} In Leporello.js, it's vital to avoid mutating data structures; instead, you create new ones. You can watch Rich Hickey's insightful talk [0], where he discusses the advantages of immutability in functional programming. In many ways, Leporello.js bears a resemblance to Clojure. Clojure served as a source of inspiration for Leporello.js, to the extent that I even contemplated building Leporello.js for Clojure first. [0] ▶ this video
I think Rich Hickey's (the creator of Clojure) talk, The Value of Values, to be a great 'splainer: ▶ this video
Clojure's implementation did not have to be so complicated, there are simpler implementations of persistent data structures. Immutability is obviously the more elegant option as far as I'm concerned: Hickey's The Value of Values [0] lays out the case quite well. [0]: ▶ this video
That talk was "The Value of Values," which I enjoyed as well. Links for anyone interested: link (1 hour version) ▶ this video (1/2 hour version)
It's funny how catnaroek was completely vendetta-downvoted in this thread for speaking valid things. For those who don't understand the difference between objects and values, this video may be of help: ▶ this video
Hi! I have been a programmer for a couple years and started picking up clojure after watching a few of rich hickeys talks. This is the one that best satisfies your question, imho: ▶ this video
If you have the slightest interest in the issue of concurrency then you should study Erlang and Clojure. Since Moore's Law has largely faded, and we now gain speed by putting more CPUs in each server (rather than having the individual CPUs be faster) concurrency is an increasingly unavoidable aspect of programming. Joe Armstrong (Erlang) and Rich Hickey (Clojure) have both spent an enormous amount of time thinking about how to support concurrency in a programming language. Armstrong talks about a paradigm that he calls "Concurrency Oriented Programming". Armstrong's thesis is surprisingly readable and I recommend it: link Rich Hickey's video presentation "The value of values" is also a good overview of some concepts that are important to Functional Programming: ▶ this video
is caching the correct analogy? the stars you see died eons ago. special relativity is your friend. we witness "immutability" casually. nothing in the relational model that i am aware of says that a materialized view cannot be a simple immutable table of "facts". same input same output. unambiguous. simply use the dynamic queries to summarize the "facts" in, typically, a small mat view tables and your gui will never lie. ▶ this video