The Unofficial Guide to Rich Hickey's Brain
flyingmachinestudios.com
flyingmachinestudios.com
"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.
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 :)
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.
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.
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).
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/
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.
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.
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.