How did you get into Clojure?


#1

What’s your story? Please share!


#2

I learned Lisp in college for an AI course. It was ok, but I didn’t get hooked. Later, I learned that Lisp was easy to write (from an interview with Richard Stallman). I wanted to write a small language to experiment with. That got me hooked. That was 2001.

I started learning about Common Lisp in 2002. By 2004, I was using it in all of my grad school assignments, much to the surprise of my professors. I started studying On Lisp, which was free, and I was a cheapskate. It really broadened my ideas about why Lisp was interesting on a philosophical level. In 2007, I created a website (which did not go anywhere) using Common Lisp. It was a great experience since it was my first foray into modern web development. I also created the first LispCast videos and began blogging.

In 2008, I learned about Clojure at the Lisp 50 convention. It seemed interesting so I gave it a shot. I never looked back. Clojure was so well designed and such a pleasure to use, that although it did not have a lot of the oomph of Common Lisp, I could tell that there was a way forward. Common Lisp seemed antiquated, though containing a lot of built-up wisdom. Clojure was a fresh start, built upon that wisdom, but totally free from the chains of the past. And being on the JVM with good interop meant there were tons of libraries I was already familiar with.

I wrote quite a bit of code in it on my own, tracking its development, just on the side. In 2013 I got a fulltime job in Clojure, and I am loving it. I like that I now have reason to contribute back to clojure.core and other libraries.

Clojure, to me, is a leap forward for the industry. It is well-designed with a thoughtful set of principles. It’s not the end-all-be-all of languages, but there is a lot for me to learn and there’s a lot of runway for the language. It is still not done evolving. And macros let it evolve through libraries, such as it has already done with core.async.

It is not only my favorite language of the moment. It is also a language I have tied my fate to, in a way, having created the Introduction to Clojure video course for sale. I am working hard toward making teaching Clojure (and other functional languages) into a full-time business.


#3

Clojure is my first exposure to Lisps. I probable should have gone into computers - loved toying with them when I was younger. Hopped to Linux in '96 (1.2.13, redhat 2.0.2 I think) and had internships at SGI, wrote some web stuff there with Boutell.com’s CGIC library (yes, in C - the web was young) but then got depressed as MSFT seemed to be taking over everything and I really enjoyed unix. Decided to not go into IT but went to med school which along with residency and fellowships sucked up a decade. Now am a pedi cardiologist but have started to come full circle back to programming and loving it.

Got the itch two years ago and signed up for a Big Nerd Ranch course but shortly thereafter learned that nothing interesting happened on iOS without a good backend resource. Sat next to and became friends with a Ruby programmer down there for the week so when I made a jump a year or so after the course, moved to Ruby and Neo4j.

A month or two ago started playing around with Elixir and Dave Thomas’ excellent book. Then discovered Datomic and realized I wasn’t good enough to write Elixir Code that worked with Datomic, so made the switch to learning Clojure. I still am not great but am spending as many stolen moments with it as possible. So far I love the whole Homoiconicity thing and FP is so much easier on the brain than the knots of OO and Object State.

The issue of Time in Neo4j is a Real Pain. The fact that Datomic seems to solve this along with built-in immutability/persistence sold me as soon as I began to understand what Datomic was. Now trying to build a skeleton Datomic graph DB for my patients.

PS - very much enjoying the web clojure video - just through the first half. It’s so much better to hear someone speak of it and walk through a project. Thank you so much - so cool.
Kevin
(PPS - love Discourse. Great choice)


#4

Interesting story! Would love to hear how your Datomic app is going. We are developing a Datomic DB as well. We want to track stuff over time, so we are taking advantage of the model of time.

Also, I know some folks working on an EHR system in Clojure using Datomic and Storm. It’s a pretty cool system, as far as I understand it. Patient records stored in Datomic, realtime rule systems annotate the data with new information (like drug interactions – the doctors can add whatever rules they need). http://www.breezeehr.com/ I can put you in touch with them if you like.


#5

I’m a bit of a datomic (and clojure) novice, but I’ve gotten test apps working that read and write from a datomic dev database. Really excited about what this can offer. Would love to chat with them if they’re interested - thanks eric. And thanks for the great videos.


#6

With all the recent noise about functional programming I took attention again on it. Didn’t checked since college where played a bit with common lisp.
Reviewing the options following several blogs I came to Clojure. It was clear to me that it was the less-compromise option. As other has some of the FP feature Clojure has it more close-to-pure than others and it is very practical as leverages all existing Java libraries. And that’s the best part. Being compatible with Java world is a BIG advantage.
Hope I will get a Clojure job one day in the future. Not happening right now. Getting to learn a lot more before that happen.


#7

Welcome to the Clojure party!

Did you already know Java?


#8

Sure. About a decade dealing with the JVM LOL


#9

I think the JVM is a huge hurdle for those who aren’t familiar with it who want to learn Clojure. I know so much of the details of the standard library by heart. I also knew Common Lisp. So I had no trouble from either direction. It was kind of easy for me and I forget how hard it can be for others.


#10

My first exposure to Clojure due to some of Rich Hickey’s talks, particularly Simplicity Matters. Having worked in a codebase which suffered from a lot of problems from things being done the “easy” way, I found his ideas intriguing.

From there I started watching/listening to more talks on Clojure and functional programming, attending local meetups, etc.

I still haven’t actually done much with Clojure, but I’m gradually bringing various aspects of the functional programming approach into my JavaScript work.


#11

I am an iOS developer most of the time. I used Python back in the early days for backends, but since then have been falling into many situations where I’ve not really had to do much in the way of backend (typically other engineers doing ruby or java or .NET or BAAS type situations such as parse.com). Being a bit out of date, and Python seeming to have “lost” the war to Ruby, it didn’t seem where to go back to.

This spring, listening to two Debug podcasts by @gte and @reneritche, one with Ken Ferry and one with Miguel De Icaza, they talked a lot about the plusses of declarative programming with functional languages and functional reactive programming. It converted me to Autolayout (the declarative linear programming layout tool for iOS) and made me try out some programming in functional languages. The advertised ease of orthoganalizing concerns was a big seller. I was hooked on saying what I want and defining machinery to execute my definitions

So tried F# for backend (and android) programming, I found it poorly supported on the platforms and places I wanted to use it.

I wished for some “more functional tools” from the big Apple conference this summer, and they announced Swift, which is a hybrid functional/OO language. So did that a bit, but everyone was doing frankly insane things that looked like a horror to stick in production apps. I decided it would be better to learn from a sane functional language community what they’re doing, and transfer those habits to Swift come this fall when I could do it more.

Frustrated with the F# support situation, and seeing this chart (http://redmonk.com/dberkholz/2013/03/25/programming-languages-ranked-by-expressiveness/), I tried Clojure a bit, picking up some Koans, got through a vast number of them off old knowledge and reading a few pages.

Then tried to tell myself Haskell is where I wanted to be (due to all the interesting sounding presentations in it, including one that talked about “Haskell rewriting her brain”), and did a few months (at night) of hacking around it in it (while doing my typical iOS dev during the day). I never did get up to the speed I was working in Clojure after even a few Koans. I went looking for people nearby doing Haskell, found the Atl-Clj meet up and took that as a sign I should be slinging the parentheses as god intended and set Haskell aside for now. Since then I’ve been doing Eric’s tutorials, some CLI utils and a bit of a REST utility as time allows.

I’ll be at the Conj in Nov14, say hi if you see me there.


#12

Hey! Interesting story. Say hi at the conj!


#13

Clojure is the first programming language I’ve learnt since BASIC over 30 years ago. I didn’t set out to become a programmer, it just sort of happened! The company I work for was going through some restructuring and I was given the opportunity to retrain from client support into big data. I’ve now been working with Clojure for a year, and really enjoying. My time is spent mostly dealing with handling data using Sparkling, but recently I’ve been able to do a bit of web development building web forms and dealing with extracting data from APIs.


#14

Awesome, @draven72! Welcome!


#15

First of all, I am sorry with my English. English is not my native.

I know Clojure from my friend, he told me that Clojure is awesome, it will make you never look back at other lang. He said Clojure emphasize simplicity and focus to the real world problem. Because I trusted him, so I tried.

Clojure for me was hard. I came from imperative like Python and OO like Java. I never code in functional style, it was so hard at first time to shift paradigm. And after a month tried I give up. I drill Clojure on 4Clojure and gived up after solved about 70 problems.

After that I was looking my own reason to learn functional paradigm, why it matters. I watch a lot of videos about that, specially video form Bert Victor “The Future of Programming” make me moved. Yes, and then I learn again about Clojure from variety of sources like Pluralsight, Youtube, Github, etc. Somehow, I am into Clojure. I understood the philosophy of Clojure, simplicity matter of simple made easy from RIch Hicky.

From that I realize that in the past I did coding wrong, I was too focus to distraction rather that solving problem. So, I am now at the level of 103 problems solved at 4Clojure and I found it rewarding. I am now seeking to puzzle up my Clojure knowledge to build the real app.

So, I am looking forward for this forum and Purlyfunctional.tv. I hope I can be a Clojure contributor some day.

Thank you


#16

Hi,

I wrote about that last week: https://feierabendprojekte.wordpress.com/2017/01/07/road-to-lisp/

Cheers


#17

Hi,

I work as a QA and got into Clojure when my team took over a project that was coded in Clojure.
My major task was just to ensure the compatibility and inter-op between this Clojure module and Java WebApp which my team was actively working on.

Out of curiosity I started diving into Clojure and learnt bits and bytes. However, the world of learning too confusing and without proper direction, more often than not, one can get lost. Same happened to me and thus my level of acquaintance & comfort with Clojure always remained stuck at Novice.

I hope to fix this there at PureflyFunctional.tv


#18

I started informally with Lisp (IQLisp and later MuLisp) on a PC in the mid 80s. When I began graduate school in computer science the late 80’s I bought a Macintosh SE-30 (very cute all-in-one with a black and white screen) and Macintosh Common Lisp which I used quite a bit back then. I also used various Scheme implementations. I am told my style is a little more Scheme-like.

Even though, by 1996, I took work writing C++, Python, and Java I tried to use Lisp any time I could. I will definitely say that I had more fun with MCL than any other programming environment I had used before or since.

So after AI winter and the programming language desert of the late 90’s I was really pleased to see the Clojure project take off and also the revival of Common Lisp. For various reasons I did not get around to doing much more with Clojure than writing small example programs. I may also be a bit of a rebel in Clojure land. Here is a thread with my comments from four and a half years ago:

Lisps (meant broadly, including Clojure and Scheme dialects) are deeply liberating, because you can build any language possible, and use the language design process to better understand the relationship between computation, language, and human thought. Lisps also takes discipline and imagination. I always felt that the designers of Java made a serious mistake by eliminating some of the more interesting features of earlier programming languages. After doing serious programming in both, Java felt narrow and constraining compared to Lisp.

So after some years away from Clojure and lisp, I am trying to quickly regain my earlier proficiency. I have some projects in mind that involve generating code, and when it comes to generating code lisps are second to none. I have a whole list of things I hope to master quickly: tooling, concurrent and cluster computing, basic web programming tools…

Jonathan


#19

Awesome, @jasmith! Let me know if you need any pointers.

Eric