Clojure is based on collections, but how are they used? What are some patterns for making the most of them? This course introduces you to the workhorses of the Clojure programming language, the immutable collections.
Video Courses
Screencasts, Whiteboards, and Slides produced to help you learn
Data Modeling in Clojure
In Clojure, the common advice is “just use a map”. There’s some truth to that, but it’s obviously more complicated. Clojure gives you lots of ways to model a problem. In this course, I give you a peek behind the curtain. I work step-by-step through different iterations of a domain model, discussing what I’m thinking, why I’m trying something else. We model the game of solitaire, a card game we’re all familiar with.
Written Guides
Pragmatic and in-depth guides to a topic.
Clojure Data Structures Tutorial
Clojure’s collections are central to Clojure programming. While in most languages, you might find collections somewhere in the standard library, in Clojure, they are front and center.
Optimistic Update in Re-frame
How do we deal with that little bit of time between when the user clicks and the server confirms the change is saved? Well, like many things in life, there are two ways: optimistically and pessimistically.
Re-frame Database Best Practices
Your Database is going to contain a lot of important information. When you鈥檙e first starting out your app, you don鈥檛 know exactly what you鈥檙e going to store in there. In addition, you don鈥檛 know how you鈥檙e going to want to access it. Both of these will evolve over time as you understand more of the domain and you uncover the complexities of your UI. We want some help from the framework (Re-frame) to help us deal with this evolution.
Learning Paths
Curated selections of courses on a specific topic
Beginner Programmer Learning Path
Clojure can be an excellent language to learn programming. The following courses should set you on a good path for getting up to speed in Clojure. Be sure to click those checkmarks to track your progress. Start with the best introduction to Clojure out there. It gently guides you through the language with fun exercises. […]
Object-Oriented Programmer Learning Path
If you’re coming to Clojure from an Object-Oriented Programming background, this page is for you. Be sure to click those checkmarks to track your progress. Start with the best introduction to Clojure out there. It gently guides you through the language with fun exercises. You’ll learn the syntax and the thought processes behind Clojure programming. […]
The Everything Learning Path
If you’re looking to watch absolutely all of the courses on this site, I’ve put together a suggested order. Start at the beginning and just watch everything straight through. Be sure to click those checkmarks to track your progress.
Video Lessons
Parts of courses on specific topics
Card functional abstraction
This lesson teaches how to use functional abstraction to make changes to data structures quick and easy. This lesson includes a video screencast, a git repo, and two exercises. The video is 14 minutes long.
Card Representations
This lesson demonstrates and evaluates many different representations of playing cards. The lesson includes a video screencast, a git repository with all code, and some exercises. The video is 14 minutes long.
Dealing a Game
In this lesson we develop a function that returns a new, dealt game. This lesson includes a video screencast and a git repo. The video is 16 minutes long.
Deeply nested databases
How three built-in Clojure functions help us keep our database organized without much fuss.
Hashmap Patterns
Do you know these two patterns (Record and Index) that are commonly used with hashmaps? This lesson explains why and when they are used and give you a method for determining which one is being used in someone else’s code.
Indexed Entities
Because Subscriptions and Events form an interface that encapsulates the structure of the Database, the question becomes “what structure should the Database have?” In this lesson, we explore a small evolution of the Database, from a single use case to a completely general solution. The pattern we use is called Indexed Entities.