Laurens Duijvesteijn

Work

I create infrastructure for building, shipping, and operating software. I also design software solutions to your problems.

Professional beliefs

Automation

Automation eliminates errors and boredom that follow from manual steps. Examine your processes while you go through them. Reflect and look for opportunities for automation. This applies to everyting: tests, builds, deployment, and infrastructure.

Papercuts

Fix inconveniences as soon as you get the chance; even if there is a known workaround. Besides annoying, they are costly during onboarding. Set aside time to fix this in your regular work planning.

Reliability & fault tolerance

Components of a system should function independently. Partial failures happen and your system needs to be resilient against this. You should periodically test these failure modes of your system.

Technological measures I like to take to attain these goals:

Reproducible builds

Once software (finally) works, it should stay that way. A software build should specify all its required inputs. Build steps should determine output; nothing else may influence the build.

Static analysis

Programmers should accept all the help they can get while creating and changing software. Non-trivial systems should employ the help of static analysis and powerful type systems to meet correctness and performance objectives.

Infrastructure as Code

It's easy to loose the big picture about your infra­strucuture. Documentation goes out of date, so ensure it can't. Make your documentation executable; then updating the documentation becomes the primary way to change things.