Paul Chiusano

Functional programming, UX, tech, econ


Consulting services

I offer Scala and FP consulting services. If you're interested in working together, please contact me.

About my book

My book, Functional Programming in Scala, uses Scala as a vehicle for teaching FP. Read what people are saying about it.

Popular links

Unison: a next-gen programming platform the worldwide elastic computer (coming soon)
Type systems and UX: an example
CSS is unnecessary

Unimaginative naysaying in tech discussions

It’s the early days of man, a chilly day, and Alice and Bob are attempting to start a fire by rubbing sticks together. It’s a struggle, on account of some freezing rain earlier in the day that’s left the sticks damp. Suddenly, there is a brilliant flash of light, and a mysterious portal opens up next to Alice and Bob. A Stranger steps through carrying a blowtorch.

The Stranger explains he is from the Future and has come to speed along Alice and Bob’s technological evolution. He demonstrates use of the blowtorch and has a roaring fire going within a minute or two. He explains how the torch works by burning a substance called butane.

Bob’s immediate response: “Look Stranger, I don’t know who you are, but I don’t like your elitist tone, and I’m going to keep starting my fires by rubbing sticks together. If I start using your so-called ‘blowtorch’, it’s going to be a real problem finding ‘butane’ fuel for it.”


When the fancy technique that seems relevant is the wrong tool (a note of caution on zippers)

Update: I changed the title of this post and toned it down considerably to be less trollish. There was also some confusion / disagreement about the meaning of the term “zipper”, so I’ve tried to clarify that as well.


CSS is unnecessary given a layout language with means of abstraction and combination

CSS, a language for specifying visual appearance on the web, is … so complex that it has never been implemented correctly; yet, successive versions specify even more complexity. At the same time, it is so underpowered that many elementary graphic designs are impossible or prohibitively difficult, and context-sensitivity (or anything computational) must be addressed externally. Most CSS lore is dedicated to describing the tangles of brittle hacks needed to circumvent incompatibilities or approximate a desired appearance.

Bret Victor


Capability-based snail mail and ending junk mail

Here is a question: why should knowledge of my address grant anyone in the world (inlcuding both L.L. Bean and Unabombers) the capability to cause a physical artifact to be delivered to my place of residence? Moreover, anyone with knowledge of my address retains this capability until the end of time, at least until I move! If we were designing a physical delivery network from scratch today, in the age of software, is this really how we’d choose to set things up? Clearly not! Here is a proposal:


A simple alternative to De Bruijn indexing, from ICFP 2013

There was a functional pearl at ICFP 2013 by Axelsson and Claessen that introduced a deceptively simple, useful technique for dealing with variable bindings in DSLs. Without any heavy machinery, it gives us HOAS-like syntax for constructing terms of the DSL, while retaining a simple first-order representation. The ‘library’ they developed is about 15 lines of code. When it was presented at ICFP, the audience was stunned. IIRC, there were no questions, as everyone was clearly wondering how the @^#$!! didn’t I think of that? I waited for someone in the audience to point out during the Q&A that this technique was FP folklore discovered by Alonzo Church in the 30s, but not a peep.