“You have to be quite heavily invested in someone to do them the honour of telling them you’re annoyed with them.” ― Alain de Botton
Every language has warts. This is not the first wart piece written on Clojure, but it’s my unique take on it. There are some workarounds, but these will bite newbies. Despite these minor annoyances, I still find Clojure to be the best environment to work in for many years to come.
Programming in Lisp is a different kind of programming. Some things seem similar to your daily imperative treadmill, but mostly it’s different. There’s a different lexicon of terms, REPL-driven (or rather, -dominated) programming, there’s immutability, a really different type of (par)editing, a higher level of conciseness, a naturalness to using HoFs, a leaning on a small set of primitives, recursion as the norm, and so on.
It’s worth gaining some proficiency with a Lisp, if anything, to change the way you think about programming. In this post I explore the Lisp landscape, and try to convince you to get in on the Racket, for edification, fun, and even profit.
Lisp is embedded in a lot of places.
BTW, I don’t discredit Vim for not having an embedded Lisp. I see most of Vim (even VimL) as a very special DSL. Even with Lisp, you just can’t get as concise as Vim commands.
I’ve been hooked on CentOS for servers for a couple years now. We used to use Ubuntu, but I see several advantages to choosing CentOS over Ubuntu and others. Here’s why:
Smooth updates. Since starting all our servers out on CentOS 7.0, they’ve all been cleanly upgraded to 7.3 without any fuss or ceremony. Looked like any other daily update.
It has been a difficult decision to consider moving to Emacs. Besides discovering that it had some superpowers that Vim lacked, I had a niggling feeling that most of my programming heroes were already using Emacs. So I did some digging around to see who were the luminaries.
The digging turned up that the following all use Emacs. (Sorry for not recording many references.)
Rich Hickey (Clojure creator)
Joe Armstrong (Erlang creator)
Xavier Leroy (OCaml creator)
Matz (Ruby creator)
Guido van Rossum (GvR, Python creator)
Donald Knuth (TeX, Algo books)
Michael Widenius (MySQL creator)
Guy Steele (creator of many languages)
James Gosling (Java creator)
“A captain of a ship, no matter his rank, must follow the book.” —Captain James T. Kirk
I’ve been keeping an "Outages Log" for the last few years to track downtime and causes of failures (sometimes they’re only theories). This has turned out to be an invaluable record, so I’ll share the idea here and encourage you to keep one, too.