summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-01 15:12:41 +0200
committerPaul Buetow <paul@buetow.org>2026-03-01 15:12:41 +0200
commit1db8546d34bbefa89e4c64a0d76401a9d35377c9 (patch)
treee1bd59f97db52e5614e80ce97608696e5857ea22
parentda4affd2b41019f36697fcd8463f8d8a833b3d7a (diff)
fixes
-rw-r--r--gemfeed/2010-05-09-the-fype-programming-language.gmi.tpl2
-rw-r--r--gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.gmi.tpl2
-rw-r--r--gemfeed/2016-04-03-offsite-backup-with-zfs.gmi2
-rw-r--r--gemfeed/2021-05-16-personal-bash-coding-style-guide.gmi.tpl2
-rw-r--r--gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.gmi.tpl2
-rw-r--r--gemfeed/2021-08-01-on-being-pedantic-about-open-source.gmi.tpl2
-rw-r--r--gemfeed/2021-09-12-keep-it-simple-and-stupid.gmi.tpl4
-rw-r--r--gemfeed/2021-10-22-defensive-devops.gmi.tpl2
-rw-r--r--gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.gmi.tpl2
-rw-r--r--gemfeed/2022-01-01-bash-golf-part-2.gmi.tpl2
-rw-r--r--gemfeed/2022-05-27-perl-is-still-a-great-choice.gmi.tpl2
-rw-r--r--gemfeed/2022-06-15-sweating-the-small-stuff.gmi.tpl2
-rw-r--r--gemfeed/2022-12-24-ultrarelearning-java-my-takeaways.gmi.tpl2
-rw-r--r--gemfeed/2023-01-23-why-grapheneos-rox.gmi.tpl2
-rw-r--r--gemfeed/2023-02-26-how-to-shut-down-after-work.gmi.tpl2
-rw-r--r--gemfeed/2023-03-16-the-pragmatic-programmer-book-notes.gmi.tpl2
-rw-r--r--gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.gmi.tpl2
-rw-r--r--gemfeed/2023-07-17-career-guide-and-soft-skills-book-notes.gmi.tpl2
-rw-r--r--gemfeed/2024-01-13-one-reason-why-i-love-openbsd.gmi.tpl2
-rw-r--r--gemfeed/2024-06-23-terminal-multiplexing-with-tmux.gmi.tpl6
-rw-r--r--gemfeed/2024-07-05-random-weird-things.gmi.tpl2
-rw-r--r--gemfeed/2024-07-07-the-stoic-challenge-book-notes.gmi.tpl2
-rw-r--r--gemfeed/2024-08-05-typing-127.1-words-per-minute.gmi.tpl2
-rw-r--r--gemfeed/2024-09-07-site-reliability-engineering-part-4.gmi.tpl2
-rw-r--r--gemfeed/2024-12-03-f3s-kubernetes-with-freebsd-part-2.gmi.tpl2
-rw-r--r--gemfeed/2025-01-15-working-with-an-sre-interview.gmi.tpl8
-rw-r--r--gemfeed/2025-04-05-f3s-kubernetes-with-freebsd-part-4.gmi.tpl2
-rw-r--r--gemfeed/2025-04-19-when-book-notes.gmi.tpl6
-rw-r--r--gemfeed/2025-05-02-terminal-multiplexing-with-tmux-fish-edition.gmi.tpl6
-rw-r--r--gemfeed/2025-06-07-a-monks-guide-to-happiness-book-notes.gmi.tpl22
-rw-r--r--gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.gmi.tpl8
-rw-r--r--gemfeed/2025-10-02-f3s-kubernetes-with-freebsd-part-7.gmi.tpl8
-rw-r--r--gemfeed/2025-12-07-f3s-kubernetes-with-freebsd-part-8.gmi.tpl6
-rw-r--r--gemfeed/2026-01-01-posts-from-july-to-december-2025.gmi.tpl2
-rw-r--r--gemfeed/2026-01-01-using-supernote-nomad-offline.gmi.tpl2
-rw-r--r--gemfeed/DRAFT-distributed-systems-simulator.gmi.tpl4
-rw-r--r--gemfeed/DRAFT-f3s-kubernetes-with-freebsd-part-8b.gmi.tpl6
37 files changed, 68 insertions, 68 deletions
diff --git a/gemfeed/2010-05-09-the-fype-programming-language.gmi.tpl b/gemfeed/2010-05-09-the-fype-programming-language.gmi.tpl
index d4dac222..683e2357 100644
--- a/gemfeed/2010-05-09-the-fype-programming-language.gmi.tpl
+++ b/gemfeed/2010-05-09-the-fype-programming-language.gmi.tpl
@@ -275,7 +275,7 @@ until <expression> { <statements> }
## Scopes
-A new scope starts with an { and ends with an }. An exception is a procedure, which does not use its own scope (see later in this manual). Control statements and functions support scopes. The "scope" function prints out all available symbols at the current scope. Here is a small example:
+A new scope starts with an { and ends with an }. An exception is a procedure, which does not use its own scope (see later in this manual). Control statements and functions support scopes. The "scope" function prints out all available symbols at the current scope. Here is a small example:
```
my foo = 1;
diff --git a/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.gmi.tpl b/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.gmi.tpl
index 40539e7f..8b153366 100644
--- a/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.gmi.tpl
+++ b/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.gmi.tpl
@@ -173,7 +173,7 @@ chmod +x /data/local/userinit.sh
exit
```
-Reboot & test! Enjoy!
+Reboot & test! Enjoy!
E-Mail your comments to `paul@nospam.buetow.org` :-)
diff --git a/gemfeed/2016-04-03-offsite-backup-with-zfs.gmi b/gemfeed/2016-04-03-offsite-backup-with-zfs.gmi
index 7eaaa917..0833a3eb 100644
--- a/gemfeed/2016-04-03-offsite-backup-with-zfs.gmi
+++ b/gemfeed/2016-04-03-offsite-backup-with-zfs.gmi
@@ -32,7 +32,7 @@ Once weekly, all the local server data is copied to two external USB drives as a
## Storing it at my apartment is not enough
-Now I am thinking about an offsite backup of all this local data. The problem is that all the data remains on a single physical location: My local MicroServer. What happens when the house burns or my server, including the internal disks and the attached USB drives, gets stolen? My first thought was to back up everything to the "cloud". However, the significant issue here is the limited amount of available upload bandwidth (only 1MBit/s).
+Now I am thinking about an offsite backup of all this local data. The problem is that all the data remains on a single physical location: My local MicroServer. What happens when the house burns or my server, including the internal disks and the attached USB drives, gets stolen? My first thought was to back up everything to the "cloud". However, the significant issue here is the limited amount of available upload bandwidth (only 1MBit/s).
The solution is adding another USB drive (2TB) with an encryption container (GELI) and a ZFS pool. The GELI encryption requires a secret key and a secret passphrase. I am updating the data to that drive once every three months (my calendar is reminding me about it), and afterwards, I keep that drive at a secret location outside of my apartment. All the information needed to decrypt (mounting the GELI container) is stored at another (secure) place. Key and passphrase are kept at different sites, though. Even if someone knew of it, he would not be able to decrypt it as some additional insider knowledge would be required as well.
diff --git a/gemfeed/2021-05-16-personal-bash-coding-style-guide.gmi.tpl b/gemfeed/2021-05-16-personal-bash-coding-style-guide.gmi.tpl
index d7903de2..9c67046c 100644
--- a/gemfeed/2021-05-16-personal-bash-coding-style-guide.gmi.tpl
+++ b/gemfeed/2021-05-16-personal-bash-coding-style-guide.gmi.tpl
@@ -384,7 +384,7 @@ The following two paragraphs are thoroughly quoted from the Google guidelines. B
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.
-=> https://tldp.org/LDP/abs/html/ Advanced Bash-Scripting Guide
+=> https://tldp.org/LDP/abs/html/ Advanced Bash-Scripting Guide
E-Mail your comments to `paul@nospam.buetow.org` :-)
diff --git a/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.gmi.tpl b/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.gmi.tpl
index b8cd1588..883e130a 100644
--- a/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.gmi.tpl
+++ b/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.gmi.tpl
@@ -108,7 +108,7 @@ I followed all these best practices, and in my opinion, the result is a pretty m
ShellCheck, a shell script analysis tool written in Haskell, is run on Gemtexter ensuring that all code is acceptable. I am pretty impressed with what ShellCheck found.
-It, for example, detected "some_command | while read var; do ...; done" loops and hinted that these create a new subprocess for the while part. The result is that all variable modifications taking place in the while-subprocess won't reflect the primary Bash process. ShellSheck then recommended rewriting the loop so that no subprocess is spawned as "while read -r var; do ...; done < <(some_command)". ShellCheck also pointed out to add a "-r" to "read"; otherwise, there could be an issue with backspaces in the loop data.
+It, for example, detected "some_command | while read var; do ...; done" loops and hinted that these create a new subprocess for the while part. The result is that all variable modifications taking place in the while-subprocess won't reflect the primary Bash process. ShellSheck then recommended rewriting the loop so that no subprocess is spawned as "while read -r var; do ...; done < <(some_command)". ShellCheck also pointed out to add a "-r" to "read"; otherwise, there could be an issue with backspaces in the loop data.
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.
diff --git a/gemfeed/2021-08-01-on-being-pedantic-about-open-source.gmi.tpl b/gemfeed/2021-08-01-on-being-pedantic-about-open-source.gmi.tpl
index 08dff942..a678c997 100644
--- a/gemfeed/2021-08-01-on-being-pedantic-about-open-source.gmi.tpl
+++ b/gemfeed/2021-08-01-on-being-pedantic-about-open-source.gmi.tpl
@@ -22,7 +22,7 @@ I believe that it is essential to always have free and open-source alternatives
One benefit of using open-source software is that it doesn't cost anything, right? That's correct in many cases. However, in some cases you still need to spend a significant amount of time configuring the software to work for you. It will be more expensive to use open-source software than proprietary commercial one if you aren't careful.
-Not to say that I haven't seen the same effect with commercial software where people had to, after buying it, put a bunch of effort to make it work due to the lack of quality or due to high complexity. But that's either bad luck or bad decision-making. Most commercial providers I have worked with try to make it work for you, so you also will buy other products and services from them later on and don't lose you as a happy customer.
+Not to say that I haven't seen the same effect with commercial software where people had to, after buying it, put a bunch of effort to make it work due to the lack of quality or due to high complexity. But that's either bad luck or bad decision-making. Most commercial providers I have worked with try to make it work for you, so you also will buy other products and services from them later on and don't lose you as a happy customer.
## Commercial providers
diff --git a/gemfeed/2021-09-12-keep-it-simple-and-stupid.gmi.tpl b/gemfeed/2021-09-12-keep-it-simple-and-stupid.gmi.tpl
index dcec5dd7..ebe48abc 100644
--- a/gemfeed/2021-09-12-keep-it-simple-and-stupid.gmi.tpl
+++ b/gemfeed/2021-09-12-keep-it-simple-and-stupid.gmi.tpl
@@ -35,7 +35,7 @@ Have a look at COBOL, a prevalent programming language of the past. No one is le
### On Kubernetes
-Now have a look at Kubernetes (k8s), the current trendy infrastructure thing to use nowadays. Of course, there are many benefits of using k8s (auto-scaling, reproducible deployments, dynamic resource allocation and resource sharing, saving of hardware costs, good commercial for potential employees as it is the current hot sauce of infrastructure). But all of this also comes with costs: You need experts operating the k8s cluster (or you need to pay extra for a managed cluster in the cloud), increased complexity of the system (k8s comes with a steep learning curve). The latter not only applies to the engineers managing the k8s cluster - it also applies to the software engineers, who now have to develop 'cloud native' applications and, therefore, have to change how they developed software how they used to. They all need to be re-educated on what cloud-native means, and they also need to understand the key concepts of k8s for writing optimal software for it.
+Now have a look at Kubernetes (k8s), the current trendy infrastructure thing to use nowadays. Of course, there are many benefits of using k8s (auto-scaling, reproducible deployments, dynamic resource allocation and resource sharing, saving of hardware costs, good commercial for potential employees as it is the current hot sauce of infrastructure). But all of this also comes with costs: You need experts operating the k8s cluster (or you need to pay extra for a managed cluster in the cloud), increased complexity of the system (k8s comes with a steep learning curve). The latter not only applies to the engineers managing the k8s cluster - it also applies to the software engineers, who now have to develop 'cloud native' applications and, therefore, have to change how they developed software how they used to. They all need to be re-educated on what cloud-native means, and they also need to understand the key concepts of k8s for writing optimal software for it.
### The younger generation of IT professionals
@@ -77,7 +77,7 @@ Another perfect example is the Adobe PDF reader. How can it be that the inventor
### The power of plain text files
-Speaking of file formats, never underestimate the power of plain text files. Plain text files don't require any special software to be opened, and they outlive the software which created them in the first place. You will still be able to read a plain text file on a modern computer system ten (or twenty) years from now, but you probably won't be able to read such an old version of an Adobe Photoshop image file if the software required for reading that format isn't supported anymore and doesn't run anymore on modern computers.
+Speaking of file formats, never underestimate the power of plain text files. Plain text files don't require any special software to be opened, and they outlive the software which created them in the first place. You will still be able to read a plain text file on a modern computer system ten (or twenty) years from now, but you probably won't be able to read such an old version of an Adobe Photoshop image file if the software required for reading that format isn't supported anymore and doesn't run anymore on modern computers.
### KISS for programmers
diff --git a/gemfeed/2021-10-22-defensive-devops.gmi.tpl b/gemfeed/2021-10-22-defensive-devops.gmi.tpl
index 96237193..37b2ee32 100644
--- a/gemfeed/2021-10-22-defensive-devops.gmi.tpl
+++ b/gemfeed/2021-10-22-defensive-devops.gmi.tpl
@@ -69,7 +69,7 @@ Furthermore, when you write Bash script, always run the tool ShellSheck (https:/
You probably won't have time for writing unit tests. But what you can do is to pedantically test your code manually. But you have to do the testing on a production machine. So how can you test your code in production without causing more damage?
-Your script should be idempotent. This means you can run it infinite times in a row, and you will always get the same result. For example, in the first run of the script, a file A get's renamed to A.backup. The second time you run the script, it attempts to do the same, but it recognises that A has already been renamed to A.backup and then it is skipping that step. This is very helpful for manually testing, as it means that you can re-run the script every time you extended it. You should dry-run the script at least once before running it for real. You can apply the same principle for almost all features you add to the code.
+Your script should be idempotent. This means you can run it infinite times in a row, and you will always get the same result. For example, in the first run of the script, a file A get's renamed to A.backup. The second time you run the script, it attempts to do the same, but it recognises that A has already been renamed to A.backup and then it is skipping that step. This is very helpful for manually testing, as it means that you can re-run the script every time you extended it. You should dry-run the script at least once before running it for real. You can apply the same principle for almost all features you add to the code.
You may also want to inject manual negative testing into your script. For example, you want to run a particular function F in your script but only if a certain pre-condition is met, and you want to ensure that the code branching works as expected. The pre-condition check could be pretty complex (e.g. N log messages containing a specific warning string are found in the applications logs, but only on the cluster leader server). You can flip the switch directly in the code manually (e.g. run F only, when the pre-condition isn't met) and then perform a dry run of the script and study the output. Once done, flip the switch back to its correct configuration. For double insurance, test the same on a different server type (e.g. on a follower and not on a leader system).
diff --git a/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.gmi.tpl b/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.gmi.tpl
index 106d882f..46fcb886 100644
--- a/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.gmi.tpl
+++ b/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.gmi.tpl
@@ -48,7 +48,7 @@ There are many temptations to get side-tracked by other projects and/or issues.
If the request is urgent, and you have the capacity to help, probably you should help. If it's not urgent, maybe ask to pospone the request (e.g. ask to create a ticket, so that someone from your team can work on it later).
-If the request is urgent, but you don't have the knowledge or the capacity to help, try to defer to a colleague who might be able to help. You could also provide some quick tips and hints, so that the requester can resolve the issue by himself. Make it transparent why you might not have the time right now, as this can help the person to review his own priorities or to escalate.
+If the request is urgent, but you don't have the knowledge or the capacity to help, try to defer to a colleague who might be able to help. You could also provide some quick tips and hints, so that the requester can resolve the issue by himself. Make it transparent why you might not have the time right now, as this can help the person to review his own priorities or to escalate.
### Escalation is only a tool
diff --git a/gemfeed/2022-01-01-bash-golf-part-2.gmi.tpl b/gemfeed/2022-01-01-bash-golf-part-2.gmi.tpl
index 1938de51..3898fb5a 100644
--- a/gemfeed/2022-01-01-bash-golf-part-2.gmi.tpl
+++ b/gemfeed/2022-01-01-bash-golf-part-2.gmi.tpl
@@ -335,7 +335,7 @@ Ok, let's dig deeper:
-e Exit immediately if a command exits with a non-zero status.
```
-As you can see in the following example, the Bash terminates after the execution of "grep" as "foo" is not matching "bar". Therefore, grep exits with 1 (unsuccessfully) and the shell aborts. And therefore, "bar" will not be printed out anymore:
+As you can see in the following example, the Bash terminates after the execution of "grep" as "foo" is not matching "bar". Therefore, grep exits with 1 (unsuccessfully) and the shell aborts. And therefore, "bar" will not be printed out anymore:
```
❯ bash -c 'set -e; echo hello; grep -q bar <<< foo; echo bar'
diff --git a/gemfeed/2022-05-27-perl-is-still-a-great-choice.gmi.tpl b/gemfeed/2022-05-27-perl-is-still-a-great-choice.gmi.tpl
index 548192ee..0a16ff4c 100644
--- a/gemfeed/2022-05-27-perl-is-still-a-great-choice.gmi.tpl
+++ b/gemfeed/2022-05-27-perl-is-still-a-great-choice.gmi.tpl
@@ -72,7 +72,7 @@ So it means that Perl and Raku now exist in parallel. They influence each other,
=> https://www.OpenBSD.org The OpenBSD Operating System
=> https://news.ycombinator.com/item?id=23360338 Why does OpenBSD still include Perl in its base installation?
-The renaming of Perl 6 to Raku has now opened the door for a future Perl 7. As far as I understand, Perl 7 will be Perl 5 but with modern features enabled by default (e.g. pragmas `use strict;`, `use warnings;`, `use signatures;` and so on. Also, the hope is that a Perl 7 with modern standards will attract more beginners. There aren't many Perl jobs out there nowadays. That's mostly due to Perl's bad (bad for no real reasons) reputation.
+The renaming of Perl 6 to Raku has now opened the door for a future Perl 7. As far as I understand, Perl 7 will be Perl 5 but with modern features enabled by default (e.g. pragmas `use strict;`, `use warnings;`, `use signatures;` and so on. Also, the hope is that a Perl 7 with modern standards will attract more beginners. There aren't many Perl jobs out there nowadays. That's mostly due to Perl's bad (bad for no real reasons) reputation.
> Update 2022-12-10: A reader pointed out, that `use v5.36;` already turns strict, warnings and signatures pragmas automatically on!
diff --git a/gemfeed/2022-06-15-sweating-the-small-stuff.gmi.tpl b/gemfeed/2022-06-15-sweating-the-small-stuff.gmi.tpl
index d95880a2..bfced2a8 100644
--- a/gemfeed/2022-06-15-sweating-the-small-stuff.gmi.tpl
+++ b/gemfeed/2022-06-15-sweating-the-small-stuff.gmi.tpl
@@ -129,7 +129,7 @@ Pos | System | Kernel | Uptime |
20 | mars | Linux 3.2.0-4-amd64 | 190d 05:44:21 |
```
-=> https://codeberg.org/snonux/guprecords
+=> https://codeberg.org/snonux/guprecords
This all is of no real practical use but fun!
diff --git a/gemfeed/2022-12-24-ultrarelearning-java-my-takeaways.gmi.tpl b/gemfeed/2022-12-24-ultrarelearning-java-my-takeaways.gmi.tpl
index 8c23cfb5..36ca9bd7 100644
--- a/gemfeed/2022-12-24-ultrarelearning-java-my-takeaways.gmi.tpl
+++ b/gemfeed/2022-12-24-ultrarelearning-java-my-takeaways.gmi.tpl
@@ -55,7 +55,7 @@ Another great way to get the hang of Java again was to sneak into the code revie
### Took ownership of a roadmap-Java project
-Besides my Pet Project, I also took ownership of a regular roadmap Java project at work, making an internal Java service capable of running in Kubernetes. This was a bunch of minor changes and adding a bunch of classes and unit tests dealing with the statelessness and a persistent job queue in Redis. The job also involved reading and understanding a lot of already existing Java code. It wasn't part of my job description, but it was fun, and I learned a lot. The service runs smoothly in production now. Of course, all of my code got reviewed by my Software Engineering colleagues.
+Besides my Pet Project, I also took ownership of a regular roadmap Java project at work, making an internal Java service capable of running in Kubernetes. This was a bunch of minor changes and adding a bunch of classes and unit tests dealing with the statelessness and a persistent job queue in Redis. The job also involved reading and understanding a lot of already existing Java code. It wasn't part of my job description, but it was fun, and I learned a lot. The service runs smoothly in production now. Of course, all of my code got reviewed by my Software Engineering colleagues.
## The good
diff --git a/gemfeed/2023-01-23-why-grapheneos-rox.gmi.tpl b/gemfeed/2023-01-23-why-grapheneos-rox.gmi.tpl
index e266d22e..c28a124b 100644
--- a/gemfeed/2023-01-23-why-grapheneos-rox.gmi.tpl
+++ b/gemfeed/2023-01-23-why-grapheneos-rox.gmi.tpl
@@ -124,7 +124,7 @@ A pure Linux phone, e.g. with Ubuntu Touch installed, e.g. on a PinePhone, Fairp
=> https://ubuntu-touch.io/ Ubuntu Touch
=> https://en.wikipedia.org/wiki/Linux_for_mobile_devices More Linux distributions for mobile devices
-But here, Google Play would not be sandboxed; you could not configure individual network permissions and storage scopes like in GrapheneOS. Pure Linux-compatible phones usually come with a crappy camera, and the battery life is generally pretty bad (only a few hours). Also, no big tech company pushes the development of Linux phones. Everything relies on hobbyists, whereas multiple big tech companies put a lot of effort into the Android project, and a lot of code also goes into the Android Open-Source project.
+But here, Google Play would not be sandboxed; you could not configure individual network permissions and storage scopes like in GrapheneOS. Pure Linux-compatible phones usually come with a crappy camera, and the battery life is generally pretty bad (only a few hours). Also, no big tech company pushes the development of Linux phones. Everything relies on hobbyists, whereas multiple big tech companies put a lot of effort into the Android project, and a lot of code also goes into the Android Open-Source project.
Currently, pure Linux phones are only a nice toy to tinker with but are still not ready (will they ever?) to be the daily driver. SailfishOS may be an exception; I played around with it in the past. It is pretty usable, but it's not an option for me as it is partial a proprietary operating system.
diff --git a/gemfeed/2023-02-26-how-to-shut-down-after-work.gmi.tpl b/gemfeed/2023-02-26-how-to-shut-down-after-work.gmi.tpl
index dbbb82f5..2e1e2aff 100644
--- a/gemfeed/2023-02-26-how-to-shut-down-after-work.gmi.tpl
+++ b/gemfeed/2023-02-26-how-to-shut-down-after-work.gmi.tpl
@@ -51,7 +51,7 @@ Often, your mind goes back to work-related stuff even after work. That's normal
* Think of or work on that fun passion project. I currently, for example, like to learn and code a bit in Rakulang.
* Read. Nothing beats reading a good Science Fiction Novel (or whatever you prefer) before falling asleep.
-Some of these can be habit-stacked: Exercise could be combined with watching videos about your passion project (e.g. watching lectures about that new programming language you are currently learning for fun). With walking, for example, you could combine listening to an Audiobook or music, or you could also think about your passion project during that walk.
+Some of these can be habit-stacked: Exercise could be combined with watching videos about your passion project (e.g. watching lectures about that new programming language you are currently learning for fun). With walking, for example, you could combine listening to an Audiobook or music, or you could also think about your passion project during that walk.
## Get a pet
diff --git a/gemfeed/2023-03-16-the-pragmatic-programmer-book-notes.gmi.tpl b/gemfeed/2023-03-16-the-pragmatic-programmer-book-notes.gmi.tpl
index c9dcf7bb..1a2f2f94 100644
--- a/gemfeed/2023-03-16-the-pragmatic-programmer-book-notes.gmi.tpl
+++ b/gemfeed/2023-03-16-the-pragmatic-programmer-book-notes.gmi.tpl
@@ -72,7 +72,7 @@ It's your life. Share it, celebrate it, be proud and have fun.
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."
+> 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.
diff --git a/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.gmi.tpl b/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.gmi.tpl
index 00639a96..396ea9d9 100644
--- a/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.gmi.tpl
+++ b/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.gmi.tpl
@@ -119,7 +119,7 @@ An example blog post without any publishing date looks like this:
The remaining content of the Gemtext file...
```
-Gemtexter will add a line starting with `> Published at ...` now. Any subsequent Atom feed generation will then use that date.
+Gemtexter will add a line starting with `> Published at ...` now. Any subsequent Atom feed generation will then use that date.
```sh
% cat gemfeed/2023-02-26-title-here.gmi
diff --git a/gemfeed/2023-07-17-career-guide-and-soft-skills-book-notes.gmi.tpl b/gemfeed/2023-07-17-career-guide-and-soft-skills-book-notes.gmi.tpl
index dc4b22c9..0319e80c 100644
--- a/gemfeed/2023-07-17-career-guide-and-soft-skills-book-notes.gmi.tpl
+++ b/gemfeed/2023-07-17-career-guide-and-soft-skills-book-notes.gmi.tpl
@@ -133,7 +133,7 @@ Use your most productive hours to work on you. Make that your priority. Take car
* Friendships and positive thinking help to have and maintain better health, longer Life, better productivity and increased happiness.
* Positive thinking can be trained and be a habit. Read the book "The Power of Positive Thinking".
-* Stoicism helps. Meditation helps. Playing for fun helps too.
+* Stoicism helps. Meditation helps. Playing for fun helps too.
Become the person you want to become (your self image). Program your brain unconsciously. Don't become the person other people want you to be. Embrace yourself, you are you.
diff --git a/gemfeed/2024-01-13-one-reason-why-i-love-openbsd.gmi.tpl b/gemfeed/2024-01-13-one-reason-why-i-love-openbsd.gmi.tpl
index 6908d132..970da21f 100644
--- a/gemfeed/2024-01-13-one-reason-why-i-love-openbsd.gmi.tpl
+++ b/gemfeed/2024-01-13-one-reason-why-i-love-openbsd.gmi.tpl
@@ -43,7 +43,7 @@ I followed the same procedure the previous times and never encountered any diffi
I have seen upgrades of other Operating Systems either take a long time or break the system (which takes manual steps to repair). That's just one of many reasons why I love OpenBSD! There appear never to be any problems. It just gets its job done!
-=> https://www.openbsd.org The OpenBSD Project
+=> https://www.openbsd.org The OpenBSD Project
BTW: are you looking for an opinionated OpenBSD VM hoster? OpenBSD Amsterdam may be for you. They rock (I am having a VM there, too)!
diff --git a/gemfeed/2024-06-23-terminal-multiplexing-with-tmux.gmi.tpl b/gemfeed/2024-06-23-terminal-multiplexing-with-tmux.gmi.tpl
index bd109308..a50f5d8b 100644
--- a/gemfeed/2024-06-23-terminal-multiplexing-with-tmux.gmi.tpl
+++ b/gemfeed/2024-06-23-terminal-multiplexing-with-tmux.gmi.tpl
@@ -39,7 +39,7 @@ I can also recommend this book (this is the book I got started with with Tmux):
=> https://pragprog.com/titles/bhtmux2/tmux-2/
-Over the years, I have bu