Composable parts

February 08, 2016
Composition is an important idea in programming, and Functional Programming brings it to the forefront. But what does it mean to say things are composable?

Global Mutable State

January 06, 2016
Global mutable state is one of the biggest drivers of complexity in software systems. We tackle a definition and how to reduce our reliance on it.

How to Switch from the Imperative Mindset

December 12, 2015
Functional programming, from one perspective, is just a collection of habits that affect our programming. I've identified the cues for those habits and a routine for replacing imperative code with functional code.

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.

Object-Oriented Dispatch is the Dual of Functional Dispatch

March 11, 2015
Object-oriented dispatch is contrasted with functional dispatch, but they are shown to be two one-dimensional projections of the same two-dimensional data. Clojure does not provide the two-dimensional representation, but does interesting things to transcend the one-dimensional views.

Object-Oriented Programming is the Dual of Functional Programming

February 08, 2015
Object-Oriented Programming is often shown in contrast to Functional Programming. But they are so exactly opposite that they are duals, and so equivalent in important ways. Which one to use should be left up to the programmer, as is done in Clojure and Javascript.

The Paper Metaphor

February 27, 2015
Functional programs follow a simple rule: never write on the same paper twice. Imperative programs are free to define their own rules. Both have interesting consequences.

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.

The Content of Your Code

October 06, 2014
Code style is important, but way less important than content. Yet everyone talks about style because it's easier. Let's talk about content.

But the World is Mutable

May 11, 2015
The world may be mutable, but people have been using the notion of immutability to build reliable systems for a long time.