HackerTube
HomeLongsLikedHistoryWatch laterCategoriesPlaylistsSettings

The Value of Values with Rich Hickey

InfoQ10 HN recommenders · recommended in 11 months, 2014-2023
YouTube
145K views · 14 years ago · talk · evergreen

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.

Functional programmingDatabases & storageSoftware architecture & design#richhickey#clojure#immutabledata#functionalprogramming#datomic

13 comments from Hacker News

@dmitry-vsl2023 · in “Show HN: Leporello.js – interactive functional programming IDE for JavaScript”

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

RecommendsView on HN
@johnthescott2022 · in “The data rules worth $40k a day”

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

CitesView on HN
@elamje2021 · in “Ask HN: Programming talks that made something click for you?”

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.

Strongly recommendsView on HN
@slifin2020 · in “Write Code Like You Write a Recipe”

Who knows what bowl.stir() actually does to the internal state of bowl, and what methods should have been run up until this point to get into that state, is the bowl ready to stir? What methods should have already run for that? So much of the article's code is crutched on good naming I like to think of this in terms of the Charizard Pokemon card For context in this example I have this card and I'm sensitive about damage to it so in this OO example I put the card in a box and allow you to interact with it in a very limited way, you cannot use anything you're used to to interact with it like your own gloves or hands etc Just my "methods" so I might give you a tiny hole to look at it, you could still damage it through the hole, so I have lots of logic to ensure you cannot poke it incorrectly hopefully the verbosity on both your and my side is/was worth it and bug free and not missing cases, hopefully my hole was in the right place for your uses Obviously I can't give you too many holes in the box otherwise what's the point in the box? I need the box to maintain my sanity The other alternative is I just give you the card, and take the risk that you might damage it, this is a disaster for my well being OR I duplicate the card perfectly and give you the duplicate in which case I don't care what happens to the duplicate, MUCH easier in my opinion, so please Stop creating hellish boxes with holes for other developers to peak through just choose a language with efficient immutability

CitesView on HN
@josephg2020 · in “The database I wish I had”

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

Strongly recommendsView on HN
@lukifer2020 · in “New WebKit Features in Safari 13.1”

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.

Strongly recommendsView on HN
@lvh2019 · in “Clojure’s Approach to Identity and State (2008)”

I think Rich Hickey's (the creator of Clojure) talk, The Value of Values, to be a great 'splainer: ▶ this video

RecommendsView on HN
@lukifer2019 · in “Ask HN: What made you change your mind about a programming language/paradigm?”

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

Strongly recommendsView on HN
@tree_of_item2017 · in “Carp, a compiled Lisp with type inference and a borrow checker”

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

RecommendsView on HN
@JMStewy2016 · in “Why Clojure? (2010)”

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)

RecommendsView on HN
@unlogic2016 · in “Arguments against JSON-driven development”

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

RecommendsView on HN
@escherize2015 · in “Some Functional Programmers Are Arrogant”

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

RecommendsView on HN
@lkrubner2014 · in “Programming languages and Frameworks to learn in 2015”

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

RecommendsView on HN
Rich Hickey: Deconstructing the Database1:06:24

Rich Hickey: Deconstructing the Database

InfoQ
106K views • 14 years ago
The Language of the System - Rich Hickey1:02:50

The Language of the System - Rich Hickey

ClojureTV
174K views • 13 years ago
Effective Programs - 10 Years of Clojure - Rich Hickey1:14:52

Effective Programs - 10 Years of Clojure - Rich Hickey

ClojureTV
176K views • 9 years ago
Rich Hickey rants about HttpServletRequest in 1080p: Death By Specificity from Clojure Made Simple4:57

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

Fred Overflow
43K views • 6 years ago
Expert to Expert: Rich Hickey and Brian Beckman - Inside Clojure53:56

Expert to Expert: Rich Hickey and Brian Beckman - Inside Clojure

jasonofthel33t
119K views • 13 years ago
Are We There Yet - Rich Hickey1:10:05

Are We There Yet - Rich Hickey

Zhang Jian
24K views • 7 years ago
Clojure for Lisp Programmers Part 1 - Rich Hickey1:28:59

Clojure for Lisp Programmers Part 1 - Rich Hickey

ClojureTV
25K views • 13 years ago
Clojure for Java Programmers Part 1 - Rich Hickey1:48:13

Clojure for Java Programmers Part 1 - Rich Hickey

ClojureTV
131K views • 13 years ago
Clojure Concurrency - Rich Hickey2:32:39

Clojure Concurrency - Rich Hickey

ClojureTV
73K views • 13 years ago
Maybe Not - Rich Hickey1:03:29

Maybe Not - Rich Hickey

ClojureTV
181K views • 7 years ago
"Simple Made Easy" - Rich Hickey (2011)1:01:39

"Simple Made Easy" - Rich Hickey (2011)

ClojureTV
434K views • 5 years ago
Spec-ulation Keynote - Rich Hickey1:16:14

Spec-ulation Keynote - Rich Hickey

ClojureTV
135K views • 9 years ago
"Simple Made Easy" - Rich Hickey (2011)1:01:39

"Simple Made Easy" - Rich Hickey (2011)

Strange Loop Conference
219K views • 5 years ago
Lucas Cavalcanti & Edward Wible - Exploring four hidden superpowers of Datomic40:42

Lucas Cavalcanti & Edward Wible - Exploring four hidden superpowers of Datomic

ClojureTV
29K views • 11 years ago
Rails Conf 2012 Keynote: Simplicity Matters by Rich Hickey36:53

Rails Conf 2012 Keynote: Simplicity Matters by Rich Hickey

Confreaks
220K views • 14 years ago
"Design in Practice" by Rich Hickey1:00:46

"Design in Practice" by Rich Hickey

ClojureTV
65K views • 3 years ago
The Maximal Graph - Wilker Silva39:15

The Maximal Graph - Wilker Silva

ClojureTV
8K views • 6 years ago
Om Next - David Nolen46:18

Om Next - David Nolen

ClojureTV
44K views • 11 years ago
Scale By The Bay 2018: Bryan Cantrill, Rust and Other Interesting Things37:07

Scale By The Bay 2018: Bryan Cantrill, Rust and Other Interesting Things

FunctionalTV
45K views • 7 years ago
"Transducers" by Rich Hickey45:00

"Transducers" by Rich Hickey

Strange Loop Conference
116K views • 12 years ago