Clojure in West Africa, Clojure for Data Scientists, and RH's new 'reducer' library — May 08

CouchDB with ClojureScript, "On Lisp" in Clojure, why would someone learn clojure?, and Clojure/Core roadshow — May 07

NS browser, Robot DSL, nREPL over HTTP, contention in multimethods, and poor performance of Clojure in Hacker News — May 05

RH's keynote at RailsConf on Simplicity, and Neil Ford's talk at JFokus on Clojure — May 02

A FP hater, integration tests with social networks, a Java bytecode compiler, and WIP on persistent queue reader literals — May 01

Help with Lein on Windows, and a new reduce lib in Clojure 1.5 — Apr 30

TCO for Clojure, Equality in Emacs, Python-py using IFn, sneaky-throws, and ClojureWerkz.org is up! — Apr 29

Optimizing Tail Call Optimizations, CLJS compilation pipeline, and calling private functions — Apr 25

vmfest for Virtualbox, Criterium benchmarking, leinjacker for writing lein plugins, and joxa, a clojure-y lang for Erlang's VM — Apr 24

Learn Clojure via the REPL, GSoC clojure project accepted, and RH keynoting at RailsConf 2012 — Apr 23

FingerTrees in cljs, Clojure webcast, typed Clojure, Clojure scripts and "Clojure Programming" book review — Apr 22

Functional Thinking in Clojure, Clojure-py concurrency, LightTable funding, and reader literals — Apr 18

Official Clojure 1.4 announcement, LightTable funding, and serializable functions — Apr 17

A revolutionary IDE in ClojureScript, Clojure 1.4, and much more — Apr 16

Weekly JVM-lang news, Links for Learning Clojure, and Friend: Auth&Auth for Ring — Apr 11

Clojure-py x2, and leiningen creeps into other languages — Apr 10

URL lib, parallel core.logic, the cljs compiler deconstructed, learning clojure, and cljs-clj bi-di comm via http. — Mar 28

Shen in Clojure is < 1K loc, FP Exchange videos , and webrepl plugin for lein2 — Mar 26

C/W summaries, Eclips+CCW+Maven, Preferred Languages, and Continuation Monad. — Mar 25

Prototypes in js, RH's interview, CCW 0.6.0 and lein2 goodies — Mar 22

clj <-> cljs transorms, a repl everywhere, cljs couchDB views, and groovy using the STM — Mar 21

Clojure/West, and much much more! — Mar 20

ClojureScript+Noir template, Lamina rewrite, debuggers rejoice and @chouser at MostlyLazy — Mar 13

Clojure compiled to Scheme compiled to binary, and calling Clojure from Java — Mar 12

Event streams, Leiningen2 preview, Clojars crypto and music composition — Mar 11

Processing in clojure, Marginalia release, and Frinj+Datomic code — Mar 06

Datomic is out, and other things... — Mar 05

  • #datomic has landed! (via @richhickey) —

    The cat is out of the bag. A postmodern deconstruction of a database, based on the new theories of cloud space. Or something like that. It came with a white paper too! Hosted in the cloud, mostly in-memory, you can go back in time, and many more otherwordly features. Also, it’s got Rich Hickey in the #datomic chatroom!

  • cljbin: A Clojure pastebin with code evaluation (via @gf3) —

    An easy way to send a code snippet to someone, but with the added feature of being able to see the results of executing that code.

  • Java EE web apps with Clojure (via @gao_wei) —

    It was a matter of time that Clojure and JEE would be in the same sentence and without negation clauses…

DLSs, Frinj, MCLIDE 2.0a0, explain, a code analyzer, and GATK. — Mar 04

Language detection, Devoxx talk, interviews and Clojure/West unessions — Feb 28

Solr, LLVM, Distributed memoize, futuristic IDE in cljs, aaaand, Datomic! — Feb 27

dosync+, clojure-tools, Engulf, Shen on Clojure, and more — Feb 26

JVM lang popularity polls, Scala vs. Clojure, and CCW+lein — Feb 23

If programming languages were cars... — Feb 22

Lisp on FPGA, a time tracker for OSX, lein precation and a cljs tutorial — Feb 21

Clojure governance, JRuby wrappers, clj+cljs+overtone and much more! — Feb 20

Poll: (Almost) Half Of You Voted For Clojure-in-Clojure

To the question of “What is Rich Hickey going to unveil at Clojure/West?”, the majority of respondents –a 41% – voted for Clojure-in-Clojure (CinC). Roughly half of these voters think work on CinC will start soon, while the other half think that the work is well under way and kept hidden from us.

Clojure for Objective-C/iOS/cocoa was also quite popular at 22%, while 17% of the respondents dodged the question by answering “Something completely unimagined ” boo!

Of note are also the write-ins, which we are listing after the fancy pie chart.

Now don’t forget to register for Clojure/West today, as the prices are going up after this Friday!

Write-in Responses

  • a Clojure-based operating system
  • A debugger!
  • A fix for CLJ-855. Please!?
  • A new project/product written in Clojure
  • Bagwell’s Lock-Free Concurrent Hash Tries
  • Clojure for the Trash-80
  • clojure native compiler
  • Clojure on Android
  • Clojure on Android
  • Clojure on C/C++ runtime
  • Clojure on Parrot VM
  • Clojure on Rails
  • clojure pypy
  • Clojure targeted towards the LLVM
  • Clojure VOIP
  • Clojure-powered nachos
  • Clojure: The Opera
  • ClojureOSX
  • ClojureOSX
  • ClojureOSX
  • ClojureShell
  • core.logic for more compile time analysis / optimization
  • Dead code elimination library for Clojure/ClojureScript
  • full clojure langage available to clojureScript using web workers and others…
  • Get rid of all these annoying vector literals in e.g. (let ), (for ) etc. Also, while there, deprecate -> and -» that’s just a stumbling block for any LISP-savvy and makes functional code look procedural
  • Google/Oracle to acquire Clojure.com/Rich/The world
  • Hickey for President!
  • operating system
  • Optional typing system a la Qi/Shen
  • Pods
  • Scala to Clojure Converter
  • something non-free
  • static typing support :-)
  • The D in ACID
  • they’re opening a hair salon
  • Visual Clojure, a visual basic clone. lolz
  • Whatever. RH should stop adding fancy technologies to the Clojure ecosystem and instead seriously promote Clojure as a viable industrial language otherwise it’ll remain marginal at best.

A clojurey Ring middleware and a ClojureScript cheatsheet — Feb 15

The Great Clojure/West Poll is Here!

6 more videos of Clojure/Conj talks, plus a new nREPL with promise — Feb 14

RH's secret talk at C/W, a clojure-reader in clojure, and Clojure vs. Scala — Feb 13

When last year Rich Hickey said that he would be talking about “something new” at the NYC Clojure Users Group meetup, disclojure ran a fun poll about what people thought the ‘new thing’ would be.

Last week Clojure/West (register now) tweeted the following “Rich Hickey swore me to secrecy today about what he’s been working on and will discuss at Clojure/West. It’s big.”. This means it’s time for another poll.

Please send your proposed options for the poll today! (Either by tweeting the option cc/@disclojure, or in the comments section in this post)

Find the intertweets below…

Clojure in Python or PyPy, monads, techno and much more! — Feb 12

Lots of cool stuff today, so I tried to be brief.

CCW 0.6 beta, introducing a new language at work, and Rich Hickey's best kept secret — Feb 09

TDD, Clojure in Tiobe 100, gov.uk and 'do' monad — Feb 08

In the process of building disclojure 2.0 ...

All,

This recent lack of intertweets posts that has got you wondering if the Clojure world has stopped to a halt –it hasn’t– is caused by me moving disclojure from WordPress to a better blogging service, for some definition of ‘better’.

During this process I am also getting rid of the early 2000’s look and feel and moving to something more horrible; the old UI was probably built by a web designer and the new one is built by me, and I can’t design. It will (should) look better on small screens, like iPhones and such, although I can only test with iPhone.

The big design change is that the home page now only contains the latest post. Who cares about yesterday, right? Well, if you do, then “latest” contains the latest posts, and then there is the Archive.

The new site is built on jekyll and backed by github, so yeah, you’ll be able to fork the site and send a patch my way whenever my fat fingers screw something up, and even submit content of your own!

Feel free to check out the work-in-progress version of the new disclojure at http://disclojure.github.com. If you are using any post-paleolitic version of IE or an Android phone, please let me know if it is totally broken. If it is indeed broken, I’ll just blame the guys at Twitter that built twitter bootstrap, which is supposed to handle IE and Android.

I am really excited about the collaborative nature of the new site, and I have great ideas of what can be done with it. I will share them soon.

Cheers!

PS: The comments might get lost during the migration, unless I find a way to port them to Disqus. The issue is that the export functionality in my WordPress setup is broken…

PS2: None of this matters to you if you are reading disclojure via an RSS feed reader. Or does it? Because chances are your RSS feed will see a bunch of new posts that are not new at all…

Today in the Intertweets (Feb 2nd Ed)

Today in the Intertweets (Feb 1st Ed)

Today in the Intertweets (Jan 31st Ed)

Today in the Intertweets (Jan 30th Ed)

Today in the Intertweets (Jan 26th Ed)

Today in the Intertweets (Jan 25th Ed)

Today in the Intertweets (Jan 24th Ed)

Today in the Intertweets (Jan 23rd Ed)

  • Searching for functions you can't quite remember w/ #clojure's apropos (via @sritchie09) -- This is one of those very useful but often forgotten functions in clojure. Now, if someone could come up with a similar function that knows what I mean and not what I say...
  • Done! @ClojureBook is complete, and is now "in production". Safari Rough Cuts update coming soon, action on clojurebook.com &c. :-D (via @cemerick) -- Congrats!!!

This weekend in the Intertweets (Jan 23rd Ed)

Today in the Intertweets (Jan 19th Ed)

Today in the Intertweets (Jan 17th Ed)

Today in the Intertweets (Jan 16th Ed)

  • ClojureScript One screencast (@stuartsierra) --- Ooooo! ClojureScript One now comes with a nifty screencast! Look's like we've come a long way in terms of tooling for ClojureScript, which is a very very good thing in my book. Be careful though, since watching this video may result in sleepless nights of coding...
  • Using Hadoop and HBase with Clojure (via @hnfirehose) -- This tweet has a high buzzword/word ratio, and for a good reason: it explains how to build a log analyzer that can quickly deal with gigabytes of logs, all in Clojure.

This weekend in the Intertweets (Jan 15th Ed)

Today in the Intertweets (Jan 12th Ed)

Today in the Intertweets (Jan 11th Ed)

Today in the Intertweets (Jan 10th Ed)

Today in the Intertweets (Dec 21st Ed.)

Today in the Intertweets (Dec 19th Ed)

This weekend in the Intertweets (Dec 18th Ed)

Phew! That was a long post. Keep it up guys!

Today in the Intertweets (Dec 15th Ed)

Today in the Intertweets (Dec 14th Ed)

  • Emblogginated: core.memoize v0.5.1 (via @fogus) -- Clojure Contrib gains another pair of libraries: core.memoize and core.cache. Core.memoize extends clojure's memoize to allow arbitrary backends, which you probably want to build using core.cache.
  • Getting started with Clojure and Libvirt, Part 1 (via @planetclojure) -- A first of a series of articles about interacting with Libvirt, a wrapper around most (all?) virtualization systems (think VMWare or Xen)

Today in the Intertweets (Dec 13th Ed)

  • /me adds "mastering Clojure" to it's todo list...(via @ToJans) -- "The Sapir-Whorf hypothesis tells us that our view of the world is strongly affected by the languages we use." With this concept, Bob Martin theorizes that we will (have to) move on from programming languages that are closely tied to computers to more abstract languages--like Clojure: "It’s a different mode of expression, and it makes you see concepts that are difficult, if not impossible, to conceive of in Java, or C". Interesting and thought provoking read. Must.
  • Emblogginated "(take 6 carin-meier)" (via @fogus) -- Interview with Carin Meier, both a rubyist and a clojurian and quite involved with the community, she offers some insights on the differences and similarities of both communities, and a new programming paradigm: "coding moccasins"
  • This is the #Clojure documentation I've always wanted #typed-clojure (via @ambrosebs) -- As @fogus said: "It's not that Clojure programmers denounced static typing. It's just that no one had written the library yet.". Indeed. This is a draft of what an initial typing system would look for Clojure.

This weekend in the Intertweets (Dec 11th Ed)

  • Converted Common Lisp and Java code for my SAAS to 100% Clojure. Some info: (via @mark_l_watson) -- Known author Mark Watson decided to ditch a Common Lisp + Java implementation of a NLP+AI+SemWeb service and rewrite it instead in Clojure. I here encourage (demand?) the author to blog about the experience.
  • Ring 1.0.0 Released (via @planetclojure) -- This is bigger than when GMail went out of beta. Congrats Mark and James!
  • A Leiningen dependency-tree "hello world" (via @cemerick) -- A lot of changes are going into Leiningen 2.0 these days, furious development it seems. What we can see here is the kernel of a feature to see all the dependency tree of a project from Leiningen itself without having to drop to Maven (ugh!), although this code is using aether, which is part of Maven.
  • Rich Hickey will be speaking at Clojure/West (via @ClojureWest) -- Very very nice!
  • introducing knockbox (via @reiddraper) -- "It’s a library meant to make dealing with conflict-resolution in eventually-consistent databases easier. If you’re not familiar with eventual-consistency, I’d suggest this article by Amazon CTO Werner Vogels [...] Distributed databases like Riak let you trade consistency for availability." This is actually one of the main pain points of highly scalable databases, no? Interesting work.

Today in the Intertweets (Dec 7th Ed)

Today in the Intertweets (Dec 6th Ed)

Today in the Intertweets (Dec 5th Ed)

This weekend in the Intertweets (Dec 4th Ed)

(Includes last Thursday)

Today in the Intertweets (Nov 30th Ed)

  • Clojure & Complexity (via @planet_lisp) -- Yesterday it was Scala that got a private-turned-public beating, and today it's Clojure-bashing day, it seems. A decent summary would be "Clojure is not Common Lisp" and "we don't need Clojure, we can do everything in Common Lisp".
  • Hey I made a thing to make configuration of functions easier, try messing around with it (via @holy_chao) -- Fidjet is the name of the project, and "If you write a core API where functions accept some config parameter as their first argument, you can then create a parallel namespace where those same functions can be used in a with-config block."

Today in the Intertweets (Nov 29th Ed)

Today in the Intertweets (Nov 28th Ed)

This weekend in the Intertweets (Nov 27th Ed)

  • Great writeup of what went on at the Clojure conference earlier this month! (via @staypufd) -- This should whet your appetite if you didn't make it this year, and also prompt you to start planning for Clojure/West today. During disclojure's prologued absence from the intertweets the Conj organizers also put together some detailed reviews of how it went: (second conj) and UnConj.
  • The Clojure Community and Me (via @IORayne) -- Anthony Grimes (IORayne) writes about how he got into programming and his experiences with both Conj 2010 and Conj 2011. It is hard to summarize this post, and it says nice things about the Clojure community, so go and read it presto!

Today in the Intertweets (Nov 14th Ed)

This weekend in the Intertweets (Nov 6th Ed)

This weekend in the Intertweets (Oct 30th Ed)

Today in the Intertweets (Oct 27th Ed)

  • Path Finding using Rapidly-Exploring Random Tree (via @chlalanne) -- "A Rapidly-exploring random tree (RRT) is a data structure and algorithm designed for efficiently searching nonconvex, high-dimensional search spaces. The tree is constructed in such a way that any sample in the space is added by connecting it to the closest sample already in the tree."
  • JVM? Top 4: Scala 74.8% Clojure 46.2% Groovy 28.9 JRuby 25.5% Take the survey (via @pageman) -- Take the survey, it's very short. At the time of writing this Clojure was at 39%, Groovy at 45% and Scala at 62%.
  • Blogged: Getting Started with Clojure-clr (a very *brief* intro) (via @rippinrobr) -- Short and sweet, enough to get you going quickly with Clojure and MS/.NET

Today in the Intertweets (Oct 26th Ed)

Today in the Intertweets (Oct 25th Ed)

Today in the Intertweets (Oct 20th Ed)

Today in the Intertweets (Oct 19th Ed)

(Ed. Note: this is for yesterday)

Today in the Intertweets (Oct 18th Ed)

  • Emblogginated: "Programming language development: the past 5 years" (via @fogus) -- If you are a language geek (chances are you that you are), then you might enjoy this post about new languages that appeared in the last 5 years. I myself might want to try Shen...

Today in the Intertweets (Oct 17th Ed)

  • I just wrote a Clojure library for the Wunderground @WeatherAPI! (via @IORayne) -- Cool, now I won't even need to look through the window to know what the weather is like, I can get that info straight from the REPL!
  • À la carte configuration in Clojure APIs (via @cemerick) -- Hmm... this is interesting. Noticed that every time you use some library against a server/service, the library follows one of these two approach: either you pass a session at each request, or the session is set via a binding (e.g. with-session). You might not like the option chosen by the library maker, but you have no recourse. This article is about how to have your cake and eat it too.

This weekend in the Intertweets (Oct 16th Ed)

Today in the Intertweets (Oct 13th Ed)

Today in the Intertweets (Oct 12th Ed)

Today in the Intertweets (Oct 11th Ed)

Today in the Intertweets (Oct 10th Ed)

Today in the Intertweets (Oct 5th Ed)

This weekend in the Intertweets (Oct 2nd Ed)

Today in the Intertweets (Sept 29th Ed)

Today in the Intertweets (Sept 28th Ed)

Nothing to see here (again). I expect a plethora announcements of new librares and tools in exactly 9 months, since it seems everyone is pretty busy conceiving those projects...

Today in the Intertweets (Sept 27th Ed)

This post is intentionally left blank.

Today in the Intertweets (Sept 27nd Ed)

  • ClojureScript browser-connected REPL (video) (via @devstonez) Brenton Ashworth shows how to use the new ClojureScript browser-connected REPL and interact with the TwitterBuzz demo app. It only requires a few tweaks to the app and you are up and running.

This weekend in the Intertweets (Sept 25th Ed)

Today in the Intertweets (Sept 22nd Ed)

Today in the Intertweets (Sept 21st Ed)

(Covers from Monday until today...)

This (past) weekend in the Intertweets (Sept 18th Ed)

(Better late than never, they say)

Today in the Intertweets (Sept 14th Ed)

Today in the Intertweets (Sept 13th Ed)

Today in the Intertweets (Sept 12th Ed.)

This weekend in the Intertweets (Sept 11th Ed)

  • "How to learn Clojure effectively" (my short talk at @cljugb converted into text) (via @fronx) -- This advice comes from someone that came to Clojure from Ruby, and offers a sensitive learning path.
  • #ClojureScript has a new REPL. Use Rhino or the browser for evaluation. Or bring your own E and write a new evaluator. (via @brentonashworth) -- Well, it looks like the new cljs REPL is here (or at least, committed to the cljs repo). The linked documentation provides examples of how it can be used.
  • Writing Tetris in Clojure (via @unlog1c) -- A step-by-step guide for writing a Swing version of Tetris in Clojure.
  • Nice. Azure Launch Pad making it easy to run java/c/c++/clojure/lisp/delphi/ruby on rails in azure (via @thiago_bagua) -- At first I thought this was referring to those massive-parallel JVM chips, but it turns out his refers to Microsoft's Cloud. Azul != Azure, go figure!, but interesting nonetheless.
  • #emacs support for running a #ClojureScript REPL against the browser? Yes, please. (via @rubbish) -- Looks like swank-clojure is about to get proper cljs REPL support. Woo hoo!

Today in the Intertweets (Sept 7th Ed)

  • Clojure compiler targeting Node.js (via @eBayPlatform) -- This is a very detailed article on how to use ClojureScript in NodeJS.
  • Clojure just came to CodeMirror (via @codemirror) -- CodeMirror is a JavaScript in-browser editor that now supports Clojure code editing.
  • Working on transparent error msg for defn and fn. I bet you can't break it (via @ambrosebs) -- If it's so transparent, does it mean that no one will see the error messages? ;) This is a patch for some meaningful error reporting in clojure, related to 'defn' and 'fn' (as opposed to a large stack trace telling you that it can't convert an Integer to an ISeq or something like that)
  • 11 new speakers added to http://clojure-conj.org/#speakers Not enough room to list them all here. Please visit the site for the full list. (via @clojure_conj) -- Now that we have speakers, does it mean that we also have talks? and if so, where?
  • #clojure and the web by @glv . Classy as ususal (via @patterngazer) -- This is a talk given recently at QCon. A little bit of clojure, sprinkled with ring, compojure, enlive and other usual suspects.

Today in the Intertweets (Sept 6th Ed)

Today in the Intertweets (Sept 5th Ed)

This weekend in the Intertweets (Sept 4th Ed)

Today in the Intertweets (Sept 1st Ed)

  • put some clj-esper code out this morning , blogged a little too. clojure wrapper for esper cep (via @pingles) -- Esper is a event processing framework, and this library wraps it.
  • "Clojure: LISP Reincarnated on the JVM" (my slides from @dublinGTUG on 30th Aug 2011) (via @kevin_noonan) -- This is a pragmatic clojure bootcamp program summarized to a few slides; installation, tools, language and further references.
    • @kevin_noonan, "Clojure is outmatched for Web-development" REALLY?! (via @myfreeweb) -- Oh, look at what I've found! A new clojure web framework :) Ringfinger is a no-sql-based web framework, very different from what you usually see in the world of web frameworks.

Today in the Intertweets (Aug 31st Ed)

  • It took 2 very long nights, but I managed to create a Finagle adapter for Clojure's Ring library (via @sprsquish) -- Finagle is a "fault tolerant, protocol-agnostic RPC system" developed and open sourced by Twitter.
  • Optimising Clojure (via @andrew_cooke) -- An account of the author's experiences in trying to optimize some clojure code. Some good tips on how to use profiling.
  • Welcome the newest Clojure/conj sponsor @github. They're helping us throw an awesome 11/11/11 party! Don't miss out. (via @clojure_conj) -- A party!? I don't go to any of them parties!
  • Clojure: Unfold and Anamorphisms (via @crxor) -- Unfold seems like a very useful higher-order function (you know you're in trouble when the wikipedia article has a note saying the "article may be too technical for most readers to understand"). This article describes the uses of it in Clojure, along with its implementation.
  • how to set up on-demand http proxy in Amazon cloud, using #Clojure and #Pallet (via @drcabana) -- Pallet is an infrastructure automation library built in Cojure. This article describes how to automatically set up a proxy in the cloud and do useful things with it. (disclosure: I have every interest in Pallet taking over the world)

Today in the Intertweets (Aug 30th Ed)

Nothing to see here. Move along... and tweet harder!

Today in the Intertweets (Aug 29th Ed)

This weekend in the Intertweets (Aug 28th Ed)

Today in the Intertweets (Aug 26 Ed)

  • Just blogged a little something on Clojure, Abstractions and ZeroMQ (via @pingles) -- What would happen if you applied the Ring-style abstractions to ZeroMQ?
  • Import * for Clojure (via @maclausen) -- Finally an import for Java classes that imports all classes in a package (and removes them too!)
  • PyPy 1.6 Released. Kickass Panda. This is a really really fast runtime. My benchmarking updated (via @dnene) -- The article this tweet refers to is a benchmark between many languages, one of them being Clojure. It looks like the benchmark results have been updated for clojure including a version of the solution that is fully optimized (and much faster than the one originally benchmarked), putting Clojure as one of the fastest languages. Oh, and PyPy is very fast!

Today in the Intertweets (Aug 24th Ed)

Today in the Intertweets (Aug 23rd Ed)

Today in the Intertweets (Aug 22nd Late Ed)

  • Regex pattern-matching in 15 lines (here via @swannodette). The hits keep on coming from David Nolen.
  • Solving the mapping dilemma (here via @swannodette). David Nolen explains how working with the match library he got the level of abstraction exactly right, and produced super fast code in the process.
  • Briefly, the “arity-reduce” pattern in Clojure (here via @maclausen). Dave Ray shows how using multiple arieties in your functions results in cleaner code.
  • Clj-watch (here via @maclausen). Small script that auto-compiles your ClojureScript files upon changes.

Today in the Intertweets (Aug 22nd Ed)

This weekend in the Intertweets (Aug 21st Ed)

  • Conways's Game of Life in#Clojure (via @cgrand) -- It's a little bit longer than the APL version, but it will do.
  • Insight news: #Java is now available in private beta on #Heroku #Cedar. Expected, it already has JVM stack (via @ildella) -- First comes Clojure and then comes Java? Interesting...
  • Lobos is a Clojure library to supports migrations similar to what Rails can do (via @eldariof) -- This article is a short introduction to Lobos and also some discussion on how to make it work in Heroku.
  • I noticed something about Clojure code (via @darevay) -- An article on how structural induction is used in many places in Clojure's sources to deal with undetermined numbers of parameters in functions. Apparently this is use of structural induction is called  a catamorphism.
  • After struggling for days with #scala on getting things right with #mongo, cheated and had #clojure do it in a few hours. confused feelings! (via @jaju) -- Should we coin an idiom to express the coming out of the Clojure closet?

Today in the Intertweets (Aug 18th Ed)

NOTE: I am tweaking a little bit how the links in tweets are presented. I am disobeying a little bit the W3C rules in order to make it clearer what the principal link is (the one referenced in the original tweet) versus other links that I add as background info. The full content of the original tweet is now a link. Thanks for the feedback and let me know how you like it!

Today in the Intertweets (Aug 17th Ed)

  • Good info on PaaS offerings from a language support perspective (Ruby, Java, Clojure) (via @geoffmerrick) -- This article reflects that we're are in a time in which so-called esoteric programming languages are becoming mainstream, and so is the acceptance that applications will use more than one language. The Platform as a Service providers are acknowledge this trend.

Today in the Intertweets (Aug 16th Ed)

  • The New #Clojure Contrib (via @stuartsierra) -- All the new modular clojure contrib projects in one place.
  • In time for the Times Open talk, CoffeeScript just passed Clojure in language popularity on GitHub (sorry, @swannodette) ... next up: Scala. (via @jashkenas) -- CoffeeScript suxx0r! Kidding. I really like CoffeeScript :)
  • Interesting article I helped to review: "Why I love Lisp" by @pupeno (via @grrrisu) -- It is generally hard to explain to someone that never tried lisp why lisp is a different kind of language. This article does a very good job at it.
  • Yay, #clojure (via @yawmark) -- A well though out explanation of why so many are so excited about Clojure (spoiler: the JVM with its mature libs).
  • Joy of #Clojure was a finalist for a Jolt award. We were up against some tough competition and came up just short :) (via @fogus) -- Not bad to be in the same ranking position with Donald Knuth! 99.99999999995% of the mortals will never get there...

Today in the Intertweets (Aug 15th Ed)

  • Clojure and Map abuse (via @pcalcado) -- Although using maps as abstractions provides a lot of flexibility, it comes with its own set of perils.
  • How to defn a function from string in Clojure? - Stack Overflow (via @Sunng) -- Just check out the many ways to skin this cat, and then think about for how many languages the answer would be "You can't".
  • Revelytix releases Rex (rules) and Spinner (federation) semantic web products. (shh: all written in Clojure) (via @puredanger) -- "Together Spinner and Rex enable a paradigm shift in enterprise information management. Combining enterprise knowledge with enterprise data will make any enterprise better than it is today." It's good to see commercial products built on Clojure too.
  • Performance: Languages, styles & VMs. Java, Scala, Python, Erlang, Clojure, Ruby, Groovy, Javascript (via @dnene) -- This is definitely not in my list of things to do before I die: compare the performance of two languages. This is only for the brave (o the crazy, or are those words synonym?) This post has already been somewhat contested, and the clojure numbers in the article have been updated significantly (spoiler: clojure is very slow compared to Java and Scala)
  • Yesterday I stumbled across this clojure mailing list thread about libraries. Seems like a simpler time long ago :) (via @darevay) -- Ah! Those were the times... wait, this is only 2.5 years old!

Today in the Intertweets (Aug 14th Ed)

  • A post on my trevails with gen-class and proxy for subclassing in #clojure yesterday (via @puredanger) -- "I ran into (not for the first time) some issues around subclassing an abstract class and properly overriding a method from the parent class. For my own future sanity (and perhaps yours dear reader), I thought I’d collect a few links and an example or two here." Evernoted. It's not a question of whether this post will become handy, but when. The solution is not obvious.
  • A bit of protocol (via @planetclojure)  -- This post will interest to clojurians that come from Ruby, and relates how Ruby and Clojure can open and extend an existing class (that we don't own). The Clojure solution is using Protocols.
  • Brand new! Dorothy: build and render Graphviz graphs from the comfort of #Clojure (via @darevay) -- Very cool, create Graphviz diagrams with a hiccup-style DSL.
  • Screencast demo of Clojurecraft -- a framework for writing Minecraft bots in Clojure for the #minecraft addicts out there (via @svdberg) -- Title says it all. Fun to watch.
  • examples of using clojure + clojurescript spring up everywhere, this one shows the basics (via @pyr) -- The basics of AJAX communication between a ClojureScript client and a Clojure server.  Another keeper.
  • Emblogginated: "Perlis Languages" (via @fogus) -- Alan Perlis said that "A language that doesn’t affect the way you think about programming is not worth knowing."  Michael Fogus compiles in this excellent article a list of the other languages that you should be learning to expand your programming abilities in unexpected ways.

Today in the Intertweets (Aug 11th Ed)

  • Abstracts sent for @clojure_conj. Have you sent yours yet? No? What are you waiting for? CFP closes 8/19 (via @cemerick) -- That reminds me... I gotta go write some abstracts.
  • #Noir gets AppEngine support in the latest snapshot (via @ibdknox) -- Noir is a web development framework built on top of our well known Clojure web libraries, for which it provides some glue to make web development even easier. Soon it will make it also easy to deploy those webapps on Google AppEngine.
  • @richhickey helped fund SBCL, somebody's feeling confident :) Thank you on the lisp communitys behalf (via @pavelpenev) -- Or maybe he's hedging his bets ;) It is indeed a nice gesture.

Today in the intertweets (Aug 10th Ed)

NOTE: By overwhelming popular request (well, a suggestion by a single individual...) I am trying a new way of linking referred articles/pages in each tweet report, following a W3C recommendation. This change should let clojurians suffering of musophobia easily click on the links (i.e. they browse with the keyboard, not the rodent). Not sure sure I can fully follow these recommendations since they seem geared towards calls to action, which most tweets are not, but I'll try for a while and see how it goes, or better, you tell me how it goes! Keep the suggestions coming!

Today in the Intertweets (Aug 9th Ed)

  • Friday Update 1.1, blog.thinkrelevance.com! (here, via @jondistad) --  Relevance peeps spend Fridays working on OS project. Currently they are working on an in-browser REPL for ClojureScript (similar to brepl) and on cogito (ergo sum?!), a clojure implementation of System-Z+, a probabilistic reasoner (can we call the AI nuclear winter over now?) Oh, and don't miss the beautiful use of marginalia in the cogito code; when I grow up, I want my code to look like this!
  • The Naming of Namespaces (here, via @planetclojure) -- Stuart Sierra provides some ideas on how to divide your functions into name spaces -- that is, if you have to, since most times you don't have to.
  • In-browser debugging of code that compiles into javascript such as CoffeeScript and clojure (here, via @iryanmeyer ) -- The Mozilla and Webkit guys are working on a JavaScript debugger --for the browsers using their technologies-- that will work with languages that compile to JS, like CoffeeScript or ClojureScript (just got RSI from typing those two names). Sounds like great news!
  • Optimized pattern matching and predicate dispatch for Clojure (here, via @ajlopez) -- Yesterday we showed some snipped of the power of 'match', @swannodette's pattern matching lib. This is the lib.
  • Presentation: Clojure: The Art of Abstraction (here, via @javameme) -- This is a video with slides of Alex Miller's talk at Code PaLOUsa on how useful clojure's abstractions are. Very good talk if you want to get your friend/coworker/non-pointy-haired-boss to try Clojure.
  • One Night With Clojure Makes a Scala Guy Humble (here, via @wfaler) -- "Oh, and my new Clojure app went into production the same day I started writing it.". The author rewrote an application in Clojure that he had previously written in Java and then in Scala, and provides his thoughts on his move to Clojure. (Spoiler: he likes Clojure)
  • Twitter explaining why they're moving from the Ruby MRI to the JVM, Java, Scala and Clojure (here, via @jovoordeckers) -- This is the talk at OSCON this year in which Twitter engineers explained why and how they moved from Ruby to the JVM, and how they use different JVM languages for different projects.

Today in the Intertweets (Aug 8th Ed)

  • 600 lines of code and 1 macro gives us extensible pattern matching (here via @swanodette). When David writes "us" he means that "us" gets to benefit, not that "us" could write extensible pattern matching in 600 lines + one macro (my assessment, not his).
  • The Google Closure Tutorial translated to ClojureScript (here via @maclausen). The original is here.

This weekend in the Intertweets (Aug 7th Ed)

  • MaxMSP and Clojure - together at last! as groundwork for our workshop at Cycling '74 Expo (here and here, via @cassieldotcom) -- This one goes close to my heart. Max/MSP is a platform for creating all kind of musical, visual, sensorial and kinetic performances. There are no limits to what you can do with it right now, but with Clojure, I bet you'll do even more! The author will be putting together a workshop on this too.
  • Building generic wrappers in clojure (here, via @pyr) -- This article explains how wrappers like the ones found in Ring came to be and why they are so flexible.
  • "We are programmed just to do... Clojure code that's on a queue." (here, via @technomancy) -- "Die roboter" is a world domination plan using robots that execute, on many remote machines, clojure code sent by their overlord. Or something like that. See them in action here (Note: the tweet's author provided a link that didn't work, so I put one myself, which I think will show more or less the same)
  • You can now request FPish author invites - http://fpish.net/ #fsharp #scala #clojure #ml #ocaml #lisp #erlang #haskell #functional (here, via @fpishnet) -- "FPhish (ponounced as "fish") is a community-driven repository of functional programming events and learning material", and they're just starting.
  • Brand new, high performance, clojure based twitter api --now all your tweets are belong to us! ! ! (here, via @clojure_mexico) -- Except the ones that mention "clojure": those belong to me, muahahah! This new twitter client leverages @neotyk's async http client library.
  • Hi guys, I made a Haskell to Clojure translator. Check it out :D (here, via @reddit_haskell) -- Interesting that you would do this. (NOTE: The link accompanying the tweet is broken, so I supplied one of my own. I hope is correct). A quick glance to the tests makes it look like there is some ground covered.
  • Configuring logging for Clojure applications (here, via @yueliufeeds) -- This article explains some of the cool performance features of clojure.tools.logging and introduces a new library --clj-logging-config-- that allows you to configure your loggers dynamically. This library currently deals with log4j and  j.u.logging,  and provides an abstraction over the two of them that makes configuring your logging infrastructure a piece of (clojure) cake.
  • Porting the Hiccup #clojure HTML generation library to #clojurescript (here, via @teropa) -- This library is hiccup's counterpart for ClojureScript, and it lets you create HTML directly on the browser itself, with the idea of providing a more clojuresque alternative to Closure Templates. (Word has it that there is also another effort in a similar direction by Noir's author @ibdknox UPDATE: I guess it is public now?)

Today in the Intertweets (Aug 4th Ed)

  • Most Basic ClojureScript GUI (here, via @devstonez) -- Step by step guide on using Google Closure Lib's GUI from ClojureScript.
  • Parsley, now with a modicum of documentation. No release though. (here, via @cgrand) -- Parlsey is a parser generator library for Clojure that has some interesting runtime characteristics, one of them being that it is incremental (very useful for code editors, for example.)
  • Twitter Engineering talks about Storm (here, via @swannodette) -- Since Twitter acquired Backtype (authors of Cascalog) now they have in their hands a ton of clojure goodies. One of them is the upcoming real-time map-reduce-style computation engine by @nathanmarz, named Storm. This article describes what Storm is and how it works. The article makes no mention of Clojure though --I know I know, parentheses scare people off.

Today in the Intertweets (Aug 3rd Ed)

  • Installed elein for the first time today: elein-reswank is a life-saver. (here, via @semperos) -- That's a nice treat (if you're using Emacs, that is). An Emacs package that let's you easily run leiningen tasks.
  • learned a new trick at #jrubyconf.. got some clojure in my ruby - how awesome is that! (here, via @igrigorik) -- What's all that code without parentheses?! Argh, my eyes!! (joking, in case that wasn't clear)
  • Getting started with #Clojure in 3 Minutes (here, via @charliegriefer) -- We're now down to 3 minutes? Not bad. But that's not fair because it's using Leiningen; some of us had to manually compile clojure and then transcribe it to JVM-bytecode punchcards, ya know?
  • Playing around with a toy type checker with #clojure #logic (here, via @ambrosebs) -- I think I like this new trend of announcing projects via gisting some code...
  • #clojure @unclebobmartin: "Functional languages are in the ascendancy, and Clojure is the best of the current batch" (here, via @jmeydam) -- This is an interview belonging to a series on the 10th anniversary of the Agile Manifesto, of which Robert Marting (a.k.a. Uncle Bob) was one of the signers. In the same series there is also an interview with Brian Marick, another of the manifesto signers, now a clojurian (amongst other things) and author of Midje, a testing framework for Clojure.

Today in the Intertweets (Aug 2nd Ed)

  • New Clojure binding for #OrientDB (here, via @lgarulli) -- "The Document-Graph database with the support of ACID Transactions, SQL and Native Queries, Asynchronous Commands, Intents, and much more.", now with Clojure support!
  • David Mertz interviews core developers of the Clojure language at OSCON (here, via @diceratops) -- Nothing ground breaking since it is a 5 min interview, but cool.
  • Released Cheshire 2.0.0, #Clojure JSON library, now supporting custom encoding while still being fast (here, via @thnetos) -- Chesihre is a JSON lib for clojure with the aim of having the functionality of clojure-json and the speed of clj-json. Let's thank him for not naming this project something like cljr-json, or cloj-json...

Today in the Intertweets (Jul 27th Ed)

(Somebody --me-- forgot to click "publish" on this post from last week..., so here it goes, with a few days of delay)
  • Pump, a nice abstraction over HTTP inspired by Clojure's ring (here, via @ghoseb) -- And Ring in turn is "inspired by Python's WSGI and Ruby's Rack". Ideas are best if they're promiscuous!
  • Clojure overcomes Scala in growth, LinkedIn says (here, via @skuro) -- Impressive if it is true, but we still don't know how those numbers are computed and from what kind of data.
    • linkedin.com/skills is an interesting destination. Suggests clojure is the 19th fastest growing skill, and (about time) Java has -ve growth (here, via @dnene) -- This is where the previous graph comes from.
  • Note to microbenchmarkers: HotSpot profiles 10k calls before optimizing a method -@headius #OSCON (via @stuartiserra) -- So don't forget to run your microbenchmarks at least 10k times, and then measure the next run. Now, how does this work with JavaScript?, because this has become pretty relevant now...
  • Information is best recalled when in the mental state in which you acquired it. I can now only program #clojure when drunk. (via @mcsnootch) -- Funny, because I learned and I code Clojure while being sober, and the output still looks like it's the one from a drunk.
  • “@InfoQ: Adrian Cole announces JClouds 1.0 release” <-- revamped Clojure APIs (here, via @disclojure) -- It's always nice when someone helps put Clojure in relevant outlets like InfoQ. JClouds --that now has now two different Clojure APIs-- abstracts away the details of operating against a cloud provider.

Today in the Intertweets (Jul 31st Ed)

  • Clojure, ClojureScript, HTML5 Boilerplate, and Google Closure boilerplate(here via @jimblomo). Early stage but looks promising, especially if compiling etc could be automated with one of the major Clojure "build" tools Leiningen or Cake.
  • Introducing Clojure to an Organisation (here via @maclausen). Interesting and what sounds typical by now, story of how Clojure is introduced in a organisation
  • While #clojure market grows faster, #scala still has bigger absolute numbers, LinkedIn says (here via @skuro).
  • Java dependency injection library in Clojure (here via @maclausen). Here is a video of Luc Préfontaine introducing the library.

Today in the Intertweets (Jul 28th Ed)

  • #Java SE 7 released! download from: (here, via @carlosqt) -- Well, download it unless you're using a Mac, then you'll have to build it from sources. Oh, and hopefully you don't use any loops in your code.
  • Create Hadoop clusters the easy peasy way with Pallet #clojure <-- Deploying hadoop couldn't be made much easier (here, via @disclojure) -- Full disclosure, I wrote the article, I work on pallet and collaborated with pallet-hadoop. Oh, and pallet is a sponsor of this site, I guess, since it is paying bills for me. Feedback welcome!
  • Wish you could run ClojureScript inside the browser from the REPL? Now you can (here, via @ibdknox) -- Nice! So instead of running your ClojureScript inside Rhino (a JavaScript impl. for the JVM), it runs your code directly in the browser, which means you can update the DOM from the RELP :) Impressive!

Today in the Intertweets (Jul 26th Ed)

  • I reserved @ClojureScript and handed it off to Clojure/core. If you're interested follow the account and maybe they'll decide to tweet! (via @BenATkin) -- Ben, awesome! Clojure/core guys, good one! :D
  • Reddit.clj, clojure for reddit (here, via@hnfirehose) -- Now you can procrastinate more efficiently (and concurrently) with Reddit thanks to Clojure. This is a clojure lib for Reddit's API. Now watch the productivity of clojurians drop sharply...
  • ClojureScript Brings Clojure To The Browser via Javascript (here, via @InfoQ) -- This article appeared on InfoQ today and summarizes very well the launch of ClojureScript, with many links to useful resources.
  • Rough version of @odersky's phone number coding problem in Ioke - inspired by Clojure version (here, via @olabini) -- I guess language authors are geeking out at the Emerging Langueges conference at OSCON?
    • forgot the links to the phone number impls in #clojure & #ioke .. (here and here, via @debasishg) -- And here is the context. All the solutions seem structurally similar. Don't know what Ioke is? Here.
  • Java, Scala, Pig, Clojure are the JVM languages used at Twitter by @stevej at #osconj (via @arungupta) -- I take the use of Clojure has to do with the aquisition of Backtype  (cascalog guys) by Twitter? or is it an independent event?

Today in the Intertweets (Jul 25th Ed)

  • New web framework called ringfinger (here via @myfreeweb). Very early stage so expect rough edges. The framework supports NoSQL DBs, initially MongoDB. It auto-generates CRUD html/REST based on a simple model definition.
  • The Noir web framework upgrades to 1.1.0 (here via @ibdknox). Gets lots of handy improvements like session/flash-put! and sesion/flash-get and server/stop restart.
  • The Sanity library (here via @nilsgrunwald) does type inference based on argument names and adds appropriate type hints.
  • Google-Talk-Clojure-REPL (here via @sreenathnannat) lets you talk to a remote REPL using Google Talk. It uses the Java Smack Jabber (XMPP) library and requires a Jabber address for each end of the connection.
  • ClojureScript field report (here via @chrishouser). Quote: "Client-side side stuff I've wanted to do with my app but couldn't even begin to have the patience to implement- now suddenly seem trivial in principle. Having access to the reader for transmitting native data structures between the server and client... I don't even have the words."
  • Twitter has Clojure code in production and is experimenting a lot with it. (here via @kittylyst).
  • Meta-circular STM implementation in Clojure (here via @maclausen). If you want to understand Software Transactional Memory this might be your thing.

This weekend in the Intertweets (Jul 24th Ed)

  • 9 new tech sources: node.js, CSS, Apple iOS, Apple OSX, clojure, Emacs, Fossil, FTP & jQuery (here, via @duckduckgo) -- Duckduckgo.com has a specialized clojure search engine. Just try searching for any clojure function and notice it doesn't send you to richhichkey.clojure.com which contains outdated documentation, as Google does (and why is that site still alive anyway?) Oh, and Emacs too.
  • Well, I'm exercising regularly, so what's wrong with reduce-ing in Clojure? :) (here, via @DrKnucklehead) -- Reduce is very useful when you want to collect all the results of executing a function over a sequence.
  • Clojure/core is proud to introduce #ClojureScript (here, via @stuartsierra) -- This is the official announcement of ClojureScript, and contains a lot of meat, including the relationship with Google's Closure
  • With #ClojureScript I can not use nothing but #Clojure in my apps! (here, via @wagjo) -- For the author of this article, ClojureScript's birth marks the beginning of a dream come true: do everything in one language (from DB access, to XML, to web pages).
  • Clojure to Javascript by example (check the "Translation" part) (here, via @FGRibreau) -- "Translations" refers to a table that shows the equivalence between clojure constructions and the translated JavaScript equivalent, so you can compile your clojure code by hand (I bet Rich Hickey did so himself a number of times)
  • weekend project: Rage Viewer written in #clojure and #clojurescript (here, via @Sunng) -- A Rage Comic is a special form of coming in which a rage inducing event is explained. This project is just a viewer of such comic strips. The site does feel very fast indeed.
  • Woo hoo!! Got #ClojureScript and #Clojure connected via #WebSocket! (via @neotyk) -- That didn't take long... Websockets is the browser technology that lets javascript apps to keep a two way communication with the server.
    • It was a good day today. #Clojure #ClojureScript #WebSocket sneak pick is here. Next days documenting it. (here, via @neotyk)

Today in the Intertweets (Jul 21st Ed)

(NOTE: How's your tongue doing? 'cause mine is all twisted trying to explain how Clojure now runs on JavaScript via ClojureScript, which uses Closure. Even my fingers got twisted trying to type this!)
  • Lock free code in #parallel #multicore environment... simply use #clojure. (here, via @JanPalencar) -- A lengthy and detailed article on how to do proper lock free parallel programming in modern multicore processors. It is good to remind ourselves of how hard some things are, and celebrate that we don't have to deal with them!
  • With #clojure now targeting #javascript as well as the #jvm, my motivation for using any other language is asymptotically approaching zero. (via @olafdf) -- I suspect that is part of Rich Hickey's plan...
  • Emblogginated the first in a series, "Compiling Clojure to JavaScript" (here, via @fogus) -- Michael Fogus writes an article describing some of the advantages of using ClojureScript with Closure, the main one being the ability to get extremely optimized JavaScript code.
  • OSX Lion's release unfortunately overshadowed by release of #Clojure on JavaScript. (via @LarissaGissell1) -- Take that Steve Jobs!
  • Slides from @richhickey #ClojureScript talk available (here, via @stuarthalloway) -- Now this is one area in which Steve Jobs and Rich Hickey clearly differ: slides. Also, probably SJ doesn't know how to create his own programming language.
  • A short example of the three options for Google Closure optimization and what they do. (here, via @brentonashworth) -- The :advanced optimizations seem to be pretty spectacular. Kudos to Google Closure!
  • Ever since #Clojure has become popular I no longer have to hide the fact that I know #lisp (via @michaelwalkden) -- See? Clojure can have side effects!
  • Video of Rich Hickey announcing ClojureScript (here, via @chrishouser) -- This is THE VIDEO about ClojureScript. Now set aside one hour of quiet time to watch it, it's well worth it, even if you get the gist of ClojureScript, since it is packed with wisdom and genius. (Note: unfortunately, Rich chose one of my tweets during the demo, the one in which I complain --in jest, I swear-- about the long stack traces -- well, they are long, that's a fact. This is definitely not how I wanted to go down in History of Computer Science, no no.)

Today in the Intertweets (Jul 20th Ed)

So "something new" turned up to be "something very cool". The intertweets have been quite bullish about ClojureScript, but let's not get ahead of ourselves. This is how the day played out:

Pre talk:

  • Clojure announcement scoop: In a tragic hair care accident Rich Hickey has cut his hair too short and can thus no longer work on Clojure. (via djwhitt)
  • Some speculation on the subject of Rich Hickey's big #clojure talk tonight! (here, via @stand) -- Not sure this prophet got it right...
  • Poll results are in! Thank you all for participating! Don't miss the creative "Other" suggestions (here, via @disclojure) -- and 17.8% of you were on the spot about the fact that the announcement as Clojure on JavaScript!

During the talk:

  • You now have video proof that @richhickey's hair is unharmed (via @cemerick)
  • uh oh! Javascript mentioned (via @disclojure)
  • ClojureScript! (via @redinger)
  • Clojure on JavaScript! (via @djspiewak)
  • FYI, the upcoming 'Clojure Programming' from @cgrand, @briancarper, & O'Reilly *will* include ClojureScript coverage. (here, via @cemerick)
  • 2nd ed of Programming Clojure will cover #clojurescript, so y'all can stop calling me out of date (via @stuarthalloway)
  • ClojureScript is Clojure targetting JavaScript as platform. It's written completely in Clojure... no JS involved! (via @ghoseb)
  • ClojureScript -> no javascript used. it's a Clojure in Clojure. Generates javascript. Compiles it with Google's Closure. Will be faaaaast! (via @disclojure)
  • #ClojureScript is a first class implementation of Clojure with Macros, Protocols, Reader, etc. (via @ghoseb)
  • "Something new" was Hickey's understatement of the year. (via @maclausen)
  • Yes, your eyes and ears did not deceive you, #clojurescript has a reader so you can just send #clojure datastructures around. (via @abedra)
  • for production, target real platforms with reach: #Clojure targets Java 5, and #ClojureScript targets ECMAScript 3 (via @stuarthalloway)
  • https://github.com/clojure/clojurescript is live (via @stuartsierra)
  • #clojurescript? Start here -> (here, via @disclojure)
  • (real) #ClojureScript Twitter demo code at https://github.com/clojure/clojurescript/tree/master/samples/twitterbuzz (via @fogus)

Post Talk:

  • ReadWriteHack: ClojureScript: A Clojure to JavaScript Compiler (here, via @RWW) -- ReadWriteWeb has a short article on ClojureScript (with some authorship attributions that don't ring as totally correct to me)
  • Please use the #Clojure mailing list for #ClojureScript discussion (here, via @stuartsierra)
  • The biggest light bulb for me wrt #clojurescript is as #clojure's path to mobile devices. (via @stand)
  • ClojureScript, Clojure to Javascript compiler. Looks amazing and should increase Clojure's reach (here, via @nutritioustim) -- This posts to a wiki article with the rationale behind targeting JavaScript
  • so #clojurescript runs on node.js too.. that's quite interesting.. (here, via @javame)
  • Whoa. Clojure just became something I can't ignore. (via @justicefries)
Video and Slides will be made available "soonish".

"Something New" Poll Results

As most of you already know by now, Rich Hickey will be talking about "something new" tonight at the NYC Clojure meetup at 6.45pm EST (the event will also be streamed online.) Now some of us have been pumping up this event, and in my case, I don't know anything about what this "nomething new" could be. But I decided to ask all of you, and the response has been spectacular. First the good news. The poll had, at the time of writing this, 181 respondents. Now the bad news. I used a BASIC account in surveymonkey.com, which I thought it was limited in number of questions. It turns out it is also limited in number of answers! So I can only report on 100. Sorry guys, not paying 1 year membership for this. If anyone at surveymonkey is reading this... ah well! So here are the results (based on the 100 first responses):rh-poll Now, creativity kicked in in the "Other" option; here are some of the suggestions:
  • Pods (finally)
  • A pony
  • Clojure without JVM
  • Clojure in Cobol (so it runs on Mainframes and VMS)
  • A simple solution to the Halting Problem
  • Yet another concurrency primitive
  • Commercial support for Clojure
  • JVM 7 support
  • Clojure in Scala (Ed: Ha!)
  • Do for Prolog what Clojure has done for Lisp
  • iTex 2.0 (?)
  • Events/Steam (sic) abstraction.
Thank you guys for participating. This has been fun! Don't forget to tune in to the live cast of the event tonight at 6.45pm EST. Rich, the pressure is on now. You better deliver!

Today in the Intertweets (Jul 19th Ed)

  • #Scala comes to .Net (here, via @carlosqt) -- And Microsoft funded the effort, no less! Visual Studio plugin in the works.
  • wrote #SOAP library for #Clojure (here, via @t2ru) -- Finally somebody took one for the team and delved into the underbelly of software development so that you didn't have to. Not sure why is this a big deal? Consider yourself lucky ...
  • Some "one-liners" in Factor (inspired by a Clojure blog post) (here, via @mrjbq7) -- Now if learning Clojure expanded your mind, try with Factor; it's like LSD.
  • All entries are in. Here is the "What will Rich Hickey announce tomorrow" poll. Share it and vote away! (here, via @disclojure) -- Yeah, and tomorrow I'll be posting the results. Very interesting "Other" entries so far; I like "Clojure in Scala" the best! Please cast your vote soon, and oh, no prizes whatsoever for the winners.
  • Common theme talking to Oracle folks at #jvmls: Oracle really cares about multi-language support for Java/JDK/JVM. (via @headius) -- This related to the JVM Language Summit that is taking place this week. Apparently Oracle is cool with other languages on the JVM (as long as they're PL/SQL?).

Today in the Intertweets (Jul 18th Ed)

  • clooj, a small IDE for clojure (here via @sbtourist). The IDE is written entirely in Clojure and uses Swing for the GUI. There is a self-contained jar available for download.
  • Borrowing Haskell's Either for Clojure Error Handling (here via @marrowboy_co_uk). This post shows how to replace let-if with Haskell style either using a couple of left/right convenience functions.
  • Introduction to Logic Programming with Clojure (here via @ambrosebs). Very nice introduction to logic programming. Uses a type checker as example.
  • The Wednesday NYC Clojure Meet-up will be streamed live (here via @chrishouser). Apparently Rich is going to present something new and shiny - oooooh we like shiny.
  • Zi, the maven plugin in clojure(here via @palletops). An alternative to leiningen and cake. The plugin uses a non-forked execution model which according to the author should make it faster than the incumbents.

This weekend in the Intertweets (Jun 17th Ed)

  • Clojure/core working hard today to get some finishing touches on Rich's "something new" (here, via @redinger) -- Yeah, right, you keep teasing us... wait, what?!?! 300 attendees?!
  • Goog@le+ #Clojure circle (Post by Claudia Doppioslash) (here, via @kumarshantanu) --  Check in there to find other Clojurians on G+
  • Blogged how to extract child elements in an XML doc using #clojure zip-filter (here, via @markhneedham) -- This is an interesting post that describes as seeming simple problem with reading an XML document via zippers. The proposed solution is a good example of proper functional programming.
  • Here's UPNP port forwarding in #Clojure (here, via @rosenj) -- Which brings us to Peer, a peer to peer networking toolkit for Clojure.
  • Wrote a post on writing a simple query DSL for #mongodb in #clojure (here, via @_cwm_) -- MongoDB is a NoSQL database that prides itself for being very fast. It has a hashmap-based query language, and this article provides a DSL for building complex queries with ease.
  • I just published a #clojure.test runner (here, via @paraseba) -- Runs your clojure.test tests without change, adds fine grained selection of tests to run, automatically reloads modified files, extensible, and a bit more. Makes testing at the REPL quite more convenient.

Today in the Intertweets (Jul 14th Ed)

Lots of chatter today, but nothing too meaty. Just one:
  • Emacs + Clojure the easy-peasy way (here, via @ralmoritz) -- just a reminder of how easy is to setup emacs for clojure these days...

Today in the Intertweets (Jul 13th Ed)

Note: this post covers Monday to Wednesday.
  • Libraries vs Frameworks at our startup (here, via @doooks) -- OrderHarmony is a British startup that whose systems are built on Clojure. They wrote this blog post explaining why they prefer libraries over frameworks. Clojure's OS ecosystem is largely based on the former.
  • Clojure on Heroku (here, via @craigandera) -- How to herokify your Clojure webapp (spoiler, it seems very very easy!)
  • The results of the 2011 State of Clojure survey are in! (here, via @cemerick) -- Woo hoo! 670 of you took the time to provide fill up the questionnaire, and the results are of course very interesting. Here is a shallow view on the prototypical "you": mostly not at work, you develop web applications with Emacs/Slime, you are a (former?) Java programmer that would try Common Lisp, Haskell or Scala if Clojure were to disappear, you love Functional Programming and you have a list with several aspects of Clojure were you'd like to see improvement. Go check the article for a less shallow view of The State of Clojure.
  • Persistent #clojure piece-table impl using finger-trees. Creates an append-only change buffer in text editors. (here, via @smashthepast) -- This is using Chris Houser's finger-tree implementation to provide support for text editors backends.
  • Heroku: A development cloud for all seasons: Rails, Node, Clojure, and other hipness (here, via @regvulture) -- Linked because it provides some insight on why Heroku went for Clojure for their third supported language after Ruby/Rails and JavaScript/Node.js (spoiler?)
  • Emblogginated: "No Stinking Mutants" (here, via @fogus) -- Detailed and comprehensive article on the perils of mutability in your code.

This weekend in the Intertweets (Jul 10th Ed)

  • @unclebobmartin 'Looks for Clojure at NDC' (here, via @Sageniuz) -- I have to confess I haven't listened to this podcast, but it looks as if Bob Martin was pushing Clojure to .NET fans (well, I assume they are if they listen to ".NET rocks!"). By the way, NDC stands for Norwegian Developers Conference
  • I became inspired to write a #clojure #enlive tutorial. 2 parts drafted. Worth continuing? (here, via @marick) -- In short: go on please. Enlive is a HTML templating system for Clojure that uses CSS-style selectors and has a very functional feel to it.
  • Writing Elegant Clojure Code Using Higher-Order Functions (here, via @ maclausen) -- If you come from languages like Haskell or ML this will not surprise you, otherwise, I'd recommend this article that shows the benefits of writing code using Higher Order Functions, especially the functions that generate functions.
  • Processing large files with Clojure (here, via @yueliufeeds) -- This is a very interesting article. When you want to process files that might be larger than your available RAM, then your approach needs to change. This article shows how to process very large files in Clojure.

Today in the Intertweets (Jul 7th Ed)

  • Why You Might Want To Consider Java And/Or Clojure For Your Next Project (here, via @_lall) -- This article is only tangentially related to Clojure, it is more about Java and how it is still a good language to develop client-side applications. Either way, it is interesting how the number Java users looking at Clojure has been growing faster lately.
  • Most Powerful JVM Language Available (here, via @Sageniuz) -- "One of the questions now trending in the Java world shows a hesitation to buy into a technology that might turn out to be a passing fad: should I learn Scala or should I learn Clojure?". This article tries to shed some light on how to chose your next language when you come from Java.
  • Counterclockwise 0.3.0 - Big perf improvement in the editor (here, via @petitlaurent) -- "This new version brings incremental parsing to the table, making the editor ultra-fast at recomputing new parse trees while the user is typing." CounterClockWise is the Clojure plugin for Eclipse.
  • A rough guide to JVM languages - Scala, Clojure, JRuby, etc. (here, via @BonJoast) -- Today looks like JVM language day! Another article, this time from O'Reilly Radar, about the cool languages that have been built on top of the Java Virtual Machine of late. Radar is a blog from O'Reilly dedicated to "Insight, analysis, and research about emerging technologies"
  • With #clojure #protocols you have to use your brain. Keep your concerns separated! (here, via @kotarak) -- Recently there has been some discussion about when is the use of protocols is not recommended, which is basically in public APIs. This article describes what is the problem with using protocols in your public APIs, explains why it is a problem and finally how to avoid the issue and still use Protocols in public APIs. Very insightful, as usual from Kotarak.

Today in the Intertweets (Jul 6th Ed)

  • Processing StackOverflow data (here, via @dcbyron) -- This short article points at a more interesting article that provides a detailed description of how to build a process to analyze StackOverflow's post to gather some intelligence about, for example, smart phone development trends.
  • PragPub Magazin for July is available (here, via @christophpater) -- Pragmatic Programmers (the publishers of the first clojure book ever) have been producing a monthly magazine for developers. This month's magazine is devoted to clojure, with articles like "Clojure Building Blocks", "Clojure Collections", "Create Unix Services with Clojure" and "Growing a DSL with Clojure."
  • System administration and deployment tool in clojure (here, via @HNTweets) -- Work in progress, this new project is a tool for executing shell commands on multiple remote hosts at a time.
  • `lein-sub` - Leiningen plugin for executing tasks on sub-projects (here, via @kumarshantanu) -- Lein sub deps will run lein deps on all your project's sub-projects.

Today in the Intertweets (Jul 5th Ed)

Yes, yes, heroku now provides support for Clojure, although you've know this for quite a while now...
  • Flowchart for choosing the right Clojure type definition form (feedback wanted!) (here, via @cemerick) -- Have trouble choosing between deftype, defrecord, proxy, reify, or even a plain ol' map? This chart is for you then!
  • First intertweets by @maclausen just posted! (here, via @disclojure) -- Yes! Clojure has a new editor that will take care of Mondays (and thus letting me sleep an extra hour). Martin Clausen, Thanks!
  • @BackType Has Been Acquired by Twitter - Congrats guys! So, #twitter is adding #clojure to it's stack now? ;-) (here, via @looselytyped) -- Backtype (mostly @nathanmarz) have contributed Cascalog, ElephantDB and  soon Storm to the Clojure community. Now it is time for twitter to take the blue clojure pill (or was it the red one?)
    • Clojure to be in use @twitter via @backtype acquisition (here, via @cemerick) -- More background on what's next for the Backtype guys (other than moving a few blocks south)
  • Clojure is now officially supported on Heroku (here, via @heroku) -- Heroku is a PaaS provider, and in the last version of their software stack, they provide support for Clojure with awesome companion tools (their strongest point). The article shows how easy it is to host your clojure app in there.
    • BOOM! Clojure on @heroku. I wrote an article for their dev center as well (here, via @abedra) -- This article shows how to build a full-blown webapp in clojure and deploy it on Heroku.
  • I absolutely cannot begin to understand why anyone would have anything positive to say about Lisp/Clojure. What have I missed?  (via @DavidArno) -- Hey, not everything today has to be good news about clojure, right?!

Today in the Intertweets (Jul 4th Ed)

  • Clojure on Heroku with Noir and Mongo in 10 minutes (here via @Baranosky). This example uses a MongoDB instance hosted on heroku and shows how to hook that up to your Clojure code. 10 minutes from scratch to deployed webapp - not too shabby.
  • Analyzing Stack Overflow data using Clojure (here via @maclausen). Shows how to use Clojure to analyze the 5.9 GB XML datadump from Stack Overflow. A wc -l posts.xml on the file takes approximately 3 minutes, but Clojure handles it like a charm.

This weekend in the Intertweets (July 3rd Ed)

  • There's no point in caring about primitives when your code churns a lot of objects. Memory profiling before CPU profing. (via @cgrand) -- A word of advice from the master.
  • Hmmm, I wonder what @richhickey's going to talk about? (here, via @fogus) -- It looks like Rich Hickey will talk about "something new" for the NYC's clojure meetup. What will that be? My vote is for Forjure, a Forth implementation for the JVM ;)
  • A programmer has a problem. They decide to use #Clojure. Now they have a WORKING ONE LINE SOLUTION! (via @myfreeweb) -- Clojure, the language for tweets.
  • ReadWriteHack: 10+ Free Resources for Learning Clojure (here, via @rww) -- As Clojure is becoming mainstream, judging from how far removed is ReadWriteWeb from hard-core language geekery.
  • Automatoon: A HTML5 automation service on GAE written in clojure (here, via @hnfirehose) -- This is built with CoffeeScript on the front end and Clojure on the backend. It lets you create cartoon animations and put them in any web site. The level of awesomeness of this is just hard to describe in a tweet. Watch the video and judge for yourself. It's author also wrote "Land of Lisp".
  • Bitly API via Clojure (here, via @gmwils) -- Short and sweet, use Bitly's API to shorten your links from clojure.
  • recon - JVM instrumentation reporting library in Clojure (here, via @kumarshantanu) -- Let's you collect run-time statistics from remote JVMs.

Today in the Intertweets (Jun 30th Ed)

  • "protocols are a low-level implementation detail. Actual APIs should be built with normal functions..." (here, via @kumarshantanu) -- This is the "recently received wisdom" according to Clojure/core's Stuart Sierra. The "..." in this case expand to "Actual APIs should be built with normal functions that call the protocol methods".
  • a brand new, high performance, Clojure-based twitter api based on http.async.client (here, via @AdamJWynne) -- This new Twitter client supports everything Twitter, including search and streaming.

Today in the Intertweets (Jun 29th Ed)

  • Lacij - a graph visualization library for Clojure (here, via @hyone3) -- This is a graph library for clojure that produces SVG drawings. You can use it interactively at the REPL and works at a higher level than traditional SVG libraries. Includes layout managers too.
  • Guide to Programming Clojure For Beginners (here, via @hnfirehose) -- This is a quite extensive intro to clojure, broken into 18 chapters (for now, more to come). Keep it around in case some friend asks you about Clojure.
  • Working with Clojure (here, via @wjlroe) -- The stack trace doesn't fit in that large monitor in portrait mode. Guys, stop breaking your programs into many functions. Put all your code in one function and your stack traces will be shorter.
  • My heart Clojure shirt just came in the mail! (here, via @carinmeier) -- That's cute. Can I get one?
  • Ferret: An Experimental Clojure Compiler (here, via @condotti) -- So what would you do if you like programming Arduino devices but you'd like to have those devices run Clojure? Well, that's irrelevant. What would Nurullah Akkaya do? Write his own Clojure-to-C++ compiler, of course, what a silly question!

Today in the Intertweets (Jun 28th Ed)

  • Simple tf-idf in 30 lines of Idiomatic Clojure (here, via @hnfirehose) -- tf-idf means "term frequency–inverse document frequency", and it is used to determine the relevance of a document in a search.
  • Clojure: Lisp meets Java, with a side of Erlang (here, via @digitalseven) -- An interview with Stuart Sierra for O'Reilly Radar on why clojure is getting traction and other questions.
  • Clojure has too much syntax. (via @marick) -- wut?

Today in the Intertweets (Jun 27th Ed)

  • Automated Clojure Emacs hacking VM setup via Vagrant courtesy of @justinlilly (here, via @technomancy) -- Launch a Virutal Machine with a full-blown clojure development environment ready for your code.
  • Monte Carlo integration with #clojure and #mahout (here, via @chlalanne) -- This post is full of good things, from Incanter to Mahout. If you have some intractable problem that you want to solve, or at least approximate to a solutions, Monte Carlo simulations are the way to go. This article shows how to get a simulation going in relative short time.
  • Deploying a Clojure web app on Heroku (here, via @clarkhtse) -- From nothing to a clojure web app deployed to the cloud via heroku, covering all the necessary tools and libraries. All in one article.

This weekend in the Intertweets (Jun 26th Ed)

  • Planet Clojure now lists more than 250 blogs! (via @alexott_en) -- Congratulations!
  • wish I'd seen these when I started with clojure and emacs. (here and here, via @deobald) -- Linked are a Slime (lets Emacs interact with Lisp) and a ParEdit (a very 'different' way to keep your parentheses in check) cheat sheets. If you are using Emacs for Clojure, you need to have these around unless your memory is not like mine.
  • Gasp, new blog post (here, via @briancarper) -- A pretty long article about how Ruby, Clojure and Common Lisp handle keyword arguments in function signatures, or "the many different ways to skin the keyword arguments cat".
  • javamatic - Templating engine for writing tedious Java code (here, via @_vojto) -- Wait, so you learn clojure so you don't have to deal with java, and what do you do with it? Write a java code generator. Really. Well, in fact I believe Rich Hickey himself is a big fan of this method of writing java code.
  • Dan Bodart's sweet Java functional collection processing library (like Clojure, Haskell, F#, Scala...) (here, via @ codemonkeyism) -- Totallylazy is a Collections library for java that provides similar functionality than the clojure data structures, although the naming is more similar to the ML family of languages. Oh, and it is lazy. So if you have to stick to java, you could get a little clojurey with this lib.

Today in the Intertweets (Jun 23rd Ed)

  • Updated JavaFX with Alternative Languages Talk from #Jazoon... covers GroovyFX by Jim Clark (here, via @steveonjava) -- If you are interested in how JavaFX looks when used from Clojure, these slides show some code.
  • Clojure/core Reading List: Rationale, tutorials, resources (here, via @hnfirehose) -- If you can't find enough links to interesting clojure articles on disclojure, you can always go and check this list prepared by the guys at Clojure/core.
  • The Joy of Clojure is coming shortly in ePub and Kindle formats. (via @ManningBooks) -- Now with more JOY! At least for the ones that posses an eBook reader. And when they they said shortly they really meant in a couple of hours, because the ebooks are already available.
  • if a Hindley-Milner type checker for Clojure ends up being more than 800-1000 lines of core.logic I'll be very, very surprised. (via @swannodette) -- You're now on record. Now you have to build it. I want it.
  • (with-training Clojure/conj) (here, via @hntweets) -- What's better than 3 days of clojure at the conj? 6 days of clojure!. The Clojure/core guys will provide 3 days of training, right before the conference.

Today in the Intertweets (Jun 22nd Ed)

  • Noir - The Clojure web framework (here, via @hnfirehose) -- From the same guy that will build a prototype of your web app idea in 2 weeks comes a web framework built on the shoulders of the likes of ring, compojure, hiccup. You can find the Hacker News comment thread here.
  • Why Hammocks Make Sleep Easier #hammock_driven_development (here, via @looselytyped) -- If you watched Rich Hickey's keynote at The Conj last year (you coming this year, right?!?) this article will convince you that the suggestion of using a hammock to think cannot be taken lightly, and the hammock cannot be substituted by any other means of sleeping.
  • Clojure: Lisp for the Real World. Excellent talk (minus some comments about Erlang :-P) (here, via @_nipra) -- This is Stuart Sierra's talk at the Norwegian Developers Conference some days ago.
  • How to Hack Overtone with Emacs (here, via @hnfirehose) -- A couple of months ago, we posted about a presentation about live coding with Overtone, a sound synthesis framework for Clojure. Many of us were impressed with the Emacs configuration used in that video. This video shows how to set your Emacs with many goodies that make coding Clojure a great pleasure.

Today in the Intertweets (Jun 21st Ed)

  • Sublime Text 2 + Clojure TextMate Bundle rocks on Mac! (here and here, via @kumarshantanu) -- More options for a Clojure code editor.
  • Clojure - The last programming language? Fascinating talk (here, via @pelley) -- This is a video of Bob Martin's talk a week ago for the Norwegian Developers Conference
  • clojure 1.3.0-beta1 released! (here, via @abedra) -- Woo hoo!

Today in the Intertweets (Jun 20th Ed)

  • Sound Synthesis & Playback in Clojure (here, via @yueliufeeds) -- A detailed blog post about synthesizing sound with Clojure and Java Sound API, pretty much from scratch.
  • Announcing Unk: A pluggable, manipulable, inspectable, and extendable memoization library for #Clojure (here, via @fogus) -- Clojure's memoize is very useful in some straightforward cases, but in production scenarios sometimes you need more control on what and for how long things are memoized. This library provides this flexibility while being a drop-in replacement for memoize. The listed algorithms also have had a long history and many authors.
  • Love it: @edd in email: "Programmers don't aspire to a BMW, they aspire to write a clojure program that other people won't laugh at" (via @timoreilly) -- That's this Tim O'Reilly.

This weekend in the Intertweets (June 19th Ed)

  • Wrote a post about Plasma, a graph database query engine written in #clojure (here, via @ahzf) -- This is a graph query engine initially designed to work on top of jiraph, a clojure graph database with pluggable backends. Graph databases are used often for working with social networks.
  • The 2011 State of Clojure Survey is Open (here, via @cemerick) -- Last year's survey results provided a lot of light to what the main issues with clojure adoption were. Please provide your feedback today!
  • Clojure and Akka: A match made in ... (here, via @yueliufeeds) -- Apparently, not made in Heaven. Akka is a Scala library (with Java bindings) for actors, STM and other Erlanesque features. There are some overlapping with what Clojure already offers in terms of concurrency, except that Akka can work in a distributed manner. Getting Akka to work nicely with clojure seems challenging...
  • Clojure with JavaFX 2.0 & a simple application (here and here, via @devstonez) -- JavaFX 2.0 has been released, so it is time to play with it. Getting it to work with Clojure (ot at all, it seems) is not a walk in the park. The first article shows how to do so, and the second is a sample clojure + javaFX app.
  • New blog post: "State is a fold over events" (here, via @ordnungswprog) -- Nice article in form of a clojure file which you can follow how a complex event handler system is built out of very simple functional constructs.
  • Creating single-file Clojure executables (*nix-only) (here, via @cemerick) -- This has come up a few times: how to build a clojure single file executable?. The author provides a short and sweet answer for Unix-like OSs.
  • Q&A with the creator of Clojure (here, via @Newsery5) -- This is rather old news, but since I haven't been posting for a while, here it is. Michael Fogus writes an in-depth interview with Rich Hickey for "Code Quarterly, a hackademic journal", a hacker magazine in formation (by Peter Siebel)
  • Clojure Development with JBoss - presentation video from JUDCon 2011 (here, via @maclausen) -- JBoss is a very well known Java Application Server built by RedHat.
  • Java is the past, Clojure is the future. Scala is just the past dressed in hipster jeans. (via @samnewman) -- Clojure is retro-futuristic, no?
  • I think this HN Trends chart is really interesting (here, via @puffnfresh) -- This shows the frequency in which haskell, scala, ocaml and clojure are mentioned in hacker news over time. Notice the drop of clojure mentions since Q4 2010...
And this is what happens to me when I slack off: a few dozen good blog post to filter and comment on in one sitting. Our baby is finally letting us sleep, and the posts will resume their normal schedule, hopefully this time will be for good.

Today in the Intertweets (June 8th Ed)

  • Finished up real selector support in Seesaw tonight. Not half bad I think. (here, via @darevay) -- So this is an interesting use of one of the Enlive concepts, the selector. You can use this selector now not to find elements in an html page, but in a Swing application. How cool is that?!
  • Reify a clojure protocol using a function to implement all methods. (here, via @ordnungswprog) -- A macro that does what the title says.

Today in the Intertweets (June 7th Ed)

  • I should have named SessionVar SessionRef in #Lift. Refs will be the next frontier in code modularity... and #Clojure does them best. (via @dpp) -- Nice words for Clojure from the author of Scala's leading web framework Lift.
  • New Release: Clojure Programming: Rough Cuts Version (here, via @OReillyUG) -- You can now buy an early version of "Programming Clojure" by @cemerick, @cgrand and @briancarper
  • We hope to also open-source some of the Clojure libs we've built at Revelytix at some point, but not sure exactly what/when (via @puredanger) -- Do you guys need some peer pressure to help figure out what (everything!) and when (now)? Revelytix is working on interesting Semantic Web problems, so expect some OS releases related to this technology.

Today in the Intertweets (June 6th Ed)

  • Read about what's new in #jclouds 1.0.0! (here, via @jclouds) -- JClouds is a library that abstracts the interaction with pretty much all cloud providers (public and private). It has some handsome clojure bindings, in fact, now it's got two!
  • Simple Thrift in Clojure (here, via @ithayer) -- Apache Thrift is an interface definition language for creating binary communication protocols, initially created by Facebook. This blog post is about using Thrift in Clojure.
  • Got Enlive selectors working on Swing hierarchies in Seesaw. Needs lots of clean up, but it works. Zippers! Fun! (via @daveray) -- Now that is some creative use of Enlive :)

This weekend in the Intertweets (June 5th Ed)

  • Interesting presentation on #clojure. Language-as-data highlighted as key benefit (...) (here, via @revodavid) -- With quite a title ("Clojure is the new Ruby?), this presentation contains a good number of graphics showing Clojure's ascending popularity. Watch out for some of the slides if you're prone to epileptic seizures... The slides seem geared towards Ruby connoisseurs.
  • Published my slides from What's Next Paris "Clojure: Towards The Essense Of Programming" (here, via @hlship) -- Some more slides, these are good for your friends that are none-too-sure about Clojure.

Today in the Intertweets (June 2nd Ed)

  • I strung a bunch of words together surveying the basics of web development with clojure (here, via @brehaut) -- And by "strung a bunch of words together" he means "I wrote this awesome, detailed and balanced overview of the current options for web development in Clojure". Must read.
  • Example Clojure Twitter Application (here, via @__fury) -- Deployed on the new Heroku stack, this application uses Clojure/Ring/Compojure plus Sass, CoffeeScript, JQuery and other JS goodies. A good non-trivial example of Clojure web development.
  • 10 Clojure One Liners (here, via @ghoseb) -- So I take this is some sort of meme these days. See here, here and here. Looking forward the ARM assembler version...
  • The July issue of PragPub will have a Clojure focus (here, via @pragpub) -- Book publisher Pragmatic Programmers (they published the first book on Clojure: Stuart Halloway's) has been putting out a free monthly e-magazine. July's version will be a must read!
  • Today I wrote a #clojure macro which detects compilation errors, parses error message, and rewrites the code so its fixed. (via @jason_j) -- Please, go on, tell us more...

Today in the Intertweets (June 1st Ed)

  • JAX Innovation Awards: The Technology-Finalists are: #Akka, #Clojure, #Gradle, #JRebel, #Neo4j --> VOTE NOW (here, via @JAXenterCOM) -- You know what to do...
  • Lazy Evaluation Recursive Grammar Combinators for Clojure (here, via @danielllo) -- Monadic parser combinators that is, but implemented in Clojure, and with a different kind of lazyness (the original implementation is done in gopher, a statically typed lazy language).
  • Missing dependency? Oh no! (here, via @stuartsierra) -- Maven is your friend, except those times when it is not... then it is your enemy. Sometimes Maven can't find a dependency. This article provides tips to beat Maven into submission. (I Love this comment: "Taking a sip of scotch every time you type “mvn” will get you through the day" by Alex Miller. Alex my friend, either your days are very short, or you can take a lot of scotch!)
  • Finally! a #clojure toolbox for #hadoop that isn't 100% tied to #ec2 (here, via @jclouds) -- If you are a hadoop user you know how much time this will save you; a new project has been announced that allows you to describe full hadoop clusters as a data structure and then have pallet automatically build them for you, on any cloud provider (thanks to jclouds). (Disclosure: I am part of this effort) Here's the project, and here is an example project. WIP, feedback appreciated.

Today in the Intertweets (May 31st Ed)

  • Emblogginated "Function Identities" (here, via @fogus) -- Why does "(+)" evaluate to "0" and "(*)" evaluate to 1?
  • ...and now you can deploy Clojure to @heroku ... I think (here, via @pjstadig) -- Heroku is a well known Platform as a Service provider that initially focused on Ruby on Rails. Now they are beta testing a  new stack, which provides support for Clojure (yay!) although you wouldn't guess from the linked article.
    • Clojure on Heroku Cedar stack (here, via @hntweets) -- Aha! Here is some evidence of Heroku's support for Clojure :)
  • Use Clojure to Move Drugs -- A Programming Challenge (here, via @msusies) -- Hey, do you want to help drug dealers maximize the amount of drug that they can illegally bring into a country using human mules? I am sure you do! Not clear what the prize is for the best solution... a yatch?

Today in the Intertweets (May 30th Ed)

Aaaaaaaaaand, I'm back :). We had a precious baby girl and she is now focusing her energies on eating, sleeping and pooping, in no particular order. And it is sneaky of me to come back on Memorial day (a holiday in the USA), I know, I know, I am just easing myself back in to work and today sounds like an easy day.
  • Blogged a little bit about @ClojureAtlas and how great it is (here, via @ihodes) -- Clojure Atlas is a website that offers a graphical interface to navigate clojure. This brief review should incite you to give it a try (it's not free, as in beer at a bar)
  • Wow this guy is pretty bold about Clojure (here, via @igorgue) -- Pretty bold indeed! This guys offers to build a prototype of your (dreamed) web application in two weeks for $5000. The only conditions are: 1) you must provide wireframes in advance, and 2) It will be built in Clojure and Clojure only. Here is a related HackerNews thread.

Today in the Intertweets (May 10th Ed)

  • Classpath trickery for using clojure-hbase with leiningen (thanks @clizzin !) (here, via @davidandrzej) -- You can alter the classpath used by leiningen to run your code by using robert hooke, a library that lets you extend existing functions. Then you can setup a hook in leiningen that will be executed when leiningen calls it's own get-classpath function. When this function is called by leiningen, your hook will be executed too. Or something along these lines...
  • More Clojure for Spring Surf (here, via @skuro) -- Spring Surf is a View Composition Framework for Spring MVC. If you know spring you know what I am talking about. If you don't know spring, suffice to say it is a framework within a framework of a framework, all dependency injected. Aaaanyway, this article is about spring-webscripts-addon-clojure, a library that lets you create scripts for Spring Surf in Clojure.
  • Parsing Web Pages with Clojure and enlive. (here, via @rippinrobr) -- A friendly reminder that Enlive can be used for the reverse of generating web pages, which is parsing them.

Today in the Intertweets (May 9th Ed)

  • Lazy Prime Sieve by @gfrlog (Space-efficient lazy prime generation in Clojure) (here, via @cemerick) -- A good read if you want to know more about using (and creating) lazy sequences while leveraging their power.
  • Reminder: clojure-contrib is deprecated, look to github.com/clojure to find the new library you actually want (via @abedra) -- All of it? Deprecated? I should read the mailing list more often...
  • Using Common #Lisp at work, method 42: Tell your boss "I'm using a variant of Clojure, that hot new language you're hearing so much about." (via @xach) -- Not so long ago we were selling clojure to managers by saying it was a java concurrency library... time flies!
  • Lispers know the value of everything, but the cost of nothing (here, via @swannodette) -- A friendly reminder that you can write fast code in Clojure, just not as pretty and cool as you usually write it.

This weekend in the Intertweets (May 8th Edition)

NOTICE: disclojure will be taking a hiatus soon. A new baby will be joining my little family, just to spice it up a notch, and so I'll be hanging out at the local dive bar for a week. Kidding! Once the baby is born I will take some time to relax, change diapers and all that stuff that comes along with a having a new baby. I prepared a quick FAQ for the occasion:
  1. When is the hiatus starting? Ask the baby, not me. Soon, I guess.
  2. How long will the hiatus be? Probably a couple of weeks. No commitments though, I might be in denial.
  3. What should we do in the meantime? Abstain from releasing extremely cool stuff, publishing very interesting blog posts and so on. And please oh please, do not release Clojure 1.3!
End of Special Transmission. Regular programming follows:
  • Adding sample output (JSON) page generated by #Clojure metrics tool to GitHub wiki (here, via @mauritsrijk) -- This is an output generated by clj-metrics, a tool that computes some statistics on your clojure code. Work in progress...
  • A new blog post on dynamic classloading of Clojure code with ServiceLoader, that we used in #crazysnake (here, via @m_holmqvist) -- You can dynamically load classes by their type (as opposed to by name) if you use ServiceLoader. In the case of the author, they wanted to load all classes implementing a particular interface. As anything classloader-related in the JVM world, the devil is in the details. So this article provides those details.
  • Interesting #clojure thought experiment: how would the last function you wrote benefit from turning all its arguments into functions? (via @craigandera) -- Hopefully not something like the Spring framework :/
  • nREPL v0.0.5 released to maven central, now compatible with Clojure 1.3.0 alphas. (here, via @cemerick) -- nREPL is a protocol (and an implementation on the server side) for remote connections to a clojure REPL, intended to be used by all kind of tools.
  • CodeRay 1.0 will support a new language: Clojure! (thanks to @heinz_gies) (here, via @murphy_karasu) -- CodeRay is a syntax highlighter for Ruby.
  • Force a #clojure #repl into your java application without modifying the source. Docs now demo using #spring ref app. (here, via @jwirde) -- Swank-Inject lets you inject a swank server to any remote java application as long as it is running in debug mode.
  • Using Clojure to visualize clusters built with Mahout's implementation of K-Means (here, via @antoniogarrote) -- There are so many cool projects involved in so little space in this post!

Today in the Intertweets (May 4th Ed)

  • Java code has so much repetitive boilerplate. My solution? Use Clojure to generate the Java code. Much faster. (via @quoll)
  • So you want to learn Clojure? (here, via @planetclojure) -- A compendium of places where to learn about Clojure.
That's it.

Today in the Intertweets (May 3rd Ed)

  • Functional thinking: Thinking functionally, Part 1 (here, via @planetclojure) -- Just be glad you don't have to write this kind of code...
  • Clojure Atlas now available: "An experimental visualization of the Clojure language and its standard library" (here, via @cemerick) -- This is an interactive visualization tool for clojure libraries, with the outstanding quality that it is not just a mechanized extraction of metadata and dumping of it into the web, instead, it is properly curated.
  • Growing so fond of #Clojure that I think of the parens giving my forms a nice hug. (via @carinmeier) -- Aaawww!
  • I just uploaded a simple tic-tac-toe player in #clojure Simple but beautiful. (here, via @paraseba) --"It was created for a Clojure presentation, where the public knew nothing about Clojure. So, I'm using only the most basic parts of Clojure. It has no optimizations at all". This is a good learning/teaching tool.
  • Cool. Clojure mode has been merged into the the #Ace project now (here, via @carinmeier) --Ace is an javascript/ajax-based test editor for the cloud, used amongst other by Cloud9. Does this mean that soon we'll be able to edit our Clojure code directly from GitHub in the browser? I believe the clojure support for Ace was done as part of building 4clojure.com

Today in the Intertweets (May 3rd Ed)

  • OCI Software Engineering Tech Trends, Clojure Sequences, by Stephen Molitor (here, via @ObjectComputing) -- This is a fairly in depth article on Clojure's sequence abstraction and its uses.
  • I love clojure, the language that can fit 5 sorting algorithms on a screen. (here, via @pepijndevos) -- I counted more than five, and they still fit in one screen :). The article refers to 5 different lazy-sort algorithms that are interesting even though they are not extremely fast.
  • A Very Gentle Introduction To Relational & Functional Programming (here, via @jneira) -- David Nolen's logos has become clojure.core.logic . What is it and what does it do? The answer, my friend, is in this github project.
  • New blog post, Runtime Dynamism + Performance: Have Your Cake And Eat It Too (here, via @swannodette) -- This article shows how clojure's type system can extend the host libraries (java in this case) to support new use cases, and even do it in a very efficient way. It does so by explaining how to add to all collections the ability to tell if they can be used as a sequence within clojure.

This weekend in the Intertweets (May 1st Ed)

  • Something really cool in terms of production Clojure-in-the-wild just happened that I'm not at liberty to discuss. ;) (via @rplevy) -- Now that's a teaser, if I've ever see one. Care to break the gag order and spill the beans?!?!
  • Leiningen project-in-a-gist (here, via @pepijndevos) -- This is a cool trick for projects that are very very little. A minimalist leiningen project for micro-projects.
  • Violent metaphors make for some of the best metaphors: (deconstructing Slamhound's Clojure code) (here, via @technomancy) -- Slamhound is a library that grabs your source file, discards your name space declaration, including imports, uses and requires and replaces it with a new version that is build from the body of the source file, adding all that is necessary, but only what is necessary. Better than keeping those updated by hand! This article explains in quite detail how the library works.
  • I just published Vhector, Clojure wrapper for Hector, client for Apache Cassandra (here, via @damienlepage) -- Hector is a high level Java client for Apache Cassandra, a highly scalable distributed no-sql DB.
  • Clojure Facebook Page with Wall Feature (here, via @hnfirehose) -- Oh no, not Facebook...

Today in the Intertweets (April 28th Ed)

  • Logos is now in Clojure Contrib! All further developments happening here (via @swannodette) -- Logos is/was a logic programming library for Clojure. Now it is called core.logic under clojure. Work in progress, but looking very good! It's author David Nolen has been posting about Logos/core.logic on his blog for quite a while.
  • Not saying 'run to the shiny ball' - but write #Clojure for a bit then try writing #Java. Java==more time typing, Clojure==thinking/doing (via @joeltosi) -- That's what happens when you take the red pill.
  • Clojure micro pattern matcher (here, via @pepijndevos) -- If matchure is too much for your pattern matching needs, here is some code to do basic pattern matching
  • What makes Clojure really unusual is that it actually lived up to its hype. (via @nathanmarz) - Yeah!

Today in the Intertweets (April 27th Ed)

  • Adding clojure-json for JSON export in our Clojure source code analysis tool (here, via @mauritsrijk) -- A clojure source code analysis tool? Where?
  • scala is a Hummer (faster than a tank but still nuts), clojure is a Prius? #thinkanalogyneedswork (via @kornys) -- Now this is some creative comparson! Actually, it is a response to this tweet.
  • Childish clojure: user=> (defn _|_ [] "toot!") #'user/_|_ user=> (_|_) "toot!" (via @darevay) -- Bwahaha! Sorry, my sense of humor never matured from when I was a child. By the way, Dave Ray, your tweet handle always makes me wonder if I am dyslexic, grr!
  • Yes, there will be a Rough Cuts release of Clojure Programming…real soon now… Watch this space: (here, via @cemerick) -- "Clojure Programming" will be published by O'Reilly and will be available online for review.

Today in the Intertweets (April 26th Ed)

Slow news day today...
  • If you pass 20 arguments to a function, ur doing it wrong. (here, via @kyleashipley) -- A friendly reminder. 20 is the limit (for now). Haskell functions only take one argument, so Clojure is clearly 20 times better than Haskell, clearly.

Today in the Intertweets (April 25th Ed)

  • When will swank-clojure get it's act together and talk to slime the same way as every other Lisp in the planet? (via @johnfredcee) -- Here is the standard Open Source response: when you contribute the code. Maybe?
    • Clojure is getting proper debugging in Emacs via slime/swank thanks to @georgejahad : swank-cdt (here, via @tbatchelli) -- (disclosure: that's me) Speaking of the devil (swank-clojure), George Jahad just pushed swank-clojure one step closer to what other lisps can get via Slime, except that this debugger also steps into Clojure's Java sources.
  • Release the hounds! Slamhound blows your Clojure ns forms to bits and meticulously reconstructs them. (here, via @technomancy) -- This tool, that nicely integrates with Lein and Emacs, will clean your namespace declarations, adding whatever :uses or :requires needed and removing the ones not needed.

This weekend in the Intertweets (April 24th Ed)

  • Software Transactional Memory in Clojure (here, via @ajlopez) -- These are some slides about building a MVCC STM on top of clojure (without using clojure's STM, that is)
  • I'm changing the world by putting the clojure books in front of the ruby books at barnes and nobles (via @aboyce) -- I support you!
  • Restructuring #clojure contrib enables a very open path for contributions. Congrats to clojure/core! (here, via @pmbauer) -- Definitely, those projects now seem to be getting a lot of traction. The change is welcome.
  • TextMash- A Feature Rich Text Editor with Clojure REPL (here, via @worthytips) -- I hadn't heard of this one. Windows only.
  • Clojure for Schemers by David Nolen (here, via @ycombinatornews) -- This is a 1hr+ video of a talk by @swanodette
  • Nice Clojure success stories page building... (here, via @puredanger) -- Some big names in there :)
  • Live Music Programming With Clojure (here, via @hnfirehose) -- This is a short video showing how to live code against SuperCollider (a real-time audio and video programming environment) via Overtone, a clojure wrapper for SC. Everything about this video is very cool.
  • Wrote a quick post on lightweight debugging in Clojure (here, via @rosejn) -- Describes ways to debug your code without a propper debugger.

Today in the Intertweets (April 21st Ed)

  • dynaTrace FastPack for Clojure (here, via @dynaTrace) -- dynaTrace is a company in the application performance management space (whatever this might mean in this particular case). Most importantly, now there is some level of support for Clojure
  • RT @petitlaurent: CCW 0.2.0 released! Annoucement (here, via @cemerick) -- This is CounterClockWise, the Clojure plugin for Eclipse. Here are the release notes.
  • And the best JVM replacement language for Java is: Java? (here, via @ArtRoundUp) -- Consultant and (many) book author would rather spend the next few years coding in Clojure, but sees a lot of Java in his future.

Today in the Intertweets (April 20th Ed)

  • Clojure not without problems! (according to Steve Yegge, plus intrstg discussion) (here, via @mrkkrj) -- Oh my! Not again... Steve Yegge, known for his direct style, announces the future irrelevancy of Clojure if things are not done his way from now on, or something along those lines. Also, it turns out that when he blogs things happen, so things might happen to Clojure soon. Jokes aside, he states that he's got many gripes with clojure, things that he believes need to be addressed for clojure to become mainstream. He says the list of gripes is growing fast and that he is considering posting them all in one blog post. He also mentions that the Clojure community is close minded and opinionated, which shuts down possible collaborators, and he seems very opinionated about this, and not willing to compromise on it either. I do want to see that blog post, since clojure is definitely not without problems. By the way, the discussion continued on Hacker News.
  • Nice post from @factual engineer, Aaron: "Thinking in Clojure for Java Programmers (Part 2 — Macros FTW)" (here, via @eva_ho) -- This is aimed at Java developers and it shows the great deal of flexibility that macros provide to allow you to add new capabilities to the language itself. You can't do that in Java, no no.
  • Bearable XML Schema with Clojure (here, via @hnfirehose) -- Bearable is an extension to prxml for generating XML schemas, which is useful if you happen to in that kind of hell.

Today in the Intertweets (April 19th Ed)

  • An interactive problem website for Clojure beginners (here, via @hnfirehose) -- Written in Clojure and MongoDB, 4clojure is an application that presents the user with problems to be solved with some clojure code. This is how you start testing your clojure knowledge.
  • Clojure Atlas (Preview): An experiment in visualizing a programming language & standard library (here, via @ClojureAtlas) -- Chas Emerick created a service that provides a way to visualize your clojure the language and its standard libraries. Check it out, it is very creative. The project is in early stages, and if you want to try it, enter your email here to get a notice when it is up for user testing.
  • Chasing Erlang: profiling a Clojure library (here, via @planetclojure) -- Antonio Garrote, the author of Jobim, an Actors library for Clojure which is modeled after Erlang, wants to know how programming Clojure with Jobim compares, performance-wise, with Erlang itself. For this test, he had to explore how to profile clojure and find hot spots. This article covers both the profiling part but also the full benchmark.

Today in the Intertweets (Apr 18th Ed)

  • Explanation of "Lose your head" in lazy sequences (here, via @planetclojure) -- You might have heard (or read) many times the expression "losing your head" in the context of Clojure. This is a question in Stack Overflow that explores what this actually means. The example used is very neat and somebody also provided data in graphical form about how when you are not losing you head, you might might be losing your memory.
  • Considering adding unnecessary dependencies to a #clojure project so stakeholders will find the code size to be believable :-) (via @stuarthalloway) -- Maybe expand your macros?
  • Clojure vs Java, protocols ftw! (here, via @puredanger) -- This is a short articles that exemplifies what is neat about clojure protocols and datatypes. It does so by explaining how to solve the same problem both in clojure and in java (the latter he doesn't even attempt to do). I believe this is a good example of what the "expression problem" is.

This weekend in the Intertweets (April 17th Ed)

  • Presentation:Perception and Action: An Introduction to Clojure's Time Model (here, via @arm1433) -- This talk by Stuart Halloway explains how clojure tries to solve the problem of modeling a world in which things change over time without getting hurt in the attempt. This talk was recorded at QCon SF 2010. His talk is much more approachable than this.
  • TryClojure update (here, via @planetclojure) -- Part of the update seems to be that the system is up more often than not ;) This article outlines some of the new features, including a new hosting provider and some cool UI improvements. Also, please report bugs when you find  them!
  • Graphing Metrics (here, via @planetclojure) -- A small app in clojure that plots metrics from your servers.
  • (Joy of) Clojure Bookshelf (here, via @hnfirehose) -- This is the bookshelf that the author's of Joy of Clojure propose as an extension to Rich Hickey's bookshelf.

Today in the Intertweets (April 14th Ed)

  • Blogged about my first Clojure on Windows encounter (here, via @kjeldahl) -- The article describes the steps to get cljojure-clr working on a windows environment and then tries to write some GUI code with it. Windows makes it somewhat harder to do so at the repl, at least compared to Java/Swing; some key objects can only be instantiated once per application's lifetime, which means only once per clojure session.
  • Un RPG hecho en Clojure (here, via @genezeta) -- An RPG game written in clojure (and playable via Java Web Start). This has been in the works for quite a while and it still needs more work, but with this post the author releases a playable build.
  • On the proccess of writing a game engine in Clojure (here, via @pepijndevos) -- Speaking of games, here is an account of the design process followed while trying to produce a game in clojure. It lists the different designs that the game went through.
  • great blog post on #clojure command line args by @jakemcc (here, via @gar3thjon3s) -- Great indeed. This article describes in detail two different ways to deal with command line parameters: c.c.command-line and clargon.

Today in the Intertweets (April 13th Ed)

  • Gavin King is working on a new language (Ceylon). Fun to read. Not sure where it fits (w/ Scala, Clojure, JRuby, Mirah) (here, via @dalmaer) -- Ceylon is a new JVM language aiming at righting some Java wrongs. The hacker news thread on this is interesting to read.
  • java.net Editor's blog: "Clojure REPL Introduced at JAX London: try-clojure.org" (here, via @kevin_farnham) -- Nice exposure!

Today in the Intertweets (April 12th Ed)

  • Fun, possibly useful to someone: #clojure #repl #hack (here, via @jwirde) -- This project lets you inject a swank server into any running java app, as long as the app is running with debugging enabled. Pretty scary, no? And cool.
  • Clojure: State Management (here, via @yueliufeeds) -- This article is directed to people that would be interested in learning what is the deal with clojure and state that everybody is talking about. It doesn't assume knowledge of clojure so it is good material to send around to get your colleagues interested in Clojure.
  • Clojure is not for solving complicated problems. There are no complicated problems in Clojure (via @clojure_mexico) -- I like the cut of your jib!

Today in the Intertweets (April 11th Ed)

  • Simple introduction to Clojure in Arabic (here, via @ibmkhd) -- Now there is no excuse for not learning Arabic.
  • More Thoughts on Hacking with Clojure (here, via @choffstein) -- "Ironically, it seems that immutable functional programming creates less coupling and more cohesion in my code than object oriented programming ever did." What's even more ironic is that this has been obvious for quite a long while, including for the one of the first OOP proponents.

This weekend in the Intertweets (April 10th Ed)

  • Spawn a repl on your server and code clojure on your iPad using multi-repl- D’oh, it really is fun. Wish I had @iAWriter though. (here, via @evilhackerdude) -- "multi-repl spawns an arbitrary REPL (read-eval-print loop) process and exposes it to the web. Everyone goes into the same process (for now). Yarrr, it's a huge deathmatch!". Built on top of node.js, has works with clj, ghci, ipython, irb, js, node, python, sbcl, v8.
  • Comparing clojure and node.js for speed (here, via @Swizec) -- Spoiler: Clojure is better for long-ish computations. Now, what is this with graphs without units?!
  • Take a look at my first blog post! It's about clj-facebook-graph a Clojure library for the #Facebook Graph API (here, via @webermaximilian) -- Great, now we have another way to waste time with Facebook... :D
  • Presentation:Monads Made Easy: Jim Duey demystifies monads through code examples written in Clojure (here, via @yueliufeeds) -- I'd suggest the following edit to the title: s/Easy/Easier, but regardless, the tutorial is really good!
    • Crap, #clojure community is now putting monads tutorials out there, too. Time to switch to #erlang. (via @michaelklishin) -- Try Visual Basic
  • Clojure 1.2.1 is on its way to Maven Central #somebodyhastodoit (via @stuartsierra) -- fixes the issue with keywords not being garbage collected.
  • The second official clj3D (clojure 3d library) screencast is out! (here, via @alfredodinapoli) -- Watch a cow change colors and spin around! This library looks like a lot of fun.

Today in the Intertweets (April 6th Ed)

  • Geekiest thing I read all week: #haskell vs #scala vs #clojure vs #erlang (here, via @BigThingist) -- This is an interesting writeup comparing the languages from a very pragmatic perspective.
  • How dependant on Rich Hickey is Clojure? (here, via @planetclojure) -- This is a question posted on StackOverflow. Should we all chip in for a praetorian guard for him?
  • Wrote a small #clojure client for @exceptional (with ring support) (here, via @napple) -- Exceptional is a service that captures and manages errors in your web applications in a centralized place, in a format that makes it easy to track the issues and fix them. A ring handler will send your exceptions to Exceptional.
  • defrecord improvements - feedback (here, via @planetclojure) -- This is a thoughtful post regarding the proposed changes in clojure's defrecords, which we reported on a few days ago.
  • "Here Comes Clojure": A Clojure Talk in #Clojure... and vim (here, via @darevay) -- Now this is a fun project. Write and run your presentations at the REPL. Not only you don't have to deal with PowerPoint/Keynote, but you don't have to leave your presentation to show some clojure code, since you are already at the REPL!

Today in the Intertweets (April 5th Ed)

  • Interested in speaking at Clojure Conj 2011? Send in your talk submissions. Call for speakers is now open! (here, via @clojure_conj) -- Notice that you are encouraged to submit not one talk, but two. And with great detail. Deadline is Aug 19th. Do it.
    • The #CUFP 2011 Call for Presentations in on! (here, via @rickasaurus) -- Speaking of conferences, there is also "Commercial Users of Functional Programming" conference. Deadline is June 15th.
  • The Clojure Dynasty (here, via @uros643) -- A couple of days ago we mentioned an article claiming that Clojure was bloated (compared to Common Lisp) based on the number of functions and variables defined (or some other counter). Then, one of Clojure's biggest fans chimed in. This article is a response to both of critiques contrasting Common Lisp's purity versus Clojure's practicality. But the old guard will never let it go.
    • Emblogginated: #_(< (count common-lisp) (count clojure)) (here, via @fogus) -- Some more on a similar note. Clojure has just the right number of abstractions, not more, not less.
  • Fixing The Inlining "Problem" in new languages on the #JVM (#JRuby, #Groovy, #Clojure, #Scala) (here, via @devstonez) -- Cliff Click outlines an issue with some programming patterns used by the new JVM languages and how this pattern really affects how the JVM's JIT (just in time compiler) can optimize the code. A change in how these patterns are implemented can bring peformance boosts of 10x.
  • What the...? clojure.org domain is expired? (via @abhiomkar) -- Nope.
  • Announcement: pretzel - clojure predicate functions (here, via @planetclojure) -- I like this one: (str/looks-like-phone? "+ (020) 213213-2323")  I wonder if it can answer something other than true/false, for example 'meh'. Pretty useful.

Today in the Intertweets (April 4th Ed)

  • I thought I was going to like Clojure, but I was wrong. I love it! (via @shearic)
  • clj3D: The first (serious as a Monkey) #Clojure 3D library (here, via @alfredodinapoli) -- This library works at a higher level than Penumbra, a library that provides idiomatic OpenGL bindings for clojure, and it lets you easy manipulate 2 and 3D objects in idiomatic clojure. Based on JMonkeyEngine and PLaSM.
  • I got my understanding of elegance in #clojure code. And you? (here, via @kotarak ) -- What you consider elegant code can be a considered an eye sore for someone else. Elegance is hence in the eye of the beholder. This articles goes over the different stylistic ways of writing the same pair of functions. Pick your style and be happy.
  • Barber shop problem again (here, via @planetclojure) -- Sometime ago Lau Jensen wrote an article comparing Clojure and Scala in the context of solving the Barber Shop Problem. This is a rewrite if the clojure solution that instead of using clojure concurrency primitives, is using agents via Jobim.

This weekend in the Intertweets (April 3rd Ed)

  • Cool Clojure post by Corey Hoffstein: Hacking with Clojure (here, via @jacquesdp) -- A ruby hacker tries Haskell and Lisp. Frustrated by the lack of a package manager in Lisp, tries Clojure. Then tries macros. Enlightenment achieved.
  • Griffon clojure plugin 0.7 released (here, via @theaviary) -- Griffon is a Rails-inspired development environment for client side applications. It's got excellent clojure support, mirroring Grails.
  • if you hack Clojure & not using emacs M-C-u/M-C-f/M-C-b then you're too slow. backward-up-list, forward-sexp, backward-sexp ftw! (via @shearic) -- Turns out I was slow.
  • looks like Clojure defrecord changes are starting to come into focus (fogus?) for clojure.next (here, via @puredanger) -- This would fix a few issues with defrecords that make them to not conform with the law of least surprises, behaving differently than other clojure code in many subtle ways.
  • in which secrets are kept (here, via @technomancy) -- In which technomancy explains one of the new features of Leiningen 1.5.0: using private repositories
  • Package management using jark (here, via @icylisper) -- We already talked about Jark, a library that lets you write and run system scripts in clojure without having to start a new JVM at every turn. This is a an introduction to its built-in package manager.
  • Clojure is almost as big as Common Lisp (here, via @planetclojure) -- The title might make you think this is about the number of users, but it is not. This is about the number of definition in clojure the language. What this actually means, I don't know.

Today in the Intertweets (March 31st Ed)

  • Jark can run Clojure scripts. Neat! (here, via @kumarshantanu) -- Jark is a persistent JVM tool, similar to what you get with cake, but without cake.
  • Announce: status-codes. Easy status codes for compojure (here, via @neotyk) -- Simple but useful! Use names for status HTTP status codes in your compojure/ring code.
  • Программирование / Основы Clojure Web Applications (here, via @habralenta) -- An introduction to writing web applications in Clojure, in Russian.
  • Looking for a fun Clojure project on which to hack? There's a US$300 bounty on building a Jenkins plugin for Leiningen (here, via @technomancy) -- The resulting plugin will be open sourced, and I do want that plugin...

Today in the Intertweets (March 30th Ed)

  • Unhygienic Clojure macros for fun and profit (here, via @alanmalloy) -- Some reasons why you would want to intentionally capture a symbol in clojure.
  • Clojure & Python, Side by Side (here, via @element103) -- This article outlines the translation from Python to Clojure of Peter Norvig's sudoku solver. You can see the two codes side by side here. The article then goes on to talk about the main differences between the two versions.
  • Working on my '#Clojure for kids' book. At the moment Dutch only since it is for my daughter. (via @mauritsrijk) -- I want that!

Today in the Interweets (March 29th Ed)

  • #NetBeans 7.0 RC1 released! (here, via @carlosqt) -- In case you are using it with enclojure...
  • Guess who is officially getting his book published? Ready yourself, world, Meet Clojure is going to blow your door down! (via @IORayne) -- Excellent! Yet another clojure book in the making. We are up to... how many? 7, 8? Congrats Anthony!
  • First release of my JSON/SMILE lib based off of clj-json, Cheshire (here, via @thnetos) -- From the Github README of the project "clojure-json had really nice features (custom encoders), but was slow; clj-json had almost no features, but was very fast. I wanted the best of both worlds." It also adds features like Date/UUID/Set/Symbol encoding and SMILE support.
  • App provides quick way to compare langs (here, via @butaji) -- Some of the clojure entries could use some formatting, especially with the closing parens!
  • cloherence, a thin #clojure layer on top of coherence. now adding clojure maps semantics to grid caches. (here, via @paulosuzart)

Today in the Intertweets (March 28th Ed)

  • appengine-magic 0.4.0 is now available. (here, via @vetoshev) -- With support for all operations from the REPL and other significant features. Here's the project.
  • Just got an email from @manningbooks that Joy of Clojure has shipped! I've enjoyed the MEAP, but there's nothing like a book in your hands. (via @adamagus) -- Same here! What's best is that I had totally forgotten that I had also ordered the print version along with the ebook, so it is a nice surprise!
  • Clojure is beauty! I've just been admiring my own code for the last 30 minutes, smiling all the time :) (via @tormaroe)
  • Contract signed, repo set, I'm off to start writing the second edition of Programming Clojure #clojure (via @abedra) -- Woot!?! Another clojure book!?!!

This weekend in the Intertweets (March 27th Ed)

  • Just uploaded "Hackers and Rockstars" or how to make crazy music with Clojure ;) Check it out! (here, via @viedma) -- A good opportunity to see MAD (music as data) in action in the context of a talk about how programming can be an art (and how clojure is very cool)
  • Nice! I just realized there is such thing as Clojure 1.2.1 although it seems to contain some breaking changes... (here, via @disclojure) -- Not announced yet and not sure if it made it to the maven repos, but there is a Clojure 1.2.1 build that fixes some memory leak related to interning keywords that seems to be hitting some users. But from the email thread, it looks like this change also comes with some incompatibilities with some source code, so proceed with caution.
  • Announcement: flutter - clojure / hiccup form fields (here, via @yueliufeeds)
  • Clojure, OpenJDK 7, and Fork/Join (here, via @planetclojure) -- An idiomatic interface to the Fork/Join feature of Java 7
  • The long-lost art of thoughtfulness in blogging (here, via @planetclojure) -- Michael Fogus (of Joy of Clojure fame) suggests a list of blogs that "strive to further the quality of online discourse." Including an infamous clojure hater.

Today in the Intertweets (March 24th Ed)

  • All Clojure-Conj Videos Available (here, via @pdrobushevich) -- All except for Rich's talk on Clojure 1.3 which it turns out didn't get properly recorded.
  • Subrosa: An IRC server written in Clojure (here, via @thnetos) -- This is an IRC written in clojure tailored for distributed teams. This post introduces subrosa, but there are more posts to come about it. Get Subrosa here.
  • Look, it's a book! (here, via @chrishouser) -- Joy of Clojure exists as paperback!
  • Readable Clojure Without a Java Equivalent? (here, via @ycombinatornews) -- That's a good question. Can you translate all (readable) clojure code into a (readable) Java equivalent?
  • Streaming OpenCV Video over the Network Using M-JPEG (here, via @planetclojure) -- Motion-JPEG lets you stream video over HTTP. This post provides a Clojure implementation of M-JPEG that serves video from OpenCV.

Today in the Intertweets (March 23rd Ed)

  • Can clojure be made fully dynamic? (here, via @planetclojure) -- This is a question posted to StackOverflow about the fact that in Clojure 1.3 (or 2.0) by default variables will not be dynamic. There is quite a bit of confusion about the implications of this breaking change. This thread provides some clarification.
    • Blogged: Can't dynamically bind non-dynamic var in #Clojure 1.3 (here, via @jaceklaskowski) -- On the very same note, this post explores the consequences of the breaking change in 1.3 making all variable non dynamic by default.
  • Don't use XML/JSON for Clojure-only persistence/messaging (here, via @planetclojure) -- In short, you can convert clojure data structures to text (with some limitations) and back.
  • Clojure is dangerously close to formalising programming as a true art form (via @bnastic) -- Ahhh! Pretty!
  • SLaTeX + Clojure (here, via @planetclojure) -- Ahh! Pretty too! This is a post of a document creating by feeding some clojure code to SLaTeX, a LaTeX (and TeX) package for Scheme.

Today in the Intertweets (March 22nd Ed)

This covers Monday also, since I slacked off (well, not really, I was working to pay bills)
  • Gabriel Weinberg added !clojure to http://duckduckgo.com for me! sweet. Try searching "!clojure reduce" for example... (via @puredanger)
  • Un avant goût de la session Clojure à #mixit le 5 avril : interview des deux speakers @cgrand et @petitlaurent (here, via @duchessfr) -- A teaser interview of @cgrand and @petitlaurent for their upcoming talk at mixit (in French)
  • Calling Clojure from Java no longer implies coping w/ checked exceptions. FYI, checked exceptions are a figment of javac (here, via @cemerick) -- In short, IFn.invoke no longer declares an checked exception, therefore all other functions that use this function don't need to either deal with it or also declare it. What for, nobody seemed to be able to do much with it. Now it throws run time exceptions.
  • Why we are choosing Clojure as our main programming language (here, via @gislik)  -- This company moved away from Python and to Clojure, and this article explains their thought process. This article was followed up by a lively discussion at Hacker News
  • Lucene demo written in Clojure (here, via@bartezzini) -- Lucene is a Java based search engine library. This links to the code of an example of usage of Lucene from Cloure.
  • book - Programming Concurrency on the #JVM: Mastering Synchronization, STM, and Actors (here, via @devstonez) -- A new upcoming book from The Pragmatic Programmers that covers concurrent development with and features the languages Clojure, Scala, Groovy, JRuby and Java.
  • To my Clojurian brethren: Return (or, Progress Report on Meet Clojure) (here, via @IORayne) -- Anthony Simpson gives us an update on the status of "Meet Clojure" a free book on clojure that he is writing. From the article it seems like Anthony might also be close to getting a book deal with a publisher for this book itself.

This weekend in the Intertweets (March 20th Ed)

  • Wanted and Unwanted Symbol Capture (here, via @planetclojure) -- To capture or to not capture variable names in a macro, that is the question.
  • Looking for help to improve my first sketch in Processing in Clojure (here, via @jaceklaskowski) -- Processing is a programming language for graphics and interactions. The author of this article tries to mimic this article that explores Processing from Scala, but with Clojure. He is looking for feedback.
    • Excellent summary of my mistakes and their solutions w/Clojure. Thanks @trzmiel. I'd love to read more though.(here, via @jaceklaskowski) -- Break down code into small functions, give them proper names, recombine them in a functional way. I like this recipe.
  • The Joy of Clojure MEAP is now complete and ready for download (here, via @liebke) -- Yay!
    • Steve Yegge's foreword to "The Joy of Clojure". Is Google using/considering Clojure? (via @rplevy) (here, via @kumarshantanu) -- Were did you get that?

Today in the Intertweets (March 17th Ed)

  • Clojure Entity Component System  (here, via @hnfirehose) -- This Entity Component System references the creation of game entities as an aggregation of different components as opposed of the mainstream model which is based on deep hierarchies. This article shows how to use this technique in Clojure.
  • Clojure gives you a usable stack trace when an error occurs. Node.js is all callbacks so no stack. (via @mperham) -- "usable" and "clojure stack trace" in the same sentence with a favorable tone, that is something I didn't expect. Could it be that for some the bar for usability is pretty low?... or maybe node.js stack traces are encrypted with triple-DES.
  • Get your Prolog on (here, via @swannodette) -- David Nolen has been implementing a mini-Kanren, a declarative logic programming language, on top Clojure for quite a while. One of the drawbacks of mini-Kanren is that programs tend to be very verbose, at least compared to Prolog.  Not any longer...
  • Clojure Programming: Chas Emerick, Brian Carper, Christophe Grand[Aug 15, 2011] (here, via @us_java) -- Nice list of authors! This is an upcoming book to be published by O'Reilly and it is shaping really nice!

Today in the Intertweets (March 15th Ed)

  • Clojure on The Beagleboard (here, via @yueliufeeds) -- The Beagleboard is an computer built on an open source design. It runs Linux and Java, and hence, Clojure.
  • Just released a simple serial comms library for Clojure (here, via @samaaron) -- Now you can really communicate with that serial mouse that you've been keeping around for so many years!

Today in the Intertweets (March 14th Ed)

  • Clojure Swing (here, via @hisaitami) -- Some code snippets to get stuff done with Swing in Clojure.
  • OO Funcional: Clojure, Coherence e JavaScript (here, via @paulosuzart) -- This article (in Portuguese) is about writing a RESTful layer on top of Coherence with Clojure, Ring, Rhino and Moustache. Rhino is used to execute functions sent over the REST API.
  • Emblogginated: "Scala. Fare Thee Well" (here, via @fogus) -- So Michael Fogus, of Joy of Clojure fame, is dropping Scala development to work full-time in clojure. He says nice things about Scala, but don't pay attention to what he says, pay attention to where his feet are taking him.
  • Clojuroids! (Asteroids written in Clojure).. Here's an early WIP (here, via @pauldoo) -- Oh! look at what I've found while stalking people in Twitter! Quite playable I must say!

This weekend in the Intertweets (March 13th Ed)

  • Slides from my presentation last night about Cascalog, ElephantDB, and Storm (here, via @nathanmarz) -- I had the pleasure to assist to the meet-up in which these were used. Backtype is a Clojure powerhouse and they're putting a lot of great open source projects out. These slides cover them all.
  • clojure 1.3 alpha 6 (here, via @stuarthalloway) -- One of the new features/bugfixes is "detect and report cyclic load dependencies (CLJ-8)". Looks like a rather old ticket!
  • Announcement: clj-decline - validation sucks (here, via @planetclojure) -- Why another validation library? you say. Read the rant^H^H^H^Hpost in which the rationale is laid out.
  • Announcement: ring-persistent-cookies (here, via @planetclojure)  -- There is no cookie in my house that persists. I don't think this will help with those either...
  • (converge [{:group-name "10cheapies" :image {:spot-price (float 0.03)} :count 10}] :compute ec2) (via @jclouds) -- Pallet just got support for spot instances in Amazon Web Services' EC2. Cloud computing on the cheap!
  • My Clojure impl of generalized quantifiers for English: just playing with a compositional model-theory #semantics. (here, via @jimtyhurst) -- This will let your code understand sentences like "less than 5 dogs barked" and validate if the sentence is true when matched to the model.

Today in the Intertweets (March 10th Ed)

  • Announcing borneo - a clojure wrapper for Neo4j graph database. (here, via @wagjo) -- This is not the first neo4j client for Clojure, and this implementation differs from clojure-neo4j in significant ways. Neo4j is a graph database (for java).
  • Music as Data (MAD) - Live programming music in Clojure (here, via @jonromero) -- (play! [A4 [B4 D#5]])  --> music!
  • POJP = Plain Old Java Programmer: A JVM based developer who knows only the #Java programming language (via @aloiscochard)
  • Rummage v0.0.1 released – a Clojure client library for Amazon’s SimpleDB (SDB) (here, via @cemerick) -- SimpleDB is a relational DB offered by Amazon. Cemerick wrote a new library based on an existing one (initiated by Rich Hickey himself), given that the latter had some design issues and lacked some features that the author needed.
  • Backtype, a #clojure startup raise 1m (here, via @wmacgyver) -- What's more interesting is that backtype is not shy to mention that pretty much all their code is cloure :). They have also produced some open source clojure projects like cascalog and elephantDB

Today in the Intertweets (March 9th Ed)

  • If you're like me and can't stand paredit mode with Clojure, do this: (add-hook 'clojure-mode-hook (lambda () (paredit-mode nil))) (via @ZurichFix) -- Emacs comes with a plugin that assists you into writing list code (called paredit). It works well, or very well, but it is not easy and it doesn't fit with everybody. So the tweet tells you how to turn it off. The alternative to turning it off is to memorize this.
  • rle in a tweet: (defn rle [s] (map (juxt count first) (partition-by identity s))) (via @cgrand) -- Run Length Encoding in one tweet (with characters to spare!)
    • @cgrand for completeness, (defn rld [s] (mapcat (fn [[n e]] (repeat n e)) s)) (via @alandipert) -- For completeness, of course, Run Length Decoding
    • Recursion is a low-level operation! (here, via @fogus) -- A lengthier explanation on how such succinct functions are built, inspired by the previous tweets.
  • Partial content for ring (here, via @planetclojure) -- When serving video you don't want to serve a whole movie in one shot. Instead, browsers request parts of the movie, or partial content. This is a ring handler that allows for this (with limitations)

Today in the Intertweets (March 9th Ed)

  • "I have just been asked by my company to rewrite a largish (50K LOC) Java application in Clojure."  (here, via @cemerick) -- This is a post on Stack Overflow. Somebody got asked to do the above job. Hopefully they won't pay by the line.
  • latest clojure conj video up! @technomancy, "Making Leiningen Work for You" (here, via @clojure_conj) --  This talk covers the many ways lein can be extended and used to do whatever you want it to do (provided it is legal and morally acceptable, that is)
  • New blog post, discussing how easy it is to do run code in parallel in clojure (here, via @mikewmeyer) -- This article provides a good playground to experiment with the different ways of parallelizing your code and measure the improvements against the fully serialized implementation. It turns out that the 'parallelize everything' option is seldom the one that gives you the most speed-up.
  • Transforming an accumulating mundane recursive fn into a tail-recursive fn (with Clojure) (here, via @fogus)  -- The title says it all, so I'll just stress that knowing how to do this is a useful skill to have.

Today in the Intertweets (March 7th Ed)

  • Part 1 of a tutorial on monads (here, via @planetclojure) -- A series of videos about monads in Clojure. Let's see if I finally get them!
  • The Joy of Clojure... finis! "The Joy of The Joy of Clojure Closure" (here, via @fogus) -- The Joy of Clojure is finally finished being printed on dead trees, but many of you probably have already read it a few times, at least judging from the twitter feed...
  • Posted 8 more episodes of #programothesis at http://youtube.com/emailataskcom covering clojure and conkeror and emacs (dired) (here, via @emailataskcom) -- Two of the new videos are about Clojure. Check out the rest of the clojure videos.

This weekend in the Intertweets (March 6th Ed)

This post actually covers the last few days, since I had a few technical issues (which, on the bright side, resulted in a very faaaaaast SSD in my laptop). Anyway, here you go:
  • My @clojure_conj talk on Simplicity is now available online: (here, via @stuarthalloway) -- If you thought defining simplicity is simple, you are simply oversimplifying.
  • Save the date! Clojure Conj 2011 is coming Nov 10-12 to Durham, NC. Register for updates (here, via @clojure_conj) -- Yours truly will be there in disguise. If you are planning on going, don't forget to register so that they know how many people to expect.
  • Clojure’s keyword can fill up your PermGen space (here, via @planetclojure) -- Yup kids, keywords don't get garbage-collected.
  • Btw Enlive 1.0 is out (here, via @cgrand) -- It was about time! This site has been (internally) powered via Enlive for over a year now (externally it is still Wordpress, embarrassing, I know.)
  • #clojure ring 0.3.7 released, now supports guessing mime-type by url extension. (here, via @wmacgyver) -- Slowly but surely, ring keeps getting more and more useful
  • Build your own Clojure toolkit (here, via @planetclojure) -- It might be obvious to Clojurians that come from the Java world, but for old lispers it might be not so obvious: it is pretty easy to share libraries in clojure, and even if a library is only a few lines of code the pain of releasing it is small compared to the benefits.

Today in the Intertweets (Feb 28th Ed)

  • OH "I don't write web servers often, but when I do, I write them in Clojure." (via @mattc58) -- :D
  • Visugit is a visualization tool for git repository, using Processing and Clojure. (here, via @fatrow) -- I can't really say I can make much sense of the posted screenshot, but it does look cool...
  • It's official. Node.js has surpassed Clojure in popularity (here, via @arnorhs) -- This is a conclusion reached after looking at google trends (i.e. what people are searching via Google). Also, on other news, Justin Bieber is still way ahead of Node.js in terms of popularity. Should I then assume that we'll soon all be running servers written in Justin Bieber? No? Apples to apples, please!

This weekend in the Intertweets (Feb 27th Ed)

  • Downloading binary files with Clojure (here, via @allwebdev) -- Downloading text files is easy with clojure's slurp, but when it comes to binary files, it might get a tad more complicated.
  • Agent-Based Simulation in ~130 Lines of clojure (here, via @jccc_) -- This article describes an agent-based simulation built to test an economic theory explained by Paul Krugman (well worth a read). The full source for this agent can be found here.
  • Blog post with an over-the-shoulder view of what I'm thinking as I refine a #clojure function (here, via @alanmalloy) -- ... or what happens when you keep thinking about the same problem over and over, until you hit the hammock a la Rich Hickey.
  • Common Lisp, Clojure and Evolution (here, via @ycombinatornews) -- This article summarizes the experiences learned from trying to follow the book Land of Lisp in Clojure (and Eclipse+CounterClockWise) instead of Common Lisp.
  • Clojure for Android source now available. (here, via @deepbluelambda) -- Contains quite a bit of wisdom on how to port such a JVM language to the more constrained Android environment.
  • Embedding V8 in a Clojure SPARQL library (here, via @antoniogarrote) -- The article's title should have been "How embed native libraries in your Clojure code". It's a good guide on how to do so, and it also teaches you how to embed V8 into the JVM.

Today in the Intertweets (Feb 24th Ed)

  • RESTful Clojure webapp w/Compojure, Ring, Enlive, and ClojureQL (here, via @planetclojure) -- This article points at an application template to create RESTful apps, including DB work. It is very lightweight, and if you don't know where to start, this is a good place.
  • The Future of #R is #clojure? (here, via @algoriffic) -- This is a presentation about the fact that R, a well known open source statistical package, is too slow and it is not scaling well to cope with the explosion of data of late. One of R's original author is longing for Lisp (R was originally a lisp), and the presenter suggests Clojure.
  • Getting started with Emacs for Clojure development in Windows (here, via @planetclojure) -- An update summary on getting a decent clojure environment in Windows.
  • Adapting a #clojure protocol to another protocol (here, via @david_mcneil) -- A library that lets you define translations between clojure protocols at a global level. Pretty slick.

Today in the Intertweets (Feb 23rd Ed)

  • Clojure Libraries webapp up. Needs a lot of work still but starting to come together. Not ready for use yet. (here, via @gstamp) -- A web application to keep track of clojure libraries. WIP and in alpha stage for now.
  • Only now learned of "Scala levels". Seems like a sad (inevitable?) turn. Feeling re-vindicated in my bet on Clojure. (here, via @cemerick) -- So at which level would a clojurian be allowed to use mutable state if Clojure had this layered system? what about macros? and anaphoric macros?
  • Advice to a Newbie (here, via @yueliufeeds) -- This is an email to someone that wants to learn Clojure, and whose author decided to make public, in case you get asked this very same question. It basically goes like this: read SICP thoroughly and do *all* the exercises, all of them, and then we can talk.
  • Steps and Flows: Higher-order Composition for Clojure-Hadoop (here, via @planetclojure) -- This post is about the higher-level features that clojure-hadoop is about to get. They focus mainly in setting up complex workflows.
  • Clojure Toolbox (here, via @ycombinatornews) -- It looks like today is the day to release web pages about clojure libraries. This one is not in alpha, but in beta, and it is curated by James Reeves, the author of Compojure.

Today in the Intertweets (Feb 22nd Ed)

  • Is it just me or the "minor" languages are among the most fundamentally important ones#erlang #haskell #scheme #clojure (here, via @vdichev) -- This is an article by the well known book publisher O'Reilly that analyzes the state of the computer book market. Clojure, along with Erlang, Haskell and Scheme are catalogued as *minor* languages in this report, since they all sell between 1000 and 1680 units/yr... are you guys buying your Cojure books?! What's worse is that the sales number of Clojure books in 2010 was lower than in 2009. But this is about paper books, not counting electronic book sales...
  • Great work by Andy Fingerhut on making the #clojure cheatsheet linked to docs! (here, via @puredanger) -- I concur. Bookmarked.
  • Check out my CouchDB with Clojure article, just published on developerWorks (here, via @objcmdo) -- This is a very complete tutorial on using CouchDB from Clojure via Clutch. It covers everyting from creating/updating documents to DB replication and conflicts.
  • New #clojure conj video up, @petitlaurent, "State of Counterclockwise" (here, via @clojure_conj) -- CounterClockWise (CCW) is the Clojure plugin for Eclipse.
  • Need to store your ring sessions in riak? Give a shot (here) and LMK how it goes. (here, via @ossareh) -- ring-session-riak lets you use the very distributed and redundant riak store to --surprisingly-- store your session data to be shared across web servers.

Today in the Intertweets (Feb 21st Ed)

  • New Android/Clojure series post on using ProGuard to make your app smaller and possibly faster (here, via @deepbluelambda) -- This article discusses how to use ProGruard to make your uber-jar (i.e. jar containing both Clojure code and the Clojure runtime) smaller.
That's all. I guess it was President's Day here in the US and in the rest of the world was attached to their TV screens following all the revolutions going on out there...

This weekend in the Intertweets (Feb 20th Ed)

  • Working on an article on turning #clojure applications into proper unix services (via @abedra) -- Is it done yet? Is it done yet? Is it done yet? Is it done yet?
  • Bandalore: a Clojure client library for Amazon’s Simple Queue Service (SQS) (here, via @cemerick) -- It wraps the official AWS's Java SDK while giving it a very clojurey feel.
  • clojure Simple Theorem Prover、まともに動いた。(here, via @kencoba) -- Based on Programming Language Theory and its Implementation (link to PostScript file, your browser might crash), by Michael J.C. Gordon
  • Continuation-Passing Style in Clojure (here, via @hnfirehose) -- Ever wondered how Clojure code in CPS would look like given that Clojure has no Tail Call Optimization? Hard to read, that's how! (at least for the untrained eyes, like mine are)
  • Just open-sourced ElephantDB. Blog post coming next week. (here, via @nathanmarz) -- ElephantDB is a database that specializes in exporting key/value data from Hadoop so you can use this data in a read-only fashion
    • Also open-sourced companion projects for writing to ElephantDB from Cascading or Cascalog (here and here, via@nathanmarz) -- Oh, that makes it even easier to use it.
  • New Clojure IDE written in Clojure... (here, via @puredanger) -- Screenshots or it didn't happen! It comes with a nice plugin architecture. Still a proof of concept though.

Today in the Intertweets (Feb 17th Ed)

  • "What Irma Rombauer did for cooking, @fogus and @chrishouser have done for Clojure." (here, via @technomancy) -- Clojure is tasty!
  • Interweb piece of knowdlege of the day (learned at the #clojure channel @ freenode) (here, via @gbarrancos) -- UGT: Universal Greeting Time, that's an interesting concept. In Spain it means something totally different...
  • A little late, but blogged about Clutch 0.2.4 (here, via @objcmdo) -- A short note on the new features of Clutch 0.2.4 a CouchDB client and view server.

Today in the Intertweets (Feb 16th Ed)

  • Parallel programmieren mit Clojure. (here, via @SW_DevTwits) -- This is an article from the authors of the German Clojure book. This article introduces the many features of Clojure that aid at writing concurrent software. Here is the google-translated version of this article.
  • Is removing parentheses worth it? (here, via @planetclojure) -- This article provides some food for though regarding the choices made in order to reduce the number of parentheses needed in Clojure (vs. Common Lisp, Scheme, etc...)
  • Joy of Clojure will be sent to the printer soon. (via @joyofclojure) -- Yay! Dead trees!
  • All chapters have been updated for Clojure in Action to reflect your feedback. Time for Production (via @ManningBooks) -- Yay! More dead trees!
  • Clojure's gen-class and JRebel (here, via @antonarhipov) -- JRebel is a library for Java that lets you dynamically reload your code into the JVM. This article explains how to take advantage of JRebel in clojure in the few cases in which the code is not dynamic: when generating classes with gen-class.

Today in the Intertweets (Feb 15th)

  • popen - A sub process library (here, via @planetclojure) -- This small lib lets you create processes in the shell and read from/write to them.
  • Closuritis: inflammatory disease which causes your #clojure code to be littered with "((". (via @cgrand) -- :D
  • My Clojure REPL is now available from the Android Market. Feedback is welcome. (here, via @deepbluedambda) -- Now I wish I had an Android phone...

Today in the Intertweets (Feb 14th Ed)

  • Macro or not to macro? (here, via @panetclojure) -- In the rare case that you need to write a macro, this article provides some common sense about writing them (mainly, consider the user of such macro).
  • TDD in Clojure: Mocking & Stubbing (here, via @jneira) -- A short and sweet article on how to use clojure.contrib.mock
  • SICP Chapter 4.5 - Art of the Propagator (here, via @planetclojure) -- David Nolen found a paper that could be chapter 4.5 of Structure and Interpretation of Computer Programs.  From the referenced paper by one of the authors of SICP: "This model makes it easy to smoothly combine expression-oriented and constraint-based programming; it also easily accommodates implicit incremental distributed search in ordinary programs"
  • ref-set vs commute vs alter: What is the difference in the 3 ways to set the value of a ref in Clojure? (here, via @stackoverflow) -- Because sometimes it is good that somebody reminds us every now and then that you can update a ref in clojure in 3 different ways....

Today in the Intertweets (Feb 10th Ed)

  • Someone make a version of this for #Clojure. defn baby! RT @xach: Just Defun It (here, via @publicfarley) -- Just defn it!
  • All #clojure mocking libraries I can find break for multithreaded code (they use binding). Any others? (via @paraseba)
    • See with-redefs, available in 1.3a3 or just grab the code. Fully described in Joy of Clojure (here, via @chrishouser) -- Ask and you shall receive :)
  • Quora: What are some large websites built with #FunctionalProgramming systems ... 10 Answers (here, via @ qu1j0t3) -- Clojure has a good number of decently sized websites. Can you add more to the list?

Today in the Intertweets (Feb 9th Ed)

  • Poor Man's Integrating Leiningen into Counterclockwise (Clojure Eclipse IDE Plug-in) (here, via @kumarshantanu)  -- Since there is no Leiningen plugin for Eclipse, here is how you can have Eclipse work with leiningen.
  • "In Clojure code things tend to happen exactly where you happen to be looking." -- @fogus (here, via @chrishouser) -- Chris Houser and Michel Fogus are responding to all questions in coderanch.com.
  • SLIME hints #5 - slime-apropos (here, via @planetclojure) -- Find a function in any namespace in your running REPL.
  • evalive a go go (here, via @planetclojure) -- Michael Fogus releases this project that provides all an evil twin to 'eval', called 'evil'. And destro.

Today in the Intertweets (Feb 8th Ed)

  • rlwrap: enable Clojure readline support (here, via @crxor) -- In case you missed it, lein supports both jline and rlwrap. This article discusses how to get them to work on a OSX system.
  • Reading CSV files (here, via @tebeka) -- Relatively short code snippet that parses through large CSV files without first loading all file into memory. Lazy sequences are your friends.
  • Another Clojure conj video up! @liebke, "From Concurrency to Parallelism (here, via @clojure_conj) -- This talk is from the creator of Incanter and talks about the upcoming parallelization features for Clojure.

Today in the Intertweets (Feb 7th Ed)

  • Creating Android applications with Clojure (here, via @planetclojure) -- This is part two of a series about writing Android apps with Clojure.
  • Why I made DSLs In Action polyglotic (here, via @planetclojure) -- Debasish Ghosh recently published DSLs In Action. This book describes how to create Domain Specific Languages in various languages, and the author --after many asking this question-- now explains why?
  • Our Stack: iOS, Mac OS X and Clojure on Google App Engine (here, via @newesery1) -- The Path of the  Seven Millenia is a Digital Graphic Novel, a very interactive interface to an interactive story. Amongst other things, they use Clojure on the Google App Engine for the server side stuff, and this article explains why.
  • The Joy of Clojure takes over the Javaranch starting tomorrow. Meet Mike and Chris thru Friday! (here, via @ManningBooks) -- Head over and ask questions, you might get a free book in return.
  • clojuresque 1.4.0 released. Integrating clojure into #gradle (here, via @kotarak) -- And you thought that the decision about a build tool was between Lein, Cake and Maven, huh? Do not overlook clojuresque, which integrates clojure builds nicely into the oh-so-pleasant and powerful gradle build too.

This weekend in the Intertweets (Feb 6th Ed)

  • Is it just me or are clojure error messages generally useless? (via @arcatan) -- It's not just you. But try the following: make sure you're 3 feet away from your screen (2 feet if it is a laptop) and squint your eyes while focusing on the center of the line in middle of the exception trace. After a few minutes, a useful error message will emerge in all it's 3D glory!
  • Типы и протоколы в Clojure (original, English translation, via @alexott) -- An introduction to Datatypes and Protocols in Russian, which is part of the larger Introduction to Clojure (English translation courtesy of Google here)
  • Clojure is getting faster on shootout, almost 3 times fastre then few months ago (here, via @REDDITSPAMMOR) -- This is a summary of a few benchmarks run on programs written in both Java and Clojure. This is Clojure 1.2 by the way. You can also compare Clojure to other languages by changing the drop down at the top of the page.
  • Clojure: &env and &form (here, via @BundleOfStartup) -- This article is about the rather obscure &env and &form forms that can be very useful when used for debugging macros.
  • Learn Clojure in sunny Chicago! This'll be a lot of fun (here, via @trptcolin) -- Snow is the new Sun apparently... 2 days, from the author of the Clojure Koans himself!
  • clojure trick: use (->> (do <random stuff> )) to cause side effects inside -> and pass along the value. (via @pepijndevos) -- Clojure is definitely a language to be used in tweets.
  • I wrote an introduction to fnparse (here, via @brehaut) -- fnparse is a parser combinator library for Clojure using the tasty backtracking state monads (they must be edible with that name!) This article is provides a rather extensive coverage of the library and how to use it.

Today in the Intertweets (Feb 3rd Ed)

  • Clutch 0.2.4 is out. Compatible with the latest version of #couchdb, and revision retrieval thanks to @objcmdo (here, via @ashafa) -- That would be version 1.0.2 of CouchDB
  • Another clojure rabbitmq lib has appeared. (here, via @wmcgyver) -- "WabbitMQ is a simple Clojure wrapper for RabbitMQ's Java client library (v2.2.0)" Very appropriate since we're now in the Year of the Rabbit

Today in the Intertweets (Feb 2nd Ed)

  • Der Screencast meines #clojure Vortrags in der #jugf ist hochgeladen. (here, via @kotarak) -- Meikel Brandmeyer talks about Cloujre for the Frankfurt Java Users Group, in German of course.
  • Was annoyed with debugging let statements so wrote this... anyone know a better way? (here, via @gar3thjon3s) -- This is an interesting one; knowing what your let binding are bound to is sometimes quite of a pain. In this article a solution is proposed, but clearly it is not too comprehensive (e.g. wouldn't quite work with destructuring, so the author asks if anyone knows a better alternative. I want to know too!

Today in the Intertweets (Feb 1st Ed)

  • New #clojure conj video released, @mmcgrana: "One Ring to Bind Them" (here, via @clojure_conj) -- Another video from the Clojure Conj 2010 conference. I'd say it's a must watch...
That's pretty much it. Slow news day today, unless I missed something big (which could happen).

Today in the Intertweets (Jan 31st Ed)

  • Dmitry пишет: Hotpatch и декораторы (here, via @fprogblogs) -- More about anaphoric macros. This time a hotpatch macro that lets you swap the implementation of a function. (here is the google translated version.)
  • Is there a software-engineering methodology for functional programming? (here, via @planetclojure) -- Somebody asked at StackOverflow if there is any sanctioned software engineering process to be used while building software on functional languages. I'm surprised there is no mention of hammocks, but there is one about tar pits.
  • TDD in Clojure with top-down-ness, abstraction, and #midje (video here, via @marick) -- "This is a demonstration of TDD in Clojure using a top-down style and greater abstraction than I think is common."
  • Latest ThoughtWorks technology radar puts Scala in "Trial" zone ahead of Clojure and F# (here, via @mushtaqA) -- Notice that the reason is because there is better adoption in the enterprise of today... but what about the enterprise of the future?! "We had expressed a slight preference for Clojure because it is the smaller and more focused language. Since the last radar we have realized that the wider applicability of Scala makes it more approachable for enterprise developers, and we have witnessed great successes in the adoption of Scala. Consequently we have moved Scala into our Trial category." You can find the fancy 'radar' graph here.

This weekend in the Intertweets (Jan 30th Ed)

  • 建立CN-Clojure群组,对clojure有兴趣的朋友都可以加入,希望在国内能有一个交流的场所 (here, via @killme2008) -- Cool! A Chinese clojure email list.  Here is a short post that describes the intents of the cn-clojure list (here is the non-translated version)
  • Clojure wrapper for OpenKinect! (here, via @jonromero) -- Man, doesn't this look like a fun project?! "The advantage of having a REPL is HUGE. You can play around, experiment and test many libraries on-the-fly." REPL + Kinect = Win!
  • Non-breaking error handling in Clojure: Part Deux (here, via @kumarshantanu) -- Here is part one. What if instead of throwing an exception, you just returned it as a value? What could you do with it?
  • When an Agent Calls Another Agent in Clojure (here, via @ralfbn) -- It is actually quite cool how clojure handles this; and you get to write stuff like @@ref
  • Анафорические макросы на Clojure (here, via @fproblogs) -- Anahporic macros are macros that let you refer to the results of a previous calculation.  Writing an anaphoric 'if' in some lisps is relatively easy, but Clojure makes it harder because macros in clojure can't capture a variable name. This article proposes a solution. Here's the English google translation in case you Russian is not that great.
  • A tour of the Clojure landscape (here, via @ycombinatornews) -- "I am working on an automatically-generated, browseable directory of Clojure libraries. If I am viewing a library in such a directory, the directory should be able to give me a list of other libraries that I should consider instead, as well as a list of libraries that work well with this one. The directory application could infer such information automatically based on how often various libraries are used together on Github." The article comes with a good summary of the findings while graphing the clojure project relationship map.

Today in the Intertweets (Jan 27th Ed)

  • I have a feeling Bruce Eckel will not be writing a "Thinking in Clojure" book anytime soon. That said I'm still having fun writing in it. (via @nicolaus) -- That would be a mind bending book if done right :)
  • Cleanup Strategies semantics for different languages (here, via @planetclojure) -- Interesting article about the finally clause in try/catch constructs in most languages, how it works different in clojure, and how it makes sense.
  • Macros are like salt: a little tastes yummy, too much tastes yuck (via @dysinger) -- Wisdom.
  • Weird, my #Clojure code seems to shrink during development while my #Java code always used to grow. (via @mauritsrijk) -- From the "It Happens" department: it happens...

Today in the Intertweets (Jan 26th Ed)

  • RT @richhickey: @jboner hey, that's my mantra :) -> I love clojure, I wish someone would pay me to work on it... (here, via @BigThingist) -- Rich, we all want that to happen...
  • #fsharp falling; why? presentation? approach? community? (here, via @dc0d) -- That is quite troublesome. F# is a good language that deserves a lot of success in the Microsoft world. By the way, this chart plotted in relative terms. Click here for an absolute view of the same data... yeah, Scala is getting big; although all seems meaningless if you add Java to the mix, but then again, Clojure still rocks in relative terms...
  • OpenCV wrapper for clojure (here, via @antoniogarrote) -- Here is the project's home page. OpenCV is a computer vision library for real time computer vision. This project wraps this library to be used in Clojure. Here is an example of what you can do with it.
  • I love this #clojure IRC log (here, via @foogoof) -- Oh man! this is awesome :)

Today in the Intertweets (Jan 25th Ed)

Note: This post covers all events since last Thursday (the 20th). I had technical difficulties (Comcast, I am looking at you!) all weekend until today. In any case, lots of cool stuff in this post :)
  • live-processing. a #processing clone with livecoding capabilities. build on #clojure (here, via @vilsonvieira) -- Processing is a programming language for image generation and interactive applications. This project makes it possible to program processing live, at the REPL, in clojure :)
  • Just uploaded a guided example on building clojure apps for android using #maven & #emacs. #clojure (here, via @hsaliak) -- The README in the project contains very detailed instructions to get this project working on your fancy phone (that is not an iPhone) You have no excuse now.
  • A clojure swank server on android devices using this hack (here, via @alandipert) -- swank-android-builder is a script that will download all the components and build them into what is the android-swank application.
  • Cleaning Old Definitions from the REPL : shred-user (here, via @planetclojure) -- This is a tremendously useful hack to clean out your 'user' namespace (or any other for that matter) of any function definitions or other root bindings that you might have created. By the way, this blog is full of good stuff!
  • Scheme interpreter in clojure:      昨天晚上用clojure搞了个scheme解释器,基本上是sicp里的解释器的clojure翻译版本,可能唯一值的一提的是对transient集合的使用... (here, via @rainmanzhu) -- A scheme interpreter in clojure. Guess what is missing? ... yeah, tail call optimization. I wonder why? For what I can gather, this is based on the interpreter described in SICP.
  • An Error Monad in Clojure (here, via @hnfirehose) -- Make sure you read the words in this tweet in the right order in order to avoid Freudian slips. To be clear, it doesn't say "Monads are an error in Clojure". This article shows what monads can be used for; in this case, an if-let of sorts that can handle many clauses and that will skip the evaluation of the body if any of the clauses fails.
  • A LinkedBlockingQueue Transport for Conduit (or one way of sucking async data into a distributed processing system) -- Conduit is a stream processing library for Clojure. From the author of this post: "... but all I really understand is that arrows are like monads, but even even scarier." Excuse me, scarier than monads?!
  • New clojure conj video up, @chrishouser: "Finger Trees: Custom Persistent Collections" (here, via @clojure_conj) -- A finger tree is an interesting purely functional data structure that can be used to create other more common data structures in a very efficient way. Used in Haskell and OCaml, soon they'll be available in clojure.

Today in the Intertweets (Jan 20th Ed)

  • clojure compojure 0.6rc1 released. finally supports context! (here, via @wmacgyver) -- The new version of compojure provides a way to nest routes within routes, and some breaking changes.
  • Here's an interesting approach to explaining macro writing macros (here, via @LauJensen) -- If you ever tried to break a macro into smaller macros, or write a macro that creates macros, then you probably know why everyone should read this article. If, on the other hand, you never tried those things, you're probably thinking 'what's the deal?', well, it's a big deal.
  • Asynchronous Events in Clojure (1h38m video), speaker Stuart Sierra, Clojure-NYC 17nov2010 (here, via @gknauth) -- "How can we respond to events outside our application? How can processes talk to one another? Are Actors useful after all? What the bleep is RX? What about message queues?"

Today in the Intertweets (Jan 19th Ed)

  • http://aws.amazon.com/elasticbeanstalk Pretty cool. Only for Java but JRuby + Scala + Clojure apps can make it work (via @abhiyerra) -- This is a new service by Amazon Web Services. Now they offer Tomcat container services, which means that you don't need to do much more than telling AWS to deploy your .war file. No need to configure anything. Will scale automatically.
  • Presentation:Clojure-Java Interop: A Better Java than Java (here, via @infoq) -- "after reviewing Clojure’s syntax comparing it with Java, explains how Clojure-Java interoperability works. He then talks about the need for simplicity in languages, attempting to prove that Clojure is a simpler language, and consequently better, than Java." You might have heard this one before...
  • I wrote a blog post about my upcoming book, Meet Clojure (here, via @IORayne) -- Free as in freedom, focused on beginners, an attempt to being a prequel to The Joy of Clojure. Sometime in the future. A web version might follow.
  • It's quite telling when InfoQ's "latest from Java" has the following titles: "Groovy Update", "JVM Languages", "Clojure", "Future of Scala". (via @steshaw)  -- !
  • Lisp Cabinet - CL/Clojure/Racket all-in-one Windows installer (here, via @hnfirehose) -- If you're doing Clojure, most likely this is not the only Lisp in your life. Get them  all in one package! (if you're on Windows)
  • Introduction to Clojure Web Development using Ring, Compojure and Sandbar (here, via @sivajag) -- Short and sweet.

Today in the Intertweets (Jan 18th Ed)

  • Nice Clojure demo midje test like writing prolog.. RT @unclebobmartin: STUB5: Prolog, Midje, and Test Specifications. (here, via @tux2323) -- So Midje, a testing framework for clojure, is basically a Prolog, a logic programming language. Since Prolog is a Turing-complete language (as Lisp is), then you technically can write your code in logic style with Midje, instead of using the functional style of clojrue. In the example in the linked video, you can see how Bob Martin wrote the same function twice: one is the function to test, and is written in functional style, and then there is the test function, written in logic style. They are equivalent!
  • Switch to non-promoting math ops by default in CClojure 1.3 seems like a bad design decision. Robustness > performance. (here, via @mstepniowski) -- And here we go again. Definitely this issue is less than settled, except that it looks like Rich Hickey has already made up his mind, and we all know what that usually means...
  • This is a useful little library. It intelligently reloads all your Clojure src in live runtime, avoiding JVM startup. (here, via @slagyr)
  • Ideas about asynchronous functions, inspired by @puredanger 's concurrent framework post (here, via @ztellman) -- This post shows how to write asynchronous functions with Lamina, an event-driven workflow framework. With this solutions you could achieve large concurrency with little wait-related overhead. This is in response to this post from two days ago.

Today in the Intertweets (Jan 17th Ed)

  • @kirkwy is 100% on the mark I've been saying this a while but he is much more eloquent. Same applies to Clojure,F# etc (here, via @fortyrunner) -- This is a rather long but thoughtful article about the perils of adding a new language to a large Java project. It is directed to Scala, but as the author of the tweet remarks, it applies to other higher level languages that work over a host language (JVM, .NET)
  • Namespaces for Clojure's Deftype and Defrecord (here, via @hnfirehose) -- I am sure most of you that tried deftypes and defrecords were hit by this at first. Those two types result in Java classes being created. This means that they're both Clojure and Java types, and therefore they need to be imported twice, both as Clojure (use, require) and as Java (import)
  • New #clojure conj video up, @cgrand: (not= DSL macros) (here, via @clojure_conj) -- Christophe Grand's presentation at the Conj was about how sometimes one can avoid using macros in places where they seemed required -- DSL building in this case-- and gain a lot of extra flexibility from this.
  • A Very Gentle Introduction to Information Theory: Guessing the Entropy (here, via @planetclojure) -- John Lawrence Aspden is running a series of articles on Information Theory using Clojure.  At this moment there are already 4 posts about it.
  • Now every time I have to write a for(int i=0; ...) loop in Plain Old Java, I feel a little dirty. Thanks a lot, #Clojure. (via @pmbauer) -- From the "It happens..." department: it happens...

This weekend in the Intertweets (Jan 16th Ed)

  • Dynamically redefining classpath in Clojure REPL (here, via @jaceklaskowski) -- Ooooh! I didn't know you could do that! Can we get this into Lein/Cake/mvn? or is it already there? Basically you can dynamically add new .jar files into your classpath and use them right away.
  • First cut of align-cljlet. Let statement alignment for clojure & emacs. (here, via @gstamp) -- Pretty code is pretty.
  • It's getting better and better (here, via @vilsonvieira) -- The latest PDF of "Clojure in Small Pieces" has a lot of content in it. (Warning, that's one BIG file)
  • Wrote up some thoughts about different concurrency frameworks (here, via @puredanger) -- This is a good survey of the options that you have when dealing with highly concurrent systems. Worth a read, as when the level of concurrency is high enough, some solutions are better than others.
  • fs - File system utilities for Clojure: fs - file system utilities Clojure is out (and created a small debate :) (here, via @tebeka) -- A library for manipulating files and the file system from clojure at a similar level as you would to at the shell.

Today in the Intertweets (Jan 13th Ed)

  • How should Clojure applications be structured? (here, via @cemerick) -- That is a very good question.
  • Counterclockwise (clojure eclipse plugin) 0.2.0 RC4 out ! Help us, test it and give feedback! (here, via @petitlaurent) -- And what happened to RC2 and RC3 you ask? Well, sorry to say this, but they didn't make it... but RC4 did, so it is time for you to give it a try! Completion at the REPL, more structural edits and a more reliable editor are amongst the new features.
  • My first blog this year. About #Clojure protocols (here, via @mauritsrijk) -- This article contains some code to list the protocols that a datatype implements.
  • enumeration-seq is a handy lil function in clojure core to know about. turns any Enumeration into a seq (here, via @alandipert) -- Argh! I could have used this one a few weeks ago!

Today in the Intertweets (Jan 12th Ed)

  • A proposal for real multi-line comments in Clojure (here, via @IORayne) -- #| this is a comment that is very very long, so long that it expands to multiple lines, but it doesn't evaluate to 'nil' like 'comment' does, nor it needs to be well formed clojure code, no... it can be *anything* and it evaluates to less than nil, nada, zilch; it just goes puff! |#
  • infoQ Interview:Chris Houser Discusses Clojure (here, via @silvan_rss)
  • Used to code scala at home and java at work. now I code scala at work and clojure at home (via @johlrogge) -- Work at home, you'll be happier and more productive!
  • Emblogginated: "Pattern Matching vs. Destructuring… to the death!" (here, via @fogus) -- What's the difference between destructuring and pattern matching? Not that easy, huh? that's why you will need to read this article.
  • YouTube version of Intro to #midje for #clojure.test users (here, via @marick) -- Midje is a(nother) test framework for clojure, with the goal of providing readable tests, and with a migration path from clojure.test. Now if you want to know more about it you can just watch this 8 minute video.
  • ちょっと面白い。Hadoopの部分はClojureか・・・フロント周りとの統合は今後の要注目かな。(here, via @okachimachiorz1) -- I am not going to bother with the google translation, but this is an on readwriteweb (in English to boot) about backtype and the technology they use, which includes Clojure and Cascalog amongst other cool technologies.

Today in the Intertweets (Jan 11th Ed)

  • CUFP 2010 videos are now online! w/ @fogus @marius @lukehoban @galoisinc; (here, via @avsm) -- Commercial Uses of Functional Programming, that's what CUFP stands for. It's awesome that they put those videos online, now If the day lasted 30 hours...
  • JS implemented as a real JVM language using Clojure? Yes please! (here, via @greenideas) -- This refers to Mug, a JavaScript to JVM compiler built on Clojure, which results in execution times sometimes 2x faster than Rhino (the JVM JavaScript interpreter). Note that Mug is a compiler, not an interpreter.
  • Latest clojure Conj video up! @fulldisclojure, "Protocol XIII: Clojure Protocols Explained" (here, via @clojure_conj)
  • New project: Analemma is a Clojure library for generating charts and Scalable Vector Graphics (here, via @liebke) -- Now you can create charts for the web that will scale nicely, because they are SVG (vector-based), not PNG (raster-based). By the way, the library also has a SVG library to create things other than charts. WIP, but very promising!
  • Quick Ref for #Clojure Core (here, via @codezone) -- ClojureDocs has a cool ref card for clojure.core
  • clojurejs -- a #Clojure to #Javascript translator (here, via @funcall) -- More clojure+JavaScript today, in this case compiling Clojure directly to JavaScript, so you can run it in the browser :)
  • Clojure: fnil (here, via @planetclojure) -- Ever heard about fnil? Having NullPointerExceptions every now and then? Read this article.
  • Streamlining Hadoop and Clojure with Maven (here, via @ieslick) -- This article is about a successful strategy for deploying Hadoop jobs in clojure that use many 3rd party libraries, a situation in which if you use enough nodes, sending the jars over to each node can be too slow to be practical.

This weekend in the Intertweets (Jan 9th Ed)

  • I'm broken beyond repair: I wanted to start a blog, but I'm now writing a blog generation library in Clojure (via @paraseba) -- It happens, it happens...
  • Interview with @LauJensen: ClojureQL 1.0.0 Beta 'totally different in every regard' (here, via @JAXenterCOM) -- Nice! Clojure getting more exposure via @LauJensen and ClojureQL.
  • Make Emacs and clojure-mode indent your own macros and forms like `defn` (here, via @learnclojure) -- That's a neat trick. This way, Emacs will treat your macros as some of the clojure special forms when performing automatic indentation. I have been wanting this for quite long myself :)
  • Analysis of the #LessAmbitiousMovies Twitter Meme (here, via @planetclojure) -- So if you're on twitter you might have noticed an annoying (at least to me) meme spreading fast (and dying quite fast too, to my enjoyment) in which people tweeted toned down movie titles. This study, done with Clojure and Cascalog, only took 2 hours to put together and it tracks 25TB in social data. Not bad, not bad.
  • Clojure for module development in Google Guice? Weird? (here, via @ jaceklaskowski) -- Guice is a dependency-injection framework developed by google. Why you'd want to use that with clojure, I do not know...
  • Lisp (including Clojure) is finally an A grade language on the TIOBE index for 2010. 2011 will be even better. (here, via @ghoseb) -- Up and up! .... er, what? Still behind Delphy?!
  • How to build a Social Media Site using Enlive/Moustache/ClojureQL (here, via @LauJensen) -- This is a quite detailed article about building a non-trivial site with the mentioned tools. If you are building or planning on building a website in clojure this is a good place to start reading.

Today in the Intertweets (Jan 6th Ed)

  • Site that unites prospects Clojure employees with companies (here, via @odeskjobtweets) -- ooohh! Look at what I found while looking for clojure tweets! Oh c'mon, if you want a site for clojurians to find jobs, it must be written in clojure and you must write it all yourself, just like discl... oh, wait.
  • speclj 1.2.0 released last night. TDD in Clojure keeps getting better. (here, via @slagyr) -- Pronounced like "speckle", this is a RSpec-based TDD/BDD framework for clojure.

Today in the Intertweets (Jan 5th Ed)

  • (ns clojure.babyboy) (def gaël (-> (comp emilie cgrand) Thread. .start)) (via @cgrand) -- Somebody just got busy! :) Congrats!
  • I've just released ClojureQL 1.0.0 - Please see http://clojureql.org for more info! Big thanks to all contributors!! (here, via @LauJensen)
  • Emblogginated: "The Marginalia Manifesto" (here, via @fogus) -- Marginalia is a literate programming tool for clojure inspired by docco. It makes reading someone else's code a pleasure, provided they actually have comments in the code (the literate part). Now read this blog, go to the marginalia website, and get your projects literate. Do it now. With a little bit of work, your code will too look like this.
  • In memory map/reduce framework in 25 lines of Clojure (here, via @newsbloom4) -- Well,mapping and reducing wasn't distributed at first, ya know?
  • Cooperative concurrency in Clojure (here, via @pepijndevos) -- Make one single thread execute many functions in an interleaved manner without getting the OS scheduler involved.

Today in the Intertweets (Jan 4th Ed)

  • I ported Clojure's Persistent Vectors and Hash Maps to Haskell (here, via @REDDITSPAMMOR) -- That's a new one, Haskell getting inspiration from Clojure!
  • Rich Hickey stops Clojure funding appeal from 2011 onwards (here, via @newsbloom5) -- I don't really know what to say about this one. I am sure there is a backstory that is only known by a small group of people, or maybe only by Rich himself, and we just don't know it. Given that we only have partial information it is hard to say what is wrong with Rich ending the donation drive a week after it started: that he ended it? that he was forced to end it? that clojure/core exists? that patches are not applied fast enough? that there should be a road map? that some users are feel too entitled? that clojure still needs more time to grow freely before being declared mature? Whatever it is, we must fix. But for now, how about we all chill for a while? Maybe take some time to think things over? Rich should be able to do what he likes to do (moar clojure goodies!), the community should be able to fund his efforts, and the development of clojure should be a little more transparent and open. Or maybe it is already open enough, and if so, anyone here with a PR background  and some spare cycles?... No?
  • Playing with fork/join from #clojure (here, via @puredanger) -- Alex Miller plays with the upcoming fork/join feature in Java 7 and provides an easy way of using it from Clojure.
  • The business model seems to be: 1. Create nifty new language 2. Popularize the above 3. Form startup selling training (via @djspievak) -- A sign that Universities are not doing their job anymore maybe?
  • I really don't understand the point of Clojure. Did someone fail to get the Lisp beast in the heart with a wooden stake? (via @GeorgeReese) -- Yes, they failed. Thanks for asking though!

Today in the Intertweets (Jan 3rd Ed)

  • Practical Clojure (Apress) - Purchase Practical Clojure for $10 (here, via @thriftebook) -- I am probably posting this too late :(. The deal expires midnight PST... so in a few minutes. Hurry up!
  • Happy new year! New #clojure conj video, @tomfaulhaber "Lisp, Functional Programming, and the State of Flow"  (here, via @clojure_conj)
  • Exploring Yahoo S4 with Clojure (here, via @antoniogarrote) -- S4 is a data stream processing platform that was recently released by Yahoo. This article explores S4 from clojure, solving some quite hard clojure-to-java integration issues and presenting clj-s4, a nifty clojure library to interact with S4.
  • Run the maven-clojure REPL from in emacs (here, via @alandipert) -- What the tweet says. Linked is some elisp code to make your emacs even clevererer than before by learning how to start a REPL from emacs.

This weekend in the Intertweets (Jan 2nd Ed)

Wait, is it already 2011?! Somebody hit the brakes on time, it's going too fast!
  • New blog post about creating simple command line apps in clojure (here, via @gar3thjon3s) -- This article shows how to do unix-style command line utilities with clojure, including parameter parsing and handling, and also not putting all the file in memory before processing it.
  • The best things in 2010 (here, via @planetclojure) -- @fogus lists what he thinks are the best things of 2010, including best clojure blog posts and such. Oh, and also counts the numbers of books he wrote this year. 1. weak.
  • Overheard: Has Clojure development stalled? - Lau: Does Clojure development appear a little stalled to you?... (here, via @LauJensen) -- Do we really need to do this during such dates? Yes, apparently. I can't complain because I was offline during all those days so I missed most of it. Yay me! ... And now let's see the aftermath:
    • Suddenly worried that Clojure has "stalled"? Worry not (here, via @cemerick) -- Rich Hickey entered the fray here. Funny he supplies a tl;dr version of his post :)
    • The commit stream on github says a resounding "no" (here, via @seancorfield)
    • On Clojures patches/community (here, vi a@planetclojure) -- @LauJensen, the author of the original post replies to some of the critiques of his controversial blog post.
  • Clojure in small pieces, a beginning (here, via @wmacgyver) -- Very very cool. This is a project aimed at creating a literate version of the sources of Clojure with the goal of "... break[ing] out the code that implements various features into sections organized around the ideas, making it easier to get a "conceptual view" of the code."
  • A Year of Clojure (here, via @puredanger) -- "A sprawling ramble through a year of Clojure development….good luck getting through this one!" Revelytix is committed to Clojure since they are  building their semantic web integration platform on this language, therefore Alex Miller's summary of his experiences with Clojure is very relevant for those who are considering Clojure for their new projects.

Happy New Year Readers!

No intertweets today, time to celebrate instead! I hope you all are getting ready to celebrate this new and exciting year 2011, I know I will :) Happy New Year! Toni.

Today in the Intertweets (Dec 29th Ed)

  • Ray-Tracing in Clojure (here, via @planetclojure) -- A port of the ray-tracer that appears in Paul Graham's book "ANSI Common Lisp".
  • Looks like LINQ support was just added to ClojureCLR (here, via @mattpodwysocki) -- From the linked gist, it seems like there is LINQ support in Clojure CLR
  • Hammock-Driven-Development cheat sheet (here, via @liebke) -- If you watched Rich Hickey's talk at the conj in which he exhorted all of us to think before coding, and proposed a method to do so, then you might find this excellent cheat sheet useful, if not funny :)
  • Distinctive traits of functional programming languages (here, via @jonharrop) -- You won't find those traits summarized more succinctly anywhere. Great conversation starter with other language geeks too!

Today in the Intertweets (Dec 28th Ed)

  • Who/What will do for Prolog what Clojure has done for Lisp? (here, via @HNTweets) -- Good question... I like Prolog quite a bit.
  • people of #clojure: your resolutions this year should include upgrading your libraries to 1.3! (via @alandipert) -- Wisdom!
  • Setting up clojure development on osx using emacs and leiningen (here, via @gar3thjon3s) -- An update guide to getting all your clojure-related tools setup in OSX

Today in the Intertweets (Dec 27th Ed)

  • Clojure: Deriving the Y Combinator in 7 Stolen Steps (here, via @ajlopez) -- Inspired by "The Little Schemer", this article does what the title says it does. This is the Y Combinator, if you were wondering... Y = λf·(λx·f (x x)) (λx·f (x x))
  • Going to self-publish it and make the ebook freely available. (via @IORayne) -- This is about the tweet yesterday saying that @IORayne already wrote 63 pages of a Clojure book. This morning the number went up to 71 :)
  • Conj video posted! @levanderhart, "Clojure Zippers" (here, via @clojure_conj) -- Everything you wanted to know about zippers but were afraid to ask.
  • #arduino and #clojure bootstrap log: impossible to overstate how cool this is with #swank in the mix (here, via @tvachon) -- Using Nakkaya's cloduino library to interface with Arduino, now that is a toy that makes a kid our age drool! This article is a step-by-step log on how to setup your clojure rig to talk to an arduino board (and make lights blink... oooohh! pretty!!!!)

This weekend in the Intertweets (Dec 26th Ed)

  • Progress of my new Clojure book: 62 page draft. (via @IORayne) -- A new book?!?! Which one?
  • introducing lein-cdt: Clojure Debugging Toolkit for us lazy coders (here, via @tvachon) -- Ah! Aren't we all lazy around here ( <-- fantastic pun, did you get it?!?! Click here if you didn't). A lein plugin that will make sure your code is run in debug mode so that you can use CDT to debug it.
  • So what are pods upcoming in a future #clojure version? (here, via @kotarak) -- Ever heard about "pods" as an upcoming feature in clojure but do not know what they are? This article tries to summarize what is publicly know about them.
  • Clojure-flavored, browser based Lisp "IDE" (here, via @hnfirehose) -- "Las3rfl let's you create, edit, save, fork and run code in your browser... Las3r is a lisp compiler for the AVM2 (aka the flash player). In spite of what the wiki says, in my opinion it's best described as Clojure circa 2008 minus the math stack and concurrency features." Check it out. It is pretty cool!
  • My 3 day long dream has finally come to fruition. A Bejeweled playing bot in Clojure (here, via @ique) -- Finally somebody did something useful with Clojure! :D.
  • A Simple Forth Interpreter in Clojure (here, via @yueliufeeds) -- Forth is a stack-based programming language, with no much syntax to speak of. This implementation is rather simplistic (i.e. no control structures), but the implementation is elegant.

Today in the Intertweets (Dec 23rd Ed)

  • Some thoughts I have on functional programming languages (clojure and scala) and Big Data (here, via @ReverendTopo) -- This is a very interesting read that provides a high-level introduction to Big Data and its tools, and continues to provide the thesis that functional languages are the best fit for getting work done in this environment. The argument is mainly that with functional languages complex queries can be expressed nicely in the host language, as opposed to having to use cumbersome and awkward libraries or a having to use DSLs (read SQL) that are completely disconnected form the host language in which they're going to be used. The author takes a look at both Haskell-style languages and Lispy ones, while mentioning that the existence of macros in some of the lispy languages give them a leg up in this area. Great read!
  • What are alternatives to JVM exceptions for reporting and handling errors in clojure code? (here, via @planetclojure) -- This is a pet peeve of mine. It turns out that recently there has been some activity around this topic, including also the need to have unified solution for this issue (currently there are 3 libraries aiming at this same problem), and a proposal is being put together (here, and here)
  • Leiningen ANTLR plugin published by my Revelytix colleague Alex Hall! (here, via @puredanger) -- Process ANTLR grammars from Leiningen.

Today in the Intertweets (Dec 22nd Ed)

  • I secretly hope Clojure pods will have a small locking bug, that will lead to a podrace condition. #starwars (via @pepijndevos)
  • Now you can use Marginalia via Leiningen to generate your Clojure project docs (big thanks to @napple as always) (here, via @fogus) -- Marginalia is a literate programming library for Clojure that was announced yesterday.
  • Just had a swank repl spawn an nrepl and then load the ns of the code that spawned the nrepl. Might have just created a black hole (via @objcmdo) -- This must be true, and I must have traveled back in time at least 15 years via this black hole. Otherwise how do I explain that I am coding in Lisp and using Emacs daily?...
  • Large websites built with functional programming languages (Scala and Clojure the big winners) (here, via @omargomez) -- This is a question on Quora.

Today in the Intertweets (Dec 21st Ed)

  • We have a serious troll in our midst in the clojure mailing list. Fun times! (via @ghoseb) -- Oh no, trouble in paradise!
    • Yes. Something similar has happened before (here,via @vetoshev) -- Rich Hickey tried to fight the trolls before: his advice? Don't feed the trolls.
    • why o why did i open that thread on the clojure list? havent i learned? stupid. stupid. stupid sean. (via @SeanTAllen) -- poor soul :(
  • JRuby/Clojure integration (here, via @chopmo) -- A step by step tutorial on how to integrate Clojure into a Rails on JRuby, using Incanter as an example.
  • Scala and Clojure in the top 18 languages for 2011! (here, via @xphree) -- eWeek magazine considers Clojure (and Scala) two of the 18 languages to consider for next year. Erlang and F# are also there, along with the usual suspects (C, Java, C++, perl, PHP, etc...)
  • Blog post on writing digital ink applications with Clojure and OpenGL (here, via @felixbrewer) -- This is an awesomely detailed article on writing a handwriting application for Tabled computers using Clojure + OpenGL (via JOGL) + JPen.
  • @napple's been rocking the house on Marginalia (very-lightweight literate programming for Clojure) (here, via @fogus) -- Ohoooh!! Ohhh! oh! Yeah! Now now, how do we make this mandatory for all projects? Lein, Cake and Maven gents, make it so! This is a literate programming library for Clojure. What is literate programming you ask? Look here. Inspired by Coffeescript's Docco, which is a great place to get inspiration from.
  • New Clojure XML-RPC library. Looks like I get to deprecate clj-xmlrpc! :D (here, via @IORayne) -- I find the name for the library "necessary-evil" to be quite fitting, specially for the "evil" part. I am just happy someone (other than me) is doing this.

Today in the Intertweets (Dec 20th Ed)

  • Scala vs y Clojure (Round 1) (here, via @jneira) -- This article in Spanish is a very level headed discussion about the different contexts in which each of those two languages fit best. This is an article from a few months ago by the way, but it resurfaced today and it is a good read in the spirit of the upcoming holidays :) Peace!
  • InfoQ: Interview:Rich Hickey on Protocols and Clojure 1.3 (here, via @softienews) -- Protocols, new features in 1.3, clojure in clojure, pods, clj-clr, clojure/core... it covers everything.
  • Will a Two Tier Market For Developers Emerge As a Result of Scala & Clojure? (here, via @javalobbyposts) -- If we agree that developers who master Functional Programming and languages like Scala and Clojure can get productivity boosts of 20x or 30x, will the developer market break  between 9-to-5 and vocational developer tiers? This potential difference in productivity could have serious economic implications in the software market.
  • December issue: @looselytyped (Raju Gandhi) demonstrates the utility of the many mini-languages in Clojure (here, via @NFJSMag) -- You have to subscribe the magazine for one year to read the article. I didn't, so here is my summary of the article: "".
  • I've been enjoying reading a super early draft of the O'Reilly Clojure book from @cemerick and @kirindave this weekend...great stuff. (via @puredanger) -- Ah! The cat is out of the bag! :) New book Clojure book coming from O'Reilly (disclosure: I am reading it too)

This weekend in the Intertweets (Dec 19th Ed)

  • cake autotest now has Growl notifications for broken tests! (here, via @ninjudd) -- Cake's autotest runs your tests in the background, while you're changing the code. Now it'll be able to punish you every time you break the code by populating your screen with Growl notifications.
  • Strata Gems: Clojure is a language for data (here, via @X07Brainiac) -- This article From OReilly Radar focuses on one of the main uses of Clojure: Data Science. From Cascalog to Pallet, clojure has been infiltrating this field quite successfully with its tight integration with Java and the fact that Code is Data(tm).
  • Released Terrastore Clojure Client 0.4.0 (github and clojars, via @sbtourist) -- Terrastore is a document repository built on top of Terracotta's JVM clustering technology.
  • Clamq 0.1 is out (github and clojars, via @sbtourist) -- "Clojure adapter for interacting with JMS brokers, providing simple APIs to connect to brokers and sending/consuming messages to/from message queues and topics." Currently supports ActiveMQ
  • Just got a Clojure REPL in the Maxine JVM. (via @jimduey) -- Interesting... tell us more please!

Today in the Intertweets (Dec 16th Ed)

  • Pure Clojure functions should have ^:pure metadata on them. The compiler could then infer fn purity based on calls in fn bodies. Crazy? (via @cemerick) -- That'd be cool.
  • Factual launches its own Developer Blog. Read the first post: "Thinking in Clojure for Java Programmers (Part 1)" (here, via @factualinc) -- Great article to send to your Java developer friends and coworkers, or to your boss, or to your spouse (so that she knows you're not crazy).
  • Free version IntelliJ 10 with Clojure: create new project from existing leinigen project, add jars in lib ---> nice free Clojure IDE. (via @mark_I_watson) -- Indeed, the "Community" version of IntelliJ IDEA 10 not only it  is free, but you can use it for Clojure programming by installing the La Clojure plugin

Today in the Intertweets (Dec 15th Ed)

  • Clojure, Erlang, & Functional Programming – Intro to FP & Why It’s Important – TechWeekend5 18 Dec (here, via @punetech) -- If you live near Pune, India and want to hear why people are talking about functional languages, you should plant to attend this event. Saturday the 18th, from 10am to 1pm. Free.
  • Solving the Expression Problem with Clojure 1.2 (here, via @newseffect9) -- "This article describes the Expression Problem, shows some examples of it, and then demonstrates how Clojure's protocols and datatypes can solve it, which simplifies certain programming challenges.", by Stuart Sierra.
  • The only way I could stop maintaining swank-clojure would be to fake death or conversion to vim. Wonder which is harder to do convincingly? (via @technomancy) -- I don't know much about how this Internet thing works, but haven't you just nullified your two options of stop maintaining swank-clojure by tweeting about them?
  • Clojure is the fucking way to go. (via @kalkuel) -- Yeah!
  • Clojure: everything I dislike about Lisp and the Java ecosystem, wrapped in one neat package! :P (via @warren_s) -- you need to talk to the guy above and trade notes...

Today in the Intertweets (Dec 14th Ed)

EDIT: Added missing link, changed title to reflect the right date.
  • Dynamic/static duality in Clojure compilation -- AOT vs source (here, via @kumarshantanu) -- A discussion in the Leiningen list about the different oddities of AOT compilation.
  • [...] hopefully the official launcher ideas will get some momentum. (here, via @trptcolin) -- Oh, how did I miss this one. It looks like we might have an 'official' clojure launcher application, so newbies don't get overwhelmed with the many different ways to start a clojure REPL.
  • Emblogginated: "Unification versus Pattern Matching… to the death!" (here, via @fogus) -- If you ever wondered why unification when there is pattern matching (e.g. matchjure)
  • Writing clojure is fun, but I need to sleep... Or not. Writing clojure is fun (via @paraseba) -- ... and that is the reason why I am up late writing this :)

Today in the Intertweets (Dec 13th Ed)

  • 9 Programming Languages in 2011: Go, R, Lua, Scheme, ActionScript, Erlang, Groovy, Scala, Clojure (here, via @grammarware) -- This article tries to parse the different job demand data available to make a prediction about which languages posed to grow significantly next year. Clojure comes third, after Lua and R.
  • Those starting with Clojure & Compojure, that are confused with all the tutorials based on old versions, rather use (here, via @jaquesdp) -- Good tip!
  • Conj video posted! @fogus, "Fertile Ground: The Roots of Clojure" (here, via @clojure_conj) -- Michael Fogus goes over all the fountains that Clojure drinks from <-- Direct transliteration of a Spanish idiom, by the way.
  • I just published a clojure Redis session store for Ring. Check it out (here, via @paraseba) -- It's a drop-in replacement for the native Ring session store.

This weekend in the Intertweets (Dec 12th Ed)

  • Clojure - good coding guidelines (here, via @sivajag) -- These are not all the guidelines, but it is a good place to start if you're new to Clojure. As a bonus, if you leave that page open for a while you might be induced to think that your coffee was either too strong or that somebody laced it with some hallucinogen.
  • Clojure 1.3 Alpha 4 (here, via @stuarthalloway) -- Now with global unchecked math support....
  • I'm running Wordpress in Clojure! (via @pepijndevos) -- Whaaa?!?!? Oh. Run Clojure inside FastCGI, along with other popular web languages.
  • How-To - IntelliJ Idea for Clojure/Compojure on Google App Engine (here, via @lucastex_grails) -- A short and sweet article on how to write a simple web app in clojure deployable to Google App Engine, all using IntelliJ IDEA and La Clojure plugin.
  • A clojure introduction in swedish. (here, via @mikaelsundberg) -- No comment; my Swedish knowledge is nil.
  • My experiences consuming the crunchbase api with clojure (here, via @ossareh) -- Clojure resource management is sometimes hard because of clojure's laziness. It is fairly easy to write programs in Clojure that force the runtime to keep large datastructures around, even when you think they've already been garbage collected. This article is a good warning for all you guys new (and not so new) to clojure.

Today in the Intertweets (Dec 9th Ed)

  • Dynamisch, parallel, performant, genial: Clojure. W-JAX Vortrag von @stilkov (here, via @JAXenter) -- This is the talk from @stilkov given at W-JAX
  • Here's my conspiracy theory: Valve's Half-Life is a global PR campaign for The Big Return of Lisp (here and here, via @ikr) -- I really don't know what to make of this, except that I like "The Big Return of Lisp"...
  • Using Emacs for Clojure "Emacs is probably best described as a thermonuclear text editor." (here, via @jneira) -- This blog has a long list of clojure related posts. Most of them are about solving problems proposed in Project Euler, but also has good practical tips on the day-to-day of clojure development.
  • Exposing databases as linked data using clojure, compojure and R2RML (here, via @antoniogarrote) -- R2RML is a spec that defines how to link relational data and the semantic web, and clj-r2rml is a Clojure implementation of this spec. This article is hard to summarize!

Today in the Intertweets (Dec 8th Ed)

  • Sandbar roadmap. If you would like to help make a Clojure web library better, now would be a good time to start. (here, via @brentonashworth) -- Sandbar is gearing up to a 1.0 release. Help is needed to make the code better, so take a look and see if you can chip in.
  • Finally released a cloby gem: Clojure STM semantics for Ruby instance vars. Yeah, the name sucks.(here, via @headius) -- Don't worry, we're just happy you didn't name it jrubyjure :). Cross-pollination in the works.

Today in the Intertweets (Dec 7th Ed)

  • Zen in Clojure (here, via @yueliufeeds) -- "[...] in this post I'll explore some parallels between Zen and the management of identity and state in Clojure."
  • when-let maybe? (here, via @Kototamo) -- This post is about writing a when-let macro that executes the body even the bound variable is false, except for when it is nil. It would look like your standard blog post about writing macros except for the final two paragraphs...

Today in the Intertweets (Dec 6th Ed)

  • get Clojure in Action for 50% off with this coupon code - dotd1206 (here, via @amitrathore)
  • Get @chrishouser's "The Joy of Clojure" MEAP from Manning for 50% off today using code dotd1206 (here, via @fogus)
  • Ooooooooo. New Lispy podcast -- The Weekly REPL (here, via @fogus) -- Ooooooh indeed! First episode: "Peter Siebel on Common Lisp Standardization: the Good, the Bad and the Ugly".
  • Trampolining through mutual recursion in Clojure (here, via @jakemcc) -- An article explaining the use of trampoline for mutual recursion constructs. And why is this needed? Read the article to find out...
  • Introducing clj-xmlrpc: A Clojure implementation of XML-RPC (still a young project)(here, via @IORayne) -- And what would you do that?!?! Are you going to build clj-soap too?! Pretty neat interface if you are unlucky enough to have to work with XML-RPC
  • Another TDD/BDD framework for Clojure (here, via @marick) -- It's getting hard to believe Rich Hickey doesn't do TDD, judging by the number of TDD frameworks for Clojure cropping up lately... This one is based on RSpec.
  • I'm working on a site with lots of getting-started stuff for Clojure. Feedback wanted. http://learn-clojure.com/ (via @kylecordes) -- This is a new site that aggregates all the links and documents for those new to Clojure (or wanting to learn more).

This weekend in the Intertweets (Dec 5th Ed)

  • Introduction to sexpbot (here, via @yueliufeeds) -- If you have ever logged into clojure's IRC channel, you probably have already noticed that there are two bots participating in the chat: clojurebot and sexpbot (to be read sexp-bot as in S-EXPression, not sex-pbot as in whatever your dirty mind thinks 'pbot' might be). This article by sexpbot's author explains how it is built and how to extend it.
  • Topics for Ring book (here, via @daigo3) -- Brian Marick is writing a short-ish book on web development with Ring for Pragmatic Programmers, and is taking feedback about the topics to cover. This is your chance to let him know about what you'd like to see in the book.
  • Getting Started with Compojure using Leiningen (here, via @planetclojure) -- A screen cast showing how to use lein and compojure for writing web apps.
  • Added #clojure to #mutant (here, via @twarko) -- Mutant is an interesting project that lets you program with many JVM-based scripting languages, while sharing variables across engines. You can start coding in JRuby and switch to Clojure and then go to Groovy. Pretty neat!
  • Clojure's require/use/import/ns and what you need to know to use them (here, via @trptcolin) -- Very well needed article, at least for me since I still get confused every now and then about which way to import a name space and the right syntax...
  • Catching up on some #pdc2010 videos - languages panel guys discussing clojure - interesting and unexpected (here, via @atomray) -- This is a panel discussion at PDC10 that has four top language designers (C#, Newspeak, C++ and E).... it takes 11m 55s for all of them to talk about clojure :)

Today in the Intertweets (Dec 2nd Ed)

  • New ccw RC (Clojure support for Eclipse). Includes nREPL + new REPL UI. Thanks @petitlaurent! (here, via @cemerick) -- This new version of CounterClockwise supports the new cross-IDE repl infrastructure: nREPL.
  • The first conj video has been posted! Rich Hickey, "Hammock-driven Development" (here, via @stuartsierra) -- I'll make it easy for you: if you write non-trivial pieces of software and you weren't at the Conj, watch it, but if you write non-trivial pieces of software and you did attend the Conj, just watch it again. This talk is a plea for developers to spend time thinking about the problems they are about to solve.
  • URL Normalization in Clojure (here, via @planetclojure) -- This library will tell you if two seemingly different URLs are the same.
  • Leiningen 1.4.0 was released tonight: tell all your Clojure friends! (here, via @technomancy) -- Interactive tasks while keeping the JVM running, shell wrappers for Windows, cygwin fixes, pattern based exclusions for jars and uberjars.
  • First cut at an extensible compiler (here, via @planetclojure) -- The pace of development in ClojureQL is quite high these days. This article shows how to write a backend compiler for your favorite database so you can use ClojureQL with it.

Today in the Intertweets (Dec 1st Ed)

  • I'm growing a new programming language, Cacao, inspired by Clojure, integrated with Cocoa (here, via @joubertnel) -- Sounds cool, where are the docs?
  • Extract Text from a HTML Document in Clojure (here, via @planetclojure) -- Using Jericho
  • Test like you mean it! (here, via @planetclojure) -- The author of ClojureQL embarks in the ever-uplifting task of write integration tests. Since ClojureQL can support many databases, writing integration test for all of them can be quite daunting. This article shows his strategy for coping with the complexity of such integration tests, with the hope that others write backends for ClojureQL and can use the same tests.

Today in the Intertweets (Nov 30th Ed)

  • My latest micro-interview focused on #Clojure is with Justin Balthrop (aka. @ninjudd) (take 6 (justin-balthrop)) (here, via @fogus) -- Learn about the back history of cake, about a graph database library and a few new projects coming from the guys working at Geni.
  • this forrester analyst is chalk full of wrong on so many levels. java is dead ? so is scala clojure ruby? yep, done. (here, via @john_hager) -- What? Clojure is dead? Since when? Why didn't anybody tell me? So I have been programming a corpse?!?! I must have, since Forrester said so apparently.

Today in the Intertweets (Nov 29th Ed)

  • How much Clojure do you know? (here, via @pepijndevos) -- This is a quiz in clojure that will test your knowledge about all the functions that clojure.core provides. It will show you a function documentation and quiz you about which function name it corresponds to, or the other way around.
  • How to include and use clojure.core.unify with Leiningen. (here, via @fogus)
  • Surprised to see that ClojureCLR isn't on the list for .NET languages. Should be! (here, via @mattpodwysocki) -- A MSDN Flash Poll, with all sort of .NET languages but not clojure-CLR. Why not? Maybe if we all leave a comment in there will they add Clojure?

This weekend in the Intertweets (Nov 28th Ed)

  • I've been writing my Clojure :import forms wrong for years but have recanted and turned around (here, via @technomancy) -- It does look nicer
  • ClojureQL - Beta2 now released  (here, via @planetclojure) -- Some new features, including protection against SQL-based injection attacks.
  • a redis protocol implementation in ~40 lines (here, via @ztellman) -- Zach Tellman implemented the redis protocol using his very own Aleph set of libraries (including lamina and gloss)
  • iOS autocorrects "clojure" to "cookies". Scrumptious. (via @abscondment)
  • For those who are interested, the Clothesline preview is in Clojars (here, via @KirinDave) -- Clothesline is a Clojure port of WebMachine.
  • logos, logic / relational programming for Clojure (here, via @swannodette) -- A miniKanren implementation in Clojure.
  • La #clojure plugin has been updated for intellij X. Has rainbow () support (here, via @wmacgyver) -- Finally a sign of life from this plugin for IntelliJ IDEA. You need to download the beta of IntelliJ X to use it though.
  • Making the No-Knead Bread (here, via @tbatchelli) -- Making delicious bread has always been considered to be a very involved enterprise. A healthy clojurian must eat healthy bread, so this video shows you how to make bread with a investment of time of 15 minutes. Please pay attention to minute 4.00, see how he is handling the extremely hot dutch oven with a pair of folded kitchen cloths? Well, using cloths instead of proper mittens almost always work. It didn't for me last Wednesday though... ouch!

No intertweets today ...

I fought a very hot french oven and the french oven won. I am typing this with one hand an one surviving thumb from the other. Tomorrow is Thanksgiving here so I probably won't be posting either...

Today in the Intertweets (Nov 23rd Ed)

  • @lispcoder Immutable data structs don't need cache coherency & #clojure forces you to be explicit about state, so could leverage that mp (via @richhickey) -- This is in reference to this article that @lispcoder tweeted yesterday. This article is about the 1000 core CPU projected by Intel which is using message passing between the different cores as means of synchronization, instead of the cache coherence techniques that are being used today. The author of the tweet implied that Clojure wouldn't be able to fully utilize the power of this CPU because of the message passing.
  • effort to abstract binary byte format continues by @ztellman in a #clojure byte-format DSL gloss (here, via @wmacgyver)
  • An X10 Controller in Clojure (here, via @mikewmeyer) -- I like projects that control things! "The goal is to have a web page to let me control the various X10 PLC modules scattered around the house: mostly it's lights, but the thermostat, a grill, a printer and the garage door opener are all controllable this way"
  • appengine-magic 0.3.0 is now available (here, via @vetoshev) --  This library abstracts away the infrastructural nuts and bolts of writing a Clojure application for the Google App Engine platform. From the original announcement: "The new version has full support for many App Engine services: the datastore, memcache, user Google account authentication, the blobstore, sending and receiving email, task queues, and remote URL access."

Today in the Intertweets (Nov 22nd Ed)

  • “Exploring Clojure multimethods with the universal design pattern” (here, via @fogus) -- A free excerpt of the book "The Joy of Clojure" by @fogus and @chrishouser
  • 1K cores w/o cache coherency - Not so good for Clojure (here, via @lispcoder) -- Interesting article about how Intel plans to scale up to 1000 cores in once chip. The key seems to be to abandon cache coherence and go for message passing. I guess the "Not so good for Clojure" part refers to the latter. This design actually seems to be along the lines of the Connection Machine, so Lisp should be just fine. Man! If only I could get my hands on one of those! Xmas tree forever!
  • In action - #clojure #websockets #aleph #iOS4.2 (here, via @swannodette) -- This tweet only needs #ladygaga to beat the World Record of cool hashtags in a tweet (just kidding, #justinbieber is now cooler than the gaga lady). Watch the video. Drool. It shows the browsers of an iPad and a PC being synchronized via websockets and aleph. And it's FAST!

This weekend in the Intertweets (Nov 21st Ed)

  • Very handy #clojure file utils lib. Thanks @xcombinator! (here, via @bmabey) -- "Unix-like filesystem manipulation utilities for Clojure". Pretty cool :)
  • Clojure and TDD for the lazy ones (here, via @edgargoncalves) -- If you use Emacs and your development process relies heavily on unit testing, this article is for you. It provides an series of enhancements to @technomancy's clojure-test-mode to make it easier for you to find test functions and/or create new ones.
  • Clojure's Time/Concurrency Model - A Gentle Critique (here, via @X4s_feeds) -- The critique is based around the complexity of keeping a domain model synchronized, i.e. all the entities reflect the state at the same moment in time (if I understood it well, that is). Also comments on the fact that although with Clojure's concurrency model reads are very cheap (i.e. non-blocking), they're not free.
  • Book Excerpt and Interview: The Joy of Clojure (here, via @infoq) -- "InfoQ readers can also enjoy a 40% off  The Joy of Clojure, by using the code “infoq40” :) Great read.

Today in the Intertweets (Nov 18th Ed)

  • Clojure's Solutions to the Expression Problem Discussion on LtU (here, via @hnfirehose) -- This discussion is very interesting, as there are questions about whether Clojure solves the expression problem with prototypes and records, but also whether a dynamic language need a solution for this at all.
  • I really regret the absence of clojure @devoxx. Can we have them on board next year?. (via @anrizal) -- Yeah, what the hell, devoxx?!?!?
  • Slides from last night (here, via @stuartsierra) -- The presentation was about asynchronous events in clojure. It covers quite a bit of ground, ZeroMQ, Erlang, Lamina and RX. Here is the code. Is there going to be video for this?
  • Clojure game development wiki (here, via @HNTweets) -- Clojure gaming seems to be a hot topic :)
  • clojureql Relational Algebra for #clojure 1.0 released by @LauJensen (here, via @wmacgyver) -- clojureQL reaches version 1.0.0-beta, after a complete rewrite. This is an exciting project that leverages the power of clojure to make working with SQL databases very functional. The linked article describes in full this library with lots of usage examples.

Today in the Intertweets (Nov 17th Ed)

  • v0.0.2 of clojure nREPL released to maven central org.clojure:tools.nrepl:0.0.2 – Next up, real documentation! :-P (here, via @cemerick) -- nREPL is the new remote protocol to access the clojure REPL, meant to unify this access from all modern IDEs and hopefully Emacs too.
  • midje 0.8.0 released: better handling of background facts (incl. incompatible change). No longer supports clojure 1.1 (here, via @marick)
  • Pulled together a few scraps of notes about my autodoc addition to the maven clojure plugin (here, via @puredanger) -- That's useful in case you are heretically not using leiningen nor cake, and instead selling your soul to Maven.
  • Well, there we are. Clojure on the shootout. About time! (here, via @donsbot) -- Clojure is finally represented in the Computer Language Benchmarks Name (a.k.a. the shootout). This site runs benchmarks for the implementations of the same algorithms in many computer languages, and let's you compare the results amongst languages. Things don't look too good for Clojure when compared to Haskell, but the clojure implementations are quite new and probably not very optimized.

Today in the Intertweets (Nov 16th Ed)

  • Questioning Clojurize (here, via @jneira) -- A few weeks ago Christian Smith proposed Clojurize, a DSL to unify access to different data stores. In this follow-up article the author responds to all the feedback has gotten since it was publicized. It's a great read and addresses very important aspects of abstracting similar-but-not-really services.
  • Continuing my exploration of under-appreciated programming methodologies, I've started a project to support literate programming in Clojure (via @fogus) -- This sounds promising :)
  • A super-useful handy Clojure snippet for you: (def ^{:doc "octo-inc" :arglists ([x])} oinc (apply comp (repeat 8 inc))) (via @technomancy) -- Why did this make me think about the octo-mom?!?! Clever function though!
  • Stuart Halloway on Clojure - Orbitz IDEAS (here, via @martinjlogan) -- Watch @stuarthalloway spread the word about clojure, if you haven't already (haven't we all? but it is always fun to do so)

Today in the Intertweets (Nov 15th Ed)

  • Land of Lisp's Conrad Barski M.D. speaking on Clojure (11/18 - DC/VA/MD) -- please pass along (here, via @fogus) -- me jealous. Here's the land of lisp book.
  • Presentation:Clojure's Solutions to the Expression Problem (here, via @infoq) -- This is the video (synchronized with the slides) of Chris Houser's presentation at Strange Loop 2010. This presentation was very well received, judging by the amount of positive tweets. Here are the slides.
  • Video: Talk about Clojure, NoSQL-Databases, Functional-Style JavaScript, HTML5 for TheDeadline (here, via @smartrevolution) -- A fun talk by one of the guys behind thedeadline.com
  • ANN: clojure-maven-plugin 1.3.6 (here, via @talios)
  • Beware the unnamed seq in clojure (here, via @kotarak) -- What is the better/faster way to test if a data structure is empty? seq? Yes. An no. Not always at least.

This weekend in the Intertweets (Nov 14th Ed)

  • Introducing Clojail, a new Clojure sandboxing library (here, via @IORayne) -- Leverages the JVM's own sandboxing facilities, and makes it easy to configure your own sandbox for not-so-trusted clojure code.
  • I had fun with this one: Clojure, Haskell, parser combinators, it oozes lambdas. (here, via @natesbrain) -- Step-by-step porting of Haskell's parsec library (parser generator) to Clojure, with no monads (very prevalent in the Haskell world). This is the first article of what it looks it will be a series.
  • Just launched http://emailatask.com written in #clojure free email-based task communication without an account. Easy links and reminders (here, via @emailataskcom) -- try it out!
    • Posted first 5 episodes of #programothesis, it covers clojure and emacs and slime and more soon (here, via @emailataskcom) -- And when he said "more soon" he meant it. At the time of writing this there were already 13 videos. These videos are about very pragmatic stuff related to writing clojure code. Check them out.
    • By the way http://emailatask.com uses the slice web library for clojure (here, via @emailataskcom) -- Slice allows you to write web applications by writing composable slices of HTML, CSS and JavaScript in Clojure.
  • I wrote a tutorial on how to build a GUI with NetBeans and clojure (here, via @Kototamo) -- "how to create a simple GUI with the powerful Swing GUI builder of NetBeans, use it from Clojure and deliver it as a self-executable JAR"

Today in the Intertweets (Nov 11th Ed)

  • Asked @jetbrains staff at #oredev about #clojure support in @intellijidea 10. Got blank stare back. Worrying. (via @weakreference) -- Whaaaa?
    • @weakreference the Clojure plugin for IntelliJ IDEA is developed separately from the core product; no plans to bundle it in v10 (via @intelliyole) -- That is a non-response if I've ever seen one :( ... Communication matters guys! Yes it is coming, or not it is not... which one it is?
  • Videos de programación funcional (en argentino :-) (here, via @EdgarSanchez) -- Some Argentinian hackers got together to talk about functional programming and here are the talks for all of us Spanish speakers to enjoy. Awesome guys!
  • I have a good feeling about this blog (here, via @LauJensen) -- A mini-sudoku written with mini-Karnen, a clojure implementation of mini-kanren, a declarative logic programming system that was originally for scheme.  Check out the 3 previous posts on that blog to get some more background.
  • Java, Clojure, Scala, Groovy, and Jython using RubyGems via @yokolet's JRuby embedding API! (here, via @headius) -- Slide 7 is the one that matters :). Amazing how easy it is to use RubyGems from clojure with RedBridge! (now, the Scala version is sooooooo much more complicated!). Also check out slide 21 for how to use DataMapper from clojure.
  • A wip implementation of haskell's Control.* in clojure: functor,applicative, monad and monoid (here, via @jneira) -- clj-control is  @antoniogarrote's porting of Haskell's control abstractions to Clojure. WIP as stated.

Today in the Intertweets (Nov 10th Ed)

  • Exploring some fringes of Clojure: in which the perils of the gilardi scenario are overcome (here, via @technomancy) -- If you get lost writing simple macros, this article might not be for you. It covers a few ways in which you can avoid the issue of eval'ing some code bot loads a variable and uses it. The problem is that the clojure compiler will compile the whole block as t once, not line by line, so by the time it compiles the use of the variable imported, it won't find it.... did I say this was not for the faint of heart? Well, read it anyway, it'll make you a better coder.
  • Start each day by reading the implementation of a function or macro in Clojure's core.clj. (via @learnclojure) -- True that!

Today in the Intertweets (Nov 9th Ed)

  • Here is my TechTalk from today's Google Developer Day 2010: HTML5 and Clojure on GAE (here, via @smartrevolution) -- Clojure and Closure in the same presentation, this must be a first! Glad to see Google showcasing The Deadline and clojure.
  • Received the foreword for The Joy of Clojure. Consider my world. It's rocked. (via @fogus) -- So who is the mysterious author? Tell us!!
  • I have before me a contract for a Ring book from the Pragmatic Press. (via @marick) -- Clojure will have a book on web development :)
  • Announcing Clothesline, a Clojure port of WebMachine. Part of my work for BankSimple. Check out the code (here, via @KirinDave) -- Webmachine is a different kind of web framework for Erlang, with nice functional properties (e.g. referential transparency, or functions instead of methods). Currently clothesline is a naive but functional port of webmachine to clojure, with an eye to support many other JVM-based languages.

Today in the Intertweets

  • Mining the web with Clojure... (here, via @bradfordcross) -- webmine is a library that will make it easy to read, parse and follow links of web pages, RSS feeds and other goodies. It's a crawler, basically.
  • Using Clojure's re-matches and destructuring together. (here, via @learnclojure) -- Oh, that's neat! Match with an regexp and get the matches bind to symbols via regular destructuring... I think you'll know better what I am talking about if you just follow the link :)
  • Read The #clojure Daily ▸ today's top stories are contributed by @etorreborre @piotrgega and @kumarshantanu (here, via @tormaroe) -- Another way to get your clojure news, via paper.ly

This weekend in the Intertweets (Nov 7th Ed)

  • My clojure simplicity slides from #clojureconj and twitter are online (here, via @stuarthalloway)
  • Working on Clojure diff and patch functions for sequences. Ideas welcome. (here, via @brentonashworth) -- Grab two clojure sequences, create a patch by diffing them and apply the patch to a third sequence. Neat!
  • There's buzz about Microsoft's Reactive eXtensions in clojure land today (here, via @fogus) -- Indeed. Sane event driven development FTW:
    • I've factored out channels into their own project (here, via @ztellman) -- seems related to the above to me...
    • "Observable" protocol with watcher support (here, via @stuartsierra) -- more RX
    • More RX-inspired #clojure Observables (here, via @stuartsierra)  --  even more RX
    • I can't help seeing a common pattern between RX stuff and Oleg's work on iteratees (here, via @cgrand) -- Ok, that's enough, it's Friday guys! ;)
  • clojure 1.3. alpha 3 (here, via @stuarthalloway) -- get it while it's hot! A new (dare I say experimental) printing method for maps is introduced.
  • Compojure, the repl, and vars (here, via @darevay) -- Building a compojure app and you don't want to restart the server at every code change? Do you want compojure to pick the changes right away? Use vars...
  • clojure and database - another approach. Could be interesting (here, via @alexott_en) -- Interesting it is! This post outlines a proposal --with code!-- for a common intermediate data representation and common database access interfaces, so that all DB related clojure code can be largely insulated from what specific database the code is currently working with now, or in the future.
  • Leiningen 1.4.0 release candidate 1. Now with new tasks and test selectors for all your Clojure needs. (here, via @technomancy)
  • HammockDB - a *very* incomplete CouchDB API implementation in Clojure and Ring. HT @jchris for Booth (here, via @mmcgranna) -- "[...]inspired by the more complete Ruby equivalent Booth[...]"

Today in the Intertweets (Nov 4th Ed)

  • Clojure versus Python (here, via @pepijndevos) -- Pepijn de Vos is trying to do some intensive minecraft data processing, but finds that the same algorithm in Python is way faster than when written in clojure. Any hints on why?
  • my #clojure #java interop slides from #qconsf are now online at (here, via @stuarthalloway) -- Great set of slides, even if you already know clojure :)
  • TryClojure – A Call To Action (here, via @planetclojure) -- TryClojure has been a good tool to get many people to -- you'll be surprised about this -- try clojure :) ... anyway, the author of this fabulous tool needs help in modernizing and improving some aspects of it. Wanna volunteer?
  • mongodb-session - mongodb as a Clojure/Ring's http session storage (here, via @fatrow) -- A ring middleware that stores and retrieves web sessions using MongoDB

Today in the Intertweets (Nov 3rd Ed)

  • Now at clojure talk bij @mauritsrijk and @svdberg #jfall10 (via @hierynomus) -- Clojure was represented at JFall 2010 in the Netherlands, and judging from the tweets, it was very well received. Good job guys!
  • Which one has more parens, Java chaining or Clojure? Answer might surprise you! (vi a@robertrolandorg) -- And clojure was also represented at QCon in SF, and well represented at that!
  • Rich Hickey's talk in 'pencast' format : "Step Away From The Computer" from #clojureconj 2010 (here, via @devn) -- In this talk Rich encouraged all of us to take time to think and let our brains process information (while sleeping, or just laying in a hammock). It was a very inspirational talk and while we're waiting for the videos of clojure-conj to come out, this audio recording will do!
  • ClojureQL - Revolutions, blogged about the rewrite (here, via @LauJensen) -- ClojureQL is being rewritten from scratch after 2.5 years of existence. All the knowledge that its authors and users acquired during this time is used to build a better implementation, while also trimming down the functionality to provide a very tight and clojurey core.
  • we got clojure 1.3 running in the same JVM as 1.2! (here, via @ninjudd) -- And with this, classlojure is announced! This library lets you easily create a classloader with an alternate classpath and evaluate clojure forms in it, and for example, use a different version of clojure.
  • Implementation “inheritance” in clojure (here, via @david_mcneil) -- Ever wondered if you could 'subclass' a defrecord in clojure? Well, you can! This article shows you how.

Today in the Intertweets (Nov 2nd Ed)

  • new page on starting a clojure user group: http://clojure.org/start_group Feedback please! (here, via @puredanger) -- Now there is no excuse for not starting your local clojure group :)
  • The design for clojureql is starting to shape up. Still very open to input, see the README (here, via @LauJensen) -- A bridge between JDBC/SQL and clojure data types. WIP, so it is a good tome to provide feedback.
  • Continuous deployment of Clojure web apps: my #clojureconj slides & a pallet/jclouds/Hudson screencast (here, via @cemerick) -- Chas Emerick showed us at clojure-conj a combination of tools that can automate your application deployment cycle. Since many of you couldn't attend the conj, he is gracious enough to provide the slides used at that presentation and also include a 50-minute screencast to go with them. Oh, and also the full sources of the example application used for the screencast.

Today in the Intertweets (Nov 1st Ed)

  • #StackOverflow just fielded its 1000th #Clojure question. Way to go! (via @missingfaktor)
  • Functional Programming with Clojure: Simple Concurrency on the JVM (here, via @mamersfo) -- A refcard for clojure, published by dzone.
  • Starting a Cluster on EC2 with Pallet (here, via @planetclojure) -- A nice introduction to deploying applications on the cloud with pallet, a clojure library that lets you manage your applications in the cloud from the REPL (or lein, or cake)
  • Starting on my Clojure Conj 2011 topic... "The Macronomicon" :-) (here, via @fogus) -- A book on how to substitute macros for functions in clojure code. It is very well needed, judging for the flak that the excessive use of macros got at clojure-conj. Very WIP.
  • Posted about async support in Ring (here, via @mmcgrana) -- Mark McGranaghan decided to review the Ring SPEC to add support for asynchronous operations, which would help web servers handle large numbers of connected clients without exhausting the server's resources, amongst other goodies. Here is an example app with sync, long-poll, streaming, and websockets. Read the proposal and chime in!
  • @technomancy & @ninjudd are collaborating on the project.clj spec as we speak, now if only I could track down the PMaven/ #clojure guys :) (via @LauJensen) -- Ooohh! one project.clj to rule them all!
    • Thanks to man behind the curtain @cemerick, the Maven crew is now engaged in designing the spec as well! One format to rule them all awaits! (via @LauJensen) -- ...and then there were three... :)
  • Tech Talk at LinkedIn: "Clojure at BackType" (including live demo) (here, via @backtypetech) -- Watch Nathan Marz showcase Cascalog, a datalog-inspired data processing engine for Hadoop.

This weekend in the Intertweets (Oct 31st Ed)

  • Lets see if we (#cake #lein #polyglot-maven) can work together in the small land of #clojure (here, via @LauJensen) -- A proposal for a unified spec to define how clojure projects are to be built. The idea would be that the three build tools mentioned would agree on a single format.
  • Hiccup-bridge convert Hiccup to html, html to hiccup (here, via @fatrow)
  • Finally have some time to start adding examples to the Trammel repo (here, via @fogus) -- Trammel is a Contracts Programming library for clojure. These examples help understand how this library is to be used.
  • JNA wrapper for ZMQ (here, via @planetclojure) -- ZeroMQ is becoming quite popular lately. The problem for everyone in the JVM environment is that the libraries to access ZMQ are in C. This article is about building a Java wrapper for ZeroMQ so that it can be used with Clojure.
  • Oracle job posting for Java team: "understanding of the Java programming language, functional languages (Scala, Clojure)" (here, via @ijuma) -- Interesting! Does that mean that they are looking into making JVM language implementor's life easier?!
  • Attend the workshop at #oredev and learn how to program the #cloud in #clojure (here, via @jclouds) -- Are you going to Oredev? You could learn about managing your cloud infrastructure with jclouds and pallet, from jcloud's author himself!
  • Spending the whole weekend designing Ring's async story. Lots to do, but I'm really excited about the future of Clojure web development! (via @mmcgrana) -- Ring's becoming async?

Today in the Intertweets (Oct 28th Ed)

  • just created the detroit-clojure google group - If you live in the area and want to get all clojure-y, join us! (here, via @ nhajratw)
  • Use slim templates in your clojure projects (here, via @chaslemley) -- Slim is a templating format originally for Ruby that is both fast and expressive. Slim.clj is just a of this template system to clojure.
  • standalone clojure executable made with 'cake bin', just download and run: wget http://tinyurl.com/clojure-bin; chmod +x clojure; ./clojure (via @ninjudd) -- All the necessary clojure binaries are encoded inside the script (it's big!) and so yes, you only need to distribute this one file. You can produce your own binaries like this with cake
    • here's a standalone #clojure that works in both windows and unix, generated with 'cake bin' (here, via @ninjudd)

Today in the Intertweets (Oct 27th Ed)

  • I think this will be my next read: "The Land Of Lisp". See the music video (here, via @antoniovieiro) -- Here's a novel way of learning lisp, by building games. And here is a novel way to promote a book, by making a music video! The book looks very promising...
  • Earlier 2day I articulated my best effort estimate of adopting clojure. Extra 2-3 months of learning time with a breakeven of < 18 mths YMMV (via @dnene) -- Anyone has actually done this an can confirm the estimage?
  • "The in-depth discussions left me both depleted and full of ideas." —Rich Hickey (here, via @willf) -- Rich Hickey puts in writing his thoughts about clojure-conj.
  • Clamq, Clojure JMS Adapter (including support for ActiveMQ) (here, via @sbtourist) -- The tweet says it all, a library to access JMS queues, for both consumers and producers of messages.

Today in the Intertweets (Oct 26th Ed)

  • Clojure talk showcasing Overtone real-time synthesis. (here, via @ pepijndevos) -- Yesterday we mentioned that Overtone was presented at Ruby and Rails 2010 in Amsterdam. Here is the video. Also, one of the authors confirmed to me that they formed a band called the (λ-tones), the first ever Clojure band, whose first gig was at RAR10.
  • Bitumen Framework: Stack traces for Clojure app development (here, via @kumarshantanu) -- Manipulate clojure stack traces functionally and print them in a sane way, finally!
  • How I tamed VimClojure, that is, Clojure on Vim (here, via @darevay) -- If Emacs is not your thing and you don't like Java-based IDEs, then you can always turn to your trusty friend Vim. This article describes how to set it up with VimClojure to work with Clojure.
  • Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-Generation HTML5 Apps (here, via @smartervolution) -- The slides of a presentation from the guys who built TheDeadline, a very smart online personal assistant. This presentation covers how the application is built and why.
  • Go and get some #clojure 1.3 alpha 2 (here, via @stuarthalloway) -- Go do it!
    • or, if you are on lein: [org.clojure/clojure "1.3.0-alpha2"] (via @stuarthalloway) -- Go do it!
  • The video from my #Jfokus 2010 presentation on #Clojure is now online (in Swedish) (here, via @weakreference) -- Bah! Swedish cannot be that diffi... ... ... nevermind.
  • The Conj (here, via @planetclojure) -- More detailed notes from the clojure-conj
  • We’re in Beta! (here, via @jneira) -- clojuredocs.org is now in beta. New UI and features galore. This post shows and explains what's new. Good job guys!
  • #clojure compiler in clojure, doesn't need ASM (here, via @wmacgyver) -- Looks like someone had plenty of free time and a very strong will to build a clojure compiler in clojure.
  • #clojure contrib 1.3.0-alpha2 deployed (via @stuartsierra) -- Matches the same version of clojure.
  • A Clojure Reading List (here, via @planetclojure) -- A list of books that might be of your interest if you are also interested in clojure (and we know you are, because you're reading this)

Today in the Intertweets (the Conj Edition)

CORRECTION: I mistakenly described Overtone as a midi tool, when in fact it is much more than just that, it is a library that lets you create synthesizers and effects and it uses SuperCollider under the hood. It does also do midi IO but that's not its main feature. I stand corrected. This is for Thursday and Friday before the beginning of clojure-conj.
  • Really cool presentation by Jeff Rose demo'ing overtone, his clojure library to control audio synthesizing :) (via @elise_huard) -- Overtone controls midi instruments via Clojure. RAR10 stands for Ruby And Rails conference in Amsterdam. Looks like they like to have clojure talks in ruby conferences these days...
  • Clojure Key-Value Stores, Voldemort, and S3. (here, via @bradfordcross) -- "Store is a general key-value store api in Clojure." Currently it supports S3 and Voldermort only.
  • Vimming and leiningening Clojurians: Heads Up! (here, via @kotarak) -- A leiningen plugin to launch a vimclojure nailgun server.
  • Easy getter/setter interop with Clojure (here, via @kumarshantanu) -- A library that lets you deal with properties in Java classes exposed via getters and setter in a very abstract and convenient way: clojure maps.
  • Some go to kick off the conj #clojure-conj (here, via @abedra) -- The clojure-conj speakers were treated to some GO (the board game, not the language!)
  • Remedial Clojure: duck-streams, let style, and pronunciation. (here, via @daveray) -- This article describes the building of a rhyming dictionary using the CMU Pronouncing Dictonary, some duck-streams, lazy-test and some clojure.
And then, clojure-conj started...
  • Michael Fogus speaking at the #clojureconj (via @clojure) -- And this is how the conference started, with @fogus telling us about where some of Clojure's features come from.
  • The implementation of clojure's Zippers really expose how useful metadata can be (via @natesbrain) -- The next session was from Luke VanderHart (@levanderhart), which explained the secret art of zippers. It seems like a lot of people were surprised that metadata could be so useful!
    • My zipper tutorial (here, via @marick)
  • Clojure users don't want DSLs, they want to be able to use the full power of clojure (via @disclojure) -- Next was Christophe Grand (@cgrand) with a master lecture on why using macros sometimes removes power from the user of your library.
    • Instead of macros use POCOFs (Plain Old ClOjure Functions) (via @pjstadig)
  • "Clojure is fun!" - @tomfaulhaber; Hell yeah it is! (via @cemerick) -- Next was Tom Faulhaber, elaborating on what makes programming clojure so much fun.
  • Live coding #clojure with Rich Hickey in the audience seems risky to me, but fun! (here, via @disclojure) -- Sean Devlin (@fulldisclojure) was next explaining the uses of protocols. At some point during Q&A Rich Hickey decided to respond to one of the questions, and Sean took upon himself to try to put in code what Rich was saying... yeah, you don't do that live :)
  • Clojure: bringing obscure data structures into the light (via @stuartsierra) -- Chris Houser (@chouser) implemented the Finger Trees data structure for clojure, and was explaining what it was and what it was for. Obscure?, maybe, but useful? yeah!
  • @technomancy modeling his sweet keyboard pants during his leiningen talk #clojureconj (via @kevsmith) -- And then he proceeded to talk about the present and future of Leiningen.
  • Listening to @laurentpetit talk on ccw (Clojure dev plugin for Eclipse)…helping to bring a whole new group of devs to Clojure. (via @cemerick) -- Lauren Petit proceeded to show us some of the new and also upcoming work in CounterClockWise, the Clojure plugin for Eclipse. Lost of features previously only available to Emacs user are being ported to Eclipse!
  • Rich Hickey talking about new features in clojure, some not even 10 days old! (via @disclojure) -- Rich Hickey decided to not follow the schedule and instead of giving his Keynote talk, he decided to switch to his Pods talk, although instead of talking about Pods, he told us about some features that were implemented very recently: primitive types, new bindings, etc... all in the name of performance. Deep stuff!
    • "I don't want people to have to apologize to anyone for Clojure's performance vs. Java" – @richhickey on new optimizations (via @cemerick)
  • Enjoyed Clojure's birthday party. Even the bagpipes. (via @benatkin) -- We all were invited to drink at an Irish pub to celebrate Clojure's 3rd birthday. There were bagpipes involved. Bagpipes and discussions about Records and Protocols don't mix well together though!
  • Clojure contributor agreements ready to sign at registration. Don't leave #clojureconj without signing one! (via @SirLyric) -- And this is how the second day started.
  • Aaron Bedra of Relevance pumping everyone up recognizing people who contributed to Clojure (via @RogerTheGeek) -- @abedra gave an overview of the users of clojure and recognized all those who have contributed to its current success.
  • My #clojureconj slides PDF (here, via @stuartsierra) -- Stuart Sierra was next, again advising us against the use of macros and explaining how he had build lazy-test at least three times to get it right (by removing macros, of course)
  • Blogs covering material from my "Tree Editing with Zippers" #clojureconj lightning talk (here and here, via @puredanger) -- Then came the lazy talks. Several authors described their current work in 5 minutes each.
  • Using core clojure abstractions [fn {}] gives composable power to ___ (insert lib if doing it right, e.g., ring ) (via @digiduke) -- Mark McGranaghan (@mmcgrana) Showed how ring leverages clojure's power and being very simple at the same time. Guess how? Not using macros!
    • @mmcgrana's Ring talk is a perfect follow up to @cgrand's (not= DSL macro) talk. Ring *is* Clojure (via @fogus)
    • Major theme of #clojureconj - composability across and through arbitrary libraries, by sticking to Clojure's basic abstractions. Love it. (via @levanderhart)
    • Great wisdom from @mmcgrana: "The true essence of Clojure is composable abstraction" (via @chadharrington)
  • Ha! Here is a funny one: Next was Rich Hickey's keynote, but there are no tweets mentioning Clojure that reference his talk; guess why.... yeah, his talk wasn't about Clojure at all! Instead, he gave a very inspirational talk about how our brain works and how we need to let it do its job instead of grabbing the first solution to a problem and running with it all the way. Also he recommended that we focus on solving problems instead of just adding features. Smart dude, one day he'll write a nice language or something.
  • The future and horizons for parallelization in #clojure are just white-hot. not everything is awesome, but this TOTALLY is (via @puredanger) -- Next up was David Liebke (@liebke) describing the work on parallelization and fork-join that is coming for clojure.
  • @cemerick describing reliably, continually deploying (clojure) software (via @foogoof) -- Finally, Chas Emerick described how to get a continuous deployment system with github, hudson and jclouds+pallet to deploy your application automatically when new code is checked in.
  • .@stuarthalloway is now giving a "simply awesome" talk at #clojureconj. Amazing stuff (via @ghoseb) -- Stuart Halloway talked about how Clojure provides simple abstractions that you can compose to solve complex problems, although he acknowledged that the meaning of 'simple' is very subjective.
The aftermath...
  • Here are the slides from my #clojureconj talk, "An Illustrated guide to multi-core parallelism in Clojure" (here, via @liebke)
  • My Clojure Conj reading list (here, via @apgwoz) -- Several books were mentioned during the conference. Here is a list of them.
  • My notes from #clojureconj day 1 (here, via @david_mcneil) -- A great summary of what was presented during the conference.
    • and my notes from #clojureconj day 2 (here, via @david_mcneil)
  • Clojure take on OO: "We can rebuild it — we have the technology!" (via @cgrand)
  • A lesson of clojureconj: Just because you can use macros doesn't mean you should. (via @_cwm_) -- There are more lessons from the same author:
    • Clojure has amazing data structures that you don't even know about (zippers, finger trees)
    • Clojure gives you all the good parts of OOP; they're just à la carte.
    • Build on composable abstractions.
    • Get away from your computer and go think.
    • Don't ever say #Clojure is "simply awesome" ;-)
    • Clojure-Conj was fantastic, the Clojure community is fantastic, and you should definitely be there next year
  • Post 2 from clojureconj: "Fighting for Clojure" (here, via @puredanger) -- "Make no mistake, if you like Clojure and want it to be an option that people are allowed to even consider much less use, then this fight is your fight."
  • Excellent write up by @puredanger on parallel programming and fork-join in Clojure (here, via @liebke) -- "I was unaware of much of the work going on to leverage fork-join and it blew my freaking mind."
  • Clojure-conj: Composable abstractions (here, via @hntweets) -- This blogpost from @puredanger covers one of the most notable recurring themes of the conj, composable abstractions, and how this theme was present in many different presentations.
  • post 5 from clojureconj: "Hammock-driven development" (here, via @puredanger)  -- Covers Rich Hickey's inspiring keynote.
  • Just posted my clojureconj writeup (here, via @objcmdo) -- A quite thorough commentary on some of the talks.
  • And part 6 from clojureconj: "clojure-conj: Present and future" (here, via @puredanger) -- An overall review of the conference, from the conference organization perspective
  • Emblogginated my slides and a humble revelation. (here, via @fogus)
  • Slides for my Clojure finger-tree talk at clojureconj are up (here, via @chrishouser)
Wow... that was long. More tomorrow.

Today in the Intertweets (Oct 18th Ed)

  • My thoughts on Clojure (here, vi a@quippdPython) -- A python developer tries Cloure for 3 days, concludes that there is too much need to know Java in order to use Clojure. Fair point, except when using Clojure-CLR of course.
  • resrc: REST in clojure (part 1) (here, via @tvachon) -- First installment in a series about building first-class support for REST in clojure. The second part is here and discusses some enhancements and optimizations.
  • Building and Deploying Clojure REST Services (here, via @bradfordcross) -- More on building REST services in clojure, this time using rest-serv for the REST part and store to access the data store.
  • I sense a lot more interesting clojure stuff making it to master branch. (here, via @wmacgyver) -- The word 'wow' is used several times...
  • jEdit now has a Clojure shell, awesome! (here, via @pauldoo) -- Take that Emacs!
  • Improving Clojure Contrib (here, via @fogus) -- Oh, that's a welcome move! Rich Hickey is putting the pieces in place so that contributing to clojure.contrib. @chrishouser's finger trees, @cemeric's nREPL and @fogus' Unification library are the first additions in this model.

This weekend in the Intertweets (Oct 17th Ed)

  • Strange Loop Talk – Triplestore Testing (here, via @planetclojure) -- Cool, the Clojure talks at Strange Loop start trickling in. This one is about testing the performance of queries to a tiplestore using the cloud, with clojure and incanter and other cool tools.
  • @unclebobmartin's "Failure of State" presentation makes me want to run home and read my "Programming Clojure" book right now. (via @adomokos) -- Uncle Bob is a relentless promoter of Clojure :)
  • Guy Steele recommended Clojure for programmers who want to broaden their horizons. #strangeloop (via @benatkin) -- He probably said the same about Fortress, his new language, but this is good enough!
  • Schedule posted for #clojureconj. Pls ignore wonky CSS (here, via @stuartsierra) -- The wonky CSS is wonky no more, by the way...
  • Started working on a leiningen plug-in to make SOAPing from Clojure easier (here, via @jamesaley)
  • My expression problem talk: "I liked two things about this" Review (here, via @chrishouser) -- The slides are here. A bunch of tweeters highlighted this talk as one of the most enlightening of Strange Loop. The slides are really good enough so that you can follow them without a speaker.
  • Getting to know Clojure, Leiningen and Lazytest (here, via @davevay) -- This article is narrates first foray info clojure of its authors, using a simple example and a good set of tools for it, leiningen and Lazytest. It explains how each piece works in making development as painless as possible. It is an interesting read if you're interested in Lazytest too.
  • Erlang generic servers and supervisors in clojure (here, via @jneira) -- Erlang gerneric servers and supervisors concepts ported to Clojure via Jobim. These two concepts form Erlang help you build reliable distributed systems. This article explain how they are implemented in Clojure via Jobim.

Today in the Intertweets (Oct 15th Ed)

  • Add a "Turbo" button: (defmacro with-turbo [turbo-on & body] `(let [~'map ~(if turbo-on `clojure.core/pmap `clojure.core/map)] ~@body)) (via @rplevy) -- And witht this, you can turn all your calls to map into calls to pmap, thus parallelizing your code, with only wrapping it with (with-turbo <your code here>).
  • Its (sic) nice when SQL can be lazy (here, via @kyleburton) -- clojure.contrib.sql provides result sets as lazy seqs that will pull the results from the DB server as needed, if the JDBC driver allows for it. It turns out that for PostgresDB this doesn't work and all the data is fetched at once from the DB server. This article describes a solution to this problem, which involves chunking the query to the database (and not the results) while maintaining the lazy seq abstraction.

Today in the Intertweets (Oct 13th Ed)

  • Les hvordan Clojure tvinger deg til å programmere trådsikkert på (here, via @knowitnorge) -- This is in Norwegian, in case you were wondering. An introductory article to Clojure and it's multithreading capabilities. Think of it this way: if you know everything about Clojure, you can use this article to learn Norwegian ;)
  • Clojure type hints: WITHOUT (.frob obj) => lookup_method("frob").invoke() WITH (.frob ^String obj) => ((String)obj).frob() (via @fogus) -- If you were wondering how type hinds can speed-up clojure code that uses Java libraries, here is a clear example. With hints is a direct call, without them, it's a method lookup and an invoke() call.
  • I managed to run clojure debugger toolkit on windows thanks to (this) message. (set-bp) power! (here, via @jneira) -- Basically you need to fix the directory dividers from "/" to "\" in the code, but this message already contains a patch for you to do that. A better patch is to get rid of Windows altogether... I'm just sayin'
  • Seen in #clojure – October 7th (here, via @planetclojure) -- This interesting article dissects a code snipped that @chrishouser nonchalantly posted on IRC on October 7th, and its purpose is to turn any number of minutes into months, days, hours and minutes. That's right, a code snipped needs a full blog post.
  • My slides for the #jclouds and #pallet prez at #linkedin's offices for the Bay Area Clojure Users Group are now up (here, via @tbatchelli) -- Hey, that's me! If you're deploying your apps on any cloud provider, you should look at these slides to learn the basics about @hugoduncan's pallet and Adrian Cole's jclouds. Maybe the video will be posted one day too.

Today in the Intertweets (Oct 12th Ed)

  • Sexy specifications in Clojure with Cucumber BDD (here, via @planetclojure) -- A tutorial on how to use cucumber, a Behaviour Driven Development framework, with Clojure. The tutorial can be found at github.
  • There is nothing so satisfying as people rediscovering the arcana of floating point math. (here, via @petrillic) -- Kids, don't you ever forget that computers have a limited representation for numbers. It is easy to forget sometimes, especially with things like BigInt and such. But computers are computers, and they're either precise or they're fast, but not both.
  • ANN: Hamburg Clojure User Group. Join the start! (here, via @prism335) -- Folks, if you live nearby (i.e. 5 hours drive or less is the American definition for 'nearby'), consider showing support for their first meet-up!

Today in the Intertweets (Oct 11th Ed)

  • Deploying Clojure Services with Crane (here, via @bradfordcross) -- This article introduces the newly added features of Crane, a cloud deployment tool, which was originally created for Hadoop setups but now has been extended to other tasks too.
  • Ever thought about making a Twilio app using Clojure? How about Scala? Maybe COBOL? This week's contest is for you! (here, via @twilio) -- Posted because of the reference to COBOL, of course. Contest finalizes on Oct 17th.
  • clojure clr making major progress. (here, via @wmagcyver) -- New binaries, for REPL and for compiler. Future support for Visual Studio 2010 and .Net 4.0

This weekend in the Intertweets (Oct 10th Ed)

  • Clojure na web - Compojure/Hiccup/Sandbar/Leiningen (here, via @paulosuzart) -- If Portuguese is your thing, this is an article about building web applications with Clojure.
  • Taking Uncle Bob to school - A few words on idiomatic Lisp/Clojure in the Orbit Sim by @unclebobmartin (here, via @LauJensen) -- Lau cleans Uncle Bob's Orbit code, making it more idiomatic. Bob Martin has been promoting Clojure in his keynotes, going as far as to saying that this language is the future.
  • Object Oriented Programming in JavaScript and Clojure (here, via @codechef) -- A first in a series of articles by David Nolen, in which he will explore the Object Orientation capabilities of both JavaScript and Clojure. This first installment talks about type information.  Here is a follow up that covers prototype-based inheritance in JavaScript.
  • Creating a Quadrotor autopilot with Clojure & Flight Simulator (here, via @hntweets) -- From the most creative clojure blogger, Nurullah Akkaya, here is an article about building a Quadrotor autopilot against a flight simulator instead of the real thing (those machines are not cheap, and bugs in the autopilot can be costly). Of course this is all in Clojure. This article covers the building of a proportional stabilizer.

Today in the Intertweets (Oct 7th Ed)

Move along, nothing to see here! No, seriously, nothing relevant about Clojure was tweeted today... I bet you all have been busy coding! <this post is intentionally blank>

Today in the Intertweets (Oct 6th Ed)

  • Clojure/core has a blog! (here, via @stuartsierra) -- :)
  • Simple clojure wrappers for hornetq, including a lein plugin to start a server with STOMP support (here, via @hugoduncan) -- HornetQ is "an open source project to build a multi-protocol, embeddable, very high performance, clustered, asynchronous messaging system." Now you'll be able to use it from Clojure without pain.
  • Would like to start a Santa Barbara Clojure meetup - contact me if interested! (via @pjlegato) -- Hey! I lived in Santa Barbara for over 5 years :)  Ping him if you want to join this meetup. PS: I miss Arnoldi's there :(
  • Example of using Aleph and Ring together to create a WebSockets based chat application (here, via @brentonashworth)
  • I used to hate on the parens. Now I hate on all the other junk other languages force on me. (via @tvachon)

Today in the Intertweets (Oct 5th Ed)

  • Nice article on Clojure templating libraries by @glv (here, via @stilkov) -- This is a PDF of the article appeared in IEEE Computer Magazine, and talks about a few of the document templating options in Clojure: StringTemplate, fleet and Enlive.
  • Entendendo Licenças Open Source com Clojure (original, English, via @destaquenet_com) -- Recently Licensator, a site that helps you determine which one is the best open source license to use with your project, was launched. This site is built in clojure and runs on Google App Engine. This post explains the main algorithm behind it.
  • JamesGosling: I can't bring myself to use Clojure because I used up my lifetime quota of parentheses on my PhD thesis #JAOO #goto (via @arthurgaudio) -- Ok... mandatory XKCD reference for ya! We all wish you had run out of Checked Exceptions instead ;)
    • Lots of thanks to @richhickey, @stuarthalloway, and Cliff Click for a great mini-conf at the JAOO. My head is still spinning! #jaoo #clojure (via @RoyDealSimon) -- Glad to see that Clojure was well represented! Hey guys, if you're still there, care to share some parentheses with good ol' Gosling? kthxbai.
  • Just how can you not puke at the sight of such a syntax? (here, via @rafbm) -- Actually you cannot not puke. Until today this was the very best kept secret; that most of us puke all the time while coding in Clojure, it's like we're pregnant or something. On the other side PHP --which you seem to fancy-- has some fine and exquisite syntax that seems to help with proper digestion.

Today in the Intertweets (Oct 4th Ed)

Slow news day today! Are you guys keeping all the announcements for clojure-conj? Is that what it is?
  • @stuarthalloway defines a new acronym in the context of Clojure; RASYDHT: Rich (Hickey) Abstracts So You Don't Have To (via @jboner) -- Stuart Halloway gave a talk at JAOO today.
    • PDF download of my protocols slides from #JAOO (here, via @stuarthalloway) -- Protocols, the expression problem and deftype. Pretty thorough and informative.

This weekend in the Intertweets (Oct 3rd Ed)

  • Clojure Debugging Toolkit: The video (here, via @georgejahad) -- The video shows the impressive features of George's CTD.
  • Surd - MongoDB/Ring authentication and authorization application (here, via @sethrain) -- Title says it all :)
  • #cufp, @fogus discussing his experiences with Clojure and Scala. (via @deamwampler) -- I hope there's going to be a video of that, or at least the slides... (by the way, CUFP = Commercial Uses of Functional Programming)
    • Here are the slides from my #cufp talk. Good luck making heads or tails out of them :p (here, via @fogus) --  Alright, now we need the video.
  • Fun with Clojure: Turning Cats into Dogs in Hanoi (inaugural blog post) (here, via @jkkramer) -- A post about graph traversal, a new library for this job (loom), and cool visualization of the solutions graphs. Check it out, since the outcome is quite impressive: see the solutions graph being created in 3D and in real time and see also the solution path being found.
  • vsClojure, a clojure visual studio 2010 extension (here, via @wmacgyver) -- I am not sure this is the same project that disclojure reported on last week, but project adds support for Clojure in VS2010. The sources for the project can be found here. WIP, but some features are already working, like code highlighting, paren matching and the REPL.

A year ago in Clojure

Today in the Intertweets (Sept 30th Ed)

  • I'm working on a #clojure highlight plugin for Visual Studio 2010 IDE (screenshot, via @diullei) -- Looking good!
  • This tells a story (here, via @vsbuffalo) -- Wow... that's... going to make some devs quite upset.
  • The fact that we spend so much time talking about #clojure's build systems is a sign of a problem. Building should be transparent & boring. (via @briancarper) -- I don't know why you say that...
    • Software is like Russian dolls: Cake is a Clojure build tool which wraps Leiningen, which wraps Maven, which wraps Ant... (via @kevin_noonan) -- oh, now I get it!
  • Another Testing Framework - Expectations (here, via @AgileCarnival) -- A different take at unit testing in Clojure. It has some differentiating features, like trimmed stacktraces, support for concise java object testing and other smarts. Check it out.

Today in the Intertweets (Sept 29th Ed)

  • Emacs Front End to the Clojure Debugging Toolkit (here, via @jneira) -- Instead of blaming myself for failing to report a couple of days ago on the advances in George Jahad's Clojure Debugging Toolkit (which is what would be appropriate since he personally told me he was readying this version a couple of weeks ago,) I will blame him for not using twitter to announce these things! Ha! The debugger now has Emacs front end, with a number of commands to create, list breakpoints, go up and down the stack and stuff like that.
  • Blogged about Rodney Leonard Stubbs, the simplest stubs for Clojure via Leiningen (here, via @technomancy) -- A new feature of Leningen that will let you run integration tests by (almost)transparently replacing real services for stubbed-out ones. When running tests, this lein plugin looks for special metadata tags in vars in your test code and replace the tagged vars with the referenced stubbed objects.
  • Posted blog about micro-benchmark using Clojure 1.1, 1.2 and 1.3 Alpha 1 (here, via @mauritsrijk) -- As 1.3 is progressing there is a lot of interest in its performance improvements. This microbenchmarks don't test any of the new static or primitive types enhancements, and even then, 1.3a1 is 10% faster than 1.2.
  • A clojure stomp client implementation based on discussion in the irc channel (here, via @ninjudd) -- Stomp is a streaming text oriented protocol that aims at maximum interoperability. The IRC discussion he mentions is related to using Stomp as a (suggested) wire protocol for nREPL, the networked REPL.
  • Clojure 1.3 First Impression (It's Fast) (here, via @HNTweets) -- The author of Learning Clojure talks about how with little changes his numerically intensive code runs much faster in 1.3a1 than it does in 1.2. Much much faster.

Today in the Intertweets (Sept 28th Ed)

  • get 35% off on "clojure in action" and "joy of clojure" with the coupon code clojure35 (via @kevsmith) -- I don't know if there is any reader here that doesn't already own both books, but just in case: now it is a good time to buy them --> here
  • A possible addition to Clojure.future is "arbitrary functional destructuring", discussed at length (subject to change) (here, via @fogus) --Judging from the #clojure chat logs, clojure is about to get a new powerful way of destructuring.
  • My library for distributed apps in Clojure; Conduit. (here, via @jimduey) -- Distributed data streams processing, this is what it is about. The article describing this library links to more detailed articles, which elaborate on the theory behind this model. Very interesting read, but not for the faint of heart. I must admit it is definitely out of my league :(
  • Thrush in Clojure (redux) (here, via @fogus) -- It turns out -> is mostly a thrush combinator (yes, they're all named after birds, how cute!). Mostly because it doesn't work in all the cases, one of them being anonymous functions, as it takes the anonymous function definition for a list, not for a function. The fix is deceptively simple. A must read.
  • Dynamic mixins with clojure, an experiment (here, via @sbtourist)

Today in the Intertweets (Sept 27th Ed)

  • clojure cookbook (here, via @piotrgega) -- gettingclojure.org gets a new section: a clojure cookbook modeled after the O'reilly cookbooks. Plenty of recipes for many common goals for clojure programmers.
  • Domain Models - Thinking differently in Scala & Clojure (here, via @debasishg) -- The author creates models for the same domain both in Scala and Clojure. It turns out that the programming language you use affects the way you think about problems.
  • Introdução ao Clojure (here, via @diullei) -- An introduction to Clojure in Portuguese, but instead of using that Oracle JVM, it is using the Microsoft CLR. And oh, winforms!
  • I've written midje-mode, a go at applying the "work with ease" mantra to #clojure/#midje development (here, via @marick) -- Midje, a mock-oriented testing framework for Clojure just got Emacs support, a rite of passage for any clojure project to be taken seriously, or so it seems. The link is to a wiki site, and somewhere in there there is a screen cast showing midje-mode.
  • Unifycle: A Unification Library for Clojure (here and here, via @fogus) -- "Unification forms the basis of Prolog’s modus operandi and is often used in applications pertaining to automated reasoning, logic, type systems, and algebra." 'nuff said!  The code can be found here.
  • Classification with MIRA in Clojure (here, via @aria42) -- Warning, very nerdy machine learning algorithm ahead. This article describes MIRA and its implementation in Clojure.
  • Notes from last week's Clojure meetup w/ Rich Hickey (here, via @tvachon) -- Yes, your clojure code is about to get much faster, and with very little changes to your code to boot. I can personally certify the accuracy of this article, since I was at that talk too. Rich Hickey just gets better and better at this sort of talks.
  • Hey @kennedywm, is your #clojure #VS2010 plug-in somewhere available? I would like to try it! (via @urzidlo) -- Another sign that Clojure on the CLR (.NET) is getting some serious traction: a Visual Studio plugin!
  • Finished a braindump of nREPL's protocol and message "spec". Comments welcome, esp. from Clojure toolmakers. (here, via @cemerick) -- An early implementation of nREPL, a remote REPL implementation to unify development tool access to the REPL in a way that is not SLIME/swank. This project is moving really fast.

This weekend in the Intertweets (Sept 26th Ed)

  • Clojure and Contrib 1.3.0-alpha1 released (via @stuartsierra) -- This is to match Clojure 1.3.0-alpha1
    • OK clojure contrib 1.3.0-alpha1 is back up; try again; "complete" module still broken (via @stuartsierra) -- So it wasn't a smooth ride after all.
  • A week from today tickets will cost $249. buy today for $199 (here, via @clojure_conj) -- Hurry up! Make the decision to come and meet us all at the first clojure-conj and buy the tickets before they become more expensive (the hotel will likely get more expensive too!)
  • Radio claimed "facetious" is only word with all vowels in aeiou order. Clojure disproves it (here, via @sanityinc) -- A one-liner. Easy.
  • The book on Clojure written in German has been published. Hurrah! (here, via @tbatchelli) -- Hurra indeed! Now if I only knew some German...
  • 26 snapshots later, here's Lazytest 1.0.0 (here, via @stuartsierra) -- This is a new testing framework for clojure that has been fed all the experience that former c.c.test-is and later clojure.test provided over the last couple of years. It takes a behavioral approach this time.
  • Clojure may not end up as the next dominant language on the JVM but it's ideals definitely will. (via @danielglauser) -- Word.
  • compojure 0.5 released. Ring 0.3 and #clojure 1.2 upgrade, start using protocols. (here, via @wmacgyver)
  • Graphics like it's 1979: How to get clojure to act like a ZX Spectrum (here, via @planetclojure) -- The author discusses how it is quite hard nowadays to do some computer graphics. Too much boiler plate required. Back in the day, you would turn on your ZX Spectrum and start plotting like it was going out of style. This article presents a simple graphics lib for clojure that will make plotting on the screen fun again!
  • How reify works, and how to write a custom type (here, via @pepijndevos) -- What I find most interesting about this article is not the subject per se, although it is interesting in itself too, but that it is a testament of how the Clojure community really works. A must read for everyone IMHO.
  • Just released #clojure #maven plugin 1.3.4 - should be hitting Maven Central ~midnight (via @talios) -- Midnight? Whose midnight? Yours? Mine? We live in a global village with not so global timezones ;)

A year ago in Clojure

Hey, I know you guys didn't know what to do over the weekends since there were no postings on disclojure. Well, that situation is no more! On Saturdays I will post about what happened a year ago in the Clojure universe. This way we'll see how far we've all moved in just one year :) Below is the first post of this series Enjoy, Toni. So what happened on the week of Sept 23rd 2009?
  • I got the first evidence of a book named "Clojure in Action" being in the works. Now you can buy an early access version of it here.
  • The "Definitive Guide to Clojure" was announced. You can buy it here.
  • The "Time is the new Memory" interview with Rich Hickey at InfoQ was published. A lively debate followed in the comments section.
  • Hackers with Attitude (freitheit.com) published one of the first articles about programming Clojure on Google App Engine
  • JVM languages popularity according to stackoverflow.com tags was: Groovy(402), Scala(338), Clojure(182), Jython(105), JRuby(100) -- Here is how they fare now: Groovy 1228 (a 305% increase), Scala 2081 (615%), Clojure 915 (502%), Jython 267 (254%) and JRuby 384 (384%).
  • Conjure 0.2 was released.
  • @hugoduncan wrote clj-fluiddb, a clojure client-side library for FluidDB
  • Rich hickey spoke about Clojure at the JVM Languages Summit ('Are we there yet?') and the slides were made available.

Today in the Intertweets (Sept 23rd Ed)

  • For those who prefer their regexes verbose: a #Clojure notation/DSL for regexes. (here, via @cgrand) -- Words are failing me right now. It could be powerful though.
  • Yes, Clojure has regular old locks (see the 'locking' fn). They're often not appropriate, but when they are, don't be afraid to use them. (via @cemerick) -- Yeah, and on the same note, you can also use all the Java concurrency primitives if that's your thing.
  • #clojure 1.3 alpha 1 (here, via @stuarthalloway) -- So the first alpha cut of the master branch of Clojure is here. If you like being in the bleeding edge, but not really, then instead of tracking master you can use these alpha cuts. Please do, and provide feedback. Cool new features are: awesome primitive types support (very fast) and better exception reporting.
  • SLIME for TextMate (sorta, Clojure)(here, via @HNComments) -- A bunch of clojure hackers have put together the foundations for SLIME-like clojure support for TextMate, the OSX code editor that all the rubyists love. It heavily relies on cake in the background. Cool project, especially if you never managed to get the Emacs/SLIME combo to work. More info here.

Today in the Intertweets (Sept 22nd Ed)

  • First spike of a (hopefully) common network Clojure REPL (here, via @cemerick) -- nREPL is a clean-room design and implementation of a remote REPL for Clojure, with the intention to become the standard amongst IDE tools. The rationale for this project and the initial design can be found here.
  • ANN: Mycroft, a #clojure inspector (here, via @stuarthalloway) -- This is a new tool designed to let you gain introspection into all the objects known by your clojure instance. It lets you navigate from package to package or by other routes. You can try it out with this live version here.
  • TwiML voice Clojure implementaiton complete (here, via @sethtrain) -- Now that is a fun toy to play with! This is a library that lets you interact with Twilio, which is a communications service provider in the cloud (think glorified answering machine, but on steroids, lots of them). You now can easily program your own call center from clojure.
  • jclouds at @oredev Malmö 9-10 Nov showing #whirr and #pallet #cloud #devops tools (here and here, via @jclouds) -- If you're going to attend Øredev in Malmö, Sweden, then you might want to also attend these two workshops on cloud deployment with jclouds and pallet. Pallet is built on Clojure and uses jclouds to provision servers in the cloud, and then automatically configures them to your liking.
  • funkyweb just got a major update (here, via @_pmh_) -- This is a new entry in the list of web application frameworks for Clojure. Its main differentiator is that it can infer the routes based on your code. WIP

Today in the Intertweets (Sept 21st Ed)

  • Looks like linköping has a clojure user group now! (here, via @mikaelsundberg) -- That's in Sweden.
  • "JavaFX can work with alternative languages on the VM such as JRuby, Clojure, Scala and Groovy" (here, via @rponte) -- Don't miss out the slides from the talk at JavaOne 2010 that this quote comes from, there's plenty of Clojure code.
  • Very impressed with this little snippet, Programmatically Compiling Java Code Using Clojure from nakkaya.com (here, via @xgavin) -- Holy cow! Compile and execute Java Code at the REPL, in just one line.
  • Swapping words with synonyms (here, via @thnetos) -- Another article about Natural Language Parsing, with a very cool example of its use. Grab a text in English, parse it and then substitute every word by one of its synonyms. The result reads quite a bit like lawyer-speak to me.

Today in the Intertweets (Sept 20th Ed)

  • Control iTunes with #Clojure (itunes 'pause) (itunes 'play) (itunes 'stop) (here, via @learnclojure) -- Finally a good use for Clojure! I knew this Clojure thing would one day find its killer application...
  • Clojure Swank Server is Insecure by Default : Use a Firewall (here, via @planetclojure) -- Yep. Not pretty. You know those swank servers that you fire up in your production code so you can patch bugs interactively? Yep. Not pretty.
  • Session 5: Clojure's Approach to Identity, State, and Concurrency // starts in 23 mins (via @hugozhu) -- That's at JavaOne. Rich Hickey was there.
    • Surprisingly there were 2 cute girls at clojure talk. I didn't know blondes love FP but if so it's another good reason to move away from OOP (via @mariofusco) -- A clear indication that Clojure is cool.
    • The private party upstairs at this bar was for Clojure (or something), Rich Hickey just walked by. (via @bretthoer) -- A clear indication that Rich Hickey is cool.

Disclojure turns one!

A year ago today --actually, it was yesterday-- I posted the first intertweets article. I wanted to be part of the Clojure community and I didn't know where to start, so I started there. 366 days later, 263 article later, the disclojure audience has grown dramatically.  As a testament to this growth, suffice to say that I just bought my first Ferrari with the money from Google Ads and that I have put the some money down for a paradise island in the Caribbean, Not really. I is actually much better: during this year I have met a lot of you guys, both virtually and also in person, and I can tell this is a happy, smart and engaging crowd. Just for this fact alone this project has already paid off handsomely, and I am looking forward to the future of Clojure and its awesome community. This is to you guys! Toni. PS: Want to give me a birthday present? Spread the word!

This weekend in the Intertweets (Sept 19th Ed)

  • Video: #clojure introduction "Up Close and Personal" by @unclebobmartin Thanks @agileholland and @amsclj (here, via @sourcesense) -- So Bob Martin went to Agile Holland and talked about how Clojure is the future. He is one entertaining speaker. Props to the Amsterdam Clojurians for setting this up!
  • Clojure-conj talks posted (here, via @liebke) -- Know what will be talked about at the first clojure-conj conference. At least officially. Unofficially, plans of world domination will be discussed between the talks and also at the bar.
  • Clojure Unsupervised Part-Of-Speech Tagger Explained (here, via @aria42) -- A few days ago there was a post about a clojure implementation of unsupervised part-of-speech tagging with only 300 lines of code. Since 300 lines of code are too hard to reverse engineer for some, requests were made for further detail on this algorithm. Well, be careful with what you wish for!
  • Taming HTML forms with #Clojure. One small example of why I think Clojure will be an awesome web programming language. (here, via @brentonashworth) -- This tutorial both introduces the form features of the upcoming version 0.3 of sandbar, and also shows how you can create web forms interactively with this lib, including validation and error reporting.
  • Beginnings of a graph library for #clojure (here, via @jkkramer) -- You can define, traverse and do other operations with graphs. With optional support for GraphViz to boot!
  • I wrote a library to simplify using Google App Engine with #Clojure (here, via @vetoshev) -- You can find the rationale for this project here.

Today in the Intertweets (Sept 16th Ed)

  • so Oracle is closing talks about #Clojure and #Scala at JavaOne, are they afraid too many people might actually like them? (via @MichaelDMcCray) -- Is that true? I haven't been following JavaOne all that much lately...
  • RT @LauJensen: Factorial of 5? Easy: (letfn [(!-?>[&$ &!](if(>,&!,1)(!-?>@(->>,&$,(*,&!)ref)(->,&!,dec))&$))](!-?>,1,5)) #clojure #eyeshurt (via @learnclojure) -- I had to copy+paste it to my ever open REPL. It produces '120'. How? I have no clue.
  • Is Transactional Programming Actually Easier? (here, via @letronje) -- "The [Transactional Memory] research community claims that programming with transactional memory is easier than alternatives (like locks), but evidence is scant. In this paper [...]" and a few paragraphs later "This paper offers evidence that transactional program- ming really is less error-prone than high-performance locking, even if newbie programmers have some trouble understanding transactions." Here's the original paper.
  • Sort your Clojure ns clauses in Emacs, for kicks. Lots more ideas for useful stuff; this is just the beginning. (here, via @technomancy) -- Called 'durendal', this new project from @technomancy aims to add all kind of clojure-related goodies to Emacs, like the one cited on the original tweet, but also compile on save, one-step initiation of lein-swank + slime-connect and paredit on the slime REPL. The to-do's are exciting too!

Today in the Intertweets (Sept 15th Ed)

  • Thinking of creating a new language fusing Fortran and Clojure; working name is 'Forclosure' (via @scidata) -- I am sure it will be a hit amongst financial institutions and real state agents.
  • Live coding with #opengl in #clojure using #penumbra (here, via @ztellman) -- This is an extensive article about the virtues of interactive development at the REPL. There is a section about Clojure, with an awesome screencast of developing a 3D tetris with Clojure and penumbra.
  • London Devs Takin' it to the Pub next week- Clojure vs. Scala (here, via @java) -- I might have been to the wrong pubs in London, but these things never end well at the pub.
  • Finite state machines in clojure using jobim (here, via @antoniogarrote) -- Jobim is an actors library for clojure. In this article, a library to generate actors that implement  Finite State Machines is presented.

Today in the Intertweets (Sept 14th Ed)

  • New Course: #Clojure 101 - registrations open (here, via @IndianGuru) -- The last course was a success. If you're new to Clojure this is your change to learn online.
  • Подкасты / [PODCAST] The Art Of Programming — Выпуск №53 [ FP ] / Clojure: Интервью с Alex Ott, пляски вокруг функ... (here, via @habranews) -- An interview with Alex Ott by the Art of Programming podcast. Sorry, I don't have a translation for the audio :(
  • Anyone out there that wants to take over the @learnclojure account (for a while)? I have little time on my hands for this now. #clojure (via @learnclojure) -- Will someone take up the challenge?
    • Great! @learnclojure will from now on belong to @fogus, author of The Joy of Clojure, one of the greatest Clojure books around. Goodbye! (via @learnclojure) -- Oh! Things are about to get complicated now...
  • Clojure Macro Tutorial (Part II: The Compiler Strikes Back) (here, via @planetclojure) -- An part III is here too.
  • (eval-after-load 'slime '(setq slime-protocol-version 'ignore)) (via @stuartsierra) -- Using Emacs + Lein + Swank combo? Does it bother that every time you fire up a slime session Emacs warns you that the slime versions are incompatible and asking you to type 'yes' to move on? Add this to your .emacs file and the problem will go away.
  • Factual launching Clojure meetup in Los Angeles. All those interested are welcome to come! (here, vi @factualinc)
  • Clojure and concurrency (here, via @LotusEducation) -- An article at IBM's DeveloperWorks site about the Concurrency features of Clojure. Introductory level.
  • New blog post on some of the new functions in #clojure 1.2 (here, via @objcmdo) -- There has been a lot of chatter about the new big features of 1.2 (protocols and such), but this article focuses on some less talked about new functions in clojure.core, like group-by, reductions, and such.

Today in the Intertweets (Sept 13th Ed)

  • Noticing some interesting evolution of Node.js towards #Clojure "best practices". #uhoh (via @LuciousPear) -- Are you talking about Aleph?
  • Concurrency, State and Functional Programming (here, via @bradfordcross) -- or, Just Because Clojure Supports Multiple Styles of Concurrent Software Development Doesn't Mean That You Should Use Them All, All The Time. The article distinguishes the different types of support for concurrent software development that Clojure provides and argues that most of the times, just one style is enough.
  • Another entry in the (take... series of micro-interviews focusing on #Clojure. (take 6 (george-jahad)) (here, via @fogus) -- George has been producing cool debugging facilities for Clojure. Read about his new plans.
  • State-Of-The-Art Unsupervised Part-Of-Speech Tagger in 300 lines of #Clojure (from Scratch) (here, via @aria42) -- The code is self contained, no use of external libraries. There is a companion blog post. Cool stuff.
  • That's why there hasn't been much update on la #clojure. it's being completely rewritten using clojure. (via @wmacgyver) -- This refers to IntelliJ IDEA's support for Clojure development via "la Clojure" plugin. I am assuming that coding the plugin in Clojure itself will make it easier for it to perform the crazy code completion and refactorings that IDEA is used to. Now *that* is interesting... errr, Emacs, why are you looking at me this way? And what is this chef knife in your for?!

This weekend in the Intertweets (Sept 12th Ed)

  • Quer começar com #Clojure?! Dá uma lida nos posts do @anderson_leite (here, here and here, via @abstractj) -- If English is not your thing and you prefer Portuguese, here is a list of introductory articles to Clojure.
  • Once you get past the setup hiccups, TDD in #clojure with Emacs and elein.el (M-x elein-test) is realllly smooth. (here, via @trydionel) -- oohh! a leiningen mode for emacs!
  • A Clojure "Scholarship": Let's send @IORayne to the Conj! (here, via @cemerick) -- So it turns out @IORayne is 16 years old and he can't make it to Clojure-conj because of the lack of funds (lives in Alabama). Chas Emerick reaches out to the community to fund his trip so we can all enjoy his company. Clojure/Core waives conference fee and pays for accommodation. Can we raise $1000 for travel and other related expenses? ... 76 minutes later:
    • The first time I'll ever leave Alabama will be on a Clojure community funded trip to the first Clojure conference. I am geek, hear me roar! (via @IORayne)
    • Thank you's, and details of how the Clojure "scholarship" for @IORayne came off -- Brilliantly! :-D (here, via @cemerick) -- The details of how it all happened. Congrats all involved!
  • pallet now has a leiningen plugin for running pallet tasks from the command line. (here, via @hugoduncan) -- So in case pallet wasn't powerful enough, now you can run it from lein.
  • (continuous) deployment of #clojure web apps by @cemerick 9-15 in NYC (here, via @jclouds) -- @cemerick will be presenting a continuous deployment solution based on, amongst other things, Pallet and JClouds. This will be at the NYC Clojure meetup.
  • (pre?)Announcing "Clojure Programming", the book, by myself and @KirinDave, to be published by O'Reilly (here, via @cemerick) -- Well, today seems @cemerick's day! He'll be co-authoring a book with Dave Fayram. No details yet.
    • Wow, soon there will be more books about #clojure than #scala! (via @mjanuszewski) -- not only that, the clojure books are also thinner!
  • Clojure Macro Tutorial (Part I, Getting the Compiler to Write Your Code For You) (here, via @planetclojure)
  • Froth: A Forth implementation in Clojure. (here, via @IORayne) -- As a name, Froth is much better than Forthjure...

Today in the Intertweets (Sept 8th Ed)

  • just wrote a clojure autodoc mojo for the clojure-maven-plugin. would be cool to get it integrated. (here, via @puredanger) -- Autodoc is cool. Maven is cool too. Being able to use both at the same time? Cooler.
  • Best In Class - The tour (here, via @planetclojure) -- A walkthrough the Clojure code behind the code that powers the blog Best In Class
  • loves this picture (here, via @craigandera) -- Pure awesomeness!
    State: youre doing it wrong
  • ZeroMQ and Clojure, a brief introduction (here, via @antoniogarrote) -- "What would BSD sockets look like if they were to be designed today? That’s the question ZeroMQ designers seem to be trying to answer when they started working in the project." A great introduction to ZeroMQ and a detailed tutorial to get it up and running with Clojure.

Today in the Intertweets (Sept 7th Ed)

  • Made a #Clojure interface for the Google Ai Challenge—have yet to test it, but it's up (here, via @ihodes) -- Ready to write your bot to compete in Google's AI Challenge? It's Planet Wars!
    • You can now participate (well, once it's set up server-side, too) in the Planet-Wars Google AI contest with #Clojure (here, via @ihodes)
  • Want to learn idiomatic #clojure? Tie one hand behind your back: no recur, no lazy-seq. (or attend next #conjlabs http://conj-labs.eu/ ;-)) (via @cgrand) -- Hey, did you know that you can write the word 'database' with just your left hand? Which hand will you guys tie on the back of your students during the training sessions? Seriously, if you are in Europe during Oct 26th to 28th and want to  learn from the pros, you should consider conj-labs.
  • Been working on a design for a new hosted/remote Clojure REPL impl. Input very welcome. Implementation is on this week. (here, via @cemerick) -- This is a proposal to unify remote access to the Clojure REPL, since currently each IDE uses its own proprietary methods. This document proposes a set of requirements for this unified access, and it is awaiting your feedback!
  • Web recipes in #clojure by @abedra (here, via @stuartsierra) -- "This is a collection of clojure projects focused on making some sense out of web development on clojure." Tools for this trade? RingCompojureHiccupSandbar.
  • Know any Clojure users in Charleston, SC? I'm organizing an inaugural meetup #clojure (via @smashthepast) -- I hope this shootout helps!
  • Released Leiningen 1.3.1 while in line to see Gibson. Seems fitting. Will send an announcement to the Clojure list once the event's over. (via @technomancy) -- It does seem fitting.

Today in the Intertweets (Sept 6th Ed)

  • An Exercise in Laziness and Futility • a fun #Clojure story, happens in #CommonLisp too—someone already thought of that (here, via @xampl) -- How to write lazy functions in Clojure by creating a lazy version of reduce.
  • Hit an "Ooh, really? Awesome!" moment in the Clojure book. Sweet. (via @kevinclark) -- It happens...
  • Rich Hickey will be presenting to the Bay Area #Clojure User Group on September 20th. Nice! (here, via @brentonashworth) -- Seats are limited, so if you plan to attend make sure you RSVP.
  • #clojure users! Don't forget the users map! (here, via @kotarak) -- That's right! This is a map of all the clojurians. If you aren't there yet, go ahead and add yourself (unless you work for Wikileaks that is).

This weekend in the Intertweets (Sept 5th Ed)

  • Using flash messages with Ring 0.2.5/Compojure 0.4.1 (here, via @kumarshantanu) -- In case you were wondering...
  • Second part of my tutorial on #clojure web dev with compojure: now with ajax! (here, via @mikaelsundberg) -- Here is part 1
  • Implementing actors in Clojure (here, via @antoniogarrote) -- Jobim, an actors library built on top of RabbitMQ and Zookeeper for Clojure, uses Matchure and provides some sort of hierarchical process structure for added Erlangliness. This article describes in detail how the system works. Very interesting WIP.
  • Registration is open for #clojureconj at http://clojure-conj.org/ (via @clojure_conj) -- If you plan to go, register now as seating is quite limited! I will be there, so come and say Hi! :)
  • Run the GWT compiler with lein-gwt in #clojure / #gwt hybrid projects (here, via @teropa) -- If you're crazy enough to use the Google Web Toolkit framework and tool chain with Clojure, then you might be interested in this plugin for Leiningen.
  • A* in Clojure (here, via @jorgetavares) -- Need to find the best path between two nodes in a graph? Need to do it fast and efficiently? Then A* is your algorithm. No need to write it though, since Christophe Grand (@cgrand) wrote it for you.
  • Clojure Box 1.2 an all-in-one installer 4 #Clojure on Windows inspired by Lispbox (here, via @carlosqt) -- Now it comes with Clojure 1.2. Instructions: 1) Install. 2) Launch. 3) Hack in the REPL!
  • Lein-run by @sids is awesome (deserves 0.1 release) - you can run #clojure web apps from command line (here, via @kumarshantanu) -- It comes really handy when developing webapps in Clojure, but it is also useful for any need to fire off a long running Clojure process from the command line.
  • Learn and Use the Standard Library (here, via @planetclojure) -- You should not try to reinvent the wheel, first look at clojure.contrib.wheel ... you might just find a faster wheel than you could ever build...
  • Just finished a blog post revealing the secrets of monad fu, in #clojure. (here, via @drcabana) --Let's see if I finally get this whole monadic thing... Is there any monad pill that I can swallow?!?

Today in the Intertweets (Sept 2nd Ed)

  • Programming Challenge for Newbies in #Clojure and #Python too? Share your thoughts (here, via @IndianGuru) -- RubyLearning has been holding monthly Ruby programming challenges for newbies. They're thinking about expanding them to Clojure and Python too.
  • John Rose on JVM Summit is all about moving towards a functional paradigm; it seems #clojure's guiding the way (here, via @pedroteixeira) -- didn't I say those talks were full of gold?!
  • cfmljure - calling #clojure from #coldfusion - is available to play (here, via @seancofrield) -- ColdFusion is a veteran of the web scripting languages/frameworks. Now you can finally do cool stuff with it ;)

Today in the Intertweets (Sept 1st Ed)

  • Editing trees in #clojure with clojure.zip (here, via @marick) -- clojure.zip is a functional traverse and modify (well, create modified copies of) trees. How to use this library is not immediately obvious, and this article explains how to use them.
  • The Joy of Clojure: Thinking the Clojure Way - Book Review (here, via @ibmkhd) -- "reading "Joy of Clojure" might actually require the reader to use a dictionary, as the lexical range used by the authors is broad and might be a barrier". I disagree, english is my third language and I didn't need a dictionary. I even got some of the jokes! This is a horribly shallow review, actually.
  • Did you know about linear search in #clojure? (here, via @kotarak) -- Short article explaining how 'contains?' works (which seems to confuse a lot of people) and  how 'some' is a very useful higher-level function for finding elements in a sequence.
  • "at the moment we believe #fsharp and #clojure to be better suited to most organisations for assessing than #scala" (here, via @ptrelford) -- Technology Radar is an advisory publication by the IT consultancy ThoughtWorks that periodically reviews new technologies and assesses their levels of maturity and desirability for IT customers. Well, in this issue they are continuing to favor Clojure over Scala... aaaand now it is time to run for cover ;)

Today in the Intertweets (Aug 31st Ed)

  • Protocols are faster than Clojure multimethods. Can be as fast as direct func calls in fact and inlined by hotspot (via @chouser) -- This is an important fact.
  • Clojure or: How I Learned to Stop Worrying and Love the Parentheses (here, via @nathanmarz) -- This is an article that explains one of the main differences between Lisps and other mainstream languages: the ability to extend the the language --even create your own mini-languages-- to fit your purposes from within the host language itself and without adding any accidental complexity to the system.. Most other languages add accidental complexity when trying to do so.
  • Sweet, a Clojure Ring adapter for Mongrel2 by mikejs (here, via @zedshaw) -- This allows you to run Ring/Compojure applications inside Mongrel2, a cool new language agnostic web server.

Today in the Intertweets (Aug 30th Ed)

  • In which the lessons of ZZ Top are applied to the marketplace (here, via @planetclojure) -- Tangentially related to Clojure, except that the author of the article built Leningen for us, and along the way he did something bad... and nationwide. A good read about why a hacker sometimes needs to assert her/his opinion in the code.
  • Clojure and SQL (here, via @cfbloggers) -- Short tutorial on getting some SQL working with Clojure.

This weekend in the Intertweets (Aug 29th Ed)

  • stumbling towards the clojure api (a code example using de maybe monad and null safe operator .?.) (here, via @jneira) -- The many ways to deal with functions that can return a null value.
  • I put together a small example of how to use the #websocket support in #aleph using #clojure (here, via @maclausen) -- Don't you worry, you won't be reading much code as the code in this example is very succinct.
  • Random thoughts on Clojure Protocols (here, via @debasishg) -- This is a very informative article about what protocols in clojure are and are not, the latter part (what protocols are not) being most informative for all of you programming polyglots.
  • Porting #clojure ants concurrency demo to #haskell (here, via @wmacgyver) -- Here is a follow-up post, "Speeding up the Ants program" which contains some interesting profiling info.
  • lein-hadoop is now available on clojars.org. Contributions welcome! (here, via @xefyr) -- A leiningen plugin that lets you create hadoop-compatible jar files.
  • The only real problem I have with Clojure is that after learning it, you never want to program in another language again (via @mauritsrijk) -- I know, it happens...
  • Beware Choosing the Most Complex Tool for the Job (here, via @stuartsierra) -- A word of caution for those too eager to use the new 1.2 features (protocols, records) that could make your programs more complex and less flexible.
  • static - static blog generator in #clojure (here, vi a@maclausen) -- Nurullah Akkaya moved his blog away from Compojure and into the static world by using only hiccup. The code is here.

Today in the Intertweets (Aug 26th Ed)

  • How we Deploy our Clojure App (here, via @kyleburton) -- Automatically deploy a clojure webapp using Chef.
  • Reusable method implementations for deftypes (here, via @planetclojure) -- The new types in clojure 1.2 are very powerful, both in terms of their flexibility and their performance. Deftype allows you to create lean java classes from clojure. Records are deftypes extended to become first-class clojure citizens (e.g. map support, metadata support, etc...) Currently there is no support for reusing method implementations in deftypes (i.e. reuse map support from records.) This article introduces the library methods-a-la-carte that allows you to do just that.
  • Get @chrishouser's top-selling "The Joy of Clojure" for 40% off using code s140 (until Sept 1) (here, via @fogus)
  • Used my lunch break to update the Trammel docs with the new syntax (here, via @fogus) -- Trammel is a contracts programming library for Clojure that is WIP. Lately the syntax has changed quite a bit and this article introduces this new syntax.
  • Follow-up to yesterday's post with some examples on using #zeromq to connect #clojure to #ruby! (here, via @trydionel) -- This is a follow-up to this article showing how to connect to zeromq from Clojure, and it shows how to get Clojure and Ruby talking.

Today in the Intertweets (Aug 25th Ed)

  • #Compojure Demystified with an example - Part 4 (here, via @sivajag) -- Here are part 1, 2 and 3. This is a series about creating webapps with Compojure and Clojure.
  • Looks like I can improve the Clojure section of DSLs In Action with the new Protocols introduced in 1.2. Non invasive abstractions FTW (via @debasishg) -- Those protocols sure are neat...
  • I joined Los Angeles Clojure Users Group on Meetup (here, via @nickmain_ ) -- So there, there is a LA Clojure group now.
  • Wrote up the details on getting #zeromq working with #clojure on #osx (here, via @trydionel) -- ZeroMQ is a (very fast) messaging library, meant to be used programmatically, as opposed to being a shrink-wrap solution. Making it work with Clojure is not a walk in the park. This article might help if you want to do that on OSX.

Today in the Intertweets (Aug 24th Ed)

  • Scala classes in clojure (here, via @ScalaAtSO) -- That's right: make love, not war. It's refreshing to see Scala and Clojure in the same sentence without a 'vs.' in between.
  • Are github-hosted repos the maven gateway drug for my Clojure brethren? Sorry guys: it's a fact of life on the JVM.(here, via @cemerick) -- Yes, it is a fact of life that your project will be broken into a few modules that might evolve concurrently, and you'll have to manage their dependencies.  This article is actually only tangentially related to Clojure, as it applies to Java itself and all the other JVM-based languages. The fact of life is that you will need to setup a Maven repository which, as the article proposes, can be done without adding much infrastructure overhead.

Today in the Intertweets (Aug 23rd Ed)

  • Alle drei Teile unserer Clojure-Serie im JavaSPEKTRUM sind mittlerweile online (here, via @stilkov) -- For the German speakers (well, readers would be fine too!), here are the three parts of a series of articles on Clojure for JavaSPEKTRUM (Overview, Data Types and Java Integration, and Concurrency).
  • Version 0.6 of the Grails Clojure plugin utilizes Clojure 1.2.0 (here, via @jeffscottbrown) -- Grails is a Groovy-based web development framework. This plugin lets you use clojure from within the framework, which makes it very easy to develop webapps and use Clojure in the backend.
  • Securing #Clojure web applications with Sandbar - Part 2. Form-based authentication and channel security (here, via @brentonashworth) -- Sandbar is a library intended to work on top of Compojure/Ring and that simplifies writing web applications.
  • Basic authentication for ring (and compojure etc.) (here, via @planetclojure) -- Basic Authentication, but this time without Sandbar ;)
  • A micro-manual for LISP Implemented in C (here, via @planetclojure) -- Ok, bear with me here. Nurullah has a free weekend, and what do you normally do with a free weekend? Well, it turns out he decides to write a LISP in C. So he writes it, and it works. Let me ask here, how many of you pull this kind of software over the weekends?!? I don't. I would if I could though!
  • Are we to static for a dynamic world? (here, via @kotarak) -- The pros and cons of extending records statically or dynamically (speed vs. flexibility). Good insight, you might want to tread this, since these features are new to Clojure 1.2.0

This weekend in the intertweets (Aug 22nd Ed)

  • 32 days after Leiningen 1.2.0: Leiningen 1.3.0 is released (here, via @technomancy) -- Multiple connections to the same REPL, task chaining, user-level plugins, and shell script launchers for your jar files.
  • Clojure, concurrency and silver bullets (here, via @cbeust) -- Cedric Beust, the author of amongst other things TestNG, comments on Bob Martin's article"Why Clojure?" and argues that clojure is no silver bullet when it comes to concurrency, arguing that straight Java with the Concurrent library is better.
  • Modularization of #clojure contrib is complete; lib authors please read (here, via @stuartsierra) -- This will allow authors to provide updates to each library in clojure.contrib much faster than before.
  • There are two kind of databases, those that can do map-reduce queries in Clojure on those that don't (here, via @old_sound) -- The author attempts to using Clojure to perform the computations related to ma-preduce in Riak. Note that you can already do this in CouchDB via clutch.
  • rolled the SIGHUP config reloading business for #clojure into a library (here, via @alandipert) -- "Reload configuration files in Clojure daemons when the JVM receives a SIGHUP. Configuration files are Clojure code, and can contain any Clojure data structures". Un*x only.
  • any sufficiently advanced magic is indistinguishable from #clojure (via @alandipert) -- And with this, somebody in the Internet will call you a 'fanboy'.
  • A Clojurist's Guide to Java (here, via @ihodes) -- From the article: "it should serve as a "Getting Started with Java from Clojure" guide that will hopefully enable you to more easily navigate the Java documentation and use Java in your Clojure projects when the need arises"
  • Clojure in Python (here, via @HNTweets) -- What do you do if Clojure takes to long to start (or re-start) when hosted in Google App Engine? Rewrite  Clojure in Python, of course, since Python starts way faster!
  • Clojure programmers don't write their apps in Clojure. They write the language that they use to write their apps in Clojure. (via @fogus) -- I think it should read "Good Clojure programmers...", my code doesn't quite look like that (yet)
  • equiv branch has been merged to #clojure master branch. primitive args have arrived.(here, via @wmacgyver) -- Get ready to see your Clojure code fly even faster!

Today in the Intertweets (Aug 19th Ed)

Eventful day today :) Clojure 1.2 is out, with a bunch of new features that many bloggers have already covered one way or another and that I'll try to compile in a single post one of these days. For a good overview of the new features, check this presentation by @fogus. Here is the detailed list of new features and all other changes. And as if there were not enough good news in the Clojure front today, there is also confirmation that there will be a Clojure conference this year. Named clojure-conj, It will take place in Durham, North Carolina (that's in the USA) on October 22nd and 23rd.  If you are planning to go, please sign-up so they know how many attendees to plan for. I will be going, so I hope you meet you all there. But other things happened today. Here is the list:
  • Really digging @bradfordcross's clojure Infer ML library; think *nix utils & pipes for ML tasks. (here, via @rjurney) -- This is WIP, but very promising. A library that lets you build your own Machine Learning system by hooking well-known -- and not-so-well-known -- learning algorithms. The beauty of the system is that it makes it very easy to connect algorithms.
  • Case-insensitive filesystems vs AOT-compiled Clojure (here, via @cemerick) -- A word of warning for those who compile Clojure code on file systems that are case-insensitive (OS X, I am looking at you!). Spoiler: if you created two functions, named MY-function and my-function, the compiler will write one over the other.
  • Hacker News should be renamed to Clojure News (via @vsedach) -- That's because Clojure rocks.
  • I hate to overshadow the #clojure 1.2 release, but I've released #midje 0.4.0 (features shown at #agile2010)(here, via @marick) -- Midje is a powerful testing framework for Clojure with emphasis in mocks, written by Brian Marick. This new version features a sweetened interface. Here is a heavily commented example of this new sweet interface (sweet indeed)

Today in the Intertweets (Aug 18th Ed)

  • Conj Labs goes to Frankfurt 26-28/10! Learn #clojure with @LauJensen and me (here, via @cgrand) -- In Europe? You can also lean from the pros.
  • Learning to switch from (a) common #lisp to idiomatic #clojure (here, via @edgargoncalves) -- This is a good article to show to a lisper that wonders what people mean when they talk about "idiomatic clojure".It walks the reader through the process of transforming a very Common-lispy function to a more idiomatic Clojure one.
  • Why Clojure? (here, via @unclebobmartin) -- Bob Martin has been touting Clojure for a while, sometime very publicly like in the last RailsConf keynote. In this article he explains his reasons for choosing Clojure, both over imperative languages and over other functional languages. Bob has been doing an excellent job and convincing large numbers of developers to give a try to Functional Programming in general and Clojure in particular. (I registered more than 200 retweets for his tweet, for example.)
  • Micro languages in Clojure - part 2 (here, via @wilig) -- More on writing DSLs in Clojure. In the previous article the author introduced to a full DSL for generating SQL queries. This new installment covers some new features for this DSL: variable binding and nesting of expressions.
  • Arkham, a clojure interpreter (here, via @hiredman_) -- "lisp interpreter with clojure like semantics". Funny how instead of 'eval', you have 'evil' :)

Today in the Intertweets (Aug 17th Ed)

  • Dear Clojure fans: Leiningen 1.3.0 has a release candidate (here, via @technomancy) -- Very useful new features: shell wrapping of your app, chaining of tasks (finally!), etc..
  • [JavaOne 2010] After "Java and HTML5", the session "Scala and Clojure" is also canceled. (via @Harok_Seb) -- Is that true? Looks like it :(
  • Strange Loop speaker interview: Chris Houser (here, via @strangeloop_stl)
  • Implemented a small command line tool to help me remember stuff during the day (here, via @tormaroe) -- Ah! I was looking for something like this :)
  • Visualising the Wikileak's war logs using Clojure (here, via @planetclojure) -- As usual Nurullah writes a very creative post, showing some ways to aggregate the data from the US war logs in Afghanistan with Clojure and Incanter.

Today in the Intertweets (Aug. 16th Ed)

You guys know how to get yourselves busy over weekend, don't you? Gosh! Here we go..
  • Assoc and Clojure’s PersistentHashMap: part ii (here, via @planetclojure) -- An in-depth look at how 'assoc' works on persistent data structures (with nice graphs and Java code!)
  • "The past is immutable" An early #Clojure in Lisp (here, via @fogus) -- Things I learned Today: Clojure was first written in Common Lisp!
  • #Clojure Protocols and the Expression Problem (here, via @brentonashworth) -- On how the new 'protocols' can be used to avoid the Expression Problem (e.g. adding functionality to library code that we don't have control for).
  • New post, new project: Clojure Workers and Large Scale HTTP Fetching. (here, via @bradfordcross) -- This article introduces work, a generalized worker pool for clojure. The goal is to be able to start multiple tasks to be executed in parallel while controlling the number of threads created and also their lifecycle since, in the opinion of the author, the current parallelization features of Clojure don't offer enough control. It also introduces clj-http...
  • on clj-http. A new http client for clojure (here, via @bradfordcross) -- Mark MacGranaghan introduces his new creation: clj-http, that is a new HTTP client with an interface inspired on Ring, which ensures extreme simplicity and extensibility.
  • Most of learning #clojure is unlearning narrow ways of thinking about programming (via @nathanmarz)
  • weekend hacking: a LOGO interpreter built with clojure + app engine + HTML canvas + parsec envy (here, via @antoniogarrote) -- OK, I don't know where to start with this, but let me try: a LOGO interpreter  in the cloud, backed by Clojure on Google App Engine, with no need of browser plugins (e.g. Flash), that lets you share your designs, all done in a weekend... How long are you weekends Antonio?... oh, and the code is on Github to boot!

This weekend in the Intertweets (Aug. 15th Ed)

  • New blog post on the #clojure cycle function (here, via @objcmdo) -- This is a good article to learn about the power of lazy sequences.
  • Clojure 1.2 RC3 is out. (here, via @stuarthalloway) -- That was fast! Only some fixes, no new features.
  • Just noticed joy of clojure is Manning's best selling MEAP currently, awesome work @fogus & @chrishouser (via @westernwizard) -- Kudos!
  • Micro languages in Clojure via macros and let. (here, via @wilig) -- This article walks the reader through the process of creating a micro-language for interacting with SQL databases with the power of macros and the 'let' statement. A must read IMHO; it is very approachable, informative and let's face it, everybody needs to write a micro-language in their lifetime.
  • Follow up to yesterdays article on #clojure protocols. Discuss how to have a default implementation. (here, via @fulldisclojure) -- A method to provide a default implementation for some or all members in of a protocol.
  • a strategy game developed using #clojure (here, via @wmacgyver) -- There are also some notes from the author about his experience writing games in Clojure; overall he is happy with the level of concurrency, being able to work at a high level and interact with Java, but would love to see primitive support (coming), being able to reduce memory allocations, and maybe a two-phase compilation to deal better with circular references.
  • New REPL step debugger for #clojure (here, via @puredanger) -- Lambdebug is an interesting project that aims at providing a debugger for clojure. Very promising, but it's WIP and lacks key feautres (like support for loop/recur).
  • Awesome new #clojure tool (here, via @heinz_gies) -- And this tool is an auto-completion library for Emacs, that also shows the documentation along with the currently selected completion option.
  • @brweber2 La Clojure plugin for IntelliJ IDEA is now under reworking on Clojure, so it's gonna take a while (via @ilyasergey) -- :(, but if this means that  the new plugin will be better since it will be coded in Clojure, then :)
  • #clojure .net clr mostly up to 1.2RC3 now. (here, via @wmacgyver) -- That'll come handy should Oracle decide to bury the JVM inside their database (joking).
  • The hardest part about #clojure is coming up with names for all the beautiful abstractions you magically end up with. (via @_pmh_) -- And this is the tweet of the week.
  • www.gettingclojure.com, a wiki for Clojure beginners -- This comes straight form the mailing list. This site has a wiki and forums, devoted to provide guidance and support for clojure newcomers.

Today in the Intertweets (Aug. 11th Ed)

  • @weakreference La Clojure plugin update is coming. Thanks for your patience and stay tuned! (via @weakreference) -- This is in reference to the question about the status of La Clojure plugin for IntelliJ IDEA.
  • Racket vs Clojure (it's all about the data structures) (here, via @kicauan) -- A long time Racket (scheme) programmer looks at Clojure and finds that the data structures provided, along with the ability to access all of them via the 'sequence' abstraction, are a very significant advantage. The author also provides some views on pros/cons of Clojure for real-world programming.
  • Just posted an example of code reuse with #clojure protocols (here, via @fulldisclojure) -- If you were wondering how you could have inheritance with Clojure and its 'protocol' feature, here is your answer. A very good post if you come from OO languages and think that Clojure doesn't provide good enough tools for code reuse.
  • Rich Hickey's #clojure "short" todo list: cinc, better method inference, letmacro, JSR 292, modularity, #android ... (here, via @wmacgyver) -- ... pods, parallelism, primitives, scopes... it looks like Rich is getting himself and the clojure/core guys busy these days!
  • At "0 to Clojure in 90 minutes" session by @trptcolin First foray into #clojure. #agile2010 (via @srayhan) -- More clojure at Agile 2010.

Today in the Intertweets (Aug. 10th Ed)

  • Securing #Clojure web applications with Sandbar. The first of a four part series (here, via @brentonashworth) -- Sandbar is library that provides some high-level abstractions to Compojure and/or Ring. In this article it explains how this library can help secure your web app.
  • TJoC has featured in top 3 at HackerNewsers (here, via @kumarshantanu) -- At the time of writing this, TJoC was at position #4, but still!
  • Monkeying with Clojure’s defmethod Macro (here, via @fogus) -- I don't really know how to summarize this one... I need more coffee, but it is late at night.
  • I posit that "yoink" is better name for clojure.core/seq (which is confusable with seq? and sequence) (via @puredanger) -- I second the petition. I have been bit by this one too many times!
  • Creating Sparse Tabular Data With Clojure (here, via @samnewman) -- How to automatically create a sparse table from data entries that might have arbitrary columns (i.e. the possible columns are not known)
  • #clojure in action meap update, ch11 discuss using clojure with various MQs (here, via @wmacgyver)
  • GitHub stats with Incanter (here, via @citizen428) -- Grab the languages data from GitHub, Incanter and some skills, and plot many interesting graphs on programming language usage by GitHub projects. Good also as an introduction to Incanter.

Today in the Intertweets (Aug. 9th Ed)

  • Clojure t-shirt (here, via @Jacolyte) -- Awesome makeshift clojure t-shirt.
  • Rich Hickey and Joe Pamer - Clojure and F# at the Emerging Languages Camp (here, via @ch9) -- Rich Hickey discusses Clojure and F# with the author of the latter. Very interesting interview but it is very clear that both authors love their own language the most.
  • Robert Martin talk on clojure, and he uses IntelliJ IDEA (Agile 2010) (here, via @spav5) -- Robert Martin keeps evangelizing the world with his new gospel of Clojure, by giving a 2.5 hour kata to the attendees of Agile 2010.

This weekend in the Intertweets (Aug. 8th Ed)

  • Good Clojure news site (here, via @tim_coder) -- yet another way of getting your news about Clojure. This link summarizes the links posted on twitter under the #clojure tag.
  • #Cake (#Clojure #Rake) looks great, solves local dependencies problem, but it doesn't work on windows (here, via @qertoip) -- Cake is a rake-inspired build tool for Clojure that is compatible also with leiningen projects. It makes it very easy to define your own tasks, extend existing ones and parse command-line parameters. It also provides a persistent JVM so you can run command after command without the need to fire-up a new JVM (and wait for it to start).
  • Micro-interview about Clojure, Scala, and ill-will. MartinOdersky take(5) toList (here, via @fogus) -- Martin says Scala and Clojure are BFF
  • "Measure your OODA loop in all the languages you know. See which one cycles fastest...that's your favorite language." (here, via @sfioritto) -- OODA stands for Observe, Orient, Decide and Act and in this context it refers to the time it takes from realizing that your program has a bug to the time it takes to find it and fixit. The article makes reference to how Lisp on a Symbolics machine would have an extremely short OODA, and thus it was very productive.
  • Writing a Parser (for a markup language): Theory & Practice (here, via planetclojure) -- This is a question on Stack Overflow about the existing tools to write a parser in Clojure. All the answers are pretty interesting.
  • #clojure 1.2 RC2 is out (here, via @stuarthalloway) -- This is some speedy development!
  • Some usefull information about Clojure servers (here, via @pepijndevos) -- The different options today to write an evented HTTP server in Clojure.
  • Exploring Riak with Clojure (here, via @mmcgrana) -- Riak is a powerful distributed datastore built by Basho. It can scale massively while keeping some good properties. This tutorial walks you through the steps to write a simple application that uses Riak for storage.

Today in the Intertweets (Augus 5th Ed)

  • New post on building REST APIs for Clojure web apps (here, via @mmcgrana) -- Step by step creation of JSON-based RESTful web services in Clojure using Compojure and clj-json.
  • Joy of #Clojure -- In the Books! updated ToC at http://joyofclojure.com (here, via @fogus) -- The book "The Joy of Clojure" is now ready for editorial work, as the bulk of the writing it is done. Congratulations! Can't wait to have a hard copy one of these days; before November maybe?. There has been some chapter reorganization and a new and promising chapter containing an annotated bibliography that will surely will help deplete our collective bank accounts.
  • Send Growl notifications from #Clojure. Too much work for such a simple thing (here, via @brentonashworth) -- That is one fun project. It should to be adopted by tools like Cascalog so that they can tell you when your map/reduce job is done.

Today in the Intertweets (August 4th Ed)

  • Clojure for Beginners Course – 2nd Batch Announced (here, via @L2Program) -- The first (online) course by rubylearning.org was a success, and now there is a new batch coming. The course is $5 that will be donated in full to the Clojure project to fund its development.
  • Great Clojure quote from Brenton Ashworth (here, via @pdrummond) -- That's from a recent interview that @fogus did of Brenton. I am copying the quote here in full: "I’m now convinced that choosing a language based on how easy it is to read or write is a very bad idea. What if we chose musical instruments based on how easy they are to play? Everyone would playing kazoos. You can’t think deeply about music if all you know is a kazoo. Skill at reading and writing code is learned. We should choose languages based on how accurately they allow us to think about the problems we are trying to solve"
  • http://github.com/qertoip/istext is a #java library to reliably recognize #text files and #binary files; implemented in #clojure (here, via quertoip)

Today in the Intertweets (August 3rd Ed)

  • Enhancing Clojure's case to evaluate dispatch values (here, via @cemerick) -- Clojure's 'case' statement is a very fast switch on any compile-time literal. Very fast but with the downside that doesn't evaluate the dispatch values at runtime, and this prevents to use Java variables as dispatch values, even if they're static and final, or enums. Chas Emerick provides an enhanced case: 'case+' that handles said java values, still at compile time.
  • The latest in a series of micro-interviews focused on #Clojure: (take 5 (brenton-ashworth)) (here, via @fogus) -- An interview to the author of deview, sandbar and other goodies.
  • Clojure simple threaded web server performance test (here, via @wilig) -- This is a test of Clojure/compojure on jetty pulling data from a Postgres database. It turns out using a medium-sized connection pool gets the optimum performance.
  • Created a Scala RFE to replace the existing immutable.Vector implementation with my port from Clojure (here, via @djsipevak) -- More cross-pollination between Clojure and Scala, or should I just say 'pollination'? I am not aware of anything flowing from Scala to Clojure. Any tips on those?

Today in the Intertweets (August 2nd Ed)

  • Specifying default slot values for defrecord classes in Clojure (here, via @cemerick) -- What if you want to use a 'record' with a lot of slots for which you'd like to have default values? Right now there is no easy way of having default values in a defrecord. Chas Emerick provides a solution based on macros that create both the record itself and a factory for creating those records with the default values.
  • Did you know about the importance of being Earnest? (here, via @kotarak) -- From the series "Did you know...?", this article discusses the rules of thumb for ordering the arguments to your functions. Most important argument goes first? or it goes last?, and more importantly: why? It turns out it matters if you want to have your functions easily work with higher-order functions.
  • Testing inner functions in #clojure (here, via @marick) -- Brian Marick is working on Midge, a mocking library for Clojure. This post a way in which one could test a function that is defined solely inside another function (by using metadata)

This weekend in the Intertweets (August 1st)

  • Clojure 1.2 RC 1 (here, via @stuarthalloway) -- The march to the final release of Clojure 1.2 continues. Very little changes (see changes.txt)
  • Read our post on Tweetable Code - or How to Read and Write Excel Sheets easily in #Clojure (here, via @ativedk) -- A few weeks ago we reported about a tweet with the code to read some cells on an MS Excel spreadsheet with Docjure. This is a longer article explaining a little bit more about this tool.
  • Likelihood a user of one of these languages will be interested in Clojure (here, via @Alltop_Social) --  If you are an Ada or Scala programer, you have 10 over 10 chances of being interested in Clojure. This is from crossing TIOBE data with a survey of 487 Clojurians stating what their prior language was.
  • No more complaining about Clojure boot times plz: new interactive shell task for the next Leiningen release. (here, via @technomancy) -- Now you'll be able to fire up lein and start typing commands in its own REPL, so no fire up a new VM at every command :)
  • #clojure form validation library #pour (here, via @maclausen) -- From the library's author:  "The purpose of the library is to validate form fields to specified constraints/validators and also to convert incoming fields, which are strings, to valid data in the application domain. In the future this library might be able to generate HTML or JavaScript code from form definitions."
  • Looking for a place to learn and contribute to a widely-used Clojure project? Leiningen has low-hanging fruit (here, via @technomancy) -- You could be the author of some of the new fancy features in Lein 1.3.0!
  • weekend hacking: Clojure HTML manipulation jquery style: [clj]($ "http://news.ycombinator.com" a (external-links) (text))[/clj] (here, via @antoniogarrote) -- Apricot-soup is a library that lets you access and manipulate the content of an HTML page via JQuery-style accessors.

Today in the Intertweets (July 29th Ed)

  • Talked to @meporter about their #Clojure hosting last night...sounds like there is more news in this vein on the way from @contegix ! (via @puredanger) -- This is related to the newly announced sponsorship of Clojure by Congegix.
  • add trace call to every function in a namespace ... and remove it afterwords :) macroes (sic) (here, via @derartur) -- A pair of functions to turn on and off function call logging on all the functions of a namespace.
  • Its tragic. My recent serious foray into Clojure and its functional/expressive greatness has totally broken my view of C based languages (via @markuskobler) -- It happens :)

Today in the Intertweets (July 28th Ed)

  • Example of #websocket based chat using #clojure and #jetty 7 by Chris McDevitt, in GitHub repo with deps (here, via @maclausen) -- The example code in github is not new, but in its original form it was somewhat involved to get it to work. This blog post explains how to do just that.
  • We are sponsoring the Clojure Language Development Project (here, via @contegix) -- From the press release it looks like the sponsoring will come in form of free hosting of servers. That's great news!
  • Preannouncing Seph - Immutable Ioke/Clojure-like JVM language (here, via @hncomments) -- Ola Bini writes a blog post detailing the design principles for his new language Seph, one of these principles being "Stealing is Good". On this note he decides to 'borrow', amongst other things from other places, Clojure's persistent data structures, the concurrency primitives (all of them) and the STM. I wonder if he will also start sporting a mullet? Jokes aside, Seph is based on Ioke, also from Ola. Seph is a homoiconic language that supports prototype-based OO. Since Ioke is very experimental, Seph is designed from the ground to be solid enough to be used in real applications. Seph was presented at Emerging Langs a week ago, and here are the slides.
  • Some ideas on how to write event-driven applications in #clojure using #aleph (here, via @ztellman) -- Zach Tellman outlines his work in progress on a framework to develop event-driven applications to work with aleph, the non-blocking nettty-based web server. In this article the author introduces channels and pipelines as basic abstractions.
  • Couple more seats remaining for the Bay Area Clojure Bootcamp - learn #Clojure in a single day! (here, via @amitratore) -- Learn Clojure from "Clojure in Action"'s author.

Today in the Intertweets (July 27th Ed)

  • #clojure web dev, WAR style using #gradle (here, via @wmacgyver) -- Following Mark McGranahan's recent article about building webapps with Clojure, this article provides a different view: use gradle to build webapps that can be deployed as a WAR file on a standard JEE web server (and using clojuresque and Enlive)
  • Clojure: Destructuring (here, via @AgileCarnival) -- A tutorial on to the powerful feature of destructuring in Clojure.
  • Why do Java programmers love Scala and shy away from Clojure? (here, via @ScalaAtSO) -- I wouldn't want to feed the beast, but I found this discussion somewhat enlightening. Clearly, the programming language world is big enough for people who will never like s-expressions and the ones who will.

Today in the Intertweets (July 26th Ed)

  • Clojure Tips from the Experts. More tips coming in. (here, via @IndianGuru) -- You can still send your tips in, but this is the current list of tips. Pay attention to the one from @fogus.
  • jvm language summit starts today. day 3 has #groovy talk by Jochen Theodorou and #clojure talk by Rich Hickey (here, via @wmacgyver) -- This is in Santa Clara, CA. In the previous edition of this summit, Rich Hickey gave his now famous keynote "Are we there yet?". Looking forward what he's got up his sleeve this time!
  • Corecursion in Clojure (here, via @trzmiel) -- This is advanced Clojure. Corecursion is not an easy concept to learn, but a very useful one. This article tries to explain how corecursion works and how it can be used.

This weekend in the Intertweets (July 25th Ed)

  • Learning about #clojure Pods, a possible new feature similar to transients but better, from Rich Hickey at #emerginglangs (via @disclojure) -- Yes, I was there. Rich Hickey presented his current work on Pods (previously named Cells) at the Emerging Languages Camp in Portland, OR. The room was packed with language developers and some 'tourists' (i.e. yours truly), and a total of 26 languages were discussed.
    • So I wrote up a review of the @emerginglangs conference last night. Awesome times (here, via @technomancy) -- This review of the conference provides the most complete and accurate summary of what Rich Hickey presented.
    • Long blog post on OSCON's Emerging Languages Camp (here, via @deamwampler) -- This is an more detailed description of the conference, but with less emphasis (and accuracy) on Clojure.
  • Clojure dropbox API (here, via @coder_tim) -- Access the Dropbox API from Clojure (provided you are registered as a Dropbox developer). This API will allow to store your users' data in their own Dropbox accounts.
  • #clojure contrib deprecation policy (here, via @wmacgyver) -- As the march for Clojure 1.2 progresses, it is time to clean-up clojure.contrib since, for example, some functions have moved to clojure.core. This document explains the deprecation policy; in summary, things are marked deprecated one full minor version (the 'x' in 1.x) and possibly removed the next one, so you have that window of time to stop using deprecated functions.
  • Writing blog post - collection of #Clojure tips (with code) for newbies. Email me at satishtalim [at] gmail.com (via @IndianGuru) -- This is a request for Clojure programming tips. All worthy tips will end up published in a summary article.
  • Developing and Deploying a Simple Clojure Web Application (here, via @planetclojure) -- This is a relatively long and detailed post by Mark McGranahan, the author of Ring (amongst other interesting projects). The post covers all the steps that will allow you to create a Clojure web-app, deploy it on your local machine or even on Amazon's EC2 infrastructure. It is a great summary of tools and techniques.
  • Did you know about versioning? This time about #clojure infrastructure. (here, via @kotarak) -- A plea to all Clojure library developers to follow a simple and unified versioning scheme, so we all can keep our sanity (these last words are mine)
  • Programming Hadoop with Clojure (here, via @alexott_en) -- A detailed rundown of how to write Haddop applications with Clojure and Stuart Sierra's clojure-hadoop libraries. It even includes a full example and a bunch of useful links, so it makes it very easy to get you started with Hadoop.

Today in the Intertweets (July 21st Ed)

  • Список рассылки про #Clojure на русском (here, via @alexott) -- A Clojure mailing list for Russian speakers.
  • Nice to see a huge list for cheatsheets including Clojure, Haskell, F#, Erlang and a ton of frameworks (here, via @mattpodwysocki) -- You can find a list of Clojure chatsheets here.
  • Announcing unfix, a Clojure library for prefix and postfix notation (here, via @fogus) -- Cool, now you can use clojure with pre-fix and post-tif notation. Cool! Now we need someone to remove those pesky parenthesis and add some semicolons here and there and we're all good. And also, get rid of that immutability stuff while you're at it ;)
As a side note, the Emerging Languages Camp is a hit. Lots of new and old crazy ideas flying around, and I would not be surprised if this event kickstarts a new wave  of cross-pollination between these languages. It was interesting to see how Clojure is referenced quite often as inspiration for some of these new languages. Also, out of about 80 attendees, it seems that at least 50 of them are developing a new programming language!

Today in the Intertweets (July 20th Ed)

Better late than never. I finally got access to the Internet, just to realize that there is some kind of 'virtual' language war going on: Clojure vs Haskell vs Scala vs ... vs who-knows-what-language. Oh well! The mandatory link to "Someone is wrong on the Internet" can be found here. Here is what happened in the last few days:
  • In-Depth Book Review: Practical Clojure (here, via @acangiano) -- A review of the recently published book "Practical Clojure", by Luke VanderHart and Stuart Sierra. Summary: a good book that could use some more non-trivial examples.
  • Better #Clojure test results on the command line. Changes reporting of "lein test": diffs, clj-stacktrace and color (here, via @brentonashworth) -- This is about this fabulous new tool that helps you find out quickly why your tests failed, deview. In this new release, you can run it from the command line (via lein) and get the results right there. Before it would be html based so you needed a browser to see the results.
  • Instant clojure REPL: cljr + nailgun = big win (here, via @antoniogarrote) -- A couple of scripts that will set you up using cljr with nailgun. The end result is Clojure starting very fast, as there is no need to instantiate a new JVM every time you call cljr.
  • Getting Started w/ Google App Engine & Clojure (here, via @linksgoogle) -- This is the PDF of an article appeared at this months' issue of IEEE Internet Computing, and it's about programming web apps in clojure to be deployed within the Google App Engine infrastructure.
  • Leiningen 1.2.0 is out; biggest release yet ... have fun, build some Clojure. (here, via @technomancy) -- Lots of fixes and many new features that will make lein easier to adapt to your workflow.
  • Continuing my series of micro-interviews with Clojure Hackers I present (take 7 (david-nolen)) aka. @swannodette (here, via @fogus)
  • (->> (load-workbook "spreadsheet.xlsx") (select-sheet "Price List") (select-columns {:A :name, :B :price})) (here, via @mjul) -- If you read the code carefully you'll realize that what it is doing is the following: open an MS Excel spreadsheet and read some values from one of the sheets. Pretty impressive for a tweet, don't you think? This is @mjul's creative way to announce docjure, a library for reading and writing MS Office documents with Clojure. This library wraps Apache POI, so all the restrictions of POI also apply here.

Today in the Intertweets (July 15th Ed)

  • a question on hacker news... chime in... "why should i care about #clojure?" (here, via @SeanTAllen) -- In order to motivate you to chime in, here is the mandatory link to "somebody is wrong on the Internet"
  • Next #clojure training at Mountain View on July 31st by @arathore and me - only 6 spots left (here, via @sivajag) -- If you are in the Bay Area and want to learn Clojure from the pros, here is your chance.
  • Get @chrishouser's "The Joy of Clojure" for %40 off until July 22nd with code ju1540 (here, via @fogus) -- Just in case there is any reader that doesn't have it already...
  • most watched java project on github - clojure :] (via @pbadenski) -- How is that a Java project?
  • Aw shucks, that upstart Norvig knocked #Clojure off #1 (here, via @stuartsierra) -- Nah, it didn't. Not at least when I checked it out; "Practical Clojure" is, at the time of writing this, #1 in the "Bestsellers in Lisp" category :)
A quick note from your humble Clojure Tweets curator: I'll be going to the Emerging Languages Camp next week, driving up to Portland, OR from the Bay Area with my family. My wife is in charge of getting us rooms along the way, and I know for a fact that one night we're staying at a farm, sooooo... my Internet access during the next week is very up in the air, and the Intertweets might not come daily. If you're also going, then I hope I'll see you there!

Today in the Intertweets (July 14th Ed)

As disclojure hinted yesterday, Clojure 1.2.0-beta1 is out. Congratulations to all and many many thanks to Rich and crew for pouring countless hours and brain cells into this project. From what I am gathering from comments here and there, this beta release might not cause a huge disruption in the young Clojure ecosystem, since there are many projects out there that were already using a pre-beta version of Clojure 1.2.0. Download Clojure and Clojure-contrib 1.2.0-beta1 from here,  and make sure you check the release notes here, as they are full of good news! Other things happened today:
  • Clojure, Multi-core, AWS Cluster Compute & Lattes (here, via @hkrnws) -- Now that Amazon announced the availability of  Cluster Compute instances, which are big machines that you can reserve to be used in exclusivity, David Nolen went ahead and did some scalability tests with Aleph,  at $1.60/hr for a 8 CPU machine. Not too bad.
  • #clojure asynchronous http client (here, via @wmacgyver) -- Built on top of Ning's open sourced async-http-client, which in turn is built on top of Netty. Netty is getting a lot of love lately :)
  • I find it humorous that #clojure 1.2 is "beta" - we've been using it for 6 months (via @dysinger)
  • If deview is too much for you, then take a look at lein-difftest. Just like "lein test" but with diffs. (here, via @brentonashworth) -- Yesterday we mentioned this promising and very useful project to aid in testing and determining why tests failed. Now today the same author brings us a plugin for leiningen to make using Deview very easy.

Today in the Intertweets (July 13th Ed)

  • The Scala camp's answer to Clojure's Incanter (Yes, it's fun to pretend there's a rivalry between the two) (here, via @MSch) -- Scalala, Scala Linear Algebra Library.
  • How to setup Clojure from scratch (here, via @acangiano) -- With emphasis on the "from scratch" part. Kids, don't do this at home without adult supervision. Use Lein or cljr instead.
  • TheDeadline is now in the Google Apps Marketplace. This is Clojure/Compojure on App Engine. Consider my mind blown. BLOWN (here, via ikai)
  • Better #Clojure test results with deview. Shorter stacktraces and diffs. (here, via @brentonashworth) -- From the article "Deview runs yours tests and reports test failures and successes. If an exception is thrown, clj-stacktrace is used to clean up the stacktrace. Deview will then filter it down to show relevant (according to me) trace elements" and "When a test fails, the difference between the expected and actual results are displayed" . Check out the full article to convince yourself of how awesome this project is. Source code here.
  • Changeset [9c01e1faf5]: prepare for 1.2.0 beta1 Branch: 1.2.x by stuart.halloway (here, via @clojuredev) -- Does this mean what I think it means? If so, Clojure 1.2.0 beta1 is around the corner!

Today in the Intertweets (July 12th Ed)

  • Awesome! The 20 minute form of my "Clojure for Ninjas" talk was accepted at the Stange Loop (via @brweber2) -- Strange Loop getting VERY interesting! Try  Ctrl+F "Clojure" on that page...
  • Wadler’s Law (extended to Clojure) (here, via @fogus) -- A true statement. Feature discussions on Clojure are much more focuses on parenthesis than in semantics.
  • Joe Duffy's Blog: "Thoughts on immutability and concurrency" (here, via @buckybit) -- This article from a Microsoft engineer and published author discusses the need (or not need) of immutable data structures. It's main thesis is that immutability comes second after isolation, and if you can break your program to be isolated -- either by breaking it into independent functional parts via data parallelism -- then data immutability is neither needed nor desired. And even in situations where immutability could be a big win, it is not a perfect solution since now the developer has to reconcile the possible different states of the same piece of data. Good article and food for thought.

This weekend in the Intertweets (July 11th Ed)

  • Get Acquainted with Clojure at #DevConLondon with 'An Introduction to #Clojure' (here, via @DevConLondon) -- Neil Ford from Thoughtworks will be introducing Clojure at London's DevCon 2010 conference.
  • Thoughts on Clojure (here, via @acangiano) -- Antonio Cangiano is a Technical Evangelist at IBM. This is an article about Clojure from the Ruby point of view, since Antonio is a published Rubyist. Spoiler Alert: he likes Clojure.
  • Awesome new Clojure resources: (1) http://clojure-examples.appspot.com/ (2) http://clojuredocs.org/ (via @kumarshantanu) -- Speaking of which:
    • Alpha of http://clojuredocs.org is up! Need your help with examples & feedback (via @napple) -- Zachary, somebody beat you to the tweet! (I report tweets in strict chronological order)
    • Proof-of-concept "examples" macro for the REPL (here, via @jkkramer) -- So you can access the examples from http://clojure-examples.appspot.com from your REPL. From the same author as the website.
  • VoltDB client app written in Clojure. (here, via @arielweisberg) -- VoltDB is a "scalable, open-source SQL DBMS with ACID" ... take that, noSQL! Anyway, in the linked repository there is some code of a clojure interfacing with this DB performing basic CRUD operations.
  • #clojure aleph with mysql, postgresql, mongodb, and @couchdb (here, via @wmacgyver) -- David Nolen tests the performance of the interfacing of Clojure with several databases using aleph as a middle tier. Very basic testing, take it with a grain (bucket?) of salt.
  • Clomert, a very-very early version of an idiomatic Clojure client for Voldemort (here, via @strlen) -- Voldemort is yet another noSQL database (how many already?). It is used at LinkedIn, for example. Very WIP, feedback requested.
  • Internet, I give you http://www.clojurls.com news and other bits about #clojure (via @dermattias) -- New entry in the Clojure News space (getting crowded around here...). In one page you get tweets from selected clojurians, blogs, mailing-list, StackOverflow and other sources, all related to Clojure.
  • Environment Passing in Clojure (here, via @mmgrana) -- If my memory is correct, this is not the first post about this issue. When you bind a variable in a new thread, the binding does not get passed to this thread's child threads (i.e. if you perform a pmap call). This post proposes a simple solution that will carry forward the existing bindings to the new child threads.

Today in the Intertweets (July 8th Ed)

  • Using #clojure with #aspectj's around advices (here, via @edgargoncalves) -- How to advice clojure functions from Java.
  • Clojure's edge on Node.js (here, via @HNTweets) -- This is actually about aleph, the new NIO/Netty based web server for Clojure. In a very basic benchmark it shows it can be faster than node.js (8,500 vs. 7,000 req/s). David Nolen wrote this benchmark.
  • I just added the inital release of my #Leiningen plugin to the #IntelliJ plugin repo (here, via @janthomae) -- For now you can run leiningen goals from within IntelliJ. Work in progress.

Today in the Intertweets (July 7th Ed)

  • Aleph, an asynchronous web server, written in Clojure (here, via @stilkov) -- Zach Tellman just announced an asynchronous web server built on top of Netty and it mostly conforms to Ring's interface. This server uses NIO for managing network communications, and also decouples threads from requests, which is important to scale.
    • Someone is already having good result with aleph (#clojure+netty). beating node.js in hello world is no small feat. (here, via @wmacgyver) -- Nice! Throughput increased 7x over Jetty.
  • Added Roger Bodamer on Scaling MongoDB and Chris Houser talking about Clojure and the expression problem (here, via @strangeloop_stl) -- Nice, 2 talks about clojure already (the other one being by @marick)
  • On Lisp's (clojure) Readability and Parenthesis Stacking (here, via @jneira) -- An article proposing that trailing parenthesis is better than stacking them. (Added for completeness, but...are we seriously discussing indentation styles?)
  • High Level Testing with a High Level Language (here, via @planetclojure) -- A summary of a year and a half of using Clojure to test Java code. Worth reading because it shows where the impedance can be found when trying to get a Java team to use functional languages.
  • New blogpost/screencast: Trail blazing innovators - Use Emacs! (here, via @LauJensen) -- This post tries to explain why some developers chose Emacs as an IDE. Good tips on Clojure debugging :)

Today in the Intertweets (July 6th Ed)

  • Building a scrum board application in clojure using compojure and plaza (here, via @antoniogarrote) -- clj-plaza is a library to work with semantic meta-data. If you're interested in knowing what this Semantic Web is all about, this article is a good place to start.
  • Another #Clojure micro-interview. (take 6 (anthony-simpson)) (here, via @fogus) -- Anthony Simpson is also known as Raynes or @IORayne, of try-clojure.com fame.
  • Frink, Factor, Newspeak, Kodu & Clojure. You could be speaking one of these soon. via @radar Emerging Languages Camp (here, via @iRomin) -- I will be there; any one here also going?
  • Deadlock #Clojure agent: (send-off a #(do (deref (future (await a))) %)) -- A deadlock?!? in Clojure?!?! that can't be true!
  • "--> macro proposal" thread in the #clojure group was an interesting read (here, via @pedroteixeira) -- Interesting indeed, although it got a little heated!
  • The fourth #clojure user group meeting is tomorrow, July 7th, 2010 at the @integrallis' office. See inclojure.com. Hope to see you there (via @inclojure) -- That's in Columbus, OH.

Today in the Intertweets (July 5th Ed)

  • #clojure netty adapter for ring just showed up. Should be usable in #compojure too (here, via @wmacgyver) -- Netty is a NIO-based event-driven framework that, amongst other protocols, it handles HTTP. This project hooks the fast the HTTP support in Netty into Ring.
  • Clojure: Ein pragmatisches Lisp für die JVM (here, via @heisedc) -- Heise Developer publishes an article from Stefan Tilkov about Clojure. The article is titled "Clojure: A pragmatic lisp for the JVM"
  • Uploaded the Pune Clojure Course outline slides. May not be useful standalone. (here, via @ghoseb)
  • Finally pushed my work-in-progress #clojure wrapper for #cassandra (would love feedback) (here, via @trptcolin) -- Cassandra is a highly-scallable dristributed DB opensourced by Facebook. This project wraps the Thrift API to interact with the database. This is work in progress.
  • Replaced the core data structure (mutable, Java) used by one of the hottest loops I've got w/ an immutable clojure deftype. Equivalent perf! (here, via @cemerick) -- woo hoo!
  • State of the semi-vaporous Lazytest (here, via @stuartsierra) -- Stuart wrote clojure.test some time ago. After seeing its use in the wild, he saw some problems with it.  He is now writing Lazytest with the idea of creating a new testing framework without the flaws of clojure.test. This article outlines where is Lazytest today.

This weekend in the Intertweets (July 4th Ed)

  • Just released Radagast, my Clojure test coverage experiment (here, via @technomancy)
  • If you are tracking bleeding edge #clojure, it's been moved from github.com/richhickey to github.com/clojure (via @wmacgyver)
  • making #clojure records more pleasant to import, create, and print (here, via @david_mcneil) -- An enhanced implementation of 'record', one of the new features slated for Clojure 1.2. This alternative implementation allows you to work with records in a similar way you work with other data structures on Clojure. It allows you to pretty print the contents of a record and to create new records without invoking the Java constructor; two things that are not possible with the current 'record' as defined in 1.2
  • New Course: Clojure for Beginners. Course fees to be donated to the #Clojure project (here, via @IndianGuru) -- Starts Monday July 19th, and costs $5. The entire proceeds will be donated to support the development of Clojure.
  • Nu: lisp on objective c. (think clojure for cocoa) (here, via @hkrnws) -- I thought you guys would be interested on this...

Today in the Intertweets (July 1st Ed)

  • #Pune #Clojure Course. It's free. (here, via @IndianGuru) -- Bring your own laptop, July 3rd and 4th, from 10am to 5pm, by Baishampayan Ghose, a.k.a. @ghoseb, of Planet Clojure fame.
  • This is what I'm doing to reference records in a different ns in #clojure - look right? (here, via @puredanger)
  • My own Tetris written in the Clojure programming language :) (here, via @StackedCrooked) -- Nice! I just copied the code into the REPL and I found myself playing tetris a few seconds later (it's a swing app, in case you were wondering...)
  • First cut at Trammel doc for `contract`. Criticism welcomed (here, via @fogus) -- Trammel is project to bring Contracts Programming to Clojure. The author is looking for feedback, so don't be shy!

Today in the Intertweets (June 30th Ed)

  • lein plugin to find a graph of #clojure namespace use/require dependencies. Can output graphviz dot format. (here, via @hugoduncan)
  • Release 0.1.1 of Midje, a Clojure mocking tool (here, via @AgileCarnival) -- We've reported about Brian Marick exploring the possibility performing Test Driven Development in Clojure. During his exploration he drafted a mocking tool for Clojure. This tool is now at a usable level.
  • what's nice in #clojure is that ;-) is an actual comment (via @cgrand)

Today in the Intertweets (June 29th Ed)

  • Seattle people: come talk and write Clojure this Thursday at 7pm (here, via @technomancy)
  • Bitcask is one of my favorite open source projects, so I'm anxious to see how this "Bitcask for Clojure" evolves (here, via @mmcgrana) -- This is about Amontillado, a bitcast-inspired storage for Clojure and in Clojure. Bitcask is a key-value store with very nice operational properties. Work in progress.
  • Clojure development with IntelliJ's La Clojure Plugin (here, via @taoeffect) -- A screen cast showing how to setup IntelliJ IDEA to work with Clojure projects and a few tricks.
  • in case anyone is curious and wants to try clojure for themselves (here, via @seancorfield) -- New to Clojure? This is for you.
  • Bob Martin announced the arrival of Clojure as the Future of Computing in a concurrent world (here, via @IndianGuru) -- A few weeks ago there was a tweet-storm coming from RailsConf 2010 about Bob Martin suggesting everyone to try out Clojure at the keynote speech. Well, here is the video. Worth watching, if anything, for its entertainment value.
  • alter-ego - A Reactive AI Library in Clojure (here, via @xampl) -- This is an implementation of behavior trees. This is used quite commonly in video games to power the brains behind the 'enemies'.

Today in the Intertweets (June 28th Ed)

  • Planning a one week online #Clojure introductory course in July at rubylearning.org (via @IndianGuru)
  • Introducing Gaka (here, via @planetclojure) -- a CSS-generating library, a la SASS. There is plenty of examples here. Work in progress.

This weekend in the Intertweets (June 27th Ed)

  • #clojure web dev survey (here, via @wmacgyver) -- The author of Compojure asks the developers of web applications using clojure for some feedback. Join the conversation if you are one of them.
  • Interview with @Fogus, #Clojure #Git #Github #Haskell #Java #Lisp #Scheme #Scala (here, via @TheGeekTalk)
  • Interview with @chrishouser, the author of The Joy of Clojure, #Clojure #Scala #Vim (here, via @TheGeekTalk)
  • Encounter with incanter - about clojure, incanter and bioinformatics (here, via @walshtp) -- "So I borrowed someone's `Programming Clojure` book, got onto some websites, downloaded incanter and gave it a spin this week. And my verdict: I'm impressed." That's coming from a heavy R user. Incanter allows data processing and data analysis all in the same language.
  • Enhanced primitive support - where things stand today, from Rich Hickey (here, via @disclojure) -- Rich Hickey posts a summary of all the changes related to the new support for primitive types in Clojure. More details here.
  • I've been doing some work on a Clojure package manager to replicate the ease of installing packages in R. (here, via @liebke) -- Enter "clj", a clojure REPL and package management system. It complements Maven and Leiningen in that instead of providing support for project-oriented jobs, clj provides similar support for ad-hoc jobs. It also makes starting Clojure much easier and provides a nice out-of-the-book experience for newbies.
  • Yay! Pune Clojure Workshop is finally happening. If you responded to my survey, you should've received an email by now. (via @ghoseb) -- Cool, training also starting in Asia. That makes it the third continent.
  • Leiningen 1.2.0-RC2 is out. Please test it with your Clojure projects (here, via @technomancy) -- A few fixes.
  • Clojure's n00b attraction problem (here, via @taoeffect) -- This article is from someone who is new to Clojure and reflects the pains that newbies have to go through to get a workable Clojure environment. The author argues that for Clojure to really take off, the out-of-the-box experience for newcomers needs to be improved a lot.  He also points out that there are too many different ways to achieve a working environment and that there seems to be no "officially sanctioned" way to do so, leaving those aspiring clojurers with the taks of making decisions that they are not ready for yet.
  • First #conjlabs is now completed, hope everybody took some valuable skills with them home. Looking forward to planning the next session! (via @LauJensen) -- If you are in Europe and want to learn Clojure from the European experts, they are planning a new session for sometime in September.

Today in the Intertweets (June 24th Ed)

  • Here's my blog on using Clojure and the plaza library to muck about with RDF data from my #semtech demo yesterday (here, via @puredanger) -- This is an overview of how to handle semantic data in Clojure with clj-plaza, a project created by Antonio Garrote. It contains a brief introduction to Clojure but that's because this blog post is from a presentation to a user group not knowledgeable in Clojure itself.
  • Clojure simultaneously rescues lisp and the JVM. (via @arthuredelstein) -- 'nuff said.

Today in the Intertweets (June 23rd Ed)

  • Interesting interview with Robert Martin @ rails conf 2010 (here, via @letronje) -- Robert Martin (a.k.a. Uncle Bob) gave a keynote talk at this year's Rails Conf, in which he suggested everyone to try Clojure. Here is the video of the keynote plus a short interview.
  • wonders if this means we're only a week from #clojure 1.2 (here, via @craigandera) -- July 1st target date?
Screen Shot, so you can see the actual date
  • destraction, n. removal of unnecessary abstraction so that data can be manipulated generically (via @stuarthalloway) -- Great! A new word... now, care to produce an example?
    • destraction example: servlet request, response, session, cookies, filters, et al => functions and maps #clojure #compojure (via @sturathalloway) -- Great! Thanks!
  • #clojure programming by contract lib from @fogus official site is live (here, via @wmacgyver)
  • #clojure #compojure web framework 0.4 released (here, via @wmacgyver)
  • New blog engine up and running: http://briancarper.net/ code here (via @BrianCarper) -- Brian rewrote his blog engine (called cow-blog) built on Clojure and Compojure. He also makes this new version of cow-blog's code available on github.
  • Jeff Rose totally gets it (here, via @stuarthalloway) -- Stuart points us at a rebuttal to this article rebutting Rich Hickey's reasons for not implementing actors in Clojure.

Today in the Intertweets (June 22nd Ed)

  • From the looks of it the first #Clojure meetup in Sweden had more participants than *all* #Lisp meetups in Sweden. Ever! ;-) (via @rplaca)
  • atticus now has a macro for defining #clojure defrecord instance factories for use in testing (here, via @hugoduncan) -- Atticus is a novel mocking framework from Hugo Duncan.
  • Finite State Machine Implementation in Clojure (here, via @planetclojure) -- Another very approachable article from Nurullah Akkaya.
  • "You're all sitting on the end of the food chain, eating gazelles and saying, 'who needs photosynthesis to be easy'?" (here, via @stilkov) -- This is in reference to the effort to have Clojure efficiently work with primitive types without the need to promoting them into objects. The goal, raw speed. In this post to the Clojure list, Rich Hickey why efficient use of primitive types in Clojure is so important, even if it comes with some inconveniences.
  • Ask HN: Who's using Clojure, and to do what? (here, via @HNTweets) -- Interesting read. Pay attention to the complaining about how difficult/slow it is to submit patches to Clojure and Clojure/contrib

Today in the Intertweets (June 21st Ed)

  • June London Clojure Dojo - 29 Jun - City of London, UK (here, via @ukdevevents)
  • calx, a opencl wrapper for #clojure (here, via @wmacgyver) -- "Calx is an idiomatic wrapper for OpenCL, which is an abstraction layer for parallel computation" . Work in progress.
  • #clojure "equal" branch updated again, now it auto box loop arg when recur mismatch happens, also gives warning (here, via @wmacgyver) -- Quoting Rich Hickey "I've added the speculative analysis required to detect when recur  arguments fail to match the type of primitive loop locals, and  recompile the loop with those loop args boxed. When *warn-on-reflection* is true it will issue a report that this is happening and why". At this point, if you don't know what this is about, start reading here, you only have 196 posts to go...
  • never before have i managed to refactor code using common #lisp. #clojure has it working(early but functional state!) (here, via @edgargoncalves) -- A few nice refactorings in there: thread, unthread, extract fn, and more!
  • Pallet, #clojure based cloud provisioning, configuration and administration, release 0.1 (here, via @hugoduncan) -- So there: release 0.1 is out; get it while it's fresh.
  • (take... An ongoing series of micro-interviews with Clojure hackers. First up: David Edgar Liebke. (here, via @fogus) -- Aptly titled as "(take 8 (david-edgar-liebke))", this is the first in a future series of short interviews with noted Clojurians/ers/istas. This first one is with the creator of Incanter.

This weekend in the Intertweets (June 20th Ed)

  • A Clojure mail lib (here, via @al3xandr3)
  • If you care about default num behavior in #clojure read this and give feedback. Pls read rich's post on overflow vs safety. (here, via @wmacgyver) -- So in order to make calling functions faster in Clojure, Rich proposed the possibility of having functions take primitive values as arguments. This presents a new kind of problems; should primitive numbers be promoted to BigInt/BigFloat? when? ... interesting read.
    • #clojure new primitive support revised (here, via @wmacgyver)
  • Denormalizing One million records with Clojure. (here, via @jneira) -- in 13 seconds.
  • Lazytest returns with new improved syntax! (here, via @stuartsierra)
  • Slides from my talk on metacircular evaluation at last night's CAPCLUG (here, via @fogus) --  Or how the magnificent 7 became the magnificent 3. Is there a video of this?
  • Actors in Clojure — Why Not? (here, via @dalnefre) -- This is a rebuttal to Rich's reasons not to implement Actors in Clojure (look for "Message Passing and Actors". The author provides detailed counterpoints to each of the arguments that Rich presents. Will we see actors in Clojure then?
  • Another design sketch for Clojure coverage tool (here, via @lshift) -- In a previous article, the author proposed a macro that would instrument functions by wrapping their definitions. In this article the author proposes similar functionality but without macros. Work in progress.
  • Executing A Command Line Program With Clojure (here, via @samnewman)

Today in the Intertweets (June 17th Ed)

  • Dear Clojure people: please read my Leiningen tutorial and tell me what you think! (here, via @technomancy) -- Leiningen 1.2 is getting close to being released, so head on to the tutorial page and provide feedback if need be.
  • Integrate #sproutcore with #clojure and #mongodb! (here, via @teropa) -- Sproutcore is an HTML5/AJAX application framework that lets you build complex and interactive web pages. The linked page is one of their tutorials, which happens to use Clojure/Compojure for its backend.
  • God created Clojure, everything else evolved from a stupid fish. (via @siah) -- Aren't we taking this a little too far? Plants didn't evolve from fish...
  • Enclojure plugin cannot be installed on NetBeans 6.9. sigh. (via @Kumappus) -- Don't get trigger happy with the update button on Netbeans if you're using it for Clojure, as it will break. Wait for the Enclojure update instead.
  • "Clojure already beats the pants off of any other JVM language. Now it's chasing them down the street, wacking them with a spoon" (via @nainostrebor) -- Oh, yes, so Uberconf is going on these days and Stu Halloway is offering a workshop on Clojure. I had over 350 tweets in my inbox today to read and most of them where quotes from Stu. Looks like he was blowing some minds!
  • Every time you mention Scala and Haskell in the same sentence, a Java developer thumbs through a Clojure book at Borders. (via @davetron5000) -- I don't mean to throw gasoline into a flamewar, but I thought this one was funny (if not accurate)
  • Enhanced primitive support being considered in Clojure (here, via @scode) -- So the 'num' branch now has a corresponding wiki page describing its goals: making clojure faster by allowing functions to receive primitives as parameters and be able to return them as return values, and thus avoiding a lot of boxing and unboxing of these primitives into the correspondent objects. This option and its implications is being heavily discussed in the mailing list as I write this. Join in if you want to shape the future of Clojure, or just to read and learn from the pros.
  • Azul opensources their managed runtime tech. This is important for Clojure and all multithreaded JVM software (here, via @disclojure) -- If your Clojure apps are running on the newer Xeon processors and on top of Linux, you might be able to see big improvements in performance when this is integrated in your JVM (OpenJDK for now). This will give us almost imperceptible garbage collection pauses, and ability to manage very large heap sizes without a sweat (much over 2GB). This is important since Clojure targets multi-processor machines and you don't want its scalability to be limited by the GC pauses and the amount of usable memory.
  • TDD in #clojure, the final part. (here, via @marick) (Parts 1 and 2) -- This part has some conclusions (develop top-down or bottom-up for TDD?) and proposes a new mocking framework as a result of this experiment.

Today in the Intertweets (June 16th Ed)

  • TDD in #clojure Part 2 (in which I recover from a stupid blunder) (here, via @marick) -- This is a second installment in a series of articles about TDD in Clojure (the first one is here). In this article the author continues his TDD process until he hits a roadblock with his plan. To summarize, in Clojure you might have to think about data representation earlier than you would probably do with OO languages, where this representation is hidden away (and thus less of an issue when creating mocks)
  • The beauty of letterpress and craft and old arts faithfully renewed (here, via @cemerick) -- Very tangentially related to clojure, but the author reflects on why some of us are looking back at Lisp and thinking... those guys got it right.

Today in the Intertweets (June 15th Ed)

  • Em Tempos de Copa do Mundo... (original and translated to English, via @danielfmt) -- Post in Portugese about how to code a system to manage World Cup-related sweepstakes in Clojure. Very useful these days!
  • Just threw out my first snapshot release of my Github API bindings for Clojure. \o/ (here, via @IORayne) -- Hmm... will we be able to one day manage Git from the RELP? 'cause that'd be awesome.
  • Online video of a (German) talk I did on Clojure (here, via @stilkov) - This is an intro to Clojure for German speakers.
  • Joy of Clojure chapter 8 MEAP update just hit your inbox (via @fogus) -- And from there it went straight to my iPad.
  • Clojure IO cookbook (here, via @grantmichaels) -- The many ways of doing I/O in Clojure.
  • #clojure: now way, way faster. (here, via @alandipert) -- So now there is another development branch "num" that allows some numerical code to work 10x faster.  The linked page shows such speedup in the fibonacci function by just putting some type hints in the function signature, leaving the body intact.

Today in the Intertweets (June 4th Ed)

  • ClojureCheck is back. QuickCheck for #clojure (here, via @kotarak) -- A specification-based testing library for Clojure that is somewhat based on Haskell's QuickCheck. It provides facilities to easily generate random test data in order use it to "prove" certain properties of the code under test. This article explains very well why such library is needed and how it works.
  • Asking for feedback on syntax for mocking #clojure protocols using Atticus (here, via @objcmdo) -- The author added support for protocols in the recently released mocking library Atticus and now wants to hear from you.
  • Aff to @uberconf to do a full day of #clojure tutorials! (slides here, labs here, via @stuarthalloway) -- Priceless slides.
  • My take on relational mapping in #Clojure (here, via @brentonashworth) -- "Carte is an attempt to bring simple relational mapping to Clojure. It is also an attempt to do relational mapping in a way that complements Clojure." This article explains how Carte works, from model definition to querying the model.

This weekend in the Intertweets (June 13th Ed)

  • Easy plugin extensibility for Clojure projects (here, via @technomancy) -- Similar to Emacs Lisp's defadvice, this library provides is a method to add new behavior to existing functions... in only 30 lines of code!
  • Rocking here at @thinkrelevance on #opensourcefriday banging on a swing clojure repl, see progress here (via @alandipert) -- Oooohh, a Swing REPL for Clojure!
    • behold, first cut of clojure swingrepl (here, via @alandipert) -- Source code is available.
    • Thanks to @alandipert, I finally have #Incanter executables. (here, via @liebke) -- Wow, that didn't take very long! Incanger now uses swingrepl and in addition, now you can download Incanter as a single executable file for Mac and Windows (with fancy application icons to boot!)
  • 1st results of the Clojure commercial "editor" survey (here, via @cemerick) -- The poll is still up if you'd like to have your say. It looks like there are plenty of developers willing to pay upwards of $250 for such IDE; more than 50% of them, but then the majority would also want the project to be open sourced...
  • OH: "vim + clojure should go together great. text is immutable in vim, unless explicitly marked mutable." (via @redinger)
  • #Terrastore #Clojure Client APIs unveiled (here, via @sbtourist) -- Terrastore is a data store based on Terracotta's clustering technology. This library allows access to terrastore from Clojure.
  • crazy idea of the week - Clojure GWT (here, via @nickmain_) -- Crazy indeed.  GWT (Google Web Toolkit) is a toolkit for creating complex Java+JavaScript/Ajax applications used and promoted by google. GWT relies heavily on the code being written in Java, as it uses a specialized Java compiler to generate the JavaScript code. Not trivial.
  • TDD in Clojure: a sketch (part 1. My workflow and notation. (here, via @marick) -- The author is trying to find what would be a realistic Test Driven Development workflow for working with Clojure. It is not immediate to translate your Imperative Language of Choice's TDD into a Functional Language of Choice TDD...
  • clj-ds: Clojure’s persistent data structures for Java (here, via @planet_lang) -- This is a port/fork of Clojure's persistent data structures so they can be used from Java, but also so that they still exist when Clojure moves the code for this data structures from being written in Java to being written in Clojure. The author promises to keep this Java version of the libs in sync with the future Clojure ones. Finally, this library does not depend on Clojure's runtime, so there is no bootstrap time to speak of.

Today in the Intertweets (June 9th Ed)

  • Interesting fact: people have talked with me more about clojure than about ruby or rails at #railsconf (via @redinger) -- more on this later...
  • clojure.rb (here, via @fogus) -- Michael Fogus highlights one of the interesting aspect of Chas Emerick's survey on the State of Clojure; the fact that there are a lot of Clojurians that are also (mainly) Rubyists, and wonders if the reason for that is that Ruby, with some of it's more lispy features, has become a gateway drug to Lisp for people coming from the imperative world.
    • Clojure, from a Ruby perspective (here, via @stantont) -- So on the same Rubyist-turned-Clojurian topic, and as a follow-up on @fogus' article above, Brian Carper writes about his experience in using Clojure after having been a long-time Rubyist. The article highlights where things are equivalent and where one of the languages has an edge over the other. Interesting read if you're coming from Ruby.
  • Using the App Engine Users API from Clojure (here, via @cdberg) -- Another post in this Compojure on GAE series. This one covers managing authentication and authorization via GAE's Users API. It also includes tips on how test locally.
  • Medusa 0.1 - a supervised thread-pool for Clojure futures (here, via @amitrathore) -- This is a thread pool for IO operations that might take a long time to complete and for which the operation requests might come in spikes. Clojure would, by default, use an unbounded thread pool for each operation if you're using Agents or Futures. Medusa provides an abstraction similar to Futures but with a bounded thread pool and also with an eviction policy for operations that are taking too long to complete.

Today in the Intertweets (June 8th Ed)

  • I think the reason clojure is so bad at displaying helpful stacktraces is that rhickey doesn't make mistakes. (via @arohner)
  • Results from the State of Clojure, Summary 2010 Survey (here, via @cemerick) -- So the results are in and the data is interesting. Lots of web development, for one. Lots of math apps too... There seems to be some issues with the tool chain; Emacs vs. IDE and maven vs. leiningen, for example, but nothing that we didn't know already. Also, Clojure is bringing a lot of new developers to Functional Programming, mainly from Java, and most of them would not go back to Java if Clojure disappeared; they'd rather go with Scala, Common Lisp, Haskell or Scheme. The whole summary of the poll is a very interesting read and a testament to the diversity in the Clojure community.
    • My thoughts on Clojure and Emacs (here, via @briancarper) -- So one of the outcomes of said survey is that 70% of Clojure devs are using Emacs. What these results do not tell us is whether that high usage is because Clojure developers love Emacs or because Emacs is the development environment currently better adapted to Clojure. "Emacs is not for everyone", as the title of this post says. The author exposes why he thinks a better solution needs to be built.
    • Petition / Market Research: For the development of a commercially-supported, polished Clojure development environment (here, via @cemerick) -- ... and speaking of which, Chas Emerick has put together an online petition asking for a polished IDE for Clojure (that is not Emacs).  Please go ahead and fill it out to see where everyone stands.
  • Some suggested Clojure agent thread pool issues and improvements (here, via @puredanger) -- Alex Miller knows one thing or two about working with threads and now he proposes a few improvements to the way Clojure deals with threads to make the developer's life simpler. For example, naming the threads so you can identify them in a thread dump. Lots of wisdom in his proposals.
  • Just pushed some ant and #clojure samples to #cloudhackers #cloud demo site (here, via @jclouds) -- jclouds lets you manage your cloud in a high-level and portable manner, mainly from Java. But recently they have added Clojure support, so now you can do great stuff on the cloud from the REPL. This post is about some new examples of operations on the Cloud with Clojure.

Today in the Intertweets (June 7th Ed)

  • spreading the word - International Lisp Conference 2010 Call for Papers (here, via @edgargoncalves)
  • Simple Clojure Job Distribution Service (here, via @ajlopez) -- Send off purely functional (and long) jobs to be executed to other machines)
  • emacs swank-clojure utilities is now swank-clojure-extra (here, via @vu3rdd) -- So 'swank-clojure-project' is finally gone from swank-clojure? I guess so.
  • clojure.core/lazy-seq makes sense (here, via @neotyk) -- An introduction to lazy-seq's
  • Functional Data Structures in a Persistent Setting - Part 1 (here, via @ajlopez) -- This article by Debasish Ghosh covers two different but related areas. One is about which algorithms to chose for a particular data structure, given that different algorithms have different complexity patterns; do you want a predictable but slow algorithm or a fast but unpredictable one. Sometimes you just want the best overall complexity (amortized).  The second part covers the complexity guarantees of persistent data structures and how it is sometimes hard to measure it (with an example).
  • #clojure meetup at #railsconf was about 60 people! (via @dysinger)

This weekend in the Intertweets (June 6th Ed)

(This post also covers last Thursday since I slacked off that day... I blame it on the jet-lag and the Bay Area Clojure meetup)
  • Good overview of why the new defprotocol, etc. in #clojure is not the same as ruby monkey patching (here, via @bmabey) -- As the tweet says, the article from Dave Fayram (@kirindave) introduces types and protocols and explains some of their uses and more interestingly, the difference of Clojure's approach to extensibility and previous approaches by other languages (Ruby).
    • more on #clojure protocols vs monkey patching, and good practice (here, via @wmacgyver) -- Email thread on the Clojure list in regards to the above article and some of the possible issues with protocols
    • if a protocol comes with #Clojure itself, avoid extending it to types you don't own. -Rich Hickey (via @wmacgyver) -- from the clojure list just referenced. It summarizes the thread.
  • TDD in Clojure. (here, via @unclebobmartin) -- Bob Martin provides a summary of the differences between practicing Test Driven Development with imperative languages vs. functional languages (in this case, Clojure). This article is most relevant from folks that are coming to Clojure from languages like Java or Ruby and that were already practicing TDD.
  • Implementation of linear-time Fibonacci's in Clojure fits 3 times into a tweet. Explanation would take some 50 tweets. Quite a density. (via @trzmiel)
  • June 8th Meeting: Clojure: Come join us for an evening dedicated to Clojure (here, via @boulderjug) -- Boulder, CO. June 8th at 6pm. Intro to Clojure and Advanced Clojure, all in one day, by Daniel Glauser.
  • Primitive types support for fns in #Clojure (here, via @cgrand) -- Cristophe proposes a hack to get  such primitive type support for funtions. Then, Rich Hickey reviews it and comments on it... and then in quickly gets over my head :(
  • BestInClass.dk is now Open Sourced (here, via @LauJensen) -- Lau recently ditched Wordpress as his blogging tool and wrote his all-Clojure blogging system. Now he open-sourced it for all of us to enjoy and learn. Thanks! (can't wait to ditch Wordpress either)
  • a great post on benchmarking of Bagwell's Hash Array Mapped Trie in Clojure and Haskell (here, via @debasisgh) -- Interesting read about the quest for very fast hash maps in the Functional Programming world, and (yet again) about the perils of micro-benchmarks.

Today in the Intertweets (June 2nd Ed)

  • A trivial Stack implementation in Clojure using Protocols (here, via @ghoseb) -- Short and sweet, thanks to the new features in Clojure 1.2
  • Do you use Clojure, even a little? Then take the "State of Clojure, Summer 2010" survey! (here, via @cemerick) -- Do as he says... I hope we'll all get to see the results :)
  • well tiobe is very relative but clojure is pos 16, higher than groovy, scala, jruby etc.. (here, via @jneira) -- Unfortunately Clojure is not in the list individually, but grouped together with other lisps, so it is hard to say where Clojure would be on its own. But I know for sure it'd be moving up!
  • Test data in #clojure with #faker. Generate fake names, text, addresses, emails, phone nums, etc. (here, via @paraseba) -- This is a port of Ruby's Faker library. Its usage is self-explanatory [clj](ns test (:use faker.name faker.lorem)) (def n (take 10 (names))) (def p (take 10 (paragraphs))) [/clj]
  • Did you know how to comment code in #clojure ? (here, via @kotarak) -- I personally thought I did. It turns out I was wrong. This is another excellent post in the series "Did you know...?" from @kotarak.
  • CUFP #clojure tutorial outline complete. Come solve some real world problems with me using #cloujure, #incanter, and more! (here, via @abedra) -- This is for the Commercial Users of Functional Programming conference to take place in on October 1st-2nd in Baltimore.
  • Come join us at the next #ChicagoClojure 6/16. Topic, what's new in 1.2 presented by @polgardy (here, via @jhirn) -- 6pm.
  • Seattle Clojure folk: Seajure meeting tomorrow at 7pm. Be prepared. (here, via @technomancy)

Today in the Intertweets (June 1st Ed)

  • Arduino programming framework with #Clojure by @hayamiz (here, via @kenji_rikitake) -- I always find these kind of projects to be very fun. From the project site: "KondoLisp is a framework for dynamic prototyping on Arduino. It enables you to run programs on Arduino WITHOUT frastrating compiling and uploading processes"
  • #clojure protocol draws partial inspiration from #haskell type class (here, via @wmacgyver) -- Look for "dynamic type class". Now you know.
  • Accessing the App Engine Datastore (here, via @ghoseb) -- Another article about writing Clojure apps for Google App Engine from the compojureongae blog, this time about writing and reading on GAE's datastore.
  • Path Finding Using A-Star in Clojure (here, via @ghoseb) -- A* is a well known algorithm to find the cheapest path from point A to point B. Used commonly in AI systems. This article describes a Clojure implementation of this algorithm.
  • Will be at the National Capital Area Clojure Users Group's June 17 meetup giving a talk entitled "The Magnificent Seven" (here, via @fogus) -- That's at 6.15pm and the talk is about "The Magnificent 7 - How many Clojure forms does it take to create a fully-functional and powerful Lisp variant? Would you believe 7?"
  • Grupo de google para usuarios de Clojure en Argentina (here, via @paraseba) -- A Google Group for Argentinian Clojurers is born.

Today in the Intertweets (May 31st Ed)

  • Clojure ANTLR Grammar (here, via @andrewvc) -- Interested in parsing Clojure code? Here Clojure's grammar for ANTLR (from the eclipse project)
  • my google chrome extension for try-clojure.org (here, via @ursaskimp97) -- We covered try-clojure.org a few weeks ago. Now here comes this plugin for Google Chrome that lets you try clojure from your browser without having to navigate to try-clojure.org. It also makes it easy to copy some text from a website and quickly evaluate it in try-clojure.org.
  • Yet another Clojure + Compojure + Google App Engine post (here, via @edgardgocalves) -- Pretty detailed post that provides an updated toolset for creating webapps in clojure for Google App Engine.
  • Clojure Protocols & Datatypes — A sneak peek (here, via @ghoseb) -- Protocols and Datatypes are new features in Clojure 1.2 (not out yet). If you want to know what these features are about, this article is a good introduction.
  • My presentation on asynchronous concurrency in #Clojure at #capclug in Reston last week (here, via @goodmike)
  • Grokking Functional Data Structures, a really good article with examples in Clojure (here, via @jneira) -- An introduction to persistent functional data structures, based on Okasaki's book.
  • The 3rd Columbus #clojure user group meeting is scheduled to be on June 2nd, 2010 (this wednesday). See inclojure.com for more details (via @inclojure)

This weekend in the Intertweets (May 30th Ed)

  • How do Clojure books compare? (here, via @Borkdude) -- A short writeup about the differences between the four existing clojure books, by @ghoseb
  • Practical #Clojure by me & Luke Vanderhart is officially out (here, via @stuartsierra) -- Time to get it. It covers features in 1.2
  • I just published a new #clojure library for generating URLs #resource-url (here, via @paraseba) -- An easy way to build your URLs without having to resort to string mangling.
  • A couple Java threading tricks applied in #clojure (here, via @puredanger) -- How to keep threads alive once the main thread is dead, and get a thread dump of all the threads in the JVM from the command line. Very useful!

Today in the Intertweets (May 27th Ed)

  • Did you know about #clojure bound-fn? (here, via @kotarak) -- Very interesting post about how to make per-thread bindings work when using something like 'pmap'.
  • I'll give an introductory talk on Clojure on June 9th at the Epicenter conference in Dublin, Ireland (here, via @kevin_noonan) -- Epicenter is an Irish software show. Kevin's talk is at 11am on June 9th.
  • Android SDK のインストールから Clojure での Hello World! 実行まで (here, via @inotom) -- How to write your first app for Android written in Clojure (Google translated version here)
  • In case you missed it, here's my #gluecon deck on #java and #clojure #cloud provisioning (here, via @jclouds) -- Provision your applications in the cloud (any cloud, for that matter) using Clojure via jclouds

Today in the Intertweets (May 26th Ed)

  • A bug-fixing genetic program written in Clojure that operates directly on ASM (awesome!) (here, via @jbrownlee) -- You need the program executable, a set of successful positive tests, and a failing test, and this program written in Clojure will fix your executable.
  • My yet-another-Clojure-SQL-lib, oyako (here, via @BrianCarper)
  • Announcing Trammel (contracts programming for Clojure) (here, via @fogus) -- Eiffel-like contracts for Clojure. First you define the contracts as a higher-order function, and then you apply the contract to existing functions via a partial application. Work in progress.
  • Just Published: Practical Clojure (here, via @ApressBooks) -- This book is by Luke Van der Hart and it is an introduction to Clojure. 232 pages.
  • Early bird rate for the European #Clojure training session is closing in 5 days, hurry up! (here, via @cgrand) -- Hurry up!
  • Please fill out this short survey and let us know if you'd be interested in a Clojure course in Pune (here, via @ghoseb) -- Another Clojure training possibility is opening up, this time in Pune, India. Fill out the survey if you think you'd want to go.

Today in the Intertweets (May 25th Ed)

Big news today. Rich Hickey announced a Clojure/core (clojure.com), a joint venture between himself and Relevance Ink (Stuart Halloway et al) as a practice providing mentorship, training and development services for Clojure actual or would-be users. It's members will still spend 20% of their time contributing to Clojure. Hickey claims this is an important milestone to foster Clojure adoption and that Clojure.org and Hickey himself will remain independent entities from Clojure/core. It is important for the long term future of Clojure that its main contributors remain independently funded. There are now many folks that are starting to generate revenue out of Clojure and this is a sign that Clojure usage is increasing where it counts: mission-critical applications. Clojure/core will allow Clojure to remain independent. Other things happened today in the Intertweets:
  • David Miller talks to Carl and Richard about Clojure-CLR, a .NET implementation of the Clojure language (here, via @jrguay)
  • Compojure Sessions with Sandbar (here, via @ghoseb) -- This the fifth article in a series about writing web apps with Clojure and describes the use of sandbar with Compojure to manage stateful sessions

Today in the Intertweets (May 24th Ed)

  • Extending Clojure's STM with external transactions (here, via @jneira) -- This is a very interesting proposal from Dave Griffith. The idea is to allow Clojure STM manage external transactions in a way that either both synchronized changes in shared memory and external transactions all work, or they all are rolled back. This would help greatly in writing highly-reliable systems that rely, for example, in committing changes both in memory and on file in order to guarantee a safe restore in case of  a crash; and for this to work, the each change must be done in a transaction.
  • #clojure pattern matching lib Matchure is now clojure.contrib.match (here, via @wmacgyver) -- If you are using Matchure already in your projects, know that there might be some backwards-incompatible changes coming before becoming part of clojure.contrib.

This weekend in the Intertweets (May 23rd Ed)

  • Clojure intro slides from my talk at #rheinjug (here, via @stilkov)
  • your tests will thank me (here, via @stuarthalloway) -- Stu fixed a bug in leiningen that caused the whole application to be recompiled between tests. Now your tests should run much faster.
  • Deploying #clojure #compojure 0.4 to #gae (here, via @wmacgyver) -- Here is a blog devoted to showing how to build Clojure apps for Google App Engine. This particular post is about deploying to GAE
  • Interested in a free eBook "Clojure for Beginners"? Email satishtalim [at] gmail.com Will send starting 24 May (via @IndianGuru)
  • Mi trabajo con triple spaces y clojure empieza a avanzar (here, via @antoniogarrote) -- "A triple space is a RDF graph stored in a shared memory location, that can be accessed concurrently by any number of agents manipulating the triples in the graph. Besides being a mean to store and manipulate semantic meta data, triple spaces also offer coordination mechanisms among agents thanks to a small set of operations over the triple space with well defined semantics". Find the source code here
  • About thinking functionally (here, via @gstamp) -- This is an interesting post about how in order of leverage functional languages one needs to change the way he thinks about the problems.
  • First draft of Joy of Clojure in the books. 3rd review upcomming. New Meap chapters in the pipeline. Life is good. (via @fogus)
  • Lazy-spy: Clojure logging/spy for lazy sequences (here, via @plegato) -- logging/spy is a nice utility in clojure.contrib that allows you to insert debug logs that print the function parameters and the outcome. But it doesn't work that well when using lazy sequences. This blog-post proposes an alternative that works well with lazy sequences.

Today in the Intertweets (May 20th Ed)

  • Security implications of Clojure keyword creation from user data? (here, via @stacktrilogy) -- Good question... and the answers are somewhat surprising (but obvious after you know them)
  • Support for Swank Clojure 1.2 is in the works (via @MCLIDE) -- McLIDE is an open source IDE for Lisp that is now beefing up its support for Clojure.
  • Slides for @chrishouser's #Clojure talk last night  (here, via @fogus) -- This talk was about concurrency. You'll need OpenOffice to open the file.
  • Swank clojure setup for hardcore Emacs users (no ELPA) (here, via @jorgetavares) -- Short and sweet.

Today in the Intertweets (May 19th Ed)

  • Want to know something about clojure? (here, via @ckuetbach) -- Stefan Tilkov will be talking about Clojure at the Düsseldorf Java User Group tomorrow Thursday May 20th at 6.30pm. That's in Germany by the way.
  • #Clojure 1.2 protocol gotcha: multi-arity functions work with deftype, don't with extend-protocol (here, via @thnetos) -- clojure 'records' are closer to Java classes than clojure 'types', and they are faster too. But this speed bump comes at a price: flexibility.

Today in the Intertweets (May 18th Ed)

You might have noticed I haven't posted in a few days. It turns out that in some hotels in Spain, when they offer internet, they mean you can use the phone to dial-up your ISP... and for that you need a modem. A modem. In 2010. Oh well. Here are the relevant tweets of the day:
  • Clojure in the field (here, via @spariev) -- The presentation that @stuarthalloway gave at the last QCon is now online at infoq.com (video and slides). It's an intro to Clojure with some real-life experiences.
  • Functional HTML Templating with Clojure (here, via @n8han) -- David Nolen (a.k.a. @swannodette) will be talking about @cgrand's Enlive funtional HTML templating framework for Clojure at the NYC Clojure Users Group tomorrow May 19th at 7pm.
  • A different take on mocking in #clojure (here, via @hugoduncan) -- With this article Hugo Duncan introduces his mocking framework atticus which in some ways is more idiomatic that the existing mocking frameworks for clojure. Work in progress.

Today in the Intertweets (May 13th Ed)

  • soup to nuts couchdb by @cemerick (here, via @jclouds) -- From bare metal to ready-for-production app deployment in 5 minutes or 5 paragraphs using Pallet. This article shows how to use Pallet in a real world scenario.

Today in the Intertweets (May 13th Ed)

  • Awesome! #gae bindings released for clojure (here, via @arj03) -- So if you want to write apps for Google App Engine in clojure and you want to use Googles data store, you might want to take a look at this library. It has two parts: a data structure definition language (although Google's stores are schema-less, you still want to maintain a schema at the application level) and a query language. You can find the code here.
  • Don't forget the Chicago Clojure Group welcomes Chris Houser May 19 (here, via @DocOnDev) -- so that, don't forget to go!
  • You've heard about it, now read what the founder of #pallet says about #cloud provisioning in #clojure (here, via @jclouds) -- Pallet lets you create and run Un*x scripts in Clojure. Very useful if you're going to be deploying applications in the cloud. This article is from it's author and it shows what it can do.

Today in the Intertweets (May 10th Ed)

First some errata from the last posts: And now the tweets of last weekend and today:
  • Metaheuristics library for Clojure (here, via @dermatthias) -- Work in progress, but for now it includes A particle swarm optimization, an evolution strategies and an invasive weed optimization algorithm. The code is on github.
  • Slides from @nathanmarz's Cascalog presentation at the Clojure meetup (here, via @michaelmontano) -- Cascalog lets you query a Hadoop cluster using a Datalog-alike query language built on Clojure.
  • Book Promotion: The Joy of Clojure with author Michael Fogus (here, via @IndianGuru) -- This book promotion runs between May 25th and May 27th and will have author Michael Fogus online to answer your questions. You need to register (for free) here using code BPCE101 and you can post your questions immediately.
  • You can now order a print copy of my Semantic Web book. This is the Java, Clojure, Scala edition (here, via @mark_I_watson) -- Although the book can be downloaded for free, consider purchasing it on lulu.com to fund the author's new writings.
  • Couchfuse, mount #couchdb as file system. Done in #clojure (here, via @wmacgyver) -- This would allow you to mount a Couch DB store as a filesystem in your Mac.
  • Clojure and Cassandra with clj-cassandra (here, via @allwebdev) -- Relatively short article on how to access a Cassandra datastore from Clojure via clj-cassandra.
  • Just published clj-pusher - http://www.pusherapp.com client for #Clojure (here, via @bartoszblimke) -- Pusherapp is a service in beta that allows you to create real-time collaboration applications the easy way with HTML 5's websockets.
  • http://tryclj.licenser.net/ my first web development project ever (in any language). Online #clojure repl (here, via @IORayne) -- This is a web-based REPL in which you can test-drive clojure. It is implemented using clj-sandbox, and you can find the source code here.
  • Laziness in Clojure - Some Thoughts (here, via @debasishg) -- This article is about how Clojure's laziness makes function composition easier. It's a good article about something that you don't think about when you first learn Clojure.
  • Episode 19 - Ratios (considered harmful) (here, via @fulldisclojure) -- This week's episode is about the usage of Ratios in Clojure. Ratios let you operate on Rational numbers in Clojure without losing precision. This feature is neat but it comes with some caveats and this screen-cast explores some of them.
  • Destructuring, records, protocols and named arguments (here, via @cgrand) -- This post from Christophe Grand walk us through the process of figuring out some performance oddity in the way destructuring works with the new records. Depending how you do the destructuring, it can be an order of magnitude slower. It turns out that the new protocols come to the rescue and make things fast again.

Short hiatus

I somehow decided that it would be a good idea to travel internationally with my little family. Not a good idea. Traveling is awful these days... In any case, thanks to the Icelandic volcano ashes flowing around the atmosphere our flight got quite complicated. So no intertweets this weekend; will resume tomorrow. Food is good here where I am though :)

Today in the Intertweets (May 6th Ed)

  • An In-Depth Look at Clojure Collections (here, from @infoq) -- An article at InfoQ from the authors of "The Joy of Clojure" about the collections used in clojure, their immutability and their use. This is a very in depth article that will not only tell you about what collections exist in Clojure, but also how to use them and when. And as an added bonus the book publisher and the authors add a 35% discount coupon for the book (infoq35) valid until June 16. This article is an excerpt of their book.
  • just updated #github with #clojure examples for using the #cloud (here, via @jclouds) -- Wondering how to use jclouds from the Clojure REPL? Here are some examples
  • The Joy of Clojure's @chrishouser will be speaking at the Chicago Clojure Meetup May 19 at 5pm (here, via @fogus)
  • Get clojure in action for 40% off (use code m540 at checkout), if you buy more than $30 worth from this list (here, via @amitrathore)
  • Will be at the May 20th meetup of the National Capital Area Clojure Users Group (here, via @craigandera)

Today in the Intertweets (May 5th Ed)

  • Clojure Notes (intro tutorial) (here, via @jneira) -- These are the notes used in the Clojure 101 course at RubyLearning.org
  • Circuit Breaker: a small but real-life example of #Clojure protocols and datatype (here, via @hircus) -- A circuit breaker is a system that is placed where a system integrates with a second system. When the second system becomes unstable it creates threading issues on the calling system. The circuit breaker prevents these issues by 'shortcuting' the calls on the first system once it has detected that the second system is not responding. This is an implementation of such system in Clojure 1.2 using protocols and datatypes. This article is a good one if you want to familiarize yourself with some of the new features of the upcoming 1.2 version of Clojure.
  • Last Var Wins in #Clojure (here, via @fogus) -- In short, if you define the same variable in two different libraries, this will cause an error in code that imports them both. This can be fixed by tweaking the imports to exclude one version or the other. But this also make life very miserable for all library maintainers, since they might move a function from one library (e.g. clojure-contrib) to another (clojure.core) and now most of the code that uses both will break. A solution is proposed to make this re-definition of a function to be a "warning" instead of a right-out "error". Chime in with your opinion.
  • Latest jclouds release supports #clojure and advanced #cloud provisioning (here, via @jclouds) -- jclouds is a framework that abstracts all operations on cloud infrastructures. It supports many (all?) different cloud systems. Now jclouds can be used in the REPL via clojure. Work in progress (beta 5)
  • Communicating with a GUI from #clojure (here, via @kotarak) -- How to separate the User Interface from the Business Logic in clojure.

Today in the Intertweets (May 4th Ed)

  • Weigh in on the future of M-x swank-clojure-project (here, via @technomancy) -- This only affects you if you are using Emacs and Clojure via Slime/Swank. If you are using swank-clojure-project to fire off your Clojure REPL, know that maintaining that piece of code is cumbersome and slows down the addition of new features to Swank. Since there are alternative ways to running Swank (namely, from maven or from Leningen), there is talk about removing swank-clojure-project altogether. Chime in with if you want swank-clojure-project to stay.
  • Shell Scripting in Clojure with Pallet (here, via @jneira) -- With @hugoduncan's Pallet you can write shell scripts in Clojure that will result in actual shell scripts, with all the Clojure functional approach. Pallet does the heavy lifting for you!
    • new #cloud provisioning tool pallet is the most watched #clojure project on #github today! congrats @hugoduncan (here, via @jclouds)
  • Clojure data structures will properly support Java serialization in v1.2 (here, via @cemerick)
  • *Another* Pragmatic Studio Clojure session in Reston, VA in September. (here, via @fogus) -- May 12-14 is sold out. Next one is September 13-15
  • #clojure 1.2 release plan (here, via @wmacgyver) -- In short, if all goes well, it could be 4 to 6 weeks away.
  • "Practical #Clojure" by me & Luke VanderHart in final edits! 12 chaps available in alpha (here, via @stuartsierra) -- The race to publish the next Clojure book is tight!
  • Your Build, Lava Lamps and Clojure (here, via @weakreference) -- Clojure code to poll the RSS feeds of your Continuous Integration server and controls the Lava Lamp depending on wether the builds are successful or not. Sounds like a fun project!

Today in the Intertweets (May 3rd Ed)

  • Short and sweet piece on GUIs in #clojure (here, via @RoyDealSimon) -- This article is about the possibility of creating a wrapper around Java's Swing UI framework to make coding Swing apps with Clojure a much more pleasant task.
  • My #Clojure editor (here, via @hsarvell) -- If you don't like any of the editors that have some support for Clojure, you might as well get your favorite code editor to support Clojure, just like the author of this blog post did with Pico Editor.
  • Announcing the second bay area pro clojure bootcamp: introduction to #clojure, June 5th, six spots left (here, via @amitrathore) -- Last Saturday's bootcamp was a success, so they're doing another one!
  • Episode 18 is up - #clojure performance revisited (here, via @fulldisclojure) -- Another episode of this series of screencast, this one is about comparing different implementations of the same function in terms of their relative speed.
  • Lambda Lounge this week: Clojure and logic programming! (here, via @puredanger) --  Logic Programming for the Social Web  is the name of the talk, by our monad expert Jim Duey. That's on May 6th at 6pm in St. Louis, MO

This weekend in the Intertweets (May 2nd Ed)

  • Conj Labs is now open for registrations (here, via @LauJensen) -- Conj Labs is a joint venture between @laujensen and @cgrand to provide Clojure training in Europe. Next session is June 23-25 in Brussels.
  • rhickey on #clojure IRC: "I just want a simple [build] story for people who don't want to waste their lives on maven." Amen. (via @briancarper) -- That's what he said.
  • ClojureW - One click Clojure set up, now supports Cygwin. It is now truly cross platform environment (via @ktuman)
  • Created Scala port of Clojure ants demo with #akka and #spde (here, via @pvlugter) -- More pollination from Clojure to Scala.
  • The more I look at clojure the more seriously I take it. It may be that scala and F# took the wrong approach. (via @unclebobmartin) -- Robert Martin (uncle Bob) is no small fish. He is a well known author and founder of Object Mentor, soon to be renamed Function Mentor I guess...
  • Simple way of obtaining a #clojure repl on Ubuntu: $ sudo apt-get install clojure $ clojure user=> (+ 1 2 3) => 6 (via @cleotd) -- Follow @cleotd on twitter and you'll get at least one of these useful tidbits every day! Recommended.
  • Clojure brought Lisp back to life into the mainstream programming and that's quite an achievement! (via @dima767)
  • new blog post on setting up slime and swank for clojure by hand - no ELPA magic (here, via @vu3rdd) -- If you are using Emacs+Slime+swank this might be of your interest. If for some reason you don't like using ELPA (emacs' package management system) then getting swank to work becomes pretty hard. This post provides some tips for getting it to work without ELPA.
  • Did you know about #clojure ::keywords? (here, via @kotarak) -- Another article in the "did you know" series from @kotarak, this time about the lesser known feature of keywords in clojure; namespace-qualified keywords. Useful for when two libraries use the same keyword.
  • word is @chrishouser, of "The Joy of Clojure" fame, will present at the May 19 Chicago Clojure Meetup. sweet! (via @trptcolin) -- Sweet indeed, if you live in Chicago, that is :(
  • Thoughtworks technology radar says that clojure is the best of the functional languages out there at the moment. (here, via @laurioherd) -- And they have a cool graphic to prove it!

Today in the Intertweets (April 29th Ed)

  • Clojure,common lisp, lisp, java, python, ruby, erlang, haskell, javascript Job Trends (here, via @nipra) -- In relative terms, Clojure jobs are growing very fast... now switch to absolute... not so hot!
  • Check your inbox. @chrishouser's Joy of Clojure MEAP has just been updated to include chapters 6 (functional programming) and 7 (macros) (via @fogus) -- Yay!
  • "Rich abstracts, so you don't have to." (via @vu3rdd)
  • eyewrap for observing execution of Clojure code (here, via @fatrow) -- Eyewrap allows you to see step by step how Clojure code gets executed. Very interesting if you're learning clojure or just want to know what is going on with your code. Work in progress...
  • Alpha version of leiningen-init-script, a plugin for generating init.d scripts is up. Suggestions welcome (here, via @napple) -- So you can install your clojure code as a service in your *nix box, all just one script away.

Today in the Intertweets (April 28th Ed)

  • Video-materials about Clojure (here, via @alexott_en) -- Yesterday I wrote about the Russian version of this page with links to all sort of clojure-related videos. Alex Ott, as promised, posted an English version of this page.
  • in cambridge and interested in #clojure or lisp? #camclj at the kingston arms 8pm tonight (here, via @fmu) --  That's in Cambridge, UK. This might come a little late though.
  • Performance characteristics of functions operating on different Clojure data structures (here, via @stilkov) -- A very helpful summary of the how each of Clojure's data structures perform in relation to the number of elements contained in them and the operation performed.
  • Number of monads in Clojure 1.0: Zero. In 1.1: Zero. In 1.2: Zero. Monads are not idiomatic (via @stuarthalloway)
  • ProtoTurtle gives a gentle introduction to Protocols in Clojure (here, via @LauJensen) -- A fun exercise that will help you solidify your knowledge of the new Protocols in Clojure; a knowledge, no doubt, acquired after watching this recent and nice video from @stuarthalloway)
  • In two weeks time next #amsterdam #clojure meetup, that is Wed 12th of May. Proudly hosted by #sourcesense (here, via @neotyk)
  • #clojure 1.2 gets some new seq fns! (here, via @stuarthalloway) -- group-by, flatten, partition-by, rand-elt, reductions, shuffle, frequencies and includes? have moved from clojure-contrib to clojure.core. Some saw their name also changed in this transition: rand-elt -> rand-nth and includes? -> seq-contains. This was to better reflect their applicability an their performance characteristics. Read all the rationale in the linked post. (Also, check out this post for more info about what might be broken if you upgrade to the latest 1.2 build)
  • #clojure philosophy: right data structure for the job via semantics. (here, via @wmacgyver) -- Interesting pointer to a mailing list entry by Rich Hickey summarizing the reason why not all data structure operations exists for all data structures. A hint? Performance; why would you want to perform an operation on a data structure that is very slow for such operation? Data structures matter. Consider their performance characteristics when choosing them.

Today in the Intertweets (April 27th Ed)

  • Clojure Houston is having its first meetup! Thurs, Apr 29, 7pm (here, via @jeremey)
  • видео-материалы про #Clojure: Собрал ссылки на видео-материалы о кложуре на отдельной… (here, via @alexott) -- A compendium video materials about Clojure (here is the English version)
  • Enough is enough (here, via @technomancy) -- So if you are using leiningen for your projects, you won't be able to name them anymore with something ending in "jure" ... er, like "disclojure"
  • Cascalog just got even more awesome (here, via @nathanmarz) -- Outer joins, combiners and "Parallel Aggregators", sorting, duplicate elimination, etc... lots of goodies. Cascalog allows you to query Hadoop in Clojure with a Datalog-like language.
  • Design sketches for Clojure coverage tool (here, via @lshift) -- Insightful article that goes over what it would take to instrument Clojure code (in clojure, of course)
  • New chapters available in the MEAP (early access) of "Clojure in Action" (here, via @mikemiller) -- The new chapters are 5) Clojure and Java Interop, 6) State and the concurrent world and 7) Evolving Clojure through macros.

Today in the Intertweets (April 26th Ed)

  • My new toy project: CSS generation from clojure DSL (here, via @paraseba) -- Functional CSS? You have nested rules and mixins...
  • Attempted easy alternative to #Clojure use/require/refer (here, via @stuartsierra) -- Yet another attempt at simplifying the namespace management in Clojure. The proposed notation is very compact and powerful.
  • my half-hour tutorial on #clojure protocols is up (here, via @stuarthalloway) --The author of Programming Clojure, Stuart Halloway, presents this screen cast that covers a lot of ground with the upcoming Clojure 1.2 features: protocols. A must.
  • Repeat after me: #Clojure contrib is not the standard library (via @stuartsierra) -- Clojure-contrib is not the standard library, Clojure-contrib is not the standard library...
  • future pipelining helper macro in #clojure (here, via @alandipert) -- Like a let, but wrapping everything in futures.
  • Awesome! Robocup with #clojure (here, via @prism335) -- Robocup is an international robotics competition that involves robots playing soccer. One of the ways of participating is by using a robot simulator running in a soccer server. This blog post from nakkaya.com show how to connect to the server and move the robot's joints.
  • Clojure's Approach to Polymorphism: Method Dispatch (here, via @manningbooks) -- This is an article about Clojure's flexible method dispatch mechanism from Amit Rathore, the author of "Clojure in Action"

This weekend in the Intertweets (April 25th Ed)

  • IntelliJ La Clojure plugin now compatible with IDEA 9.0.2 (here, via @pholdings)
  • Update: Clojure & Google App Engine Setup (here, via @smartrevolution) -- this is an update to an article about developing Clojure applications for Google App Engine (GAE) published some time ago. This is from the same group that developed TheDeadline, which is now live in Beta in GAE. This update adds some features to their Clojure-GAE setup.
  • And the final java interop puzzle is complete. #clojure will have annotation support (here, via @wmacgyver) -- This is the missing piece for full integration with Java frameworks that are so prone to requiring the use annotations just to use them.
    • annotation in #clojure usage example (here, via @wmacgyver)
    • Use the new annotation support in #clojure to create EJBs. For a brief tutoral and GitHub link (here, via @deepbluelambda) -- A good example of a great tool (Clojure support for annotations) used for evil (EJB) ;)
  • Did you know about #clojure 's -> and ->>? (here, via @kotarak) -- Another installment of the "Did you know?" series. This time covering the call chaining macros -> and  ->> ... ever wondered about those arrows?
  • finished compojure-gae a concise web framework for #Clojure and #Google #appengine (here, via @choas) -- This is a fork of a fork of a fork of the original Compojure.
  • My IRC library is the first pure-Clojure IRC lib that I know of. Awesome. (here, via @IORayne) -- Awesome indeed!
  • Android 2.2 will have JIT compiler, good news for #clojure (here, via @stuartsierra) -- 3x times faster and less battery drain. Sounds good to me!
  • Announcing matchure, a really nice pattern matching library for #clojure (here, via @dcolthorp)

Today in the Intertweets (April 22nd Ed)

  • Awesome example of thought leadership: Clojure - datatypes (here, via @kyleburton) -- So Rich Hickey finally got around to write about the new datatype features in Clojure 1.2: deftype, defrecord and reify. These features are here to liberate Clojure itself from Java the language and become more independent. They are also faster than gen-class and proxy, but they are not exactly equivalent. Must read.
  • is trying to decide whether or not to do a screencast to explain why macros are awesome to C# and Java developers (via @craigandera) -- Craig recently published a 6 part screen cast on Concurrency in Clojure. Craig, do it! Will also help in some of those pesky Scala vs. Clojure discussions of late...
  • If the main difference between Scala and Clojure is syntax then the main difference between an F-22 Raptor and Boeing 777 is paint color (via @jamesiry)
  • huh 40% off on Joy of Clojure (and other books) with Manning with code a2140 through the 28th. <3 Manning (via @westernwizard)
  • 40% off #Clojure in Action - use code a2140 at checkout (here, via @amitrathore)
  • I've learned a lot about #clojure by skiming/reading http://clojure-log.n01se.net/ every night (via @BrianCarper) -- I couldn't agree more. That address contains archives of the Clojure IRC channel. The Library of the Congress should buy these and not the whole Twitter database as it did recently!
  • Did you know about with-open? Start of a small post series for #clojure (here, via @kotarak) -- What a good start, keep them coming! What is it going to be, a weekly thing?
  • Just recorded a fun - and I hope excellent - @makeall with @KirinDave on clojure (here, via @cote) -- Michael Coté is an industry analyst with RedMonk. This interview covers the very basics of why one should be interested in Clojure.

Today in the Intertweets (April 21st Ed)

  • Clojure section on my site and two new articles (here, via @alexott_en) -- The new two articles are Building Clojure code with Maven and Using Leiningen to maintain projects written in Clojure.
  • Interesting discussion about what OO means on #clojure irc (here, via @wmacgyver) -- I can't really summarize all the knowledge and wisdom thrown around in this chat about OO. The discussion is indeed very interesting if you're into that sort of thing (and you are, because you're reading this site).
  • Free Clojure course starts off tomorrow (here, via @IndianGuru) -- This course is wildly popular; more than 400 attendees so far!
  • Clojure & Scala Similarities - Twins separated at birth? Here are my thoughts (here, via @LauJensen) -- This is in response to this other blog post from yesterday. The OP says Scala and Clojure are very similar. Lau in response says that they are very different.
    • mmm it's curious scala devs stressing similarities between scala and clojure and clojure devs highlighting the diffs. Clojure is more sexy (via @jneira) -- You might be onto something my friend!

Today in the Intertweets (April 20th Ed)

  • Episode 17 is finally up: Performance (here, via @fulldisclojure) -- This episode is dedicated to making your clojure code faster. It covers all the basics of optimizing clojure code.
  • Coding katas for Java, Groovy, Scala, Clojure, and other JVM languages (here, via@msusies) -- A Code Cata is: "It's a small exercise to improve your programming skills - by challenging your abilities and encouraging you to find multiple approaches." and linked is a website to collect and organize and help you code through those Katas.
  • (refer 'clojure.core :rename '{first car}) (via @stuartsierra) -- Did you know you can do this in Clojure?
  • Giving a #Clojure talk this week Thursday April 22nd 6pm at @cinjug (here, via @wmacgyver) -- That's in Cincinnati, OH at 6:30pm.
  • We will show TheDeadline at Google IO 2010! What about a #Clojure Hacker Meeting at #io2010?! (via @smartrevolution) -- Send him a message if you want to meetup. I can't. I won't be in town :(
  • Choosing Clojure over Scala (here, via @WarN4N) -- Interesting to see what draws people to clojure these days...

Today in the Intertweets (April 19th Ed)

  • GitHub上ではCommon LispよりClojureのほうが人気があるんだね (via @bojovs) -- Clojure has become more popular than Common Lisp in terms of projects at github. Clojure is #18 and Common Lisp is #19. I should add that Scala remains at #20 and Scheme is at #21
  • これだ. これを常備しておけば良いのだ. "Hyperpolyglot: Lisp: Common Lisp, Scheme, Clojure, Emacs Lisp" (here, via @stillpedant) -- This is a 4-way cheat sheet that will let you know the equivalent functions/syntax between these 4 languages.
  • A survey of #clojure plug-ins for #vim (VimClojure and Slimv), plus details on my configuration (here, via @deepbluelambda) -- This article goes quite in depth on the different options of running clojure from within Vim.
  • Joy of Clojure's official "Things learned from co-author" scorecard: Fogus: 57,313. Chouser: 1 (via @fogus) -- Next goal in this life: write a book with Chris Houser.
  • In Chicago? Dig Clojure? This is for you (here, via @DocOnDev) -- Yay! The Chicago Clojure Group is back! Next meeting is May 19th at 6pm at ThoughtWorks' offices.
  • Freemind Clojure REPL Hello World (here, via @nickmain_) -- Feemind is a free open source mind mapping software, written in Java, and with the ability to be scripted. In this article there is a video that shows how to run Clojure code inside the mind map. Pretty neat!

This weekend in the Intertweets (April 18th Ed)

  • [clj] (defmulti can-your-method-dispatch-do-this? (fn [& args] (if (= :full (phase-of-moon)) :do-this :do-that))) [/clj] (via @cemerick) -- These clojure tweets are becoming class of their own :)
  • "All your performance problems are cache misses" @rhickey last night at #clojure NYC (via @stuartsierra)
  • best-selling early access book "The Joy of Clojure" is %35 off until April 21 using code taxday35 (here, via @fogus) -- If you don't have it yet, now it is a good time to get it.
  • T-6 days until RubyLearning's #clojure course. 430+ participants, 50+ countries. 40.3% Mac users, 34.5% Linux and 25.2% Windows (258 votes). (via @citizen428) -- 430+ is a BIG NUMBER. Congrats!
  • Hmm, the name #nosql is established now, but still no #nojava for the movement to #scala or #clojure (or others). (via @themue) -- Oh, no! Let's not even get there! :(
  • Using binding to mock out even “direct linked” functions in Clojure (here, via @chrishouser) -- Bindings are frequently used for mocking some functions during testing. But when using some of the multithreading capabilities of Clojure (i.e. pmap vs. map) binding will not work as one might have expected. This article describes the problme and a solution to this problem (for 1.0 and 1.1)
  • ClojureW -- a simple and easy way to start with Clojure now became cross-platform (here, via @ktuman) -- Now supports Windows, OS X and Linux. ClojureW is a preconfigured environment that helps newbies get started in Clojure.
  • Lazytest slides from #Clojure NYC April 15 (here, via @stuartsierra) -- Code can be found here. Lazytest is an innovative testing framework for clojure that supports lazy evaluation (amongst other many cool features). Work in progress.

Today in the Intertweets (April 15th Edition)

Tax day in the US, so I am assuming the drop in the number of tweets has to do with this event :(
  • Didn't know there was a Bangalore Clojure Users group: but only 27 members? That few Clojure developers in Bangalore? (here, via @sids) -- Maybe now you'll get more people to sign up?
  • 20+ Clojurians to Follow on Twitter  (here, via @IndianGuru) -- Satish Talim and Michael Kohl, the brain behind the upcoming free Clojure 101 training have compiled a list of clojurians you can (should) follow on twitter.
  • "Clojure is so close to Lisp and Scheme that it is better to join it with other Lisp like languages." ha-ha #fail (here, via @cemerick) -- Really? Clojure is as popular as CL and Scheme? The guys who put together the TIPBE Programming Community Index seem to think so. Ah, and C surpassed Java (!)
  • Rich Hickey thinks Clojure 1.2 is near! (via @clojure) -- Folks, I really don't know what to say about this tweet. @clojure is not Rich Hickey as far as I know. Also there is no link to any email/chat log that provides any evidence of this... So I don't know how credible this tweet is :( . Any hints? EDIT: @laujensen actually confirmed that I am totally wrong on this and that indeed Rich Hickey said in IRC that Clojure 1.2 is near... my bad!
  • lein bash completion (here, via @timcharper) -- If you're on Un*x and using bash, this addition to your completion script will provide you with completion for leiningen at the command line.
  • my #oredev intro to #clojure is finally online (here, via @stuarthalloway)-- There is another presentation from the same event that was already online here (Concurrent Programming in Clojure)

Today in the Intertweets (April 14th Ed)

  • European Clojure Training by @cgrand and @laujensen (here, via @LauJensen) -- Tentatively held late June in Brussels, Belgium, with a cost around 1200€ (plus taxes, a 21% in Belgium). If you are interested, fill out the form in the linked page.
  • Introducing Cascalog: a Clojure-based query language for Hadoop (here, via @nathanmarz) -- Cascalog is a query based language for Hadoop built on Clojure and inspired by Datalog. Query your datasets in Hadoop from the REPL with a nice Clojure DSL, with very powerful features (joins, aggregates, subqueries, etc...)
  • defrecord support is now in #clojure master (here, via @wmacgyver) -- It is still alpha code. A powerful macro to create classes from clojure by generating the byte-code from multiple fields, protocols/interfaces, and method definitions.

Today in the Intertweets (April 13th Edition)

  • parallel k-means with clojure agents (here, via @bradfordcross) -- Some folks at the University of Ulm, Germany, researched the use of Clojure for solving problems using parallel computation. They wanted to know if it would leverage the number of CPUs available in a computer. They used some  machine learning algorithms for their tests and they provide this presentation as a result that contains loads of data from their tests. Summary: Clojure rocks (but you already knew that, right?)
  • Adding LaTeX equations to #Incanter charts (here, via @liebke) -- Incanter just keeps getting better and better. Now you can use Latex equations as annotations and subtitles in charts, which makes them look very even more professional now :)

Today in the Intertweets (April 12th Ed)

  • How useful is a Thrush in Clojure ? (here, via @debasishg) - Thrush is a combinator that reverses the order of evaluation: Txy=yx. This article explores its potentials uses in Cojure, where it is less needed than in other languages like in Ruby. In Clojure, the Thrush combinator is the macro '->>'.
  • The introductory materials for #clojure 101 are online at RubyLearning, please read through them before the actual course starts! :-) (here, via @citizen428)
  • Clojure Protocols Part 3 (here, via @jneira) -- This article is the 3rd of a series explaining the use of 'protocols', a new feature in Clojure 1.2. In this article it addresses some changes of late in 1.2 that affects the syntax of protocols in subtle ways (that could break your code).
  • Converting a Custom Collection to a Sequence (here, via @AgileCarnival) -- Sometimes legacy code has custom collections that do not implement the Iterable interface and therefore you cannot use 'seq' to convert them to Clojure sequences automatically. This article provides some code to convert any collection that is accessed by an index getter (i.e. get(i)) into a sequence. Best of all is @stuarthalloway's comment about similar functionality being part of 1.2

This weekend in the Intertweets (April 11th Ed)

  • Steve Jobs just ruined the iPhone for Clojure (here, via @IORayne) -- So no Clojure on the iPhone? Was there ever that option? If I recall correctly, interpreter and compiler code was never allowed on the iPhone...
  • Just finished adding all clojure.core functions I deem safe to clj-sandbox. (here, via @IORayne) -- clj-sandbox lets you safely run untrusted code inside the Clojure environment.
  • just published a new tutorial by Craig Andera on Clojure Concurrency for Pluralsight On-demand (here, via @fritzonion) -- That's no small thing; it totals 2 hours and 20 minutes of tutorial :)
  • Think I'll take the work that Antony has done with the Clojure support in Polyglot Maven and do a specialized build and call it Meiningen (via @jvanzyl) -- So are we talking about Lein/Maven convergence here?
  • #clojure has passed #scala on GitHub, now 18th/19th. (clojure and scala, via @foogoof) -- Wow.
  • Tokyo.clj 定期開催することになりました。ハッカソン中心やりたい人LTなゆるい感じで毎月9(ク)日前後の週末にやります! 2回目 (here, via @making) -- Tokio Clojure Hakkaton to be held monthly (original).
  • clojure-ja groups (here, via @chaton_clojure) -- New Clojure email list for Japanese speakers.
  • hooray! ... Joy of Clojure MEAP update in the inbox just in time for the weekend (via@grantmichaels) -- Got mine too! I might not be able to run Clojure on the iPad, but I can surely read JoC on it :)
  • @nathanmarz Can't wait to check out the #clojure and #cascading based query language, sounds good (via @mattrepl) -- Err... that sounds pretty cool. When can we see this?
    • Planning on a public release in the next week or so - and good guess, it is indeed a Clojure DSL (via @nathanmarz) -- Did anyone mention deadline?
  • Fun with equality in Clojure (here, via @nathanmarz) -- Equality in Clojure is sometimes counterintuitive, but in the end it makes sense. Ah, and be careful with what you blog about or Rich Hickey himself will show up in your comments section!
  • OS poll among the Clojure 101 course participants: so far (109 votes) 37.6% Linux/Unix, 41.3% Mac and 21.1% Windows (via @citizen428)
  • #clojure course coming along nicely, we are at almost 400 participants now! :-) (via @citizen428) -- 400!?!
  • Cerraduras: #clojure en español: Primeros pasos con Clojure (here, via @jneira) --That's clojure in Spanish. This article is a translation of the recent wiki page on how to start with Clojure. If you are more comfortable with Spanish than English, this is a site to follow closely.
  • 無限にメモ化しない memoize (here, via @fatrow) -- Google says "Memoize indefinitely without 'memoize'". The code does match the title, but the google translation of the article is uninteligible...

Today in the Intertweets (April 8th Ed)

  • Did he (uncle Bob) plug Clojure b/c Rich is here? (via @kyleburton) -- Today Philadelphia Emerging Technologies for the Enterprise conference was taking place. Bob Martin (a.k.a. Uncle Bob) was giving the keynote today, and it looks like he said good things about Clojure. If you keep on reading you'll see that the next time he'll say even better things!
  • I'm presenting at #Clojure NYC on clojure.test/lazytest April 15 (here, via @stuartsierra)
  • Upcoming capital area #Clojure users group, Apr 22nd. (here, via @mattrepl)
  • Rich Hickey gave a talk at Philly ETE today. Here is some of the feedback:
    • I came to @richhickey's #phillyete #clojure talk expecting to see code. I got a philosophy talk instead. Love it! (via @scottdavis99)
    • Rich Hickey's Clojure talk is giving Uncle Bob's keynote a run for top talk (via @delagoya)
    • Rich hickey may be an alien sent to earth to stop software development from sucking. (via @NovusTiro)
    • It's official. Rich Hickey is the Jerry Garcia of #PhillyETE - his #clojure talk was jammin'!!! (via @sfraser)
    • I am becoming ever more convinced that clojure is the functional language to use. (via @unclebobmartin) -- and this is after plugging Clojure on his keynote!
  • "Introduction to Monads" with Clojure (VIDEO) (here, via @hkrnws) -- This is an awesome hands-on presentation on monads in Clojure by Adam Smyczek. In this presentation Adam builds the case for monads and then builds a series of monads with  small increments. All in clojure, live.

Today in the Intertweets (April 7th Ed)

  • Использование #Maven для сборки кода на #Clojure (here, via @alexott) -- Article in Russian on how to build Clojure projects with Maven. (Google translated version)
  • HTML と Clojure のコードを分離するテンプレートシステム Enlive (here, via @fatrow) -- An article in Japanese about how to use Enlive to generate HTML and keeping the HTML generation code separated from the rest of the code. (Google translated version)
  • Just released sh-clojure: an improved #clojure brush for SyntaxHighlighter (here, via @deepbluelambda) -- This is for all of you bloggers that use The SyntaxHighlighter plugin for Wordpress (or other blog systems). A new highlighter brush is proposed that handles the clojure syntax better than the existing ones.

Today in the Intertweets (March 6th Ed)

  • Episode 16 is up - Enterprise #Clojure (here, via @fulldisclojure) -- Grab data from different formats (Excel, XML, text, etc..), transform it into a unified format and then perform SQL-style operations on the aggregated data from all those sources.
  • Getting started with Clojure (here, via @jimduey) -- @stuartsierra and others have been hard at work updating clojure's wiki to provide the steps to setup a Clojure development environment with the most popular IDEs: Netbeans, Eclipse, IntelliJ, etc...
  • Need a venue for the April London Clojure Dojo. We need room for 15-30, wifi and a projector. Pizza and beer provided. (via @otfrom) -- Any takers?
  • Just pushed 1.0.0 of Yoink, my Scala library for stealing Clojure's persistent, immutable maps. Enjoy! (here, via @coda) -- Scala keeps taking pages from Clojure's book. Will macros come next? .... I wouldn't think so either.
  • National Capital Area Clojure Users Group April Meetup - 22 Apr - Reston, USA (here, via @developerevents) -- You know the drill: around Reston, VA in the evening of April 22nd? Like Clojure? You've got a place to be at 6pm! There will be an Intro to Clojure and a talk about @stuarthalloway's awesome Labrepl.

Today in the Intertweets (April 5th Ed)

  • A case for symbol capture in #Clojure (here, via @nathell) -- Clojure protects by default macro authors from capturing a local symbol (i.e. the expanded macro contains a symbol that also exists in the calling environment). This potential capturing of a symbol is to be avoided in almost all situations, except in this example.
  • Improved Clojure REPL syntax highlighting (here, via @nipra) -- this is an evolution of an initial version at stackoverflow.com.
  • Intro to #Clojure #cjug on 4/14/10 (here, via @JavaUsers) -- If you are going to be around Cleveland, OH on April 14th and want to learn about clojure, you should go to the Cleveland Java Meetup (at 5.30pm)
  • One of the best parts about Clojure is that its API has links to the source of the function. Here is 'number?' ( via @peregrine) -- This is an often overlooked feature of clojure.org's website.
  • Rich Hickey the creator of Clojure, talks to the participants of RubyLearning's free #Clojure Course (here, via @IndianGuru) -- Only in case you are new to Clojure.
  • Scaling Clojure Web Apps with Google AppEngine (here, via @infoq) -- An interview with Stefan Richter of freiheit.com, the creators of TheDeadline, a commercial clojure App on Google App Engine. Good information from their experiences with Clojure+GAE.
  • SQL WHERE clauses in Clojure from S-Expressions (here, via @pjlegato) -- The many ways in which you can write a WHERE clause in Clojure and have it transformed to valid SQL WHERE.

This weekend in the Intertweets (April 4th Ed)

  • Clojure Ireland set up (here, via @clojureireland) -- Welcome!
  • I wonder if there is interest in european Clojure training sessions (via @cgrand)
    • @cgrand Funny I'd been pondering the very same thing (via @LauJensen) -- so the answer to @cgrand's question is 'yes'?
  • Latent Semantic Analysis using #solr #clojure (here, via @algoriffic) -- Clever search algorithms build on Clojure.
  • Better doc for #clojure lazytest, how's the new syntax? (here, via @stuartsierra) -- The LazyTest library from @stuartsierra is an attempt to build a new testing framework after the lessons learned from writing clojure.test.
  • Simple #clojure xmpp library (here, from @napple) -- So if always wanted to write a smart Jabber robot to infiltrate the clojure chat, this is your chance!
  • new cloud demo: #clojure in google #appengine by @hugoduncan (here, via @cloudhackers) -- From the source code it seems like this is a simple web app built on with Moustache on top of Ring and deployable on Google App Engine,  but the maven pom.xml file alone is a work of art ... is all that stuff really used though?
  • Clojure: Immutability at the Language Level (here, via @developerCom) -- This is a fairly large excerpt of the book "The Joy of Clojure." If you haven't bought the alpha version of the book yet (a.k.a. MEAP) then reading this article should convince you to go ahead and purchase it.
  • (import '(twitter4j TwitterFactory))(map #(str (. % getText)) (.. (TwitterFactory.)(getInstance "user" "pass") getFriendsTimeline)) (via @asakawajunya) -- So this is a meta-tweet that is possible probably only in Clojure. It is a tweet, but it is also a program, but it is also a twitter client, in a tweet, that is also a program. Clojure can be terse sometimes.  This gets the timeline of posts of the people you follow on twitter.
    • (import '(twitter4j TwitterFactory Query))(map #(str (. % getText))(. (.. (TwitterFactory.) getInstance (search(Query."Clojure")))getTweets)) (via @asakawajunya) -- this is a search of the latest tweets that have the word 'clojure' in them. Clojure, the only true programming language for twitter.
  • New release of scriptjure out! (here, via @arohner) -- Scriptjure lets you programatically generate JavaScript from clojure.
  • Clojure performance tips (here, via @newstokyojp) -- Good tips on how to optimize your clojure code for performance.
  • clj-html deprecated in favor of hiccup from #compojure (here, via @wmacgyver) -- hiccup and clj-html shared the same interface, but it was a duplicated effort and also hiccup seemed to have a performance edge over clj-html.
  • Adventurous, vimming Clojurians: Please help test #vimclojure for better #clojure experience (here, via @kotarak) -- More robust communication with Clojure, saner defaults, all yours today if you dare to give it a try!

Today in the Intertweets (April 1st Ed)

  • Planet Clojure [http://planet.clojure.in] will now redirect to Planet Scala. That's because Scala is my current favorite language. (via @ghoseb) -- Yeah, rrrrrrright! :D
  • A next release of CounterClockwise will feature an assistant to teach the paredit key-bindings (here, via @cgrand) -- Yeah, rrrrrrright!
  • Casting SPELS with Clojure (here, via @antest) -- An introduction what makes Lisp in general, and Clojure in particular, a different languages (hint: macros) with nice drawings. The original Common Lisp version of this is here
  • Migrate to #compojure 0.4 (here, via @wmacgyver) -- If you are using Compojure and want to update to its latest and greatest version, know that there are some changes that you need to do to your code. This article goes over the experience of migrating from 0.3.2 to 0.4.
    • More notes on the upcoming #compojure 0.4 (here, via @wmacgyver) --

Today in the Intertweets (March 31st Ed)

  • The pitfalls of Swank in Leiningen (here, via @nathell) -- This article describes an issue with Leiningen that is related to which classloader lein uses when it initiates Swank (so you can connect from Emacs via SLIME).
  • TheDeadline, our intelligent Todo-Manager is in public beta! Clojure and Google App Engine! Let us know what you think! (here, via @smartrevolution) -- Try it out. It is pretty neat. It is also interesting how this project became a reality.
  • New #Clojure group based in Dundee (here, via @rrwo) -- That's in Scotland, UK  and they meet weekly
  • OpenGL molecule viewer in Clojure (here, via @hntweets) -- The interesting thing is that the author of this code and article is (was) not exactly a clojure fan...
  • Quick explanation of the new debug-repl functionality in swank-clojure (here, via @hugoduncan) -- This new functionality allows you to introduce a call to the debugger in your clojure code, only when using Emacs+Slime+Swank. Once the debugger comes up, you can inspect all the variables in the stack and resume computation.
  • Pushed a (very alpha) Latent Semantic Analysis clustering engine for #solr using #clojure and #incanter to github (here, via @algoriffic) -- Sounds complicated, but cool :) ...
  • #Incanter has migrated to #Leiningen (here, via @liebke) -- Incanter is now built with Leiningen instead of Maven. This article describes the new build structure.
  • Found some time, this week's #clojure episode is up (here, via @fulldisclojure) -- Hmm... you should take this screencast with a grain of salt, or a few pounds of salt. Also, check the date in your calendar; it should read April 1st. Also, if you don't live in the US, you should try to figure out why this date is so special...

Today in the Intertweets (March 30th Ed)

  • Destructuring examples (here, via @nipra) -- De-structuring bindings are a very powerful tool in Clojure. Here are some examples of what can be done.
  • Hey folks - Traveling to Canada for day job. This week's episode will air Thursday (via @fulldisclojure) -- So no screen cast until Thursday :)
  • Clojure-style Agents in #akka (here, via @jboner) -- The cross-pollination between Scala and Clojure continues. Akka is an Actor framework for Scala that offers simple scalable and fault-tolerant remote actors. Actors are somewhat related to agents in Clojure. Simply put, you send messages to an Actor and you send update functions to an Agent. Both models serialize access to shared data. Now Akka provides Agent functionality inspired by Clojure.
  • Working on Walton (here, via @defn) -- Walton provides examples of function usage right at the REPL. Pretty useful for people without memory like myself!

Today in the Intertweets (March 29th Ed)

  • #London #Clojure dojo tomorrow evening. (((((Emacs, recursion, confusion and pizza)))). See you there! (here, via @ntoll) -- I can't tell when or where because the meet-up is private :(
  • A demo of @cgrand's Moustache Clojure web framework -- very nice. (here, via @fogus) -- So the number of different web frameworks for clojure keeps growing. Interestingly enough though they are all inter-compatible in one way or another. Time to start talking of an ecosystem? This one is compatible with Ring and Compojure.
  • Hmm.. (defn foo [q w e r t y u i o p a s d f g h j k l z x c]) => java.lang.Exception: Can't specify more than 20 params (via @nipra) -- is that so? Yes it is :( ... 'Hmm' indeed!
  • I love the fact that I created a decent massively-parallel machine translator between 22 western languages in a weekend (via @leifwalsh) -- Now that is a teaser! Tell us more about it...
  • Functional Fluid Dynamics In Clojure (here, via @LauJensen) -- This is an in depth article on how to write really fast clojure code with the help of a few tools (a benchmarking tool, a profiler, and clojure experts). Discovering where the clojure compiler is using Java reflection is key for making code work fast when interoperating with Plain Ol' Java. Oh, and you'll learn some Fluid Dynamics simulation along the way :)
  • Clojure Web Development with Ring (here, via @mmcgrana) -- The author of Ring writes this introduction to this web development framework, now in its version 0.2. This text is very approachable, so if you've never tried Ring before, now it is your time!
  • I <3 (swank.core/break), breakpoints for Clojure right in Emacs (via @swannodette) -- Wait! When did that happen? Oh, it happened today.

This weekend in the Intertweets (March 28 Ed)

  • Automatically create wrapper object in Clojure (here, via@ml_bot) -- Wrap a  Java object in Clojure proxy in one step. This clojure proxy will forward all the method calls to the wrapped java object. Then redefine the methods that you want to behave differently. All with one macro.
  • Kanshiki Boom! is a handwriting recognition software for Japanese Kanji characters implemented using clojure. Whoa. (here, via @cemerick) -- Whoa indeed! Interesting to see the wide range of projects built in clojure.
  • Clojure News March 26 (here, via @ericnormand) -- So here is another channel where you can get your Clojure news, this time on video.
  • Clojure – Destillat #6 (here, via @gutenbyte) -- And here is another Clojure news outlet. This space is getting crowded! The site is mostly in German, but not their 'Destillat' news articles.
  • Fast clojure vectors and multidimensional arrays (here, via @bradfordcross) -- nth has different performance characteristics when used with vectors and with lists. That can make a big difference when working with large datasets.
  • clojureのDatastore on GAEライブラリコミットしました http://bit.ly/a0QiXl テストケースそこそこ書いたから、使い方は http://bit.ly/cdDf6f みて推測 REPLで使うときは(setup-helper)を (source code and example, via @making) -- A library to access the Google App Engine datastore has been submitted to gihub, along with an example of how to use it. To try use the REPL and call (setup-helper) (Note: did I get this right?)

Today in the Intertweets (March 25th Ed)

  • clojure-mode-like syntax highlighting for the SLIME REPL (here, via @nipra) -- It works pretty well, except that it doesn't handle the prompt yet.
  • want 2 learn some clojure? >git clone git://github.com/relevance/labrepl.git >cd labrepl >mvn clojure:repl browse to http://localhost:8080/ (via @WarN4N) -- And this is how twitter became a repository for user manuals. If you were wondering how to use @stuarthalloway's Labrepl, here is the manual.
  • Why using Maven for Clojure builds is a no-brainer (bonus screencast with a pinch of snark) (here, via @cemerick) -- This is one stance in the debate of Lein vs. Maven or build vs. re-use that has been going on for a while in the Clojure community. Chas provides some arguments in favor of re-use, in this case reusing maven and adds in a very compelling screencast. Worth the 10 minutes.
  • Clojure + Apache Tika (here, via @alextott_en) -- Tika is a MIME type detection and extraction library. Clj-tika is just a clojure wrapper for it.
  • #clojure client library for Apache #cassandra  (here, via @8quashes) -- Not the first library for Cassandra in clojure. There is also clojure-cassandra
  • Added a new repository to github, a css-sprite generator written in Clojure (here, via @jharwig) -- Grabs your images directory, creates a sprite with all of them and also spits out the CSS code to access each image individually. You are interested in it if you are developing high-traffic highly-interactive websites and your pages to load very fast.
  • Dynamic data tables with #Incanter (here, via @liebke) -- How to use sliders to manipulate datasets dynamically.

Today in the Intertweets (March 23rd Ed)

  • Hidden features of Clojure (here, via @citizen428) -- This is a thread at Stack Overflow. Please contribute if you know of any other hidden feats.
  • Clojure's answer to named-args, a 1-line change (here, via @fogus) -- "added support for associative destrucuring for seqs by pouring them into a map first, thus supporting associative destruring of & args".... so that.
  • Computing with units and dimensions (here, via @sldfjd) -- This is a very in-depth article on how to make calculations with units in clojure using clj-units. The article is written by the same author of the library and it explains how to use and some of its internals.
  • labrepl, making #clojure more accessible (here, via @wmacgyver) -- @sutarthalloway offers his latest creation, labrepl, to the clojure community. Labrepl is an aid tool for teaching clojure. He also asks for the community to give back by providing support for currently-unsupported IDEs.
  • Clojure's Mini-languages (here, via @fogus) -- A very interesting article about the many different mini-languages that exist in Clojure, from the destructuring language to the regexp one. A must read.
  • Ask HN: Help For Clojure Addiction (here, via @looselytyped) -- A well known downside to Clojure is that it is highly addictive. Someone got hooked and is now reaching out for help. Should I suggest that he does whatever this guy did?

Today in the Intertweets (March 22nd Ed)

  • Why I have chosen not to employ clojure (here, via @jneira) -- At the clojure list someone posted why he will not use Clojure and recommend his customers not to. What follows is a discussion about how to make Clojure more accessible to newbies.
  • Clojure ハッカソンやろう! とりあえず4/10っていうことで日程だけ決めました。 (here in Japanese, here in English, via @masa_edw) -- Clojure Hackaton scheduled for April 10th (that's in Tokio)
  • Dynamic charts with #Incanter (here, via @liebke) -- Rich Hickey and Stuart Halloway convinced @liebke to add dynamic charts to Incanter during the Pragmatic Studio Clojure worksop. So he did. And this article explains how they work.
  • #seradio with @markusvoelter about #Clojure with Rich Hickey (here, via @The0retico)
  • inclojure.com is up! We are scheduled to meet the first Thursday of every month. First meet - 1st of April (here, via @inclojure) -- That's in Columbus, OH
  • Learning Clojure by writing a (very) minimal Lisp interpreter (here, via @HNTweets) -- Why would you want to do that?!?! I am joking. This is definitely an interesting way to learn clojure.
  • Dependency Injection and #clojure (here, via @fulldisclojure) -- Episode 15 from Sean Devlin. This one is again oriented to Java developers coming over to Clojure and explains how to emulate dependency injection in Clojure with closures.

This weekend in the Intertweets (March 21st Ed)

  • new counterclockwise (aka ccw) version out: 0.0.50 ! (clojure plugin for eclipse) (here, via @petitlaurent) -- Adds auto-indentation (at last!) and other goodies.
  • Introduction to Lisp Macro (via HTML templating as analogy) (here, via @swannodette) -- A follow-up to his popular enlive tutorial, this time covering macros.
  • Incanter and Aquamacs on Mac OS X with Leiningen and aquamacs-emacs-starter-kit (here, via @betnatkin) - The title says pretty much all. This tutorial will walk you through the process a clojure development environment to work on Incanter.
  • Just gave #clojure labrepl a spin. Impressive! (here, via @mmazur) -- Labrepl is the environment used by @stuarthalloway and Rich Hickey during last week's training sessions. I believe this tool is used in this video from a few weeks ago (about Circumspect).
  • Install Clojure on Mac OS X and Aquamacs (here, via @maicki) -- That's from scratch, that is, without using @technomancy's Emacs Starter Kit.
  • Review: Pragmatic Clojure Studio (here, via @mlmfeeds) -- If you weren't lucky enough to be able to attend the Pragmatic Clojure Studio taught by Rich Hickey and Stuart Halloway, here is a review to make you feel even worse!

Today in the Intertweets (March 18th Ed)

Slow day today...
  • Excellent post by @bradfordcross on big data (here, via @joealex) -- The article does not quite talk about Clojure, but Flightcaster uses clojure for their computations. Nevertheless, many folks use clojure for big data projects and this article is a good overview of what these folks are doing these days.
  • Update supports Trace dialog for #Clojure to track invocations of #lisp functions in real time (via @MCLIDE) -- Mclide's support for clojure seems to be moving forward nicely.
  • Google unironically shows me C++ job ads when I read mail from the #clojuremailing list. (via @abscondment) -- :D
And that is all!

Today in the Intertweets (March 17th Ed)

  • Watch this discussion: #scala #groovy #jruby #clojure "Which JVM language if 4 u?" (here, via @zacksm)
  • I'm giving a talk tomorrow about dependency graphs and the dgraph library at the NYC #Clojure Meetup (here, via @vetoshev) -- That's tomorrow at 18 at 6.30pm, if you're around NYC. @cemerick is also presenting (Clojure+CouchDB)
  • @RichHickey: "One of the tricks of moving to #clojure is understanding how often seq funcs solve your problems" Amen that IS the trick (via @JeffGortatowsky) -- What can I say? Indeed.
  • Rich Hickey on Clojure vs Scala: "I believe Clojure is very simple. It has a lot of newness, yes, but it's very simple...and opinionated." (via @mojavelinux)
  • Amit Rathore author Clojure in Action talks to RubyLearning's #Clojure Course Participants (here, via @IndianGuru)

Today in the Intertweets (March 16th Ed)

  • I hope to see a bunch of new MEAP content for @fogus's "The Joy Of Clojure" any day now. Rumors suggest as many as 7 chapters total (via @chrishouser) -- Those rumors are quite credible, coming from one of the authors himself...
  • Blogged about the available Clojure IDEs - The Grand Tour (here, via @LauJensen) -- So after all the chatter about the need of promote all the IDEs that work with Clojure, not only Emacs, Lau Jensen put together this Grand Tour to all the existing IDE options for Clojure. Judging by the amount of retweets it looks like this article was sorely needed.
  • Here we go: #clojure memoize with protocol strategies (here, via @kotarak) -- An update to the very recent article about the many different ways to implement memoize. This update includes a new version of the final solution implemented with protocols (you need Clojure 1.2 for that)
  • Is glad he got a chance to buy Rich Hickey dinner: the very least I could do in return for creating #clojure (via @craigandera) -- and we are glad you're doing that!
  • Updated #clojure #gradle blog post with clojuresque. This is my current setup, minus the mix groovy part (here, via @wmacgyver) -- After all this recent chatter discussing the pros and cons of Leiningen vs. Maven, let's not forget this very powerful alternative: gradle+clojuresque (based on Groovy). In this article Mac shows his own clojuresque build script.
  • Hey folks - no #clojure episode this week. Day job too busy. Will resume 3/23. (via @fulldisclojure) -- Bummer! No screen cast from Full Disclojure this week! Luckily you can still watch the older ones.

Today in the Intertweets (March 15th Ed)

The clojure twitterati have been busy the last two days discussing how to make it easy for developers approaching clojure to start developing quickly. The tendency of many clojurians to use and promote Emacs+Slime is seen as a potential deterrent for newbies to feel comfortable with Clojure. It does look like the community needs to make a bigger effort in promoting IDEs that are closer to what current non-lisp developers use (i.e. Netbeans, IntelliJ, Eclipse, etc...). In parallel, a similar discussion started in regards to build tools. Maven vs. Leiningen, which one is easier/better... But that is not all, here are the rest of the tweets:
  • Announcing Pro Clojure - a day-long Clojure boot camp in the Bay Area (here, via @amitrathore) -- Amit Rathore, the author of "Clojure in Action" is running this one-day (Saturday May 1st) training sessions in Mountain View, CA. Register now to get a steep discount!
  • Scala, Ruby, Clojure and Go at SD Forum [vid] (here and here, via @dpp) -- Videos of the "Emerging Languages Face-off" session of the Emerging Tech SIG that took place last March 10th in Palo Alto, CA.
  • How I develop #Clojure with Vim: for the non-Emacs folk. (here, via @thnetos) -- This article describes a Clojure development environment with similar functionality that what you'd get with Emacs+Swank+Slime, but with Vim and @kotarak's VimClojure. The author walks us over the steps necessary to obtain a very functional clojure development environment.
  • Clojure memoize done right. Thanks to Eugen Dück and @cgrand (here, via @kotarak) -- A summary article of all the different memoize implementations that have been suggested lately. Most of them are concurrent versions of memoize and they are a great tutorial to understand the different concurrency features of Clojure.
  • #Columbus now has a #Clojure user group. See inclojure.com and Twitter ID @inclojure (here, via @kaleidic)
  • Getting my slide deck ready for a tour of Clojure on wed (here, via @abedra) -- If you are around Charlotte, NC on March 17th, there is a clojure talk at tha Charlotte JUG by Aaron Bedra at 6pm.

This weekend in the Intertweets (March 14th Ed)

  • Talked with two devs (1 java, 1 C#) interested in clojure but repulsed by emacs – no one had yet pointed them at the various IDE plugins (via @cemerick) -- This post started a long thread of tweets. Clearly newcomers to Clojure need to know about all existing IDEs earlier in their research. We do our part.
    • Adding clojure to an existing slime setup in emacs: The current recommended setup of emacs and… (here, via @mohegskunkworks) -- This is an example of why Emacs might scare new Clojure adopters away...
  • InfoQ Interview: Stuart Halloway on Clojure and Functional Programming (here, via @infoq) -- Stuart covers a lot of ground in this interview.
  • Variations on a parametrized memoize in Clojure (here, via @cgrand) -- This is a follow-up response to @kotka's article on how to write modified versions of memoize with different caching strategies
  • Google App Engine (GAE) Blog mentions Clojure as a programming language for GAE. (here, via @smartrevolution)
  • clj-native: see a C function being passed a clojure fn as a callback, great stuff (here, via @kyleburton) -- You can quickly see how it works with this example. Now you can use any native library from Clojure.
  • New blog post: Yahoo Finance in Clojure (here, via @pjlegato) -- This is a re-implementation of a Ruby gem in Clojure by its own author. This plugin fetches financial data from Yahoo Finance. It is still slower than its Ruby counterpart, but the author thinks this is mainly because the Ruby version is using a native HTTP client library while his Clojure implementation is using Apache HttpClient.
  • Mar 17: Clojure by Stu Halloway and Rich Hickey (here, via @DavidValeri) -- If you are near Reston, VA on March 17 then you should definitely plan to attend.
  • A little blog post showing how to integrate Rich Hickey into your Emacs buffer (here, via @LauJensen) -- Some notes on Emacs configuration, especially the IRC client (ERC)
  • An in-depth tour of Enlive (here, via @swannodette) -- Enlive is a selector-based templating and transformation system for HTML in Clojure. This is a very powerful library, but the documentation has always been rather sparse. This tutorial fixes this situation by providing an in-depth tour through all Enlive features.
  • Russian speaking #clojure community at LiveJournal (here, via @alexott_en)
  • Reflections on leaving Haskell (to clojure) (here, via @jneira) -- A glimpse on what brings other FP developers over to Clojure (hint: it's pragmatism)
  • Setting Clojure's Log Level (here, via @pjlegato) -- "Clojure.contrib.logging doesn’t have any way to set the log level. This is obviously a problem if you want to make use of various log levels (debug, warn, etc.) to separate different logging depths. Here’s a function to set the logging level on my default clojure.contrib.logging setup"

Today in the Intertweets (March 11th Ed)

  • Europe’s Largest Ad Targeting Platform Uses Clojure & Hadoop (here, via @ghoseb) -- Clojure is used within Hadoop.
  • Introduction to Clojure - 14 Apr - Independence, USA (here, via @developerevents) -- That's in Independence, OH. Organized by the Cleveland Java Meetup Group.
  • Clojure Buch: a German Clojure Book (here, via @ajlopez) -- Another book on Clojure! This time in German :) Scheduled for September 2010
  • Showing off @hugoduncan's swank-clojure changes to the team. You guys are in for a treat once this stuff gets merged. (via @technomancy) -- Hmmm. Please tell me more...
  • Clutch v0.2 with #CouchDB change notifications support is up (also on Leiningen). Updated API and syntax (here, via @ashafa)

Today in the Intertweets (March 10th Ed)

  • Michael Fogus talks to RubyLearning’s #Clojure Course Participants (here, via @IndianGuru) -- Includes a mug shot! (@fogus is a co-author in "The Joy of Clojure")
  • Simple clojure memoization "API" w/ multiple cache strategies (was reminded of this by @kotarak's recent article) (here, via @cemerick) -- Another set of 'memoize' alternatives.
  • I'm heading to the #montreal #clojure group meeting today at 1.00pm (here, via @hugoduncan) -- I know I am posting this too late, but this is to highlight that there is a Clojure User Group in Montreal: Bonjure
  • Joy of Clojure TOC updates (here, via @fogus) -- Some chapter reorganization + new goodies.

Today in the Intertweets (March 9th Ed)

  • RubyLeaning.com: Clojure 101 -- A New Course (here, via @devfunnel) -- Do you want to learn Clojure in 4 weeks, and for free? Just for this time, this online course is free for all. Slated to start somewhere in April, and taught by @citizen428 and @ghoseb.
    • Already 100 signups for the #clojure course at RubyLearning on the first day, seems like we have hit a nerve there. (via @citizen428)
    • Stuart Halloway talks to RubyLearning's #Clojure Course Participants (here, via @IndianGuru)
  • Visualizing Maps Using #Incanter by @nakkaya (here, via @liebke) -- Using the Incanter-processing library, the author plots geographical data on a map of Turkey.
  • Tomorrow at 1930 we start monthly #Amsterdam #Clojure meetup. Proudly hosted by @sourcesense (via @neotyk)
  • Design By Contract with Clojure (here, via @emcconne_reads) -- Using the :pre and :post facilities of Clojure 1.1
  • Context searching with clojure-opennlp (here, via @thnetos) -- A follow-up article to this one in which the author introduces clojure-opennlp. In this new article, the author show how to perform more meaningful text searches by finding relevant words in the context of the searched text.
  • ClojureでMagicPacket送信スクリプト作ってみました (here, via @___otabat___) -- Roughly translates to: "tried to write a script to send a magic packet in Clojure". A magic packet sent to a computer will wake it up if it is asleep and the network card supports "Wake on LAN".
  • #clojure memoize and the Rule of Three (here, via @kotarak) -- About how to implement a version of memoize that supports different caching strategies, other than keeping all the values around forever (the behavior of cloure.core's memoize impl). It is also a good article about structuring your code so it can be easily reused.

Today in the Intertweets (March 8th Ed)

  • Handy #Clojure snippet for apply-ing Java methods (here, via @citizen428) -- A rather old snippet from Rich Hickey himself that makes it easy to apply Java methods to objects.
  • Whew, new blog post about my library: Natural Language Processing in #Clojure with clojure-opennlp (here, via @thnetos) -- Grab a text, break it into sentences, parse the words and tag them. It's that easy! Work in progress...
  • @hugoduncan 's criterium is a pretty sweet start toward a fantastic benchmarking suite for clojure (here, via @bradfordcross) -- "Criterium measures the computation time of an expression. It is designed to address some of the pitfalls of benchmarking, and benchmarking on the JVM in particular."
  • Wow! Latest Linux Journal has #clojure on cover & Rich Hickey interview! (here, via @sfraser) [caption id="attachment_732" align="alignnone" width="200" caption="Clojure featured in Issue 192 of Linux Journal"]Clojure featured in Issue 192 of Linux Journal[/caption]
  • Analyzing Word Frequencies with #Clojure, #Enlive and #Incanter by Ethan Fast (here, via @liebke) -- Uses enlive to scrape a web page, count the words and show their frequencies graphically with Incanter.
  • Discussing IoC in #clojure for our #Java friends (here, via @fulldisclojure) -- This episode of Full Disclojure's video series is very focused on Java developers who are interested in Clojure. It shows how easily one can do in Clojure what is known as Inversion of Control in the Java's world(and other imperative languages too).
  • another html library emerges for #clojure benchmarks; that makes 3 (here, via @wmacgyver) -- Hiccup is the HTML generation library that James Reeves is extracting from Compojure. In this code snippet it shows that this library is very fast, close in speed to simple string concatenation.

This weekend in the Intertweets (March 7th Ed)

  • My #clojure talk at #cojug on 3/9 has been posted (here, via @wmacgyver) -- If you live near Central Ohio, don't miss this Clojure talk at the Central Ohio Java Users Group by Mac Liaw. That's on 3/9/10.
  • Clojure Pre- and post-conditions: a quest for a nicer syntax (here, via @tm_interesting) -- An alternative syntax for pre- and post-conditions that is much easier to the eye and cover some of the most common use cases.
  • Interview with Rich Hickey, creator of Clojure (here, via @tm_interesting) -- Good tidbits about the future parallel features.
  • New ssh tool for #clojure (here, via @jclouds) -- It's a wrapper for jsch.
  • gen-class little brother: proxy (here, via @kotarak) -- Proxies in Clojure allows you to create new java classes on the fly in order to interoperate with the Java environment, but with some limitations. This article explores the many uses and features of 'proxy'.
  • A library to make Jython interop in Clojure more elegant. I created a Google Code repository for it. (here, via @rplevy) -- Google Code? What's wrong with GitHub? ;)
  • How to make a quick performance ping to 5 storage clouds in #clojure (here, via @jclouds) -- A nice and simple example of how to use JClouds with Clojure.
  • What I really want it to use rspec to test my clojure libraries (here, via @kyleburton) -- What is that CljHelper that he is using?.... oh, wait!
    • jrclj (1.0.0): Helper library for working with Clojure from JRuby. (here, via @rubygems) -- ... so it is a JRuby gem...
    • Call Clojure from JRuby easier than ever!  by @kyleburton (here, via @jonnytran) -- ... and here is the source code. Case closed!

Today in the Intertweets (March 4th Ed)

  • Page layout can be performed at the decorator level with Enlive and Compojure (here, via @cgrand) -- This is now you can decorate Enlive templates in Compojure.
  • Interesting talk on hardware for 1000+ core Java w/ Hardware Transactional Memory (here, via @stuartsierra) -- This is not a new video, but still very relevant. Cliff Click, from Azul Systems discusses the challenges that they face at building the kind of very large Java systems that they build. encounter. Pretty hardcore :). You can also check out this infamous back-and-forth between Cliff Click and Rich Hickey.
  • conjure 0.4, a rails like framework for #clojure has just been released (here, via @wmacgyver) -- The list of features of this 0.4 version is impressive!
    • Hello World Tutorial - Conjure - GitHub (here, via @ajlopez)
  • If you're in the Pittsburgh area on March 10th, then consider stopping by the Pittsburg Clojure Users Group. (here, via @fogus)
  • Clojure wont win the battle but may win the war (here, via @kicauan) -- This is in fact the infamous talk "What killed Smalltalk could kill Ruby as well", but as the article says, this could apply to Lisp/Haskell. Interesting talk, you don't have to agree with it though.

Today in the Intertweets (March 3rd Ed)

  • #Incanter blog post roundup (here, via @liebke) -- A list of recent Incanter-related blog posts
  • Working with a java.util.HashMap in an idomatic Clojure fashion (here, via @sldfj) -- A stack-overflow thread about the best (most idiomatic) way to operate on a HashMap (java) in Clojure.
  • I have a #clojure benchmarking library, criterium (here, via @hugoduncan)
  • Great Bay Area Hadoop meetup this month - Mapreduce Online + Flightcaster/Clojure (here, via @rjurney) -- That's on March 24th @ 6pm at Yahoo's Sunnyvale's offices.
  • If you're in Seattle and interested in Clojure, the Seajure meeting is tomorrow night (here, via @technomancy) -- That's at 7pm, in Seattle, WA

Today in the Intertweets (March 2nd Ed)

  • Fragment selectors (a new Enlive feature) are useful for webscraping too (here, via @cgrand) -- Fragments are a way of creating sub-templates in Enlive. This example shows how to use them also for web scraping.
  • tcrayford's clojure-refactoring at master (here, via @sldfjd) -- Library for Emacs that provides some automated refactorings.
  • Clojure just passed CL to become the #19 on the github high score chart (here, via @IORayne)
[caption id="attachment_716" align="alignnone" width="377" caption="Clojure is num.19 at GitHub"]Clojure is num.19 at GitHub[/caption]
  • Google analytics with #Clojure and #Incanter (here, via @liebke) -- Another illustrative article on how to create instant applications with Clojure from nakkaya.com: Pull data from Google Analytics and then process it and show it in nice graphs with Incanter.
  • Next week (3/11) is "Happy Tasty Clojure" from Kurt Christensen (here, via @jasonbock) -- If you are near the Twin Cities by 3/11, there is a talk on Clojure hosted by the Twin Cities Languages User Group

Today in the Intertweets (March 1st Ed)

  • Published (finally) a Clojure app to get twitts from your account and push them to MySQL database (here, via @b0j3) -- An interesting (brave) way of this author to learn clojure, by building a twitter app and using a database. Whatever happened to SICP? The interesting thing for me is that the author is using yet another library to access twitter? How many are there?
  • Again, another #clojure #wallpaper done in GIMP (no PS installed :/) (here, via @dsp_) -- Don't click that link yet... read below first.
    • Turns out that #clojure logo shouldn't be used in derivate works, deleting the wallpapers from twitpoic. (via @dsp_) -- Awwwwww!
  • Look at my Software Transactional Memory implementation for Cocoa/Obj-C. Based on Clojure's. Still experimental (here, via @aramallo) -- Rich Hickey is a trend-setter.
  • Webjureなんてフレームワークもあるのか (here, via @bojovs) -- Webjure is yet another Clojure-based simple web framework.
  • #circumspec #inferior-lisp #clojure and #slime (video) (here, via @stuarthalloway) -- This video is awesome in many ways. Shows a mini-browser that lets you use a web-browser to navigate your code dynamically. Shows a cool emacs configuration. Finally, it shows how Circumspec looks today. And it looks awesome :). Watch. It.
  • Conjure 0.4がリリースされたらしい (here, via @bojovs) -- Conjure (a Rails-like web framework for Clojure) 0.4 has been released.
  • Would be really interested in seeing feedback on this musing about #clojureand dependency injection (here, via @puredanger) -- How to do dependency injection in Clojure (or is it needed at all?)
  • Are you ready for a Bay Area Clojure Bootcamp? Cast your vote now! (here, via @disclojure) -- Amit Rathore, author of "Clojure in Action"  and founder of the BA-CUG is asking "How much would you pay to attend a day long Clojure boot-camp?". Go ahead and vote!
  • Vote up, if you want to see how to use tools like #ant #clojure and #hadoop in the cloud (here, via @jclouds) -- Another pool: if you leave in or around San Francisco, you like Clojure and know that there are more clouds than the ones in the sky, you might want to vote for JClouds to present at the SFJUG (and then attend, of course!)
  • Episode 13 is up - inferring information (here, via @fulldisclojure) -- This episode from @fulldisclojure is about writing an inference engine in clojure. Pretty intense.
  • Clojure + Emacs (here, via @mdelaurentis) -- A compilation of ways to interact with the Clojure REPL from Emacs

This weekend in the Intertweets (Feb 28th Ed)

  • Very simple #clojure wallpaper (here, via @dsp_) -- A nice wallpaper for clojurians
    • Another one, this time in 1280x800 (here, via @dsp_)
  • clojure-maven-plugin now uses (run-tests) and not (run-all-tests), and defaults to including test deps for run/repl/nailgun/swank. (via @talios)
  • Clojure serialization benchmark testing printer, JSON, and binary (here, via @mmcgrana) -- Mark is running some benchmark on the different forms of serialization of clojure data structures. His own clj-json wins hands down. The micro-benchmark framework that he uses seems pretty generic too.
  • I made an attempt at uniform JVM benchmarking, please help make it better (here, via @laujensen) -- Speaking of micro-benchmarks, Lau has written an article trying to settle on a set of guidelines for running micro-benchmarks for the JVM.
  • Wrote my experience with compojure's session down (here, via @dsp_) -- How to create a simple web session with loging/logout using Compojure's own session capabilities.
  • A simple web application in Clojure using ring and enlive (here, via @lshift) -- Ring and Enlive together create a very barebones but powerful web framework. This article shows how to write a web app with them both.
  • See #clujure syntax brains curled up into a tube (here, via @ignart) -- (don't blame me; this is an automated translation from Russian by Google Translate) This is a fairly long and complete article introducing clojure to Russian readers by @alexott_en.

Today in the Intertweets (Feb 25th Ed)

  • This ought to be good, Cap-Clug meeting on 3/17 with @richhickey and @stuarthalloway (here, via @mattpodwysocki) -- If you are going to be anywhere between 0 and 1000 miles from Reston (VA) on March 17th, you should definitely plan to attend.
  • My #clojure concurrency talk from Øredev is online (here, via @stuarthalloway) -- This talk is an introduction to Clojure and its concurrency features. If you can't go to the meet-up above, you can always watch Stuart Halloway's presentation :)
  • rosejn's midi-clj, a high level midi library to play notes, external midi devices in clojure (here, via @ajlopez) -- this will *definitely* be tested this weekend on my Virus Classic!
  • rosejn's osc-clj, an Open Sound Control library for Clojure (here, via @ajlopez)
  • Talk on "Emerging Languages" in Palo Alto, March 10th (here, via @hamiltonulmer) -- Amit Rathore will be introducing Clojure in that talk. Clojure, Go, Scala and Ruby will be presented.
  • #clojure + #chef + #cloud = pallet; great stuff @hugoduncan! (here, via @jclouds) -- Pallet is used to start provision compute nodes using crane, jclouds and chef. It is designed for use from the REPL, along with Clojure scripts.
  • A short preview of ClojureQL (here, via @kotarak) -- ClojureQL is undergoing a lot of changes in the front-end. Here is a sneak preview of how the new front-end will look like.
  • A Resettable Memoize in Clojure (here, via @pjlegato) -- Since you cannot reset a memoized function with the 'memoize' function in Clojure's core API (yet), you can always create your own resetteable memoize. Here's how.
  • Wrote a blog on using the with-command-line option parser in Clojure (here, via @puredanger) -- If you need to parse command-line options, know that 'there is a clojure lib for that'... with almost no documentation. Well, "there is a blog post for that too"!

Today in the Intertweets (Feb 24th Ed)

  • Groovy is the #21 most popular language on GitHub. Clojure is the #20 most popular language on GitHub. Glad I switched. (via @foogoof)
  • ClojureでCompojureを使わずにサーブレットを書く方法を書きました (here, via @tnoborio) -- For those who don't read Japanese, this roughly translates to: "How to write a servlet in Clojure without Compojure" (Thanks @chosuke for the help with the translation!)
  • New chapter four - Polymorphism with Multimethods - added to the Clojure in Action MEAP - get it here (via @amitrathore)
  • Chinarro The Robot eats XMPP in #Clojure (here, via @ajlopez) -- This robots connects to a MUC jabber room, and a #hashtagged message is posted, the robot stores it for you.
  • Montréal #clojure luncheon on March 10th. Come join us! New users welcome - I'm one of them (here, via @jperras)
  • Dean Wampler on Programming Languages - Scala, Clojure, functional paradigm (here, via @vkelman) -- Dean Wampler is co-author of Programming Scala and owner/principal of Aspect Research Associates. Touches on Clojure tangentially, but interesting nonetheless.

Today in the Intertweets (Feb 23rd Ed)

  • Generic equation solver & macros (video here, via @fulldisclojure) -- A new episode of the weekly series by Sean Devlin that expands on macro creation (he did an episode on simpler macros a couple of weeks ago). He's got some nice macro-fu going on there!
  • Analyzing JVM performance is hard ...but Clojure hash-maps really are fast (here, via @chrishouser) -- That's from Clojure's email list; someone posts a micro-benchmark comparing the performance hash-maps in Clojure and in Haskell. The conversation that follows shows once again that micro-benchmarks are almost always flawed and that, oh well, it is really hard to make fair comparisons.
  • Clojure job market flys past Java's and Python's!!!1!!1! (here, via @cemerick) -- In RELATIVE terms, that is!
  • I find this chart of Scala/Clojure/Erlang/Haskell/F#/Lisp jobs interesting (here, via @puredanger) -- And Clojure is the one that has grown the fastest in the last 6 mo., again in relative terms. In absolute terms, it now seems to be on par with F# and getting close to Haskell and Erlang.
  • A simple web interface to mongodb written in clojure (here, via @sethtrain)
  • Graph Reasoner for Clojure (here, via @ml_bot) -- Graph reasoning is a way to do inference over a relationship graph.
  • Generating deftype forms in macros (here, via @jneira) -- When trying to write macros that generate deftypes, you will find that the standard behavior of syntax-quote might not work too well because it tries to resolve unqualified symbols to their namespace-qualified equivalents. Int this article, an alternative for syntax-quote is proposed for things like deftype.
  • Clojure, Haskell & Ruby Vs Euler 25 (here, via @fulldisclojure) -- Speaking of micr0-benchmarks, here is a new article from Lau Jensen comparing Clojure, Scala and Haskell. Needless to day this micro-benchmark raises some discussion. His results? Clojure has the most compact implementation and Haskell is absolutely fast.

Today in the Intertweets (Feb 22nd Ed)

  • My new clojure project is now up http://github.com/tashafa/nozzle Let me know what you think (via @ashafa) -- Nozzle is a Clojure library for streaming statuses from the "Twitter Streaming API."
  • pushed full rewrite of cascading-clojure to master this morning. co-authors @mmcgrana @nathanmarz (here, via @bradfordcross)
  • New chapter 4 for Clojure in Action: Polymorphism with Multimethods (here, via @ManningBooks)
  • Third draft of new #Clojure testing framework (here, via @stuartsierra) -- This time with documentation, so you don't have to read all the code to figure out how it works ;)
  • clojureql redesigned (here, via @wmacgyver) -- ClojureQL, a clojure library for interacting with SQL databases is up for a re-design of it's query DSL. This article explains what the changes are. The end result seems much cleaner.

This weekend in the Intertweets (Feb 21st Ed)

  • Overtone is a #Clojure based musical generation and manipulation system for live-coding and more (here, via @8quashes) -- Wraps Super Collider
  • Looking forward to the #clojure namespace management overhaul (here, via @RickMoynihan) -- There are a few proposals out there to tidy up a little bit the namespace management. :use is considered harmful as it imports by default all the symbols in the imported package. Here are discussed some of the proposed solutions.
  • Software Transactional Memory in JRuby using Cloby (here, via @sai_venkat) -- This is about using Cloby (by @headius, of JRuby fame) that allows using Clojure's STM in Ruby.
  • Byte-spec: a declarative DSL for reading and writing binary file formats in #Clojure (here, via @8quashes) -- Load and parse binary files the functional way.
  • 2nd draft of new #Clojure test framework (here, via @stuartsierra) -- Stuart Sierra is working on a new testing framework for clojure. This new version is targeted at Clojure 1.2 as it uses some if its new features.
  • Writeup about my #clojure RPG so far (with video) (here, via @BrianCarper) -- Great post about Brian's experiences in writing this RPG game in Clojure. It covers concurrency, OpenGL and making things move smoothly. If there is anything that summarizes this post for me is the following: "Clojure is a mostly functional language, in the sense of strongly discouraging unnecessary use of mutable state, and this program is no different"
  • Applescript with Clojure (here, via @bubbl) -- Title says it all.  Now you can control your iTunes from Clojure (that is, if you own a Mac)
  • Some reflections on my first few weeks of heavy Clojure usage (here, via @puredanger) -- Looks like we have another convert :) Main point? Can go from thoughts to code without having to create boilerplate code.
  • creating a simple game in #clojure (here, via @ztellman) -- Yet another game, this time using Penumbra to create the OpenGL code. The article is from the author of Penumbra himself. This article describes the design of this Asteroids game in Clojure. A very nice read![vimeo 9629431]
  • Notes on upcoming #compojure 0.4 (here, via @wmacgyver) -- Summary: More reliance on Ring for all things HTTP (some features have been crossported from Compojure to Ring), some of the libraries (HTML, routing) have been pulled from Compojure into their own libraries, and a change of syntax in how Servlet data is obtained.
  • join me... in the *future* (starting to build the pieces for a Clojure enterprise CMS) (here, via @acfoltzer) -- A wrapper to JCR-283: Java Content Repository.

Today in the Intertweets (Feb 18th Ed)

  • Software Transactional Memory in JRuby using Clojure's infrastructure (here, via @sai_venkat) -- a simple (but crude) way to using Clojure's STM inside JRuby.
  • Firsts draft of new #Clojure testing framework (here, via @stuartsierra)
    • clojure.test has poor separation between setup/teardown and assertions (via @stuartsierra)
  • Let me try that again: Don't be a framework. Be a library. In #Clojure we finally have a language which can scale composition. Let's use it. (via @ brentonashworth) -- Word!
That's it? Yes. Slow day today. You guys must be having working a lot instead of tweeting!

Today in the Intertweets (Feb 18th Ed)

  • Multiple branches for #Clojure API documentation. Great. (here, via @handraiser) -- You can get the doco for both 1.1 and master branches now.
  • Tomorrow at the National Capital Area #Clojure Group I'll be giving away a few e-copies of @chrishouser's book (here, via @fogus) -- Thusday Feb 18 at Reston, VA. Be there or be square!
  • wrappers for neo4j: java, python , ruby clojure, scala, php (here, via @yokofakun) -- Neo4j is an open source graph database. It just released 1.0 after ten (TEN!) years of development, and it comes with a Clojure wrapper for all us to play. The linked article is a short intro to neo4j
  • Managing namespaces (here, via @jneira) -- This article is about hacking the namespaces system in clojure to make it more manageable for large projects. One issue, for example, is that when you use (ns... :use ...) then you are effectively importing all the symbols from the 'used' package to your namespace. What if tomorrow that package adds another symbol? Will it conflict with one of your own symbols? This and other issues make the (ns... ) constructs in the code to be quite complex. But what if you have many namespaces? Then managing the (ns...) constructs can get quite time consuming and error prone. The author proposes a solution and makes its implementation available here (can also be found at clojars.org).
  • Incanter and generalized linear models (here, via @algoriffic) -- how to implement the  Generalized Linear Model in Incanter with Clojure.
  • I just uploaded the slides from my #Clojure talk in Berlin. Next "Berlin Lispers Meetup" on March, 3rd! Be there! (here, via @smartrevolution) -- Under this unassuming tweet lies a presentation named "How a Clojure pet project turned into a full-blown cloud-computing web-app". This is a very detailed presentation that summarizes freitheit.com's experience with using Clojure as a development language for a production application. A lot of wisdom made it into this presentation.
  • net-eval, a dead simple distributed computing for clojure (here, via @tbatchelli) -- An easy and simple way to send jobs to be executed on other remote 'clojure machines', from the very creative blogger Nurullah Akkaya at nakkaya.com
  • 129 of the most recent 200 Clojure projects on Github use Leiningen (here, via @technomancy) -- I dream that one day all tweets will be like this one; first, a statement about the world and then, some clojure code to prove it! The author of Leiningen provides some clojure code to compute how many of the existing Clojure projects on github.com is using leiningen as a build system.

Today in the intertweets (Feb 16th Edition)

  • Clojure for Ruby Programmers talk is finally online! (here, via @stuarthalloway) -- If you are new to Clojure and come from the Ruby world you will find this talk by Stuart Halloway (author of "Programming Clojure") very helpful in getting into the Clojure groove.
  • Leiningen 1.1.0 is out. Thanks to all contributors! Now go build some Clojure (here, via @technomancy) -- Notable new features are the 'update' task that updates lein itself, the ability to exclude some of the transitive dependencies of a dependency and the ability to specify what gets AOT'd (Ahead of Time Compilation)... and a bunch of bugfixes. You can find the installation instructions here.
  • Cool enlive tutorial (here, via @tbatchelli) -- If you are planning on coding any application that produces HTML you should seriously take a look at Enlive. A very powerful functional templating framework. Now David Nolen (@swannodette) is putting together this tutorial for Enlive.
  • #Clojure gotcha: (some :x [{:x 1}]) is *not* the same as (some #{:x} [{:x 1}]) (via @fogus) -- No? <scratches head\>
  • Just pushed the web site for Seajure, the ironically-badly-named Seattle Clojure Group: http://seajure.technomancy.us (via @technomancy) -- So this Seattle thing got formal now :) Meetings every first Thursday at 7pm.

Today in the Intertweets (Feb 15th Ed)

  • Preparing for #Clojure support beyond the #lisp REPL in MCLIDE. (via @MCLIDE) -- it looks like MCLIDE is serious about Clojure :)
  • Episode 11 is up - Infinite Sequences (here, via @fulldisclojure) -- Sean Devlin introduces the use of infinite sequences in Clojure as a way to abstract infinite computations, and showing how Clojure deals with these infinite sequences possible by deferring the computation of each element in the sequence until it is actually used.
  • Google App Engine + Clojure (here, via @valvallow) -- A nice compendium of links to articles and tutorials about writing Google App Engine apps in Clojure.
  • #clojure contrib.sql with postgresql and its type mismatch "problem (here, via @schipplock) -- If you are planning on using contrib.sql you will find this article interesting. Beyond the issues with Postgres the article shows ways in which you can get around different database quirks.
  • #Clojure #cell - new feature is been discussed this very moment on #irc (here, via @neotyk) -- Well, not at this moment anymore, but it was discussed nonetheless. "have been working on a model that puts transient use into a new reference type" (Rich Hickey). We shall call it a 'Cell'; only until a better name is found. This is just at inception level, so there will surely be a lot of thinking around this new feature...
  • Let Over Reify. (via @fogus) -- Keep going... keep going... you left us all hanging there!

This weekend on the Intertweets (Feb 14th Ed)

  • Ah, now we're talking. Lego Mindstorms + Clojure (here, via @weakreference) -- Control your Lego Mindstorms NXT contraption via Clojure with this clojure wrapper to Robust, a java library to communicate to Lego Mindstorms.
  • My tribute to Steve Ballmer, demonstrating Clojure macros (here, via @LauJensen) -- In this very creative project, Lau Jensen provides an introduction to writing macros in clojure as a way to simplify interaction with Java. A fun article, even if you are already very familiar with macros :)
  • Google protocol buffers for clojure (here, via @stilkov) -- Protocol buffers are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data – think XML, but smaller, faster, and simpler. Now you have an easy way to use these protocol buffers directly from clojure.
  • The 1.0 release of #Incanter uses Clojure 1.1, and the master branch on Github has migrated to Clojure 1.2 (here, via @liebke) -- Congratulations!
  • Написал машинку Тьюринга на #Clojure (here, via @zahardzhan) -- Yes, I do now translate automatically all sort of tweets using Google Translate, but I'll tell you more about it later this week. In the meantime, this post reads "Posted a Turing Machine in Clojure". The code is short enough!

Today in the Intertweets (Feb 11th Ed)

  • Nothing but praise for the #clojure room on Freenode. Props to the #clojure community. (via @basilshkara) -- Indeed.
  • The #Devoxx 2009 #Clojure talk by Howard Lewis Ship is now available for free (here, via @Stephan007) -- A very good and extensive introduction to Clojure. If your friends or coworkers want to know what's the fuzz about Clojure, send them this video.
  • OSGi with Groovy, Clojure, and Scala (here, via @c_z) -- A video of the recent presentation from Matt Stine at the Lambda Lounge in St. Louis. The presentation is about using different languages in a OSGi environment. One of them is, of course, Clojure.
  • In response to "Why I love everything you hate about Java" (here, via @romanroe) -- Yesterday we mentioned this article about the perils of using high-level languages in a high-performance production environment. This article by Roman Roelofsen is a somewhat of a rebuttal to the cited article, but not of the need of the techniques mentioned in the original article; it is a rebuttal of the need of the Java/OOP boilerplate that the original author claims is inevitable. To prove the point, Roman provides a detailed step-by-step walk-through to building the same structures in the original article, but in Clojure. By using 'binding' it provides a nice way of performing convention-over-configuration. And by just using the functional aspects of Clojure provides code that is easily 'decorable. A very entertaining and educational read!
  • By the way, #clojure contrib.json has a pretty-printer now (here, via @stuartsierra)
  • New #katacast, String Calculator in Clojure by @t_crayford! (here, via @Katakasts) -- Ok. This is pretty fascinating (to me, at least). A Code Kata is a small exercise/problem to solve. A Katacast is a screencast of the solving of a Code Kata -- but no voice-over, just classical music! Anyway, @t_crayford presents this Katakast in which he solves the String Calculator Kata in Clojure using TDD as a development method. Watching this video is fascinating although you probably won't be able to see the code given the resolution of the video, but you will surely be able to see choreography between the two Emacs pages; the test and the code. EDIT: You can download the video from Vimeo and then you'll be able to read the code
  • My sides for next week's #cap_clug: "Data Sorcery with #Clojure & #Incanter: Introduction to Datasets & Charts" (here, via @liebke)
  • "first cut of generic vector implementation, supporting vectors of primitives" #clojure in master branch (here, via @chrishouser) -- Go take a look at that code :)
  • Parsing in Clojure via a Backtracking State Monad (here, via @hkrnws) -- This is the second article of a series by Andrew Brehaut about monads in Clojure. We mentioned the first article in the series yesterday. This one is about using backtracking monads to create combinatorial parsers. If you are new to monads, get a couple of Advils... you'll need them!

Today in the Intertweets (Feb 10th Ed)

  • CLiki : SLIME Features (here, via @jsuntheimer) -- If you are using Emacs+SLIME to work on your Clojure code (if you are using @technomancy's Emacs Starter Kit or ClojureX or any other packaged Clojure installer, then you are using Emacs+SLIME) then this might interest you. It is a short summary of all the features of SLIME.
  • A Simple Clojure IRC Client: The other night I was toying with the following script, I was going to thrash it but ... (here, via @lazycoderLinks) -- Yet another excellent article from nakkaya.com, and this time about creating an IRC client with only a few lines of Clojure.
  • Implementing a #Clojure counterpart to the slime/swank #RPC module, providing better compatibility with MCLIDE (here, via @MCLIDE) -- MCLide is an open source Macintosh IDE for Lisp. Works with many lisps, but not yet with Clojure.
    • #Clojure support in #MCLIDE is in the works. The remote REPL and more already works well (via @MCLIDE)
  • My first contribution to [Spanish] wikipedia (here, via @jneira) -- Now Clojure has a Spanish wikipedia page!
  • Clojure Hispano http://groups.google.com/group/clojure-hispano (via @ajlopez) -- The Spanish-speaking Clojure list was created quite a while ago, but just now it got its first message. I hope we'll see many more in the future!

Today in the Intertweets (Feb 9th Ed)

  • π in #Clojure: featuring lazy seqs, BigDecimal, thread local bindings and more! (here, via @tvachon) -- This article is about computing π with arbitrary precision. The article starts as a rather basic article about implementing a known algorithm in Clojure, but it quickly goes down the rabbit hole of precision and arithmetics in the JVM/Clojure world. A very interesting read since these issues can bite you any day!
  • rhickey: #Clojure was not built, and is not going to be built, by voting. (via @stuartsierra) -- Let's create a committee... no, an assembly, to discuss in which way we can bring consensus-based feature development into clojure. Maybe involve an ISO body? IEEE?. Kidding!
  • 'case' has been introduced in #clojure 1.2.0 (here, via @wmacgyver) -- Should be faster than 'cond' and 'condp'. Notice that the test clauses are not evaluated; they must be compile-time literals. Dispatch is constant-time (i.e. clauses are not considered sequentially).
  • "Welcome to the Machine": State monads in Clojure (here, via @kicauan) -- You need to have some understanding of what monads are and how they work in order to follow this article fully. The article explores the State monad in a step by step way, building the necessary tools to manipulate monads along the way. It helped me solidify my not-so-deep understanding of monads.
  • Giving some background on gen-class of #clojure (here, via @kotarak) - This article explains how to generate Java classes from Clojure and explains the rationale behind the mechanics of creating these classes. Knowing this background will make it easier for you to create classes in Clojure.

Today in the Intertweets (Feb 8th Ed)

  • Episode 10 is up - Intro to Macros (here, via @fulldisclojure) -- Sean Devlin produces another screen cast, this time covering Macros in clojure.
  • New TIOBE index: Scratch, Scala, Erlang and JavaFX Script on the way to top 20. Now where is my fav language Clojure? (here, via @mauritsrijk) -- Clojure doesn't even figure in the top 50. That means this year will be very exciting and we'll take the language into the top 20 :)
  • What are common conventions for working with namespaces in Clojure? (here, via @puredanger) -- Interesting question. The answers are of common sense, but only after you've read them.
  • Requiring all possible namespaces (here, via @jneira) -- Ever wanted to find the documentation for a function while at the REPL and found that you needed to 'require' the namespace in order for 'doc' to work? Well, here is a solution to 'require' all namespaces at once, so that this does not happen to you again.
  • We're also OSGi, I'd love to sprinkle some clojure but I don't think its OSGi safe yet, and its a much bigger mind shift (via @talios)
    • Not sure what "OSGi safe" is, but the clojure/OSGi combination appear to work for some definition of that (here, via @cemerick)
    • Clojure has loaded classes using the context classloader for some time now (via @cemerick)
  • Clojure app on Google App Engine (here, via @sthuebner) -- The guys at freitheit.com (proud funders of Clojure) have this AI based personal assistant written in clojure and up on Google App Engine.
  • I blogged about factors that made me choose #clojure as my replacement for python (here, via @brehaut) -- It's nice to see Clojure from a pythonista's eyes. Sometimes we take some things for granted while working in Clojure.
  • Why I love everything you hate about Java (here, via @emcconne_reads) -- This is tangentially related to Clojure; it is more of a critique on higher level languages in a high-performance production environment. It argues that having the fine-grained level of control that Java provides you is key to manage high performance in large scale systems. Interesting read if you are planning on building a large system in Clojure.

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:
[clj] user=> (macroexpand-all '(->r c (+ _ 32) (* 1.8 _))) (* 1.8 (+ c 32)) [/clj]
  • 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 [caption id="" align="alignnone" width="400" caption="Clojure+Arduino Etch-a-sketch"]Clojure+Arduino Etch-a-sketch[/caption]
    • 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:
    [clj]; 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" )) [/clj]

    This weekend in the Intertweets (Jan 31st Ed)

    • Rich Hickey on Clojure in Clojure (here, via @superpants5000) -- This is a video recorded during the first meet-up of the NYC clojure user group, in which Rich is discussing the philosophy and motives behind Clojure in Clojure. Unfortunately the video cuts off because of battery issues with the camera.
    [vimeo 9090935]
    • Scala, JRuby, Groovy, Clojure: JVM-Sprachen mit Potenzial (here, via@JAXenter_News) -- The readers of JAX enter magazine in Germany have voted about which JVM-based languages have most potential. The tally is Scala (31%), JRuby (26%), Groovy (19%) and Clojure (15%). The rest of the languages are far behind, the next one being Jython at 3%.
    • Cool, a talk on the #clojure programming language next tuesday evening in Berlin (here, via @pholdings) -- If you are near Berlin next Tuesday Feb 2nd, there is a clojure talk there in the Berlin Lispers Meetup (see link for details)
    • la #clojure plugin for #intellij 9.0.1 is now available! (via @wmacgyver) -- Finally!
    • My latest project is on github: Rincanter: R, Clojure, Incanter in the same REPL (here, via @jolby) -- From the author: "Rincanter is a clojure/incanter wrapper around the rosuda JRIEngine Java/R bridge. The hope is to allow easy access to an embedded R engine from incanter. It also offers translation between clojure/incanter datatypes and R datatypes such as R dataframe to incanter dataset."
    • Nice, there's webmachine-esque and content-negotiation libs for compojure already (via @chrishouser) -- Nice to see how the Compojure ecosystem is growing :)
    • Philly's Emerging Technologies for the Enterprise Conference just added: Case Study in Using #Clojure #AMQP #Chef #Cucumber #JRuby (here, via @jennrapp) -- The talk sounds interesting. There is also a talk from Rich Hickey himself "Clojure's Approach to State and Identity" :)
    • Rewrote #clojure contrib.json again with Protocols (here, via @stuartsierra) -- Good to see the new features of Clojure 1.2 being used!
    • New little blog post: The Joy of Clojure, my perspective (here, via @chrishouser) -- Why "The Joy of Clojure" is a different book? Because the book is not about programming in Clojure, but about Clojure the language. Just like how "On Lisp" relates to Common Lisp.
    • Episode 9 is up (here, via @fulldisclojure) -- Sean Devlin's new screencast explains why the parenthesis in any lisp are such a key part of the language. For that he explores how in Clojure, code is data, and so a Clojure program is just an elaborate data structure. Use this video to convince your friends!
    By the way, you can still buy the alpha e-books of  "Clojure in Action" and "The Joy of Clojure" at a 40% discount with the code "f440". The purchase of the alpha e-book gives you rights to own the final book, so don't hesitate!

      Today in the Intertweets (Jan 28th Ed)

      • had a good time presenting on #clojure concurrency last night for #dcaltnet. The slides and code are at (here, via @craigandera) -- Craig Andera, a .NET expert, presented clojure's concurrency model at the DC Area ALT.NET group. Anecdotal evidence on Twitter shows that he converted some listeners  :)
      • Next HDLUG meeting is right around the corner! Feb 2 at 6:30 pm CST at the Microsoft office! (here, via @hdlug) -- If you live in the Houston area, you can learn about Clojure next Tuesday at the Houton Dynamic Language User Group that meets at Microsoft's offices.
      • clojure map literal puzzler (here, via @bradfordcross) -- About the puzzling effects of a rather obscure bug.
      • Clojuresque 1.3.0 is out! (here, via @kotarak) -- Clojuresque is a plugin for building Clojure projects with Gradle. Now it can create überjars, similar to Leiningen, amongst other goodies.
      • If you're going to be around SF next week, you should definitely come to the bay area clojure meetup @ WeatherBill (here, via @tvachon) -- If you're going, say 'Hi!', since I'll be there too :)
      • my new clojure emacs setup, thanks to @technomancy and @danlarkin (here, via @bradfordcross) -- Bradford Cross downgraded from @technomancy's emacs-starter-kit setup to a leaner setup, and shares his config files and the setup instructions.
      • 40% on all MEAPs with code 'f440' at checkout http://manning.com offer expires Feb 4th (via @aalmiray) -- You can now get the beta (a.k.a. MEAP) version of both "Clojure in Action" and "The Joy of Clojure" at a 40% discount.

      Today in the Intertweets (Jan 27th Ed)

      • First #clojure NYC meetup is tomorrow! (here, via @stuartsierra) -- From now on I'll try to keep everyone updated on what's going on in the meetups/user groups around the world. Yay! more work for me! :) . Ah, don't get surprised if I try to join your meetup even if I don't live in the area. Anyway, the list of speakers is impressive, Rich Hickey, Stuart Sierra and Eric Thorsen (author of the Netbeans plugin Enclojure)
      • New Clojure Books in Progress (here, via @ckotso) -- At this point many of you are fully aware of the new upcoming Clojure books to be published by Manning: Clojure in Action and The Joy of Clojure. Manning runs an e-book beta program cold MEAP, by which you buy the e-book today and you get to download the book as it gets written. Rich Hickey publishes in his blog that now you can get them at a 35% discount, both ebook and print book (pre-order) by using the checkout code "clojure35". Do it!
      • New blogpost: Global Warming Vs Clojure - Heavy Computational combat! (here, via @LauJensen) -- Lau this time uses Clojure to try to reproduce some of the alarming results that some Climate Research scholars have been publicizing in the last decade (at least). One of the most controversial results is the "Hockey Stick" graph of global temperature. In the article Lau uses clojure to process the different temperature readings available since 1929, all on his laptop. To do that one cannot expect to load 50GB of raw data into memory, so he provides a solution for that.

      Today in the Intertweets (Jan 26th Ed)

      • Compile-time type-checking multimethods in #clojure (here, via @stuartsierra) -- Performing type checking at compile time could potentially speedup multimethod calls and order of magnitude, but only when the correct type can be inferred.
      • Lindenmayer system in Clojure (here, via @swannodette) -- Nurullah Akkaya, that blogs under nakkaya.com is on a roll. Here is a new article on how to build Lindernmayer systems in clojure. L-Systems can be used to create fractals. Somehow Nurullah makes difficult endeavours look simple!
      • Thanks Clojure. Every other JVM Languaje now sucks (via @omargomez) -- Word!
      Aaaaaand... that's it for today. Unfortunately, there are a lot of tweets in Japanese that I have no way to understand :(  --> Any Japanese speaking volunteer? EDIT: So all the Japanese chatter was related to the fact that @stuarthalloway's book has been translated to Japanese and published on this day, as evidenced by this Amazon.jp page. The cover of the Japanese version of the book is pretty nice (thanks @atosborne and @fogus)

      Today in the Intertweets (Jan 25th Ed)

      • Episode 8 is up (here, via @fulldisclojure) -- Next issue of the weekly screencast from @fulldisclojure. This time about how to use Leiningen, the new Clojure build system by @technomancy, clojars.org, the clojure library repository and autodoc, the documentation generator.
      [vimeo 8934942]
      • conjure - simple mocking and stubbing for Clojure unit-tests (here, via @amitrathore) -- title says it all :)
      • just pushed #clojure support for jclouds to #crane #aws #rackspace #vcloud #atmos #azure (here, via @jclouds) -- so now crane can work with many more cloud environments other than AWS: rackspace, vcloud, atmos, azure
      • In #Clojure vectors are functions of their indices (map '[a b c d e] [0 2 4]) => (a c e) (via @fogus) -- yet another example that Clojure is a language designed for twitter (i.e. 140 chars)
      • #clojure contrib 1.0.0 & 1.1.0 final releases are up! (zip files here and maven artifacts here, via @stuartsierra) -- clojure-contrib is now build using maven.
      • Having a nosy at @mattdw's #clojure based in-memory full text index system 'caponia' (here, via @brehaut)

      This weekend in the Intertweets (Jan 24th Ed)

      • De-chunkifying Sequences in Clojure (here, via @fogus) -- Clojure 1.1 introduced chunked sequences, which evaluate their elements in chunks of 32 at a time. Remember sequences are lazy, so if you ask for the first element of the sequence, for example, clojure will compute the first 32 elements, but then the next 31 calls would be instantaneous. The reason for this is performance when dealing with large chunks of data. But if you want the original one-element-at-a-time behavior of clojure 1.0, @fogus introduces us to 'seq1', a rough cut of the official tool to obtain one-element-at-a-time sequences.
      • Crazy smart discussion on #clojure IRC re extending transient/persistent semantics to POJOs (via @stuartsierra)
      • clojure channels (here, via @tebeka) -- This article is about a way to implement Go-style  channels in clojure
      • I feel like I could make a special Ruby superclass that makes all subclasses STM-strict a la Clojure. Useful? (via @headius) -- Charles Nutter (a.k.a. @headius) is a JRuby core developer, now looking at clojure for some nice inspiration.
        • And it's done, a JRuby extension that gives you transactional instance variables (a la Clojure STM) (here, via @headius)
      • For all the german #Clojure users: #clojure on Freenode. irc://irc.freenode.net/clojure.de It's small at the moment, but we will grow :) (via @The_Kenny)
      • I need a good (cheap) designer for a simple conference website for #clojure conj 2010 (plz) (via @dysinger) -- Clojure Conj 2010 conference is happening!
      • #clojure conference time and location being discussed. If you want to be heard, now is the time (here, via @wmacgyver) -- same as above... things are moving fast!
      • i love that the number one watched java project on github is another language, clojure. (here, via @binarydud) -- Wat!!?!
      • discovering Vijual, a graph layout engine conceptually similar to graphviz for clojure (here, via @rgaidot) -- the image below is self-explanatory...
      An example of a tree drawn by Vijual
      • JVM languages communites on Stack Overflow compared (here, via @dcsobral) -- Interesting that the clojure community is larger than the Haskell and Erlang ones, and just a tad smaller than the Scala and Groovy ones....
      • Posted the slides for my talk about Ring, the Clojure web app library (here, via @mmcgrana)
      • Practical Clojure from @Apress to be released May 21st? I thought it was coming out in Feb. A tad dissappointed (via @looselytyped) -- So now we know when the clojure book from Apress is going to be released. Discount coupons anyone?
      • 10 reasons to learn Clojure (or any other Lisp) (here, via @jneira)

      Today in the Intertweets (Jan 21st Ed)

      • Cool computer vision project, movement detection in just 100 lines of clojure with opencv! (here, via @RickMoynihan) -- Another interesting article from nakkaya.com on the use of Clojure and OpenCV to perform motion detection with a webcam.
      • First steps toward defining clojure-in-clojure (all caveats apply) (here, via @fogus)  -- Clojure in Clojure refers to writing a clojure compiler and runtime in Clojure (or as much of it as possible). The possibilities that this opens are just crazy.
      • Agents of swing ported from swing to #jwt with #clojure (here, via @Raphinou) --JWt is a widget-centric (a la destktop GUI) Java library for developing interactive web apps that can be deployed within standard Java Servlet containers. What the author did was adapt @stuartsierra's Agents of Swing application to work with JWt instead of Swing. The ease in which this porting was done validates @stuartsierra's design.
      • Flightcaster (YC S09) Wins the Amazon Payments Prize (here, via @rberger) -- Fligtcaster.com uses clojure as part of their arsenal. Good to see clojure getting more spotlight! Congrats Flightcaster!

      Clojure Conj 2010 conference in the works!

      UPDATE: It looks like the final name for the conference will be Clojure Conj 2010, as per Tim Dysinger's comment below. ----- I just came back from a special meetup at the Bay Area Clojure User Group (BAJUG) with Mark McGranaghan as the guest presenter. Amit Rathore (BAJUG's organizer and author of the upcoming "Clojure in Action" book) announced that there were serious talks with various noted clojurians about a Clojure Conference to be held sometime after this summer! The plan is to host it somewhere in the Bay Area, and it seems that there are already talks about sponsorship. I will post more about it as soon as more details are confirmed, but for the time being, if you have any suggestions, ideas or papers that you want to present, please email them to Amit Rathore at his gmail account. (yeah, his email is not that hard to figure out: firstlast@gmail.com, no spaces) Good times! I hope I'll see you all there!

      Today in the Intertweets (Jan 20th Ed)

      • Anyone interested in the JVMOne idea, please leave comments here (via @michaelgalpin) -- This is an interesting idea to produce an alternate JavaOne conference focused on the JVM itself and all the languages that run on it. It looks serious :) Please send your comments!
      • Template to create a GAJ app in Clojure (here, via @lispcoder) -- Now you don't have an excuse anymore for not creating Clojure apps for Google App Engine. Here it is a template; you just need to fill in the blanks with your awesome clojure code and you're good to go! Ah, it also builds using lein and clojars.
      • Good answer on why I should learn Clojure (here, via @mraible) -- "So, Clojure 'wins' or is 'worth trying' because of the experience of using it, not because of some particular bullet point, which all languages feel like they all have." The author creates somewhat of a circular logic response: you can only answer the question "why should I learn clojure?" by learning clojure, which makes total sense once you've learned Clojure.
      • Mashups Using Clojure (here, via @catch_down) -- Another engaging and approchable article from nakkaya.com, this time not about controlling Arduino via clojure, but about creating mashup applications in Clojure. The final application is for mapping earthquake data over Google Maps.
      • Help me simplify the #clojure contrib build with #Maven (here, via @stuartsierra) --  Stuart Sierra is moving the build script for clojure-contrib from Ant to Maven. Hopefully no religious wars will start at this time. Don't get me wrong, I prefer Maven too...
      • How to get La Clojure working again (here, via @gstamp) -- so here is how you make La Clojure plugin work again after upgrading to IntelliJ IDEA 9.0.1. The nature of the solution just highlights how absurd it is that we have this recurring problem of La Clojure getting out of sync with IDEA's releases.
      • Fantastic, @tomfaulhaber's Autodoc, html doc generator for Clojure, is now generally available! (here, via @liebke) -- "Autodoc is a system for generating HTML documentation for Clojure projects. It is used to create the up-to-the minute published API documentation for Clojure itself, the Clojure-contrib library, and the statistics package, Incanter." We've all  used the fruits of this cool application. Many many times.
      • I've posted my #leiningen plugin for building #hadoop job jars. Feedback would be awesome! (here, via @xefyr) -- The plugin creates haddop-compatible jar files.

      Today in the Intertweets (Jan 19th Ed)

      • Clojure refactoring: flattening reduces (here, via @jneira) -- Another  instance clojure sorcery from @cgrand. Go check it out, as it is hard to summarize such a short but interesting blog post!
      • #Clojure has a #Maven repository! http://build.clojure.org/releases and http://build.clojure.org/snapshots (via @stuartsierra)
      • Suh-WEET CLojureMVC (here, via @lazycoder) -- This is a clojure wrapper to Spring MVC, making it easier to use its features from Clojure.
      • Agony of hadoop/clojure logging and how to fix it (here, via @bradfordcross) -- Interesting post about the difficulties of obtaining logging data from clojure code running in different environments. *out* means a different thing depending on where and how you run your clojure code. The article refers to the difficulties of obtaining Hadoop's log messages in the REPL when using emacs-slime-swank. Check out the comments section too, as they propose alternative solutions.
      • "Clojure 1.1 and Beyond" slides from @fogus' talk at #cap_clug meetup (here, via @liebke) -- A nice summary of the new features of Clojure 1.1 and what's probably coming for the next release.
      • ug, upgraded to #intellij 9.0.1, la #clojure plugin no longer compatible. Hope new version comes out soon. #scala still works though. (via @wmcagyver) -- Don't update to 9.0.1 until a new plugin build for "La Clojure" is available. I really wonder why this happens so often... the IDEA plugin APIs are frozen now so the plugins should be forward compatible for all 9.x versions of IDEA :(
      • N-element tuples with type declarations (here, via @stuartsierra) -- A few possible implementations of N-tuples in Clojure. With micr0-benchmarks! Although the last one at the time of writing this, by Rich Hickey, has no benchmarks yet.

      Today in the Intertweets (Jan 18th Ed)

      • Ideone.com : Online IDE & Debugging Tool. You can run C#, Clojure, COBOL, Common Lisp, and +more (here, via @ajlopez) -- It's both a way to share code snippets and also an IDE. Pretty cool indeed!
      • Just gone public with a little open-sourcery - Couverjure, a Cocoa bridge for Clojure (here, via @MarkAllerton) -- "I had this crazy idea that Clojure might play nicer with Cocoa than Java did, and wanted to see if I was right." According to the author, the code is still in "proof-of-concept" stage. Still, if you want to see how it looks today, here is a snippet.
      • new #enclojure is out with #clojure 1.1 support and #netbeans 6.8. Works great so far! (here, via @prpatel) -- Netbeans has become a very fast and usable multi-language IDE lately. Enclojure is a very well rounded plugin for Netbeans to work with Clojure code. Their REPL support is quite unique and smart. You will need to grab the file at the top of the downloads page (named "enclojure-plugin-2010-jan.nbm")
      • Just finished hacking GridFS support into Clojure's MongoDB driver (here, via @sanityinc) -- GridFS adds support for very large objects into MongoDB. The clojure driver for MongoDB (congomongo) keeps getting more and more functionality.

      This weekend in the Intertweets (Jan 17th Ed)

      • A minimal ImageJ Plugin in Clojure: image inversion (with Java comparison) (here, via @fredmn) -- ImageJ is a java library for Image Processing and Analysis. It this post the author shows how to create a plugin for ImageJ in clojure and compares it to an implementation in Java. Of course the initial clojure incarnation is slow compared to java, but some optimization in the clojure code brings it up to par with Java, while still being more readable and reusable.
      • T-Shirts for all!!!
        • "have more fn" -- it's a shirt! Thanks for the idea @jeremey Proceeds go to Clojure dev: @richhickey (here, via @chrishouser)
        • The #Incanter t-shirt, for #Clojure-loving data geeks (here, via @liebke)
      • Keyword Arguments in #Clojure, the Right Way (here, via @handraiser) -- In this article @stuartsierra explores the different ways to pass optional named parameters to a function. This is a good exploration of the destructuring and binding capabilities of clojure.
      • Graph Structured Stacks in Clojure (here, via @cgrand) -- A proposal on how to represent GSS in clojure, and an open question: is there a better way?
      • New name for Incanter blog, "Data Sorcery with Clojure". New URL http://data-sorcery.org (http://incanter-blog.org still works too) (via @liebke)
      • How Clojure improved my Groovy (here, via @aalmiray) -- So learning lisp makes you a better coder overall? Where have I heard that before?
      • Starting #clojure? Experienced Common Lisp developer Clive Tong is writing up his learning experiences (here, via @MarkDalgarno) -- Great articles, but they need to be in a better blogging platform, reading the code this way hurts my eyes...
      • Just posted episode 7 -- Abstraction Grafting (here, via @fulldisclojure) -- Yet another excellent video from Sean Devlin, this time it shows how to build a powerful abstraction to handle all the different time objects that exists inside Java in a unified and transparent manner. Multi-methods help a lot here. This very video can come very handy when trying to explain to others that you don't need OO to create extensible and reusable libraries with simple interfaces.

      Today in the Intertweets (Jan 14th Ed)

      • Good video discussing point-free style, partial function application and composition in #clojure (here, via @RickMoynihan) -- If you are new to functional programming this is a good tutorial that shows what you can do with higher-level functions.
      • The Joy of Clojure MEAP by @fogus and @chrishouser is now available (here, via @opeckojo) -- Finally!!!
        • New MEAP: Joy of Clojure by @fogus and Chris Houser - 37% off with our weekly mailer code (j1337) (via @ManningBooks) -- So there! use the code to get "The Joy of Clojure" with a nice discount.
      • Fleet — Clojure template engine - Why? Because — I wanted template engine for Clojure — close to Clojure (here, via @flamefork) -- Fleet is a HTML template engine for clojure for those who don't want to use HTML DSLs in clojure (like Enlive, for example)
      • I just released dgraph, a dependency graph library for #Clojure. Reduce the pain of UI programming (here, via @vetoshev) -- "dgraph aims to offer a (mostly) pure functional data structure whose nodes behave like cells in a spreadsheet, i.e., they form a dependency graph", and "This data structure has many uses. In particular, it helps eliminate repeated clutter in UI code where the state of a display element may depend on the state of several other elements".
      • @jneira pointed me at repleet by @SpatialDefenter, a twitter account that will evaluate your tweets with Clojure code if you  the form of  "d repleet /clojure (reduce + 1 [2 3])". This is just a proxy to LotREPLs, which we featured here some time ago and is a web based REPL for many JVM based languages. The proxy is static, so I guess you can't define a function in one tweet and expect to find it when it evaluates the next tweet.

      Today in the Intertweets (Jan 13th Ed)

      • Here's Polyglot Maven build: It's huge because it contains the Clojure, Groovy and HUGE Scala libs (here, via @jvanzyl) -- If you don't already know what this is about, check out this page. Yeah, creating Maven POMs programmatically with clojure. Pretty neat, huh?
      • #Clojure promise/deliver in < 140 (def x (promise)) (.start (Thread. #(do (Thread/sleep 5000) (deliver x "goo")))) @x ;wait 5 sec (via @fogus) -- Ineed clojure is a terse language...
      • I'm disappointed that #clojure doesn't do laundry or the dishes (via @jclouds) -- I am sure Emacs does that for you.
      • Evaluate Clojure in Google Wave: clojurebot@appspot.com (here, via @gmaster1440) -- So if you add clojure@appspot in your wave... err... whatever, then it can evaluate clojure code for you.

      Today in the Intertweets (Jan 12th Ed)

      • My #Clojure #Hadoop lib version 1.1.0 (here, via @stuartsierra) -- List of changes here. This fixes some missing pieces in the first release, and adds some more Hadoop configuration options. Download it here.
      • Face recognition with clojure and OpenCV. Sweet! (here, via @jolby) -- OpenCV is a computer vision library. Processing, a programming language to manipulate and generate images, has a library that wraps OpenCV so it can be called from Java. This article shows how to integrate OpenCV into Clojure via Processing. This I call a fun project!
      • #clojure and #jclouds via #crane: coming soon to a theater near you (via @jclouds) -- JClouds is a framework that helps you get started in the cloud with Java apps and crane is a clojure-based solution for provisioning servers in EC2 and configuring Hadoop clousters. So we'll see what comes out of it!
      • Why macros are cool (here, via @kotarak) -- The title is self-explanatory, but this article also touches on an issue that more and more clojurians are finding in the field. AOT compiled code that won't run with newer versions of Clojure.
      • news about the awaited book from @fogus and @chouser (here, via @jneira) -- You can't buy the MEAP version of "The Joy of Clojure" yet, but the site at Manning's is up and so is also the book's own site: joyofclojure.com

      Today in the Intertweets (Jan 11th Ed)

      • Yay! The #clojure "master" branch now has deftype, defprotocol etc. And look, there's 1.2 off in the hazy distance... (via @chrishouser) -- So there! If you pull the latest from clojure's master branch at github you'll get the current code for 1.2... no more 1.1. Exciting to see things move this fast!
      • How to feed Reddit to Hadoop (here, via @LauJensen) -- ... with clojure, of course! All the cool kids now use clojure with hadoop/cascading, and for a reason!, as clojure it makes life much much easier in these environments than, for example, Java. This article shows how to create a job in Clojure.
      • Posted the slides from my recent FleetDB talk (here, via @mmcgrana) -- FleetDB is a schema-free database build on clojure that has been released very recently, and his author just released the slides of his presentation at the Bay Are Clojure User Group (that I very unfortunately missed because of a bad bug that knocked me and my family out). These slides are fairly self-explanatory, so you should be able to follow them up.
      • Clojure.core/str makes sense now (here, via @neotyk) -- If you're starting with Clojure, this article is for you. The author, a committer at the Project Grizzly, is learning Clojure by reading and trying to understand some of clojure's source code. This article explains this process with an example, clojure.core/str.

      This weekend in the Intertweets (Jan 10th Ed)

      • Want to compile with a different JDK than maven runs with? I just added maven-toolchains-plugin support to the #clojure #maven plugin (here, via @talios)
      • Just did a fresh clojure setup on a couple new machines. blogged the Clojure Quick Start Guide (here, via @bradfordcross) -- mainly for Debian Linux users. Short and sweet.
      • Clojure now available in Ubuntu repos  (here, via @hkrnws) -- Neat! That will provide more exposure to Clojure :)
      • Common programming mistakes for Clojure developers to avoid (here, via @fogus) -- This is a thread on StackOverflow.com related to the following question: "What are some common mistakes made by Clojure developers, and how can we avoid them?"... some of the answers might surprise you!
      • Brrr - it's cold in CO. Makes me wish that I was a Clojure developer, wrapped in those nice, warm, insulating layers of ((((()))))... (via @scottdavis99) -- They do make it warmer. And so do these [[]], and these }...
      • Sane web development with Compojure, Jetty, and Maven (here, via @cemerick) -- Maven haters: move along... still here? well, the end result, if you follow the indications of this article, is that your web application will redeploy and pick up your changes in the source files automatically when you change them.
      • #Clojure agents with #Swing GUI (here, via @stuartsierra) -- Although Swing is not thread safe (i.e. all UI code must be run in a single thread,) Java developers have some facilities to execute their code in separated threads from the UI one. These facilities might be awkward to use in Clojure so this article explores how to use Clojure Agents instead for this purpose.
      • "Scala occupies a space between Haskell and Java in roughly the same sense as Clojure sits between Scheme and Java" - Martin Odersky (via @debasishg) -- ...
      • First daughter had Programming Ruby read to her as an infant. This one gets Programming Clojure. Let's see the difference. (via @redinger) -- is it bad if I predict that the first daughter will not be very functional?

      Today in the Intertweets (Dec 6th Ed)

      • Swing Temperature Converter in #Clojure (here, via @stuartsierra) -- another article in a series on how to write Swing applications in Clojure. This is about building tad more convoluted application, a Temperature Converter, similar to the one from the Java Swing tutorials, which needs the creation of an Event Listener class via Clojure's 'proxy'.
      • Sources say "don't know when it'll show up on the site, but shouldn't take long" (via @chrishouser) -- This is about the upcoming book titled "The Joy of Clojure" that will be published as MEAP (think 'alpha') sometime soon!
      • I finally got my project off the ground at http://getclojure.org/ — #clojure folk, please submit examples if you have a minute (here, via @devn) -- This website strives to collect user-friendly examples for all the functions in Clojure core, and requires volunteers to provide those examples. May I suggest that something similar is done for Clojure-contrib?
      • Prevalent Persistence for Clojure (here, via @kicuauan) -- This is a new project that provides a "Prevalent System" type of data persistence to Clojure. In this kind of systems the database exists in-memory and all updates and queries are also executed on the in-memory data, but in parallel all changes to in-memory database are also committed to a log file for later recovery. These kinds of databases are supposed to be very fast!

      Today in the Intertweets (Jan 5th Ed)

      • Deploying Clojure websites (here, via @kicauan) -- This new article by @briancarper describes a method to put Clojure/Compojure websites in production. It is very detailed, and provides a lot of good insight on how to put together a nice development workflow, from code to production.
      • I prefer Clojure to Scala because I'm conceptually far more interested in a pragmatic Lisp than a functional Java (via @bguthrie) -- I guess this sums it all! Nice use of 140 characters.
      • Side by side: Python, Common Lisp, Clojure: Bayesian spam filter (here, via @tek_news) -- This article from last November is about the re-implementation in Clojure of the Common Lisp implementation of a Bayesian filter found in the book "Practical Common Lisp". This CL implementation is in turn based on a Python Bayesian filter. It is interesting to see how CL and Clojure differ in subtle but significant ways, and also how deep Clojure-Contrib is. The article is relevant today because the full source code for the Bayesian filter in Clojure by @xgavin has been released
      • More #Clojure #Swing fun, this time with layouts! (here, via @stuartsierra) -- and macros too!

      Today in the Intertweets (Dec 4th Ed)

      • Just released episode 5 on expression threading (here, via @fulldisclojure) -- Another great episode of this series of videos on the new features in Clojure 1.1. This one is about the '->' and '->>' threading macros.
      • I've just released FleetDB, a schema-free database implemented in Clojure and optimized for agile development : http://fleetdb.org (here, via @mmcgrana) -- Schema-free, in memory, declarative queries, JSON and a lot more goodies. The DB uses persistent data structures (a la Clojure) and hence reads can happen in parallel with writes. Writes are sequenced. Being a persistent data structure, once you get your version of the database, it will never change; this is therefore an interesting semantic difference with other more mainstream databases. Also provides an append-only log so you can rebuild the DB if the system fails. Can you say promising? I do :)
      • cloduino - a Clojure API for the Firmata Protocol (here, via @grantmichaels) -- Firmata is a protocol to control Arduino devices (should I say contraptions?) via the serial protocol. Now you can control Arduino devices via Clojure :) by downloading cloudino from here.
      • Anatomy of a Flawed Clojure vs. Scala LOC Comparison (here, via @codemonkeyism) -- This is a critique of @laujensen's "Clojure vs. Ruby & Scala - Transient Newsgroups"  article from last Dec 13rd, which has been heavily reposted lately. Lau's article provides a non-scientific comparison of the cited programming languages based three straightforward implementations of the same program in Clojure, Scala and Ruby. There are two main measures used for this comparison: performance and lines of code (LOC). This critique states that comparing LOC is dangerous, as it is difficult to make it so that the results are meaningful and agreeable, and that comparing performance on JVM languages is also a difficult task. Let's just say that the Scala camp was not happy with Lau's article being retweeted...
      • Clojure is as impure as Scala is (here, via @jneira) -- this tweet refers to an article titled "Pragmatics of Impurity", by @debasishg, which discusses the design decisions that some programming language authors make in order to have their languages be efficient and also leverage some of the benefits of purely functional languages. A great read!
      • Clojure Contrib 1.0.0 RC1 available (here, via @fogus)

      This weekend in the Intertweets (Dec 3rd Ed)

      • blogjure is pretty clever: string template, clojure & hibernate (here, via @javame) -- Cool, another blogging system in clojure, it has also a neat  MVC implementation, but the Hibernate stuff is in Java.
      • 2 new posts on #Clojure + #Swing (here and here, via @stuartsierra) -- Titled "First Steps with Clojure & Swing" and "Swing into Actions with Clojure", the articles are a gentle introduction to writing Swing applications with Clojure interactively in the REPL.
      • Another post. I'm either on fire or really bored. #Clojure #Swing (here, via @stuartsierra) -- This one titled "doto Swing with Clojure" shows how using the 'doto' macro in Clojure simplifies immensely writing Swing applications. It also shows how to write a macro that will further simplify the creation of actions and the wiring of them with the listeners.
      • obligatory Y combinator and fib in #clojure (here, via @superpants5000) -- Not this "Y Combinator", but this one. Me? Still working the monads...
      • Working with data sets in #Clojure with #Incanter and #MongoDB (here, via @liebke) -- Ah! so many cool hash-tags in one single tweet! The post by the author of Incanter explains how the new dataset functionality recently added to Incanter works, and also shows how to use MongoDB as a backend data store for such datasets.
      • Clojure and Compojure to the rescue, again (here, via @antest) -- The author recently coded a full website using Clojure, Compojure and MySQL (and some JavaScript). In this article he shares some of the findings that he came across while building such site. It's pretty comprehensive and insightful, even if you are not thinking about building a website in Clojure.
      • Gui REPL for Clojure (here, via @ajlopez) -- Sounds interesting. Screenshots anyone? Too early? Well, that's the Intertweets for you ;)
      • defmulti and defmethod in #scala? (here, via @mitchblevins) -- The article goes on to explain the differences between method dispatching in Clojure and Scala, and how one would emulate Clojure's multimethods in Scala. IMHO this highlights the importance of having a language that can be extended in a way that is not awkward (i.e. via macros). Worth a read, and then go and donate some more to Rich Hickey's project since he is saving us from such pains...
      • Working with Java Arrays - Clojure (here, via @hkrnws) -- This article explains how to transform Clojure data structures into java arrays, showing how Clojure has already  pretty complex functions for the job that might not be all that well known.

      Today in the Intertweets (Jan 1st Ed)

      Happy New Year!!! Woo hoo!!! Now, let's get down to business:
      • Clojure 1.1 released!!! (here, via @fogus) -- That was a nice pre-new year's surprise :) You can see what's new in the release notes, and also Sean Devlin is putting together a series of short screencasts explaining in detail the most significant new features. Happy coding everyone!!!
      • Scotch, chocolate, and Clojure. (via @abscondment) -- This one really hit some spot with me. I'd say Chivas Regal with 85% dark chocolate and Clojure 1.1... I take suggestions though!
      • Solving cryptograms in Clojure (here, via @abscondment) -- Ah, so Scotch and chocolate (see item right before this one) will bring you to try to solve cryptograms in Clojure using a modified version of Peter Norvig's Sudoku Solver, by adapting its constraint propagation algorithm. Here is the result: cryptogram.clj ... I must have not mixed the right amounts of Scotch and chocolate, since my results cannot be posted online ;)
      • Proposal for clojure.io from @technomancy (here, via @fogus) -- @technomancy proposes moving I/O related stuff from contrib to the clojure namespace itself (clojure.io). The reason being that IO might be one of the top reasons for using contrib in the first place. @stuartsierra indicated that Rich Hickey has already some plans on building a functional, stream-based and thread-safe IO library. The original thread is still active, so feel free to provide your insights.
      • Griffon clojure 0.4 plugin released, upgraded to Clojure 1.1 (here, via @aalmiray) -- The Clojure plugin enables compiling and running Clojure code on your Griffon application. Griffon is a Grails like application framework (MVC, convention over configuration, etc..) for developing desktop applications in Groovy.
      • Irresponsibly releasing swank-clojure 1.1.0 (here, via @technomancy) -- If you're using Emacs with SLIME, then you're using swank-clojure... so this is a big deal. Looks like it is mainly about bug fixes.

      Today in the Intertweets (Dec 30th Ed)

      Although the intertweets have been particularly busy today, it was mostly about tweets with the #code2009 hash in which developers outlined the languages they have programmed this year. I have to say, there are many people out there that are trying Clojure! In any case, here are some interesting tweets :
      • Polyglot Folding (Ruby, Clojure, Scala) - fold in a nutshell It’s common to use the fold family of higher... (here, via @superpants5000) -- A rather deep dive on how folding works in the three listed languages. Interesting to see the code examples in Ruby and Scala and reminisce of all those developers saying that parens make Clojure code unreadable...
      • All my methods take 316 arguments, and I like it that way (here, via @cemerick) -- Not strictly about Clojure, the article proposes an interesting twist to the discussion Imperative vs. Functional programming. The twist is to look at imperative code considering that for each function or method call, you are also passing all the global variables as implicit parameters to such function or method; this is what is actually happening. Would you be OK with signatures with 316 parameters?
      • Adia: A Week With #Clojure And #MongoDB (here, via @zef) -- Zef introduces Adia, his new web development framework based on Clojure/Compojure and MongoDB. The article introduces both MongoDB and Clojure and explains the rationale behind Adia. The framework includes a way to define Entities (for the DB) and some page abstractions that provide some glue code to reference DB entities. There is also a wiki made with Adia that you can take a look at to see how web applications can be build with it.
      Folks, it has been an awesome year. I am glad I started disclojure.org and it has been a lot of fun so far. The Clojure community is friendly, smart, creative and very very helpful. Following this community is a privilege for me that I enjoy very much. I also really appreciated your comments, suggestions and encouragement. Thank you all! I won't be writing tomorrow (since most of you will not --or should not-- be checking out this site), so I hope I will see you all in 2010. I wish you all a happy 2010! Toni. PS: Yeah, I know, not everyone celebrates the New Year tomorrow... but I do, and my whole family is visiting tomorrow after flying halfway through the globe ;)

      Today in the Intertweets (Dec 29th Ed)

      • Clojure 1.1 RC3 now available! (here, via @fogus)
      • Introducting, Planet Clojure - http://planet.clojure.in/ If you have a Clojure blog, let me know (here, via @ghoseb) -- Yes, I do have a Clojure blog now that you're asking... disclojure.org. Thanks for putting it together, you just made everyone's life easier!
      • Tiobe Programming Community Index -- Should I be bettering myself in C# instead of #Clojure & #Scala? ;-) (here, via @unfo) -- Hmmm... there are plenty of Clojure job openings out there so no, no C# for you. I don't know what to say about Scala though :D
      • "The Joy of Clojure"  (here, via @fogus) -- So that's the title for the second Manning book on Clojure, this one authored by @fogus himself and @chrishouser. Hoping to find it in MEAP soon!
      • How to enhance Clojure-modes source highlighting using Enlive (VID) (here, via @LauJensen) -- Interesting use of @cgrand's Enlive to pull the list of clojure function names from clojure.org and then add those names to Emacs' clojure-mode, so that syntax highlighting in Emacs now works correctly by highlighting every standard clojure function.

      Today in the Intertweets (Dec 28th Ed)

      • New blogpost/screencast on Concurrency Pitfalls (here, via @LauJensen) -- Lau explores the need of better concurrency management tools in programming languages, comparing Python and Clojure in a simple example.
      • Clojuresque 1.2.0 now available via clojars. Hmm.. the ant scp task doesn't work with clojars? (via @kotarak)
      • simple framework to run Selenium tests in parallel with Clojure (here, via @saucelabs) -- Deceptively simple but quite powerful way of running many selenium tests in parallel against your test machine
      • Built VimClojure & got a Clojure REPL in a Vim buffer. Tip: your Clojure source / classes must be on Nailgun's CLASSPATH! (via @kevin_noonan) -- Thanks for the tip.

      This weekend in the Intertweets (Dec 27th Ed)

      • Seriously checking Clojure. To run it on Mac OSX SL use ClojureX. Makes it so easy (here, via @b0j3) -- I haven't tried it yet, but this is a set of scripts and configuration files that will help you quickly setup your clojure development environment on OSX. It will even setup both TextMate and Emacs for you :)
      • clojure-maven-pluign 1.3.1 released - regression fix for compiling test classes in the testClasses directory (via @talios)
      • Clojuresque 1.2.0 released! Not yet on Clojars due to 503 (here, via @kotarak) -- this new version of this Clojure plugin for gradle adds integration with Hudson and clojars.org along with the possibility of disabling AOT compilation (now off by default.)
      • How to install Swank/SLIME on a fresh Ubuntu (here, via @LauJensen) -- Another screencast from Lau Jensen, this time walking us through the steps necessary to have a shiny Emacs-based development environment installed on your Ubuntu box.
      • Tutorial on Clojure language: templates and constraints (here, via @hrjn_rss) -- More screencasts coming from Sean Devlin from the Full Disclojure blog about the new features of Clojure 1.1. This time the tutorials are on templates and constraints (pre and post conditions).
      • Palindromes - Clojure vs. Common Lisp (here, via @jng27) -- Performance comparison between Clojure and Common Lisp in which Common Lisp is 10x faster than Clojure. Apples to apples? It's hard to say, but CL seems faster
      • Why Use Monads (here, via @ajlopez) -- Ever wondered why people try to understand monads until their brains hurt? Here are some reasons. This is yet another addition to the incredibly useful set of articles on monads in Clojure that Jim Duey from Intensyvesystems.com has put together (here and here)
      • Melodic Clojure (here, via @mmastrac) -- The author introduces a somewhat radical change in the way syntax of Clojure to make closing brackets easier. I will most definitely leave it up to you, the reader, to judge whether the code looks simpler to you, but the author has a reason for this, which he unveils at the end of the article. Most interesting is the fact that the author provides a modified version of Clojure that uses this new syntax! (or a patch if that is your thing)

      Today in the Intertweets (Dec 24th Ed)

      Predictably, the Intertweets went rather dormant given that half of the world is celebrating something (Christmas, Holidays, whatever you celebrate... if anything). There were still some things going on:
      • Lord of the REPLs (here, via @ajlopez) -- A web-based REPL where you can run clojure code (and scheme, scala, groovy....)
      • Ho Ho Huh? Was hoping to have @chrishouser's #Clojure book in my stocking, but found a horse apple instead. :-( (via @fogus) -- It looks like that book will not hit MEAP at manning.com until after Xmas ... :-( indeed!
      That's all folks! Happy Holidays for those celebrating (I will). Tomorrow I'm off to putting on some more pounds and will open the presents with my very own family.

      Today in the Intertweets (Dec 23rd Ed)

      • After a minor bug fix, the clojure-maven-plugin 1.3 is now making its way to maven central (here, via @talios)
      • Clojure 1.1 RC2 is now available (here, via @fogus)
      • Recently worked on a clojure program where the keywords :-D and :-P are used for "correct" and "incorrect" respectively (via @derarthur) -- Ha!
      • Blogpost + Screencast: Showing off some Interactive Webdevelopment from the REPL (here, via @LauJensen) -- In 12 minutes this screencast shows the beauty of emacs, a little bit of ClojureQL, some Compojure and it builds a small database application. It's a good video to forward to folks that want to know why Clojure and why Emacs....

      Today in the Intertweets (Dec 22nd Ed)

      • Clojure is showing some promise in recent job postings (here, via @drigoat) -- So what happened in July '09???
      • Use clojure-textflow to create ascii sequence diagrams.. this looks neat, I'll probably install clojure for it. (here, via @tranqy)
      [clj] (flow [Alice Bob Tzach] [[mmm Tzach Bob] [xxx Bob Alice] [] [zzz Alice Tzach]]) [/clj] ... gets you ... [clj] Alice Bob Tzach | | mmm | | |<------------------| | xxx | | |<------------------| | | | | | zzz | | |-------------------------------------->| [/clj]
      • Thoughts on persistent data structures and Clojure's transients (here, by @technomancy) -- Phil Hagelberg warns about the perils of thinking of the new Transient data structures as a way of getting imperative style data structures into Clojure.
      Also, I just found these two awesome videos (thanks Google Alerts!) about some of the new features in 1.1. The videos are from Sean Devlin and they can be found at vimeo.com. One is about the use of Transients and the other is about Futures and Promises. Sean is also the author of the quasi-homonymous blog Full Disclojure (http://fulldisclojure.blogspot.com) I embedded these videos here for your viewing pleasure, although you probably will want to go to vimeo.com to watch them in full resolution:

      [vimeo 8320428]

      [vimeo 8339003]

      Today in the Intertweets (Dec 21st Ed)

      [flickr 4200386988]

      • More news about the second Clojure book from Manning:
        • @fogus and I are writing a Clojure book. Maybe an early PDF up this week? A bit of a different angle than the various intro books (via @chrishouser) --  that's a little vague...
        • Check back on Christmas day -- Manning may grant your wish. If this week goes well maybe you will be able *2* Clojure books. (via @chrishouser) -- ah! That's more like it. So new book on clojure for Christmas!!!
      • Todd Hoff's top scalability links for 2009 (here, via @jamie_allen) --  A lists of very interesting links, one mentioning Clojure as one of the most interesting technologies of 2009
      • Tip: To view stack traces of exceptions in the Clojure REPL, do a (.printStackTrace *e) *e is a special var bound to last exception (via @mitchellh)
      • Excited to go to the first Capitol area Clojure user group (here, via @s_e_t_h) -- this reminds me, I need to collect the links of all the existing Clojure user groups.
      • Clojure :pre and :post (here, via @fogus) -- short article on the use of the new precondition and postcondition features of Clojure 1.1

      This weekend in the Intertweets (Dec 20th Ed)

      • Pre/Post conditions for functions coming in #clojure 1.1 (here, via @thebusby)
      • [clj](defn constrained-sqr [x] {:pre [(pos? x)] :post [(> % 16), (< % 225)]} (* x x))[/clj]
      • #clojure promise function implementation is 10 lines! (here, via @wmacgyver)
      • [clj](defn promise "... (edited) ..." [] (let [d (java.util.concurrent.CountDownLatch. 1) v (atom nil)] (proxy [clojure.lang.AFn clojure.lang.IDeref] [] (deref [] (.await d) @v) (invoke [x] (locking d (if (pos? (.getCount d)) (do (reset! v x) (.countDown d) this) (throw (IllegalStateException. "Multiple deliver calls to a promise"))))))))[/clj]
      • Tail-call implementation for the JVM (here, via @mikedouglas) -- a patch to the JVM source code that would provide TCI... if this patch exists and it works, does this mean we will see TCI in the JVM in our lifetime?
      • Tutorial: Continuation Monad in Clojure (here, via @timbray) -- If you understand monads, then I guess you'll find this tutorial 'easy'.
      • The Parenophobes strike again (here, via @kotarak) -- A defense of the lisp syntax from repeated attacks. Speaking to deaf ears maybe? Nonetheless, a good article.
      • Finally completely automated process of setting up Clojure, clojure-contrib, and vimclojure on new Linux installs (here, via @jakemcc) --  Related blog posts about how the scripts work here, here and here.
      • Setting up #Clojure, #Incanter, Emacs, Slime, Swank, and Paredit (here, via @liebke) -- "I’ll be demonstrating how to build and install Incanter (which includes Clojure and Clojure-contrib), and then set up a development environment with Emacs, Slime, Swank, and Paredit."
      • Adder: Python with a Lisp: lisp-1 compiled to #python bytecode like #clojure (here, via @jneira) -- so, for when a clojure that runs on the python VM?
        • From the project page: "Clojure has prepared the ground for the notion of a Lisp that integrates into an existing language" (via @stuartsierra)
      • The Arc Challenge from a Clojure perspective (here, via @laujensen) -- While showing how Clojure is a very terse language by comparing it to Paul Graham's Arc (and as a response to Paul Graham's challenge), Lau produces a web application that is the best example of the use of Compojure that I have seen so far (best as in smallest but complete)
      • Unit testing in Clojure (here, via @aberant) -- I must have missed this one in November, but this is a nice tutorial on creating and running unit tests in clojure.
      • Mapping OOPS concepts to Clojure? Doable or Wrong thinking? (here, via @ajlopez) -- Walking into a hornets' nest, maybe?

      Today in the Intertweets (Dec 17th Ed)

      Clojure 1.1 RC1 is out with a bunch of new features and improvements. Here is the timeline of events: Now it is time for us to test the new build for all possible bugs :) Meanwhile, the Intertweets didn't stop:
      • A gem so you can call clojure from JRuby? Sure, it's a one-liner now (here, via @timbray) -- Using Clojure from inside JRuby became ridiculously simple with maven_gem
      • The Clojure community is stupidly awesome (here, via @ghoseb) -- Indeed. Kudos fellow Clojurians! But the drive is not over and the drive hasn't met its goals.
      • Tracing and Debugging in Clojure (here, via @theWE_) -- This is about ctrace's "complete logging" functionality and how it helps finding bugs that clojure-contrib would not be able to find. Their use of Emacs' Org-mode to inspect the --long-- trace file is genius :)
      • Nice, just checked my google reader stats, in the last 30 days there's been over 3k tweets about clojure (including in non-english langs) (via @Westernwizard) -- No kidding! That means that disclojure.org has read 3000 tweets in the last 30 days too :D
      • Some thoughts on „pointfree“ style (here, via @kotarak) -- Pointfree is a functional programming style that favors function composition over a more, let's say iterative, style of keeping intermediate results in local variables. Pointfree style is supposed to be a "cleaner", but @kotrarak compares them both and shows how sometimes code readability can be compromised when using pointfree style.
      • Another preview from my 2010 predictions: Erlang & Clojure r going to start supplanting Ruby as the hacker & startup "go to" languages (via @communicating)
      • Another preview from my 2010 predictions: Much like Clojure utilizes a VM many new, highly specific micro languages will do the same (via @communicating)
      • cool, a BERT implementation for #clojure (here, via @bmabey) -- A serialization library for  BERT (Binary ERlang Term). This would allow data exchange between Clojure and Erlang
      • Recommended reading: The Incanter source code. (via @fogus) -- Indeed!

      Clojure 1.1.0 rc1 released!

      Today Clojure version 1.1.0-rc1 has been released. It was released quickly after rc0. I have not found an online version of the release notes, so I am publishing them on this site. This is an important achievement, one that provides a number of performance improvements and lays the foundation to many more improvements to come. These are the some of most substantial feature additions in 1.1.0:
      • Transients: Allows persistent data structures to become mutable temporarily, in a way that is transparent to the rest of the application and that is also thread safe. This alone can provide big performance gains on large data structures.
      • Chunked Seqs: Allows to process data sequentially by small blocks, called 'chunks'. This reduces the overhead of accessing the elements one by one.
      • Futures: Futures represent asynchronous computations. They are away to get code to run in another thread, and obtain the result.
      • Promises: A promise is a synchronization construct that can be used to deliver a value from one thread to another. Until the value has been delivered, any attempt to dereference the promise will block.
      • clojure.test: the former clojure.contrib.test-is is now part of clojure. There is also JUnit compatible reporting.
      You can download the new release candidate here: http://clojure.googlecode.com/files/clojure-1.1.0-rc1.zip and you can read a copy of the release notes here. Congratulations to all those involved in this exciting release!

      So what's a short name for 'a programmer who happens to use Clojure amongst other languages'?

      So a week ago I tweeted asking for what people thought was the best name for a Clojure practitioner. I had suggested 'clojurian' and 'clojurer'. I got a few responses, some of them voting for one of the two proposed names, and some of them proposing new names. I also got responses rejecting the whole concept of a 'clojure practitioner' with the argument that a programmer is a programmer, regardless of the programming language used at a particular time. They consider themselves to be just 'programmers' since they use many different programming languages at any time and therefore they are not tied to any particular language. Fair enough. But this doesn't really solve my problem: when I want to refer to 'programmers who happen to use Clojure amongst other languages' I would like it to use a shorter name than 'programmers who...' So here are the (extended) options again, in case you want to cast your vote (in the form of a comment on this post):
      • Clojurian
      • Clojurer
      • Clojeur
      • Clojurist
      • Programmer
      Cast your vote!

      Today in the Intertweets (Dec 16th Ed)

      The Intertweets have been buzzing with messages related to the fund drive to pay for Clojure's development. It looks as if Rich Hickey has already achieved over 50% of his required funding for 2010. Here are some of the relevant tweets today:
      • Funding update - the Clojure community is simply awesome! (here, via @technews) -- Rich provides an update on his funding appeal.
      • rhickey: "2010 funding crosses the 50% mark" Let's take it the rest of the way! (via @chrishouser)
      • Flightcaster Supports Clojure (here, via @bradfordcross) -- Thanks from all of us!
      But after donating to the cause, our fellow clojure programmers (or however you want to call "programmers who happen to use Clojure amongst other languages and tools"... more on this in a follow-up post) went back to work...
      • Hard-core Clojure (here, via @timbray) -- Tim Bray writes about his first thoughts after @atosborne's very fast Clojure implementation of WideFinder 2. Tim dislikes that in order to achieve the kind of performance that @atosborne achieved he had to dip into Java  (for AtomicLong and other concurrency related classes). It detracts to the purity of Clojure, in a way. He also comments that @atosborne's code might be less modular and less portable than desired. All comments are fair and worthy of some thinking.
      • First a subset of Lisp was the new black in the form of Clojure and now Prolog looks like the next big thing (here, via @mdreid) -- From the Technology Review magazine: A Berkeley professor proposes Datalog as a model for easy development of applications for The Cloud. Meanwhile, some hackers are already using Clojure for such purpose.
      • New debug-repl tutorial (here, via @georgejahad) -- How to debug macros with debug-repl
      • Sean Devlin's recipe for turning my Clojure string interpolation macro (or, any macro, really) into a reader macro (here, via @cemerick) -- Read the disclaimer in bold red before getting burned with reader macros :)

      Today in the Intertweets (Dec 15th Ed)

      • About Rich Hickey fundraiser drive for Clojure development:
        • Initial list of Clojure "funders" posted – very proud to be the first commercial sponsor of Clojure (here, via @cemerick) -- Neat, Rich fundraise is now around at 40% of his goal.
        • Clojure is great for the Java community! Sonatype just donated US1000 at http://clojure.org. We challenge you to match the donation!
        • Sonian is very proud to be the first monthly invoiced commercial sponsor of #clojure (via @dysinger) -- $1000/mo, not bad at all. It look like Sonian did take the challenge of Sonatype, and then made it a monhly. Thank you from all of us!
      • My take on @timbray's Widefinder 2 benchmark in #clojure. (here, via @atosborne) -- To cut the story short, now the Clojure version of Widefinder 2 is faster than Scala and Java, only bested by C++ and OCaml. @atosborne's version -- which is tested in the same hardware that @timbray used for all the other tests -- is now taking 8m4.633s of real (elapsed) time. Here is the table with the other competing implementations of WF2. This is again another great read for those planning on using Clojure on big iron and squeze every power out of it.
      • @assembla uses #Clojure as a showcase in their latest newsletter (via @stuartsierra) -- Can be found in the "Featured Open Source Projects" section of that letter. Here is what it says: "Clojure is a dialect of Lisp that runs in a JVM, and shares with the Lisp the code-as-data philosophy and a powerful macro system. Clojure is predominantly a functional programming language and features a rich set of immutable, persistent data structures."
      • The #paredit (for #clojure) is on Slideshare (here, via @mudphone) -- If you're using Emacs, especially @technomancy's Emacs Starter Kit, then you're probably using (or want to use) 'paredit'. Here is a presentation from the last Bay Area Clojure User Group meeting.

      Today in the Intertweets (Dec 14th Ed)

      • Funding Clojure 2010 (via ... well, pretty much everyone in this community; I counted over 100 tweets) -- In short, Clojure is an open source project that has been funded so far only by its author's own savings. Soon it will stop making sense for Rich Hickey to keep funding the project while not getting any $$ from it. He proposes that those who are benefitting from Clojure fund him, so he can continue working on it. That makes sense, doesn't it? Time to give back, go to this page and click on the button "Donate".
      • 98% done rewriting my website in #clojure. 6k lines of Ruby => 2k lines of Clojure. I hope my VPS doesn't implode when I upload it. (via @briancarper) -- here is the blog software he's writing
      • New post by @stuartsierra, Objects Are Not Abstract Data Types (here, via @liebke) -- An interesting discussion about some of the upcoming features of Clojure: datatypes and protocols, and how they relate (or not) to Object Oriented Programming. It is good to remind folks of the difference between abstract data types and objects...
      • A custom Google Search Engine for Clojure (here, via @disclojure)
      • A Yahoo pipe to capture blog posts on Clojure (here, via @KirinDave) -- here is the resulting RSS feed

      A call to action: Funding Clojure

      This is an extract of Rich Hickey's recent post about the need to find a way to fund his work on Clojure development. Please read it carefully and see what you can do to help: "It is important when using open source software that you consider who is paying for it, because someone is. There is no such thing as free software." [...] "As should be obvious, Clojure is a labor of love on my part. Started as a self-funded sabbatical project, Clojure has come to occupy me far more than full-time. However, Clojure does not have institutional or corporate sponsorship, and was not, and is not, the by-product of another profitable endeavor. I have borne the costs of developing Clojure myself, but 2009 is the last year I, or my family, can bear that." [...] "If you are an individual user of Clojure, I encourage you to contribute $100/year to Clojure development, via the donation system." (find the "donate" button in this page) [...] "If you are using Clojure in a business endeavor, I appreciate and applaud your savvy, and wish you much success and profit. [...] I think Clojure needs several of you to recognize your mutual self interest in a continuing strong core development effort, and the collective value in pooling resources to fund Clojure. Each business can fund some weeks or months of my Clojure development time."

      This weekend in the Intertweets (Dec 13th Ed)

      • A swank-clojure patch for Windows (here, via @jsamsa)
      • Clojure vs Ruby & Scala — Transient Newsgroups (here, via @laujensen) -- "Recently I had the good pleasure of reading a blogpost which demonstrated a fun exercise in both Ruby and Scala, namely scraping newsgroups. I had a look at both solutions and decided to roll one in Clojure as well [...]" . Lau shows some good use to the upcoming transients
      • Note to #clojure people - AOTing your code really makes it a PITA for everyone else to use your library (via @dysinger) -- Word!
        • I like the neotradition have shipping a slim jar (Clojure sources only) as well as AOT (via @hlship)
        • My gripes with AOT abuse #clojure (here, via @dysinger)
        • It would be nice if there was a compile-time flag to enable/disable AOT RT (via @liebke)
      • Requested App Engine feature: "Add support for native concurrency features of Clojure & Scala" (here, via @kevin_noonan) -- Wouldn't that be great if we were finally able to fully utilize clojure's power in Google App Engine...
      • So I configure a build for #clojure-contrib compiled against clojure "new" and it's on maven repo also http://build.clojure.org (here, via @dsyinger) -- You'll need to use this version if you use the "new" branch of Clojure since the official clojure-contrib jar is ahead-of-time complied against the main branch.
      • Uploaded an experimental build of #incanter, compiled with #clojure's new branch, to #clojars (here, via @liebke)
      • Persistent Trees in git, Clojure and CouchDB: Data structure convergence (here, via @eclipsesourceteam) -- It looks like the use of persistent data structures has become quite popular lately. Although with some differences between these projects, the pattern is definitely emerging.
      • Clojure roundup: Flightcaster, Crane, Incanter, Leiningen (here, via @bradfordcross) -- that's at InfoQ
      • Got distracted from my writeup to try some more IO tweaks. 8m4s on #Clojure Widefinder 2, finally catching up on OCaml. ;-) (via @atosborne) -- The Tim Bray's saga around Clojure continues and the plot thickens, now with @atosborne optimizing View Finder 2 on the same Niagra machine Tim is working on. It seems things are going pretty well and there might be a 5000 word blog post about the optimizations coming soon :)

      Today in the Intertweets (Dec 10th Ed)

      • ClojureQL enables the Clojurian to stay within his Clojure-domain even when interfacing with his SQL database (here, via @laujensen) --  Lau introduces a DSL to access relational databases. Looks promising and it is getting close to 1.0.  Interesting also the explanation for the choice of Gradle over Leiningen for build tool. ClojureQL can be found here
      • frumiOS - a silly object-system for Clojure (here, via @amitrathore) -- Time to 'port' CLOS to clojure?
      • watching @stuarthalloway,@tastapod ,@gojkoadzic ,@tyler_jennings ,@neal4d's presentation on their clojure BDD (here, via @markhneedham) -- Building a Behavior Driven Design framework for Clojure
      • It's not an intro book. It focuses on "thinking in the #Clojure way". (via @fogus) -- this refers to the 2nd book on Clojure that Manning is publishing, after @amitrathore's "Clojure in Action". This book has no title yet (at least not one that Disclojure knows about)
      • @richhickey on Fine-grained locals clearing (here, via @fogus) -- "I'm happy to announce I have implemented this fine-grained locals clearing in the compiler, in the 'new' branch. It should automatically cover all cases in which the code doesn't explicitly reuse the head - including non-tail usage, destructuring etc. In short, such cases should 'just work' from now on." We had reported on this development sometime this week. This is the official announcement.
      • Cljex is a project aimed at providing examples to accompany clojure's standard API documentation (here, via @devn) --  Builds a local website with the examples, although you can checkout a live version http://getclojure.org (not live at the time of writing this)
      • Name mangling to support calling C++ functions from clojure-jna? Ambitious! (here, via @chrishouser)
      • reading #clojure irc logs, sounds like @timbray is having better luck with widefinder 2 on clojure (via @jsamsa) -- Sounds like it: "Have found a much better set of JVM options, things are improving. I shouldn't write when I'm discouraged." (here)

      Today in the Intertweets (Dec 9th Ed)

      • Riastradh's Lisp Style Rules (here, via @delicious50) -- No one can beat this rationale: "The parentheses grow lonely if their closing brackets are all kept separated and segregated."
      • Here's a simpler version of debug REPL that works with an unmodified Clojure compiler (here, via @atosborne) -- this is a variation of @georgejahad's debug repl that he posted a couple of days ago, with the difference that this one does not need changes in the clojure compile (although it seems this version might have issues with SLIME.)
      • I have updated build.clojure.org to include maven repo snapshots for #clojure "new" and "master" (here, via @dysinger)
        • If you were using build.clojure.org #clojure 1.1.0-alpha-SHAPSHOT you need to switch it to 1.1.0-master-SHAPSHOT as per the new build change (via @dysinger)
      • Here's my bare-bones .emacs.d dir. Clone this, elpa install clojure/slime/swank (here, via @dysinger) -- setting up Emacs to work with Clojure is getting simpler and simpler. Now pretty much everything you need is in ELPA
      • Released CBench, a simple benchmarking library for #Clojure (here, via @thnetos) -- a helper  library that allows to conveniently perform benchmarks on clojure function calls by running the test many times and then aggregating the resulting values for each run into meaningful statistics.
      • Tuning Concurrent Clojure (here, via @timbray) -- After the Tim Bray's mysterious post a few days ago about his Clojure implementation of Wide Finder 2 being "*insanely* fast", and him being "crackling with joy"  (this is part of his concur.next series of articles), Tim posted an article explaining how he went about optimizing his Wide Finder 2 and the results he measured. It is important to note that he jumped the gun when he made those claims about speed and that the version of Wide Finder that he optimized to be even faster than Scala(!) was not WF2, but WF1. WF2 computes many more statistics than WF1, and it so happened that optimizing WF2 was much more complicated than optimizing WF1; the results achieved were nowhere near as good as those of  WF1's optimization. Very interesting read for anyone looking to scale non-trivial Clojure applications.

      Today in the Intertweets (Dec 8th Ed)

      • Gestating about 5000 words on massively-concurrent-clojure perf tuning, fascinating for maybe 79 people int the world. (via @timbray) -- Yay!! Can't wait to see the numbers!
        • I decided to write about tubers instead of Clojure, for now (here, via @timbray) -- Wait, what?!? Booooo! ... now off to buy some potatoes...
      • Just made up a word. People who are afraid of Lisp because of the parentheses are "parenophobes" (via @minnowcoder)
      • IntelliJ IDEA 9 is out, which means the free/OSS Community Edition is as well. If you hack Java/Groovy/XML/Scala/Clojure, give it a shot! (via @mdellabitta) -- you can download IntelliJ IDEA 9 Community Edition here, and the Clojure plugin can be found here, although you can install it from inside IDEA (plugins section)
      • Thanks to the great efforts of @tomfaulhaber, #incanter has much improved API documentation (here, via @liebke)
      • I implemented automatic code reload for my App Eng #clojure framework... Was waiting for fixes in App Eng 1.2.8. (here, via @gburd) -- Neat trick!
      • Understand the REPL in #Clojure (here, via @gdickens) -- Understanding the REPL by implementing one.
      • I made a lein autotesting thingy with watchr (here, via @crazzyford) -- automatically run lein tests on your code when it changes... using Ruby tools.

      Today in the Intertweets (Dec 7th Ed)

      • Our #Clojure book has gone out for technical review. :O (via @fogus) -- this is a new book (no title yet) on Clojure by Manning, by @fogus and @chrishouser. No date for the MEAP (early access) yet.
      • How 'bout a #clojure debug-repl? (here and here, via @georgejahad) -- insert a REPL instead of a 'println' in your code in order to perform debugging. Neat!
      • Sweet #redis #clojure is powered by leiningen now (here, via @dysinger) -- Redis is a #nosql DB, and redis-clojure is just a Clojure wrapper for it. Another one down for Leiningen!
      • #Clojure - Now with full liveness tracking for all locals! (here, via @fogus) -- here is the commit in the 'new' branch. This change prevents loops from holding on to local variables after the 'recur' by clearing those locals after their last use; that is, "if you're not using it, you aren't holding it" (@richhickey) . The lack of this feature has caused lots of headaches to many, spending long periods looking for the cause of memory leaks in loops. No more. Maybe a 1.2 feature though, it doesn't look like it is making it into 1.1 for now. Testers welcome!
      • oh look! http://web.mit.edu/newsoffice/2009/ai-overview.html - we should do this in clojure! let's build a clojure machine!!! (via @nicferrier) -- Let's do it!

      Twitter list (at last!)

      This short post is to let you know I finally go around to create a twitter list for Clojure. I'll keep adding fellows who tweet often about Clojure. Follow this list by visiting this page disclojure/clojure and clicking on the "Follow this list" button.

      This weekend in the Intertweets (Dec 6th Ed)

      • String Interpolation in Clojure (vs. Scala ? ;-) -- "Can your language do this?", part 47 (here, via @cemerick) -- How to provide Clojure with string interpolation similar to Ruby or Groovy. That's a nice feature to have! Will this make it to a reader macro as the author suggests? We'll see.
      • My ports of Clojure 1.1.0-alpha, clojure-contrib (1.0 & 1.1), and Leiningen are now in the official MacPorts. (via @ieure) -- awesome!
      • My Clojure Wide Finder is running *insanely* fast. Am cackling with joy (via @timbray) -- this is interesting. How'd you do it? And where are the numbers?
        • a) java.lang.String.split b) reduce c) smaller buffers. d) type hinting. Faster than #scala and still room to improve. #clojure (via @timbray) -- Ah! That's how! Wait?!?! Faster than Scala?
      • Unit testing in the REPL (here, via @markneedham) -- If you haven't started using @sutarsierra's test library, this is a nice and short introductory article to it.
      • #clojure #leiningen 1.0.0 is out (here, via @technomancy) -- congrats! ... but now it looks like Maven 3 could be a worthy competitor...
      • Uber cool or just beyond crazy mad - a scripted maven3 polyglot pom with clojure - needs more work thou (here, via @tailos) -- what I said before... Maven 3 throws its hat in the ring
      • Scaling out for #analytics w/ #hadoop & cross language tools #jvm #crane #incanter #clojure #rstats (here, via @alisohani) -- Great article on how Clojure, Incanter, Crane and Hadoop can work together to perform ad-hoc analysis on large datasets.
      • Setting up Clojure, Emacs, Slime, and Swank (here, via @dewitt) -- yet another how-to for this set of tools. This one is good if you want to avoid using @technomancy's Emacs Starter Kit
      • Short Chat Server in Clojure - After seeing a neat little demo of a chat server in node.js, I wondered... (here, via @KirinDave) -- A chat server in 75 lines of code... !

      Today in the Intertweets (Dec 3rd Ed)

      • Exciting day today. The flightcaster guys are giving to the community two significant pieces of code:
        • Crane is #clojure #aws #hadoop #clusters #ec2 #s3 #ssh #repl #goodness (here, via @bradfordcross) -- Crane is a... well, imagine what verbs go between the names in the original post and you'll realize it is an awesome tool. Just kidding! You can read about it in this blog post introducing Crane
        • #FlightCaster merges its statistical-learning code into #Incanter (here, via @liebke) -- now Incanter has a distributed statistical-learning system at its core. Incanter will also be able to be used with Crane in the future
        • By the way, this is why projects like Incanter or Crane are important for the Clojure community even if you're not into Statistical Learning...
      • QOTD: "Any sufficiently concurrent imperative program contains an ad hoc informally-specified bugged implementation of half of Clojure" (via @cgrand) -- paraphrasing anyone here?
      • introducing lein-cuke: betcha didn't know #cucumber + #clojure would be so simple: #jruby ftw (here, via @tvachon)
      • lispm: this dude is seething with clojure hate, me amused (here, via @stickypanties)

      Today in the Intertweets (Dec 2nd Ed)

      • Some reactions to Tim Bray's "11 theses on Clojure":
        • About Clojure/Lisp readibility  (here, via @stilkov) -- I still don't understand what the fuzz is about Lisps being hard to read... this article just shows how weak this argument against Lisp is. Don't miss Rich Hikey's comment.
        • About "Clojure being a Lisp is a Handicap" (here, via @tiagoantao) -- same topic as the previous article. This time discussing weirdness of prefix notation... I say: It's worse in Latin, where the verb comes last!
      • Component Based Software Architecture Using Clojure (here, via @antest) -- "Just for fun, I implemented a simple system for constructing a component based software architecture where each component runs completely independently and asynchronously. Components communicate by sending events to each other, achieving a flat software hierarchy." Neat!
      • Scheme interpreter in #Clojure, very useful (here, via @zef)
      • Why I chose Common Lisp over Python, Ruby, and Clojure (here, via @antest) -- I don't know what to say... other than: the author would have probably chosen Clojure if he had to make the decision today. This article is more relevant in comparing Lisp to Python and Ruby, but when it comes to comparing Clojure to Common Lisp it doesn't say much...

      Today in the Intertweets (Dec 1st Ed)

      • Leiningen keeps getting better and better:
        • You can use leiningen to compile projects that use any version of clojure now thanks to @atosborne. 1.0 coming soon. (via @technomancy)
        • Updated the #leiningen powershell script (here, via @fyuryu) -- this is necessary if you want to run leiningen on Windows(tm)
      • Clojure as a first progamming language? (here, via @hrjn_rss) -- join the fray!
      • Tim Bray's Eleven theses on Clojure (here, via @timbray) -- After all the work he's put in exploring Clojure, here are his conclusions. It looks like he likes Clojure but doesn't quite like Lisp?
      • the ability to run unit tests in the #clojure REPL just has #win written all over it (via @markhneedham) -- indeedy!
      • Using Clojure STM from JRuby (here, via @MarioAquino) -- this is about using @technomancy's library that provides access to Clojure's STM to JRuby

      Today in the Intertweets (Nov 30th Ed)

      • There is a fairly good chance that we'll have a MEAP before xmas (via @fogus) -- For the uninitiated, this means that there is a second Clojure book coming from Manning and that an early version of this book will be available for (paid) download before xmas.
      • "-?>" works like #groovy's safe deref "?." (here, via @wmacgyver) -- also "->" is in 1.0, "->>" is in 1.1 and  "-?>" is in clojure.contrib (via @wmacgyver) ... hmmm
      • Idiomatic Clojure alternative solutions to the Wide-Finder project (here, via @timbray) -- Native clojurers do it better
      • The Continuation Monad in Clojure, a tutorial (here, via @dewitt) -- This is related to Jim Duey's attempt to adding sessions to Compojure
      • Update on deftype and protocol in #clojure 1.1 (here, via @wmacgyver) -- Protocols and Datatypes just keep getting better and better. It is nice to see Rich Hickey gets the community's feedback into the language.
      • Roll call of production use of Clojure (here, via @redditspammor) -- Hear from the folks who have Clojure projects in production.

      This weekend in the Intertweets (Nov 29th Ed)

      • For all you Clojurians and Lispers out there: click here (via @publicfarley) -- How true!
      • Leiningen, the #clojure build tool, now installable via MacPorts (here, via @ieure) -- Thanks!
      • #compojure's route and html generation has been spinned out (here, via @wmacgyver) -- James Reeves has spun out some parts of #compojure so that they can be used outside of compojure. Some parts have also been improved from the original versions inside of compojure. The HTTP routing part is "Clout" and the HTML generation part is "Hiccup"
      • Bit by this, #clojure's ns macro needs help/documentation/clarification. Too much hunting & pecking. (via @xgavin) -- Indeed.
      • Building a #Clojure Web application with #Incanter, #Compojure, and #Leiningen (here, via @liebke) -- or, "How to name the four of the coolest technologies in one sentence". This is an awesome article that shows how fast the Clojure ecosystem is growing... a must read!
      • Java fault? Running out of memory when using loop/recur and destructuring (here, via @ajlopez) -- Interesting issue with the JVM (that is no problem with the MS's CLR)

      Today in the Intertweets (Nov 26th Ed)

      • Finally blogged about Leiningen (here, via @technomancy) -- The author of Leiningen writes about Leiningen, finally <-- this is all I can come up with after all that turkey...
      • For those who are new to clojure: java -cp jline-0.9.91.jar:clojure.jar jline.ConsoleRunner clojure.lang.Repl (via @wmacgyver) -- use this if you want proper line editing in the REPL
      • Unexpected high cost of concurrency found by @timbray when running a #clojure impl of Wide Finder on a multi-cpu box (here, via @disclojure)

      Today in the Intertweets (Nov 25th Ed)

      Happy Thanksgiving day for all who live in the US!
      • Scalable scraping in Clojure (here, via @antest) -- A tutorial that builds a tool to monitor craigslist to find relevant posts and store them to disk. The interesting part is the architecture of the final application, which is quite scalable!
      • Emacs, Clojure and Windows (here, via @jneira) -- If you *have* to develop Clojure on Windows and want to use Emacs, this is your article
      • Generating Clojure import lines using SLIME (here, via @jneira) -- this is an awesome hack. As the author says: "Pretty gross! But then who of us isn't?" ... well, it's not that gross! And it gets Emacs a tad closer to IntelliJ+LaClojure or Netbeans+Enclojure...
      • Summary of Clojure usage survey (here, via @stuartsierra) --  69% of you get their clojure from GitHub? Geeks!
      • Start of continuation-based library on top of #compojure in #clojure (here, via @wmacgyver) -- or how you don't need to do OO to have modular code... This article is about adding comprehensive session handling to Compojure in a clean way
      • Concur.next — More Clojure I/O (here, via @timbray) -- Yet another article in Tim Bray's series exploring Clojure. This time he incorporates some of the suggestions found in the comments to his previous articles, adding map-reduce and agents to his wide-finder code. He is not conclusive on the relative performance of Clojure vs. other languages, but states the following: "I wondered how much of that 70 minutes might be a Clojure tax, so I wrote a Java version, as close to identical as I could manage, and it took... about 68 minutes. Good for Clojure."

      Today in the Intertweets (Nov 24th Ed)

      • A Sudoku solver (here, via @jneira) -- This is a re-interpretation of Peter Norvig's sudoku solver in Clojure (instead of Python).
      • This seems like a nice website for getting #clojure updates - http://disclojure.org/ (via @markhneedham) -- I wholeheartedly agree!
      • New chapter added to Clojure in Action by @amitrathore in MEAP! (here, via @ManningBooks)
      • Clojuresque 1.1.0 released (here, via @kotarak) -- Now with the examples updated to use clojars.org! Clojuresque is a Clojure plugin for Gradle, a build tool based on Groovy.
      • Life1D - Putting the Clojure hat back on (here, via @LauJensen) -- Lau previously ventured into the new territory of J (the language). Now in this last article he brings back some of the lessons learned --and the new brain cell connections established while learning J-- into Clojure. Both articles are worth a read to expand your mind.
        • (reduce + (map #(Math/pow % %) [3 4 3 5])) (via @fogus) -- Trust me, it'll make sense once you read Lau's article.
      • Learning the 'apply' function (here, via @markhneedham) -- Mark walks us through his discovery of 'apply' and its uses.

      Today in the Intertweets (Nov 23rd Ed)

      • A circuit breaker in Clojure (here, via @Raymondz5ly) -- Using deftype and defprotocol! A circuit breaker is a mechanism designed to stop one system from attempting to contact another system if failure is detected, in order to prevent overloading such failing system and also to prevent the calling system to wait indefinitely. You can find a good write-up on this mechanism in the book "Release It!" page 104. This article explores how to write such mechanism in Clojure
      • A couple of Clojure agent examples (here, via @jlugocp) -- This article comes form someone fluent in Erlang. It exposes a few uses of agents to sequence access to shared data structure (that's what they are for anyway). The examples are: Sequencing the writes to a log file, Parallel HTTP fetches and Using agents as a Message Relay (interesting this last one!)
      • And oh! Please help the Clojure developers prepare for 1.1 by answering this short usage survey (via @stuartsierra)

      This weekend in the Intertweets (Nov 22nd Ed)

      (NOTE: somehow this article got posted in the wrong place of this blog yesterday... so I am reposting it today)
      • Clojure: A few things I've been tripping up on (here, via @planettw) -- This article gives an insight on some difficulties that newcomers to LISP in general and Clojure in particular. Sometimes it is easy to realize when talking to non-lispers how there is an impedance mistmatch at the most basic level, especially for those coming from procedural languages.
      • Building Incanter applications with Leiningen and Clojars.org (here, via @liebke) -- If Leiningen and Clojars.org needed any validation, here it comes. If you need a full example to understand why these two tools are so useful then a look at how easy it is today to create a new Incanter project will help.
      • Stuart Sierra (Columbia U.) and Tim Dysinger (Sonian Networks) on Hadoop and Clojure at 'Hadoop World' (here, via @cloudera)
      • java -Xbootclasspath/a:clojure.jar rocks. Down to 350ms startup time for Clojure (via @atosborne) -- nice!

      Today in the Intertweets (Nov 19th Ed.)"

      Looks like @stuarthalloway made a quite splash introducing Clojure at QCon, judging for all the tweets. Here are some tweeted quotes:
      • "starting with TDD for a new programming language isn't a great way to learn" (via @samnewman)
      • "Relevance believes in using BDD with FP" (via @deanwampler)
      • "clojure.test is nice compared to others, but Ruby kicks everybody's ass when it comes to testing" (via @fabiokung)
      • "I used to be a Java programmer but I got tired of all the parens" (via @fabiokung)
      • "Clojure actually uses less parens than Java" (via @Akombo)
      • "There is support [for Clojure] in NetBeans and Eclipse, but most of the serious kids use vi or Emacs" (via @joelash)
      • "Does anyone know this low level, JVM assembly language called Java?" (via @alberto_souza)
      .... that's a lot of funny quotes. How long was his talk? One thing to note today is the high energy that the Clojure community is displaying these days. Leiningen and clojars.org went from unknown projects to stardom in what? 24 hours? Certainly there are a lot of folks chomping at the bit to get their brains soaked with Clojure. Anyway, here's what was going on in the intertweets today:
      • Building #Clojure projects with #leiningen (here, via @zef) -- An introductory post on Leiningen
      • 42% discount on Clojure in Action through November 24th use coupon code n2442 at checkout (here, via @amitrathore) -- get it while it's fresh!!! And buy one for your friends too...
      • Clojars announcement on the #clojure list (here, via @weakreference)
      • Now that @bradfordcross has successfully Maven-ized Incanter, I'd like to Leiningen-ize it and host it on Clojars.org (via @liebke) -- and so he did
      • Clojars and Leiningen Automate Library and Dependency Management for Clojure (here, via @infoq) -- An interview to the creator of #Clojars.org Alex Osborne about this new project.
      • Parallel I/O in Clojure (here, via @timbray) -- This is the last part of a series of articles from Tim Bray (of XML fame) about Clojure, with the following conclusion: "It’s pretty short. It’s pretty readable. It parallelizes well on modern hardware. It was written by someone who is not a Lisper and had never touched Clojure a few weeks ago. What’s not to like?"... Yeah! What's not to like about that?

      Today in the Intertweets (Nov 18th Ed.)

      • Don't forget there is clojure support in org-babel now (here, via @jolby) -- this is an extension to Org-mode for Emacs that lets you execute the code you're writing
      • Another easy 2x speedup for Brian's Brain (here, via @cgrand) -- Another 2x improvement (see previous article)
      • on a similar note ... The beauty of grey: Brian's Brain on Clojure (here, here and here, via @bubbl) -- Three articles on performance and optimization on Clojure and some Common Lisp interpreters based on Lau's "Brian Brain"
      • Are pipe dreams made of promises? or how to implement a blocking queue without resorting to Java (here, via @cgrand)
      • We've made a #Clojure interface available for #AllegroGraph (here, via @franzinc) -- Download available here

      Today in the Intertweets (Nov 17th Ed.)

      • #Clojure Support arbitrary functional destructuring via -> and ->> (here, via @fogus). This is just a proposal, and it would work like this:
      • [clj] user=> (let [(-> str a) 1] a) "1" user=> (let [[a (-> str b) c] [1 2]] (list a b c)) (1 "2" nil) user=> (let [(->> (map int) [a b]) "ab"] (list a b)) (97 98) [/clj]
      • tweaked my bin/clj script to give formatted #clojure stacktraces. (here, via @mmcgrana) -- Neat! [caption id="attachment_296" align="alignnone" width="361" caption="Fancy stacktraces for clojure (click for original image)"]Cool formating of Exceptions in Clojure (clik for original image)[/caption]
      • How to optimize a Clojure program properly (here, via @cgrand) -- Cristophe takes a look at Lau's implementation of Brian's Brain and looks for ways of making the code run faster. He achieves a 5x speed increase, so it's worth looking at the proposed optimization techniques.
      • Clojars: an alternative to Maven's Central Repository for #clojure projects with much less hassle (here, via @tbatchelli)

      Today in the Intertweets (Nov 16th Ed.)

      • A very basic attempt at Integrating JRuby, Rails and Clojure (here, via @stilkov)
      • Conway Game of Life in Clojure (here, via @ajlopez)
      • Is anyone interested in Clojure + Terracotta? I've not heard from anyone who is using it. (here, via @pjstadig)
      • A phylogenetic tree viewer in clojure (here, via @tiagoantao)

      This weekend in the Intertweets (Nov 15th Ed.)

      • Rich Hickey on reasons behind deftype/protocol in #clojure (here, via @wmacgyver) -- Rich Hickey explains a the rationale behind some design decisions for the new features of #clojure, and also provides hints on when to use them and when use the current existing alternatives (reify vs. proxy, deftype vs. defstruct, deftype vs. gen-class). There is also a discussion about why 'protocols' is a better option than Java's class/interface inheritance and partial implementation, at least for #clojure.
        • ... and if you want to see how the use of protocols looks like, here is an example (via @stuartsierra)
      • Final mini blog on poker and #clojure (here, via @s_e_t_h) -- this is a followup of a previous article that we referenced a few days ago. The code can now be found in bitbucket
      • Clojure tutorial: fetching web comics (here, via @antest) -- Yet another introductory tutorial to Clojure.
      • #leiningen, "A build tool for Clojure designed to not set your hair on fire" (here, via @pholdings) -- By @technomancy, a tool to describe and build your clojure projects in clojure (wraps maven and ant). Here is an example of a project definition: [clj](defproject leiningen "0.5.0-SNAPSHOT" :dependencies [ [org.clojure/clojure "1.1.0-alpha-SNAPSHOT"] [org.clojure/clojure-contrib "1.0-SNAPSHOT"] [ant/ant-launcher "1.6.2"] [org.apache.maven/maven-ant-tasks "2.0.10"]] :dev-dependencies [ [org.clojure/swank-clojure "1.0"]])[/clj] and here an example of a build command: [bash]$ lein repl # launch a REPL with the project classpath configured[/bash]
      • Clojure and Android with Emacs on Ubuntu (here, via @elight)
      • Swank-clojure 1.0 and dependencies made it into elpa! Should make installation much easier now (via @technomancy) -- Yay!!!

      Today in the Intertweets (Nov 12th Ed.)

      • Datatypes and Protocols - early experience program (here, via @ajlopez) -- time to try the new features; there is even a build ready to be used
      • Rich Hickey's Clojure keynote from the JVM Languages Summit posted (here, via @cemerick) -- finally!!!
      • Moderately-deep dive on clojure refs (here, via @timbray) -- Tim Bray explores clojure a little more, this time the use of 'refs' and finds that if you try to process large datasets you might get some nasty garbage collection thrashing. He asks the community about what's wrong with his experiment, and the community responds... read the comments; some are very enlightening, like this cool (idiomatic) version by @technomancy

      Today in the Intertweets (Nov 11th Ed.)

      • another couple of days left for 45% off #Clojure in Action - use code clojure45 (here, via @amitrathore)
      • Ah yes, macros... (here, via @michaelg) -- Ah yes, macros are cool!
      • New Clojure Studio is open! (here, via@clarkware) -- If you're lucky enough to live in the area, be able to fly over there, and have the money, you can get top notch Clojure training from the best  of the best @richhickey and @stuarthalloway
      • Interesting Clojure Projects (here, via @zef)

      Today in the Intertweets (Nov 10th Ed.)

      • It would be nice to have defaults for optional arguments like ruby in #clojure instead of boiler-plate arity code (via @dysinger)
        • check clojure.contrib.def/defnk for optional arguments (via @tiagoantao)
      • OT: So true: "... Programming practice is usually ten to twenty years behind the processor." (here, via @gregoryg)
      • OT: Google's Go language looks like yet another attempt to handle concurrency in an imperative language (via @stuartsierra)
      • ninetynine problems in #clojure part 1 (here, via @wmacgyver) -- Attempting to solve the ninety-nine Prolog problems in #clojure

      Today in the Intertweets (Nov 9th Ed.)

      • Tail recursion and function composition (here, via @jneira) -- Building recursive data structures by recursively composing anonymous functions... er, did I get this one right?
      • Shuffling cards with Clojure (here, via @s_e_t_h) -- the title says it all. It is a good post if you want to show someone foreign to lisp how symbolic manipulation and recursion work...
      • Do all God's chillun have to be writing their web code in Erlang or Haskell or Clojure? (here, via @timbray) -- The article explores the evolution of Cloud Computing in their use of multicore and postulates that GAE and Azure will have to eventually provide access to multicore capabilities in their clouds (for example allowing new threads to be created). This will give way to languages like Clojure, Haskell or Erlang.
      • Stopping Times and Laziness (here, via @kotarak) -- how to know when it is possible to write some code to be fully lazy
      • Tweaking Clojure (here, via @tiagoantao) -- did you know that if you don't like Clojure's core libraries, you can rewrite them?

      This weekend in the Intertweets (Nov 8th Ed.)

      • So I am going to make his #clojure conference happen sometime in the fall next year "Conj 2010: The Year We Make Contact" (via @dysinger) -- that seems like a great idea. I'd definitely go...
        • I am thinking #clojure Conj 2010 is going to be in the DC area & most likely dovetailing with ICFP one day before or after (via @dysinger)
        • ICFP needs #clojure people to submit papers to talk next Fall. http://www.icfpconference.org/ (via @dysinger)
        • ICFP needing papers on #clojure. ping me if you want to talk. outline due by Nov 20. This is one of the biggest FP conferences this year (via @dysinger)
      • bleeding edge #clojure development using #gradle (here, via @wmacgyver) -- gradle seems to be chosen quite often over maven when the latter doesn't fit the purpose (or even if it does!)

      Today in the Intertweets (Nov 5th Ed.)

      • Join us Nov 15 for SF SemWeb install fest. Hands on session "Using Clojure with AllegroGraph" (here, via @Franzinc)
      • Multimaps in Clojure (here, via @stuartsierra) -- source code of how to implement a multimap in clojure.
      • Clojure presentations updated: Creative Commons license. Spread the love. (here, via @stuarthalloway) -- This refers to the very clever introduction to Clojure by the author of Programming Clojure (Pragmatic Programmers press), Stuart Halloway. If you want to hack some clojure at work but they won't let you, use this presentation as a weapon...
      Oh, and it seems that a lot of tweeps thought that Google was into Clojure because they presented their Closure compiler... wishful thinking might have morphed the 's' into a 'j' when reading the news.

      Today in the Intertweets (Nov 4th Ed.)

      Sorry I didn't post yesterday but I fought the dentist and the dentist won... so today we get a doubly long post. Enjoy!
      • You can play with #clojure (reify/deftype/defclass) right now! (here, via @richhickey) -- woot!?!?!
      • We setup a CI build & SNAPSHOT maven repo for #clojure : http://build.clojure.org @technomancy @richhickey & myself :) (via @dysinger) -- woot?!?!?!
      • Be mindful of Clojure's binding (here, via @cemerick) -- plenty of pro advice on bindings. A must read or else you will spend lots hours debugging.
      • Very productive conversation about #clojure in stackoverflow about the use/abuse of recursions (here, via @bugspy)
      • #circumspec a BDD framework for #clojure (here, via @wmacgyver)
      • Excellent post on #clojure and the beauty of functional programming by @laujensen (here, via @stilkov)
      • Clojure N00b Tips from Tim Bray (here, via @hrjn_rss)

      Today in the Intertweets (Nov 2nd Ed.)

      • A good but long title for my #PragProWriMo proj may be: "A Programmer's Introduction to Statistics and Machine Learning with Clojure" (via @liebke) -- That would be great news if it turned into a published book. Looks like the author of Incanter is taking the challenge of PragProWriMo
      • new version of "la clojure" out, and it works with intelliJ maia EAP 90.122 (via @wmacgyver) -- good news for IntelliJ users here (a minority according to latest poll...
      [caption id="attachment_250" align="alignnone" width="427" caption="Clojure Dev Tool Poll"]Clojure Dev Tool Poll[/caption]
      • Writing Clojure code to create fractals on the GPU with Penumbra. (here, via @JonSmithOfDoom) -- Another example of using Penumbra to take advantage of the GPU power. Penumbra is an exciting project!
      [caption id="" align="alignnone" width="409" caption="The mandatory fractal screenshot"]The mandatory fractal screenshot[/caption]
      • For those who dislike Maven: #gradle and #clojure together, clj-gradle step by step (here, via @wmacgyver)

      This weekend in the Intertweets (Nov 1st Ed.)

      • Pushed RC1 of swank-clojure 1.0; please try it out (here, via @technomancy)
      • scriptjure: Generate Javascript from Clojure... Neat! (here, via @RickMoynihan)
      • Write up by Rich Hickey on reify, deftype, defclass (here, via @liebke) -- This is exciting news. First, as @technomancy pointed out, this is a yet another step towards self-hosting-ness of Clojure, but also, it will allow Clojure to run faster in some cases.
      • Any idiomatic #Clojure code is a #DSL. You don't need to go out of the way to do anything magical. (via @debasishg)
      • The effort to get #clojure clr working on a fresh windows system. (here, via @wmacgyver)
      • Poll -- Which of these do you primarily use for Clojure development? Votes are appreciated. (here, via @IORayne) -- go and vote. Emacs with clojure-mode is the winner so far...
      • Clojure + Flex (here, via@jneira) -- Clojure services exposed to Flex via AMF (GraniteDS)

      Today in the Intertweets (Oct 29th Ed.)

      • *Lazy* tail-recursive QSort in #Clojure from Chouser. Beautiful (via @fogus) [clj](take 3 ((fn [x] (qsort (take x (repeatedly #(rand-int x))))) 100)))[/clj]
      • flightcaster, runa.com, incanter: It seems clojure's sweet spot is analytics! what accounts for this? (via @silkodyssey)
        • dynamic functional langs are well suited to analytics plus Clojure's access to java libs (via @liebke, Incanter)
        • one big reason is the functional aspect of Clojure - analytics is lots of math - the second is macros (for DSLs) (via @amitrathore, runa.com)
      • Loaded Spring context into Clojure. Now have entire application and context at my fingertips via the REPL (via @JulienChastang) -- that is an interesting use of clojure... how did you do that?
      • OSGi + Clojure is awkward. @romanroe is doing good work in this area, see here (via @njbattlett)
      • Observations from a real-world Clojure project (here, via @dewitt) -- a very interesting read, wether you're programming clojure or thinking about doing it. 4) is particularly relevant
      • Building a Google Wave robot in Clojure (here, via @thnetos)
      • Before you complain about Clojure being slow, read this (via @hackerlinks)

        Today in the Intertweets (Oct 28th Ed.)

        • QOTD: "using Clojure on project euler problems feels like cheating" (via @superpants500) -- indeed!
        • "Clojure in Action" is now available on MEAP (alpha) on manning.com (here, via @amitrathore and pretty much everyone else) -- Get your copy while it is fresh here (you can save some $$ by using this coupon, valid until Nov 3rd)
        • From Java to Clojure Followup (here, via @citerus_se) -- A followup to the excellent tutorial "From Java to Clojure" with optimizations suggested by @stuarthalloway
        • Compute the shortest path between two nodes of a weighted directed graph using Dijktra's algorithm in Clojure (here, via @Kototamo) -- also, this is yet another new blog dedicated to Clojure. The heat is on now -- we expect lots of articles on clojure from you!
        • cascading-clojure will be open source soon, along with an all-clojure chef-like lib for cluster provisioning and admin (via @bradfordcross) -- I have the feeling that a ton of folks can't wait to get their hands on this project... Thank you guys!
        • A tail recursive QSort implementation in clojure from Chouser  (here, via @fogus)
        • The beginnings of Clojure deftype -- feedback needed (here, via @fogus) -- Simple and beautiful so far. I guess that's because it is written in Clojure?!?
        • GuestVM: Running Java on Xen (no OS in the middle). Can we run clojure on this? (here, via @jhayworth) -- good question! When will you get us an answer?

        Today in the Intertweets (Oct 27th Ed.)

        • Tim Bray's thoughts on Tail Call Optimization and why he likes the explicit recur call in Clojure (here, via @pjb3) -- It seems that Tim Bray is paying close attention to clojure and liking what he sees...
        • A couple of SICP examples in clojure: Integral calculation with Simpson's rule (here)  and  Fixed-point calculations -- and square roots (here, via @m_holmqvist)
        • An Interview with @stuarthalloway about Clojure (here, via @publicfarley) -- you read his book, now you'll hear his voice :)
        • Introduction to Clojure - A green paper from Manning  (here, via @amitrathore) -- you'll need to surrender your email to obtain the paper, but it is worth it
        • I've played around a bit with the Clojure-like Agent concurrency concept in #scala. Hoping for some feedback (here, from @vaclav_pech) -- it is interesting to see the cross pollination of the concurrency features between languages. I believe Groovy is getting a similar feature in their GPar library for parallelization.

        Today in the Intertweets (Oct 26th Ed.)

        Ahh... Mondays! It seems soooo hard for people to craft new thoughts and tweet them!
        • If you want to follow what celebrity developers are twittering about Clojure, try this (via @dvlprs)
        • Messaging in Clojure vs. Erlang (here, via @timbray) -- Tim Bray exposes his early experiences comparing Clojure and Erlang in terms of writing concurrent software
        • Rich Hickey's thoughts on using "Structure and Implementation of Computer Programs" to learn to program in clojure (here, via @stuartsierra)

        This weekend in the Intertweets (Oct 25th Ed.)

        Funny how most of the Clojurers out there get lazy over the weekend --judging by the (small) amount of news:
        • New Pragmatic Press Book: Seven Languages in Seven Weeks: Ruby, Io, Scala, Erlang, Clojure, Haskell, and Prolog (here, via @msusies)
        • Mark Volkmann's slides of his talk at Strange Loop "Tackling Concurrency with STM" (here, via @mark_volkmann) -- if you haven't already done so, check out his excellent (and long) article on Clojure

        Today in the Intertweets (Oct 23rd Ed.)

        • Clojure with Emacs and Slime/Swank on Ubuntu (here, via @jhayworth) -- If you have ubuntu and want to setup a Clojure development environment, this is for you
        • sicpinclojure.com: Structure and Interpretation of Computer Programs to be annotated with Clojure code (here, via @fying_club)
        • freiheit.com are using Clojure and planning to port another web app from CL to Clojure (here, via @mkhl) -- Slides from ECLM 2009
        • A discussion about the next steps for Enclojure, the cloure plugin for Netbeans (here, via @disclojure) -- now it is a good time to provide feedback to the author of this awesome plugin.
        • Is this Stuart Halloway, the author of "Programming Clojure" (hereoriginal tweet, via @ikai)

        Reaching out -- where does disclojure.org go from here?

        I read once that it takes 21 days to create a new habit, and I have been posting here for 31 days now, so I guess this is a new habit for me. When I started this blog I did so in order to be useful to the Clojure community, which today is small, friendly, smart, and it is growing fast. I still intend to be useful and this is the reason for this post. I am reaching out to you my reader for advice on what would make this site more useful to you and the community. I have thought of a few things:
        1. Create a section for clojure projects. Many projects are springing up that are either built in Clojure or are tools for Clojure
        2. Write more original articles (I am planning on creating more time for myself to be able to write more about clojure... stay tuned)
        3. Maybe create some sort of forum? -- there is already an awesome list for clojure, so that would be redundant.
        What do you think? If you have any tips that you want to share, please post them in the comments section. I will be giving some more thought to the potential new features in the coming weeks, but I'd love to hear from you. tbatchelli

        Today in the Intertweets (Oct 22nd Ed.)

        • Uh oh, somebody woke up the Lispers and told them about Clojure... we're in trouble (here, via @cbeust) -- yes, and somebody woke up this zombie rant; I'm looking at you, Cedric. This is a rant by the developer behind Loper OS (an OS built on Lisp) and in this blog post he/she shares with The World his hatred for Clojure for being impure and other many offenses. This blog post is from last June, which is ancient in Internet years, but nonetheless a few dozen of people re-tweeted about it today. Zombie post indeed!
          • As a side note, and as @marcusf points out, you should schedule some time and read the article "The Raise of Worse is Better" that is linked to the Loper OS post, and make your conclusions of whether the author Richard P. Gabriel was right or not in his assertions, now that more than a decade has passed since it was written.
        • Another (very old) Clojure tutorial for non-lispers (here, via @onion_papa)
        • If you are a Spanish speaker, here are a couple of clojure blogs for you (here, via @ajlopez and here, via @jneira) -- oh, and now there is a spanish clojure mailing list too (still empty though!)
        • Tomorrow at Strange Loop I will be demonstrating some new capabilities of the Grails Clojure plugin (here, via @jeffscottbrown)  -- I wish I was there!
        • If you use agents inside Clojure, be sure to call (shutdown-agents) if you want your tests to actually finish (via @hlship) -- a good piece of advice
        • Concurrency Patterns: Java, Scala, and Clojure (here, via @michaelg) -- in this article the author provides his opinion on Java, Scala and Clojure  compare in terms of concurrency on four different scales: 1) how easy is to write concurrent code, 2) How efficient the code is, 3) How fast the code is and 4) how reusable the code is.
        • Another oldie but goodie from Amit Rathore: Clojure, the REPL and test-driven development (here, via @jneira) -- Amit is the author of the forthcoming book "Clojure in Action" from Manning

        Today in the Intertweets (Oct 21st Ed.)

        • An Incanter Cheat Sheet (here, via @liebke) -- Incanter is a Clojure-based, R-like statistical computing and graphics environment for the JVM.
        • Clojure Robot on Google Wave (here, via @gwavecompendium) -- This is a rather old article, from last July
        • Writing a Clojure web server in less than 100 lines (here, via @delicious50) -- That's from 2008, but it shows how to wrap Jetty and how to write a small servlet in clojure.
        • aaaannd... that's it for today.

        Today in the Intertweets (Oct 20th Ed.)

        Today has been a "let's retweet old stuff" day, or so it seems by the amount of chatter related to old discussions about how Clojure is not cool, but between all that chatter there were some good pearls:
        • Clojure makes it into CIO magazine in Australia (here, via @twitt_bot) -- I guess now all our fellow clojurers in AUS can use Cloure in their projects since their CIOs have read about it?
        • Clojure functions with meta-data. Image representation #3 (here, via @fredmn) -- or how to  allow new types in the meta
        • Building a Bifid cipher (here, via @Reviews2Good) -- title says it all, if you're into code theory and criptography

        Today in the Intertweets (Oct 19th Ed.)

        Busy Monday! Mmm,... let's see what we've got here ...
        • Developing Google Wave Robots Outside of Google App Engine with Clojure (here, via @theWE_) -- Follow their design and you won't have to re-upload your application every time you make a change in clojure.
        • Another #clojure book from Mannings "Idiomatic Clojure" by Chris Houser and Michael Fogus (via @wmacgyver) -- that makes it three slated for next year: this one, "Clojure in Action" by Amit Rathore (Manning) and "Definitive Guide to Clojure" by Luke VanderHart (Apress)
        • The case for #clojure (here, via @stuarthalloway) -- It seems that Stu has the rare ability to say a lot with little words. In this article he introduces the titles for four of his upcoming talks, but the titles are full message in themselves, so I'm posting them here individually since they've also been retweeted individually today (you can also access the slides that he is putting together for those presentations):
          • "Clojure's sweet spot is any application that has state."
          • "Clojure is a better Java than Java."
          • "Design Patterns are a disease, and Clojure is the cure."
          • "Write functional Clojure and get shit done." -- heh... "Getting Shit Done" is also my wife's version of GTD (Getting Things Done)
        • Rich Hickey has been busy thinking about new possible features for Clojure. Here are two relevant tweets:
          • Rich Hickey's proposal for a new protocols feature in Clojure (here, via @liebke)
          • Clojure Datatypes (here, via @fogus)
        • From Java to Clojure (here, via @weakreference) -- "Patrik Fredriksson takes us on a tour from Java to Clojure, by using a step by step conversion from one language to the other. If you're a Java programmer who wants to know a little bit about Clojure, make sure you come along."

        This weekend in the Intertweets (Oct 18th Ed.)

        • Clojure turns two! (here, via @ ... everyone!) -- Rich Hickey's celebratory post
        • Now I get what the veterans in the "Coders at Work" book mean (here, via @alenribic) -- how we might have just come full circle back to lisp
        • La Clojure, the #intelliJ plugin for #clojure is available for community edition, moves to git://git.jetbrains.org/idea/clojure-plugin.git (via @wmacgyver) -- The plugin is already up in the plugin repository, so if you download ItelliJ Idea community edition, just go to the plugin section and search for clojure... and off you go! The REPL is fixed and works well now.
        • Statistical Learning in Clojure Part 1: LDA & QDA Classifiers (here, via @liebke) -- An in-deep article on how to write classifiers and train them following the teachings of the book "The Elements of Statistical Learning" (which happens to be available for free). You might have to dust up your Statistics and Probabilities knowledge to follow the article, but well worth it!
        • Python vs Clojure: Reloaded, a friendly apples-2-apples followup (here, via @laujensen) -- Lau seems to be like creating trouble, so this article further compares Python and Clojure, this time trying to make a fairer comparison. Worth the read (Edit: I don't think you can compare two programming languages without creating some kind of trouble, so kudos to Lau for not backing out when Python practitioners get upset)
        • Java frameworks that rely on method annotations exclude themselves from alternate jvm langs like #jruby and #clojure. (via @dysinger) -- good point indeed
        • To start a REPL in any running #clojure process (here, via @wmacgyver)
        • The differences between 'concat' and 'into' (here, via @jneira)

        Today in the Intertweets (Oct 15th Ed.)

        • Taming multidimensional Arrays in Clojure (here, via @cgrand) -- How to speed-up access and manipulation of multidimensional arrays
        • An an embedded DB library for Clojure (here, via @yuricake) -- It makes it very easy to store clojure data to the disk
        • Clojure turns 2 (here, via @... everyone it seems)
        • IntelliJ IDEA 9 will have a free community edition, which is also open sourced (here, via @emiliosuarez)

        Happy Birthday Clojure!

        As many of you have already tweeted about, today marks the second anniversary of Clojure's release to the public, as this email from Rich Hickey himself asserts. They have been two fast years, but something makes me think the next few years will feel much faster. Screen shot 2009-10-15 at 9.59 Here's to Clojure: Happy Birthday!

        Today in the Intertweets (Oct 14th Ed.)

        • A look at Python and Clojure in view of functional concurrent challenges (here, via @laujensen) -- Lau walked himself into a land mine field by daring to challenge Python...
        • New Clojure Maven archetype using 1.1 plugin, ready to try out (here, via @stuartsierra) -- after the release of clojure-maven-plugin v.1.1 yesterday, the new archetype will only make it much easier to bootstrap a new clojure project with Maven
        • A Clojure Plugin for Gradle (here, via @kotarak) -- Gradle is a very flexible build system that uses Groovy internally and also performs dependency management via Apache Ivy
        • Image representation and manipulation with Clojure (and Java) (here, via @fredmn)

        Whatever happened to "La Clojure"? (IntelliJ IDEA's cojure plugin)

        Most of our readership and other clojure lovers come from either the Lisp/Scheme/Haskell world or they come from the Java world. For the former Emacs is usually their weapon of choice, being it very focused on the lispy aspects of Clojure. For the ones that come from Java there are three IDEs that are used most often: Eclipse, Netbeans and IntelliJ IDEA. All of them have now Clojure plugins in various states of development (here, here and here respectively) [caption id="attachment_167" align="alignnone" width="340" caption="La Clojure's website"]Screen shot 2009-10-13 at 11.51.11 PM[/caption] IntelliJ is regarded as the best Java development tool for much of the Java developers, and it is good enough to have people pay for it (the other two being free.) Some time ago they started developing a very promising Clojure plugin, dubbed "La Clojure". For months the development of La Clojure was very fast and the integration with Java was really astounding given the dynamic nature of Clojure. In its current incarnation, this plugin has some major issues, the most annoying one being its badly broken REPL support. But you would still be able to use its fast code navigation, its nice, smart and well executed Java/Clojure code completion and other goodies that IntelliJ IDEA has spoiled us with. Its development was fast indeed, at least until last May. Then it stopped completely, at least judging for their public SVN repository. No new versions of the plugin have been published since May 20th 2009, and that makes it almost five months now. Does any one know what's going on? Is it a dead project? (I surely hope not) Well, at least the good news is that Enclojure, the plugin for Netbeans seems to be moving along pretty quickly, and their REPL support is outstanding.

        Today in the Intertweets (Oct 13th Ed.)

        I guess that in order to make it up for a slow news Monday, we have a busy news Tuesday... way to go!
        • Amit Rathore got the Green Paper out for his upcoming book Clojure in Action - go get it now; it will be an awesome book (here, via @amitrathore)
        • xpojure.com  -- Post your code snippet n hit the "run snippet" button. Works for clojure snippets only so far. (here, via @alenribic) -- this is an awesome idea. Good luck!
        • Functional and Beautiful - Building a CRUD application using Clojure and Flash Builder 4 (here, via @anirudhs) -- Don't miss out on the simplicity of the data access code.
        • Wow, clojure-maven-plugin 1.1 is in central already, now that's service! (via @talios) -- with new clojure:repl and clojure:swank goals

        Today in the Intertweets (Oct 12th Ed.)

        very slow day...
        • A traffic simulator in clojure (here, via @zdsbs)

        This weekend in the Intertweets (Oct 11th Ed.)

        • Snazzy repl management, lots of perf imp and bugfixes in the new version of #enclojure 2009.09.22-p1 (via @cemerick) -- I am really liking Enclojure as a Java/Clojure IDE
        • Why JVM (and not .NET) is the "primary" platform for Clojure (here, via @ajlopez)
        • A glossary for Rich Hickey's presentation on Persistent Data Structures and Managed References (here, via @raphscallion)
        • Distributed concurrent applications in Clojure? (here, via @cheez_cake)

        Today in the Intertweets (Oct 8th Ed.)The

        • The new clojure-maven plugin with REPL and swank support is picking up momentum. Now it has a mailing list (via @talios)
        • Enclojure's REPL is not just for Netbeans (here, via @ffailla) -- If you still haven't given a test to Netbeans+Enclojure, it's time to do it. The REPL support is excellent and this article describes how it is done. Netbeans is not too shabby as a clojure editor either.
        • Nü Echo has a clojure interface to NuGram Hosted Server. Time to make clojure talk? (here, via @nugram)
        • Generating Clojure code from an RDF ontology (here, via @stuartsierra) -- A nice example of metaprogramming

        Squaring the Circle, or how Rich Hickey explains why Clojure is a prime solution for developing in the multi-core world

        InfoQ recently published the video of the one of the two presentations that Rich Hickey gave at QCon London '09 titled "Persistent Data Structures and Managed References" (here). Although the presentation touches on Clojure, what Rich talks about applies to any would-be concurrent programming language. Screen shot 2009-10-08 at 11.05.39 PM Coincidentally, I recently read the very relevant "The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software" by Herb Sutter. In this article the author puts forward the arguments for a necessary paradigm shift in software for small and medium sized computers (as this shift already happened in large computing systems): the need to design our software to leverage multiple CPU cores  as the only way to make that software run faster. CPUs are not getting faster anymore, but they are getting more powerful, and to leverage the new power one must write software in a way that all the cores in the same CPU can be fully utilized, that is, programs must be able to leverage multiple concurrent threads of execution. The problem? Most of the programming languages out there, and especially the most commonly used, are not a good fit for concurrent execution on multiple CPUs or CPU cores. Concurrency in those languages is mostly an afterthought, and writing multi-threaded software on those languages is cumbersome and error prone. What makes concurrent programming hard today is the difficulty of having each thread of execution obtain a coherent view of the state of the system while other threads are changing this very same state. In this talk Rich Hickey explores the issues with concurrent software development when done with the tools that most current computer languages provide. At around minute 19, Rich uses a genius metaphor of  race-walker foul detection to illustrate what is the problem with multiple threads concurrently updating the system state, and how a solution would look like. To detect fouls in a race-walker race the judges use snapshots of the race to see if the runners have both feet above ground. The judges can take their sweet time to look at the snapshot while the race continues, and without worrying that the fact that the race is still on will not change the contents of their snapshot. The point that Rich makes is that a similar system is needed in concurrent software development, in which an execution thread can get a snapshot of the system state and work with it independently of the other threads, without stopping any of the other threads and without worry that the snapshot will change either. In a sense, each thread can 'live' in different points of the timeline, the same way the judges are inspecting a snapshot in the past of an ongoing race. Once the problem is described Rich proposes that a functional language with persistent data structures and strong concurrency semantincs would provide the features described in the above paragraph. Persistent data structures are like any other data structure in the sense that the data they hold can change over time. What makes them unique is that the changes in the structure don't affect past values of it, that is, some thread can be looking at the structure at time t-1 and some other thread might have changed it at time t. Both threads would be looking at the same data structure, but the contents would be different. The values of the structure at any time before now remain untouched no matter what happens in the future, and thus all threads have a coherent (albeit out of date) view of the system state stored in those structures. One important fact to note is that persistent data structures are almost as fast as non-persistent or mutable ones. The strong concurrency semantics, provided by the Software Transactional Memory (STM) in the case of Clojure, allow the developer define how change will be affected to the persistent data structures. The concurrency primitives that provide these semantics describe how change is to be performed on a single or on multiple data structures in a way that the system state is always correct and coherent, and so that not two threads can, so to speak, step on each others toes. So we have a functional language in which functions have no side effects and so every time they are called with the same parameter values they yield the same result, and thus it doesn't really matter when they are called. Then we have data structures that represent value over time, so that it doesn't matter when a thread is using them. Finally, we have a STM system that isolates the state changes between threads so that it doesn't matter when threads are making those changes. With all these features what you end up with is with a programming environment in which you can use many threads of execution that will work together without correctness issues and minimal interaction between them, thus being able to fully utilize the power of the new multi-core CPUs. Watch the presentation here. Enjoy!

        Today in the Intertweets (Oct 7th Ed.)

        • Stuart Halloway's take on Lau's "Brian's Brain" blog post (here, via @stuarthalloway) -- the original blog posts from Lau can be found here and here, and we wrote about them too in here. Stuart evolves Lau's data structures, adds some goodies and provides some insightful advice on code organization
        • Cray, a ray tracer in Clojure (here, via @newsycombinator)
        • An upcoming Clojure course taught by none other than @richhickey and @stuarthalloway (here, via @pragmaticstudio) -- will be in Reston, VA sometime in early 2010

        Today in the Intertweets (Oct 6th Ed.)

        • Tetris in 214 lines of code (here, via @dewitt) -- this is an example of 'penumbra', an idiomatic opengl binding for clojure
        • Getting started with Clojure and Vim (here, via @jakemcc)
        • "clojure syntax is the mud and macros is the potters wheel" (via @jneira) -- I should start collecting these kind of praises to clojure...
        • Downloading a bunch of files in parallel using Clojure agents (here, via @ghoseb)
        • Expert to Expert: Rich Hickey and Brian Beckman at Microsoft campus (video here, via @ch9) -- a must watch, obviously...

        Today in the Intertweets (Oct 5th Ed.)

        • Scala to get Clojure-style persistent collections (here, @m_st) -- (Ed. but having persistent collections doesn't make it like clojure)
        • Simple message passing using #clojure agent hits 20k/sec. (here, via @wmacgyver)
        • A cool trick to separate function definition from optimization by the use of memoize (here, via @jneira) -- alter-var-root?!? who knew this existed?
        • Event Sourcing in Clojure (here, via @markhneedham)

        This weekend in the Intertweets (Oct 4th Ed.)

        This weekend there have been only three types of tweets on clojure:
        1. tweets about Rich Hickey's QCon London 2009 presentation on time, concurrency and persistent data structures : "Persistent Data Structures and Managed References"
        2. tweets about Stuart Sierra's Clojure+Hadoop at Hadoop World in NYC
        3. the rest.
        I will probably focus on the first two in followup articles, so here are the tweets in 3)
        • Clojure development on Android (here, via @philwhln)
        • An interesting Clojure startup script written in Ruby  (here, via @cypher)
        • A cool trick to get consistent renderings of Markdown texts both in the server and in the client by embedding JavaScript (rhino) in Clojure (here, via @bubbl_scala)
        • A 'processing' wrapper for Clojure (here, via @pedroangelo)
        • Parallel port scan in Clojure (here, via @vdichev)
        • A quick tip for debugging and profiling Clojure code with multimethods (here, via @jneira)

        Today in the Intertweets (Oct 1st Ed.)

        • Nice little #clojure cheatsheet (via @stuartsierra) -- Also can be found in PDF form (here)
        • "Java is dead, but you'll learn to love it" (via @cemerick ) -- great article from Chas Emerick. The fact that Java is 'dead' (as in, not evolving much lately) can be a good thing for the JVM ecosystem and by no means it means that Java is going away. Must read.
        • That's intruiguing!: "@stuartsierra sweet! starting a swank server from maven is now my favorite way of running clojure. incredibly useful." (via @appelberg)

        A good intro on how to build parallelizable clojure code

        Lau from bestinclass.dk has written another excellent article. I would highly recommend going Lau's blog and reading every single one the articles in there, for their high educational value, especially if you are new --or even not so new-- to Clojure in particular and Functional Programming in general. The article referred to walks the reader through the construction of a Brian's Brain graphical animation in 2D with only 68 lines of Clojure code. Yes, 68 lines. The take-away of this article, in my opinion, is how Lau breaks down what would be an iterative problem into a functional one, only to then show how this functional problem can be easily parallelized by replacing a sequential map with a parallel map (pmap). Once your data is known to be immutable and you have broken the problem down to a functional one, the parallelization of your code execution is that easy. Lau later shows how this parallelized implementation lets clojure fully utilize all the cores available in your machine. In the future, when asked about the suitability of functional programming and persistent data structures in today's age, I will refer people to this article since it exposes the magic of the functional paradigm and how such paradigm can be leveraged today with multicore CPUs. The discussion on how to create the graphical representation of Brain's Brain is also interesting, and goes to show how good the interoperability between Clojure and Java can get. I remember when learning functional programming back in school that the most difficult part of writing Lisp or ML code was not the coding itself, but the breaking down of the problem at hand into small pieces and then put those pieces together in a functional manner. I remember that the hard part of it was to unlearn the 'loops' that are so pervasive in imperative languages, and by unlearning those loops one's brain could start thinking freely again. I recall those moments as ones of ecstasy. This article brought back to me some of those memories :) "Brian's functional brain"

        Today in the Intertweets (Sept 30th Ed.)

        Slow day today...
        • It seems confirmed that there is a clojure book coming from Manning and by Amit Rathore, at least judging from this tweet from @amitrathore: "@jboner it's planned for next year, but the Manning beta book program MEAP release is planned for december-ish" (here). That makes two new Clojure books, the other one being the one published by Apress (here) and authored by Luke VanderHart
        • Another article on Monads and Clojure brought by learnclojure (via @jneira, the article here) . The blog provides very approachable articles
        • A simple genetic algorithm in clojure here (via @hackerlinks)

        Today in the Intertweets (Sept 29th Ed.)

        • "Thinking #clojure needs its own Maven repository." (link) This post by @stuartsierra seems to have started a chain of -- hopefully eventful -- events. Although the opinions on Maven are always divided (can't we all get along?) IMHO having all clojure needed jars in a Maven repository would be a good thing for all, even if you don't use Maven and use something else like ivy. CPAN style.
        • Learning #Clojure? A Simple Monad example (via @gdickens, link)
        • Interesting thread on #clojure eval, environments, compilation (via @bradfordcross, link)

        Today in the Intertweets (Sept 28th Ed.)

        • Haskell/Clojure/Ruby/Groovy/Scala comparison (via @timbray) -- This is a response/follow-up to the series of articles posted by Stuart Halloway (of "Programming in Clojure" fame) in which he reasons about what are the characteristics of the probable successors of Java (on the JVM). The articles are named under the umbrella name of Java.next . In this article, Curt Sampson adds Haskell to the mix.
        • The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software (via @ajlopez) -- Not directly related to Clojure, but it does provide the rationale behind the need to explore languages that deal with concurrency in a explicit, elegant and safe manner (clojure anyone?)  The article is rather old though, from 2004, but has been updated recently.
        UPDATE: Fixed link in first article. Thanks for the readers who noticed!

        This weekend in the Intertweets

        This weekend's #clojure tweeting activity can be summarized by this article: Chaos Theory vs. Clojure (via @laujensen). Do not miss the updates. The rest of this weekend's tweets can be divided between 1) retweets of the mentioned article (roughly 50% of the tweets) , 2) people that think they should try Clojure, and 3) people that can't get over the () syntax... as usual. UPDATE: Lau's blog has a new address: blog.bestinclass.dk. The article on Chaos Theory and Clojure can now be found here.

        Today in the Intertweets (Sept 24th Ed.)

        Today in the Intertweets (Sept 23rd Ed.)

        Today in the Intertweets (Sept 22nd Ed.)

        Today in the Intertweets (Sept 21st Ed.)

        Time is the new Memory

        If you managed to download the slides of the Keynote that Rick Hickey gave at the JVM Language Summit you will find this interview with Rich at Artima.com to be a good companion to those slides. Rich discusses how the time aspect of software execution has been left out of the most common programming languages and how nowadays it is up to the developer to guarantee that the multi-threaded execution of the code always yields correct results. But today, when a thread of execution 'sees' the system state, it does not necessarily see it in a time-consistent manner; it sees the state in a constant flux in which objects can mutate  while being observed or between observations (i.e. look at an object, make a decision, look again, the object has mutated). Developers currently must resort to the use the thread locking features available in most modern languages to make sure each thread's view of state is somewhat consistent, but this solution is not comprehensive, very error prone and hard to reason about. Time is not explicit in those languages, it's only implicit. Later he proposes that the use of persistent data structures with certain time constructs (STM, agents and atoms) creates an environment in which the observation of the state by every thread is time-consistent. No execution threads will see any of the values that it is relying on change independently, and when they do change, the thread will know it is reading values that might have mutated. As CPUs are gaining more and more cores, the aspects of time and time-consistent state will become more and more relevant and key to producing applications that leverage all this new power. In the same way Garbage Collection removes memory management from the list of the developer's responsibilities and thus making GB'd software more reliable, Clojure removes the complexity of making many threads of execution work concurrently without sabotaging each other. Interesting read nevertheless. "Time is the new Memory"

        Today in the Intertweets (Sept 20th Edition)

        Today in the intertweets

        Today in the intertweets

        Cascading & Clojure meetup in SF (9/24/09)

        from here:
        Rapleaf is excited to announce a meetup on Cascading and Clojure on September 24th at the Rapleaf offices in downtown San Francisco. At this meetup, we'll cover some real world uses cases of Cascading and Clojure and provide information on how these technologies are progressing. Agenda - Bradford Cross from FlightCaster will discuss his work with Clojure + Cascading - Nathan Marz from Rapleaf will cover how Rapleaf uses Cascading to do large scale batch querying. - Chris Wensel from Concurrent, Inc will cover Cascading 1.1, 1.5, and roadmap of changes. Time: 6:30p - 8:30p Where Rapleaf HQ 667 Mission Street, 4th Floor San Francisco, CA 94105 Refreshments will be provided courtesy of Rapleaf.

        Rich Hickey speaks about the future of Clojure

        You can now find online the presentation slides that Rich Hickey used in his talk at the JVM Language Summit about the new concurrency features in  Clojure. In this presentation Hickey explores the important aspect of Time and how observers might view the same dataset at different timelines, and how this time disparity is a key issue in developing concurrent software. A good read indeed, although I hope the video gets posed online sometime soon (maybe at InfoQ?) Are We There Yet? Rich Hickey's presentation slides