21. Compojure
Compojure is one of the more popular routing libraries for Ring. It's easy to pick up, and gives you a great foundation to further explore Clojure web development.
View Article22. Seq and Seqable
Seqs are a key abstraction in how Clojure processes data, but what exactly is a "seq", and how does it relate to "seqable?". Time for a deep dive in Clojure and ClojureScript source code to discover...
View Article23. deftype and definterface
Clojure is built on a well thought out set of abstractions. To implement these, it makes use of the ability to define abstractions in the host language, namely Java interfaces, and the high-performance...
View Article24. defrecord and defprotocol
With records, Clojure has introduced a way to create struct-like objects, while avoiding some of the problems encountered in object orientation. Records don't hide their data behind custom interfaces,...
View Article25. re-frame, part 3: Events and Effects
Side effects in re-frame are handled through events. You'll implement several event handlers of a TodoMVC app so it becomes functional. You'll also implement custom effect and co-effect handlers for...
View Article26. Component and System
Stuart Sierra's Component is a small library that can have a big impact on the structure and architecture of your application. In this episode you learn how you can use it to create components, and...
View Article27. Resolving Dependency Conflicts
In this beginner friendly episode you'll learn how to resolve a common type of Clojure error. It walks you through the process step by step, from analyzing the error, investigating the cause, coming up...
View Article28. Authentication with Buddy
Buddy is a popular security library for implementing authentication and authorization. In this episode you'll learn what the difference is, and how to implement password based authentication for a...
View Article29. Building Command Line Applications with Lumo, part 1
JVM based Clojure isn't very suitable for command line scripting. On the command line you want quick feedback, which is at odds with the time Clojure needs to boot up, and just to run a single source...
View Article30. Building Command Line Applications with Lumo, part 2
Now that the "birch" command is working, it's time to release it to the world. In this episode you'll learn how to turn your Lumo script into an NPM package. You'll also learn how to use packages from...
View Article31. Component in Practice
Learn how to incorporate Component in a real world project. This episode is a bit of grab bag. It shows how to set up a `-main` function and how to use it, how to use reloaded.repl and tools.namespace...
View Article32. Introduction to Clojure Testing
Testing libraries and frameworks are indispensable, but there's no magic to how they work. Through implementing your own mini testing framework, you'll learn how `clojure.test` does things under the...
View Article33. Running ClojureScript Tests
Learn how to run tests with Figwheel, PhantomJS, Node, doo, and Karma. Running Clojure tests once they are written is pretty straightforward, but for ClojureScript there are a few more things to...
View Article34. Acceptance Testing With SparkleDriver
Learn how to use a headless web browser to test your application for feature completeness. You'll also see how Component can be used to set up an isolated test environment, how to use fixtures and...
View Article35. Generative Testing with test.check
Generative testing, also called Property Based testing, is a powerful technique able to expose some of the most obscure bugs. You'll learn how to create and compose generators, and how to define...
View Article36. Datomic Quickstart, part 1
Datomic is a database based on the same principles that underly the design of Clojure itself. Learn what makes it different, and how to start using from Clojure immediately. This first part gives an...
View Article37. Datomic Quickstart, part 2
Datomic is a database based on the same principles that underly the design of Clojure itself. Learn what makes it different, and how to start using from Clojure immediately. This second part dives...
View Article38. Transducers
Transducers are a Clojure feature allowing you to write code that is efficient, reusable, and composable. They have been around for several years, landing first in Clojure 1.8, but even some...
View Article39. Integrant
Integrant is a "micro-framework for data-driven architecture". It manages the lifecycle of your application, and the dependencies between components, similar to Component or Mount, but with some very...
View Article40. The Ultimate Dev Setup
This one tool will transform how you program. It's time to raise your standards!
View Article