Orso Labs

Recent posts

Oct 11, 2020
Handling errors only once and logging them with full context in Golang

Handling error only once means that we log them at the place of handling, not at the place of occurrence. But how do we do this while providing to the structured log the full context of key/value pairs that is available only at the place of occurrence?

Sep 2, 2020
Keeping Packer and Terraform images versioned, synchronized and DRY

A cloud agnostic approach to control which version of a Packer image is used in Terraform, allowing independent development by team members and git-based rollbacks.

Mar 26, 2019
Building Go code, with and without Go modules, with Concourse

Before the introduction of Go modules with Go 1.11, building Go code required to follow the peculiar directory structure of GOPATH. We show how to build Go code, wether it already supports go.mod or not, with Concourse CI.

Jan 23, 2019
Temporary override of Concourse pipeline parameters

Sometimes we would like to override some parameters of a Concourse pipeline on a reversible/temporary manner, that is, without committing the changes to a git repository.

Aug 29, 2018
Thinking in terms of features vs thinking in terms of use cases

When we forget about the use case and rush to an implementation we miss an opportunity for a better solution.

Apr 28, 2018
Bootstrapping Concourse pipelines

How to bootstrap pipelines with Concourse, some custom logic and the Concourse pipeline resource.

Apr 9, 2018
Refactoring Clojure (1)

This article is based on Writing Friendlier Clojure by Adam Bard, where he shows his approach at refactoring some Clojure code that implements an order-1 word-level Markov text generator.