From 246d0f921bbc3e87103f59fc8b7f8d2cb2bc9f76 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Wed, 15 Mar 2023 00:59:30 +0200 Subject: Update content for html --- gemfeed/2008-06-26-perl-poetry.html | 2 +- ...12-29-using-my-nokia-n95-for-fixing-my-mta.html | 2 +- gemfeed/2010-04-09-standard-ml-and-haskell.html | 2 +- ...010-05-07-lazy-evaluation-with-standarn-ml.html | 2 +- .../2010-05-09-the-fype-programming-language.html | 2 +- .../2011-05-07-perl-daemon-service-framework.html | 2 +- .../2014-03-24-the-fibonacci.pl.c-polyglot.html | 2 +- ...2-05-run-debian-on-your-phone-with-debroid.html | 2 +- gemfeed/2016-04-03-offsite-backup-with-zfs.html | 2 +- ...04-09-jails-and-zfs-on-freebsd-with-puppet.html | 2 +- .../2016-04-16-offsite-backup-with-zfs-part2.html | 2 +- ...inning-up-my-own-authoritative-dns-servers.html | 2 +- ...20-object-oriented-programming-with-ansi-c.html | 2 +- ...alistic-load-testing-with-ioriot-for-linux.html | 2 +- ...-22-dtail-the-distributed-log-tail-program.html | 2 +- gemfeed/2021-04-24-welcome-to-the-geminispace.html | 3 +- ...021-05-16-personal-bash-coding-style-guide.html | 2 +- ...5-gemtexter-one-bash-script-to-rule-it-all.html | 2 +- gemfeed/2021-07-04-the-well-grounded-rubyist.html | 2 +- ...-08-01-on-being-pedantic-about-open-source.html | 2 +- gemfeed/2021-09-12-keep-it-simple-and-stupid.html | 2 +- gemfeed/2021-10-22-defensive-devops.html | 2 +- gemfeed/2021-11-29-bash-golf-part-1.html | 2 +- ...-12-26-how-to-stay-sane-as-a-devops-person.html | 2 +- gemfeed/2022-01-01-bash-golf-part-2.html | 2 +- gemfeed/2022-01-23-welcome-to-the-foo.zone.html | 2 +- ...022-02-04-computer-operating-systems-i-use.html | 2 +- gemfeed/2022-03-06-the-release-of-dtail-4.0.0.html | 2 +- gemfeed/2022-04-10-creative-universe.html | 2 +- .../2022-05-27-perl-is-still-a-great-choice.html | 4 +- gemfeed/2022-06-15-sweating-the-small-stuff.html | 2 +- ...22-07-30-lets-encrypt-with-openbsd-and-rex.html | 2 +- ...2-08-27-gemtexter-1.1.0-lets-gemtext-again.html | 2 +- gemfeed/2022-09-30-after-a-bad-nights-sleep.html | 2 +- .../2022-10-30-installing-dtail-on-openbsd.html | 2 +- ...-tried-emacs-but-i-switched-back-to-neovim.html | 2 +- ...22-12-24-ultrarelearning-java-my-takeaways.html | 2 +- gemfeed/2023-01-23-why-grapheneos-rox.html | 2 +- .../2023-02-26-how-to-shut-down-after-work.html | 2 +- ...-03-16-the-pragmatic-programmer-book-notes.html | 79 +++++ gemfeed/atom.xml | 357 +++++++++++++-------- gemfeed/index.html | 1 + index.gmi.tpl | 35 ++ index.html | 2 + notes/the-pragmatic-programmer.gmi.tpl | 1 + notes/the-pragmatic-programmer.html | 46 ++- stats/style-override.css | 0 template.gmi.tpl.sh | 17 + template.html | 75 +++++ 49 files changed, 508 insertions(+), 186 deletions(-) create mode 100644 gemfeed/2023-03-16-the-pragmatic-programmer-book-notes.html create mode 100644 index.gmi.tpl create mode 100644 notes/the-pragmatic-programmer.gmi.tpl create mode 100644 stats/style-override.css create mode 100644 template.gmi.tpl.sh create mode 100644 template.html diff --git a/gemfeed/2008-06-26-perl-poetry.html b/gemfeed/2008-06-26-perl-poetry.html index c46d5b18..37ec2b54 100644 --- a/gemfeed/2008-06-26-perl-poetry.html +++ b/gemfeed/2008-06-26-perl-poetry.html @@ -9,7 +9,7 @@

Perl Poetry

-

Published by Paul at 2008-06-26 23:43:51 CEST, last updated at 2021-05-04

+

Published at 2008-06-26T21:43:51+01:00; Updated at 2021-05-04

  '\|/'                                  *
 -- * -----
diff --git a/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html b/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html
index a706b1a8..6461c32f 100644
--- a/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html
+++ b/gemfeed/2008-12-29-using-my-nokia-n95-for-fixing-my-mta.html
@@ -9,7 +9,7 @@
 
 
 

Using my Nokia N95 for fixing my MTA

-

Published by Paul at 2008-12-29 11:10:41 CEST, last updated at 2021-12-01

+

Published at 2008-12-29T09:10:41+00:00; Updated at 2021-12-01

 
            _
diff --git a/gemfeed/2010-04-09-standard-ml-and-haskell.html b/gemfeed/2010-04-09-standard-ml-and-haskell.html
index 0da275c4..a2a82525 100644
--- a/gemfeed/2010-04-09-standard-ml-and-haskell.html
+++ b/gemfeed/2010-04-09-standard-ml-and-haskell.html
@@ -9,7 +9,7 @@
 
 
 

Standard ML and Haskell

-

Published by Paul at 2010-04-10 00:57:36 CEST

+

Published at 2010-04-09T22:57:36+01:00

I am currently looking into the functional programming language Standard ML (aka SML). The purpose is to refresh my functional programming skills and to learn something new too. Since I already knew a little Haskell, I could not help myself, and I also implemented the same exercises in Haskell.

As you will see, SML and Haskell are very similar (at least when it comes to the basics). However, the syntax of Haskell is a bit more "advanced". Haskell utilizes fewer keywords (e.g. no val, end, fun, fn ...). Haskell also allows to write down the function types explicitly. What I have been missing in SML so far is the so-called pattern guards. Although this is a very superficial comparison for now, so far, I like Haskell more than SML. Nevertheless, I thought it would be fun to demonstrate a few simple functions of both languages to show off the similarities.

Haskell is also a "pure functional" programming language, whereas SML also makes explicit use of imperative concepts. I am by far not a specialist in either of these languages, but here are a few functions implemented in both SML and Haskell:

diff --git a/gemfeed/2010-05-07-lazy-evaluation-with-standarn-ml.html b/gemfeed/2010-05-07-lazy-evaluation-with-standarn-ml.html index 9b78c549..0f42715a 100644 --- a/gemfeed/2010-05-07-lazy-evaluation-with-standarn-ml.html +++ b/gemfeed/2010-05-07-lazy-evaluation-with-standarn-ml.html @@ -9,7 +9,7 @@

Lazy Evaluation with Standard ML

-

Published by Paul at 2010-05-07 10:17:59 CEST

+

Published at 2010-05-07T08:17:59+01:00

 
       _____|~~\_____      _____________
diff --git a/gemfeed/2010-05-09-the-fype-programming-language.html b/gemfeed/2010-05-09-the-fype-programming-language.html
index be812c69..41206f9b 100644
--- a/gemfeed/2010-05-09-the-fype-programming-language.html
+++ b/gemfeed/2010-05-09-the-fype-programming-language.html
@@ -9,7 +9,7 @@
 
 
 

The Fype Programming Language

-

Published by Paul at 2010-05-09 14:48:29 CEST, last updated at 2021-05-05

+

Published at 2010-05-09T12:48:29+01:00; Updated at 2021-05-05

       ____                                      _        __       
      / / _|_   _ _ __   ___    _   _  ___  __ _| |__    / _|_   _ 
diff --git a/gemfeed/2011-05-07-perl-daemon-service-framework.html b/gemfeed/2011-05-07-perl-daemon-service-framework.html
index 26c8d96e..c275ca58 100644
--- a/gemfeed/2011-05-07-perl-daemon-service-framework.html
+++ b/gemfeed/2011-05-07-perl-daemon-service-framework.html
@@ -9,7 +9,7 @@
 
 
 

Perl Daemon (Service Framework)

-

Published by Paul at 2011-05-08 00:26:02 CEST, last updated at 2021-05-07

+

Published at 2011-05-07T22:26:02+01:00; Updated at 2021-05-07

    a'!   _,,_ a'!   _,,_     a'!   _,,_
      \\_/    \  \\_/    \      \\_/    \.-,
diff --git a/gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.html b/gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.html
index ce418f75..33809e5b 100644
--- a/gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.html
+++ b/gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.html
@@ -9,7 +9,7 @@
 
 
 

The fibonacci.pl.raku.c Polyglot

-

Published by Paul at 2014-03-24 23:32:53 CEST, last updated at 2022-04-23

+

Published at 2014-03-24T21:32:53+00:00; Updated at 2022-04-23

In computing, a polyglot is a computer program or script written in a valid form of multiple programming languages, which performs the same operations or output independent of the programming language used to compile or interpret it.

https://en.wikipedia.org/wiki/Polyglot_(computing)

The Fibonacci numbers

diff --git a/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.html b/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.html index 6f8d3ee2..ca66874b 100644 --- a/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.html +++ b/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.html @@ -9,7 +9,7 @@

Run Debian on your phone with Debroid

-

Published by Paul at 2015-12-05 18:12:57 CEST, last updated at 2021-05-16

+

Published at 2015-12-05T16:12:57+00:00; Updated at 2021-05-16

  ____       _               _     _ 
 |  _ \  ___| |__  _ __ ___ (_) __| |
diff --git a/gemfeed/2016-04-03-offsite-backup-with-zfs.html b/gemfeed/2016-04-03-offsite-backup-with-zfs.html
index 98abe02a..087aaeb2 100644
--- a/gemfeed/2016-04-03-offsite-backup-with-zfs.html
+++ b/gemfeed/2016-04-03-offsite-backup-with-zfs.html
@@ -9,7 +9,7 @@
 
 
 

Offsite backup with ZFS

-

Published by Paul at 2016-04-04 00:43:42 GMT

+

Published at 2016-04-03T22:43:42+01:00

  ________________
 |# :           : #|
diff --git a/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html b/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html
index 4d17deed..619de81b 100644
--- a/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html
+++ b/gemfeed/2016-04-09-jails-and-zfs-on-freebsd-with-puppet.html
@@ -9,7 +9,7 @@
 
 
 

Jails and ZFS with Puppet on FreeBSD

-

Published by Paul at 2016-04-09 20:29:47 GMT

+

Published at 2016-04-09T18:29:47+01:00

             __     __
            (( \---/ ))
diff --git a/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.html b/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.html
index 4f1cf771..34c71990 100644
--- a/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.html
+++ b/gemfeed/2016-04-16-offsite-backup-with-zfs-part2.html
@@ -9,7 +9,7 @@
 
 
 

Offsite backup with ZFS (Part 2)

-

Published by Paul at 2016-04-17 00:43:42 GMT

+

Published at 2016-04-16T22:43:42+01:00

  ________________
 |# :           : #|
diff --git a/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.html b/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.html
index 1a35e8fb..67fc095b 100644
--- a/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.html
+++ b/gemfeed/2016-05-22-spinning-up-my-own-authoritative-dns-servers.html
@@ -9,7 +9,7 @@
 
 
 

Spinning up my own authoritative DNS servers

-

Published by Paul at 2016-05-22 20:59:01 GMT

+

Published at 2016-05-22T18:59:01+01:00

Background

Finally, I had time to deploy my authoritative DNS servers (master and slave) for my domains "buetow.org" and "buetow.zone". My domain name provider is Schlund Technologies. They allow their customers to edit the DNS records (BIND files) manually. And they also allow you to set your authoritative DNS servers for your domains. From now, I am making use of that option.

Schlund Technologies
diff --git a/gemfeed/2016-11-20-object-oriented-programming-with-ansi-c.html b/gemfeed/2016-11-20-object-oriented-programming-with-ansi-c.html index 740391d7..62cf293f 100644 --- a/gemfeed/2016-11-20-object-oriented-programming-with-ansi-c.html +++ b/gemfeed/2016-11-20-object-oriented-programming-with-ansi-c.html @@ -9,7 +9,7 @@

Object oriented programming with ANSI C

-

Published by Paul at 2016-11-21 00:10:57 GMT, updated 2022-01-29

+

Published at 2016-11-20T22:10:57+00:00; Updated at 2022-01-29

   ___   ___  ____        ____ 
  / _ \ / _ \|  _ \      / ___|
diff --git a/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.html b/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.html
index a837f6c9..148909d8 100644
--- a/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.html
+++ b/gemfeed/2018-06-01-realistic-load-testing-with-ioriot-for-linux.html
@@ -9,7 +9,7 @@
 
 
 

Realistic load testing with I/O Riot for Linux

-

Published by Paul at 2018-06-01 16:50:29 GMT, last updated at 2021-05-08

+

Published at 2018-06-01T14:50:29+01:00; Updated at 2021-05-08

        .---.
       /     \
diff --git a/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html b/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html
index f837ced7..3de2f8df 100644
--- a/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html
+++ b/gemfeed/2021-04-22-dtail-the-distributed-log-tail-program.html
@@ -9,7 +9,7 @@
 
 
 

DTail - The distributed log tail program

-

Published by Paul at 2021-04-22 21:28:41 GMT, last updated at 2021-04-26

+

Published at 2021-04-22T19:28:41+01:00; Updated at 2021-04-26

DTail logo image

This article first appeared at the Mimecast Engineering Blog but I made it available here in my personal internet site too.

Original Mimecast Engineering Blog post at Medium
diff --git a/gemfeed/2021-04-24-welcome-to-the-geminispace.html b/gemfeed/2021-04-24-welcome-to-the-geminispace.html index 9602d246..e6cd7a67 100644 --- a/gemfeed/2021-04-24-welcome-to-the-geminispace.html +++ b/gemfeed/2021-04-24-welcome-to-the-geminispace.html @@ -9,7 +9,8 @@

Welcome to the Geminispace

-

Published by Paul at 2021-04-24 21:28:41 GMT, last updated at 2021-06-18, ASCII Art by Andy Hood

+

Published at 2021-04-24T19:28:41+01:00; Updated at 2021-06-18

+

ASCII Art by Andy Hood!

Have you reached this article already via Gemini? It requires a Gemini client; web browsers such as Firefox, Chrome, Safari, etc., don't support the Gemini protocol. The Gemini address of this site (or the address of this capsule as people say in Geminispace) is:

gemini://foo.zone

However, if you still use HTTP, you are just surfing the fallback HTML version of this capsule. In that case, I suggest reading on what this is all about :-).

diff --git a/gemfeed/2021-05-16-personal-bash-coding-style-guide.html b/gemfeed/2021-05-16-personal-bash-coding-style-guide.html index 5d38b0a8..9b202f8b 100644 --- a/gemfeed/2021-05-16-personal-bash-coding-style-guide.html +++ b/gemfeed/2021-05-16-personal-bash-coding-style-guide.html @@ -9,7 +9,7 @@

Personal Bash coding style guide

-

Published by Paul at 2021-05-16 16:51:57 GMT

+

Published at 2021-05-16T14:51:57+01:00

    .---------------------------.
   /,--..---..---..---..---..--. `.
diff --git a/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html b/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html
index f65e6b96..2d7c0c46 100644
--- a/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html
+++ b/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html
@@ -9,7 +9,7 @@
 
 
 

Gemtexter - One Bash script to rule it all

-

Published by Paul at 2021-06-05 21:03:32 GMT

+

Published at 2021-06-05T19:03:32+01:00

                                                                o .,<>., o
                                                                |\/\/\/\/|
diff --git a/gemfeed/2021-07-04-the-well-grounded-rubyist.html b/gemfeed/2021-07-04-the-well-grounded-rubyist.html
index d192186a..cf291736 100644
--- a/gemfeed/2021-07-04-the-well-grounded-rubyist.html
+++ b/gemfeed/2021-07-04-the-well-grounded-rubyist.html
@@ -9,7 +9,7 @@
 
 
 

The Well-Grounded Rubyist

-

Published by Paul at 2021-07-04 12:51:23 GMT

+

Published at 2021-07-04T10:51:23+01:00

When I was a Linux System Administrator, I have been programming in Perl for years. I still maintain some personal Perl programming projects (e.g. Xerl, guprecords, Loadbars). After switching jobs a couple of years ago (becoming a Site Reliability Engineer), I found Ruby (and some Python) widely used there. As I wanted to do something new, I decided to give Ruby a go.

You should learn or try out one new programming language once yearly anyway. If you end up not using the new language, that's not a problem. You will learn new techniques with each new programming language and this also helps you to improve your overall programming skills even for other languages. Also, having some background in a similar programming language makes it reasonably easy to get started. Besides that, learning a new programming language is kick-a** fun!


diff --git a/gemfeed/2021-08-01-on-being-pedantic-about-open-source.html b/gemfeed/2021-08-01-on-being-pedantic-about-open-source.html index ef898a0e..85c52008 100644 --- a/gemfeed/2021-08-01-on-being-pedantic-about-open-source.html +++ b/gemfeed/2021-08-01-on-being-pedantic-about-open-source.html @@ -9,7 +9,7 @@

On being Pedantic about Open-Source

-

Published by Paul at 2021-08-01, last updated at 2023-01-23

+

Published at 2021-08-01T10:37:58+03:00; Updated at 2023-01-23

                                            __
                                _____....--' .'
diff --git a/gemfeed/2021-09-12-keep-it-simple-and-stupid.html b/gemfeed/2021-09-12-keep-it-simple-and-stupid.html
index dcf63a91..b1c39346 100644
--- a/gemfeed/2021-09-12-keep-it-simple-and-stupid.html
+++ b/gemfeed/2021-09-12-keep-it-simple-and-stupid.html
@@ -9,7 +9,7 @@
 
 
 

Keep it simple and stupid

-

Published by Paul at 2021-09-12 09:39:20 GMT, last updated at 2022-04-21

+

Published at 2021-09-12T09:39:20+03:00; Updated at 2022-04-21

   _______________                        |*\_/*|_______
   |  ___________  |     .-.     .-.      ||_/-\_|______  |
diff --git a/gemfeed/2021-10-22-defensive-devops.html b/gemfeed/2021-10-22-defensive-devops.html
index 578b64ff..cbdf055a 100644
--- a/gemfeed/2021-10-22-defensive-devops.html
+++ b/gemfeed/2021-10-22-defensive-devops.html
@@ -9,7 +9,7 @@
 
 
 

Defensive DevOps

-

Published by Paul at 2021-10-22 10:02:46 GMT

+

Published at 2021-10-22T10:02:46+03:00

                                                             c=====e
                                                                H
diff --git a/gemfeed/2021-11-29-bash-golf-part-1.html b/gemfeed/2021-11-29-bash-golf-part-1.html
index be0675bc..e9712051 100644
--- a/gemfeed/2021-11-29-bash-golf-part-1.html
+++ b/gemfeed/2021-11-29-bash-golf-part-1.html
@@ -9,7 +9,7 @@
 
 
 

Bash Golf Part 1

-

Published by Paul at 2021-11-29 16:06:14 GMT, last updated at 2022-01-05

+

Published at 2021-11-29T14:06:14+00:00; Updated at 2022-01-05

 
      '\                   .  .                        |>18>>
diff --git a/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.html b/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.html
index dae8ed40..d9a948f8 100644
--- a/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.html
+++ b/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.html
@@ -9,7 +9,7 @@
 
 
 

How to stay sane as a DevOps person

-

Published by Paul at 2021-12-26 14:02:02 GMT, last updated at 2022-01-12

+

Published at 2021-12-26T12:02:02+00:00; Updated at 2022-01-12

                                      )
                              )      ((     (
diff --git a/gemfeed/2022-01-01-bash-golf-part-2.html b/gemfeed/2022-01-01-bash-golf-part-2.html
index 5e854d7c..8c791571 100644
--- a/gemfeed/2022-01-01-bash-golf-part-2.html
+++ b/gemfeed/2022-01-01-bash-golf-part-2.html
@@ -9,7 +9,7 @@
 
 
 

Bash Golf Part 2

-

Published by Paul at 2022-01-02 01:36:15 GMT, last updated at 2022-01-05

+

Published at 2022-01-01T23:36:15+00:00; Updated at 2022-01-05

 
     '\       '\                   .  .                |>18>>
diff --git a/gemfeed/2022-01-23-welcome-to-the-foo.zone.html b/gemfeed/2022-01-23-welcome-to-the-foo.zone.html
index 04ce856c..da3aa921 100644
--- a/gemfeed/2022-01-23-welcome-to-the-foo.zone.html
+++ b/gemfeed/2022-01-23-welcome-to-the-foo.zone.html
@@ -9,7 +9,7 @@
 
 
 

Welcome to the foo.zone

-

Published by Paul at 2022-01-23 18:42:04 GMT

+

Published at 2022-01-23T16:42:04+00:00

   __                                  
  / _| ___   ___   _______  _ __   ___ 
diff --git a/gemfeed/2022-02-04-computer-operating-systems-i-use.html b/gemfeed/2022-02-04-computer-operating-systems-i-use.html
index b5cbabbe..b4f207b2 100644
--- a/gemfeed/2022-02-04-computer-operating-systems-i-use.html
+++ b/gemfeed/2022-02-04-computer-operating-systems-i-use.html
@@ -9,7 +9,7 @@
 
 
 

Computer operating systems I use(d)

-

Published by Paul at 2022-02-04 11:58:22 GMT, updated 2022-02-18

+

Published at 2022-02-04T09:58:22+00:00; Updated at 2022-02-18

               /(        )`
               \ \___   / |
diff --git a/gemfeed/2022-03-06-the-release-of-dtail-4.0.0.html b/gemfeed/2022-03-06-the-release-of-dtail-4.0.0.html
index c4f4fc93..14392e46 100644
--- a/gemfeed/2022-03-06-the-release-of-dtail-4.0.0.html
+++ b/gemfeed/2022-03-06-the-release-of-dtail-4.0.0.html
@@ -9,7 +9,7 @@
 
 
 

The release of DTail 4.0.0

-

Published by Paul at 2022-03-06 20:11:39 GMT

+

Published at 2022-03-06T18:11:39+00:00

                               ,_---~~~~~----._
                         _,,_,*^____      _____``*g*\"*,
diff --git a/gemfeed/2022-04-10-creative-universe.html b/gemfeed/2022-04-10-creative-universe.html
index 62a724e1..c91dc81d 100644
--- a/gemfeed/2022-04-10-creative-universe.html
+++ b/gemfeed/2022-04-10-creative-universe.html
@@ -9,7 +9,7 @@
 
 
 

Creative universe

-

Published by Paul at 2022-04-10 12:09:11 GMT, last updated at 2022-04-18

+

Published at 2022-04-10T10:09:11+01:00; Updated at 2022-04-18

  .              +   .                .   . .     .  .
                    .                    .       .     *
diff --git a/gemfeed/2022-05-27-perl-is-still-a-great-choice.html b/gemfeed/2022-05-27-perl-is-still-a-great-choice.html
index dc943f48..1b4aad2c 100644
--- a/gemfeed/2022-05-27-perl-is-still-a-great-choice.html
+++ b/gemfeed/2022-05-27-perl-is-still-a-great-choice.html
@@ -9,8 +9,8 @@
 
 
 

Perl is still a great choice

-

Published by Paul at 2022-05-27, last updated at 2023-01-28, Comic source: XKCD

-
+

Published at 2022-05-27T07:50:12+01:00; Updated at 2023-01-28

+Comic source: XKCD

Perl (the Practical Extraction and Report Language) is a battle-tested, mature, multi-paradigm dynamic programming language. Note that it's not called PERL, neither P.E.R.L. nor Pearl. "Perl" is the name of the language and perl the name of the interpreter or the interpreter command.

Unfortunately (it makes me sad), Perl's popularity has been declining over the last years as Google trends shows:


diff --git a/gemfeed/2022-06-15-sweating-the-small-stuff.html b/gemfeed/2022-06-15-sweating-the-small-stuff.html index 2e8ced05..81bce19d 100644 --- a/gemfeed/2022-06-15-sweating-the-small-stuff.html +++ b/gemfeed/2022-06-15-sweating-the-small-stuff.html @@ -9,7 +9,7 @@

Sweating the small stuff - Tiny projects of mine

-

Published by Paul at 2022-06-15 10:47:44 GMT, last updated at 2022-06-18

+

Published at 2022-06-15T08:47:44+01:00; Updated at 2022-06-18

          _
         /_/_      .'''.
diff --git a/gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.html b/gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.html
index 81237711..6173ffc1 100644
--- a/gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.html
+++ b/gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.html
@@ -9,7 +9,7 @@
 
 
 

Let's Encrypt with OpenBSD and Rex

-

Published by Paul at 2022-07-30 14:14:31 EEST

+

Published at 2022-07-30T12:14:31+01:00

                                                /    _    \
   The Hebern Machine                            \ ." ". /
diff --git a/gemfeed/2022-08-27-gemtexter-1.1.0-lets-gemtext-again.html b/gemfeed/2022-08-27-gemtexter-1.1.0-lets-gemtext-again.html
index d64a8973..aa28c8b7 100644
--- a/gemfeed/2022-08-27-gemtexter-1.1.0-lets-gemtext-again.html
+++ b/gemfeed/2022-08-27-gemtexter-1.1.0-lets-gemtext-again.html
@@ -9,7 +9,7 @@
 
 
 

Gemtexter 1.1.0 - Let's Gemtext again

-

Published by Paul at 2022-08-27 20:25:57 EEST

+

Published at 2022-08-27T18:25:57+01:00

 -=[ typewriter ]=-  1/98
 
diff --git a/gemfeed/2022-09-30-after-a-bad-nights-sleep.html b/gemfeed/2022-09-30-after-a-bad-nights-sleep.html
index dcc0b956..7b8d812e 100644
--- a/gemfeed/2022-09-30-after-a-bad-nights-sleep.html
+++ b/gemfeed/2022-09-30-after-a-bad-nights-sleep.html
@@ -9,7 +9,7 @@
 
 
 

After a bad night's sleep

-

Published by Paul at 2022-09-30 09:53:23 EEST, last updated at 2022-10-12

+

Published at 2022-09-30T09:53:23+03:00; Updated at 2022-10-12

                z
                 z
diff --git a/gemfeed/2022-10-30-installing-dtail-on-openbsd.html b/gemfeed/2022-10-30-installing-dtail-on-openbsd.html
index 916dc43e..4ee00b29 100644
--- a/gemfeed/2022-10-30-installing-dtail-on-openbsd.html
+++ b/gemfeed/2022-10-30-installing-dtail-on-openbsd.html
@@ -9,7 +9,7 @@
 
 
 

Installing DTail on OpenBSD

-

Published by Paul at 2022-10-30 11:03:19 EET

+

Published at 2022-10-30T11:03:19+02:00

        ,_---~~~~~----._
  _,,_,*^____      _____``*g*\"*,
diff --git a/gemfeed/2022-11-24-i-tried-emacs-but-i-switched-back-to-neovim.html b/gemfeed/2022-11-24-i-tried-emacs-but-i-switched-back-to-neovim.html
index d65ccf1b..a4b6b798 100644
--- a/gemfeed/2022-11-24-i-tried-emacs-but-i-switched-back-to-neovim.html
+++ b/gemfeed/2022-11-24-i-tried-emacs-but-i-switched-back-to-neovim.html
@@ -9,7 +9,7 @@
 
 
 

I tried (Doom) Emacs, but I switched back to (Neo)Vim

-

Published by Paul at 2022-11-24 11:17:15 EET, last updated at 2022-11-26

+

Published at 2022-11-24T11:17:15+02:00; Updated at 2022-11-26

              _/  \    _(\(o
              /     \  /  _  ^^^o
diff --git a/gemfeed/2022-12-24-ultrarelearning-java-my-takeaways.html b/gemfeed/2022-12-24-ultrarelearning-java-my-takeaways.html
index 519722c0..b597b447 100644
--- a/gemfeed/2022-12-24-ultrarelearning-java-my-takeaways.html
+++ b/gemfeed/2022-12-24-ultrarelearning-java-my-takeaways.html
@@ -9,7 +9,7 @@
 
 
 

Ultra(re)learning Java - My takeaways

-

Published by Paul at 2022-12-24

+

Published at 2022-12-24T23:18:40+02:00


As a regular participant in the annual Pet Project competition at work, I always try to find a project where I can learn something new. In this post, I would like to share my takeaways after revisiting Java. You can read about my motivations in my "Creative universe" post:

Creative universe
diff --git a/gemfeed/2023-01-23-why-grapheneos-rox.html b/gemfeed/2023-01-23-why-grapheneos-rox.html index 9f1edf3e..ba072e1b 100644 --- a/gemfeed/2023-01-23-why-grapheneos-rox.html +++ b/gemfeed/2023-01-23-why-grapheneos-rox.html @@ -9,7 +9,7 @@

Why GrapheneOS rox

-

Published by Paul at 2023-01-21

+

Published at 2023-01-23T15:31:52+02:00

 Art by Joan Stark
                _.===========================._
diff --git a/gemfeed/2023-02-26-how-to-shut-down-after-work.html b/gemfeed/2023-02-26-how-to-shut-down-after-work.html
index 8dc4459f..9b8c19a1 100644
--- a/gemfeed/2023-02-26-how-to-shut-down-after-work.html
+++ b/gemfeed/2023-02-26-how-to-shut-down-after-work.html
@@ -9,7 +9,7 @@
 
 
 

How to shut down after work

-

Published by Paul at 2023-02-26

+

Published at 2023-02-26T23:48:01+02:00

     |\   "Music should be heard not only with the ears, but also the soul."
 |---|--\-----------------------|-----------------------------------------|  
diff --git a/gemfeed/2023-03-16-the-pragmatic-programmer-book-notes.html b/gemfeed/2023-03-16-the-pragmatic-programmer-book-notes.html
new file mode 100644
index 00000000..5e0ee580
--- /dev/null
+++ b/gemfeed/2023-03-16-the-pragmatic-programmer-book-notes.html
@@ -0,0 +1,79 @@
+
+
+
+
+'The pragmatic programmer' book notes
+
+
+
+
+
+

"The pragmatic programmer" book notes

+

Published at 2023-03-15T00:55:20+02:00

+

These are my personal takeaways after reading "The Pragmatic Programmer" by David Thomas and Andrew Hunt. Note that the book contains much more knowledge and pearls of wisdom and that the following notes only contain points I personally found worth writing down. This is mainly for my use, but you might find it helpful too.

+
+         ,..........   ..........,
+     ,..,'          '.'          ',..,
+    ,' ,'            :            ', ',
+   ,' ,'             :             ', ',
+  ,' ,'              :              ', ',
+ ,' ,'............., : ,.............', ',
+,'  '............   '.'   ............'  ',
+ '''''''''''''''''';''';''''''''''''''''''
+                    '''
+

+

Think about your work while doing it - every day on every project. Have a feeling of continuous improvement.

+
    +
  • Be a realist.
  • +
  • Smell challenges.
  • +
  • Care about your craft.
  • +
  • Code can always be flawed, but it can meet the requirements.
  • +
  • You should be proud of your code, though.
  • +
+

No one writes perfect code, including you. However:

+
    +
  • Paranoia is good thinking.
  • +
  • Practice defensive programming and crash early.
  • +
  • Crashing is often the best thing you can do.
  • +
  • Changes should be reversible.
  • +
+

Erlang: Defensive programming is a waste of time. Let it crash. "This can never happen" - don't practise that kind of self-deception when programming.

+

Leave assertions in the code, even in production. Only leave out the assertions causing the performance issues.

+

Take small steps, always. Get feedback, too, for each of the steps the code does. Avoid fortune telling. If you have to involve in it, then the step is too large.

+

Decouple the code (e.g. OOP or functional programming). Prefer interfaces for types and mixins for a class extension over class inheritance.

+
    +
  • Refactor now and not later.
  • +
  • Later, it will be even more painful.
  • +
+

Don't think outside the box. Find the box. The box is more extensive than you think. Think about the hard problem at hand. Do you have to do it a certain way, or do you have to do it at all?

+

Do what works and not what's fashionable. E.g. does SCRUM make sense? The goal is to deliver deliverables and not to "become" agile.

+

Continuous learning

+

Add new tools to your repertoire every day and keep the momentum up. Learning new things is your most crucial aspect. Invest regularly in your knowledge portfolio. The learning process extends your thinking. It does not matter if you will never use it.

+
    +
  • Learn a new programming language every year.
  • +
  • Read a technical book every month.
  • +
  • Take courses.
  • +
+

Think critically about everything you learn. Use paper for your notes. There is something special about it.

+

Stay connected

+

It's your life, and you own it. Bruce Lee once said:

+

"I am not on the world to life after your expectations, neither are you to life after mine."

+
    +
  • Go to meet-ups and actively engage.
  • +
  • Stay current.
  • +
  • Dealing with computers is hard. Dealing with people is harder.
  • +
+

It's your life. Share it, celebrate it, be proud and have fun.

+

The story of stone soup

+

How to motivate others to contribute something (e.g. ideas to a startup):

+

A kindly, old stranger was walking through the land when he came upon a village. As he entered, the villagers moved towards their homes, locking doors and windows. The stranger smiled and asked, why are you all so frightened. I am a simple traveler, looking for a soft place to stay for the night and a warm place for a meal. "There's not a bite to eat in the whole province," he was told. "We are weak and our children are starving. Better keep moving on." "Oh, I have everything I need," he said. "In fact, I was thinking of making some stone soup to share with all of you." He pulled an iron cauldron from his cloak, filled it with water, and began to build a fire under it. Then, with great ceremony, he drew an ordinary-looking stone from a silken bag and dropped it into the water. By now, hearing the rumor of food, most of the villagers had come out of their homes or watched from their windows. As the stranger sniffed the "broth" and licked his lips in anticipation, hunger began to overcome their fear. "Ahh," the stranger said to himself rather loudly, "I do like a tasty stone soup. Of course, stone soup with cabbage -- that's hard to beat." Soon a villager approached hesitantly, holding a small cabbage he'd retrieved from its hiding place, and added it to the pot. "Wonderful!!" cried the stranger. "You know, I once had stone soup with cabbage and a bit of salt beef as well, and it was fit for a king." The village butcher managed to find some salt beef . . . And so it went, through potatoes, onions, carrots, mushrooms, and so on, until there was indeed a delicious meal for everyone in the village to share. The village elder offered the stranger a great deal of money for the magic stone, but he refused to sell it and traveled on the next day. As he left, the stranger came upon a group of village children standing near the road. He gave the silken bag containing the stone to the youngest child, whispering to a group, "It was not the stone, but the villagers that had performed the magic."

+

By working together, everyone contributes what they can, achieving a greater good together.

+

E-Mail your comments to hi@paul.cyou :-)

+Go back to the main site
+ + + diff --git a/gemfeed/atom.xml b/gemfeed/atom.xml index 2e2ff39c..6810b985 100644 --- a/gemfeed/atom.xml +++ b/gemfeed/atom.xml @@ -1,25 +1,121 @@ - 2023-03-03T12:25:46+02:00 + 2023-03-15T00:35:56+02:00 foo.zone feed To be in the .zone! https://foo.zone/ + + 'The pragmatic programmer' book notes + + https://foo.zone/gemfeed/2023-03-16-the-pragmatic-programmer-book-notes.html + 2023-03-16T00:35:56+02:00 + + Paul Buetow + hi@paul.cyou + + These are my personal takeaways after reading 'The Pragmatic Programmer' by David Thomas and Andrew Hunt. Note that the book contains much more knowledge and pearls of wisdom and that the following notes only contain points I personally found worth writing down. This is mainly for my use, but you might find it helpful too. + +
+

"The pragmatic programmer" book notes

+

These are my personal takeaways after reading "The Pragmatic Programmer" by David Thomas and Andrew Hunt. Note that the book contains much more knowledge and pearls of wisdom and that the following notes only contain points I personally found worth writing down. This is mainly for my use, but you might find it helpful too.

+
+  ____________________________________________________
+  |____________________________________________________|
+  | __     __   ____   ___ ||  ____    ____     _  __  |
+  ||  |__ |--|_| || |_|   |||_|**|*|__|+|+||___| ||  | |
+  ||==|^^||--| |=||=| |=*=||| |~~|~|  |=|=|| | |~||==| |
+  ||  |##||  | | || | |JRO|||-|  | |==|+|+||-|-|~||__| |
+  ||__|__||__|_|_||_|_|___|||_|__|_|__|_|_||_|_|_||__|_|
+  ||_______________________||__________________________|
+  | _____________________  ||      __   __  _  __    _ |
+  ||=|=|=|=|=|=|=|=|=|=|=| __..\/ |  |_|  ||#||==|  / /|
+  || | | | | | | | | | | |/\ \  \\|++|=|  || ||==| / / |
+  ||_|_|_|_|_|_|_|_|_|_|_/_/\_.___\__|_|__||_||__|/_/__|
+  |____________________ /\~()/()~//\ __________________|
+  | __   __    _  _     \_  (_ .  _/ _    ___     _____|
+  ||~~|_|..|__| || |_ _   \ //\\ /  |=|__|~|~|___| | | |
+  ||--|+|^^|==|1||2| | |__/\ __ /\__| |==|x|x|+|+|=|=|=|
+  ||__|_|__|__|_||_|_| /  \ \  / /  \_|__|_|_|_|_|_|_|_|
+  |_________________ _/    \/\/\/    \_ _______________|
+  | _____   _   __  |/      \../      \|  __   __   ___|
+  ||_____|_| |_|##|_||   |   \/ __|   ||_|==|_|++|_|-|||
+  ||______||=|#|--| |\   \   o    /   /| |  |~|  | | |||
+  ||______||_|_|__|_|_\   \  o   /   /_|_|__|_|__|_|_|||
+  |_________ __________\___\____/___/___________ ______|
+  |__    _  /    ________     ______           /| _ _ _|
+  |\ \  |=|/   //    /| //   /  /  / |        / ||%|%|%|
+  | \/\ |*/  .//____//.//   /__/__/ (_)      /  ||=|=|=|
+__|  \/\|/   /(____|/ //                    /  /||~|~|~|__
+  |___\_/   /________//   ________         /  / ||_|_|_|
+  |___ /   (|________/   |\_______\       /  /| |______|
+      /                  \|________)     /  / | |
+

+

Think about your work while doing it - every day on every project. Have a feeling of continuous improvement.

+
    +
  • Be a realist.
  • +
  • Smell challenges.
  • +
  • Care about your craft.
  • +
  • Code can always be flawed, but it can meet the requirements.
  • +
  • You should be proud of your code, though.
  • +
+

No one writes perfect code, including you. However:

+
    +
  • Paranoia is good thinking.
  • +
  • Practice defensive programming and crash early.
  • +
  • Crashing is often the best thing you can do.
  • +
  • Changes should be reversible.
  • +
+

Erlang: Defensive programming is a waste of time. Let it crash. "This can never happen" - don't practise that kind of self-deception when programming.

+

Leave assertions in the code, even in production. Only leave out the assertions causing the performance issues.

+

Take small steps, always. Get feedback, too, for each of the steps the code does. Avoid fortune telling. If you have to involve in it, then the step is too large.

+

Decouple the code (e.g. OOP or functional programming). Prefer interfaces for types and mixins for a class extension over class inheritance.

+
    +
  • Refactor now and not later.
  • +
  • Later, it will be even more painful.
  • +
+

Don't think outside the box. Find the box. The box is more extensive than you think. Think about the hard problem at hand. Do you have to do it a certain way, or do you have to do it at all?

+

Do what works and not what's fashionable. E.g. does SCRUM make sense? The goal is to deliver deliverables and not to "become" agile.

+

Continuous learning

+

Add new tools to your repertoire every day and keep the momentum up. Learning new things is your most crucial aspect. Invest regularly in your knowledge portfolio. The learning process extends your thinking. It does not matter if you will never use it.

+
    +
  • Learn a new programming language every year.
  • +
  • Read a technical book every month.
  • +
  • Take courses.
  • +
+

Think critically about everything you learn. Use paper for your notes. There is something special about it.

+

Stay connected

+

It's your life, and you own it. Bruce Lee once said:

+

"I am not on the world to life after your expectations, neither are you to life after mine."

+
    +
  • Go to meet-ups and actively engage.
  • +
  • Stay current.
  • +
  • Dealing with computers is hard. Dealing with people is harder.
  • +
+

It's your life. Share it, celebrate it, be proud and have fun.

+

The story of stone soup

+

How to motivate others to contribute something (e.g. ideas to a startup):

+

A kindly, old stranger was walking through the land when he came upon a village. As he entered, the villagers moved towards their homes, locking doors and windows. The stranger smiled and asked, why are you all so frightened. I am a simple traveler, looking for a soft place to stay for the night and a warm place for a meal. "There's not a bite to eat in the whole province," he was told. "We are weak and our children are starving. Better keep moving on." "Oh, I have everything I need," he said. "In fact, I was thinking of making some stone soup to share with all of you." He pulled an iron cauldron from his cloak, filled it with water, and began to build a fire under it. Then, with great ceremony, he drew an ordinary-looking stone from a silken bag and dropped it into the water. By now, hearing the rumor of food, most of the villagers had come out of their homes or watched from their windows. As the stranger sniffed the "broth" and licked his lips in anticipation, hunger began to overcome their fear. "Ahh," the stranger said to himself rather loudly, "I do like a tasty stone soup. Of course, stone soup with cabbage -- that's hard to beat." Soon a villager approached hesitantly, holding a small cabbage he'd retrieved from its hiding place, and added it to the pot. "Wonderful!!" cried the stranger. "You know, I once had stone soup with cabbage and a bit of salt beef as well, and it was fit for a king." The village butcher managed to find some salt beef . . . And so it went, through potatoes, onions, carrots, mushrooms, and so on, until there was indeed a delicious meal for everyone in the village to share. The village elder offered the stranger a great deal of money for the magic stone, but he refused to sell it and traveled on the next day. As he left, the stranger came upon a group of village children standing near the road. He gave the silken bag containing the stone to the youngest child, whispering to a group, "It was not the stone, but the villagers that had performed the magic."

+

By working together, everyone contributes what they can, achieving a greater good together.

+

E-Mail your comments to hi@paul.cyou :-)

+
+
+
How to shut down after work https://foo.zone/gemfeed/2023-02-26-how-to-shut-down-after-work.html 2023-02-26T23:48:01+02:00 - Paul C. Buetow - comments@mx.buetow.org + Paul Buetow + hi@paul.cyou - Do you need help fully discharging from work in the evenings or for the weekend? Shutting down from work won't just improve your work-life balance; it will also significantly improve the quality of your personal life and work. After a restful weekend, you will be much more energized and productive the next working day. So it should not just be in your own, but also your employers' interest that you fully relax and shut down after work. . .....to read on please visit my site. + Do you need help fully discharging from work in the evenings or for the weekend? Shutting down from work won't just improve your work-life balance; it will also significantly improve the quality of your personal life and work. After a restful weekend, you will be much more energized and productive the next working day. So it should not just be in your own, but also your employers' interest that you fully relax and shut down after work.

How to shut down after work

-

Published by Paul at 2023-02-26

+

Published at 2023-02-26T23:48:01+02:00

     |\   "Music should be heard not only with the ears, but also the soul."
 |---|--\-----------------------|-----------------------------------------|  
@@ -72,19 +168,19 @@
         
     
     
-        Why GrapheneOS Rox
+        Why GrapheneOS rox
         
         https://foo.zone/gemfeed/2023-01-23-why-grapheneos-rox.html
         2023-01-23T15:31:52+02:00
         
-            Paul C. Buetow
-            comments@mx.buetow.org
+            Paul Buetow
+            hi@paul.cyou
         
-        Art by Joan Stark. .....to read on please visit my site.
+        Art by Joan Stark
         
             

Why GrapheneOS rox

-

Published by Paul at 2023-01-21

+

Published at 2023-01-23T15:31:52+02:00

 Art by Joan Stark
                _.===========================._
@@ -176,14 +272,14 @@ Art by Joan Stark
         https://foo.zone/gemfeed/2022-12-24-ultrarelearning-java-my-takeaways.html
         2022-12-24T23:18:40+02:00
         
-            Paul C. Buetow
-            comments@mx.buetow.org
+            Paul Buetow
+            hi@paul.cyou
         
-        As a regular participant in the annual Pet Project competition at work, I always try to find a project where I can learn something new. In this post, I would like to share my takeaways after revisiting Java (Spoiler: I am still not the biggest Java fan, but Java has its uses). You can read about my motivations in my 'Creative universe' post:. .....to read on please visit my site.
+        As a regular participant in the annual Pet Project competition at work, I always try to find a project where I can learn something new. In this post, I would like to share my takeaways after revisiting Java. You can read about my motivations in my 'Creative universe' post:
         
             

Ultra(re)learning Java - My takeaways

-

Published by Paul at 2022-12-24

+

Published at 2022-12-24T23:18:40+02:00


As a regular participant in the annual Pet Project competition at work, I always try to find a project where I can learn something new. In this post, I would like to share my takeaways after revisiting Java. You can read about my motivations in my "Creative universe" post:

Creative universe
@@ -253,19 +349,19 @@ Art by Joan Stark - I tried Doom Emacs, but I switched back to (Neo)Vim + I tried (Doom) Emacs, but I switched back to (Neo)Vim https://foo.zone/gemfeed/2022-11-24-i-tried-emacs-but-i-switched-back-to-neovim.html 2022-11-24T11:17:15+02:00 - Paul C. Buetow - comments@mx.buetow.org + Paul Buetow + hi@paul.cyou - As a long-lasting user of Vim (and NeoVim), I always wondered what GNU Emacs is really about, so I decided to try it. I didn't try vanilla GNU Emacs, but Doom Emacs. I chose Doom Emacs as it is a neat distribution of Emacs with Evil mode enabled by default. Evil mode allows Vi(m) key bindings (so to speak, it's emulating Vim within Emacs), and I am pretty sure I won't be ready to give up all the muscle memory I have built over more than a decade.. .....to read on please visit my site. + Art by \ \_! / __!

I tried (Doom) Emacs, but I switched back to (Neo)Vim

-

Published by Paul at 2022-11-24 11:17:15 EET, last updated at 2022-11-26

+

Published at 2022-11-24T11:17:15+02:00; Updated at 2022-11-26

              _/  \    _(\(o
              /     \  /  _  ^^^o
@@ -402,14 +498,14 @@ nmap ,j :call OpenJournalPage()<CR>
         https://foo.zone/gemfeed/2022-10-30-installing-dtail-on-openbsd.html
         2022-10-30T11:03:19+02:00
         
-            Paul C. Buetow
-            comments@mx.buetow.org
+            Paul Buetow
+            hi@paul.cyou
         
-        This will be a quick blog post, as I am busy with my personal life now. I have relocated to a different country and am still busy arranging things. So bear with me :-). .....to read on please visit my site.
+        This will be a quick blog post, as I am busy with my personal life now. I have relocated to a different country and am still busy arranging things. So bear with me :-)
         
             

Installing DTail on OpenBSD

-

Published by Paul at 2022-10-30 11:03:19 EET

+

Published at 2022-10-30T11:03:19+02:00

        ,_---~~~~~----._
  _,,_,*^____      _____``*g*\"*,
@@ -697,14 +793,14 @@ REMOTE|fishfinger|100|7|fstab|093f510ec5c0f512.h /usr/local ffs rw,wxallowed,nod
         https://foo.zone/gemfeed/2022-09-30-after-a-bad-nights-sleep.html
         2022-09-30T09:53:23+03:00
         
-            Paul C. Buetow
-            comments@mx.buetow.org
+            Paul Buetow
+            hi@paul.cyou
         
-        Everyone has it once a while: A bad night's sleep. Here I attempt to list useful tips how to deal with it.. .....to read on please visit my site.
+        Everyone has it once in a while: A bad night's sleep. Here I attempt to list valuable tips on how to deal with it.
         
             

After a bad night's sleep

-

Published by Paul at 2022-09-30 09:53:23 EEST, last updated at 2022-10-12

+

Published at 2022-09-30T09:53:23+03:00; Updated at 2022-10-12

                z
                 z
@@ -771,14 +867,14 @@ jgs                (________\  \
         https://foo.zone/gemfeed/2022-08-27-gemtexter-1.1.0-lets-gemtext-again.html
         2022-08-27T18:25:57+01:00
         
-            Paul C. Buetow
-            comments@mx.buetow.org
+            Paul Buetow
+            hi@paul.cyou
         
-        I am proud to announce that I've released Gemtexter version `1.1.0`. What is Gemtexter? It's my static site generator written in GNU Bash:. .....to read on please visit my site.
+        I am proud to announce that I've released Gemtexter version `1.1.0`. What is Gemtexter? It's my static site generator written in GNU Bash:
         
             

Gemtexter 1.1.0 - Let's Gemtext again

-

Published by Paul at 2022-08-27 20:25:57 EEST

+

Published at 2022-08-27T18:25:57+01:00

 -=[ typewriter ]=-  1/98
 
@@ -847,14 +943,14 @@ check_dependencies () {
         https://foo.zone/gemfeed/2022-07-30-lets-encrypt-with-openbsd-and-rex.html
         2022-07-30T12:14:31+01:00
         
-            Paul C. Buetow
-            comments@mx.buetow.org
+            Paul Buetow
+            hi@paul.cyou
         
-        I was amazed how easy it is to automatically generate and update Let's Encrypt certificates with OpenBSD.. .....to read on please visit my site.
+        I was amazed at how easy it is to automatically generate and update Let's Encrypt certificates with OpenBSD.
         
             

Let's Encrypt with OpenBSD and Rex

-

Published by Paul at 2022-07-30 14:14:31 EEST

+

Published at 2022-07-30T12:14:31+01:00

                                                /    _    \
   The Hebern Machine                            \ ." ". /
@@ -1455,13 +1551,13 @@ rex commons
         2022-06-15T08:47:44+01:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        This blog post is a bit different from the others. It consists of multiple but smaller projects worth mentioning. I got inspired by Julia Evan's 'Tiny programs' blog post and the side projects of The Sephist, so I thought I would also write a blog posts listing a couple of small projects of mine:. .....to read on please visit my site.
+        This blog post is a bit different from the others. It consists of multiple but smaller projects worth mentioning. I got inspired by Julia Evan's 'Tiny programs' blog post and the side projects of The Sephist, so I thought I would also write a blog posts listing a couple of small projects of mine:
         
             

Sweating the small stuff - Tiny projects of mine

-

Published by Paul at 2022-06-15 10:47:44 GMT, last updated at 2022-06-18

+

Published at 2022-06-15T08:47:44+01:00; Updated at 2022-06-18

          _
         /_/_      .'''.
@@ -1696,14 +1792,14 @@ v = 008 [v = p*c*(s != c ? 2 : 1)] Total logical CPUs
         2022-05-27T07:50:12+01:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        Perl (the Practical Extraction and Report Language) is a battle-tested, mature, multi-paradigm dynamic programming language. Note that it's not called PERL, neither P.E.R.L. nor Pearl. 'Perl' is the name of the language and 'perl' the name of the interpreter or the interpreter command.. .....to read on please visit my site.
+        Perl (the Practical Extraction and Report Language) is a battle-tested, mature, multi-paradigm dynamic programming language. Note that it's not called PERL, neither P.E.R.L. nor Pearl. 'Perl' is the name of the language and `perl` the name of the interpreter or the interpreter command.
         
             

Perl is still a great choice

-

Published by Paul at 2022-05-27, last updated at 2023-01-28, Comic source: XKCD

-
+

Published at 2022-05-27T07:50:12+01:00; Updated at 2023-01-28

+Comic source: XKCD

Perl (the Practical Extraction and Report Language) is a battle-tested, mature, multi-paradigm dynamic programming language. Note that it's not called PERL, neither P.E.R.L. nor Pearl. "Perl" is the name of the language and perl the name of the interpreter or the interpreter command.

Unfortunately (it makes me sad), Perl's popularity has been declining over the last years as Google trends shows:


@@ -1805,13 +1901,13 @@ v = 008 [v = p*c*(s != c ? 2 : 1)] Total logical CPUs 2022-04-10T10:09:11+01:00 Paul Buetow - comments@mx.buetow.org + hi@paul.cyou - I have been participating in an annual work-internal project contest (we call it Pet Project contest) since I moved to London and switched jobs to my current employer. I am very happy to say that I won a 'silver' prize last week here 🎆. Over the last couple of years I have been a finalist in this contest six times and won some kind of prize five times. Some of my projects were also released as open source software. One had a magazine article published, and for another one I wrote an article on my employer's engineering blog. If you have followed all my posts on this blog (the one you are currently reading), then you have probably figured out what these projects were:. .....to read on please visit my site. + I have been participating in an annual work-internal project contest (we call it Pet Project contest) since I moved to London and switched jobs to my current employer. I am very happy to say that I won a 'silver' prize last week here 🎆. Over the last couple of years I have been a finalist in this contest six times and won some kind of prize five times. Some of my projects were also released as open source software. One had a magazine article published, and for another one I wrote an article on my employer's engineering blog. If you have followed all my posts on this blog (the one you are currently reading), then you have probably figured out what these projects were:

Creative universe

-

Published by Paul at 2022-04-10 12:09:11 GMT, last updated at 2022-04-18

+

Published at 2022-04-10T10:09:11+01:00; Updated at 2022-04-18

  .              +   .                .   . .     .  .
                    .                    .       .     *
@@ -1912,13 +2008,13 @@ learn () {
         2022-03-06T18:11:39+00:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        I have recently released DTail 4.0.0 and this blog post goes through all the new goodies. You can also read my previous post about DTail in case you wonder what DTail is:. .....to read on please visit my site.
+        I have recently released DTail 4.0.0 and this blog post goes through all the new goodies. You can also read my previous post about DTail in case you wonder what DTail is:
         
             

The release of DTail 4.0.0

-

Published by Paul at 2022-03-06 20:11:39 GMT

+

Published at 2022-03-06T18:11:39+00:00

                               ,_---~~~~~----._
                         _,,_,*^____      _____``*g*\"*,
@@ -2164,13 +2260,13 @@ exec /usr/local/bin/dtailhealth --server localhost:2222
         2022-02-04T09:58:22+00:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        This is a list of Operating Systems I currently use. This list is in no particular order and also will be updated over time. The very first operating system I used was MS-DOS (mainly for games) and the very first Unix like operating system I used was SuSE Linux 5.3. My first smartphone OS was Symbian on a clunky Sony Ericsson device.. .....to read on please visit my site.
+        This is a list of Operating Systems I currently use. This list is in no particular order and also will be updated over time. The very first operating system I used was MS-DOS (mainly for games) and the very first Unix like operating system I used was SuSE Linux 5.3. My first smartphone OS was Symbian on a clunky Sony Ericsson device.
         
             

Computer operating systems I use(d)

-

Published by Paul at 2022-02-04 11:58:22 GMT, updated 2022-02-18

+

Published at 2022-02-04T09:58:22+00:00; Updated at 2022-02-18

               /(        )`
               \ \___   / |
@@ -2330,13 +2426,13 @@ GNU/kFreeBSD rhea.buetow.org 8.0-RELEASE-p5 FreeBSD 8.0-RELEASE-p5 #2: Sat Nov 2
         2022-01-23T16:42:04+00:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        I don't count this as a real blog post, but more of an announcement (I aim to write one real post once monthly). From now on, 'foo.zone' is the new address of this site. All other addresses will still forward to it and eventually (based on the traffic still going through) will be deactivated.. .....to read on please visit my site.
+        I don't count this as a real blog post, but more of an announcement (I aim to write one real post once monthly). From now on, 'foo.zone' is the new address of this site. All other addresses will still forward to it and eventually (based on the traffic still going through) will be deactivated.
         
             

Welcome to the foo.zone

-

Published by Paul at 2022-01-23 18:42:04 GMT

+

Published at 2022-01-23T16:42:04+00:00

   __                                  
  / _| ___   ___   _______  _ __   ___ 
@@ -2377,13 +2473,13 @@ GNU/kFreeBSD rhea.buetow.org 8.0-RELEASE-p5 FreeBSD 8.0-RELEASE-p5 #2: Sat Nov 2
         2022-01-01T23:36:15+00:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        This is the second blog post about my Bash Golf series. This series is random Bash tips, tricks and weirdnesses I came across. It's a collection of smaller articles I wrote in an older (in German language) blog, which I translated and refreshed with some new content.. .....to read on please visit my site.
+        This is the second blog post about my Bash Golf series. This series is random Bash tips, tricks and weirdnesses I came across. It's a collection of smaller articles I wrote in an older (in German language) blog, which I translated and refreshed with some new content.
         
             

Bash Golf Part 2

-

Published by Paul at 2022-01-02 01:36:15 GMT, last updated at 2022-01-05

+

Published at 2022-01-01T23:36:15+00:00; Updated at 2022-01-05

 
     '\       '\                   .  .                |>18>>
@@ -2789,13 +2885,13 @@ PAUL:X:1000:1000:PAUL BUETOW:/HOME/PAUL:/BIN/BASH
         2021-12-26T12:02:02+00:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        Log4shell (CVE-2021-44228) made it clear, once again, that working in information technology is not an easy job (especially when you are a DevOps/SRE or a security engineer). I thought it would be interesting to summarize a few techniques to help you to relax.. .....to read on please visit my site.
+        Log4shell (CVE-2021-44228) made it clear, once again, that working in information technology is not an easy job (especially when you are a DevOps person). I thought it would be interesting to summarize a few techniques to help you to relax.
         
             

How to stay sane as a DevOps person

-

Published by Paul at 2021-12-26 14:02:02 GMT, last updated at 2022-01-12

+

Published at 2021-12-26T12:02:02+00:00; Updated at 2022-01-12

                                      )
                              )      ((     (
@@ -2881,13 +2977,13 @@ PAUL:X:1000:1000:PAUL BUETOW:/HOME/PAUL:/BIN/BASH
         2021-11-29T14:06:14+00:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        This is the first blog post about my Bash Golf series. This series is random Bash tips, tricks and weirdnesses I came across. It's a collection of smaller articles I wrote in an older (in German language) blog, which I translated and refreshed with some new content.. .....to read on please visit my site.
+        This is the first blog post about my Bash Golf series. This series is about random Bash tips, tricks and weirdnesses I came across. It's a collection of smaller articles I wrote in an older (in German language) blog, which I translated and refreshed with some new content.
         
             

Bash Golf Part 1

-

Published by Paul at 2021-11-29 16:06:14 GMT, last updated at 2022-01-05

+

Published at 2021-11-29T14:06:14+00:00; Updated at 2022-01-05

 
      '\                   .  .                        |>18>>
@@ -3265,13 +3361,13 @@ bash: line 1: 1/10.0 : syntax error: invalid arithmetic operator (error token is
         2021-10-22T10:02:46+03:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        I have seen many different setups and infrastructures during my carreer. My roles always included front-line ad-hoc fire fighting production issues. This often involves identifying and fixing these under time pressure, without the comfort of 2-week-long SCRUM sprints and without an exhaustive QA process. I also wrote a lot of code (Bash, Ruby, Perl, Go, and a little Java), and I followed the typical software development process, but that did not always apply to critical production issues.. .....to read on please visit my site.
+        I have seen many different setups and infrastructures during my carreer. My roles always included front-line ad-hoc fire fighting production issues. This often involves identifying and fixing these under time pressure, without the comfort of 2-week-long SCRUM sprints and without an exhaustive QA process. I also wrote a lot of code (Bash, Ruby, Perl, Go, and a little Java), and I followed the typical software development process, but that did not always apply to critical production issues.
         
             

Defensive DevOps

-

Published by Paul at 2021-10-22 10:02:46 GMT

+

Published at 2021-10-22T10:02:46+03:00

                                                             c=====e
                                                                H
@@ -3344,13 +3440,13 @@ bash: line 1: 1/10.0 : syntax error: invalid arithmetic operator (error token is
         2021-09-12T09:39:20+03:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        A robust computer system must be kept simple and stupid (KISS). The fancier the system is, the more can break. Unfortunately, most systems tend to become complex and challenging to maintain in today's world. In the early days, so I was told, engineers understood every part of the system, but nowadays, we see more of the 'lasagna' stack. One layer or framework is built on top of another layer, and in the end, nobody has got a clue what's going on.. .....to read on please visit my site.
+        A robust computer system must be kept simple and stupid (KISS). The fancier the system is, the more can break. Unfortunately, most systems tend to become complex and challenging to maintain in today's world. In the early days, so I was told, engineers understood every part of the system, but nowadays, we see more of the 'lasagna' stack. One layer or framework is built on top of another layer, and in the end, nobody has got a clue what's going on.
         
             

Keep it simple and stupid

-

Published by Paul at 2021-09-12 09:39:20 GMT, last updated at 2022-04-21

+

Published at 2021-09-12T09:39:20+03:00; Updated at 2022-04-21

   _______________                        |*\_/*|_______
   |  ___________  |     .-.     .-.      ||_/-\_|______  |
@@ -3415,13 +3511,13 @@ bash: line 1: 1/10.0 : syntax error: invalid arithmetic operator (error token is
         2021-08-01T10:37:58+03:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        I believe that it is essential to always have free and open-source alternatives to any kind of closed-source proprietary software available to choose from. But there are a couple of points you need to take into consideration. . .....to read on please visit my site.
+        I believe that it is essential to always have free and open-source alternatives to any kind of closed-source proprietary software available to choose from. But there are a couple of points you need to take into consideration. 
         
             

On being Pedantic about Open-Source

-

Published by Paul at 2021-08-01, last updated at 2023-01-23

+

Published at 2021-08-01T10:37:58+03:00; Updated at 2023-01-23

                                            __
                                _____....--' .'
@@ -3497,13 +3593,13 @@ bash: line 1: 1/10.0 : syntax error: invalid arithmetic operator (error token is
         2021-07-04T10:51:23+01:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        When I was a Linux System Administrator, I have been programming in Perl for years. I still maintain some personal Perl programming projects (e.g. Xerl, guprecords, Loadbars). After switching jobs a couple of years ago (becoming a Site Reliability Engineer), I found Ruby (and some Python) widely used there. As I wanted to do something new, I then decided to give Ruby a go for all medium-sized programming and scripting projects.. .....to read on please visit my site.
+        When I was a Linux System Administrator, I have been programming in Perl for years. I still maintain some personal Perl programming projects (e.g. Xerl, guprecords, Loadbars). After switching jobs a couple of years ago (becoming a Site Reliability Engineer), I found Ruby (and some Python) widely used there. As I wanted to do something new, I decided to give Ruby a go.
         
             

The Well-Grounded Rubyist

-

Published by Paul at 2021-07-04 12:51:23 GMT

+

Published at 2021-07-04T10:51:23+01:00

When I was a Linux System Administrator, I have been programming in Perl for years. I still maintain some personal Perl programming projects (e.g. Xerl, guprecords, Loadbars). After switching jobs a couple of years ago (becoming a Site Reliability Engineer), I found Ruby (and some Python) widely used there. As I wanted to do something new, I decided to give Ruby a go.

You should learn or try out one new programming language once yearly anyway. If you end up not using the new language, that's not a problem. You will learn new techniques with each new programming language and this also helps you to improve your overall programming skills even for other languages. Also, having some background in a similar programming language makes it reasonably easy to get started. Besides that, learning a new programming language is kick-a** fun!


@@ -3578,13 +3674,13 @@ Hello World 2021-06-05T19:03:32+01:00 Paul Buetow - comments@mx.buetow.org + hi@paul.cyou - You might have read my previous blog post about entering the Geminispace, where I pointed out the benefits of having and maintaining an internet presence there. This whole site (the blog and all other pages) is composed in the Gemtext markup language. . .....to read on please visit my site. + You might have read my previous blog post about entering the Geminispace, where I pointed out the benefits of having and maintaining an internet presence there. This whole site (the blog and all other pages) is composed in the Gemtext markup language.

Gemtexter - One Bash script to rule it all

-

Published by Paul at 2021-06-05 21:03:32 GMT

+

Published at 2021-06-05T19:03:32+01:00

                                                                o .,<>., o
                                                                |\/\/\/\/|
@@ -3717,13 +3813,13 @@ assert::equals "$(generate::make_link md "$gemtext")" \
         2021-05-16T14:51:57+01:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        Lately, I have been polishing and writing a lot of Bash code. Not that I never wrote a lot of Bash, but now as I also looked through the 'Google Shell Style Guide' I thought it is time to also write my own thoughts on that. I agree to that guide in most, but not in all points. . .....to read on please visit my site.
+        Lately, I have been polishing and writing a lot of Bash code. Not that I never wrote a lot of Bash, but now as I also looked through the Google Shell Style Guide, I thought it is time also to write my thoughts on that. I agree with that guide in most, but not in all points. 
         
             

Personal Bash coding style guide

-

Published by Paul at 2021-05-16 16:51:57 GMT

+

Published at 2021-05-16T14:51:57+01:00

    .---------------------------.
   /,--..---..---..---..---..--. `.
@@ -4025,13 +4121,14 @@ fi
         2021-04-24T19:28:41+01:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        Have you reached this article already via Gemini? You need a special client for that, web browsers such as Firefox, Chrome, Safari etc. don't support the Gemini protocol. The Gemini address of this site (or the address of this capsule as people say in Geminispace) is: ... to read on visit my site.
+        ASCII Art by Andy Hood!
         
             

Welcome to the Geminispace

-

Published by Paul at 2021-04-24 21:28:41 GMT, last updated at 2021-06-18, ASCII Art by Andy Hood

+

Published at 2021-04-24T19:28:41+01:00; Updated at 2021-06-18

+

ASCII Art by Andy Hood!

Have you reached this article already via Gemini? It requires a Gemini client; web browsers such as Firefox, Chrome, Safari, etc., don't support the Gemini protocol. The Gemini address of this site (or the address of this capsule as people say in Geminispace) is:

https://foo.zone

However, if you still use HTTP, you are just surfing the fallback HTML version of this capsule. In that case, I suggest reading on what this is all about :-).

@@ -4095,13 +4192,13 @@ fi 2021-04-22T19:28:41+01:00 Paul Buetow - comments@mx.buetow.org + hi@paul.cyou - This article first appeared at the Mimecast Engineering Blog but I made it available here in my personal Gemini capsule too. ...to read on visit my site. + This article first appeared at the Mimecast Engineering Blog but I made it available here in my personal internet site too.

DTail - The distributed log tail program

-

Published by Paul at 2021-04-22 21:28:41 GMT, last updated at 2021-04-26

+

Published at 2021-04-22T19:28:41+01:00; Updated at 2021-04-26

DTail logo image

This article first appeared at the Mimecast Engineering Blog but I made it available here in my personal internet site too.

Original Mimecast Engineering Blog post at Medium
@@ -4176,13 +4273,13 @@ dtail –servers serverlist.txt –files ‘/var/log/*.log’ –regex ‘(?i:er 2018-06-01T14:50:29+01:00 Paul Buetow - comments@mx.buetow.org + hi@paul.cyou - This text first was published in the german IT-Administrator computer Magazine. 3 years have passed since and I decided to publish it on my blog too. . .....to read on please visit my site. + This text first was published in the german IT-Administrator computer Magazine. 3 years have passed since and I decided to publish it on my blog too.

Realistic load testing with I/O Riot for Linux

-

Published by Paul at 2018-06-01 16:50:29 GMT, last updated at 2021-05-08

+

Published at 2018-06-01T14:50:29+01:00; Updated at 2021-05-08

        .---.
       /     \
@@ -4315,13 +4412,13 @@ Total time: 1213.00s
         2016-11-20T22:10:57+00:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        You can do a little of object-oriented programming in the C Programming Language. However, that is, in my humble opinion, limited. It's easier to use a different programming language than C for OOP. But still it's an interesting exercise to try using C for this.. .....to read on please visit my site.
+        You can do a little of object-oriented programming in the C Programming Language. However, that is, in my humble opinion, limited. It's easier to use a different programming language than C for OOP. But still it's an interesting exercise to try using C for this.
         
             

Object oriented programming with ANSI C

-

Published by Paul at 2016-11-21 00:10:57 GMT, updated 2022-01-29

+

Published at 2016-11-20T22:10:57+00:00; Updated at 2022-01-29

   ___   ___  ____        ____ 
  / _ \ / _ \|  _ \      / ___|
@@ -4407,13 +4504,13 @@ mult.calculate(mult,a,b));
         2016-05-22T18:59:01+01:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        Finally, I had time to deploy my own authoritative DNS servers (master and slave) for my domains 'buetow.org' and 'buetow.zone'. My domain name provider is Schlund Technologies. They allow their customers to manually edit the DNS records (BIND files). And they also give you the opportunity to set your own authoritative DNS servers for your domains. From now I am making use of that option.. .....to read on please visit my site.
+        Finally, I had time to deploy my authoritative DNS servers (master and slave) for my domains 'buetow.org' and 'buetow.zone'. My domain name provider is Schlund Technologies. They allow their customers to edit the DNS records (BIND files) manually. And they also allow you to set your authoritative DNS servers for your domains. From now, I am making use of that option.
         
             

Spinning up my own authoritative DNS servers

-

Published by Paul at 2016-05-22 20:59:01 GMT

+

Published at 2016-05-22T18:59:01+01:00

Background

Finally, I had time to deploy my authoritative DNS servers (master and slave) for my domains "buetow.org" and "buetow.zone". My domain name provider is Schlund Technologies. They allow their customers to edit the DNS records (BIND files) manually. And they also allow you to set your authoritative DNS servers for your domains. From now, I am making use of that option.

Schlund Technologies
@@ -4632,13 +4729,13 @@ apply Service "dig6" { 2016-04-16T22:43:42+01:00 Paul Buetow - comments@mx.buetow.org + hi@paul.cyou - I enhanced the procedure a bit. From now on I am having two external 2TB USB hard drives. Both are setup exactly the same way. To decrease the probability that they will not fail at about the same time both drives are of different brands. One drive is kept at the secret location. The other one is kept at home right next to my HP MicroServer. ...to read on visit my site. + I enhanced the procedure a bit. From now on, I have two external 2TB USB hard drives. Both are set up precisely the same way. To decrease the probability that both drives will not fail simultaneously, they are of different brands. One drive is kept at a secret location. The other one is held at home, right next to my HP MicroServer.

Offsite backup with ZFS (Part 2)

-

Published by Paul at 2016-04-17 00:43:42 GMT

+

Published at 2016-04-16T22:43:42+01:00

  ________________
 |# :           : #|
@@ -4669,13 +4766,13 @@ apply Service "dig6" {
         2016-04-09T18:29:47+01:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        Over the last couple of years I wrote quite a few Puppet modules in order to manage my personal server infrastructure. One of them manages FreeBSD Jails and another one ZFS file systems. I thought I would give a brief overview in how it looks and feels.. .....to read on please visit my site.
+        Over the last couple of years I wrote quite a few Puppet modules in order to manage my personal server infrastructure. One of them manages FreeBSD Jails and another one ZFS file systems. I thought I would give a brief overview in how it looks and feels.
         
             

Jails and ZFS with Puppet on FreeBSD

-

Published by Paul at 2016-04-09 20:29:47 GMT

+

Published at 2016-04-09T18:29:47+01:00

             __     __
            (( \---/ ))
@@ -5048,13 +5145,13 @@ Notice: Finished catalog run in 206.09 seconds
         2016-04-03T22:43:42+01:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        When it comes to data storage and potential data loss I am a paranoid person. It is not just due to my job  but also due to a personal experience I encountered over 10 years ago: A single drive failure and loss of all my data (pictures, music, ....). ...to read on visit my site.
+        When it comes to data storage and potential data loss, I am a paranoid person. It is due to my job and a personal experience I encountered over ten years ago: A single drive failure and loss of all my data (pictures, music, etc.).
         
             

Offsite backup with ZFS

-

Published by Paul at 2016-04-04 00:43:42 GMT

+

Published at 2016-04-03T22:43:42+01:00

  ________________
 |# :           : #|
@@ -5091,13 +5188,13 @@ Notice: Finished catalog run in 206.09 seconds
         2015-12-05T16:12:57+00:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        You can use the following tutorial to install a full blown Debian GNU/Linux Chroot on a LG G3 D855 CyanogenMod 13 (Android 6). First of all you need to have root permissions on your phone and you also need to have the developer mode activated. The following steps have been tested on Linux (Fedora 23). .....to read on please visit my site.
+        You can use the following tutorial to install a full-blown Debian GNU/Linux Chroot on an LG G3 D855 CyanogenMod 13 (Android 6). First of all, you need to have root permissions on your phone, and you also need to have the developer mode activated. The following steps have been tested on Linux (Fedora 23).
         
             

Run Debian on your phone with Debroid

-

Published by Paul at 2015-12-05 18:12:57 CEST, last updated at 2021-05-16

+

Published at 2015-12-05T16:12:57+00:00; Updated at 2021-05-16

  ____       _               _     _ 
 |  _ \  ___| |__  _ __ ___ (_) __| |
@@ -5249,19 +5346,19 @@ exit
         
     
     
-        The fibonacci.pl.c Polyglot
+        The fibonacci.pl.raku.c Polyglot
         
         https://foo.zone/gemfeed/2014-03-24-the-fibonacci.pl.c-polyglot.html
         2014-03-24T21:32:53+00:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        In computing, a polyglot is a computer program or script written in a valid form of multiple programming languages, which performs the same operations or output independent of the programming language used to compile or interpret it. .....to read on please visit my site.
+        In computing, a polyglot is a computer program or script written in a valid form of multiple programming languages, which performs the same operations or output independent of the programming language used to compile or interpret it.
         
             

The fibonacci.pl.raku.c Polyglot

-

Published by Paul at 2014-03-24 23:32:53 CEST, last updated at 2022-04-23

+

Published at 2014-03-24T21:32:53+00:00; Updated at 2022-04-23

In computing, a polyglot is a computer program or script written in a valid form of multiple programming languages, which performs the same operations or output independent of the programming language used to compile or interpret it.

https://en.wikipedia.org/wiki/Polyglot_(computing)

The Fibonacci numbers

@@ -5397,13 +5494,13 @@ fib(10) = 55 2011-05-07T22:26:02+01:00 Paul Buetow - comments@mx.buetow.org + hi@paul.cyou - PerlDaemon is a minimal daemon for Linux and other Unix like operating systems programmed in Perl. It is a minimal but pretty functional and fairly generic service framework. This means that it does not do anything useful other than providing a framework for starting, stopping, configuring and logging. In order to do something a module (written in Perl) bust be provided.. .....to read on please visit my site. + PerlDaemon is a minimal daemon for Linux and other Unix like operating systems programmed in Perl. It is a minimal but pretty functional and fairly generic service framework. This means that it does not do anything useful other than providing a framework for starting, stopping, configuring and logging. To do something useful, a module (written in Perl) must be provided.

Perl Daemon (Service Framework)

-

Published by Paul at 2011-05-08 00:26:02 CEST, last updated at 2021-05-07

+

Published at 2011-05-07T22:26:02+01:00; Updated at 2021-05-07

    a'!   _,,_ a'!   _,,_     a'!   _,,_
      \\_/    \  \\_/    \      \\_/    \.-,
@@ -5543,13 +5640,13 @@ sub do ($) {
         2010-05-09T12:48:29+01:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        Fype is an interpreted programming language created by me for learning and fun. The interpreter is written in C. It has been tested on FreeBSD and NetBSD and may also work on other Unix like operating systems such as Linux based ones. To be honest, besides learning and fun there is really no other use case of why Fype actually exists as many other programming languages are much faster and more powerful.. .....to read on please visit my site.
+        Fype is an interpreted programming language created by me for learning and fun. The interpreter is written in C. It has been tested on FreeBSD and NetBSD and may also work on other Unix like operating systems such as Linux based ones. Besides learning and fun, there is no other use case of why Fype exists as many other programming languages are much faster and more powerful.
         
             

The Fype Programming Language

-

Published by Paul at 2010-05-09 14:48:29 CEST, last updated at 2021-05-05

+

Published at 2010-05-09T12:48:29+01:00; Updated at 2021-05-05

       ____                                      _        __       
      / / _|_   _ _ __   ___    _   _  ___  __ _| |__    / _|_   _ 
@@ -5958,13 +6055,13 @@ BB
         2010-05-07T08:17:59+01:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        In contrast to Haskell, Standard SML does not use lazy evaluation by default, but strict evaluation. . .....to read on please visit my site.
+        In contrast to Haskell, Standard SML does not use lazy evaluation by default but an eager evaluation. 
         
             

Lazy Evaluation with Standard ML

-

Published by Paul at 2010-05-07 10:17:59 CEST

+

Published at 2010-05-07T08:17:59+01:00

 
       _____|~~\_____      _____________
@@ -6058,13 +6155,13 @@ first 10 nat_pairs_not_null
         2010-04-09T22:57:36+01:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        I am currently looking into the functional programming language Standard ML (aka SML). The purpose is to refresh my functional programming skills and to learn something new too. Since I already know a little Haskell, could I do not help myself and I implemented the same exercises in Haskell too.. .....to read on please visit my site.
+        I am currently looking into the functional programming language Standard ML (aka SML). The purpose is to refresh my functional programming skills and to learn something new too. Since I already knew a little Haskell, I could not help myself, and I also implemented the same exercises in Haskell.
         
             

Standard ML and Haskell

-

Published by Paul at 2010-04-10 00:57:36 CEST

+

Published at 2010-04-09T22:57:36+01:00

I am currently looking into the functional programming language Standard ML (aka SML). The purpose is to refresh my functional programming skills and to learn something new too. Since I already knew a little Haskell, I could not help myself, and I also implemented the same exercises in Haskell.

As you will see, SML and Haskell are very similar (at least when it comes to the basics). However, the syntax of Haskell is a bit more "advanced". Haskell utilizes fewer keywords (e.g. no val, end, fun, fn ...). Haskell also allows to write down the function types explicitly. What I have been missing in SML so far is the so-called pattern guards. Although this is a very superficial comparison for now, so far, I like Haskell more than SML. Nevertheless, I thought it would be fun to demonstrate a few simple functions of both languages to show off the similarities.

Haskell is also a "pure functional" programming language, whereas SML also makes explicit use of imperative concepts. I am by far not a specialist in either of these languages, but here are a few functions implemented in both SML and Haskell:

@@ -6212,13 +6309,13 @@ my_filter f l = foldr (make_filter_fn f) [] l 2008-12-29T09:10:41+00:00 Paul Buetow - comments@mx.buetow.org + hi@paul.cyou - The last week I was in Vidin, Bulgaria with no internet access and I had to fix my MTA (Postfix) at. .....to read on please visit my site. + The last week I was in Vidin, Bulgaria with no internet access and I had to fix my MTA (Postfix) at host.0.buetow.org which serves E-Mail for all my customers at P. B. Labs. Good, that I do not guarantee high availability on my web services (I've to do a full time job somewhere else too).

Using my Nokia N95 for fixing my MTA

-

Published by Paul at 2008-12-29 11:10:41 CEST, last updated at 2021-12-01

+

Published at 2008-12-29T09:10:41+00:00; Updated at 2021-12-01

 
            _
@@ -6258,13 +6355,13 @@ _jgs_\|//_\\|///_\V/_\|//__
         2008-06-26T21:43:51+01:00
         
             Paul Buetow
-            comments@mx.buetow.org
+            hi@paul.cyou
         
-        Here are some Perl Poems I wrote. They don't do anything useful when you run them but they don't produce a compiler error either. They only exists for fun and demonstrate what you can do with Perl syntax.. .....to read on please visit my site.
+        Here are some Perl Poems I wrote. They don't do anything useful when you run them, but they don't produce a compiler error either. They only exist for fun and demonstrate what you can do with Perl syntax.
         
             

Perl Poetry

-

Published by Paul at 2008-06-26 23:43:51 CEST, last updated at 2021-05-04

+

Published at 2008-06-26T21:43:51+01:00; Updated at 2021-05-04

  '\|/'                                  *
 -- * -----
diff --git a/gemfeed/index.html b/gemfeed/index.html
index 0df75405..1181f2e6 100644
--- a/gemfeed/index.html
+++ b/gemfeed/index.html
@@ -10,6 +10,7 @@
 
 

Gemfeed of foo.zone

To be in the .zone!

+2023-03-16 - 'The pragmatic programmer' book notes
2023-02-26 - How to shut down after work
2023-01-23 - Why GrapheneOS rox
2022-12-24 - Ultra(re)learning Java - My takeaways
diff --git a/index.gmi.tpl b/index.gmi.tpl new file mode 100644 index 00000000..d60f001e --- /dev/null +++ b/index.gmi.tpl @@ -0,0 +1,35 @@ +# foo.zone + +<< echo "> This site was generated at $($DATE $DATE_FORMAT) by \`Gemtexter\`" + +``` + |\---/| + | ,_, | + \_`_/-..----. + ___/ ` ' ,""+ \ sk +(__...' __\ |`.___.'; + (_,...'(_,.`__)/'.....+ +``` + +## Introduction + +Welcome to the foo.zone. It's my personal internet site and blog. Everything you read on this site is my personal opinion and experience. You can call me a Linux/*BSD enthusiast and hobbyist. I also have many other interests. However, you will encounter mostly (if not only) technical content on this site. + +=> https://paul.cyou My contact information (via HTTP) +=> gemini://paul.cyou My contact information (via Gemini) +=> ./resources.gmi My list of resources + +If you reach this site via the modern web, please read this: + +=> ./gemfeed/2021-04-24-welcome-to-the-geminispace.gmi Welcome to the Geminispace + +## Personal blog + +### Stay updated + +=> ./gemfeed/atom.xml Subscribe to this blog's Atom feed +=> ./gemfeed/index.gmi Subscribe to this blog's Gemfeed + +### Posts + +=> ./gemfeed/2008-06-26-perl-poetry.gmi 2008-06-26 - Perl Poetry diff --git a/index.html b/index.html index d976a78f..1ed83f74 100644 --- a/index.html +++ b/index.html @@ -9,6 +9,7 @@

foo.zone

+

This site was generated at 2023-03-15T00:57:00+02:00 by Gemtexter

    |\---/|
    | ,_, |
@@ -29,6 +30,7 @@
 Subscribe to this blog's Atom feed
Subscribe to this blog's Gemfeed

Posts

+2023-03-16 - 'The pragmatic programmer' book notes
2023-02-26 - How to shut down after work
2023-01-23 - Why GrapheneOS rox
2022-12-24 - Ultra(re)learning Java - My takeaways
diff --git a/notes/the-pragmatic-programmer.gmi.tpl b/notes/the-pragmatic-programmer.gmi.tpl new file mode 100644 index 00000000..daa5b487 --- /dev/null +++ b/notes/the-pragmatic-programmer.gmi.tpl @@ -0,0 +1 @@ +<< cat ../gemfeed/2023-03-16-the-pragmatic-programmer-book-notes.gmi diff --git a/notes/the-pragmatic-programmer.html b/notes/the-pragmatic-programmer.html index 54d52a24..5e0ee580 100644 --- a/notes/the-pragmatic-programmer.html +++ b/notes/the-pragmatic-programmer.html @@ -9,14 +9,26 @@

"The pragmatic programmer" book notes

-

Last updated 2.6.2022

-

Think about your work while you are doing it. Every day on every project. Have a feeling of continuous improvement.

+

Published at 2023-03-15T00:55:20+02:00

+

These are my personal takeaways after reading "The Pragmatic Programmer" by David Thomas and Andrew Hunt. Note that the book contains much more knowledge and pearls of wisdom and that the following notes only contain points I personally found worth writing down. This is mainly for my use, but you might find it helpful too.

+
+         ,..........   ..........,
+     ,..,'          '.'          ',..,
+    ,' ,'            :            ', ',
+   ,' ,'             :             ', ',
+  ,' ,'              :              ', ',
+ ,' ,'............., : ,.............', ',
+,'  '............   '.'   ............'  ',
+ '''''''''''''''''';''';''''''''''''''''''
+                    '''
+

+

Think about your work while doing it - every day on every project. Have a feeling of continuous improvement.

  • Be a realist.
  • Smell challenges.
  • Care about your craft.
  • -
  • Code can never be perfect but it can meet the requirements..
  • -
  • You should be prod of your code, though.
  • +
  • Code can always be flawed, but it can meet the requirements.
  • +
  • You should be proud of your code, though.

No one writes perfect code, including you. However:

    @@ -25,26 +37,27 @@
  • Crashing is often the best thing you can do.
  • Changes should be reversible.
-

Erlang: Defensive programming is a waste of time. Let it crash. "This can never happen" - don't practise that kind of self deception when programming.

-

Leave assertions in the code even in production. Only leave out the assertions causing the performance issues.

-

Take small steps, always. Get feedback too for each of the steps the code does. Avoid fortune telling. If you have to involve it, then the step is too large.

-

Decouple the code (e.g. OOP or functional programming). Prefer interfaces for types and mixins for class extension over class inheritance.

+

Erlang: Defensive programming is a waste of time. Let it crash. "This can never happen" - don't practise that kind of self-deception when programming.

+

Leave assertions in the code, even in production. Only leave out the assertions causing the performance issues.

+

Take small steps, always. Get feedback, too, for each of the steps the code does. Avoid fortune telling. If you have to involve in it, then the step is too large.

+

Decouple the code (e.g. OOP or functional programming). Prefer interfaces for types and mixins for a class extension over class inheritance.

  • Refactor now and not later.
  • -
  • Later it will be even more painful.
  • +
  • Later, it will be even more painful.
-

Don't think outside the box. Find the box. The box is larger than you think. Think about the hard problem at hand. Do you have to do it a certain way or do you have to do it at all?

+

Don't think outside the box. Find the box. The box is more extensive than you think. Think about the hard problem at hand. Do you have to do it a certain way, or do you have to do it at all?

Do what works and not what's fashionable. E.g. does SCRUM make sense? The goal is to deliver deliverables and not to "become" agile.

Continuous learning

-

Add new tools to your repertoire every day and keep the momentum up. Learning new things is your most important aspect. Invest regularly in your knowledge portfolio. The process of learning extends your thinking it does not matter if you will never use it.

+

Add new tools to your repertoire every day and keep the momentum up. Learning new things is your most crucial aspect. Invest regularly in your knowledge portfolio. The learning process extends your thinking. It does not matter if you will never use it.

  • Learn a new programming language every year.
  • -
  • Read a technical book every months.
  • +
  • Read a technical book every month.
  • Take courses.

Think critically about everything you learn. Use paper for your notes. There is something special about it.

Stay connected

-

It's your life, you own it. Bruce Lee once said: "I am not on the world to life after your expectations, neither are you to life after mine."

+

It's your life, and you own it. Bruce Lee once said:

+

"I am not on the world to life after your expectations, neither are you to life after mine."

  • Go to meet-ups and actively engage.
  • Stay current.
  • @@ -53,9 +66,10 @@

    It's your life. Share it, celebrate it, be proud and have fun.

    The story of stone soup

    How to motivate others to contribute something (e.g. ideas to a startup):

    -

    A kindly, old stranger was walking through the land when he came upon a village. As he entered, the villagers moved towards their homes locking doors and windows. The stranger smiled and asked, why are you all so frightened. I am a simple traveler, looking for a soft place to stay for the night and a warm place for a meal. "There's not a bite to eat in the whole province," he was told. "We are weak and our children are starving. Better keep moving on." "Oh, I have everything I need," he said. "In fact, I was thinking of making some stone soup to share with all of you." He pulled an iron cauldron from his cloak, filled it with water, and began to build a fire under it. Then, with great ceremony, he drew an ordinary-looking stone from a silken bag and dropped it into the water. By now, hearing the rumor of food, most of the villagers had come out of their homes or watched from their windows. As the stranger sniffed the "broth" and licked his lips in anticipation, hunger began to overcome their fear. "Ahh," the stranger said to himself rather loudly, "I do like a tasty stone soup. Of course, stone soup with cabbage -- that's hard to beat." Soon a villager approached hesitantly, holding a small cabbage he'd retrieved from its hiding place, and added it to the pot. "Wonderful!!" cried the stranger. "You know, I once had stone soup with cabbage and a bit of salt beef as well, and it was fit for a king." The village butcher managed to find some salt beef . . . And so it went, through potatoes, onions, carrots, mushrooms, and so on, until there was indeed a delicious meal for everyone in the village to share. The village elder offered the stranger a great deal of money for the magic stone, but he refused to sell it and traveled on the next day. As he left, the stranger came upon a group of village children standing near the road. He gave the silken bag containing the stone to the youngest child, whispering to a group, "It was not the stone, but the villagers that had performed the magic."

    -

    By working together, with everyone contributing what they can, a greater good is achieved.

    -More notes
    +

    A kindly, old stranger was walking through the land when he came upon a village. As he entered, the villagers moved towards their homes, locking doors and windows. The stranger smiled and asked, why are you all so frightened. I am a simple traveler, looking for a soft place to stay for the night and a warm place for a meal. "There's not a bite to eat in the whole province," he was told. "We are weak and our children are starving. Better keep moving on." "Oh, I have everything I need," he said. "In fact, I was thinking of making some stone soup to share with all of you." He pulled an iron cauldron from his cloak, filled it with water, and began to build a fire under it. Then, with great ceremony, he drew an ordinary-looking stone from a silken bag and dropped it into the water. By now, hearing the rumor of food, most of the villagers had come out of their homes or watched from their windows. As the stranger sniffed the "broth" and licked his lips in anticipation, hunger began to overcome their fear. "Ahh," the stranger said to himself rather loudly, "I do like a tasty stone soup. Of course, stone soup with cabbage -- that's hard to beat." Soon a villager approached hesitantly, holding a small cabbage he'd retrieved from its hiding place, and added it to the pot. "Wonderful!!" cried the stranger. "You know, I once had stone soup with cabbage and a bit of salt beef as well, and it was fit for a king." The village butcher managed to find some salt beef . . . And so it went, through potatoes, onions, carrots, mushrooms, and so on, until there was indeed a delicious meal for everyone in the village to share. The village elder offered the stranger a great deal of money for the magic stone, but he refused to sell it and traveled on the next day. As he left, the stranger came upon a group of village children standing near the road. He gave the silken bag containing the stone to the youngest child, whispering to a group, "It was not the stone, but the villagers that had performed the magic."

    +

    By working together, everyone contributes what they can, achieving a greater good together.

    +

    E-Mail your comments to hi@paul.cyou :-)

    +Go back to the main site

    This is a template

    +

    Hello world!

    +

    Prices higher in Alaska and Hawaii.

    +

    Heading

    +

    Love your enemies: they'll go crazy trying to figure out what you're up to.

    +
      +
    • Foo
    • +
    • Bar
    • +
    • Baz
    • +
    +

    "The pragmatic programmer" book notes

    +

    Last updated 2.6.2022

    +

    Think about your work while you are doing it. Every day on every project. Have a feeling of continuous improvement.

    +
      +
    • Be a realist.
    • +
    • Smell challenges.
    • +
    • Care about your craft.
    • +
    • Code can never be perfect but it can meet the requirements..
    • +
    • You should be prod of your code, though.
    • +
    +

    No one writes perfect code, including you. However:

    +
      +
    • Paranoia is good thinking.
    • +
    • Practice defensive programming and crash early.
    • +
    • Crashing is often the best thing you can do.
    • +
    • Changes should be reversible.
    • +
    +

    Erlang: Defensive programming is a waste of time. Let it crash. "This can never happen" - don't practise that kind of self deception when programming.

    +

    Leave assertions in the code even in production. Only leave out the assertions causing the performance issues.

    +

    Take small steps, always. Get feedback too for each of the steps the code does. Avoid fortune telling. If you have to involve it, then the step is too large.

    +

    Decouple the code (e.g. OOP or functional programming). Prefer interfaces for types and mixins for class extension over class inheritance.

    +
      +
    • Refactor now and not later.
    • +
    • Later it will be even more painful.
    • +
    +

    Don't think outside the box. Find the box. The box is larger than you think. Think about the hard problem at hand. Do you have to do it a certain way or do you have to do it at all?

    +

    Do what works and not what's fashionable. E.g. does SCRUM make sense? The goal is to deliver deliverables and not to "become" agile.

    +

    Continuous learning

    +

    Add new tools to your repertoire every day and keep the momentum up. Learning new things is your most important aspect. Invest regularly in your knowledge portfolio. The process of learning extends your thinking it does not matter if you will never use it.

    +
      +
    • Learn a new programming language every year.
    • +
    • Read a technical book every months.
    • +
    • Take courses.
    • +
    +

    Think critically about everything you learn. Use paper for your notes. There is something special about it.

    +

    Stay connected

    +

    It's your life, you own it. Bruce Lee once said: "I am not on the world to life after your expectations, neither are you to life after mine."

    +
      +
    • Go to meet-ups and actively engage.
    • +
    • Stay current.
    • +
    • Dealing with computers is hard. Dealing with people is harder.
    • +
    +

    It's your life. Share it, celebrate it, be proud and have fun.

    +

    The story of stone soup

    +

    How to motivate others to contribute something (e.g. ideas to a startup):

    +

    A kindly, old stranger was walking through the land when he came upon a village. As he entered, the villagers moved towards their homes locking doors and windows. The stranger smiled and asked, why are you all so frightened. I am a simple traveler, looking for a soft place to stay for the night and a warm place for a meal. "There's not a bite to eat in the whole province," he was told. "We are weak and our children are starving. Better keep moving on." "Oh, I have everything I need," he said. "In fact, I was thinking of making some stone soup to share with all of you." He pulled an iron cauldron from his cloak, filled it with water, and began to build a fire under it. Then, with great ceremony, he drew an ordinary-looking stone from a silken bag and dropped it into the water. By now, hearing the rumor of food, most of the villagers had come out of their homes or watched from their windows. As the stranger sniffed the "broth" and licked his lips in anticipation, hunger began to overcome their fear. "Ahh," the stranger said to himself rather loudly, "I do like a tasty stone soup. Of course, stone soup with cabbage -- that's hard to beat." Soon a villager approached hesitantly, holding a small cabbage he'd retrieved from its hiding place, and added it to the pot. "Wonderful!!" cried the stranger. "You know, I once had stone soup with cabbage and a bit of salt beef as well, and it was fit for a king." The village butcher managed to find some salt beef . . . And so it went, through potatoes, onions, carrots, mushrooms, and so on, until there was indeed a delicious meal for everyone in the village to share. The village elder offered the stranger a great deal of money for the magic stone, but he refused to sell it and traveled on the next day. As he left, the stranger came upon a group of village children standing near the road. He gave the silken bag containing the stone to the youngest child, whispering to a group, "It was not the stone, but the villagers that had performed the magic."

    +

    By working together, with everyone contributing what they can, a greater good is achieved.

    +More notes
    + + + -- cgit v1.2.3