This weekend in the Intertweets (Feb 7th Ed)

  • Saving #Incanter charts as PDF documents (here, via @liebke) — Title says it all. Now you can save your nifty charts to a PDF file. It is a real vector-based PDF to boot, not a rasterized one, so the charts in the PDF file scale nicely.
  • Dark theme for #Incanter charts (here, via @liebke) — Apparently where David Liebke lives there are no weekends, only weekdays, so he keeps improving his Incanter project.
  • Take a look at the proposed Rohner Arrow (here, via @fulldisclojure) — Awesome macro that lets you …er, just take a look at the code snippet below:
user=> (macroexpand-all '(->r c (+ _ 32) (* 1.8 _)))
(* 1.8 (+ c 32))
  • Want to play with a clojure CLR REPL and don’t want to compile it yourself? I’ve made a crude installer (here, via @paulbatum) — Clicking the link will prompt your browser to download said installer. I have not tested it, since I do not have a Windows machine.
  • I just released some updates to CLJENV. If you didn’t know, it’s like virtualenv for Clojure (here, via @offbytwo) — Lets you work (on Unix) with different Clojure environments, and be able to switch between them easily. “CLJENV includes clojure and contrib 1.1, slime, clojure-mode and swank-clojure. Also, a clojure script that does what you expect.”
  • rewrote clojure-json encoder using clojure 1.2 protocols, more than 2x speedup for same functionality. Yay! (via @danlarkin) — Great anecdotal evidence that that the new protocol addition was a good decision.
  • Mu: Google AI Challenge in Clojure (here, via @jneira) — Google sponsors an AI Challenge with the University of Waterloo to create the smartest ‘tron’ player. The author provides a clojure version of the ’starter-package’ that Google has made available for the challengers. Below is a video of a few ‘tron’ AI players playing. Happy hacking!!!

Want to meet-up with fellow Clojurers/istas/ians? Here are the new options announced this weekend:

  • Mon Feb 7th @ 7pm in Singapore: slides ready, now to practice a few times & go over the code before Monday (here, via @mmazur)
  • Wed Feb 10th @ 7.30pm in Amsterdam: Amsterdam Clojurians: Meetup next Wednesday? (here, via @neotyk)
  • Thu Feb 11th @ 7pm in Seattle, WA: Seattle Clojure meeting will be on the 11th (Thurs) at 7pm at U-district @zokacoffee.  Swing on by! (here, via @technomancy)

    Today in the Intertweets (Feb 4th Ed)

    This post should have been titled “Today in the Intertweets, the LOST edition” since the last season of LOST started airing yesterday and, coincidentally, the number of noteworthy tweets about clojure today has dropped sharply. Since I cannot imply causation with the data at hand, I’ll just say that the data shows how most of the Clojurians/ers/istas are hooked on the show ‘LOST’. Oh well!

    All is not lost though; here it is the catch of the day:

    • New Event National Capital Area Clojure Users Group February Meetup (here, via @dctechevents) — If you’re around Reston, VA on February 18, don’t miss out on this meetup!
    • Just posted a set on installing #clojure on #windows (here, via @fulldisclojure) — If you are a Clojure newbie, this is for you! Sean Devlin (@fulldisclojure) has published a series of short screencasts on installing Clojure on Windows in the following ways: command-line only, Netbeans+Enclojure, Eclipse+counterclockwise and  ClojureBox. Don’t miss out on the background music while you’re watching the videos…
    • Blogged about list-comprehension (here, via @LauJensen) — Following the structure of a recent article on Scala’s ‘for’ construct as a way to perform list comprehension, Lau Jensen has attempted to provide the same functionality in Clojure. The proposed Clojure versions of the Scala snippets seem overall simpler.

    Today in the Intertweets (Feb 3rd Ed)

    • Controlling run-away trains, onions, and exercise bikes (here, via @chrishouser) — Under this cryptic title there is an article full of REPL wisdom. What to do if you somehow print an infinite sequence at the REPL? What if it is an infinitely recursive sequence? What if you called a function that will take forever to terminate?. Find the answers to these questions in this article.
    • how Ring, the Clojure web application library, go its name (here, via @mmcgrana) — You actually have to squint with your eyes and stare at the picture for 10 minutes, and then you’ll see a ring!
    • Just published a quick walkthrough of pulling and using an R package from Clojure/Incanter (here, via @jolby) — After a few tweets about Rincanter, a binding for Incanter (based on Clojure) to the R Language for statistical computing, Joel Boehland produces this introduction to this new project.
    • Discussion on session handling in ring, a #clojure web app lib (here, via @wmacgyver) — Ring is about to get session support and his author (@mmcgrana) is asking which way to go: mutable or immutable sessions?  If you develop web apps with Clojure now it is your chance to weigh in!

    Today in the Intertweets (Feb 2nd Ed)

    • #Clutch autodoc website now up (here, via @ashafa) — It’s nice to see @tomfaulhaber’s autodoc being used more and more in clojure projects :)
    • (upvote? (= Etch-A-Sketch (reduce + ‘(Arduino Clojure)))) (here, via @redditspammor) — An etch-a-sketch built on Clojure controlled by an arduino board. Yet another very creative (and short) project from nakkaya.com

      Clojure+Arduino Etch-a-sketch

      Clojure+Arduino Etch-a-sketch

    • Portable, Cross Platform, Standalone Reddit Clone in 91 lines of Clojure (here, via @LauJensen) — This is about porting a Common Lisp Reddit Clone to Clojure. In this article, along with the code, Lau explores some not-so-subtle differences between CL and Clojure. This is a relatively complex Compojure application, so it is interesting to see how short it is! As a bonus, Lau also adds the steps to deploy this as a portable application using Leiningen.
    • Clojure library coding standards — initial draft (here, via @liebke) — @stuarhalloway proposes a set of conventions for writing Clojure code. The discussion that follows is very enlightening.  Weigh in now before it gets set in stone!!!

    Today in the Intertweets (Feb 1st Ed)

    • Yes but it’s UGLY. No guarantees. (here, via @fulldisclojure) — If you watched the latest screencast from Full Disclojure you might have noticed the nifty inspector that Sean Devlin was using. Well, here is the source code for such inspector.
    • Clojure debug-repl now uses defmacro’s new implicit &env arg (here, via @georgejahad) —  This is an update version of debug-repl that allows you open a debug REPL anywhere in your code so you can debug when the execution reaches the pre-defined point. This version allows you to exit the debugging environment quickly regardless of the level of nesting
    • clojure comojure gzip (here, via @tebeka) — how to write a gzip handler for Compojure that gzips your pages before sending them back to the browser.
    • [...] Clojure pattern matching (here, via @fogus) — This links to a rather old article on a pattern haskell-esque pattern matching library for Clojure, for example:
    ; simple recursive evaluator
    (defn arithmetic [lst]
      (match lst
        v  :when (number? v)  v
        [ _ "error" _]     "error"
        [ _ _ "error"]     "error"
        [ "add" a b ]      (+ (arithmetic a) (arithmetic b))
        [ "sub" a b ]      (- (arithmetic a) (arithmetic b))
        [ "mul" a b ]      (* (arithmetic a) (arithmetic b))
        [ "div" a b ]      (/ (arithmetic a) (arithmetic b))
        [ "squared" a ]    (arithmetic ["mul" (arithmetic a) (arithmetic a)])
        _                  "error" ))