Clojure Gazette 1.83

Weird Characters, Quil, and Resilience

Clojure Gazette

Issue 1.83July 06, 2014

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!

Sincerely,
Eric Normand

PS I love getting suggestions from readers. Also, I love emails fromreaders in general. Email me and tell me where you're from!

Fault Tolerance 101

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

From Instability to Resilience: The Story of a Web Site

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 profitby making a web server more resilient. The video contains its owndefinition of resilient, which is to act "with character" during timesof 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

The Weird and Wonderful Characters of Clojure

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

Exploiting Loopholes in CAP

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

Quil Functional Mode

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

Comparing Clojure Testing Libraries: Output

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

A language in 20 minutes

A fun talk showing the creation of a Lisp in 20 minutes. It's written in Javascript. It's amazing how small a Lisp can be. DISCUSS

Immutability, interactivity & JavaScript

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

Fluokitten

This library claims to be Category Theory in Clojure. It contains Functors, Applicative Functors, Monads, etc. Check it out. DISCUSS