Buy a signed copy of ‘Clojure Programming’, help the EFF!

Update, 2014 Aug 29: Unfortunately, this fundraising effort did not pan out.  Only one individual reached out with a “pledge” for the EFF; rather than go through the rigmarole of collecting a single donation, I simply took him at his word that he donated the pledged amount, and set him up with a signed copy of Clojure Programming. Yes, this means I still have a pile of the books sitting idle.

Through a strange set of circumstances, I recently came into a decent-sized cache of copies of Clojure Programming (which I co-authored, in case the blatant self-promotion to the right didn’t tip you off already).  The only other likely option for them was to lay disused for some years, and then end up in the bin; so, I bought them (at a steep discount) from the prior owner, not quite knowing what I’d do with them.

If I didn’t live in the hinterlands, I’d just drop them off at the nearest gathering of Clojure enthusiasts; but, lugging boxes of books hours away to Boston or New York had little appeal.  My next thought was to simply sell them, but the economics are just crummy, given the PITA logistics of handling payments, boxing, and shipping for one book at a time, all for something like $15 or so net. (Yes, sorry, I’ll file this under #firstworldproblems.)

But, a better idea came eventually, one that I hope enough of you will cotton to to make an impact:

Buy a signed copy of Clojure Programming; all proceeds go to the Electronic Frontier Foundation

Surely you’re familiar with the EFF already; if not, you should be.

The “rules” here are very simple; basically, this is a first-price sealed-bid auction:

  1. Send me an email indicating how much you would like to donate to the EFF, $100 minimum, exclusive of the shipping necessary to get the book to you.
  2. The top 5 pledges received before March 5th, 2014 will receive a new copy of Clojure Programming, signed by me (FWIW, etc).  I’ll write whatever else you’d like in terms of a salutation, personal message, etc.
  3. The cumulative amount pledged will be donated to the EFF, in care of those that made those top 5 pledges.

If it’s not completely clear, I’ll not be keeping a single cent of the pledged amounts; everything will be going to the EFF.  In fact, I’d like to use Dwolla if possible for all donations, which would effectively eliminate transaction fees; I’m pretty sure the EFF can do more with that 3% than Visa, Mastercard, and Paypal.

Sound good?  Pledge away, and feel free to ask any questions here or via Twitter.

Starting Clojure (mk. 2)

I’ve wanted to put together a long-form introductory Clojure screencast for some time.  I had an opportunity to do this in grand style yesterday in a live O’Reilly webcast, but, for various reasons, I wasn’t fond of how that came together.  So, I cut another live coding screencast that introduces, in various levels of detail:

A complete (though not pretty!) URL shortener webapp is built from scratch, with discussions of immutable data structures, function composition, and mild concurrency topics scattered throughout.  It’s a fair bit more than I was planning on covering in the O’Reilly webcast, but I think the additional material blended in well.

Without further ado, Starting Clojure, mk. 2:

(You may want to watch full screen in HD to see various details)

Once you’re done with the screencast, you may want to continue your Clojure explorations with the help of Clojure Programming, and maybe Clojure Atlas (which, conveniently enough, is available at a hefty discount with your copy of  Clojure Programming).

Backstory on the O’Reilly Starting Clojure webcast

Ever had a bad day? Sure, of course. Ever had a really bad day prior to presenting a live-coding webcast to what turned out to be ~700 internet attendees?  Yeah, that was me yesterday. If you’re brave (or want to wince, laugh, and then cry at my performance), you will likely be able to see the video of it eventually. But seriously, don’t bother.

I probably should have postponed the whole thing, but that seemed unreasonable at the time — the fact that it had been planned for a couple of weeks, had a bunch of registered attendees, and my own stubbornness urged me on to commit programmer seppuku.  I was existentially distracted the whole time, and the more I tried to hold it together, the worse things got.  (Of course, that’s not an excuse, but an explanation.)  Honestly, after finishing the webcast, I was absolutely horrified; I had a great opportunity to represent Clojure well to a large body of programmers new to the language, and I utterly failed.  I felt like I had done a disservice to O’Reilly and, most of all, my coauthors.

Fight or flight kicked in, and for 5 minutes, I harbored thoughts of giving up doing screencasts and public speaking permanently, to save everyone involved. Thankfully, I relaxed, had a couple glasses of wine, and woke up early this next morning with a clear head to record a live-coding screencast, in proper single-take style, which you see above.  It is epically better than the O’Reilly webcast, covers the material better than I planned, and was marred only by a couple of minor hiccups that were more funny than sad.

That is to say, mk. 2 is entirely in keeping with my usual baseline, and I’m happy to have it out there.  In the end, I hope more people see it than the first webcast I did.  In any case, I’m glad to have gotten back on the horse and hopefully redeemed myself by some measure.

‘Clojure Programming’ book finished

Yes — it’s finished! :-D

Early last month, after writing 190,000 words, editing away scads more, assembling and testing more than 1,000 code snippets and 20 full sample projects, and conceptualizing dozens of illustrations, Christophe, Brian, and I declared Clojure Programming done.  It’s been writhing its way through O’Reilly’s editorial process ever since.

I’d hoped that the book would be published before Clojure/West in mid-March, but alas, it was not to be.  It looks like it’ll drop in mid-April.

However, fret not! If you want to dig into Clojure Programming right away, you can read the final draft of it online.  Of course, you can preorder the dead-tree version of it as well; easy links to both options are available at  There, you’ll also find a full table of contents, some basic info on the book, and a way to join the mailing list and a pointer to the book’s Twitter account.  We’ll be pushing various Clojure tips and links to useful tools and resources and announcing the availability of all sorts of book-related content on the site through the mailing list and Twitter feed; and, if things work out as I hope, some early access to and/or special offers for things that will help you get the most out of your Clojure experience in general.

So, thanks for your patience.  I think the book will end up being worth it.  Of course, I have to thank my coauthors; without Brian and Christophe, it simply would never have been finished, nor would it be as good as it is.  There’s a ton of other people that deserve credit too, but you’ll have to buy the book and read the acknowledgements to learn about them…

‘Clojure Programming’ book now available

Update [2011-08-23 18:49 UTC]: The Rough Cut of Clojure Programming has been updated significantly since this post originally went live.  Go check it out. :-)

Some time ago, I announced that I was coauthoring a book on Clojure for O’Reilly (see original announcement).  I’m very happy to report that an early and incomplete version of Clojure Programming is now available in Rough Cuts.

Rough Cuts is O’Reilly’s early-access program, similar to Manning’s MEAP.  By purchasing it now, you will be able to read the ebook via Safari as it progresses through its final stages, and leave feedback that we will take into account through that process.  Please make use of the comment/feedback facility on the book’s Safari page; we are eager to hear what you have to say about the book — though personally, I vacillate between hoping you’ll be gentle and hoping you’ll be brutal.

What’s in the first Rough Cut is actually the state of the book from about two months ago.  I dropped the ball on giving the final word to our editor to go ahead with the release, so I’m afraid you’re all getting this much later than you could (and should) have.  On the upside, there’s a lot of content queued up to be added to the Rough Cut, so you’ll be seeing new stuff stream in very rapidly from here on out.

I do want to apologize about (inadvertently) maintaining radio silence about the book since my original announcement.  Writing the book has ended up overlapping with a very busy time in my life, and I needed to recruit new coauthors mid-stream to boot.  Dave had some killer opportunities that he simply couldn’t turn down; his departure was unfortunate, but it gave me the great opportunity to work with two very well-known figures in the Clojure community:

  • Brian Carper, a stellar writer (I’d been a fan of his blog for some time) and former Ruby hacker (a perspective I wanted to make sure we serviced in the book well)
  • Christophe Grand, the author of a host of popular Clojure libraries such as Enlive, Parsley, and Moustache, and blogger of all things bleeding-edge in Clojure

I’m biased of course, but the book is shaping up to be what I think will be a great introduction to Clojure — especially for those coming from Java, Ruby, and Python — and simply none of it would have been possible if it were not for Brian and Christophe.  Thanks, guys! :-D

Preview and purchase the book: Clojure Programming

P.S. I just want to take a moment to let it settle in that, yes, O’Reilly is publishing a Lisp book, despite their explicitly discouraging Lisp topics in their book proposal guidelines.  (Sorry guys, a single friendly needling is warranted. ;-)) I know it’s not an old concept (they accepted our proposal, after all, and then there was the sadly ill-fated Lisp: Out of the Box), but now the bits are flowing, orders are being taken, and it can’t get much more official. Happy days indeed.

“Clojure Programming”, the book

Update: Clojure Programming is now available!

I’m very happy to announce that I and Dave Fayram (formerly of Powerset and Microsoft, and now of BankSimple) have recently committed to writing a book on Clojure, tentatively titled “Clojure Programming”, to be published by O’Reilly Media.

This is pretty significant news for me, but likely also for the broader Clojure community.  Having another Clojure book on the shelves is always a Good Thing™, even better if it’s from O’Reilly, the granddaddy of modern technology publishers.  That imprimatur will do nothing but help Clojure gain exposure, and perhaps in circles as yet unaware of the language.

I think the fabulous growth of the community and the (apparent) success of the other books out there have already made it clear that Clojure is here to stay as a serious language, more than ready for use by a broad population of programmers in real, production systems.  Dave and I are just thrilled that we have the opportunity to introduce the language, its facilities, and its general approach to the next wave or two of Clojure programmers.

I’m a better programmer and a better person for having wandered into #clojure in early 2008, and I’m incredibly grateful to have had the opportunity to meet and know the array of wonderful people that have gathered around the language.  I’m hoping this will prove to be an opportunity for me to give back to the Clojure community as it has given to me.

Quickie FAQs

What will be the target audience, table of contents, publication date, &c?

At this point, writing has only recently begun, so there’s much to do and it would be foolish to discuss any specifics.  But, I’m excited, Dave’s excited, and I thought others might be too.

How will this affect Snowtide and Docuharvest?

It won’t.  Development of both PDFTextStream and Docuharvest will continue apace, if not accelerate over the coming months.

That’s all for now.  Wish us luck!