How to handle JSON fields with a default value different from the Go zero value (example: a bool with default value true), avoiding the inconveniences of pointers.
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?
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.
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.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.
When we forget about the use case and rush to an implementation we miss an opportunity for a better solution.
How to bootstrap pipelines with Concourse, some custom logic and the Concourse pipeline resource.
Refactoring some Clojure code that implements an order-1 word-level Markov text generator.
#best practices
#bootstrap
#cicd
#clojure
#conan
#concourse
#dependency tracking
#devops
#error handling
#give back
#go
#go-modules
#golang
#HackerGarten
#idiomatic
#image versioning
#infrastructure as code
#json
#lessons learned
#markov-chain
#open source
#packer
#pipelines
#refactoring
#scaleway
#software engineering
#structured logging
#terraform
#think!
#use case
#workflow