The Unofficial Guide to Rich Hickey's Brain(flyingmachinestudios.com)
flyingmachinestudios.com
The Unofficial Guide to Rich Hickey's Brain
http://www.flyingmachinestudios.com/programming/the-unofficial-guide-to-rich-hickeys-brain/
5 comments
Author here. Thanks for pointing out that Rich Hickey didn't invent any of this stuff, and for the SICP reference.
The reason why I wrote the article as I did - as a Clojure hipster - was that I thought two things were important:
1) Getting people exposed to Rich Hickey's exceptional talks. Even if the ideas he talks about aren't new, he explains them in a way that's very easy for me to understand, and I think his speaking style is enjoyable. For my purposes, I don't really care about the attribution of ideas as long as those ideas get out. My thinking is that I'll have more success with this approach than by saying, "Dude, you should check out SICP Chapter 3. Then rock the lambda papers. And here are 100 other pages of great stuff, too."
2) Providing a lightweight reference to newbies like myself. I understand that more experienced programmers might find all this old hat, but hopefully others might find the presentation valuable.
Now, if you'll excuse me I need to go light some incense and place it in front of my Rich Hickey shrine :)
The reason why I wrote the article as I did - as a Clojure hipster - was that I thought two things were important:
1) Getting people exposed to Rich Hickey's exceptional talks. Even if the ideas he talks about aren't new, he explains them in a way that's very easy for me to understand, and I think his speaking style is enjoyable. For my purposes, I don't really care about the attribution of ideas as long as those ideas get out. My thinking is that I'll have more success with this approach than by saying, "Dude, you should check out SICP Chapter 3. Then rock the lambda papers. And here are 100 other pages of great stuff, too."
2) Providing a lightweight reference to newbies like myself. I understand that more experienced programmers might find all this old hat, but hopefully others might find the presentation valuable.
Now, if you'll excuse me I need to go light some incense and place it in front of my Rich Hickey shrine :)
Both your points are reasonable. You've stated them clearly here, but your article comes across as too gushy (to me).
That said, it is your article, and the choice of tone is completely your decision.
My opinion is just that, opinion, from someone on the internet. Take it for what it is worth.
You say (quoting your article)
"In this article (and more to come (possibly)), I begin my attempt to catalog Mr. Hickey's unique viewpoint."
My (mild) criticism was that there is nothing unique or, in your words, "Hickeysian" (shudder) about any of this. Or if you did actually 'catalog Mr Hickey's unique viewpoint' I didn't see it (in the article).
That maybe a trivial point to you, but I believe it is valid criticism, especially when you make a very specific claim, as above. And hey fwiw, I didn't say that on your blog, only as a comment on HN.
Fwiw, I completely agree with the idea that Rich Hickey's talks are well worth listening to for all devs, whether newbies or not. He is a great speaker and clear thinker, and a great engineer.
Actually, I would like to see an article decoding Hickey's way of thinking.
Avoiding 'the gush' makes for stronger articles. Consider this feedback - a random comment on your blog post if you will (imo again, ymmv etc, as always, and that is as it should be). If it helps you create better articles in the future, that's great. If not, that is fine too.
But yes, incense and chanting at the shrine is one way to do it ;). Go for it, and more power to you.
That said, it is your article, and the choice of tone is completely your decision.
My opinion is just that, opinion, from someone on the internet. Take it for what it is worth.
You say (quoting your article)
"In this article (and more to come (possibly)), I begin my attempt to catalog Mr. Hickey's unique viewpoint."
My (mild) criticism was that there is nothing unique or, in your words, "Hickeysian" (shudder) about any of this. Or if you did actually 'catalog Mr Hickey's unique viewpoint' I didn't see it (in the article).
That maybe a trivial point to you, but I believe it is valid criticism, especially when you make a very specific claim, as above. And hey fwiw, I didn't say that on your blog, only as a comment on HN.
Fwiw, I completely agree with the idea that Rich Hickey's talks are well worth listening to for all devs, whether newbies or not. He is a great speaker and clear thinker, and a great engineer.
Actually, I would like to see an article decoding Hickey's way of thinking.
Avoiding 'the gush' makes for stronger articles. Consider this feedback - a random comment on your blog post if you will (imo again, ymmv etc, as always, and that is as it should be). If it helps you create better articles in the future, that's great. If not, that is fine too.
But yes, incense and chanting at the shrine is one way to do it ;). Go for it, and more power to you.
Thanks - I really appreciate the feedback. In my mind, I had meant "Hickeysian" in a tongue-in-cheek way, and I had considered jokingly mentioning that the post was a kind of hagiography. Now I really see how this could appear to someone else, and I have to admit this realization has made me shudder a little myself. This will definitely help my writing.
As for cataloging his unique viewpoint - hopefully as I progress I'll do a better job. I think that some of his later talks like "The value of values" and the one on place may be more uniquely his.
As for cataloging his unique viewpoint - hopefully as I progress I'll do a better job. I think that some of his later talks like "The value of values" and the one on place may be more uniquely his.
Great, I look forward to your future posts.
I suspect the way to 'thinking like Rich Hickey' (vs specific ideas etc) goes, at least partly, through Polya's "How to Solve It". He seemed to be very influenced by it ( I forget which talk he mentioned it in).
I suspect the way to 'thinking like Rich Hickey' (vs specific ideas etc) goes, at least partly, through Polya's "How to Solve It". He seemed to be very influenced by it ( I forget which talk he mentioned it in).
Just wanted to note that, if I'm not mistaken, your reference to "accidental complexity" should be "incidental complexity". Nice post. A Rich Hickey groupie here as well - like you I love his talks for their mind widening value.
That's something I wasn't 100% sure about. When "incidental complexity" was discussed in the talk, I thought it was pretty much the same as "accidental complexity" in the way that Fred Brooks means it in No Silver Bullet. So I used "accidental complexity" and linked to the wikipedia article to hopefully provide some useful info.
There is also Out of the Tarpit[1], which also uses "accidental." This is a paper Rich Hickey mentions in at least one of his talks.
[1]: http://shaffner.us/cs/papers/tarpit.pdf
[1]: http://shaffner.us/cs/papers/tarpit.pdf
Great read - thanks! I love the river metaphors. The metaphysics discussion also brought back memories of college philosophy classes on Plato's theories around ideas vs. forms. Probably my memory is failing me here and someone more versed in philosophy could help me out here :) But to me it's interesting how classical philosophy could even remotely be related to computer programming.
The river metaphor probably made you think of Plato. The famous quote "You can never step into the same river twice" is attributed to Heraclitus[1], but it's Plato who (first) tells us that Heraclitus said it[2].
Plato's theory of forms (or ideas - they're two ways expressing the same theory in Plato, not oppositions) is arguably a response to earlier theories of Heraclitus and Parmenides[3]. In a Heraclitean world, everything is always changing; nothing stays the same, and there is not even an underlying substance that undergoes the changing and stays itself (the way we might say there's an underlying me that was once young and is now older). In contrast to Heraclitus, Parmenides said almost the opposite (maybe - people argue a lot about what the hell Parmenides said): nothing ever changes; the only reality is being, which is always (and only) what it is and doesn't change. Heraclitus denied the reality of stability, and Parmenides denied the reality of change. Plato is trying to bridge these two theories: he wants to agree with Heraclitus that the world shows massive change, but also with Parmenides that not everything changes, and that something must subsist all the changing. Forms help to explain permanence for Plato: a form is an eternal, immutable, non-sensory X that all the concrete particular x things participate in. For example, the form of Beauty (which is permanent, unchanging and perfectly beautiful, but non-sensory - a funny combination) is what makes actual beautiful things (which can change and become ugly) beautiful. When put that way without more context, Plato's theory sounds bizarre and obviously false. But he was struggling to understand what later philosophers call "properties"[3] and "the problem of universals"[4], and it turns out that that problem is not easily solved.
[1]: http://plato.stanford.edu/entries/heraclitus/
[2]: http://plato.stanford.edu/entries/heraclitus/#Flu
[3]: http://plato.stanford.edu/entries/parmenides/
[4]: http://plato.stanford.edu/entries/properties/
[5]: http://plato.stanford.edu/entries/universals-medieval/
Plato's theory of forms (or ideas - they're two ways expressing the same theory in Plato, not oppositions) is arguably a response to earlier theories of Heraclitus and Parmenides[3]. In a Heraclitean world, everything is always changing; nothing stays the same, and there is not even an underlying substance that undergoes the changing and stays itself (the way we might say there's an underlying me that was once young and is now older). In contrast to Heraclitus, Parmenides said almost the opposite (maybe - people argue a lot about what the hell Parmenides said): nothing ever changes; the only reality is being, which is always (and only) what it is and doesn't change. Heraclitus denied the reality of stability, and Parmenides denied the reality of change. Plato is trying to bridge these two theories: he wants to agree with Heraclitus that the world shows massive change, but also with Parmenides that not everything changes, and that something must subsist all the changing. Forms help to explain permanence for Plato: a form is an eternal, immutable, non-sensory X that all the concrete particular x things participate in. For example, the form of Beauty (which is permanent, unchanging and perfectly beautiful, but non-sensory - a funny combination) is what makes actual beautiful things (which can change and become ugly) beautiful. When put that way without more context, Plato's theory sounds bizarre and obviously false. But he was struggling to understand what later philosophers call "properties"[3] and "the problem of universals"[4], and it turns out that that problem is not easily solved.
[1]: http://plato.stanford.edu/entries/heraclitus/
[2]: http://plato.stanford.edu/entries/heraclitus/#Flu
[3]: http://plato.stanford.edu/entries/parmenides/
[4]: http://plato.stanford.edu/entries/properties/
[5]: http://plato.stanford.edu/entries/universals-medieval/
One of the key things about Rich, is that he simply 'does'. Needed a way to access Java arrays from Clojure, #bam#, it's done.
Things have slowed down a bit with the maturing of Clojure, but it was really something how fast Clojure developed back in about 2007/2008 or so.
Things have slowed down a bit with the maturing of Clojure, but it was really something how fast Clojure developed back in about 2007/2008 or so.
"a State is a specific value for an identity at a point in time." That just did a little something for my noggin as well. Cool post. Now I have another Hickey video to watch that's probably going to send me off on some crazy tangent for months :)
I find Rich's anti-OO philosophy refreshing. I know Rich's reasons for not liking mainstream/traditional OO is different, but for some reason I've never liked the idea of having methods and data together. I like the concept of Common Lisp's CLOS.
I find it refreshing too. I find it much easier for my programming to flow when I'm sparing in my object use.
But, I'm not quite ready to throw out bundling functions with data just yet. Sometimes there's no other use you'd have for a function, and the dot notation and discovery through autocomplete is really convenient.
Not quite sure how to resolve these things yet.
But, I'm not quite ready to throw out bundling functions with data just yet. Sometimes there's no other use you'd have for a function, and the dot notation and discovery through autocomplete is really convenient.
Not quite sure how to resolve these things yet.
In a language like Clojure you wouldn't have the problem of autocomplete because there isn't an object for the method to be attached to.
I love autocomplete and editors/IDEs for dynamic OO languages have a hard time providing it, because the type isn't know except through certain types of analysis, which can never be 100% known.
I love autocomplete and editors/IDEs for dynamic OO languages have a hard time providing it, because the type isn't know except through certain types of analysis, which can never be 100% known.
"Identity is a putative entity we associate with a series of causally related values (states) over time. It's a label, a construct we use to collect a time series."
True enough, but this is extensively covered in SICP Chapter 3 (for example). It is great that Rich Hickey believes this and speaks about it, but he didn't invent the idea, as some Clojure hipsters seem to think.
Not to bash the immensely talented, and balanced Rich Hickey (who doesn't make any grandiose claims, and is a brilliant engineer if the quality of the Clojure implementation is any kind of signifier), but this kind of cult behaviour by some of his followers is annoying.