Behavioral product strategist and gamification designer. This is my public hypertext notebook, sharing my thinking in motion at various stages of development.

Home

Why I'm learning Clojure

I've been interested in learning to code for a while, but never really took a full leap. I've had a few false starts. In college I took classes where I had to use R and Stata for statistical programming and econometrics, but I didn't use it beyond the classroom. I tried learning Python for statistical programming on my own with Datacamp, but I wasn't able to maintain my enthusiasm for too long. There were a lot of syntax rules that didn't make immediate sense to me (maybe the underlying rules just weren't explained), maybe it was too "how-to" oriented, or maybe I just didn't have a strong enough reason to program at the time.

The amount of talks that I had watched from programmers given that I had never coded (besides GuidedTrackGuidedTrack
GuidedTrack is a simple low-code application that allows you to make surveys, experiments, web applications, online courses, signup forms, and more. Spark Wave built GuidedTrack so that it could build advanced studies and rapidly prototype, and is making the software available more broadly.

Alternative study platforms like Qualtrics and Typeform required so much clicking and dragging that they were tedious and took forever to build. Additionally, it was difficult to package the study itself ...
but that barely counts as coding)
was absurd. I don't know what it was about them, but I just really wanted to speak their language. In particular, presentations about Lisp dialects like Clojure and Racket fascinated me to no end. From what I could tell, the syntax looked both simple and composable.

Even more interesting to me was that given that they are both Lisp dialects, that meant they excel at meta-programming - in other words, programming your programming language. Given my interest in Domain-specific languages as end-user softwareDomain-specific languages as end-user software
What I learned from GuidedTrack

Working on GuidedTrack, I have become very interested in this concept of domain-specific languages as applications. GuidedTrack does this interesting thing where the functions are so high level that it's fairly plug and play to make a research study, form, or choose-your-own-adventure story.



You can even write your code in a structured editor that lets you fill out a form to generate your code for you. As you get more familiar with the language, you don't n...
, Clojure felt like it would be a great playground.

Additionally, my work on GuidedTrackGuidedTrack
GuidedTrack is a simple low-code application that allows you to make surveys, experiments, web applications, online courses, signup forms, and more. Spark Wave built GuidedTrack so that it could build advanced studies and rapidly prototype, and is making the software available more broadly.

Alternative study platforms like Qualtrics and Typeform required so much clicking and dragging that they were tedious and took forever to build. Additionally, it was difficult to package the study itself ...
has led me to become fascinated with end-user programming and Learnable programmingLearnable programming
When people want to learn to code from scratch, they might search for an online code academy. Through a series of lessons, they would teach you the ins and outs of a language and of your developer tools. If you're bought into this way of teaching people how to code, you might try to learn better pedagogical technique.

Learnable programming asks a different question. How might we design developer tools and programming languages so coding is inherently easier to learn? How might we change the ...
. End-user programming has the potential to enable people to meld the computer to their needs rather than being totally reliant on pre-built solutions. Many Horizontal productHorizontal product
Definition: Horizontal products can be used by all sorts of people for many different purposes. A vertical product, by comparison, is meant for a specific set of use cases. Most horizontal products are just fancy data structures.

For more details, see Joel Spolsky, the founder of Trello discussing horizontal products.

Another concept that I want to point to here is just the idea of horizontal products having a low floor, wide walls, and a high ceiling. The basic idea is that it should be ea...
s trend towards basic end-user programming. While my ignorance has served me well in making a better learning experience for non-coders, if I want to expand my goals for end-user programming beyond GuidedTrack, it's time for me to gain new tacit knowledge.

I tried learning on my own, but struggled to stay motivated so I posted on Twitter asking about Clojure tutors or if anyone in my network was generally willing to help me. Tasshin FoglemanTasshin Fogleman
His twitter
sent me a direct message and offered to send me a bunch of his books.

books-and-note

I was overwhelmed by his kindness and decided that if someone was willing to send me all of these great books to help me get started, I should go ahead and get started.

At this point, I'm becoming very passionate about Clojure very quickly. See here for How I'm learning ClojureHow I'm learning Clojure
On these sorts of things, I like to Follow curiosity unconditionally. While I may not be progressing down a curriculum as fast as others, the fact that I'm trusting my curiosity means that I'm consuming more content overall. It's self-motivated, rather than obligated.

There is no curriculum that encompasses everything you should know applies here as well. It should be clear that my desired use case (exploring Domain-specific languages as end-user software and trying to create runnable models...
.