The new Clojure spec library provides support for data and function specification. In this first in a series of screencasts, Stuart Halloway discusses how spec provides leverage to achieve many returns for a small investment in describing your functions with spec.
Clojure spec defines specifications for both data and functions. In addition to validity checking, specs can generate random samples of the data they specify. This capability enables an alternative to unit testing known as generative, or property-based, testing.
One benefit of Clojure specs is that they automatically provide data generators that produce values conforming to the spec which can be used for testing. In addition, you can compose your own generator to more precisely match your data model.
In this screencast, Stuart Halloway demonstrates techniques for creating and combining models of your input using the `bind` and `fmap` functions to produce custom generators.
Rich Hickey gives an introduction to Datomic, including the basics of the architecture and data model.
The first of 2 videos of the core.async training, recorded at Clojure/West in Portland Oregon in April of 2015.
The course will cover core.async, a library for doing concurrent programming with immutable values available in both Clojure and ClojureScript.
In this first video, Luke VanderHart will introduce core.async and cover the basics of channels and go blocks.
In this video, Luke VanderHart moves beyond the basics of channels and go blocks, demonstrating some of the advantages of using these constructs in realistic examples.
Luke additionally discusses higher level features of core.async including alternates and transducers, followed by a discussion of helpful patterns and practices for building systems with core async, including exception handling and a discussion of use cases.
Simulation Testing predicts how your system will behave under varying degrees of load and realistic use patterns, without risking revenue or sacrificing customer trust. In this webinar recording, Michael Nygard will introduce the structure of simulation testing using the open-source framework Simulant. We will walk through a complete simulation lifecycle with source code.
If you need to move data between applications, JSON is your friend.
No matter where your program is running, no matter which programming language you are using, chances are there is a high quality — and high performance — JSON implementation available. But JSON has some shortcomings: It only supports a very limited set of types. It’s not extensible. And it is verbose.
Arguably the two largest sources of complexity in front end client applications are application state and application events. Programming with immutable values gives us better tools for managing application state, but what about events?Callbacks are a weak abstraction for complex event flows. Promises eliminate some incidental complexity but are ill-suited for representing streams or queues. Can we do better?
As usual, everything old is new again. In this webinar, we'll explore how Clojure's core.async brings the power of Tony Hoare's Communicating Sequential Processes to client browsers. We'll start with the basic building blocks and work our way up to a simple but complete interactive application.