This is a step-by-step introduction into aggregating and analyzing errors from a JSON error log (where each error is a JSON object on a single line) with the tool jq. While most tutorials and documentation of jq focus on how to transform JSON objects to other JSON objects on a 1:1 basis, this tutorial is more about building aggregates, using an approach that takes a page out of functional programming.
I attended the SoCraTes Day Berlin and came back inspired and full of ideas I want to share with the world. Lean Coffee We discussed estimations (Complexity vs time, who needs them, when are they helping) and I learned about the method of “Magic estimation”. Someone mentioned “Scripts to rule them all”, an attempt to establish a common set of scripts in each project that do certain project tasks like bootstrapping, resetting, updating, running the CI validation, etc.
At the SoCraTes conference I attended a demo of the fish shell and was so impressed that I pledged to use fish instead of zsh as my main shell for 4 weeks. This is the result of the experiment and contains my collected experiences. Fish is awesome I really like fish and will continue to use it. The syntax highlighting of the the commands gives immediate feedback (unknown commands are shown in red) and the command autosuggestions are a real time saver.
I attended SoCraTes 2017 in Soltau. SoCraTes is an “Unconference”, where the participants set their own agenda and come up with topics for their sessions. Sessions can be presentations, workshops and open discussions. Here are the notes from some of the sessions I attended: Programming Exercise: Banishing State The example of this exercise was taken from a real-life project: A book indexing service that takes keyword/page number pairs as input and outputs either the page number, a range of page numbers or nothing, depending on previous inputs.
By default, many Vagrant boxes install a SSH key for the default user of a virtual machine image. This is fully transparent and you can log in to the machine with the vagrant ssh command. But what if you want to log in with the standard ssh command, connect with rsync or run an Ansible playbook? This article shows how to find and reuse the connection parameters for your Vagrant box.
Encrypting credentials like SSH keys or database passwords and putting the encrypted file in a semi-public Git repository is both convenient and scary. Convenient because every user of the repository only has to know only one password. Scary because you now rely on encryption and passwords instead of other security practices. So the question arose in my team “Assuming there are no implementation errors, how secure are Ansible Vaults?” Since the first 10 Google results did not answer this question quick enough, I decided to read the source code and answer the question myself.
I attended the Wikimedia Hackathon 2017 in Vienna. This is a summary and review of what I learned there while working on the prototype of the “Advanced Search Form” extension for MediaWiki. The first hurdle for working on the feature was setting up a MediaWiki environment. The recommended way is the Vagrant environment, but I’ve had bad experiences with that in the past and did not want do download tons of stuff over the conference WiFi.
This article will teach you how create user accounts with the configuration management software Ansible. You will learn how to create users with passwords, SSH-only users and users with temporary passwords that must be changed. Some background on passwords on Linux The file /etc/passwd hints at passwords, but stores only an “x” or other character where the password has been stored historically. The real passwords are stored in the file /etc/shadow, in a hashed format.