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

The failed economics of our software commons, and what you can about it right now

Progress in the software industry has been crushed under the weight of technical debt accumulated over the last 40 years. The tools, languages, libraries, and platforms we all rely on suffer from massive incidental complexities responsible for billions of dollars in wasted productivity. Anyone who spends any amount of time as a developer and loses days, weeks, or months implementing some library that “should” exist or working around some shitty software tech to implement a task that “should be simple” knows, deep down, that this can’t be the best humans are capable of. It’s not that we don’t know any better. Given more time and resources that could be devoted to tasks other than shipping the next release, most programmers at least have ideas for how to do things better. But we never seem to get these resources because of the failed economics of our software commons. I’ll explain the problem and tell you can what you can do right now to start changing the game. (Spoiler: check out, and after you’re convinced what a great idea it is go fund their launch.)


Viewing a program as a UI: an early demo

In an earlier post, I showed a demo of semantic program layout in Unison. Here, I’d like to demonstrate the ability of Unison program rendering to embed graphical views. This will seem like just a neat trick at first, but like the “finger pointing at the moon”, it’s leading to a deeper shift in how we think about programming. I hope to convey some of the gravity of this perspective.


Having a technical discussion without using labels or making it personal

I’ve been doing some thinking about how to have more civil and respectful discussions online. Most people would agree that direct personal attacks and insults are unwelcome, but many times people (perhaps unintentionally) end up insulting the other party or putting them on the defensive by using labels that come with baggage. The other party takes offense to use of these labels, perhaps responds by hurling a few labels of their own, and the conversation devolves into nastiness.


Good teaching makes long-term investments in the learner

In my post on “Worse is Better”, I stated that software development could be viewed as a form of investment management:


The problematic culture of "Worse is Better"

Our industry has been infected by a dangerous meme, and it’s one that hasn’t been given its proper scrutiny. Like many memes that explode in popularity, “Worse is Better” gave a name to an underlying fragment of culture or philosophy that had been incubating for some time. I point to C++ as one of the first instances of what would later become “Worse is Better” culture. There had been plenty of programming languages with hacks and warts before C++, but C++ was the first popular language deliberately crippled for pragmatic reasons by a language designer who likely knew better. That is, Stroustrup had the skills and knowledge to create a better language, but he chose to accept as a design requirement retaining full compatibility with C, including all its warts.