Paul Chiusano

Functional programming, UX, tech


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 friendly programming language from the future the worldwide elastic computer (coming soon)
Type systems and UX: an example
CSS is unnecessary

Unison update 0

This was my first week dedicated mostly to working on Unison. Before getting to my update, I’ll give a bit of background on the Unison architecture. There are two pieces:


Taking a break to focus on Unison

I’ve decided to do something crazy and take a three month break from any consulting work to focus on getting Unison off the ground and open sourced. For a while, Unison has been a fun side project, but I’ve wanted to give it a little more love and dedication and see where it goes. My wife and I talked it over recently and decided to timebox the crazy to three months, and I’ve also notified my clients and am wrapping up any loose ends this week. Though it would be great to find a sustainable source of funding for the project, for now I’m planning on resuming regular consulting work at the start of May, at which point Unison will revert to side project status.


Can type systems provide a better way of organizing game interactivity?

I’ve been playing through Alien: Isolation. The game is well-executed, gorgeous, scary, and yet limited in a way that makes it unsatisfying. I’ll talk about that, but a bit of context on the game first:


A nice, purely functional alternative to sinks and wormholes in UI programming

There’s a common antipattern used in UI frameworks that are otherwise quite nice—the use of sinks or “wormholes” for interactive UI elements rather than explicit control flow. Sinks and wormholes are close cousins of explicit callbacks, and are bad for many of the same reasons, even when they don’t break referential transparency. I’ll explain the problematic pattern and outline a simple, purely functional solution with nicer properties.


In search of a better abstract machine for nonstrict languages

For a while, I’ve been curious if it’s possible to develop a better runtime for nonstrict languages. Despite the advantages of pervasive nonstrictness in a language, a drawback is that nonstrict languages make it more difficult to reason about space usage. Much of this is people being unfamiliar with nonstrictness and surprised when it performs differently than a strict language, but some of it is the fact that the normal order evaluation doesn’t provide an obvious compositional means of assigning space usage to programs. Reasoning about space usage in a nonstrict language is nonlocal.