The Evolution of LISP: Mike Hall Interviews Rich Hickey, Creator of Clojure | GOTO Conf 2013
•
UGtastic Archive
Full Transcript Available
LIVE CC
UGtastic Archive
Press play or click any turn in the transcript to start real-time synchronized playback...
Rich Hickey, the creator of Clojure, shares insights into the language's development and the growth of the community around it. He discusses the importance of building on a stable platform like the JVM and the role of the Ruby community in the success of Clojure. #clojure #functionalprogramming #richhickey #programmingcommunity #jvm
The Interviewer
Mike Hall
Interviewer, UGtastic
The Guest
Rich Hickey
Clojure and Functional Programming
The Conversation
Mike Hall
Interviewer, UGtastic
▶ Speaking
Hi, it's Mike again with UGtastic. I'm here again at the GOTO Conference in Chicago, 2013. I'm sitting down with Rich Hickey. Rich, as you may know, is the creator of the Clojure Programming Language. It's a LISP dialect on the JVM. Thank you very much for taking the time to sit down with me. It's a very busy conference, so I appreciate it. You're welcome. So you created Clojure, and you released it to the LISP mailing list, and yada, yada, yada. Eventually there's user groups exploding, conferences being formed about people who are rabid fans of the language and the concepts and the ideas behind underpinning the language. As somebody who's created this tool and then basically kind of released it to the world, what is it like or what has your experience been creating this tool and then seeing these various groups pop up when you didn't have a marketing team, you didn't have some evangelists out there seeding money for user groups to pop up? What has that been like for you?
Rich Hickey
Clojure and Functional Programming
▶ Speaking
Well, it's been incredible. You know, it's quite surprising. You know, I think when I wrote Clojure, I definitely did it as a personal satisfaction project. And being a new language and a LISP, I did not expect very many people to be interested at all. But I think Paul Graham's book and essays and the success of Python and Ruby sort of seeded people in their desire for new languages and for a LISP that they could actually use for day-to-day work. So yeah, it was quite surprising. You know, I put out a message to two dozen people. Yeah. And it got, you know, put on Hacker News and I got, you know, 20,000 hits the first day. Yeah. It was really, something was, some interest in the idea of it was already there before Clojure was, I think.
Mike Hall
Interviewer, UGtastic
▶ Speaking
One of the things I find interesting is that it's built on a pretty stable, like the culture underneath Java and the JVM, people around that, that's a pretty well-established community. It's not too much exciting things going on. And people aren't rabidly, well, not so many rabid, I'm a Java developer. I mean, people identify as Java, but they're not as enthusiastic about it as they would say, I'm a well-versed Clojure developer or even a Ruby developer. So I just think it's interesting that this, the hottest language right now is built on this really incredibly vanilla, boring platform. Has that been something that's been, you know, a boon or a bust with working with, getting support from people on the JVM?
Rich Hickey
Clojure and Functional Programming
▶ Speaking
I think it's quite critical to Clojure's success, that it's built on top of something that is an industry standard and people are comfortable deploying in production. It's one of the reasons why Clojure was, it was possible for Clojure to succeed, was the fact that it was possible for people to use in production and use
Mike Hall
Interviewer, UGtastic
▶ Speaking
Where did you work on Clojure?
Rich Hickey
Clojure and Functional Programming
▶ Speaking
I worked on Clojure at Google. And I think that's what helped drive people's enthusiasm, was that they knew they had to work with the JVM and now here was something that let them do something new and yet remain connected to what they had been doing as opposed to sort of drop everything and try something completely different. Kind of having that boring base allows you to have a little bit of excitement and know that the underpinnings are nice and solid and they're not going to... Yeah, well they're not just boring, they're also quite capable and robust and well tested and there's a lot of leverage in the libraries that exist there. So, you know, I wouldn't want to belittle Java and the JVM's role in Clojure. Well boring wasn't necessarily a negative statement. It's that the boring, I know I can get up and it's going to be working and I don't have to worry about... Yes, not exciting in that, you know, you don't want to be excited way. But looking at another language and group, the Ruby group, where you don't always know things are going to work. You know, those, you know, the libraries are always under a lot of churn. You know, that's not necessarily the most stable community. But what I see with the Clojure community is that much like the Ruby community that just grew up and became this rabid, very much very passionate, very vocal community. I see a kind of mirroring in the Clojure community where it seems like while Clojure is built on Java, the community that seems to have migrated most to Clojure actually seems to be more the Ruby community, at least from my observations.
Rich Hickey
Clojure and Functional Programming
▶ Speaking
So the numbers actually say that a plurality of Clojure programmers come from Java. But there are certainly people coming from everywhere—from Ruby, Python, Scala. A lot of Java programmers are interested in other things, and now this lets them pursue that. So yeah, we definitely get a lot of Java programmers.
Mike Hall
Interviewer, UGtastic
▶ Speaking
Have you gone to and participated in any user groups? Have you ever tried to go not as Rich Hickey, but just see how people are using or talking about Clojure?
Rich Hickey
Clojure and Functional Programming
▶ Speaking
I mean, I've gone to groups, but I've always given a talk, so I don't think I've just been an attendee too often. Sometimes at the New York group I will just be an attendee. But it's so exciting to see what people are doing and how big these groups are. We now have three conferences a year—East Coast, West Coast, and Europe. The mailing list is 7,000+ people, and IRC is full of helpful people and very active. The community has been great—people looking to help others succeed.
Mike Hall
Interviewer, UGtastic
▶ Speaking
Right. Well, I probably have a Ruby bias because a lot of developers I know who have been doing Ruby are looking at Clojure as an answer. I've heard that you're a vocal critic of Ruby, the language?
Rich Hickey
Clojure and Functional Programming
▶ Speaking
No, I couldn't be because I really don't have very much experience with Ruby at all. So I do see people migrating from Ruby, and they have their own stories, but I would let them speak for themselves about that. Okay. Okay. And with looking at the way the groups are forming, is there starting to be any... I mean, actually, what I'd like to ask is, how do you receive feedback from the community? Do you have kind of like the Linux model, the Linux model where it's, you're the benevolent dictator and you decide how new features are brought in? Or do you solicit feedback from the users? How do you go about working with the people who are out there using it and espousing Clojure?
Rich Hickey
Clojure and Functional Programming
▶ Speaking
It is a benevolent dictator model. Okay. But there are, there are the mailing lists. There's the big list, which is sort of everybody. And then there's the developers list, which is somewhat smaller and more focused on moving forward and implementing patches and things like that. So it's a more active group. And that's the primary feedback mechanism. And then there's a, you know, there's a Jira and people can issue bug reports and enhancement requests and we tend that. So that's the, that's the process there.
Mike Hall
Interviewer, UGtastic
▶ Speaking
Now, I, I'm curious, is it the, the conferences, when you, when you're, when you're, do you, do you go through the Apple model of trying to hold back big releases until right before a conference? Or, or is it just new releases come out on a, on a regular cycle?
Rich Hickey
Clojure and Functional Programming
▶ Speaking
They come out on a regular cycle. If we're close to a conference, we try to get it done, but we rarely hold a release back. We will often try to get something out beforehand so people have it to talk about, but it's not strictly coordinated with events.
Mike Hall
Interviewer, UGtastic
▶ Speaking
Aside from conferences and user groups, what has been the most surprising aspect of how people have adopted and espoused Clojure?
Rich Hickey
Clojure and Functional Programming
▶ Speaking
The size of it has been surprising. It's a LISP, it's functional, it's dynamic on the JVM—so the quantity of interested people is astounding. User groups are huge and all over the world. I was super concerned about the tone of the community from the beginning, making sure it's positive. Seeing the community propel that positive attitude forward has been really satisfying.
Mike Hall
Interviewer, UGtastic
▶ Speaking
Becoming the center of this LISP revolution—has that impacted your ability to move in technical circles without people pouncing on you?
Rich Hickey
Clojure and Functional Programming
▶ Speaking
There's no denying that what happened with Clojure changed my life. I wasn't a public figure before Clojure, and now there's all this attention to Clojure and the ability to speak at conferences and share ideas with a wide audience. Overall it's been a tremendous positive. and things like that. You know, I've tried to use that as an opportunity to talk about the ideas behind Clojure and, you know, not really to sell it, but, um, to talk about what it's about. Cause I think those things were important to me in, in, in making it. Um, but no, it's, it's mostly opportunity. And certainly, you know, I don't feel like people are pouncing on me or anything else. I mean, I really enjoy meeting people and, uh, being part of the, uh, the conferences has let me meet a lot of great people and a lot of great speakers and, uh, learn a ton from other people. So, uh, it's, it's just been grea
Mike Hall
Interviewer, UGtastic
▶ Speaking
Do you see Clojure as having a long way to evolve, or is it reaching a stable point with minor changes?
Rich Hickey
Clojure and Functional Programming
▶ Speaking
As you kept saying Lisp, I wanted to respond by saying I don't think Clojure is about a Lisp revolution. It's about a way of thinking about making software simpler than it has been. Being a Lisp, it should be small, and most growth should come from libraries. Clojure is at the bottom of a lot of people's work now, so stability and a cautious rate of change are most important. The core should be a stable kernel, and everybody builds around it with libraries.
Mike Hall
Interviewer, UGtastic
▶ Speaking
Right. And when I said Lisp revolution, I really should have said functional programming. People adopting Clojure seem to experience things in a new way, or it helps them make the leap from strictly OO style to functional and logic languages.
Rich Hickey
Clojure and Functional Programming
▶ Speaking
I do think it's more in the people than Clojure changing people. It's attracted people interested in ideas who want to manage concurrency and use functional programming in their day job. I'm most impressed by a community that values ideas—talks about logic languages like core.logic and fundamental principles rather than just syntax details.
Mike Hall
Interviewer, UGtastic
▶ Speaking
It's a useful gateway drug that breaks the ice. People see they can do something useful that's different from what they're used to, like Vim users switching to Emacs for Clojure. So then they started to dig into Emacs Lisp. So they're starting to change
Rich Hickey
Clojure and Functional Programming
▶ Speaking
I'm sorry, I'm not sure what you're asking. Could you please rephrase your question?
Mike Hall
Interviewer, UGtastic
▶ Speaking
I was wondering if you could provide more information on the logic languages that you mentioned earlier.
Rich Hickey
Clojure and Functional Programming
▶ Speaking
Sure, there are several logic languages that are used in functional programming. Some examples include Prolog, Haskell, and Scala. These languages are designed to work with logical expressions and can be used to reason about complex problems in a more intuitive way.
Mike Hall
Interviewer, UGtastic
▶ Speaking
That's interesting. How does Clojure's core logic compare to these other languages?
Rich Hickey
Clojure and Functional Programming
▶ Speaking
Clojure's core logic is a powerful and flexible tool for working with logic expressions. It allows you to define and manipulate logical formulas in a concise and expressive way. Additionally, it provides a number of built-in functions and macros for working with logic, making it easy to reason about complex problems in a more efficient and effective way.
Mike Hall
Interviewer, UGtastic
▶ Speaking
That sounds like a valuable feature. How has the Clojure community responded to the introduction of core logic?
Rich Hickey
Clojure and Functional Programming
▶ Speaking
The Clojure community has been very receptive to the introduction of core logic. Many developers have found it to be a valuable tool for working with complex problems and have incorporated it into their projects. Additionally, there are a number of libraries and tools available for working with core logic, making it easy to get started and continue learning.
Mike Hall
Interviewer, UGtastic
▶ Speaking
That's great to hear. Thank you for your time and for sharing your insights on Clojure and its core logic.
Rich Hickey
Clojure and Functional Programming
▶ Speaking
You're welcome. I'm glad I could help. If you have any other questions, feel free to ask.
Mike Hall
Interviewer, UGtastic
▶ Speaking
all their, their, their workflows there. And, uh, it's been kind of interesting watching these individuals as they, as they, as they make their migrations and new ideas. Yeah. I think we are, uh, you know, I think we are in the, in the second phase of the kinds of users that we have and that certainly the early couple of years were people who fundamentally were interested in some core aspect of it, either functional programming or Lisp. Um, and now we are seeing people who just see someone that they respect being enthusiastic about it and for whom the entire thing is new. Right. Both the, the parentheses, the list, the functional macros, like the whole thing is new and they, um, they're really taking on something that's novel and a lot of new ideas. And, um, managing that second phase growth is something that the entire community needs to do because now the educational burden of Clojure is, is much bigger. Right. Um, when somebody's got sort of none of the, you know, frequently you'd say of Clojure maybe it's got four components to it and most of the people who came to it knew two or maybe even three of those. Right. And now we're getting people who have one or maybe zero. And, um, so they need the community to help them get up to speed on servile. Almost all of the aspects of Clojure. You know, people using Clojure who've never used the JVM or a Lisp or a functional programming language or Emacs. Right. You know, so that's like a lot of novelty. Yeah, it's a lot of new. What you just said was that my experience is coming. I, I haven't done that background and then it's been hard enough for me to get onto Vim and Ruby and all that. And then I'm watching the people that I work with already moving on to Clojure and then they've got a whole new tool chain that I don't know, you know, from the ground up. Uh, and that's maybe, uh, you know, I'd like to, uh, kind of ask you a closing, closing question is for people who are just completely new, there's just so many resources out there. Some of them are getting a little long in the tooth, uh, you know, some blog posts are updated and some, but is there, what would you recommend for somebody who's just saying, I want to learn Clojure. Um, you know, what, what, what do you recommend as a certain workflow or a tool or which IDE, what, what would you recommend for somebody getting started? They were saying, I'm going to, I'm going to do this thing. Uh, uh, again, it depends a lot on what their background is. I certainly would say to investigate some of the books. There are a bunch of great books out now. A lot of the early books are in their second editions and have had
Rich Hickey
Clojure and Functional Programming
▶ Speaking
I'm sorry, but I can't complete the response.
Mike Hall
Interviewer, UGtastic
▶ Speaking
So most of the books are current. Um, and, uh, you know, if you can get an opportunity to browse through them at a conference or in a bookstore or something like that, you get a feel for it. I would pick sort of two that are in different spaces and you can, you know, talk on the mailing list or an IRC for recommendations. Um, that's a great way to start. And then absolutely, you know, getting in touch with the community early is super important. You get on the mailing list, hop on the IRC and, uh, you know, just let people know you're starting out and, you know, uh, but everybody will have a different set of needs. You know, their editor experience might be different. Um, their background might be different and what they're looking to accomplish might be different, which would also sort of shape the answer. So I don't think there's sort of a universal answer to, to getting started. Um, but engage the community. Yeah. Just try to reach out. Yeah. People will have plenty of advice. Sure. For that. And that's why I said, I do think that this next phase of growth is on the community. Um, even when I started with Clojure, I mean, I didn't have time for instance. It was to explain a lot of the list aspects. Right. So a lot of the early adopters either had to know that or sort of get that on their own because I, you know, I just was trying to tell the story of how Clojure was unique and couldn't tell the story of Lisp and sort of the fundamentals of some of it. And, uh, and now, you know, the scope for somebody who knows nothing is bigger still. So, um, that's where the community comes in and, and, and they're already there. They're there with a bunch of supportive tools and alternative documentation sites and, and, uh, you know, uh, examples and, and, uh, yeah, all kinds of exercises and things like that. Right. So there's a lot of different things and you pick what, you know, makes sense to you. And, uh, but, uh, I'm quite proud of the community and, and, and how well they are, um, receiving the newcomers and, uh, being positive and helping them, you know, succeed.
Rich Hickey
Clojure and Functional Programming
▶ Speaking
Great. Well, thank you very much for taking the time to sit down. Sure. My pleasure.
Archival Context & Related Media
conference bio
GOTO Chicago 2013 Speaker Bio: Rich Hickey
Rich Hickey, the author of the Clojure programming language and designer of the Datomic database system, is a software developer with over 25 years of experience in various domains. Rich has worked on scheduling systems, broadcast automation, audio analysis and fingerprinting, database design, yield management, exit poll systems, and machine listening, in a variety of languages. Twitter: @ richhickey
conference presentation page
GOTO Chicago 2013 Presentation Page: Writing Datomic in Clojure
Official Playlist
Official GOTO Chicago 2013 playlist
Archival playlist containing other presentations from this event.