Subscribing to The Cognicast
As we move to complete the technical infrastructure work around the merger of Relevance and Metadata Partners into Cognitect, we will definitely be providing a subscription feed for The Cognicast. In the meantime, you can be sure not to miss an episode by continuing to subscribe to ThinkRelevance: The Podcast via the above links. All new episodes of The Cognicast will be published via these existing channels, and when we do get a new feed, we'll figure out how to make the transition seamless.
You can send feedback about the show to firstname.lastname@example.org, or leave a comment here on the blog. Thanks for listening!
Our Guest, Reid Draper
- [04:40] Reid was a panelist on the Think Distributed podcast recording at StrangeLoop.
- [05:18] Reid works at Basho, makers of the Riak distributed database.
- [05:30] Reid Draper and Sean Cribbs did a QuickCheck unsession at StrangeLoop.
- SimpleCheck is a Clojure implementation of QuickCheck.
- [07:20] Unit Testing
- [12:00] "It's sort of like doing git bisect: we can make the computer do work for us."
- [16:20] Thinking in SimpleCheck: "What properties hold true about my function that are actually going to help me find bugs? There are some guidelines."
- [20:30] "In the Clojure community, and in functional programming in general, we talk a lot about how we should make as much of our code just be transformations on values. So if you structure your code that way, I think it becomes easier to think about these properties."
- [20:57] Causatum generates random data from descriptions of Markov chains.
- [22:38] Reid's original decision to write SimpleCheck in Clojure.
- [23:45] Knockbox, a CRDT library. CRDTs are data structures that can be manipulated concurrently and then merged back together without losing any information.
- [25:13] On SimpleCheck: "As I was playing with Clojure more, I decided: I just need to go write this. If I didn't write it, maybe no one would."
- [25:28] Hammock time.
- [26:57] Riak and Riak CS, Basho's Cloud storage product, were both designed from the start to be distributed.
- [27:48] The original incarnation of Riak was based on Amazon's Dynamo paper.
- [29:24] Datomic can run atop Riak. Riak CS treats Riak in much the same way as Datomic does.
- [31:37] "You get some really, really nice properties from an eventually-consistent database when you store immutable things."
- [38:50] RAFT and PAXOS.
- [43:55] Reid pitches Craig on learning Erlang/Haskell.
- [45:30] "Haskell has made me a better functional programmer in any functional language I use. It sort of forces you to think really in a disciplined way about what part of your code is going to have side-effects and what part isn't."
- [47:35] "I'm super-excited to see things like gradual typing get more popularity. In Erlang we have a tool called Dialyzer, which is basically a corollary to core.typed in Clojure."
- [49:40] "Given the chance to rewrite Riak in another language, I would choose Erlang again in a heartbeat."
- [50:17] Cloud Haskell: "Erlang as a library, for Haskell."
- [56:49] Erlang's concurrency model vs. STM.
- [1:00:17] Succinct data structures can be stored close to the information-theoretic lower bound while still supporting some operations on them -- e.g., you can compress a tree, yet still traverse it.
Episode Cover Art: