PurelyFunctional.tv Newsletter 287: DataScript, GraphQL, CRDTs
Sign up for weekly Clojure tips, software design, and a Clojure coding challenge.
I've just been digging this lovely tweet from Alex Miller.
PS Know a friend who might like this? Ask them to subscribe!
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.
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.
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.
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.
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.
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?
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.