Reduce is the most powerful functional tool available. It lets you build general-purpose recursive solutions without doing the recursion yourself. In this course, we implement reduce and other functions like map and filter using it. This course also goes over some practical things you can do with reduce.
Screencasts, Whiteboards, and Slides produced to help you learn
This course teaches the mindset, practices, and tools of Repl-Driven Development as practiced in Clojure.
A comprehensive guide to the ClojureScript Single Page Application framework built on top of React and Reagent.
Web development in Clojure is just like everything else: you build up complex behavior from simple parts. This course builds a TODO list app from scratch, explaining the important concepts, and deploying it to a cloud service.
conj can be confusing if you’re used to other languages. It is not a commonly defined operation. Most languages define common positional adding operations. conj, however, has more useful semantics. How do you use conj usefully if you can’t guarantee the position?
There are many reasons to learn Functional Programming. I go over my 11 favorite reasons. Reason #1 is it’s fun!
LispCast Introduction to Clojure starts with 30 minutes of imperative programming. We write programs for their effects, so imperative is a great place to start.
I had to choose between Re-frame and Om Next when building a course. Here are the reasons why.
ClojureScript builds can take a long time. But the extra time is worth it. It reduces the download size significantly.
There are a few conventions in core.async that are not hard to use once you’ve learned them. But learning them without help can be tedious. This article presents three guidelines that will get you through the learning curve.
Parts of courses on specific topics
We can edit Markdown and generate HTML. Now we add the feature to edit the HTML and generate Markdown. We can go in both directions. We explore two different ways to implement the state.
In this lesson, we use a webdriver to control the browser. We test the TodoMVC implementation in React.
Learn how to manage Clojure dependencies using Boot.
This lesson teaches a pattern for using protocols called Interchangeable Parts. The lesson includes a video screen capture and code. The video lesson will take 20 minutes to watch.
We use Strings a lot in programming, but often our Strings are assumed to have very specific formats. We need to be able to generate Strings that are still random, yet fit the format. In this lesson, we see how we can build a new generator by generating the pieces of the String and putting them back together.
Sometimes the data we need to generate is complex and can’t easily be done directly. In that case, we can often do well by generating instructions to build the value. In this lesson, we see how that can be applied to generating random matrices of different sizes.
We interviewed Glen Mailer about his upcoming Code Mesh talk about fast feedback when building user interfaces.
We interviewed Greg Rosenblatt about his upcoming Clojure/conj 2016 talk.
We interviewed Hans Huebner about his upcoming :clojureD 2017 talk
Hans Hübner is speaking at Clojure eXchange 2016. I ask him some questions about his talk.
We interviewed Howard Lewis Ship about his upcoming Clojure/West 2017 talk.
We interviewed Jan Stępień about his upcoming :clojureD 2017 talk.
Issue 374 – April 20, 2020 · Archives · Subscribe Clojure Tip 💡 Seek truth, not convenience I got a great question from a reader: “How do you get better at making abstractions?” Just a moment of humility: I have a particular viewpoint here that I’ve arrived at. It works for me. I hope it […]
Issue 373 – April 13, 2020 · Archives · Subscribe Clojure Tip 💡 Don’t sweat the stack I was listening to the defn podcast and Martin Kavalar had a really interesting comment. He said that he spent a ton of time choosing the web stack he used. Compojure or something else? Jetty or Undertow? Middleware […]
Issue 372 – April 06, 2020 · Archives · Subscribe Clojure Tip 💡 Model change over time with state machines We write sequential programs. That means the “current” piece of code that is executing often holds implicit information. It’s often beneficial to make the implicit info explicit. Here’s an example from a GUI in ClojureScript: […]
Issue 371 – March 30, 2020 · Archives · Subscribe Clojure Tip 💡 Chain map, filter, and reduce I’ve been thinking a lot lately about chaining map, filter, and reduce. After all, it’s the main topic of an upcoming chapter in my book. The challenge is how to teach it. In Clojure, we are very […]
Issue 370 – March 23, 2020 · Archives · Subscribe Quarantine update 😷 Folks, I hope this isn’t too personal, but I think more personal connection is called for these days. I have quarantined myself at home, with my two kids and wife. These are trying times. We are as safe as we can be […]
Issue 369 – March 16, 2020 · Archives · Subscribe Clojure Tip 💡 Refactoring: replace body with callback In my book on functional programming called Grokking Simplicity, I am trying to teach the idea of higher-order functions. It may come naturally to some of us, but many people are not that familiar and so need […]