A Philosophy of Software Design by John Ousterhout

Since I mentioned this book during my interview with Dave Rael for the podcast Developer on fire, I thought it was time to put my favorite quotes of the book online.

A Philosophy of software design looks at the creation of software through the lens of complexity in your system. This book is very small, only 200 pages, so don’t expect an in depth explanation of every topic in it. It covers the basics of every topic and it is up to you to venture out and find a more in-depth book about one of the topics in it.

The most fundamental problem in computer science is problem decomposition: how to take a complex problem and divide it up into pieces that can be solved independently. (Location 198)

Humans vs Computers by Gojko Adzic

Humans vs Computers, the first book I read in 2019 and it was an excellent choice! This book is a collection of (horror) stories about software design failures. There are 4 themes in the book:

  • Names
  • Addresses
  • Numbers
  • Time
  • Process automation

And the best part? The end of the book contains an overview of the ‘lessons learned’ you can take away from all these stories when designing software.

Of course, computers couldn’t be upgraded so quickly, so people just typed VOID into the licence plate field, and Turner started receiving all the tickets. Mistakes such as these happen when a computer insists that humans provide a piece of information that isn’t immediately available or just doesn’t exist, so people find workarounds. (loc. 94)

F# Fable 2.0 -> 2.1

This morning one of my colleagues ran into a weird error when trying to build one of our web applications with Fable:

ERROR in ./src/path/to/your/Client.fsproj Module build failed (from ./node_modules/fable-loader/index.js): Error: Cannot find module ‘fable-compiler’

At first I was very confused because as far as I could tell, fable-loader didn’t use a module called fable-compiler.

But then I remembered something from Twitter: there were plans to eliminate the dotnet cli tool in the next Fable release and replace is with a javascript module again. Yeey for reading Twitter!?

My F# aesthetics

I love churches, more specifically I love the architecture of a Catholic church build during the Gothic time period. I know, a weird way to begin an F# blogpost for the fsadvent, but bear with me for a moment.

I have tried to explain by enthusiasm for churches, cathedrals and such to many people but I have rarely succeeded in doing so. But still, I will keep trying.

Imagine a church that you visited, perhaps Notre Dame de Paris? Picture yourself standing in front of her.

In the middle of the building you have double doors, which divide the entire building into two halves. One tower on the left, one tower on the right.

A small matter of programming by Bonnie A. Nardi

‘A Small Matter of Programming: Perspectives on End User Computing’ was recommended to me (and everybody else on Twitter) by Felienne Hermans after Mathias Verraes threw this hypothesis into the Twitter void:

Hypothesis: “Any tool that lets a non-programmer build executable programs will eventually become sufficiently complicated that the user is effectively a programmer.” I wonder if anyone has named this (or perhaps even proven)?