PurelyFunctional.tv Newsletter 225: Spec, Deep Learning, New Orleans

Issue 225 - May 15, 2017

Hi Clojurists,

I was reminded this week by Arne Brasseur that business is hard. There are occasional runaway successes, but in general, building a business is a longterm project. Arne's story parallels my own. And, like Arne, I still don't make a fulltime income from my videos.

There are many reasons for the lack of a runaway success, but the main one is the size of the Clojure community. That may seem obvious, but it wasn't to me. Like Arne, I counted on 200 paying members "so I could quit my job". When you look at which language communities have successful subscription offerings, you see PHP, JavaScript, and Ruby bringing in lots of money. I've heard of one PHP tutorial service making $1 million per year selling screencasts. They probably have more subscribers than there are paid Clojure programmers (by my informal reckoning).

Which leads to some questions: is there anything inhibiting Clojure growth? How fast is it growing? What might make it grow faster? Where is the growth coming from (new programmers or programmers from particular languages)?

But I'd like to bring up a different issue: do people have a burning need for training in the Clojure world? Let me put it this way: not only are PHP and JavaScript very popular languages. They are also languages with obvious and well-understood flaws. Most of a developer's attention and knowledge is dedicated to working around them. There is a market for lessons in "style" (another word for avoiding flaws). For example, the book Refactoring to Collections is about teaching map, filter, and reduce to PHP programmers who are tired of imperative loops. The pain is real (buggy loops), the value is clear (faster development and reduced maintenance cost), and there are m any customers are willing to pay (freelance web developers trying to pay the bills).

Do we have that in Clojure? Do we have a real pain? I'm betting that a pain is the learning curve. People also complain about the error messages. Is the value clear? I'm not so sure. People want to learn, but will they pay to learn more quickly? And as much as people complain about the error messages, how much would they pay to make them better? And are there customers? That's similar to the growth question from before.

I ask these questions all the time looking for opportunities. And you can do this too: What do you think are the problems with Clojure? They don't have to be with the language itself, but could be anywhere in the Clojure experience. Then ask, is the value clear?

Hit reply and let me know what you came up with. I'm looking forward to your answers.

Please enjoy the issue.

Rock on!

PS Want to get this in your email? Subscribe!

Dear Paddy Cosgrave Facebook

You'll need some context before you read this letter. Collision Conference was recently held here in New Orleans. It's a big event compared to the size of the tech industry here in New Orleans. And they do it between the two Jazz Fest weekends. It's easy to see why they do this---tack a weekend onto your business trip and you get to see Jazz Fest. But it's also a hard time in the city---the hotels are double or triple the price, the city is full, and transportation is difficult. This was the second year it was here, and apparently it could have been the last.

I share this with you because I love New Orleans. I was born here and I grew up here, and I choose to live here. Robert Scoble, in his plea to keep the conference in New Orleans, shows that he really gets what makes New Orleans special. We're lucky to have him on our side.

BTW, a short time after this letter made the rounds on Facebook, tickets went on sale for Collision 2018, in New Orleans.

PS I'm still gungho about a Clojure conference in New Orleans. I got a lot of positive responses (thanks, everybody) and there are other people here excited about the idea. But I don't think it will happen this year. You have to plan these things far in advance to book venues and such.

James Reeves on Defn Podcast

James Reeves is better known as @weavejester. He's the creator of Compojure and Hiccup and the maintainer of Ring. His code is quite consistently styled and of high quality. This interview with him was really great. Kudos to the folks behind defn for doing a great job on this.

How to push past the trolls and get the help you need on Stack Overflow

Billed as a guide for coding newbies, this article gives the best advice for asking questions on Stack Overflow I have seen. Kim Crayton reveals that she is a gifted teacher and can work both sides (expert and newbie) of the developer community.

Clojure Spec

Rich Hickey gave a talk at LispNYC about clojure.spec. This one shows the "why" of the library from another angle: the experienced Lisp crowd's perspective. I never tire of Hickey talks and this one is no different.

How to be a compiler --- make a compiler with JavaScript

Mariko Kosaka breaks down the traditional steps of compilation in a functional style of JavaScript.


Intro to Deep Learning w/ Clojure

Julio Barros shares his slides from a talk he gave on Deep Learning in Clojure. There's an introduction to Deep Learning and a bit of Clojure code using Cortex.

Why your programmers just want to code

Boy did my friend Marcus Blankenship really nail this one. Have you ever felt like you're thinking less about why you're coding and more about how you're coding? From the article:

[The] concern that "We aren't building the right thing" will be replaced with "We aren't building the thing right."

This article explains, from a manager's perspective, how our culture can slowly lead us down to the path of focusing only on our work, and not how work impacts the business and others.

clojure.spec: a lisp-flavoured type system

Simon Belak presents clojure.spec to a functional programming audience. Spec has some deep ideas in it, so we need a lot of these "introductions". And Belak adds a lot of perspective to it, including how spec will impact live coding and how we code in the near future.


Jessica Kerr brings up an important issue: reusing code has a cost. Pulling out common code into a library introduces a shared dependency between two systems. Before, they could evolve independently. But once they have a common dependency, they will be coupled together.