Archives

2025

June

Gary Klein

2024

November

April

Prospective Hindsight

March

Hyrum’s Law

Resetting USB devices on Linux

January

Intune on Fedora 39

Intune on Fedora 40

2023

November

SELinux troubleshooting

September

Project retrospective template

August

Intune on Fedora 38

Go format flags

June

Fixing the 1password for Linux URL scheme handler

Python developer mode

May

Azure Service Principals

systemd-resolved

April

Process over outcome

March

HiDPI on Linux

Crockford’s Base32

February

Detecting a Python virtual environment

Starlite

Architecture Decision Records

January

Troubleshooting Podman

2022

September

SREcon22 EMEA

July

A good strategy cannot be proven ahead of time

Failure Anticipation Review

May

Podman docker compatibility

Upgrade Python packages to their latest version when using poetry

April

The 4 types of technical documentation

February

AsciiDoc

reStructuredText

Markedly Structured Text (MyST)

GitHub Flavored Markdown (GFM)

CommonMark

Markdown

Sphinx

SSH authorized_keys permission denied on Fedora until SELinux labels were reloaded

January

Making Earthly work with Podman

Podman

Earthly

Book notes on ‘Extreme Ownership - How US Navy Seals Lead and Win’

Click here is not a good link text

High-quality commits

Rhai

Raku

PHP (Programming Language)

Perl

Larry Wall

Waterbed theory

Action Bias

Async-first problem-solving template

Screen readers skip images with empty alt attributes

Meditations

Notes on ‘Lessons in Stoicism’

2021

December

The Daily Stoic

Stoicism

Epictetus

Marcus Aurelius

Seneca

Helvidius Priscus

Musonius Rufus

John Sellars

Lessons in Stoicism

Maker’s schedule and manager’s schedule

Multitasking does not make you more productive

Six early predictors of burnout in the workplace

Toil in Customer Support

Too much reliability

Don’t blindly rollback

Postforward

November

On keeping or discarding fleeting notes

Excalidraw

Canary Releases

The difference between a deployment and a release

Instituut Fysieke Veiligheid (IFV)

Whiteboarding and live-coding exercises in tech interviews are counterproductive

Stop using PGP

October

Applicability of the GDPR

General Data Protection Regulation (GDPR)

Python type annotations on classes

Python’s Global Interpreter Lock

pipx

Python Packaging Authority

Go programming language

SREcon21

Architecture Patterns with Python

Mark Smith

Comparison between Restic and Borg backup

Grandfather-father-son backup scheme

Risk aversion and fear of the unknown are direct symptoms of a lack of context, and are the polar opposites of audacity

ZFS

Prometheus

Xonsh

John Allspaw on collecting MTTx metrics versus stories about incidents

PLOWS After Action Review

The “Chainsaw” After Action Review format

September

After Action Review Template

Conducting an After Action Review

Box Breathing

I don’t trust the MBTI

HangOps Community

After Action Review Learning Resources

In a study with waiters, mirroring resulted in 70% higher tips compared to positive reinforcement

After Action Review

Amygdala Hijack

Instead of asking why, ask “what made you decide?”

Leader’s Intent

National Wildfire Coordinating Group

Never Split the Difference

Switching obsidian-export to CalVer

Python

Python assignment expressions

Using Asyncio in Python

Team Canvas

Team Canvas preparation hints

Python asyncio resources

August

Extreme Ownership

Castor

Ansible

Ansible return Values

Ansible variables quick reference

Lorin Hochstein

Lorin Hochstein’s reading lists

In one study, open workspaces reduced face-to-face interaction by as much as 70%

Psychological safety at Google

Predictable Network Interface Names in systemd

Red Cross Districts

Rode Kruis Noodhulp Teams

Jocko Willink

Leif Babin

Effectively asking for help

Bottom Line Up Front (BLUF)

Feedback

My core values

What I’m doing now

Nick’s personal manual

Analyzing coredumps on Linux

Hindsight Bias

July

Ego

Exponential backoff

Transient failure

Extreme Ownership

Should you pursue a multi-cloud strategy?

Don’t take ownership over tasks you don’t agree with

June

Grootschalige Geneeskundige Bijstand

Ziekenhuis Rampen Opvang Plan

systemd timers

Express system availability as a ratio of events

Uptime is a bad proxy for availability

May

The “thundering herd” problem

The generation effect

systemd user instances

Defining systemd units

Inspecting and controlling systemd state

Limiting system resources with systemd

systemd targets

systemd timers don’t overlap

systemd units

The systemd journal

Recursively copy files in Rust

Trapping signals in shell scripts

Ubuntu does not change package versions within a release

What values are allowed in syslog tag or app names?

Building CLI scripts with Elixir

March

Verbal communication accounts for more than just 7%

Cognitive load

Extraneous Cognitive Load

Germane Cognitive Load

Intrinsic Cognitive Load

Schema

The Rust programming language

Servo

The origins of Rust

Feedforward

February

Bad rules help suppress minorities and vulnerable people

Before you break a rule, first seek to understand what caused that rule to be created

Diane Vaughan

Normalization of deviance

Project Management Body of Knowledge (PMBOK)

Rules and procedures are often used to legitimize scapegoats

Social normalization of deviance means that people within the organization become so much accustomed to a deviation that they don’t consider it as deviant

SolarWinds hack

Sidney Dekker describing the Old View on human error in his book, the field guide to human error

Sidney Dekker describing the New View of human error in his book, the field guide to human error

Human error

John Allspaw

The old and new view on human error

Hugo

Relative linking in Hugo

Don’t send links without context

A good user story is written from the perspective of an individual

Henry Ford never made that quote about faster horses

If I had asked people what they wanted, they would have said faster horses

If there is any one secret of success, it lies in the ability to get the other person’s point of view and see things from that person’s angle as well as from your own

Placing the user at the center helps us become emotionally invested

User stories should describe the user or persona before anything else

Niklas Luhmann

Zettelkasten notes are atomic

Zettelkasten promotes reuse

My digital garden is for me

Stepping down as CISO

Reactive system

Reflective system

Digital Garden notes may be incomplete

Digital Gardens

Digital Gardens are non-hierarchical

Digital Gardens are tightly interwoven

Order emerges when multiple notes on a similar topic are collected and grouped together

January

David Provan

Drew Rae

Risk assessments are subjective and arbitrary

Risk matrix

Safety of Work (podcast)

What you’re representing on the matrix is less information than you started with

Flaxseed meal egg replacement

Digital Gardens may be public or private

A Digital Garden is like a personal wiki

Perform a post-incident review instead of a postmortem

Post-incident review

Creatine

Creatine is a safe and effective supplement

A 99.9% monthly SLO is a 99.5% weekly SLO

Complex systems

Complex systems are composed of many different interacting components

Complex systems display emergent behavior

Socio-technical systems are complex systems

The behavior of complex systems cannot easily be modeled or represented as a whole

Impostor syndrome among men and women

Anti-ronselbeding in Dutch law

Non-compete in Dutch law

Relatiebeding in Dutch law

The negative effects of non-competes

Abuse Cases

User Stories

Obsidian Export

Causes of cognitive dissonance

Cognitive Dissonance

Free spaces

Mere Exposure Effect

Negative Punishment

Negative Reinforcement

Operant Conditioning

Positive Punishment

Positive reinforcement

Bystander Effect

Spread of obesity through social networks

jq

JSON logs

Logfmt

Haddon Matrix

The Checklist Manifesto

Common Cognitive Biases

Confirmation Bias

Conformity Bias

Fundamental Attribution Error

Overconfidence Bias

Decision making: The consequences and identity models

James March

Shrink the change

The Endowed Progress Effect

2020

December

When people push for change and it doesn’t happen, they often chalk it up to a lack of understanding

Focus on the bright spots

Malnutrition in Vietnam

Postmortems

Solutions-focused (brief) therapy

Solutions-focused brief therapy methodology

True, but useless

Humans have both a rational and an emotional system in their brains

The Elephant and the Rider (from The Happiness Hypothesis)

Why I don’t like the concept of a root cause

Clippy not reporting errors until compiled targets are removed

Ensure EOL on files with Rust

Rust

Upgrading Fedora from the CLI

October

Pitfalls of graphing topk queries from Prometheus or Loki within Grafana

Linux memory management

Employee voice

LogQL

LogQL filter expressions

LogQL metric queries

LogQL stream selectors

Loki

Laura Maguire on admitting when you don’t know something

Costs of coordination

Every page is page one

One sentence per line

Emergent Behavior

Socio-technical systems

Systems thinking

Tell people what to do instead of what not to do

What is a socio-technical system?

LED flickering on camera

Full Service Ownership

Service responsibility with Full Service Ownership

What is Full Service Ownership

Research into the effects of on-call work

September

Elixir in Healthcare

Project Waterpark

Site Reliability Engineering

Toil

What is Site Reliability Engineering?

What you call root cause is simply the place where you stop looking any further

Effects of Fatigue

Commitment and Consistency Bias

Local Rationality

Effectiveness of Active Recall

Active Recall

Commander’s Intent

Decision Fatigue

Rust Path vs PathBuf

AsciiDoc(tor) syntax reference and tricks

If you want people to do the right thing - Save them the guilt trip

Publishing Python software to PyPI

August

Analysis of 18 months of decisionmaking at a German technology firm

Chip Heath

Dan Heath

Opportunity Cost

Switch

Amos Tversky

Backfire effect

Cognitive Biases

Integrative thinking

July

Timelines in incident investigations

The power of saying no

Tips and techniques to gracefully say no to requests

Warren Buffett - Very successful people say ‘no’ to almost everything

Everything we hear is an opinion, not a fact

Elixir

Tips for effective use of Telemetry in Elixir

Erik Hollnagel

ETTO: Efficiency-Thoroughness Trade-Off

Nancy Leveson

Charity Major’s definition of observability

Sidney Dekker

Companies using Elixir

Impostor syndrome

Psychological safety

Daniel Kahneman

Shane Parrish

June

Rename GitHub default branch from CLI

The limit of remembering only 4 things at once

Convert SSH public key to fingerprint hash

Clean up unused build files created by cargo

Capitalize a string in Rust

Replacing cronjobs with systemd timers

Zettelkasten

Obsidian

Ansible host patterns

HAProxy codes

Research and recommendations on modern password policies

SREcon19 EMEA

Substitute environment variables in files

systemd

Wayland screen-sharing

May

Rust: Structuring and handling errors in 2020

2018

October

Top-10 talks of SREcon18 Europe

2017

June

True seamless reloads coming in HAProxy 1.8

January

Plugins in Go 1.8

2016

January

Dotfiles showcase: Git

Dotfiles showcase

2015

March

Introducing docker-image-updater

2014

June

It’s coming back!

May

Goodbye logstripper

January

Screen is not a process control system

2013

November

August

Birds, Amsterdam and spreading wings

March

Getting (g)it

SPF records, you’re doing them wrong

Use Puppet to install Err directly from Git into a Python virtualenv

Lets talk about logging

February

January

Pcregrep to the rescue

Hello world!