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