The Importance of Embodied Metaphors

March 04, 2016
LispCast Introduction to Clojure teaches Clojure with an "interactive bakery simulation". The reason is that metaphors that you can embody are a great way to learn abstract things like programming.

Why I start teaching Clojure with Imperative Programming

March 03, 2016
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.

deftype vs defrecord

March 03, 2016
There are two commonly used ways to create new data types in Clojure, deftype and defrecord. They are similar but are intended to be used in two distinct use cases. deftype is for programming constructs and defrecord is for domain constructs.

What are macros?

March 03, 2016
Macros are one of the most talked about features of Lisp. They are a powerful way to extend the language without modifying the compiler.

Locks vs Concurrency Primitives

February 29, 2016
Many people have asked me why Clojure has concurrency primitives. Aren't locks good enough? A humorous metaphor is elaborated.

All about clojure.set

February 29, 2016
clojure.set is part of the standard library that comes with Clojure. It has functions for doing set operations and relational algebra.

What is Clojure?

February 27, 2016
Clojure is a general purpose programming language designed for the fast-approaching future.

How can more layers be more efficient?

February 20, 2016
It's common that adding more layers of abstraction or indirection will make things slower. However, React and ClojureScript make web pages faster than doing it by hand -- essentially programming the bare web. The lesson is that if you choose your layers well, they can actually make your system faster.

Reasoning About Code

February 20, 2016
Functional programmers often use the term "reason about code". It's not very well defined generally, but I use it myself to refer to our ability to use our real-world intuition in our own code.

Immutable Paper

February 10, 2016
Immutable data appear to contradict our observations of the real world. Things in the world are mutable, so shouldn't our data be mutable, too? It may be counterintuitive, but immutable data does a better job of modeling many of our expectations of the real world.