From 29587efbf889923ca8cf6d174864884589b21a3a Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 13 Jan 2024 23:11:25 +0200 Subject: Update content for gemtext --- ...-04-09-jails-and-zfs-on-freebsd-with-puppet.gmi | 4 +- ...09-jails-and-zfs-on-freebsd-with-puppet.gmi.tpl | 4 +- ...4-22-dtail-the-distributed-log-tail-program.gmi | 4 +- ...-dtail-the-distributed-log-tail-program.gmi.tpl | 4 +- ...05-gemtexter-one-bash-script-to-rule-it-all.gmi | 4 +- ...emtexter-one-bash-script-to-rule-it-all.gmi.tpl | 4 +- gemfeed/2022-03-06-the-release-of-dtail-4.0.0.gmi | 4 +- .../2022-03-06-the-release-of-dtail-4.0.0.gmi.tpl | 4 +- .../2022-05-27-perl-is-still-a-great-choice.gmi | 4 +- ...2022-05-27-perl-is-still-a-great-choice.gmi.tpl | 4 +- ...022-07-30-lets-encrypt-with-openbsd-and-rex.gmi | 4 +- ...07-30-lets-encrypt-with-openbsd-and-rex.gmi.tpl | 4 +- ...-03-25-gemtexter-2.0.0-lets-gemtext-again-2.gmi | 4 +- ...25-gemtexter-2.0.0-lets-gemtext-again-2.gmi.tpl | 4 +- gemfeed/2023-05-01-unveiling-guprecords | 0 ...23-06-01-kiss-server-monitoring-with-gogios.gmi | 4 +- ...6-01-kiss-server-monitoring-with-gogios.gmi.tpl | 4 +- ...-07-21-gemtexter-2.1.0-lets-gemtext-again-3.gmi | 4 +- ...21-gemtexter-2.1.0-lets-gemtext-again-3.gmi.tpl | 4 +- gemfeed/2023-12-10-bash-golf-part-3.gmi | 3 +- gemfeed/2023-12-10-bash-golf-part-3.gmi.tpl | 3 +- gemfeed/atom.xml | 37 +- gemfeed/atom.xml.tmp | 655 --------------------- index.gmi | 2 +- uptime-stats.gmi | 2 +- 25 files changed, 58 insertions(+), 716 deletions(-) create mode 100644 gemfeed/2023-05-01-unveiling-guprecords delete mode 100644 gemfeed/atom.xml.tmp diff --git a/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.gmi b/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.gmi index c7099c30..2dc56fa1 100644 --- a/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.gmi +++ b/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.gmi @@ -385,6 +385,8 @@ Of course I am operating multiple Jails on the same host this way with Puppet: All done in a pretty automated manor. +E-Mail your comments to `paul@nospam.buetow.org` :-) + Other *BSD related posts are: => ./2016-04-09-jails-and-zfs-on-freebsd-with-puppet.gmi 2016-04-09 Jails and ZFS with Puppet on FreeBSD (You are currently reading this) @@ -392,6 +394,4 @@ Other *BSD related posts are: => ./2022-10-30-installing-dtail-on-openbsd.gmi 2022-10-30 Installing DTail on OpenBSD => ./2024-01-13-one-reason-why-i-love-openbsd.gmi 2024-01-13 One reason why I love OpenBSD -E-Mail your comments to `paul@nospam.buetow.org` :-) - => ../ Back to the main site diff --git a/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.gmi.tpl b/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.gmi.tpl index 29cdc38d..c5595a87 100644 --- a/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.gmi.tpl +++ b/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.gmi.tpl @@ -385,10 +385,10 @@ Of course I am operating multiple Jails on the same host this way with Puppet: All done in a pretty automated manor. +E-Mail your comments to `paul@nospam.buetow.org` :-) + Other *BSD related posts are: << template::inline::index bsd -E-Mail your comments to `paul@nospam.buetow.org` :-) - => ../ Back to the main site diff --git a/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.gmi b/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.gmi index 2cdced07..aafd82f3 100644 --- a/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.gmi +++ b/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.gmi @@ -103,6 +103,8 @@ Mimecast highly encourages you to have a look at DTail and submit an issue for a => https://dtail.dev +E-Mail your comments to `paul@nospam.buetow.org` :-) + Other related posts are: => ./2021-04-22-dtail-the-distributed-log-tail-program.gmi 2021-04-22 DTail - The distributed log tail program (You are currently reading this) @@ -110,6 +112,4 @@ Other related posts are: => ./2022-10-30-installing-dtail-on-openbsd.gmi 2022-10-30 Installing DTail on OpenBSD => ./2023-09-25-dtail-usage-examples.gmi 2023-09-25 DTail usage examples -E-Mail your comments to `paul@nospam.buetow.org` :-) - => ../ Back to the main site diff --git a/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.gmi.tpl b/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.gmi.tpl index 14aca353..bdae8e19 100644 --- a/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.gmi.tpl +++ b/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.gmi.tpl @@ -103,10 +103,10 @@ Mimecast highly encourages you to have a look at DTail and submit an issue for a => https://dtail.dev +E-Mail your comments to `paul@nospam.buetow.org` :-) + Other related posts are: << template::inline::index dtail -E-Mail your comments to `paul@nospam.buetow.org` :-) - => ../ Back to the main site diff --git a/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.gmi b/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.gmi index 1c57e0e5..f8e5fdde 100644 --- a/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.gmi +++ b/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.gmi @@ -163,6 +163,8 @@ It was quite a lot of fun writing Gemtexter. It's a relatively small project, bu I finally revamped my personal internet site and started to blog again. I wanted the result to be exactly how it is now: A slightly retro-inspired internet site built for fun with unconventional tools. +E-Mail your comments to `paul@nospam.buetow.org` :-) + Other related posts are: => ./2021-04-24-welcome-to-the-geminispace.gmi 2021-04-24 Welcome to the Geminispace @@ -175,6 +177,4 @@ Other related posts are: => ./2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.gmi 2023-07-21 Gemtexter 2.1.0 - Let's Gemtext again³ => ./2023-12-10-bash-golf-part-3.gmi 2023-12-10 Bash Golf Part 3 -E-Mail your comments to `paul@nospam.buetow.org` :-) - => ../ Back to the main site diff --git a/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.gmi.tpl b/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.gmi.tpl index e1568050..ad55cc9d 100644 --- a/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.gmi.tpl +++ b/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.gmi.tpl @@ -163,10 +163,10 @@ It was quite a lot of fun writing Gemtexter. It's a relatively small project, bu I finally revamped my personal internet site and started to blog again. I wanted the result to be exactly how it is now: A slightly retro-inspired internet site built for fun with unconventional tools. +E-Mail your comments to `paul@nospam.buetow.org` :-) + Other related posts are: << template::inline::index gemtext gemini bash -E-Mail your comments to `paul@nospam.buetow.org` :-) - => ../ Back to the main site diff --git a/gemfeed/2022-03-06-the-release-of-dtail-4.0.0.gmi b/gemfeed/2022-03-06-the-release-of-dtail-4.0.0.gmi index 99ecfa8a..cd8bb6a4 100644 --- a/gemfeed/2022-03-06-the-release-of-dtail-4.0.0.gmi +++ b/gemfeed/2022-03-06-the-release-of-dtail-4.0.0.gmi @@ -286,6 +286,8 @@ I use usually DTail at work, but I have recently installed it on my personal Ope I am a bit busy at the moment with two other pet projects of mine (one internal work-project, and one personal one, the latter you will read about in the next couple of months). If you have ideas (or even a patch), then please don't hesitate to contact me (either via E-Mail or a request at GitHub). +E-Mail your comments to `paul@nospam.buetow.org` :-) + Other related posts are: => ./2021-04-22-dtail-the-distributed-log-tail-program.gmi 2021-04-22 DTail - The distributed log tail program @@ -297,6 +299,4 @@ Thanks! Paul -E-Mail your comments to `paul@nospam.buetow.org` :-) - => ../ Back to the main site diff --git a/gemfeed/2022-03-06-the-release-of-dtail-4.0.0.gmi.tpl b/gemfeed/2022-03-06-the-release-of-dtail-4.0.0.gmi.tpl index 70e7fb81..a7d6bdd5 100644 --- a/gemfeed/2022-03-06-the-release-of-dtail-4.0.0.gmi.tpl +++ b/gemfeed/2022-03-06-the-release-of-dtail-4.0.0.gmi.tpl @@ -286,6 +286,8 @@ I use usually DTail at work, but I have recently installed it on my personal Ope I am a bit busy at the moment with two other pet projects of mine (one internal work-project, and one personal one, the latter you will read about in the next couple of months). If you have ideas (or even a patch), then please don't hesitate to contact me (either via E-Mail or a request at GitHub). +E-Mail your comments to `paul@nospam.buetow.org` :-) + Other related posts are: << template::inline::index dtail @@ -294,6 +296,4 @@ Thanks! Paul -E-Mail your comments to `paul@nospam.buetow.org` :-) - => ../ Back to the main site diff --git a/gemfeed/2022-05-27-perl-is-still-a-great-choice.gmi b/gemfeed/2022-05-27-perl-is-still-a-great-choice.gmi index 41dd7463..90ac0f44 100644 --- a/gemfeed/2022-05-27-perl-is-still-a-great-choice.gmi +++ b/gemfeed/2022-05-27-perl-is-still-a-great-choice.gmi @@ -134,6 +134,8 @@ Btw.: Did you know that the first version of PHP was a set of Perl snippets? Onl => https://stackoverflow.blog/2022/07/06/why-perl-is-still-relevant-in-2022/ Why Perl is still relevant in 2022 +E-Mail your comments to `paul@nospam.buetow.org` :-) + Other related posts are: => ./2008-06-26-perl-poetry.gmi 2008-06-26 Perl Poetry @@ -141,6 +143,4 @@ Other related posts are: => ./2022-05-27-perl-is-still-a-great-choice.gmi 2022-05-27 Perl is still a great choice (You are currently reading this) => ./2023-05-01-unveiling-guprecords:-uptime-records-with-raku.gmi 2023-05-01 Unveiling `guprecords.raku`: Global Uptime Records with Raku -E-Mail your comments to `paul@nospam.buetow.org` :-) - => ../ Back to the main site diff --git a/gemfeed/2022-05-27-perl-is-still-a-great-choice.gmi.tpl b/gemfeed/2022-05-27-perl-is-still-a-great-choice.gmi.tpl index 8ff175c6..26b5c67c 100644 --- a/gemfeed/2022-05-27-perl-is-still-a-great-choice.gmi.tpl +++ b/gemfeed/2022-05-27-perl-is-still-a-great-choice.gmi.tpl @@ -134,10 +134,10 @@ Btw.: Did you know that the first version of PHP was a set of Perl snippets? Onl => https://stackoverflow.blog/2022/07/06/why-perl-is-still-relevant-in-2022/ Why Perl is still relevant in 2022 +E-Mail your comments to `paul@nospam.buetow.org` :-) + Other related posts are: << template::inline::index perl raku -E-Mail your comments to `paul@nospam.buetow.org` :-) - => ../ Back to the main site diff --git a/gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.gmi b/gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.gmi index 1c9ea500..b4703280 100644 --- a/gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.gmi +++ b/gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.gmi @@ -656,6 +656,8 @@ OpenBSD suits perfectly here as all the tools are already part of the base insta Why re-inventing the wheel? I love that a `Rexfile` is just a Perl DSL. Also, OpenBSD comes with Perl in the base system. So no new programming language had to be added to my mix for the configuration management system. Also, the `acme.sh` shell script is not a Bash but a standard Bourne shell script, so I didn't have to install an additional shell as OpenBSD does not come with the Bash pre-installed. +E-Mail your comments to `paul@nospam.buetow.org` :-) + Other *BSD related posts are: => ./2016-04-09-jails-and-zfs-on-freebsd-with-puppet.gmi 2016-04-09 Jails and ZFS with Puppet on FreeBSD @@ -663,6 +665,4 @@ Other *BSD related posts are: => ./2022-10-30-installing-dtail-on-openbsd.gmi 2022-10-30 Installing DTail on OpenBSD => ./2024-01-13-one-reason-why-i-love-openbsd.gmi 2024-01-13 One reason why I love OpenBSD -E-Mail your comments to `paul@nospam.buetow.org` :-) - => ../ Back to the main site diff --git a/gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.gmi.tpl b/gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.gmi.tpl index 1a83ef67..de5ee1f0 100644 --- a/gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.gmi.tpl +++ b/gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.gmi.tpl @@ -656,10 +656,10 @@ OpenBSD suits perfectly here as all the tools are already part of the base insta Why re-inventing the wheel? I love that a `Rexfile` is just a Perl DSL. Also, OpenBSD comes with Perl in the base system. So no new programming language had to be added to my mix for the configuration management system. Also, the `acme.sh` shell script is not a Bash but a standard Bourne shell script, so I didn't have to install an additional shell as OpenBSD does not come with the Bash pre-installed. +E-Mail your comments to `paul@nospam.buetow.org` :-) + Other *BSD related posts are: << template::inline::index bsd -E-Mail your comments to `paul@nospam.buetow.org` :-) - => ../ Back to the main site diff --git a/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.gmi b/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.gmi index addd500f..82e61126 100644 --- a/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.gmi +++ b/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.gmi @@ -136,6 +136,8 @@ Optionally, when the `xmllint` binary is installed, Gemtexter will perform a sim Additionally, there were a couple of bug fixes, refactorings and overall improvements in the documentation made. +E-Mail your comments to `paul@nospam.buetow.org` :-) + Other related posts are: => ./2021-04-24-welcome-to-the-geminispace.gmi 2021-04-24 Welcome to the Geminispace @@ -144,6 +146,4 @@ Other related posts are: => ./2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.gmi 2023-03-25 Gemtexter 2.0.0 - Let's Gemtext again² (You are currently reading this) => ./2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.gmi 2023-07-21 Gemtexter 2.1.0 - Let's Gemtext again³ -E-Mail your comments to `paul@nospam.buetow.org` :-) - => ../ Back to the main site diff --git a/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.gmi.tpl b/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.gmi.tpl index 092a14a1..2e322cac 100644 --- a/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.gmi.tpl +++ b/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.gmi.tpl @@ -136,10 +136,10 @@ Optionally, when the `xmllint` binary is installed, Gemtexter will perform a sim Additionally, there were a couple of bug fixes, refactorings and overall improvements in the documentation made. +E-Mail your comments to `paul@nospam.buetow.org` :-) + Other related posts are: << template::inline::index gemtext gemini -E-Mail your comments to `paul@nospam.buetow.org` :-) - => ../ Back to the main site diff --git a/gemfeed/2023-05-01-unveiling-guprecords b/gemfeed/2023-05-01-unveiling-guprecords new file mode 100644 index 00000000..e69de29b diff --git a/gemfeed/2023-06-01-kiss-server-monitoring-with-gogios.gmi b/gemfeed/2023-06-01-kiss-server-monitoring-with-gogios.gmi index d2312a2d..a5954f14 100644 --- a/gemfeed/2023-06-01-kiss-server-monitoring-with-gogios.gmi +++ b/gemfeed/2023-06-01-kiss-server-monitoring-with-gogios.gmi @@ -236,12 +236,12 @@ There are plans to make it possible to execute certain checks only on certain no Gogios is a lightweight and straightforward monitoring tool that is perfect for small-scale environments. With its compatibility with the Nagios Check API, email notifications, and CRON-based scheduling, Gogios offers an easy-to-use solution for those looking to monitor a limited number of resources. I personally use it to execute around 500 checks on my personal server infrastructure. I am very happy with this solution. +E-Mail your comments to `paul@nospam.buetow.org` :-) + Other KISS-related posts are: => ./2021-09-12-keep-it-simple-and-stupid.gmi 2021-09-12 Keep it simple and stupid => ./2023-06-01-kiss-server-monitoring-with-gogios.gmi 2023-06-01 KISS server monitoring with Gogios (You are currently reading this) => ./2023-10-29-kiss-static-web-photo-albums-with-photoalbum.sh.gmi 2023-10-29 KISS static web photo albums with `photoalbum.sh` -E-Mail your comments to `paul@nospam.buetow.org` :-) - => ../ Back to the main site diff --git a/gemfeed/2023-06-01-kiss-server-monitoring-with-gogios.gmi.tpl b/gemfeed/2023-06-01-kiss-server-monitoring-with-gogios.gmi.tpl index d806d260..d49e9f1c 100644 --- a/gemfeed/2023-06-01-kiss-server-monitoring-with-gogios.gmi.tpl +++ b/gemfeed/2023-06-01-kiss-server-monitoring-with-gogios.gmi.tpl @@ -236,10 +236,10 @@ There are plans to make it possible to execute certain checks only on certain no Gogios is a lightweight and straightforward monitoring tool that is perfect for small-scale environments. With its compatibility with the Nagios Check API, email notifications, and CRON-based scheduling, Gogios offers an easy-to-use solution for those looking to monitor a limited number of resources. I personally use it to execute around 500 checks on my personal server infrastructure. I am very happy with this solution. +E-Mail your comments to `paul@nospam.buetow.org` :-) + Other KISS-related posts are: << template::inline::index kiss simple-and-stupid -E-Mail your comments to `paul@nospam.buetow.org` :-) - => ../ Back to the main site diff --git a/gemfeed/2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.gmi b/gemfeed/2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.gmi index fed7ffa1..e9b3590c 100644 --- a/gemfeed/2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.gmi +++ b/gemfeed/2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.gmi @@ -91,6 +91,8 @@ The resulting line in the HTML output will be something as follows: Additionally, there were a couple of bug fixes, refactorings and overall improvements in the documentation made. +E-Mail your comments to `paul@nospam.buetow.org` :-) + Other related posts are: => ./2021-04-24-welcome-to-the-geminispace.gmi 2021-04-24 Welcome to the Geminispace @@ -99,6 +101,4 @@ Other related posts are: => ./2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.gmi 2023-03-25 Gemtexter 2.0.0 - Let's Gemtext again² => ./2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.gmi 2023-07-21 Gemtexter 2.1.0 - Let's Gemtext again³ (You are currently reading this) -E-Mail your comments to `paul@nospam.buetow.org` :-) - => ../ Back to the main site diff --git a/gemfeed/2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.gmi.tpl b/gemfeed/2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.gmi.tpl index 2c78d429..95e5ea54 100644 --- a/gemfeed/2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.gmi.tpl +++ b/gemfeed/2023-07-21-gemtexter-2.1.0-lets-gemtext-again-3.gmi.tpl @@ -91,10 +91,10 @@ The resulting line in the HTML output will be something as follows: Additionally, there were a couple of bug fixes, refactorings and overall improvements in the documentation made. +E-Mail your comments to `paul@nospam.buetow.org` :-) + Other related posts are: << template::inline::index gemtext gemini -E-Mail your comments to `paul@nospam.buetow.org` :-) - => ../ Back to the main site diff --git a/gemfeed/2023-12-10-bash-golf-part-3.gmi b/gemfeed/2023-12-10-bash-golf-part-3.gmi index 77f4df6a..576b6735 100644 --- a/gemfeed/2023-12-10-bash-golf-part-3.gmi +++ b/gemfeed/2023-12-10-bash-golf-part-3.gmi @@ -355,6 +355,7 @@ echo baz So what happened? The `echo baz` line was appended to the script while it was still executed! And the interpreter also picked it up! It tells us that Bash evaluates each line as it encounters it. This can lead to nasty side effects when editing the script while it is still being executed! You should always keep this in mind! +E-Mail your comments to `paul@nospam.buetow.org` :-) Other related posts are: @@ -364,6 +365,4 @@ Other related posts are: => ./2022-01-01-bash-golf-part-2.gmi 2022-01-01 Bash Golf Part 2 => ./2023-12-10-bash-golf-part-3.gmi 2023-12-10 Bash Golf Part 3 (You are currently reading this) -E-Mail your comments to `paul@nospam.buetow.org` :-) - => ../ Back to the main site diff --git a/gemfeed/2023-12-10-bash-golf-part-3.gmi.tpl b/gemfeed/2023-12-10-bash-golf-part-3.gmi.tpl index e281c427..d8bd95d6 100644 --- a/gemfeed/2023-12-10-bash-golf-part-3.gmi.tpl +++ b/gemfeed/2023-12-10-bash-golf-part-3.gmi.tpl @@ -353,11 +353,10 @@ echo baz So what happened? The `echo baz` line was appended to the script while it was still executed! And the interpreter also picked it up! It tells us that Bash evaluates each line as it encounters it. This can lead to nasty side effects when editing the script while it is still being executed! You should always keep this in mind! +E-Mail your comments to `paul@nospam.buetow.org` :-) Other related posts are: << template::inline::index bash -E-Mail your comments to `paul@nospam.buetow.org` :-) - => ../ Back to the main site diff --git a/gemfeed/atom.xml b/gemfeed/atom.xml index 1ad8513c..6ea467a2 100644 --- a/gemfeed/atom.xml +++ b/gemfeed/atom.xml @@ -1,6 +1,6 @@ - 2024-01-13T23:06:21+02:00 + 2024-01-13T23:11:04+02:00 foo.zone feed To be in the .zone! @@ -573,6 +573,7 @@ echo baz
So what happened? The echo baz line was appended to the script while it was still executed! And the interpreter also picked it up! It tells us that Bash evaluates each line as it encounters it. This can lead to nasty side effects when editing the script while it is still being executed! You should always keep this in mind!

+E-Mail your comments to paul@nospam.buetow.org :-)

Other related posts are:

@@ -582,8 +583,6 @@ echo baz 2022-01-01 Bash Golf Part 2
2023-12-10 Bash Golf Part 3 (You are currently reading this)

-E-Mail your comments to paul@nospam.buetow.org :-)
-
Back to the main site
@@ -1585,6 +1584,8 @@ http://www.gnu.org/software/src-highlite -->
Additionally, there were a couple of bug fixes, refactorings and overall improvements in the documentation made.

+E-Mail your comments to paul@nospam.buetow.org :-)
+
Other related posts are:

2021-04-24 Welcome to the Geminispace
@@ -1593,8 +1594,6 @@ http://www.gnu.org/software/src-highlite --> 2023-03-25 Gemtexter 2.0.0 - Let's Gemtext again²
2023-07-21 Gemtexter 2.1.0 - Let's Gemtext again³ (You are currently reading this)

-E-Mail your comments to paul@nospam.buetow.org :-)
-
Back to the main site
@@ -2195,14 +2194,14 @@ http://www.gnu.org/software/src-highlite -->
Gogios is a lightweight and straightforward monitoring tool that is perfect for small-scale environments. With its compatibility with the Nagios Check API, email notifications, and CRON-based scheduling, Gogios offers an easy-to-use solution for those looking to monitor a limited number of resources. I personally use it to execute around 500 checks on my personal server infrastructure. I am very happy with this solution.

+E-Mail your comments to paul@nospam.buetow.org :-)
+
Other KISS-related posts are:

2021-09-12 Keep it simple and stupid
2023-06-01 KISS server monitoring with Gogios (You are currently reading this)
2023-10-29 KISS static web photo albums with photoalbum.sh

-E-Mail your comments to paul@nospam.buetow.org :-)
-
Back to the main site
@@ -3088,6 +3087,8 @@ The remaining content of the Gemtext file...
Additionally, there were a couple of bug fixes, refactorings and overall improvements in the documentation made.

+E-Mail your comments to paul@nospam.buetow.org :-)
+
Other related posts are:

2021-04-24 Welcome to the Geminispace
@@ -3096,8 +3097,6 @@ The remaining content of the Gemtext file... 2023-03-25 Gemtexter 2.0.0 - Let's Gemtext again² (You are currently reading this)
2023-07-21 Gemtexter 2.1.0 - Let's Gemtext again³

-E-Mail your comments to paul@nospam.buetow.org :-)
-
Back to the main site
@@ -4991,6 +4990,8 @@ rex commons
Why re-inventing the wheel? I love that a Rexfile is just a Perl DSL. Also, OpenBSD comes with Perl in the base system. So no new programming language had to be added to my mix for the configuration management system. Also, the acme.sh shell script is not a Bash but a standard Bourne shell script, so I didn't have to install an additional shell as OpenBSD does not come with the Bash pre-installed.

+E-Mail your comments to paul@nospam.buetow.org :-)
+
Other *BSD related posts are:

2016-04-09 Jails and ZFS with Puppet on FreeBSD
@@ -4998,8 +4999,6 @@ rex commons 2022-10-30 Installing DTail on OpenBSD
2024-01-13 One reason why I love OpenBSD

-E-Mail your comments to paul@nospam.buetow.org :-)
-
Back to the main site
@@ -5501,6 +5500,8 @@ v = 008 [v = p*c*(s != c ? 2 : 1)] Total logical CPUs
Why Perl is still relevant in 2022

+E-Mail your comments to paul@nospam.buetow.org :-)
+
Other related posts are:

2008-06-26 Perl Poetry
@@ -5508,8 +5509,6 @@ v = 008 [v = p*c*(s != c ? 2 : 1)] Total logical CPUs 2022-05-27 Perl is still a great choice (You are currently reading this)
2023-05-01 Unveiling guprecords.raku: Global Uptime Records with Raku

-E-Mail your comments to paul@nospam.buetow.org :-)
-
Back to the main site
@@ -5977,6 +5976,8 @@ exec /usr/local/bin/dtailhealth --server localhost:2222
I am a bit busy at the moment with two other pet projects of mine (one internal work-project, and one personal one, the latter you will read about in the next couple of months). If you have ideas (or even a patch), then please don't hesitate to contact me (either via E-Mail or a request at GitHub).

+E-Mail your comments to paul@nospam.buetow.org :-)
+
Other related posts are:

2021-04-22 DTail - The distributed log tail program
@@ -5988,8 +5989,6 @@ exec /usr/local/bin/dtailhealth --server localhost:2222
Paul

-E-Mail your comments to paul@nospam.buetow.org :-)
-
Back to the main site
@@ -8143,6 +8142,8 @@ assert::equals "$(generate::m
I finally revamped my personal internet site and started to blog again. I wanted the result to be exactly how it is now: A slightly retro-inspired internet site built for fun with unconventional tools.

+E-Mail your comments to paul@nospam.buetow.org :-)
+
Other related posts are:

2021-04-24 Welcome to the Geminispace
@@ -8155,8 +8156,6 @@ assert::equals "$(generate::m 2023-07-21 Gemtexter 2.1.0 - Let's Gemtext again³
2023-12-10 Bash Golf Part 3

-E-Mail your comments to paul@nospam.buetow.org :-)
-
Back to the main site
@@ -8862,6 +8861,8 @@ dtail –servers serverlist.txt –files ‘/var/log/*.log’ –regex ‘(?i:er
https://dtail.dev

+E-Mail your comments to paul@nospam.buetow.org :-)
+
Other related posts are:

2021-04-22 DTail - The distributed log tail program (You are currently reading this)
@@ -8869,8 +8870,6 @@ dtail –servers serverlist.txt –files ‘/var/log/*.log’ –regex ‘(?i:er 2022-10-30 Installing DTail on OpenBSD
2023-09-25 DTail usage examples

-E-Mail your comments to paul@nospam.buetow.org :-)
-
Back to the main site
diff --git a/gemfeed/atom.xml.tmp b/gemfeed/atom.xml.tmp deleted file mode 100644 index f603be57..00000000 --- a/gemfeed/atom.xml.tmp +++ /dev/null @@ -1,655 +0,0 @@ - - - 2024-01-13T23:08:07+02:00 - foo.zone feed - To be in the .zone! - - - gemini://foo.zone/ - - One reason why I love OpenBSD - - gemini://foo.zone/gemfeed/2024-01-13-one-reason-why-i-love-openbsd.gmi - 2024-01-13T22:55:33+02:00 - - Paul Buetow aka snonux - paul@dev.buetow.org - - I just upgraded my OpenBSD's from `7.3` to `7.4` by following the unattended upgrade guide: - -
-

One reason why I love OpenBSD


-
-Published at 2024-01-13T22:55:33+02:00
-
-
-                         .
-                          A       ;
-                |   ,--,-/ \---,-/|  ,
-               _|\,'. /|      /|   `/|-.
-           \`.'    /|      ,            `;.
-          ,'\   A     A         A   A _ /| `.;
-        ,/  _              A       _  / _   /|  ;
-       /\  / \   ,  ,           A  /    /     `/|
-      /_| | _ \         ,     ,             ,/  \
-     // | |/ `.\  ,-      ,       ,   ,/ ,/      \/
-     / @| |@  / /'   \  \      ,              >  /|    ,--.
-    |\_/   \_/ /      |  |           ,  ,/        \  ./' __:..
-    |  __ __  |       |  | .--.  ,         >  >   |-'   /     `
-  ,/| /  '  \ |       |  |     \      ,           |    /
- /  |<--.__,->|       |  | .    `.        >  >    /   (
-/_,' \\  ^  /  \     /  /   `.    >--            /^\   |
-      \\___/    \   /  /      \__'     \   \   \/   \  |
-       `.   |/          ,  ,                  /`\    \  )
-         \  '  |/    ,       V    \          /        `-\
-          `|/  '  V      V           \    \.'            \_
-           '`-.       V       V        \./'\
-               `|/-.      \ /   \ /,---`\         kat
-                n
-                /   `._____V_____V'
-                           '     '
-
-
-I just upgraded my OpenBSD's from 7.3 to 7.4 by following the unattended upgrade guide:
-
-https://www.openbsd.org/faq/upgrade74.html
-
- -
doas installboot sd0 # Update the bootloader (not for every upgrade required)
-doas sysupgrade # Update all binaries (including Kernel)
-
-
-sysupgrade downloaded and upgraded to the next release and rebooted the system. After the reboot, I run:
-
- -
doas sysmerge # Update system configuration files
-doas pkg_add -u # Update all packages
-doas reboot # Just in case, reboot one more time
-
-
-That's it! Took me around 5 minutes in total! No issues, only these few comands, only 5 minutes! It just works! No problems, no conflicts, no tons (actually none) config file merge conflicts.
-
-I followed the same procedure the previous times and never encountered any difficulties with any OpenBSD upgrades.
-
-I have seen upgrades of other Operating Systems either take a long time or break the system (which takes manual steps to repair). That's just one of many reasons why I love OpenBSD! There appear never to be any problems. It just gets its job done!
-
-The OpenBSD Project
-
-BTW: are you looking for an opinionated OpenBSD VM hoster? OpenBSD Amsterdam may be for you. They rock (I am having a VM there, too)!
-
-https://openbsd.amsterdam
-
-Other *BSD related posts are:
-
-2016-04-09 Jails and ZFS with Puppet on FreeBSD
-2022-07-30 Let's Encrypt with OpenBSD and Rex
-2022-10-30 Installing DTail on OpenBSD
-2024-01-13 One reason why I love OpenBSD (You are currently reading this)
-
-E-Mail your comments to paul@nospam.buetow.org :-)
-
-Back to the main site
-
-
-
- - Site Reliability Engineering - Part 3: On-Call Culture and the Human Aspect - - gemini://foo.zone/gemfeed/2024-01-09-site-reliability-engineering-part-3.gmi - 2024-01-09T18:35:48+02:00 - - Paul Buetow aka snonux - paul@dev.buetow.org - - This is the third part of my Site Reliability Engineering (SRE) series. I am currently employed as a Site Reliability Engineer and will try to share what SRE is about in this blog series. - -
-

Site Reliability Engineering - Part 3: On-Call Culture and the Human Aspect


-
-Published at 2024-01-09T18:35:48+02:00
-
-This is the third part of my Site Reliability Engineering (SRE) series. I am currently employed as a Site Reliability Engineer and will try to share what SRE is about in this blog series.
-
-2023-08-18 Site Reliability Engineering - Part 1: SRE and Organizational Culture
-2023-11-19 Site Reliability Engineering - Part 2: Operational Balance in SRE
-2024-01-09 Site Reliability Engineering - Part 3: On-Call Culture and the Human Aspect (You are currently reading this)
-
-
-                    ..--""""----..                 
-                 .-"   ..--""""--.j-.              
-              .-"   .-"        .--.""--..          
-           .-"   .-"       ..--"-. \/    ;         
-        .-"   .-"_.--..--""  ..--'  "-.  :         
-      .'    .'  /  `. \..--"" __ _     \ ;         
-     :.__.-"    \  /        .' ( )"-.   Y          
-     ;           ;:        ( )     ( ).  \         
-   .':          /::       :            \  \        
- .'.-"\._   _.-" ; ;      ( )    .-.  ( )  \       
-  "    `."""  .j"  :      :      \  ;    ;  \      
-    bug /"""""/     ;      ( )    "" :.( )   \     
-       /\    /      :       \         \`.:  _ \    
-      :  `. /        ;       `( )     (\/ :" \ \   
-       \   `.        :         "-.(_)_.'   t-'  ;  
-        \    `.       ;                    ..--":  
-         `.    `.     :              ..--""     :  
-           `.    "-.   ;       ..--""           ;  
-             `.     "-.:_..--""            ..--"   
-               `.      :             ..--""        
-                 "-.   :       ..--""              
-                    "-.;_..--""                    
-
-
-
-

On-Call Culture and the Human Aspect: Prioritising Well-being in the Realm of Reliability


-
-Site Reliability Engineering is synonymous with ensuring system reliability, but the human factor is an often-underestimated part of this discipline. Ensuring an healthy on-call culture is as critical as any technical solution. The well-being of the engineers is an important factor.
-
-Firstly, a healthy on-call rotation is about more than just managing and responding to incidents. It's about the entire ecosystem that supports this practice. This involves reducing pain points, offering mentorship, rapid iteration, and ensuring that engineers have the right tools and processes. One ceavat is, that engineers should be willing to learn. Especially in on-call rotation embedding SREs with other engineers (for example Software Engineers or QA Engineers), it's difficult to motivate everyone to engage. QA Engineers want to test the software, Software Engineers want to implement new features; they don't want to troubleshoot and debug production incidents. It can be depressing for the mentoring SRE.
-
-Furthermore, the metrics that measure the success of an on-call experience are only sometimes straightforward. While one might assume that fewer pages translate to better on-call expertise (which is true to a degree, as who wants to receive a page out of office hours?), it's not always the volume of pages that matters most. Trust, ownership, accountability, and effective communication play the important roles.
-
-An important part is giving feedback about the on-call experience to ensure continuous learning. If alerts are mostly noise, they should be tuned or even eliminated. If alerts are actionable, can recurring tasks be automated? If there are knowledge gaps, is the documentation not good enough? Continuous retrospection ensures that not only do systems evolve, but the experience for the on-call engineers becomes progressively better.
-
-Onboarding for on-call duties is a crucial aspect of ensuring the reliability and efficiency of systems. This process involves equipping new team members with the knowledge, tools, and support to handle incidents confidently. It begins with an overview of the system architecture and common challenges, followed by training on monitoring tools, alerting mechanisms, and incident response protocols. Shadowing experienced on-call engineers can offer practical exposure. Too often, new engineers are thrown into the cold water without proper onboarding and training because the more experienced engineers are too busy fire-fighting production issues in the first place.
-
-An always-on, always-alert culture can lead to burnout. Engineers should be encouraged to recognise their limits, take breaks, and seek support when needed. This isn't just about individual health; a burnt-out engineer can have cascading effects on the entire team and the systems they manage. A successful on-call culture ensures that while systems are kept running, the engineers are kept happy, healthy, and supported. The more experienced engineers should take time to mentor the junior engineers, but the junior engineers should also be fully engaged, try to investigate and learn new things by themselves.
-
-For the junior engineer, it's too easy to fall back and ask the experts in the team every time an issue arises. This seems reasonable, but serving recipes for solving production issues on a silver tablet won't scale forever, as there are infinite scenarios of how production systems can break. So every engineer should learn to debug, troubleshoot and resolve production incidents independently. The experts will still be there for guidance and step in when the junior gets stuck after trying, but the experts should also learn to step down so that lesser experienced engineers can step up and learn. But mistakes can always happen here; that's why having a blameless on-call culture is essential.
-
-A blameless on-call culture is a must for a safe and collaborative environment where engineers can effectively respond to incidents without fear of retribution. This approach acknowledges that mistakes are a natural part of the learning and innovation process. When individuals are assured they won't be punished for errors, they're more likely to openly discuss mistakes, allowing the entire team to learn and grow from each incident. Furthermore, a blameless culture promotes psychological safety, enhances job satisfaction, reduces burnout, and ensures that talent remains committed and engaged.
-
-E-Mail your comments to paul@nospam.buetow.org :-)
-
-Back to the main site
-
-
-
- - Bash Golf Part 3 - - gemini://foo.zone/gemfeed/2023-12-10-bash-golf-part-3.gmi - 2023-12-10T11:35:54+02:00 - - Paul Buetow aka snonux - paul@dev.buetow.org - - This is the third blog post about my Bash Golf series. This series is random Bash tips, tricks, and weirdnesses I have encountered over time. - -
-

Bash Golf Part 3


-
-Published at 2023-12-10T11:35:54+02:00
-
-
-    '\       '\        '\                   .  .          |>18>>
-      \        \         \              .         ' .     |
-     O>>      O>>       O>>         .                 'o  |
-      \       .\. ..    .\. ..   .                        |
-      /\    .  /\     .  /\    . .                        |
-     / /   .  / /  .'.  / /  .'    .                      |
-jgs^^^^^^^`^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-                        Art by Joan Stark, mod. by Paul Buetow
-
-
-This is the third blog post about my Bash Golf series. This series is random Bash tips, tricks, and weirdnesses I have encountered over time.
-
-2021-11-29 Bash Golf Part 1
-2022-01-01 Bash Golf Part 2
-2023-12-10 Bash Golf Part 3 (You are currently reading this)
-
-

FUNCNAME


-
-FUNCNAME is an array you are looking for a way to dynamically determine the name of the current function (which could be considered the callee in the context of its own execution), you can use the special variable FUNCNAME. This is an array variable that contains the names of all shell functions currently in the execution call stack. The element FUNCNAME[0] holds the name of the currently executing function, FUNCNAME[1] the name of the function that called that, and so on.
-
-This is particularly useful for logging when you want to include the callee function in the log output. E.g. look at this log helper:
-
- -
#!/usr/bin/env bash
-
-log () {
-    local -r level="$1"; shift
-    local -r message="$1"; shift
-    local -i pid="$$"
-
-    local -r callee=${FUNCNAME[1]}
-    local -r stamp=$(date +%Y%m%d-%H%M%S)
-
-    echo "$level|$stamp|$pid|$callee|$message" >&2
-}
-
-at_home_friday_evening () {
-    log INFO 'One Peperoni Pizza, please'
-}
-
-at_home_friday_evening
-
-
-The output is as follows:
-
- -
./logexample.sh
-INFO|20231210-082732|123002|at_home_friday_evening|One Peperoni Pizza, please
-
-
-

:(){ :|:& };:


-
-This one may be widely known already, but I am including it here as I found a cute image illustrating it. But to break :(){ :|:& };: down:
-
-
    -
  • :(){ } is really a declaration of the function :
  • -
  • The ; is ending the current statement
  • -
  • The : at the end is calling the function :
  • -
  • :|:& is the function body
  • -

-Let's break down the function body :|:&:
-
-
    -
  • The first : is calling the function recursively
  • -
  • The |: is piping the output to the function : again (parallel recursion)
  • -
  • The & lets it run in the background.
  • -

-So, it's a fork bomb. If you run it, your computer will run out of resources eventually. (Modern Linux distributions could have reasonable limits configured for your login session, so it won't bring down your whole system anymore unless you run it as root!)
-
-And here is the cute illustration:
-
-Bash fork bomb
-
-

Inner functions


-
-Bash defines variables as it is interpreting the code. The same applies to function declarations. Let's consider this code:
-
- -
#!/usr/bin/env bash
-
-outer() {
-  inner() {
-    echo 'Intel inside!'
-  }
-  inner
-}
-
-inner
-outer
-inner
-
-
-And let's execute it:
-
-
-❯ ./inner.sh
-/tmp/inner.sh: line 10: inner: command not found
-Intel inside!
-Intel inside!
-
-
-What happened? The first time inner was called, it wasn't defined yet. That only happens after the outer run. Note that inner will still be globally defined. But functions can be declared multiple times (the last version wins):
-
- -
#!/usr/bin/env bash
-
-outer1() {
-  inner() {
-    echo 'Intel inside!'
-  }
-  inner
-}
-
-outer2() {
-  inner() {
-    echo 'Wintel inside!'
-  }
-  inner
-}
-
-outer1
-inner
-outer2
-inner
-
-
-And let's run it:
-
-
-❯ ./inner2.sh
-Intel inside!
-Intel inside!
-Wintel inside!
-Wintel inside!
-
-
-

Exporting functions


-
-Have you ever wondered how to execute a shell function in parallel through xargs? The problem is that this won't work:
-
- -
#!/usr/bin/env bash
-
-some_expensive_operations() {
-  echo "Doing expensive operations with '$1' from pid $$"
-}
-
-for i in {0..9}; do echo $i; done \
-  | xargs -P10 -I{} bash -c 'some_expensive_operations "{}"'
-
-
-We try here to run ten parallel processes; each of them should run the some_expensive_operations function with a different argument. The arguments are provided to xargs through STDIN one per line. When executed, we get this:
-
-
-❯ ./xargs.sh
-bash: line 1: some_expensive_operations: command not found
-bash: line 1: some_expensive_operations: command not found
-bash: line 1: some_expensive_operations: command not found
-bash: line 1: some_expensive_operations: command not found
-bash: line 1: some_expensive_operations: command not found
-bash: line 1: some_expensive_operations: command not found
-bash: line 1: some_expensive_operations: command not found
-bash: line 1: some_expensive_operations: command not found
-bash: line 1: some_expensive_operations: command not found
-bash: line 1: some_expensive_operations: command not found
-
-
-There's an easy solution for this. Just export the function! It will then be magically available in any sub-shell!
-
- -
#!/usr/bin/env bash
-
-some_expensive_operations() {
-  echo "Doing expensive operations with '$1' from pid $$"
-}
-export -f some_expensive_operations
-
-for i in {0..9}; do echo $i; done \
-  | xargs -P10 -I{} bash -c 'some_expensive_operations "{}"'
-
-
-When we run this now, we get:
-
-
-❯ ./xargs.sh
-Doing expensive operations with '0' from pid 132831
-Doing expensive operations with '1' from pid 132832
-Doing expensive operations with '2' from pid 132833
-Doing expensive operations with '3' from pid 132834
-Doing expensive operations with '4' from pid 132835
-Doing expensive operations with '5' from pid 132836
-Doing expensive operations with '6' from pid 132837
-Doing expensive operations with '7' from pid 132838
-Doing expensive operations with '8' from pid 132839
-Doing expensive operations with '9' from pid 132840
-
-
-If some_expensive_function would call another function, the other function must also be exported. Otherwise, there will be a runtime error again. E.g., this won't work:
-
- -
#!/usr/bin/env bash
-
-some_other_function() {
-  echo "$1"
-}
-
-some_expensive_operations() {
-  some_other_function "Doing expensive operations with '$1' from pid $$"
-}
-export -f some_expensive_operations
-
-for i in {0..9}; do echo $i; done \
-  | xargs -P10 -I{} bash -c 'some_expensive_operations "{}"'
-
-
-... because some_other_function isn't exported! You will also need to add an export -f some_other_function!
-
-

Dynamic variables with local


-
-You may know that local is how to declare local variables in a function. Most don't know that those variables actually have dynamic scope. Let's consider the following example:
-
- -
#!/usr/bin/env bash
-
-foo() {
-  local foo=bar # Declare local/dynamic variable
-  bar
-  echo "$foo"
-}
-
-bar() {
-  echo "$foo"
-  foo=baz
-}
-
-foo=foo # Declare global variable
-foo # Call function foo
-echo "$foo"
-
-
-Let's pause a minute. What do you think the output would be?
-
-Let's run it:
-
-
-❯ ./dynamic.sh
-bar
-baz
-foo
-
-
-What happened? The variable foo (declared with local) is available in the function it was declared in and in all other functions down the call stack! We can even modify the value of foo, and the change will be visible up the call stack. It's not a global variable; on the last line, echo "$foo" echoes the global variable content.
-
-
-

if conditionals


-
-Consider all variants here more or less equivalent:
-
- -
#!/usr/bin/env bash
-
-declare -r foo=foo
-declare -r bar=bar
-
-if [ "$foo" = foo ]; then
-  if [ "$bar" = bar ]; then
-    echo ok1
-  fi
-fi
-
-if [ "$foo" = foo ] && [ "$bar" == bar ]; then
-  echo ok2a
-fi
-
-[ "$foo" = foo ] && [ "$bar" == bar ] && echo ok2b
-
-if [[ "$foo" = foo && "$bar" == bar ]]; then
-  echo ok3a
-fi
-
- [[ "$foo" = foo && "$bar" == bar ]] && echo ok3b
-
-if test "$foo" = foo && test "$bar" = bar; then
-  echo ok4a
-fi
-
-test "$foo" = foo && test "$bar" = bar && echo ok4b
-
-
-The output we get is:
-
-
-❯ ./if.sh
-ok1
-ok2a
-ok2b
-ok3a
-ok3b
-ok4a
-ok4b
-
-
-

Multi-line comments


-
-You all know how to comment. Put a # in front of it. You could use multiple single-line comments or abuse heredocs and redirect it to the : no-op command to emulate multi-line comments.
-
- -
#!/usr/bin/env bash
-
-# Single line comment
-
-# These are two single line
-# comments one after another
-
-: <<COMMENT
-This is another way a
-multi line comment
-could be written!
-COMMENT
-
-
-I will not demonstrate the execution of this script, as it won't print anything! It's obviously not the most pretty way of commenting on your code, but it could sometimes be handy!
-
-

Don't change it while it's executed


-
-Consider this script:
-
- -
#!/usr/bin/env bash
-
-echo foo
-echo echo baz >> $0
-echo bar
-
-
-When it is run, it will do:
-
-
-❯ ./if.sh
-foo
-bar
-baz
-❯ cat if.sh
-#!/usr/bin/env bash
-
-echo foo
-echo echo baz >> $0
-echo bar
-echo baz
-
-
-So what happened? The echo baz line was appended to the script while it was still executed! And the interpreter also picked it up! It tells us that Bash evaluates each line as it encounters it. This can lead to nasty side effects when editing the script while it is still being executed! You should always keep this in mind!
-
-
-Other related posts are:
-
-2021-05-16 Personal Bash coding style guide
-2021-06-05 Gemtexter - One Bash script to rule it all
-2021-11-29 Bash Golf Part 1
-2022-01-01 Bash Golf Part 2
-2023-12-10 Bash Golf Part 3 (You are currently reading this)
-
-E-Mail your comments to paul@nospam.buetow.org :-)
-
-Back to the main site
-
-
-
- - Site Reliability Engineering - Part 2: Operational Balance in SRE - - gemini://foo.zone/gemfeed/2023-11-19-site-reliability-engineering-part-2.gmi - 2023-11-19T00:18:18+03:00 - - Paul Buetow aka snonux - paul@dev.buetow.org - - This is the second part of my Site Reliability Engineering (SRE) series. I am currently employed as a Site Reliability Engineer and will try to share what SRE is about in this blog series. - -
-

Site Reliability Engineering - Part 2: Operational Balance in SRE


-
-Published at 2023-11-19T00:18:18+03:00
-
-This is the second part of my Site Reliability Engineering (SRE) series. I am currently employed as a Site Reliability Engineer and will try to share what SRE is about in this blog series.
-
-2023-08-18 Site Reliability Engineering - Part 1: SRE and Organizational Culture
-2023-11-19 Site Reliability Engineering - Part 2: Operational Balance in SRE (You are currently reading this)
-2024-01-09 Site Reliability Engineering - Part 3: On-Call Culture and the Human Aspect
-
-
-⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⣷⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
-⠀⠀⠀⠀⣾⠿⠿⠿⠶⠾⠿⠿⣿⣿⣿⣿⣿⣿⠿⠿⠶⠶⠿⠿⠿⣷⠀⠀⠀⠀
-⠀⠀⠀⣸⢿⣆⠀⠀⠀⠀⠀⠀⠀⠙⢿⡿⠉⠀⠀⠀⠀⠀⠀⠀⣸⣿⡆⠀⠀⠀
-⠀⠀⢠⡟⠀⢻⣆⠀⠀⠀⠀⠀⠀⠀⣾⣧⠀⠀⠀⠀⠀⠀⠀⣰⡟⠀⢻⡄⠀⠀
-⠀⢀⣾⠃⠀⠀⢿⡄⠀⠀⠀⠀⠀⢠⣿⣿⡀⠀⠀⠀⠀⠀⢠⡿⠀⠀⠘⣷⡀⠀
-⠀⣼⣏⣀⣀⣀⣈⣿⡀⠀⠀⠀⠀⣸⣿⣿⡇⠀⠀⠀⠀⢀⣿⣃⣀⣀⣀⣸⣧⠀
-⠀⢻⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⣿⣿⣿⣿⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⡿⠀
-⠀⠀⠉⠛⠛⠛⠋⠁⠀⠀⠀⠀⢸⣿⣿⣿⣿⡆⠀⠀⠀⠀⠈⠙⠛⠛⠛⠉⠀⠀
-⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
-⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
-⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
-⠀⠀⠀⠀⠀⠀⠴⠶⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠿⠶⠦⠀⠀
-
-
-

Operational Balance in SRE: Finding the Equilibrium in Reliability and Velocity


-
-Site Reliability Engineering has established itself as more than just a set of best practices or methodologies. Instead, it stands as a beacon of operational excellence, which guides engineering teams through the turbulent waters of modern software development and system management.
-
-In the universe of software production, two fundamental forces are often at odds: The drive for rapid feature release (velocity) and the need for system reliability. Traditionally, the faster teams moved, the more risk was introduced into systems. SRE offers a approach to mitigate these conflicting drives through concepts like error budgets and SLIs/SLOs. These mechanisms offer a tangible metric, allowing teams to quantify how much they can push changes while ensuring they don't compromise system health. Thus, the error budget becomes a balancing act, where teams weigh the trade-offs between innovation and reliability.
-
-An important part of this balance is the dichotomy between operations and coding. According to SRE principles, an engineer should ideally spend an equal amount of time on operations work and coding - 50% on each. This isn't just a random metric; it's a reflection of the value SRE places on both maintaining operational excellence and progressing forward with innovations. This balance ensures that while SREs are solving today's problems, they are also preparing for tomorrow's challenges.
-
-However, not all operational tasks are equal. SRE differentiates between "ops work" and "toil". While ops work is integral to system maintenance and can provide value, toil represents repetitive, mundane tasks which offer little value in the long run. Recognising and minimising toil is crucial. A culture that allows engineers to drown in toil stifles innovation and growth. Hence, an organisation's approach to toil indicates its operational health and commitment to balance.
-
-A cornerstone of achieving operational balance lies in the tools and processes SREs use. Effective monitoring, observability tools, and ensuring that tools can handle high cardinality data are foundational. These aren't just technical requisites but reflective of an organisational culture prioritising proactive problem-solving. By having systems that effectively flag potential issues before they escalate, SREs can maintain the balance between system stability and forward momentum.
-
-Moreover, operational balance isn't just a technological or process challenge; it's a human one. The health of on-call engineers is as crucial as the health of the services they manage. On-call postmortems, continuous feedback loops, and recognising gaps (be it tooling, operational expertise, or resources) ensure that the human elements of operations are noticed.
-
-In conclusion, operational balance in SRE isn't static thing but an ongoing journey. It requires organisations to constantly evaluate their practices, tools, and, most importantly, their culture. By achieving this balance, organisations can ensure that they have time for innovation while maintaining the robustness and reliability of their systems, resulting in sustainable long-term success.
-
-That all sounds very romantic. The truth is, it's brutal to archive the perfect balance. No system will ever be perfect. But at least we should aim for it!
-
-Continue with the third part of this series:
-
-2024-01-09 Site Reliability Engineering - Part 3: On-Call Culture and the Human Aspect
-
-E-Mail your comments to paul@nospam.buetow.org :-)
-
-Back to the main site
-
-
-
diff --git a/index.gmi b/index.gmi index cde1bdbc..f5d2d0ca 100644 --- a/index.gmi +++ b/index.gmi @@ -1,6 +1,6 @@ # foo.zone -> This site was generated at 2024-01-13T23:08:07+02:00 by `Gemtexter` +> This site was generated at 2024-01-13T23:11:04+02:00 by `Gemtexter` ``` |\---/| diff --git a/uptime-stats.gmi b/uptime-stats.gmi index bf827aaa..0d167736 100644 --- a/uptime-stats.gmi +++ b/uptime-stats.gmi @@ -1,6 +1,6 @@ # My machine uptime stats -> This site was last updated at 2024-01-13T23:08:07+02:00 +> This site was last updated at 2024-01-13T23:11:04+02:00 The following stats were collected via `uptimed` on all of my personal computers over many years and the output was generated by `guprecords`, the global uptime records stats analyser of mine. -- cgit v1.2.3