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

Upcoming release of FS2 (formerly scalaz-stream)

FS2: Functional Streams for Scala is nearing the 0.9 release finally, and the first 0.9 milestone release came out this week!


Design for experts; accomodate beginners

Technologists like to think about tools from the persepective of technical merits (“Lisp is better than C—it can do XYZ and C can’t!”). Lots of arguments take place at this level. Here, I want to consider another perspective. Let’s think of new technology like we would a new species entering an ecosystem. From this perspective, what matters is whether the species has attributes that allow it to survive and propagate itself. For new “technology species”, surviving means attracting and retaining development resources (people, money, time, etc), and propagating means increasing adoption.


When is it NOT preferable to specify your types first?

Very often when functional programming we specify the types first. Then once that’s done, we implement the term. Writing some tricky code? First, write out the type! By announcing (some) aspect of our intent to the compiler, we get an “accountability partner” that will verify we’ve remained true to our declared intent. That’s one part of it. But as Conor McBride likes to emphasize, types aren’t just about policing errors or checking:


How Twitter could easily address its rampant abuse problem

Twitter has a problem with abuse. Everyone knows this. I’ll explain the core issue, and then explain one way to fix it.


Unison now open source and has its own site

I finally wrapped up most of the housecleaning I wanted to do before releasing the code. It’s now public on GitHub and there’s also a dedicated project site and blog at and Twitter account. Going forward, I’ll be posting about Unison from, and any contributors to the project will also be able to use that space for Unison-related posts.