Paul deGrandis (@ohpauleez) and Kevin Lynagh (@lynaghk) are two anchors of the Clojure community, perhaps especially of the ClojureScript wing.  Both Portlanders, they’ve been elbow-deep in core.logic and a ton of ClojureScript tools and libraries like shoreleave, cljx, c2, and more.  They’ve stormed the Clojure world in the past year or two, going from zero […]


Paul deGrandis (@ohpauleez) and Kevin Lynagh (@lynaghk) are two anchors of the Clojure community, perhaps especially of the ClojureScript wing.  Both Portlanders, they’ve been elbow-deep in core.logic and a ton of ClojureScript tools and libraries like shoreleave, cljx, c2, and more.  They’ve stormed the Clojure world in the past year or two, going from zero to taking up residence in #clojure to speaking about Clojure and ClojureScript everywhere.


Kevin is the founder of Keming Labs, which specializes in “building data-driven UIs”; Paul has worked at all sorts of places like Etsy, Comcast, and TutorSpree.


Enjoy!


(Recorded on December 14th, 2012.  Apologies for the clipping on Paul’s audio. Donations welcome to help get him get an internet connection that doesn’t use carrier pigeons.


Listen:


http://downloads.mostlylazy.com/episodes/mostly-lazy-009.mp3

Or, download the mp3 directly.


Discrete Topics

Many questions and topics came from tweets to @MostlyLazy (watch for scheduled show announcements and send us topics and questions!)

Abusing pmap
java.util.concurrent (learn it, use it!)
“JavaScript |ˈʤɑːvəˌskrɪpt| (n.): Super janky shit.”
The rise of the “JavaScript Craftsman”
“What was the first piece of software you sold?”
Running ClojureScript on top of node.js
Conrad Barski‘s WebFui (presented at Clojure Conj 2012)
Separating code and content or not

Enlive vs. Hiccup, Enlive + Hiccup

Functional Reactive Programming & co.

flapjax
Reactive Demand Programming

A reasonable lightweight summary of RDP
…compared to FRP
An (the only?) implementation: Sirea

Behavioural Programming

“Local state is poison”
“FRP is like MVC”

TodoFRP (post your implementations now!!!11!)

reflex: “Automatic state propagation in ClojureScript”
“Web application development ennui”
“The web was built by amateurs” (alan kay)
John McCarthy on the W3C: “When w3c decided to not use [s-expressions], but instead imitate SGML [for HTML], that showed a certain capacity to make mistakes — which, probably, they haven’t lost.”
NaCl (Google Native Client)
Commutative Replicated Data Types (CRDTs)

Mark Shapiro et al., “A comprehensive study of Convergent and Commutative Replicated Data Types” (pdf)

A presentation by Marc Shapiro @ Microsoft Research surveying the content of this paper

Eventual consistency vs. strong consistency vs. strong eventual consistency
Implementations

statebox
riak_dt: “Riak core app for storing convergent data types”
knockbox (Clojure, in-process)
Bloom and BloomL (pdf) are languages (~ Ruby DSLs) that use CRDTs / lattices as their primary data types
“Keep CALM and Query On”, a presentation by Joe Hellerstein from RICON 2012 discussing lattices, CRDTs, Bloom, etc.

Related: operational transforms

Coin-change kata
test.generative
core.logic (provides an awesome unifier)

kibit: a static code analysis / linter tool for Clojure
cljx: “Smart Clojure/ClojureScript code sharing”

Websockets

superseded by WebRTC?
socket.io — dynamic transport fallbacks for web app communications
Chrome Frame — replaces the guts of IE with Chrome

ClojureScript miscellanea

Twitter Mentions