week 52, 2019

A bike ride to Hook of Holland

In the early afternoon we went to Hook of Holland. I took Alice on my bike and Esme took Adam on hers.

Side of the pier of Hook of Holland
Side of the pier of Hook of Holland, North Sea side.

On the way back I took a photo of a landscape with bright green moss, close to the dunes of Hook of Holland. I had already seen this landscape on the way to the pier, but decided to take photos on the way back.

Bright green moss growing to the side of the road
Bright green moss growing to the side of the road.

On our way back we decided to pay a short visit to garden centre "De Carlton" and have a look at the plants on display.

Philadelphus incanus, Hairy mock orange
Philadelphus incanus, Hairy mock orange.

At the garden centre I took a photo of a hairy mock orange, Philadelphus incanus, according to the PlantSnap app on my iPhone 5.

Python Type Hints

mypy is a static type checker. This means it does not run during the code execution, so it’s mostly useful during development, much like tests. It relies on manual annotations in the code called type hints, which identify the types of arguments, return types, internal variables and member variables.

Source: Python Type Hints, an article by Guilherme Kunigami.

Two kinds of testing

While talking about thinking about tests and testing in software engineering recently, I’ve come to the conclusion that there are (at least) two major ideas and goals that people have when they test or talk about testing. This post aims to outline what I see as these two schools, and explore some reasons engineers coming from these different perspectives can risk talking past each other.

Two kinds of testing, an article by Nelson Elhage.

An introduction to machine learning through polynomial regression

Machine learning is one of the hottest topics in computer science today. And not without a reason: it has helped us do things that couldn’t be done before like image classification, image generation and natural language processing. But all of it boils down to a really simple concept: you give the computer data and the computer then finds patterns in that data. This is called “learning” or “training”, depending on your point of view. These learnt patterns can be extrapolated to make predictions. How? That’s what we are looking at today.

Source: An introduction to machine learning through polynomial regression, an article by Rick Wierenga.

Protobuffers Are Wrong

I’ve spent a good deal of my professional life arguing against using protobuffers. They’re clearly written by amateurs, unbelievably ad-hoc, mired in gotchas, tricky to compile, and solve a problem that nobody but Google really has. If these problems of protobuffers remained quarantined in serialization abstractions, my complaints would end there. But unfortunately, the bad design of protobuffers is so persuasive that these problems manage to leak their way into your code as well.

Source: Protobuffers Are Wrong, an article by Sandy Maguire.

Making a small Haskell application

Haskell is a programming language that a lot of people use to learn functional programming and solve programming exercises. But not as many take the leap to use Haskell for practical projects. To try to help to bridge this gap, I will walk through how to create a "practical" Haskell application. This is of course not the only way to do it and there are alternatives to every approach I am using, but this is what I find most suitable for a small easy-to-understand project.

Source: Making a small Haskell application, an article by Morten Kolstad.

A Glossary of Functional Programming

I’ve taught functional programming for years now, each time experimenting with different ways of teaching core concepts. Over time, I’ve collected and converged on simple (but reasonably precise) pedagogical definitions for a range of functional concepts.

In this post, I’ll share those definitions with you, in my first ever, Glossary of Functional Programming. Enjoy!

Source: A Glossary of Functional Programming, an article by John A De Goes.