Clojure Gazette 141: Spam, Transit, Modules
Spam, Transit, Modules
Issue 141 - September 14, 2015
I was reminded of something very important recently by someone I follow on Twitter. She said (paraphrasing) "I work hard learning to program not for the love of programming but to make things I want to see in the world." At first I thought "She's right! Am I wasting my life loving the hammer instead of the shelter it can build?" What am I building?
But then I remembered: there is a purpose. I think programming is the most significant medium since the printing press . The printing press made owning books---and access to the world's knowledge---incredibly common. It gave people a reason to learn to read. And it changed the shape of academic discourse.
Programming could have such profound changes in the next few hundred years. Programming gives us the closest thing to extending our thinking that we can find. And debugging is the closest thing to thinking-about-thinking. It has the power to change us as much as or more than print.
And that's why I learn all of this technical stuff. I want to make this more accessible to the masses. From one side, it's about learning how to teach programming like we know how to teach children to read. Alphabet blocks, "A is for Apple", picture books with easy words, Dr. Seuss, etc. And from the other side, it's about making programming easier, like how Charlemagne simplified the script without losing any expressive power.
When I want to learn something, I can code up a simulation. I have the skills. But most people do not, and so can only rely on someone else writing the simulation. It's one-way communication. The consumer cannot change the program and send it back to the producer and say "Great idea, but what about this?" There is no dialog of ideas.
I dream of a day when programming is as common as reading and writing. Not for economic reasons like it being a steady job, but for the same reasons we learn to read. It develops human potential, enriches lives, provides opportunities, and gives us more mastery over our well-being . And with computers integrated into everything in our lives, we will need the skills to make them our own.
PS Want to advertise to smart, talented, attractive Clojure
PPS Want to be more attractive? Subscribe !
Have you wanted to learn Om in an effective and fun way? Well, your chance is coming soon! I am releasing LispCast Single Page Applications with ClojureScript and Om to the world in one week. It guides you through building an Om app interactively from the ground up. Find out how to get a discount by signing up for the email course .
A poignant list of skills are conspicuously absent from Computer Science curricula.
This article tries to answer the question of what Haskell use at Facebook says about the future of programming. Although that's shortsighted, for a popular tech magazine, it's actually a good introduction to the tradeoffs of Haskell (e.g., power vs. ease of learning). The conclusion is a bit grim for Haskell.
I really appreciate the fresh perspective on third party libraries. We're so used to having so much code available to us so easily. Short term, it's just a line in the dependencies file. But long term, who knows?
Transit is an interesting technology. It's the semantics of Edn but encoded in JSON instead of in a string, which lets it use the browser's built-in JSON parser.
It's great to see a shout-out to David Nolen. He's truly someone to look up to.
Jessica Kerr is awesome and this discussion about Schema, test.check, and other great stuff was a pleasure to listen to.
I have not yet played around with Devcards, but they look awesome. Devcards is made by the same programmer who brought us Figwheel, Bruce Hauman.
Google is getting into the "virtual DOM" space with a new approach that promises to have lower memory usage than the typical virtual DOM libraries (React, etc.). It's a lower-level API, which they are calling a compila tion target. It seems like a great thing to compile Hiccup to. :)
Wow, ClojureScript is really powerful. You can split compiler output into independent files, called Modules. If done correctly, it means you can reduce the amount of code the browser will have to download. This post details how the author set up ClojureScript Modules for his site.