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 391 – August 17, 2020 · Archives · Subscribe Clojure Tip 💡 the immediacy interval How fast is instantaneous? How alive is your live coding? How far are you from seeing the effect of a change in code? If it is easy and fast to run our code, we will run it more. This […]
Issue 390 – August 10, 2020 · Archives · Subscribe Clojure Tip 💡 the elements of flow in a REPL environment After last week’s newsletter about missing the REPL, I got a lot of encouragement to promote REPL-driven development. Well, here it goes. One of the coolest benefits of REPL-driven development is how easily it […]
Issue 388 – July 27, 2020 · Archives · Subscribe Clojure Tip 💡 further down (or it is up?) the stack Last week we wrote a function for doing a depth-first search using our own stack. Here is the code. (defn dfs-stack [value node] (loop [branches (list node)] ;; lists act like stacks (if (empty? […]
Issue 387 – July 20, 2020 · Archives · Subscribe Clojure Tip 💡 to stack or not to stack One of the cool things about recursion in functional languages is that you get an implicit stack for free. It’s just the regular call stack. But sometimes you will want to use your own stack. Here’s […]
Issue 386 – July 13, 2020 · Archives · Subscribe Clojure Tip 💡 factoring equations in code Once in college we had to write a simple function that computed a simple formula. I don’t remember exactly what it was, but it was something like this: 2x + 2 y + z Now, being 18 and […]