Programming, tools, and processes are stuck in the past, held in place by hordes of OO-wielding proletariats collectively chanting "good enough".

Let's find a better way.

Recommended works

We are inundated with programming posts of varying quality. This is a curated list of only the best or most important I've come across.


Functional Programming

  • Learn You a Haskell for Great Good! by Miran Lipovača — Have you read a million monad tutorials and still don't get it? This was the case for me and learning Haskell is what made it finally click. As a bonus, this book is also hilarious and brilliantly written and illustrated; one of my all-time favorites.
  • Category Theory for Programmers— I'll be working through this for quite a long time, but it's mind-blowing and very challenging so far.
  • Functional Programming in Scala by Paul Chiusano and Rúnar Bjarnason — Many of my topics and ideas came from this book.
  • Learning Scalaz— This series of blog posts loosely follows LYAH and introducesScalaz' equivalents to many of Haskell's classes.

Distributed Systems

  • Raft: Understandable Distributed Consensus- amazing and inspiring data visualization of the Raft consensus algorithm. Even if you're not interested in Raft itself, go through this because it demonstrates so well the power of visualization in understanding complex interactions. (How can we get this level of quality in our own systems' documentation?)


Some gems:

Writing is an act of pretense.

Writing is an act of craftsmanship.

Writing is an unnatural act

Prose as a window onto the world

  • The writer has seen something in the world
  • He positions the reader so she can see it with her own eyes

The reader and writer are equals

The goal is to help the reader see objective reality

Beautiful idea that the reader and writer are equals. Do not write in a way that is above critics or attempts to cover all bases, to be impenetrable.

Show examples, often! Focus on the subject! Not meta concerns such as the studying of the thing, the process, etc.

Minimize the kind of apologizing that academics in particular feel compelled to do.

Classic prose gives the reader credit for knowing that many concepts are hard to define, many controversies hard to resolve. The reader is there to see what the writer will do about it.

Minimize hedging

Classic prose: Better to be clear & possibly wrong than muddy and "not even wrong."

Count on the cooperative nature of ordinary conversation

Use the active voice. The active voice is usually more direct and vigorous than the passive.

Interesting idea: a sentence is a linear string of words but it's describing a non-linear graph of knowledge. It presents some bits of information to the reader before others, affecting the way the information is absorbed. The passive voice allows writers to vary the order in which ideas are presented and absorbed.

Good writers narrate a story, advanced by protagonists who make things happen.

Bad writers work backward from their own knowledge, writing down ideas in the order in which they occur to them.

They begin with the outcome of an event, and then throw in the cause as an afterthought.

The passive makes that easy.


The curse of knowledge

When you know something, it's hard to imagine what it is like for someone else not to know it. aka mindblindness, egocentrism, hindsight bias

aka Monads 😂

Something to consider for technical writers!

Such density of good advice in this talk. But if you'd rather not watch an hour-long video, start with Steven's short Twitter thread on the same topic.