I read … Nov 2017

My favourite articles, or news I found interesting month by month. Not ordered by any means. News or recent content are marked with a 💥, the rest is older stuff that I just happened to stumble upon this month.

Is it possible that software is not like anything else, that it is meant to be discarded: that the whole point is to always see it as a soap bubble?  – Alan J. Perlis

Docker Platform and Moby Project add Kubernetes💥
Docker EE and Docker CE (Windows, macOS) gets Kubernetes support.

A Large-Scale Study of Programming Languages and Code Quality in GitHub💥
What is the effect of programming languages on software quality? This question has been a topic of much debate for a very long time. In their study, authors gather a very large data set from GitHub in an attempt to shed some empirical light on this question.

Kotlin for the Pragmatic Functionalist💥
What can a functional programmer find when migrating to Kotlin? This talk covers several of the common constructs that are part of any functional stack and how they have already been introduced into the language.

Announcing Scala with Cats💥
Cats finally gets a tutorial!

GitHub may be a clone club, but Java code is the most original💥
Recent study suggests that over 70% of the code on GitHub is a duplicate.

Quote: Dealing with awkwardness in functional programs

As you write more functional programs, you’ll sometimes encounter situations like this where the functional way of expressing a program feels awkward or tedious. Does this imply that purity is the equivalent of trying to write an entire novel without using the letter E? Of course not. Awkwardness like this is almost always a sign of some missing abstraction waiting to be discovered.

When you encounter these situations, we encourage you to plow ahead and look for common patterns that you can factor out. Most likely, this is a problem that others have encountered, and you may even rediscover the “standard” solution yourself. Even if you get stuck, struggling to puzzle out a clean solution yourself will help you to better understand what solutions others have discovered to deal with similar problems.

With practice, experience, and more familiarity with the idioms contained in this book, expressing a program functionally will become effortless and natural. Of course, good design is still hard, but programming using pure functions greatly simplifies the design space.