Property-Based Testing is a powerful way to test your software. This course starts where the Intermediate course left off. In this course, we learn the most powerful applications of Property-Based Testing, including parallel and distributed systems, searching for known bugs, and testing web frontends.

What mysteries do Clojure macros hold? This course jumps right into macros with gusto. It starts with the key to understanding macros, takes you through the implementation of 6 progressively more complex macros, and finishes with the three reasons you *need* macros.

Sometimes we want to see how individual components are built. We want to know how to reproduce common components easily using Re-frame. In this course, we take that approach. We build individual, interactive components, going through the design decisions we have to make.

Mini Guides

I was trained in Java at University. The OOP matrix was firmly implanted in my thinking. I wanted to share some things that I have learned from Clojure that were certainly possible in Java but never became fundamental to my programming practice. Clojure certainly has learned a lot from Java. It might be cool if […]

Learning Paths

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. […]

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. […]

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.

Web development is an extremely popular use for Clojure. If you want to learn web programming, here are the courses I recommend you watch. I am assuming you already are familiar with Clojure. Be sure to click those checkmarks to track your progress. Backend You’ll want to learn Ring. It is a unifying set of […]

We tend to code using patterns that we repeat a lot. Learning these patterns can help you level up your macro skills very quickly. This reference sheet contains six annotated patterns that Clojure programmers use all the time.

Have you ever wondered what the symbols in Clojure macros do? I’m talking about `, ~, ~@, etc. This handy reference sheet tells you what they all do, when to use it, and shows examples. Never get lost in a macro again!

When we’re developing macros, it really helps to be able to see what code it will output. Fortunately, Clojure comes with three built-in functions for doing just that. They are so useful for debugging. This reference sheet shows what each one does. It also includes how to access macroexpansion in the three most popular Clojure […]

Want a handy reference for writing your tests? This cheatsheet contains everything you need to write tests, make assertions, and set up fixtures. It even shows the commands for runnings tests at the REPL.

Newsletter Issues

Issue 380 – June 01, 2020 · Archives · Subscribe Clojure Tip 💡 what can you iterate through? I was helping a friend solve a coding challenge the other day and I quickly found a linear algorithm when he was sure it had to be quadratic. The key was that there were two collections. If […]

Issue 379 – May 25, 2020 · Archives · Subscribe Clojure Tip 💡 get has unexpected behavior, as expected Some people wonder about why get returns nil when the key is not found in the map. I actually like that behavior and dislike the behavior in other languages when it is an error to ask […]

Issue 378 – May 18, 2020 · Archives · Subscribe Clojure Tip 💡 Clojure nudges us to constant-time operations I recently received a question about why Clojure has contains? (which is really contains-key?) and not a contains-value?. It seems like such a common thing to want to do, shouldn’t Clojure give it to us? I […]

Issue 377 – May 11, 2020 · Archives · Subscribe Clojure Tip 💡 Three states of key-value pairs Sometimes I’m using a map and I want to both get the value for a key and check if the key exists in the map at the same time. In most cases, it would look something like […]

Issue 376 – May 04, 2020 · Archives · Subscribe Clojure Tip 💡 Learn from core Last week I talked about how Clojure’s standard library gives us a leg up over JavaScript. A few people mentioned that many people will use lodash or a similar library when using JavaScript. That’s true but it’s not really […]

Issue 375 – April 27, 2020 · Archives · Subscribe Clojure Idea 💡 JS vs CLJ In the last issue, I mentioned that the challenge was considered Expert level in the JavaScript section of Edabit. That surprised and dismayed some of my readers. I was unsettled myself. Was it really that hard? Many people reading […]

Programmers

Alan Kay invented Smalltalk and Object-Oriented Programming. He reads more than a book per day. He has worked at Xerox PARC, Atari, and Apple. He’s currently the president of the Viewpoints Research Institute.