Episode 0.0.3: Chris Granger at Clojure Conj 2011

Recorded November 12th, 2011, second in a series of conversations from Clojure Conj 2011.

I had a chance to sit down with Chris Granger on the last night of the Conj.  It’s been fun to watch him over the past months put out a set of really pleasant-to-use and extraordinarily well-documented and well-packaged libraries, and he’s turned into a great presence around the Clojure sphere in general.  Chris works with Clojure daily for his current employer, ReadyForZero — a Y Combinator-funded startup that helps people get out of debt — where he helped port a Python & Django codebase over to be 100% Clojure.  (Yup, the big tagline for this episode is, “Y Combinator startup bets business on Clojure!” 😉  In addition, he has a unique history, having recently worked as a program manager Microsoft, working on Visual Studio…so, our discussion was wide-ranging.

After we recorded this, it was announced that Chris will be teaching two training sessions on Clojure web development at the new Clojure/West conference in March.  If you’re new to Clojure and want to jump-start your skills for it in the web space, signing up for one of those sessions would likely be a good way to get further faster.


(BTW, don’t miss the notes on the Overtone-produced intro and outro below…)


Or, download the mp3 directly.

Discrete Topics

  • Chris is known as ibdknox on Twitter and elsewhere
  • Lead developer for:
    • Noir, a web microframework that sits on top of Ring and Compojure
      • similar in spirit to Ruby’s Sinatra, provides “sensible defaults”
    • Korma, a Clojure abstraction over SQL (notan ORM!)
      • Efficiently write composable SQL in Clojure
      • similar to LINQ to SQL, Python’s sqlalchemy
      • (We used Korma for some RDBMS examples in the book! — Chas)
    • Pinot, a ClojureScript companion to Noir
      • Clojure-idiomatic browser DOM manipulation (instead of using gclosure directly) and canvas API
  • Chris was formerly a program manager for the Visual Basic and C# experience in Visual Studio at Microsoft
  • Counterclockwise, the Clojure plugin for Eclipse
  • Support for Clojure in TextMate via textmate-clojure
  • clojure-jack-in, the newest (simpler) entry point for swank-clojure
  • Leiningen and cake have merged forces
  • cljs-watch, a ClojureScript directory watcher
  • Clojure/West


Last episode, I put the call out for people to send in Overtone-produced sounds to serve as intro and outro pieces.  Here’s some info on the clips used in this episode.


Jen Smith coded up bell sounds from scratch using Overtone’s sine-wave ugens, and then composed them to produce a rendition of Troika, the fourth movement of Lieutenant Kije by Sergei Prokofiev.  The code itself ended up being added as an example in the core Overtone repo, and was discussed at some length on the Overtone mailing list here.

(Note: when I recorded the results of Jen’s code, I used a bell metronome with a beat of 250; perhaps that’s not “correct”, but it suited my personal taste for the tune. 🙂


Produced by Damion Junk, the intro was part of a longer track generated by a bracketed L-system, which is “a variant of a formal grammar, most famously used to model the growth processes of plant development”.  Damion used a library he wrote for working with L-systems to produce generated data for Overtone.  Here’s the source for the specific L-system he used for the intro track:

(def descending-moon {:v "RN+-<>[]"
                      :omega ">>>[-----N][++N][++++++N][<<<NR]"
                      :productions {\N "RN++NN----N"
                                    \R "RR"
                                    \> ">"
                                    \< "<"
                                    \+ "+"
                                    \- "-"
                                    \[ "["
                                    \] "]"}})