PurelyFunctional.tv Newsletter 287: DataScript, GraphQL, CRDTs

Sign up for weekly Clojure tips, software design, and a Clojure coding challenge.

Issue 287 - August 13, 2018 · Archives · Subscribe

Hi Clojurationists,

I've just been digging this lovely tweet from Alex Miller.

Rock on! Eric Normand <eric@purelyfunctional.tv>

PS Know a friend who might like this? Ask them to subscribe!

The #1 Most Important idea in Computer Science Podcast

On my podcast, I talked about what I think is the most important idea to come out of computer science, and about how Lisp embodies that idea in a way that most languages do not.

Turning the database inside out with Apache Samza YouTube

We were talking about Kafka and Onyx on the Apropos show the other day because of the acquisition (congrats to everyone involved!). I've never needed Onyx or Kafka, so I'm not quite sure what they are for. Mia pointed me to this great talk about a library that makes working with event streams very interesting. It's still a lot of operational overhead for the kinds of things I'm into. But it's still a great talk.

schism - CRDTs in Clojure(Script) with EDN Serialization GitHub

I've always wanted CRDTs in Clojure. Now I have them.

CRDT stands for Conflict-free Replicated Data Type. They're data structures that can be replicated on different machines, modified independently, then merged back together. For example, you can add different things to sets on two machines then merge the sets together into a single set.

This project has CRDT versions of sets, maps, lists, and vectors.

Clean Coders hate when you use these programming tricks YouTube

Let me warn you: this is dry British humor at its driest. When I first discovered Kevlin Henney, I sat down with a bowl of grapes next to my computer. By halfway through the talk, they had become raisins. I had to turn back. Just like you can't cross a desert without extra water, you can't finish a Kevlin Henney talk without a full bottle. You may also need some chapstick.

However, with correct provisions, it is safe. And the content is great. Anyone who refactors a giant C++ method down to nothing is okay in my book.

Get Kata YouTube

Another good talk by Kevlin Henney (same dry humor warnings apply). This one is great because it shows all sorts of ways you can solve the same problems.

I also envy his slides. This guy has a lot of talks under his belt, and if you watch a few, you can see he reuses slides. But he must have thousands of great slides ready to go for any topic.

Artemis Documentation

I've been really enjoying the documentation of this ClojureScript GraphQL client. GraphQL adoption in the JavaScript world is very high. I'm eager to learn it myself. This library looks like it will be very useful.

The Bootstrapping Mindset From the archives

This is an article I wrote last year about how bad the web is for bootstrapping. It's not a robust abstraction we can build on top of. I worry that we will be stuck in it, forever extending it, instead of building something better on top.

The problem with programming and how to fix it

Jonathan Edwards laments the state of the art of programming tools (namely stacks and languages). Why are they so hard to use? What can be done to make them easier?

DataScript as a Lingua Franca for domain modeling

A cool article by Valentin Waeselynck about using DataScript to develop a domain modeling system. From the data in the DataScript database, you can generate any number of things from it, including your database schema, your GraqhQL Schema, data validation rules, and more. When the going gets tough, the tough reify assumptions into data. Val is really killing it with these articles.

Clojure Collections Currently recording

Two more quick lessons this week about Clojure Collections, both about access patterns. These access patterns help you choose which collection to use to solve your problem.