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.
This course only contains one lesson at the moment. That lessons walks through profiling code and using a Clojure compiler flag to tell us where we are doing expensive Java reflection calls.
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.
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 350 – October 28, 2019 · Archives · Subscribe On Vacation 🏕 Hello! This is going to be a light issue this week. I’m on vacation at the moment. I’ll miss next week’s too! Conference alert 🚨 I booked my tickets to the 2019 Clojure/conj in Durham, North Carolina this week. If you’re going, […]
Issue 349 – October 21, 2019 · Archives · Subscribe Clojure Tip 💡 monoid pattern Clojure, and many Lisps before it, has a way of representing monoids. Monoid is a mathematical term for an operation with two properties: The operation has an identity, meaning a value that has no effect. For instance, the identity of […]
Issue 348 – October 14, 2019 · Archives · Subscribe Clojure Tip 💡 cleanup in finally There’s a common pattern in code, where you need to create a resource, use it, then clean up the resource. (let [resource (create-resource)] (use-resource resource) (cleanup-resource resource)) You can imagine the resource is anything that might need some cleanup. […]
Issue 347 – October 07, 2019 · Archives · Subscribe Clojure Tip 💡 catch and catch again Special thanks to Richard Barker for this tip! Let’s continue on our theme of exception handling. You should use the catch statement’s built-in dispatch to have different behavior for different exception types. Richard mentioned seeing code that catches […]
Issue 346 – September 30, 2019 · Archives · Subscribe Clojure Tip 💡 just throw ex-info Special thanks to Sean Corfield for this tip! Last week I recommended you explore the basic hierarchy in Java that starts with Throwable at the top. The JVM requires that anything you throw be an instance of Throwable (that […]
Issue 345 – September 23, 2019 · Archives · Subscribe Clojure Tip 💡 know your exception hierarchy The Java Virtual Machine handles errors in a relatively consistent way. We inherit most of that system in Clojure, so it’s useful to know a bit about how it works. One thing that has bitten me is not […]