Becoming a LISPer (and Clojurist)

Tagged as lisp, clojure, elisp, programming

Written on 2021-05-29

I grew tired of having a bare bones, empty website here. I've also recently discovered how much I enjoy Common Lisp, Clojure, and elisp (Sorry Scheme, You haven't made the cut this time around).

So, tech blog it is.

Hesitation

(defn the-problem
  []
  (map #(str "The Problem was " %) ["My Brain\n"
                                   "My Preconceptions\n"
                                   "My Ego\n"]))

(map print (the-problem))

I use Emacs as my editor of choice. So I suppose I should have realized a long time ago Lisps were to my liking. I guess I just never really put two and two together, there. But there was another barrier, too, and it was one I've realized I've struggled with for quite a long time, in many aspects of my life.

I didn't want to like Lisps. I wanted to like down up languages instead, because they were more efficient, used more in games and system code, and above all what I thought was cool.

I recently realized how much wanting to be a specific way has stood in my way in my life.

So often, I'll look at options presented to me and choose one based on what I like conceptually instead of in practice. And because I like the concept, I convince myself that I like the practice too—regardless of how comfortable I feel during that practice.

I'm sure there's some term for this in psychology; maybe I'll ask in my next therapy session.

But anyway, having given the Lisps another shot, I find myself quite comfortable using them.

Acceptance

(print
 (destructuring-bind
     (clj cl el)
     (list
      "Clojure for the Brave and True"
      "Land of Lisp"
      "Emacs Itself")
   (list :clj clj :cl cl :el el)
   ))

So, I picked up two books one night when I was suffering from insomnia (as I do from time to time): Land of Lisp, by Conrad Barski, and Clojure For the Brave and True, by Daniel Higgenbottom.

I ordered both the physical books as well as the ebooks, and have in the following week been really enjoying my time with both of the ebooks. (I haven't yet recieved my physical books, but I can't imagine they would be any worse!) I particularly enjoy the rather snarky, fun-loving approach they both take to what could otherwise be a very dry topic. I also like how they are structured: They both focus on making things instead of on (overtly) teaching concepts.

And as for the languages they teach, well, they are both Lisps. But they do have some differences. Common Lisp seems much more free wheeling and, in a way, less dogmatic than nearly every language I've ever learned before (aside, perhaps, from English). Whereas Clojure just... makes sense. In total. That's what really shook me: I like writing clojure code. I like the parts where it gets dogmatic. I like the limitations it has, and the ones it does not.

Execution

(defun becoming-a-lisper-and-clojurist ()
  "How I intend to proceed."
  (interactive)
  (move-beginning-of-line nil)
  (org-insert-heading-respect-content)
  (org-do-demote)
  (insert "Planning on Continuation and Development")
)

(define-prefix-command 'lisp-prefix-map)
(define-key lisp-prefix-map (kbd "\") #'becoming-a-lisper-and-clojurist)
(global-set-key (kbd "C-<f5> lisp") 'lisp-prefix-map)

I intend to see these books through first, obviously.

Once I finish with them, I will be migrating a lot of my code over to a (probably Clojure-heavy) Lisp environment. While I'm doing that, I will probably pick up a few more books, just to ensure I have that round foundation I look for in most of the things I do (and which is the reason I will never be good at building things in meat-space, haha.)

Then I want to start some kind of bigger project. It may or may not be related to this site, but it will definitely be talked about on here. I don't want to commit to what it is yet, though, since that will be a bit far down the road.

It will hopefully be something that will be useful to me, maybe even at work. It will have to be something that interests me, so that I can stay the course and make real progress. And I want it to be something that challenges me, because while I will likely feel competent in Lisps by then I recognize that I still have a long way to go as a programmer.

But regardless, it's just data, right? Happy Hacking.


Unless otherwise credited all material Creative Commons License by Christopher Rodriguez