Episode 0.0.5: Chris Houser at Clojure Conj 2011

Recorded November 12th, 2011, the fourth and final recording in a series of conversations from Clojure Conj 2011.

Chris Houser (usually known as online) has been working with Clojure longer than nearly anyone else; he started tinkering with the language in early 2008, and was a fixture in #clojure irc and on the for years.  His contributions to the language, early libraries, and community through his always genial and insightful presence are hard to overstate.  More recently, he has coauthored the excellent Joy of Clojure along with Michael Fogus, and is now working with Clojure daily over at Lonocloud.

It’s been my privilege to know and work with Chris a bit over the years, and, as always, it was great to talk with him in person.

Enjoy!

Listen:

Or, download the mp3 directly.

Discrete Topics

  • “Everything I learned, I [learned] on irc?!”
  • Macros (a.k.a. “compile time metaprogramming”) in Scala? Project Kepler
  • Rich Hickey once made a visit to the Western Mass. Developer’s Group, and delivered one of his great early talks on Clojure, complete with an ants demo.  My post on the event, and video.
  • “Tooling is a canard.”
  • Chouser wrote “the first ClojureScript” years ago, a proof of concept using JavaScript as a host for a Clojure implementation.  (Don’t go looking for it, I think it’s dropped off the internets by now; check out the “real” ClojureScript if you want a Clojure for JavaScript.)
  • error-kit — don’t use that though, you should almost surely use Slingshot instead for advanced error handling
Advertisements

Episode 0.0.4: Antoni Batchelli and Hugo Duncan at Clojure Conj 2011

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

I caught up with Hugo Duncan and Antoni Batchelli (everyone calls him Toni 😉 during one of the lunch breaks at the Conj.  These guys have been on a tear with Pallet, an open source Clojure project that Hugo started in early 2010 to shave one of the hairiest yaks around, the automation of provisioning and management of computing infrastructure.  The result is a tool and library that provides a classically Clojure abstraction for controlling nearly any environment, from cloud nodes to virtual machines to the rackmounts you have downstairs.  Since it is their full-time job — Toni and Hugo have built a business around the project — most of our discussion centers on Pallet, its history, and how people are using it.

Near the end, Hugo and I talk some about his other work in the Clojure world, which has generally been related to tooling around Emacs and Maven.

Enjoy!

Listen:

Or, download the mp3 directly.

Discrete Topics

  • Clojure/West, happening March 16-17, 2012 — be there!
  • Disclojure, a great stream of links to Clojure tutorials and news maintained by Toni
  • Pallet, representing computing infrastructure with Clojure abstractions
    • Chas has used pallet to automate provisioning and configuration of Clojure webapps and CouchDB clusters (old, OLD links!)
    • Often mentioned in the same breath as Chef and Puppet on the now-defunct IT Management and Cloud Podcast (by Michael Cote and John M. Willis)
    • Storm, by Nathan Marz Twitter — uses pallet to simplify deployment and operations
    • pallet-hadoop — uses pallet as a library to automate hadoop operations
    • Support for tons of different computing infrastructures:
      • — provision & control resources on dozens? of different clouds
      • vmfest — layer on top of VirtualBox that allows you to use it as a local cloud “provider”
      • node-list — control non-cloud computing infrastructure, i.e. in-house resources
    • GoGrid (using Clojure because of Pallet!)
  • swank-clojure
  • JPDA (Java Platform Debug Architecture), includes the Java Debug Interface
  • Clojure Debug Toolkit
  • Alternative Maven support for Clojure, written in Clojure: zi
  • clojure-maven-plugin (by a.k.a. talios)
  • Leiningen

Outro

This episode’s outro is a piece by Christopher Ford. Using a synthesized cornet by Jennifer Smith, he produced an abbreviated version of a piece where a set of chords continually fall out of time with a simple five-note melody.  Of course, full source to the piece is available for your Overtone hacking delight.


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.

Enjoy!

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

Listen:

Or, download the mp3 directly.

Discrete Topics

  • Chris is known as 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
  • , the Clojure plugin for Eclipse
  • Support for Clojure in TextMate via textmate-clojure
  • clojure-jack-in, the newest (simpler) entry point for swank-clojure
  • cljs-watch, a ClojureScript directory watcher
  • Clojure/West

Bumpers

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.

Intro

coded up bell sounds from scratch using Overtone’s sine-wave ugens, and then composed them to produce a rendition of , 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 .

(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. 🙂

Outro

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][<< ">"
                                    \< "<"
                                    \+ "+"
                                    \- "-"
                                    \[ "["
                                    \] "]"}})
 

Episode 0.0.2: Sam Aaron and Overtone at Clojure Conj 2011

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

I had the great pleasure of hanging out with Sam Aaron both before and after his presentation at the Conj.  In that presentation, he delivered a brief survey of the history and state of affairs in computer music and an overview of Overtone — an “open source audio environment” built with Clojure — with live, interactive musical performances interspersed throughout to demonstrate some of its capabilities.

This was the last talk of the Conj, and Sam and I recorded this very shortly afterwards.  I don’t know if the organizers were being purposeful about it, but that positioning was brilliant: I (and, I suspect, many others) were so completely blown away by what Sam and the rest of the Overtone team had achieved and by his palpable, absolutely riveting delivery and performance, that I’m not sure the conference could have carried on effectively had he been scheduled midway through.  The reaction of the crowd was jubilant throughout, helping Sam off the stage with a rousing standing ovation of the sort that you hear more often in concert halls and theatres and ballparks than at technical conferences.

For my part, I was stunned.  Totally beyond the cerebral appreciation for the application of Clojure and its powers of abstraction to a domain like music (something that many programmers likely view as “untouchable” in various ways), I always love seeing someone so clearly consumed with passion for their craft.  The sight is inspiring and humbling and I was on a high for the rest of the night.

So, if I sound more enthused than usual through the course of my conversation with Sam…that’s why. 🙂

We talked a bit about his explorations with producing music using Ruby, his path to helping to combine Clojure and SuperCollider into Overtone, the connections between programming, musicality, creativity, and fearlessness, and what he has in mind to help us all make some music, have some fun doing it, and help our friends do the same.

“Sam, you’re badass!”

— Rich Hickey, after Sam’s Overtone presentation

Listen:

Or, download the mp3 directly.

(Note: while we were recording, we had a number of people stumble into the room we were recording in, so there are some hard stops and odd audio transitions here and there each time we restarted.)

Discrete topics mentioned:

Source code for this episode’s bumpers, produced by Sam Aaron in Overtone:


I’m not a journalist

…and I can’t and don’t want to approximate one, either.  I think that’s pretty obvious, and might seem like a non sequitur, but you’ll see why it’s not in a second.

One odd thing is that, in the process of emailing a couple of people to suggest that we record some material for the podcast at the Conj, I encountered a few jokes (expressed most definitely tongue-in-cheek) around the prospect that I’d be trying to run a hardcore interview.  I can picture it now, me sweating a Clojure library author with curveball questions and shooting for that perfect ‘gotcha’ moment where they mispronounce “Leiningen“. (Like I do sometimes. Not on purpose, I promise.) Yikes.

While people were joking, and I presume they don’t actually think that would happen (insofar as everyone I’ve approached has assented to being on the ‘cast), my mother always told me that there’s a kernel of truth in every jest.  Further, I can appreciate that being recorded for posterity can be anxiety-inducing, and I’ve now heard at least one story of someone being unpleasantly grilled by an aggressive podcast host.

So, as much as possible, I’d like to reassure anyone being recorded at the Conj, and anyone that might be on the podcast in the future that I am sooooo not looking to create or experience any stress of any kind.  I’m not interested in being a journalist (my biases and vested interests are too flaming obvious, anyway), and I’m certainly not interested in being a ‘gotcha’ journalist.  I’m just someone that really, really likes Clojure, likes the people I know that use Clojure, and would like to know more people that use Clojure.  I’m not even super-interested in doing interviews per se; having a conversation with someone that I might have if the podcast didn’t exist at all is my main goal for when “guests” are on.  I’d rather just can the whole project than let things ever get “weird”, either for me or other hosts or “guests”.

If this has seemed like a bizarre digression…you’re right.  But, hopefully the above clarifies what I’m up to and what my intentions are.


Episode 0.0.1: Sean Corfield, Clojure Contrib, and “real world Clojure”

In our first episode, a conversation between Chas Emerick and Sean Corfield (), recorded November 7th, 2011.

Listen:

Or, download the mp3 directly.

Topics included:

If you have any suggestions, questions, or comments, feel free to leave them below.  And, if you’d like to get your comments or questions out onto the podcast, feel free to send audio clips to the email address you see to the right — I can’t guarantee your clip will get used, but let’s see how it goes. 🙂

BTW, thank you very much for all of the feedback in the comments here and elsewhere.  All of the ideas are very appreciated, and many of them will hopefully be incorporated in future episodes as things progress and I get my podcasting legs.


Coming soon!

I’ve long thought about starting a Clojure podcast, but I guess it took Twitter peer pressure to make me get off my butt and do something about it (hi, & !).

I certainly enjoyed podcasting for the short time that I tried it, and it seems like the broader Clojure community could use some auxiliary informational and entertainment material out there.  Not all of us can lurk on IRC or read Clojure blogs all day — and after all, there is something very humanizing and enriching about being able to have some kind of palpable contact with birds of a feather, even if it is only hearing the voice of the author of that cool new Clojure library.

Ironically, the first post here has no audio — but only because I first want to hear from anyone potentially interested in a Clojure podcast:

  1. What would you like to hear about?
  2. Who (or, what sorts of people) would you like to hear from?
  3. How do you prefer to get podcast content (iTunes, other RSS, SoundCloud, embedded flash player…)?

I have a variety of ideas re: format, topics (both one-off and recurring), “segments”, and so on, but I want to listen to what you have to say first.