From 89f83d49ad7d4cd8baa815993d3172ca72e5b30e Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 8 Apr 2023 12:32:25 +0300 Subject: Update content for html --- gemfeed/2008-06-26-perl-poetry.html | 14 +- ...12-29-using-my-nokia-n95-for-fixing-my-mta.html | 4 +- gemfeed/2010-04-09-standard-ml-and-haskell.html | 4 +- ...010-05-07-lazy-evaluation-with-standarn-ml.html | 12 +- .../2010-05-09-the-fype-programming-language.html | 6 +- .../2011-05-07-perl-daemon-service-framework.html | 16 +- .../2014-03-24-the-fibonacci.pl.c-polyglot.html | 8 +- ...2-05-run-debian-on-your-phone-with-debroid.html | 6 +- gemfeed/2016-04-03-offsite-backup-with-zfs.html | 8 +- ...04-09-jails-and-zfs-on-freebsd-with-puppet.html | 4 +- .../2016-04-16-offsite-backup-with-zfs-part2.html | 8 +- ...inning-up-my-own-authoritative-dns-servers.html | 6 +- ...20-object-oriented-programming-with-ansi-c.html | 8 +- ...alistic-load-testing-with-ioriot-for-linux.html | 18 +- ...-22-dtail-the-distributed-log-tail-program.html | 16 +- gemfeed/2021-04-24-welcome-to-the-geminispace.html | 20 +- ...021-05-16-personal-bash-coding-style-guide.html | 20 +- ...5-gemtexter-one-bash-script-to-rule-it-all.html | 24 +- gemfeed/2021-07-04-the-well-grounded-rubyist.html | 10 +- ...-08-01-on-being-pedantic-about-open-source.html | 12 +- gemfeed/2021-09-12-keep-it-simple-and-stupid.html | 24 +- gemfeed/2021-10-22-defensive-devops.html | 6 +- gemfeed/2021-11-29-bash-golf-part-1.html | 18 +- ...-12-26-how-to-stay-sane-as-a-devops-person.html | 10 +- gemfeed/2022-01-01-bash-golf-part-2.html | 22 +- gemfeed/2022-01-23-welcome-to-the-foo.zone.html | 6 +- ...022-02-04-computer-operating-systems-i-use.html | 106 +- gemfeed/2022-03-06-the-release-of-dtail-4.0.0.html | 12 +- gemfeed/2022-04-10-creative-universe.html | 14 +- .../2022-05-27-perl-is-still-a-great-choice.html | 76 +- gemfeed/2022-06-15-sweating-the-small-stuff.html | 104 +- ...22-07-30-lets-encrypt-with-openbsd-and-rex.html | 64 +- ...2-08-27-gemtexter-1.1.0-lets-gemtext-again.html | 42 +- gemfeed/2022-09-30-after-a-bad-nights-sleep.html | 4 +- .../2022-10-30-installing-dtail-on-openbsd.html | 44 +- ...-tried-emacs-but-i-switched-back-to-neovim.html | 58 +- ...22-12-24-ultrarelearning-java-my-takeaways.html | 36 +- gemfeed/2023-01-23-why-grapheneos-rox.html | 32 +- .../2023-02-26-how-to-shut-down-after-work.html | 4 +- ...-03-16-the-pragmatic-programmer-book-notes.html | 14 +- ...03-25-gemtexter-2.0.0-lets-gemtext-again-2.html | 38 +- ...4-01-never-split-the-difference-book-notes.html | 10 +- gemfeed/atom.xml | 2214 +++++++++++++------- gemfeed/index.html | 84 +- 44 files changed, 2019 insertions(+), 1247 deletions(-) (limited to 'gemfeed') diff --git a/gemfeed/2008-06-26-perl-poetry.html b/gemfeed/2008-06-26-perl-poetry.html index 635d0ac0..0482b638 100644 --- a/gemfeed/2008-06-26-perl-poetry.html +++ b/gemfeed/2008-06-26-perl-poetry.html @@ -10,7 +10,7 @@

Perl Poetry



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

  '\|/'                                  *
@@ -39,7 +39,7 @@ _~~|~/_|_|__/|~~~~~~~ |  / ~~~~~ |   | ~~~~~~~~
 
Wikipedia: "Perl poetry is the practice of writing poems that can be compiled as legal Perl code, for example the piece known as Black Perl. Perl poetry is made possible by the large number of English words that are used in the Perl language. New poems are regularly submitted to the community at PerlMonks."

-https://en.wikipedia.org/wiki/Perl
+https://en.wikipedia.org/wiki/Perl

math.pl



@@ -169,17 +169,17 @@ This is perl, v5.8.8 built for i386-freebsd-64int
Did you like what you saw? Have a look at Codeberg to see my other poems too:

-https://codeberg.org/snonux/perl-poetry
+https://codeberg.org/snonux/perl-poetry

Other related posts are:

-2022-05-27 Perl is still a great choice
-2011-05-07 Perl Daemon (Service Framework)
-2008-06-26 Perl Poetry (You are currently reading this)
+2022-05-27 Perl is still a great choice
+2011-05-07 Perl Daemon (Service Framework)
+2008-06-26 Perl Poetry (You are currently reading this)

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

-Back to the main site
+Back to the main site

Using my Nokia N95 for fixing my MTA



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

 
@@ -49,7 +49,7 @@ _jgs_\|//_\\|///_\V/_\|//__
 
E-Mail your comments to hi@paul.cyou :-)

-Back to the main site
+Back to the main site

Standard ML and Haskell



-Published at 2010-04-09T22:57:36+01:00
+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.

@@ -181,7 +181,7 @@ my_filter f l = foldr (make_filter_fn f) [] l
E-Mail your comments to hi@paul.cyou :-)

-Back to the main site
+Back to the main site

Lazy Evaluation with Standard ML



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

 
@@ -27,8 +27,8 @@
 
In contrast to Haskell, Standard SML does not use lazy evaluation by default but an eager evaluation.

-https://en.wikipedia.org/wiki/Eager_evaluation
-https://en.wikipedia.org/wiki/Lazy_evaluation
+https://en.wikipedia.org/wiki/Eager_evaluation
+https://en.wikipedia.org/wiki/Lazy_evaluation


You can solve specific problems with lazy evaluation easier than with eager evaluation. For example, you might want to list the number Pi or another infinite list of something. With the help of lazy evaluation, each element of the list is calculated when it is accessed first, but not earlier.
@@ -77,7 +77,7 @@ val test = first 10 (nat_pairs_not_null ()); *)

-http://smlnj.org/
+http://smlnj.org/

Real laziness with Haskell



@@ -105,11 +105,11 @@ first 10 nat_pairs_not_null -}

-http://www.haskell.org/
+http://www.haskell.org/

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

-Back to the main site
+Back to the main site

The Fype Programming Language



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

       ____                                      _        __       
@@ -514,11 +514,11 @@ BB
 
You can find all of this on the GitHub page. There is also an "examples" folders containing some Fype scripts!

-https://codeberg.org/snonux/fype
+https://codeberg.org/snonux/fype

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

-Back to the main site
+Back to the main site

Perl Daemon (Service Framework)



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

    a'!   _,,_ a'!   _,,_     a'!   _,,_
@@ -107,7 +107,7 @@ $ ./control keys daemon.loopinterval=10 > new.conf; mv new.conf conf/perldaem
 

HiRes event loop



-PerlDaemon uses Time::HiRes to make sure that all the events run incorrect intervals. For each loop run, a time carry value is recorded and added to the next loop run to catch up on lost time.
+PerlDaemon uses Time::HiRes to make sure that all the events run incorrect intervals. For each loop run, a time carry value is recorded and added to the next loop run to catch up on lost time.

Writing your own modules



@@ -159,7 +159,7 @@ sub do ($) { ./bin/perldaemon restart (or shortcurt ./control restart)

-Now watch ./log/perldaemon.log closely. It is a good practice to test your modules in 'foreground mode' (see above how to do that).
+Now watch ./log/perldaemon.log closely. It is a good practice to test your modules in 'foreground mode' (see above how to do that).

BTW: You can install as many modules within the same instance as desired. But they are run in sequential order (in future, they can also run in parallel using several threads or processes).

@@ -167,17 +167,17 @@ sub do ($) {
You can find PerlDaemon (including the examples) at:

-https://codeberg.org/snonux/perldaemon
+https://codeberg.org/snonux/perldaemon

Other related posts are:

-2022-05-27 Perl is still a great choice
-2011-05-07 Perl Daemon (Service Framework) (You are currently reading this)
-2008-06-26 Perl Poetry
+2022-05-27 Perl is still a great choice
+2011-05-07 Perl Daemon (Service Framework) (You are currently reading this)
+2008-06-26 Perl Poetry

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

-Back to the main site
+Back to the main site

The fibonacci.pl.raku.c Polyglot



-Published at 2014-03-24T21:32:53+00:00; 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)
+https://en.wikipedia.org/wiki/Polyglot_(computing)

The Fibonacci numbers



@@ -66,7 +66,7 @@ BEGIN {
You can find the full source code at GitHub:

-https://codeberg.org/snonux/perl-c-fibonacci
+https://codeberg.org/snonux/perl-c-fibonacci

Let's run it with C and C++



@@ -150,7 +150,7 @@ fib(10) = 55
E-Mail your comments to hi@paul.cyou :-)

-Back to the main site
+Back to the main site

Run Debian on your phone with Debroid



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

  ____       _               _     _ 
@@ -33,7 +33,7 @@
 
All scripts mentioned here can be found on GitHub at:

-https://codeberg.org/snonux/debroid
+https://codeberg.org/snonux/debroid

First debootstrap stage



@@ -187,7 +187,7 @@ exit
E-Mail your comments to hi@paul.cyou :-)

-Back to the main site
+Back to the main site

Offsite backup with ZFS



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

  ________________
@@ -25,8 +25,8 @@
 \____||__|_____|__|
 

-Offsite backup with ZFS Part 1 (you are reading this atm.)
-Offsite backup with ZFS Part 2
+Offsite backup with ZFS Part 1 (you are reading this atm.)
+Offsite backup with ZFS Part 2

Please don't lose all my pictures again!



@@ -52,7 +52,7 @@
E-Mail your comments to hi@paul.cyou :-)

-Back to the main site
+Back to the main site

Jails and ZFS with Puppet on FreeBSD



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

             __     __
@@ -399,7 +399,7 @@ Notice: Finished catalog run in 206.09 seconds
 
E-Mail your comments to hi@paul.cyou :-)

-Back to the main site
+Back to the main site

Offsite backup with ZFS (Part 2)



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

  ________________
@@ -27,8 +27,8 @@
                  \____||__|_____|__|
 

-Offsite backup with ZFS Part 1
-Offsite backup with ZFS Part 2 (you are reading this atm.)
+Offsite backup with ZFS Part 1
+Offsite backup with ZFS Part 2 (you are reading this atm.)

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.

@@ -38,7 +38,7 @@
E-Mail your comments to hi@paul.cyou :-)

-Back to the main site
+Back to the main site

Spinning up my own authoritative DNS servers



-Published at 2016-05-22T18:59:01+01:00
+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
+Schlund Technologies

All FreeBSD Jails



@@ -247,7 +247,7 @@ apply Service "dig6" {
E-Mail your comments to hi@paul.cyou :-)

-Back to the main site
+Back to the main site

Object oriented programming with ANSI C



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

   ___   ___  ____        ____ 
@@ -98,19 +98,19 @@ mult.calculate(mult,a,b));
 
If you want to take it further, hit "Object-Oriented Programming with ANSI-C" into your favourite internet search engine or follow the link below. It goes as far as writing a C preprocessor in AWK, which takes some object-oriented pseudo-C and transforms it to plain C so that the C compiler can compile it to machine code. This is similar to how the C++ language had its origins.

-https://www.cs.rit.edu/~ats/books/ooc.pdf
+https://www.cs.rit.edu/~ats/books/ooc.pdf

OOP design patterns in the Linux Kernel



Big C software projects, like Linux, also follow some OOP techniques:

-https://lwn.net/Articles/444910/
+https://lwn.net/Articles/444910/

C is a very old programming language with it's quirks. This might be one of the reasons why Linux will also let Rust code in.

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

-Back to the main site
+Back to the main site

Realistic load testing with I/O Riot for Linux



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

        .---.
@@ -27,7 +27,7 @@ jgs\__/'---'\__/
 
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.

-https://www.admin-magazin.de/Das-Heft/2018/06/Realistische-Lasttests-mit-I-O-Riot
+https://www.admin-magazin.de/Das-Heft/2018/06/Realistische-Lasttests-mit-I-O-Riot

I havn't worked on I/O Riot for some time now, but all what is written here is still valid. I am still using I/O Riot to debug I/O issues and pattern once in a while, so by all means the tool is not obsolete yet. The tool even helped to resolve a major production incident at work caused by disk I/O.

@@ -179,7 +179,7 @@ Total time: 1213.00s
The tool has already proven to be very useful and will continue to be actively developed as time and priority permits. Mimecast intends to be an ongoing contributor to Open Source. You can find I/O Riot at:

-https://github.com/mimecast/ioriot
+https://github.com/mimecast/ioriot

Systemtap



@@ -187,18 +187,18 @@ Total time: 1213.00s
For example, the open syscall opens a file and returns the responsible file descriptor. The read and write syscalls can operate on a file descriptor and return the number of read or written bytes. The close syscall closes a given file descriptor. I/O Riot comes with a ready-made Systemtap program, which you have already compiled into a kernel module and installed to /opt/ioriot. In addition to open, read and close, it logs many other I/O-relevant calls.

-https://sourceware.org/systemtap/
+https://sourceware.org/systemtap/

More refereces



-IOZone
-Bonnie++
-Graphite
-Memory mapped I/O
+IOZone
+Bonnie++
+Graphite
+Memory mapped I/O

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

-Back to the main site
+Back to the main site

DTail - The distributed log tail program



-Published at 2021-04-22T19:28:41+01:00; 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
+Original Mimecast Engineering Blog post at Medium

Running a large cloud-based service requires monitoring the state of huge numbers of machines, a task for which many standard UNIX tools were not really designed. In this post, I will describe a simple program, DTail, that Mimecast has built and released as Open-Source, which enables us to monitor log files of many servers at once without the costly overhead of a full-blown log management system.

@@ -30,7 +30,7 @@
DTail got its inspiration from public domain tools available already in this area but it is a blue sky from-scratch development which was first presented at Mimecast’s annual internal Pet Project competition (awarded with a Bronze prize). It has gained popularity since and is one of the most widely deployed DevOps tools at Mimecast (reaching nearly 10k server installations) and many engineers use it on a regular basis. The Open-Source version of DTail is available at:

-https://dtail.dev
+https://dtail.dev

Try it out — We would love any feedback. But first, read on…

@@ -114,17 +114,17 @@ dtail –servers serverlist.txt –files ‘/var/log/*.log’ –regex ‘(?i:er
Mimecast highly encourages you to have a look at DTail and submit an issue for any features you would like to see. Have you found a bug? Maybe you just have a question or comment? If you want to go a step further: We would also love to see pull requests for any features or improvements. Either way, if in doubt just contact us via the DTail GitHub page.

-https://dtail.dev
+https://dtail.dev

Other related posts are:

-2022-10-30 Installing DTail on OpenBSD
-2022-03-06 The release of DTail 4.0.0
-2021-04-22 DTail - The distributed log tail program (You are currently reading this)
+2022-10-30 Installing DTail on OpenBSD
+2022-03-06 The release of DTail 4.0.0
+2021-04-22 DTail - The distributed log tail program (You are currently reading this)

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

-Back to the main site
+Back to the main site

Welcome to the Geminispace



-Published at 2021-04-24T19:28:41+01:00; Updated at 2021-06-18
+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
+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 :-).

@@ -69,7 +69,7 @@
This site was generated with Gemtexter. You can read more about it here:

-Gemtexter - One Bash script to rule it all
+Gemtexter - One Bash script to rule it all

Gemini advantages summarised



@@ -86,19 +86,19 @@
Check out one of the following links for more information about Gemini. For example, you will find a FAQ that explains why the protocol is named Gemini. Many Gemini capsules are dual-hosted via Gemini and HTTP(S) so that people new to Gemini can sneak peek at the content with a regular web browser. Some people go as far as tri-hosting all their content via HTTP(S), Gemini and Gopher.

-gemini://gemini.circumlunar.space
-https://gemini.circumlunar.space
+gemini://gemini.circumlunar.space
+https://gemini.circumlunar.space

Other related posts are:

-2023-03-25 Gemtexter 2.0.0 - Let's Gemtext again^2
-2022-08-27 Gemtexter 1.1.0 - Let's Gemtext again
-2021-06-05 Gemtexter - One Bash script to rule it all
-2021-04-24 Welcome to the Geminispace (You are currently reading this)
+2023-03-25 Gemtexter 2.0.0 - Let's Gemtext again^2
+2022-08-27 Gemtexter 1.1.0 - Let's Gemtext again
+2021-06-05 Gemtexter - One Bash script to rule it all
+2021-04-24 Welcome to the Geminispace (You are currently reading this)

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

-Back to the main site
+Back to the main site

Personal Bash coding style guide



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

    .---------------------------.
@@ -27,7 +27,7 @@
 
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.

-Google Shell Style Guide
+Google Shell Style Guide

My modifications



@@ -379,27 +379,27 @@ fi
The following two paragraphs are thoroughly quoted from the Google guidelines. But they hit the hammer on the head:

-If you are editing code, take a few minutes to look at the code around you and determine its style. If they use spaces around their if clauses, you should, too. If their comments have little boxes of stars around them, make your comments have little boxes of stars around them too.
+If you are editing code, take a few minutes to look at the code around you and determine its style. If they use spaces around their if clauses, you should, too. If their comments have little boxes of stars around them, make your comments have little boxes of stars around them too.

-The point of having style guidelines is to have a common vocabulary of coding so people can concentrate on what you are saying rather than on how you are saying it. We present global style rules here, so people know the vocabulary. But local style is also important. If the code you add to a file looks drastically different from the existing code around it, the discontinuity throws readers out of their rhythm when they go to read it. Try to avoid this.
+The point of having style guidelines is to have a common vocabulary of coding so people can concentrate on what you are saying rather than on how you are saying it. We present global style rules here, so people know the vocabulary. But local style is also important. If the code you add to a file looks drastically different from the existing code around it, the discontinuity throws readers out of their rhythm when they go to read it. Try to avoid this.


Advanced Bash learning pro tip



I also highly recommend having a read through the "Advanced Bash-Scripting Guide" (not from Google). I use it as the universal Bash reference and learn something new every time I look at it.

-Advanced Bash-Scripting Guide
+Advanced Bash-Scripting Guide

Other related posts are:

-2022-01-01 Bash Golf Part 2
-2021-11-29 Bash Golf Part 1
-2021-06-05 Gemtexter - One Bash script to rule it all
-2021-05-16 Personal Bash coding style guide (You are currently reading this)
+2022-01-01 Bash Golf Part 2
+2021-11-29 Bash Golf Part 1
+2021-06-05 Gemtexter - One Bash script to rule it all
+2021-05-16 Personal Bash coding style guide (You are currently reading this)

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

-Back to the main site
+Back to the main site

Gemtexter - One Bash script to rule it all



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

                                                                o .,<>., o
@@ -65,7 +65,7 @@
 
I have exactly done that - I wrote a Bash script, named Gemtexter, for that:

-https://codeberg.org/snonux/gemtexter
+https://codeberg.org/snonux/gemtexter

In short, Gemtexter is a static site generator and blogging engine that uses Gemtext as its input format.

@@ -111,7 +111,7 @@ paul in uranus in gemtexter on 🌱 main
While working on Gemtexter, I also had a look at the Google Shell Style Guide and wrote a blog post on that:

-Personal bash coding style guide
+Personal bash coding style guide

I followed all these best practices, and in my opinion, the result is a pretty maintainable Bash script (given that you are fluent with all the sed and grep commands I used).

@@ -121,7 +121,7 @@ paul in uranus in gemtexter on 🌱 main
Furthermore, ShellCheck recommended many more improvements. Declaration of unused variables and missing variable and string quotations were the most common ones. ShellSheck immensely helped to improve the robustness of the script.

-https://shellcheck.net
+https://shellcheck.net

Unit testing



@@ -178,17 +178,17 @@ assert::equals "$(generate::make_link md "$gemtext")" \
Other related posts are:

-2023-03-25 Gemtexter 2.0.0 - Let's Gemtext again^2
-2022-08-27 Gemtexter 1.1.0 - Let's Gemtext again
-2022-01-01 Bash Golf Part 2
-2021-11-29 Bash Golf Part 1
-2021-06-05 Gemtexter - One Bash script to rule it all (You are currently reading this)
-2021-05-16 Personal Bash coding style guide
-2021-04-24 Welcome to the Geminispace
+2023-03-25 Gemtexter 2.0.0 - Let's Gemtext again^2
+2022-08-27 Gemtexter 1.1.0 - Let's Gemtext again
+2022-01-01 Bash Golf Part 2
+2021-11-29 Bash Golf Part 1
+2021-06-05 Gemtexter - One Bash script to rule it all (You are currently reading this)
+2021-05-16 Personal Bash coding style guide
+2021-04-24 Welcome to the Geminispace

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

-Back to the main site
+Back to the main site

The Well-Grounded Rubyist



-Published at 2021-07-04T10:51:23+01:00
+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.

@@ -36,9 +36,9 @@
  • Occasionally, I write some lines of Java code for minor feature enhancements and fixes to improve the reliability of some the services.
  • Sometimes, I still program in good old C. This is for special projects (e.g. I/O Riot) or low-level PoCs or SystemTap guru mode scripts.

  • -Also have a look at my personal Bash coding style.
    -Read here about DTail - the distributed log tail program.
    -This is a magazine article about I/O Riot I wrote.
    +Also have a look at my personal Bash coding style.
    +Read here about DTail - the distributed log tail program.
    +This is a magazine article about I/O Riot I wrote.

    For all other in-between tasks I mainly use the Ruby programming language (unless I decide to give something new a shot once in a while).

    @@ -115,7 +115,7 @@ Hello World
    E-Mail your comments to hi@paul.cyou :-)

    -Back to the main site
    +Back to the main site

    On being Pedantic about Open-Source



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

                                                __
    @@ -74,9 +74,9 @@
     

    What about mobile?



    -Update 2023-01-21: Check out my newer post about GrapheneOS, which solves some of my dilemmas
    +Update 2023-01-21: Check out my newer post about GrapheneOS, which solves some of my dilemmas

    -Why GrapheneOS Rox
    +Why GrapheneOS Rox

    I struggle to go 100% open-source on my Smartphone. I use a Samsung phone with the stock Android as provided by Samsung. I love the device as it is large enough to use as a portable reading and note-taking device, and it can also take decent pictures. As a cloud backup solution, I have my own NextCloud server (open-source). Android is mainly open-source software, but many closed parts are still included. I replaced most of the standard apps with free and open-source variants from the F-Droid store though.

    @@ -92,7 +92,7 @@
    The biggest problem I have with going 100% open-source is actually time. You can't control all the software you use or might be using in the future. You have only a finite amount of time available in your life. So you have to decide what's more important: Investigate and use an open-source alternative of every program and app you have installed, or rather spend quality time with your family and have a nice walk in the park or go to a sports class or cook a nice meal? You can't control it all in today's world of tech, not as a user and even not as a tech worker. There's a great blog post worth reading:

    -https://unixsheikh.com/articles/how-to-stay-sane-in-todays-world-of-tech.html
    +https://unixsheikh.com/articles/how-to-stay-sane-in-todays-world-of-tech.html

    The middle way



    @@ -105,7 +105,7 @@
    I have been playing with other smartphone OS alternatives, especially with MeeGo (which has died already) and SailfishOS, too. Security and privacy seem to be significantly improved compared to an Android. As a matter of fact, I bought a cheap and used Sony Xperia XA2 last year and installed SailfishOS on it. It's a nice toy, but it's still not the holy open-source grail as there are also proprietary parts in SailfishOS. Platforms such as Mobian, Ubuntu Touch and Plasma Mobile are more compelling to me. People must explore alternatives to Android and Apple here, as otherwise, you won't own any gadgets anymore:

    -https://news.slashdot.org/story/21/07/10/0120236/by-2030-you-wont-own-any-gadgets
    +https://news.slashdot.org/story/21/07/10/0120236/by-2030-you-wont-own-any-gadgets

    Anyhow, any gadgets, including your phone, should be a tool you use. Don't let the phone use you!

    @@ -127,7 +127,7 @@
    E-Mail your comments to hi@paul.cyou :-)

    -Back to the main site
    +Back to the main site

    Keep it simple and stupid



    -Published at 2021-09-12T09:39:20+03:00; Updated at 2023-03-23
    +Published at 2021-09-12T09:39:20+03:00; Updated at 2023-03-23

       _______________                        |*\_/*|_______
    @@ -39,7 +39,7 @@
     
    Have a look at COBOL, a prevalent programming language of the past. No one is learning COBOL in college or university anymore, but many legacy systems still require COBOL experts. Why is this? It's just too scary to write everything from scratch. There's too much COBOL code out there that can't be replaced from today to tomorrow.

    -https://nymag.com/intelligencer/2020/04/what-is-cobol-what-does-it-have-to-do-with-the-coronavirus.html
    +https://nymag.com/intelligencer/2020/04/what-is-cobol-what-does-it-have-to-do-with-the-coronavirus.html

    On Kubernetes



    @@ -51,21 +51,21 @@
    Coming back to COBOL, k8s is on its way to becoming something similar. One day, k8s might not be the hottest tech stuff everyone wants to use. But there will be still many legacy k8s clusters around but not enough experts available to manage those:

    -https://www.techrepublic.com/article/why-kubernetes-is-our-modern-day-cobol-says-a-tech-expert/
    +https://www.techrepublic.com/article/why-kubernetes-is-our-modern-day-cobol-says-a-tech-expert/

    Another article which stroke me is:

    -Today's Students Don't Understand the Basics of Computer Operations
    +Today's Students Don't Understand the Basics of Computer Operations

    And here is something to smile about:

    -https://christine.website/blog/theres-a-node-2021-10-02
    +https://christine.website/blog/theres-a-node-2021-10-02

    The bloated web



    Another example is the modern web. Have you ever wondered why the internet becomes slower and slower nowadays? The modern web is so much like lasagna that I decided to use Gemini to be the primary protocol of my website. The HTML version of this website is just a fallback as many visitors don't know what Gemini is and don't have any compatible software installed for surfing the Geminispace:

    -2021-04-24-welcome-to-the-geminispace.html
    +2021-04-24-welcome-to-the-geminispace.html

    The Gemtext protocol is KISS. There's no way to do other formattings than headings, links, paragraphs, lists, quotes, and bare text blocks (e.g., ASCII art or code snippets). There's no way to create bloated Gemini sites, and due to its limited capabilities, there's also no way to commercialise it (e.g. there's no good way to track the site visitors as things like cookies don't exist). By design, the Gemini protocol can't be extended, so there is no chance to abuse it even in the future. Gemini sites will stay KISS forever, and there won't be any fancy HTML/JavaScript frameworks like we see on the modern web.

    @@ -73,7 +73,7 @@
    Yet another example I want to bring up is DTail, the distributed log tail program I wrote. There are many great and fancy log-management solutions available to choose from, and they all seem complex to set up and maintain. The ELK stack, for example, requires you to operate an ElasticSearch cluster (or multiple, if you are geo-redundant), Logstash (different configurations and instances, depending on your infrastructure) and a Kibana web-frontend (which also needs to be highly available). I have operated ElasticSearch clusters on multiple occasions, and I must say that it is not an easy task to optimise it for the particular workload you might encounter. I also have seen many ES clusters operated by other people, and I have seen these clusters failing a lot (so it's not just me). The reduced complexity of DTail also makes it more robust against outages. You won't troubleshoot your distributed application very well if the log management infrastructure isn't working either.

    -2021-04-22-dtail-the-distributed-log-tail-program.html
    +2021-04-22-dtail-the-distributed-log-tail-program.html

    I don't say that the ELK stack doesn't work, but it requires experts and additional hardware resources to support it. But instead, if you keep your infrastructure simple (e.g. only use DTail), it will maintain pretty much by itself.

    @@ -91,7 +91,7 @@
    Not to mention, keeping things simple and stupid also reduces the potential malicious attack surface. It's not just about the software and services you use and operate. It's also about the software you write. Here is a nice article about the KISS principle in software development:

    -https://thevaluable.dev/kiss-principle-explained/
    +https://thevaluable.dev/kiss-principle-explained/

    When KISS is not KISS anymore



    @@ -99,16 +99,16 @@

    Other relevant readings



    -