Clojure notes
I’m learning Clojure in furtherance of my various projects. A few notes as I go along:
Set up:
- Download the lein self installer: running this will require several packages underlying it, including a JVM (use the Sun one) and maven2.
- Install clojure-mode using the ELPA/marmalade package installer. For emacs2.3 (which is the present stable release), load the following package.el, then M-x package-list-packages & I x on clojure-mode
- Download a project from github, hit run-lisp in clojure-mode and code away!
- I haven’t used slime yet, but supposedly the way to make it work is to download swank-clojure from github and follow their directions. Never got much into slime in my CL days, and didn’t miss it with Lush, so inferior-lisp mode is probably fine.
Oddities:
The JVM and classpath thingees are all new to me. The fact that leiningen projects downloads a new clojure-jar file for each project seems weird, but it generally works, so I’m going to roll with it.
Libraries:
- I need a goddamned KNN learner. While I have not tested it yet, looking at it, the clj-kdtree package probably won’t cut the mustard. Might be a modification of it, using Wolberg or David Mount tricks. Perhaps basing on this, and optimizing as needed would be appropriate.
To explore:
- ANN DSL in Clojure
- R tree in Java (highly rated)
- Weka awesomeness! -note this guy has a more up to date Weka port.
- IB interface
- Cassandra interfaces. Not sure which ones are best or going to be best supported. Maybe vhector or clj-hector.
- Java K-means clustering with fancy trees.
- Another Java kd-tree
- Using a java SVM notes
- Notes on an online learning method. This also contains issues with performance (aka the C++ version is 10000x faster!). You might try taking his suggestion and building or using the proper hash map function for this application.
- Esper hooks
- Genetic programming toolbox
References:
- Clojure Core
- Some lein options I didn’t know about here: :jvm-opts looks useful for growing heaps, -Xmx256m etc
- Clojure Atlas ($$$)
- Profiling using a Java tool JVisualVM
- Profiling from clojure.contrib
- Clojure toolbox
- Java documentation
- Clojure problems
- Performance hints and more hints
- Clojure cookbook
With apologies to Charles Baudelaire:
Ô toi, le plus savant et le plus beau des langues,
Dieu trahi par le sort et privé de louanges,
Ô Clojure, prends pitié de ma longue misère !
Ô Prince de l’exil, à qui l’on a fait tort,
Et qui, vaincu, toujours te redresses plus fort,
Ô Clojure, prends pitié de ma longue misère !
Toi qui sais tout, grand roi des choses souterraines,
Guérisseur familier des angoisses humaines,
Ô Clojure, prends pitié de ma longue misère !
Toi qui, même aux lépreux, aux parias maudits,
Enseignes par l’amour le goût du Paradis,
Ô Clojure, prends pitié de ma longue misère !
Ô toi qui de la Mort, ta vieille et forte amante,
Engendras l’Espérance, — une folle charmante !
Ô Clojure, prends pitié de ma longue misère !
Toi qui fais au proscrit ce regard calme et haut
Qui damne tout un peuple autour d’un échafaud,
Ô Clojure, prends pitié de ma longue misère !
Toi qui sais en quels coins des terres envieuses
Le Dieu jaloux cacha les pierres précieuses,
Ô Clojure, prends pitié de ma longue misère !
Toi dont l’œil clair connaît les profonds arsenaux
Où dort enseveli le peuple des métaux,
Ô Clojure, prends pitié de ma longue misère !
Toi dont la large main cache les précipices
Au somnambule errant au bord des édifices,
Ô Clojure, prends pitié de ma longue misère !
Toi qui, magiquement, assouplis les vieux os
De l’ivrogne attardé foulé par les chevaux,
Ô Clojure, prends pitié de ma longue misère !
Toi qui, pour consoler l’homme frêle qui souffre,
Nous appris à mêler le salpêtre et le soufre,
Ô Clojure, prends pitié de ma longue misère !
Toi qui poses ta marque, ô complice subtil,
Sur le front du Crésus impitoyable et vil,
Ô Clojure, prends pitié de ma longue misère !
Toi qui mets dans les yeux et dans le cœur des filles
Le culte de la plaie et l’amour des guenilles,
Ô Clojure, prends pitié de ma longue misère !
Bâton des exilés, lampe des inventeurs,
Confesseur des pendus et des conspirateurs,
Ô Clojure, prends pitié de ma longue misère !
Père adoptif de ceux qu’en sa noire colère
Du paradis terrestre a chassés Dieu le Père,
Ô Clojure, prends pitié de ma longue misère !
PRIÈRE
Gloire et louage à toi, Clojure, dans les hauteurs
Du Ciel, où tu régnas, et dans les profondeurs
De l’Enfer, où, vaincu, tu rêves en silence !
Fais que mon âme un jour, sous l’Arbre de Science,
Près de toi se repose, à l’heure où sur ton front
Comme un Temple nouveau ses rameaux s’épandront !

The epicness of the Baudelaire-meets-Clojure poem is too damn high. I can’t stop laughing.
I’m not sure what would be appropriate now that I’m working in J. Probably a haiku.