June 18, 2017

Clojure and the Esoteric Mysteries of Namespaces

If you’ve ever been programming in Clojure and encountered an error which looks something like, IllegalStateException("Can't change/establish root binding of: *ns* with set"), read on! Preface I recently had the drive/opportunity to deep-dive on how Clojure’s namespaces function and how they provide a simple abstraction using the concept of Clojure’s “Vars”. Here is a deep-dive on how they work. This is a two-part series. The previous part of the series is available at Clojure and the Esoteric Mysteries of Vars. ...

June 18, 2017

Clojure and the Esoteric Mysteries of Vars

I recently had the drive/opportunity to deep-dive on how Clojure’s namespaces function and how they provide a simple abstraction using the concept of Clojure’s “Vars”. Here is a deep-dive on how they work. This is a two-part series. The next part of the series is available at Clojure and the Esoteric Mysteries of Namespaces. Vars: A Simplified Model of Variables One of Clojure’s essential motivations is to provide a hosted runtime for easily concurrent programs, wherein most of the challenges of locking and thread-safety are provided “for free” (at least in the sense of the programmer not having to worry about these low-level concepts). To that end, Clojure implements its variables differently than most other languages. ...

June 4, 2017

Bearish on Clojure in 2017

There was a recent brouhaha in the Clojure community about the recent blog post by a Clojure dabbler to the effect that Clojure may be a clean and beautiful language but that it fails in a few pragmatic and ergonomic senses which hurts its adoption and limits its appeal. Although the author admits that he probably made a mistake in jumping to adopt Clojure, a foreign technological concept to him, for a startup in a space that was also completely foreign to him, he does bring up some worthwhile points that are worth chewing over. ...

October 2, 2016

Switching to Spacemacs As My Default Editor

I recently began to use Emacs as my default text editor for most things, having switched from Sublime Text. Specifically, I’m using the brilliant Spacemacs project, which can best be described as a fairly comprehensive set of sensible defaults and plugins for Emacs with a clever plugin architecture. I used to be a casual VIM user for remote file editing and a Sublime Text user for local editing (with plugins). However, neither of these solutions truly satisfied me. VIM is tricky to get fully working plugins for, and a new set of plugins is needed for every target host. Keeping the VIM plugins in sync is a chore even if effort is dedicated to it. Sublime is also very nice, and has a better plugins story, but some of the capabilities don’t seem to go far enough in my opinion. After hearing many good things about Emacs using Spacemacs, I decided to check it out. ...

January 17, 2016

Lisp Finally Clicked

I’ve been meaning to write this post for a couple of weeks now. There is a story told among programming language enthusiasts that programming as an art only “clicks” once a programmer understands the Lisp programming language. I finally feel like I’ve reached that point. Although I don’t think I’m an amazing programmer, I finally feel like I understand the difference between languages (like Python and Lisp), and why Lisp is often considered so much more flexible and powerful (at least in theory) than a language like Python or C. (For reference, see any of Paul Graham’s somewhat self-assured arguments about Lisp. I like his Blub essay the most.). ...

© Jeff Rabinowitz, 2025