Leiningen is the *de facto* standard project tool in Clojure. This course gives an overview of `lein` commands, projects, templates, and dependencies.
Screencasts, Whiteboards, and Slides produced to help you learn
Manipulating time is a difficult thing. Time was made for people. The rules are complicated and depend on where you are on Earth. Time units have varying lengths (how long is “one month”?; how long is a day when you change daylight savings?), daylight savings depends on the country you’re in, and formatting dates depends on the language. It’s complicated. Luckily, Joda Time does an excellent job. Joda Time is a date-time library that represents everything immutably. It’s what people use when they want robust date-time calculations. clj-time wraps up the types from Joda Time and makes it easy to use from Clojure.
Learn how to build a Markdown editor Single Page Application in ClojureScript and Reagent, and deploy it to Netlify with free hosting.
Namespace declarations can be complicated. They manage all of the dependencies of one namespace on another. There are a lot of options. In this course, we go over how to make best use of them.
What is recursion? How do you write recursive functions? Does it work with laziness? How is it different from a `for` loop? All of these questions are answered, and more, using simple, clear examples. You’ll never have fear of recursion again.
Small, precise guides to a particular feature.
Where to put your tests is a common question. You could put them anywhere, but you want to pick a place that makes it easy to find, easy to exclude from production, and work well with your tools. My recommendation is to follow what most projects do, which takes care of all of these requirements.
Learning any new language is a challenge, and Clojure is no different. Finding the time to learn and practice is a real challenge, so we need to make the most of what time we have. These tips will help you immerse yourself in Clojure.
There are several features of Java that generate weird classnames. We look at how to refer to them from Clojure.
Distributed systems fail in indistinguishable ways. Often, retrying is a good solution to intermittent errors. We create a retry macro to handle the retries in a generic way.
Clojure is a general purpose programming language designed for the fast-approaching future.
My daughter’s blocks taught her to match shapes with a lot of fast feedback. Fast feedback is a powerful tool to learn any skill. I analyze how the blocks helped my daughter learn and compare it to learning Clojure.
One of the most common complaints about the JVM is the long startup time. But what is really taking so long? We analyze some commands to find out.
Parts of courses on specific topics
Let’s add a recipe for a new baked good, brownies.
Now we can rework our bake-cake function to use the variadic versions of our add functions.
We look at the basics of representing HTML with Hiccup, which is a very convenient way of embedding markup right in our code.
When a test case fails, the shrinkage process begins. It takes the failing test case and tries to make it smaller so that it’s easier for the programmer to isolate the problem. In this lesson, we look inside the shrinkage process. It’s not something you have to think about all the time, but sometimes you do.
It’s important to know about size. Size controls the range of values of a generator. It changes over the length of a run of a property. The built-in generators have an intuitive notion of size, and you can control the size yourself using three functions from the generators namespace.
We replace our router with Bidi, a bidirectional routing library that plays well with the HTTP library Yada.
We interviewed Elise Huard about her upcoming EuroClojure 2017 talk called The Return of Clojure Data Science.
We interviewed Emin Hasanov about his upcoming EuroClojure 2017 talk called Using Clojurescript to launch iOS/Android apps to 1M users.
We Interviewed Emina Torlak about her upcoming Clojure/West talk about Rosette.
We interviewed Falko Riemenschneider about his upcoming :clojureD 2017 talk.
We interviewed Fergal Byrne about his upcoming EuroClojure 2017 talk called The Feynman Machine: AI architecture in Clojure/Neanderthal.
Issue 392 – August 24, 2020 · Archives · Subscribe Clojure Tip 💡 command your repl Last week, I mentioned that there are three editor commands you need to know to do REPL-driven development (RDD). These three commands are all you should really need. Of course, more commands will give you more nuance. But I […]
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 […]