Editorial Hi Clojurists,
Back to the grind of finding interesting and varied content to titillate and inspire those Clojure-infused brains.
You may notice that each link below has a DISCUSS link included with it. I'm trying to get a discussion board started. I would love for all of the readers out there to start getting to know each other and helping each other. You obviously have something in common (Clojure, at least). So I have a favor to ask: please follow one of those DISCUSS links that interests you and post something related—anything, really! I promise I'll respond :)
You can log into the discussion board with Github or Twitter. Thanks in advance!
Eric Normand <firstname.lastname@example.org>
PS I love getting suggestions from readers. Also, I love emails from readers in general. Email me and tell me where you're from!
Joe Armstrong is always informative, entertaining, and edifying on the subject of fault tolerance. The man invented Erlang. How can we create fault tolerant systems when our systems are unspecified? It's kind of the same talk he's given for years, which has its roots in his PhD. They are great, big ideas that need learning.
People have claimed that even asking this question is a mistake (a common one) but I will ask it nonetheless: how can we bring these principles to Clojure to build more fault tolerant systems? DISCUSS
There are two things I like about this talk. One is the content. It's actually a pretty good story about helping a business make more profit by making a web server more resilient. The video contains its own definition of resilient, which is to act "with character" during times of stress. It's a good (and funny) reminder of our failings as developers who are married to our own code.
The second thing I like is his no-nonsense definitions. Well, I say "no-nonsense" but there is a little nonsense in them. Just enough nonsense to make your spine tingle and wake you up, to cut any arguments out by the root. They are an engineer's definitions, whose overabundance of honesty is tempered by self-deprecation. This kind of definition is often the only defense truth has against wishful thinking. What are your favorite engineer's definitions? DISCUSS
Clojure, like many programming languages, has a lot of syntax that is based on non alpha-numeric characters. For instance, #"" is different from "". How do you search for those things using Google? If you don't know what it's called, or what it's doing, there's no way to search, because Google removes most punctuation.
This blog post is kind of a guide to those characters. If you don't know what some character means in Clojure code, search this page for it and it will help you. DISCUSS
Michael Nygard presents some ways to avoid the CAP theorem. The CAP theorem only applies to distributed systems that can only communicate through message passing. If you allow them to communicate in some other way, you can bypass the limitations of CAP.
I think this talk is important because there are lots of people talking about the CAP theorem without realizing what CAP actually applies to. I was one of them :) DISCUSS
I've used Quil for a couple of hobby projects. It's a great system and you should check it out. However, I've always had a small problem with how imperative it is. While writing programs using it, I inevitably put a functional wrapper around it.
Luckily, a recent version has a "functional mode" using the new Quil middleware system to make the library more functional. It's essentially how I would want it, so I think I'm going to use that from now on. DISCUSS
When you run your tests, and there's a failure, how is the failure reported? What are the ergonomics of the different testing frameworks? Does the library help you find the failures among successes? Does it help you figure out what the error is? This blog post compares the output of the various Clojure testing libraries. What testing library do you use and why? DISCUSS
David Nolen is out evangelizing ClojureScript. Not ClojureScript itself directly. But the philsophy of ClojureScript—how immutable data structures can be fast (sometimes faster than their mutable counterparts), how immutability simplifies systems, how interactivity can be functional. It may be preaching to the choir if you subscribe to this newsletter. But this is important stuff. It's yet another example of how Clojure is affecting the rest of the industry and is on the cutting edge of software engineering. DISCUSS
This library claims to be Category Theory in Clojure. It contains Functors, Applicative Functors, Monads, etc. Check it out. DISCUSS