diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-01 17:45:53 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-01 17:45:53 +0200 |
| commit | 131452a0f1f035f2565c5722a83e978f2cc597c7 (patch) | |
| tree | 53f78fc6279184a66e8756f2802243e3e5f28145 /gemfeed | |
| parent | 1db8546d34bbefa89e4c64a0d76401a9d35377c9 (diff) | |
Update content for gemtext
Diffstat (limited to 'gemfeed')
43 files changed, 308 insertions, 305 deletions
diff --git a/gemfeed/2010-05-09-the-fype-programming-language.gmi b/gemfeed/2010-05-09-the-fype-programming-language.gmi index b77d49fa..a35946b3 100644 --- a/gemfeed/2010-05-09-the-fype-programming-language.gmi +++ b/gemfeed/2010-05-09-the-fype-programming-language.gmi @@ -301,7 +301,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 b/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.gmi index 9328b1bf..968bcdb5 100644 --- a/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.gmi +++ b/gemfeed/2015-12-05-run-debian-on-your-phone-with-debroid.gmi @@ -182,7 +182,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/2021-05-16-personal-bash-coding-style-guide.gmi b/gemfeed/2021-05-16-personal-bash-coding-style-guide.gmi index 5a8ba36c..23abda96 100644 --- a/gemfeed/2021-05-16-personal-bash-coding-style-guide.gmi +++ b/gemfeed/2021-05-16-personal-bash-coding-style-guide.gmi @@ -403,7 +403,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 b/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.gmi index 9548204d..089a6730 100644 --- a/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.gmi +++ b/gemfeed/2021-06-05-gemtexter-one-bash-script-to-rule-it-all.gmi @@ -122,7 +122,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 b/gemfeed/2021-08-01-on-being-pedantic-about-open-source.gmi index 17a91104..85e7d7fd 100644 --- a/gemfeed/2021-08-01-on-being-pedantic-about-open-source.gmi +++ b/gemfeed/2021-08-01-on-being-pedantic-about-open-source.gmi @@ -38,7 +38,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 b/gemfeed/2021-09-12-keep-it-simple-and-stupid.gmi index 0796ddfc..c454562a 100644 --- a/gemfeed/2021-09-12-keep-it-simple-and-stupid.gmi +++ b/gemfeed/2021-09-12-keep-it-simple-and-stupid.gmi @@ -50,7 +50,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 @@ -92,7 +92,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 b/gemfeed/2021-10-22-defensive-devops.gmi index 4d62d188..21ac68a9 100644 --- a/gemfeed/2021-10-22-defensive-devops.gmi +++ b/gemfeed/2021-10-22-defensive-devops.gmi @@ -79,7 +79,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 b/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.gmi index 1d0c298c..3580ae80 100644 --- a/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.gmi +++ b/gemfeed/2021-12-26-how-to-stay-sane-as-a-devops-person.gmi @@ -64,7 +64,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 b/gemfeed/2022-01-01-bash-golf-part-2.gmi index d5c3a91d..9ae2910e 100644 --- a/gemfeed/2022-01-01-bash-golf-part-2.gmi +++ b/gemfeed/2022-01-01-bash-golf-part-2.gmi @@ -347,7 +347,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 b/gemfeed/2022-05-27-perl-is-still-a-great-choice.gmi index 0092dcdb..700fd5a3 100644 --- a/gemfeed/2022-05-27-perl-is-still-a-great-choice.gmi +++ b/gemfeed/2022-05-27-perl-is-still-a-great-choice.gmi @@ -79,7 +79,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 b/gemfeed/2022-06-15-sweating-the-small-stuff.gmi index e2c22c0b..01bb0c5a 100644 --- a/gemfeed/2022-06-15-sweating-the-small-stuff.gmi +++ b/gemfeed/2022-06-15-sweating-the-small-stuff.gmi @@ -152,7 +152,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 b/gemfeed/2022-12-24-ultrarelearning-java-my-takeaways.gmi index 8c58d5de..f413a55d 100644 --- a/gemfeed/2022-12-24-ultrarelearning-java-my-takeaways.gmi +++ b/gemfeed/2022-12-24-ultrarelearning-java-my-takeaways.gmi @@ -68,7 +68,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 b/gemfeed/2023-01-23-why-grapheneos-rox.gmi index 3f869b65..400fbf80 100644 --- a/gemfeed/2023-01-23-why-grapheneos-rox.gmi +++ b/gemfeed/2023-01-23-why-grapheneos-rox.gmi @@ -134,7 +134,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 b/gemfeed/2023-02-26-how-to-shut-down-after-work.gmi index fa8ea4c6..a6b3d873 100644 --- a/gemfeed/2023-02-26-how-to-shut-down-after-work.gmi +++ b/gemfeed/2023-02-26-how-to-shut-down-after-work.gmi @@ -60,7 +60,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 b/gemfeed/2023-03-16-the-pragmatic-programmer-book-notes.gmi index 229e440a..09a97fcb 100644 --- a/gemfeed/2023-03-16-the-pragmatic-programmer-book-notes.gmi +++ b/gemfeed/2023-03-16-the-pragmatic-programmer-book-notes.gmi @@ -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. @@ -80,16 +80,16 @@ E-Mail your comments to `paul@nospam.buetow.org` :-) Other book notes of mine are: -=> ./2025-11-02-the-courage-to-be-disliked-book-notes.gmi 2025-11-02 "The Courage To Be Disliked" book notes -=> ./2025-06-07-a-monks-guide-to-happiness-book-notes.gmi 2025-06-07 "A Monk's Guide to Happiness" book notes -=> ./2025-04-19-when-book-notes.gmi 2025-04-19 "When: The Scientific Secrets of Perfect Timing" book notes -=> ./2024-10-24-staff-engineer-book-notes.gmi 2024-10-24 "Staff Engineer" book notes -=> ./2024-07-07-the-stoic-challenge-book-notes.gmi 2024-07-07 "The Stoic Challenge" book notes -=> ./2024-05-01-slow-productivity-book-notes.gmi 2024-05-01 "Slow Productivity" book notes -=> ./2023-11-11-mind-management-book-notes.gmi 2023-11-11 "Mind Management" book notes -=> ./2023-07-17-career-guide-and-soft-skills-book-notes.gmi 2023-07-17 "Software Developers Career Guide and Soft Skills" book notes -=> ./2023-05-06-the-obstacle-is-the-way-book-notes.gmi 2023-05-06 "The Obstacle is the Way" book notes -=> ./2023-04-01-never-split-the-difference-book-notes.gmi 2023-04-01 "Never split the difference" book notes -=> ./2023-03-16-the-pragmatic-programmer-book-notes.gmi 2023-03-16 "The Pragmatic Programmer" book notes (You are currently reading this) +=> ./2025-11-02-the-courage-to-be-disliked-book-notes.gmi 2025-11-02 'The Courage To Be Disliked' book notes +=> ./2025-06-07-a-monks-guide-to-happiness-book-notes.gmi 2025-06-07 'A Monk's Guide to Happiness' book notes +=> ./2025-04-19-when-book-notes.gmi 2025-04-19 'When: The Scientific Secrets of Perfect Timing' book notes +=> ./2024-10-24-staff-engineer-book-notes.gmi 2024-10-24 'Staff Engineer' book notes +=> ./2024-07-07-the-stoic-challenge-book-notes.gmi 2024-07-07 'The Stoic Challenge' book notes +=> ./2024-05-01-slow-productivity-book-notes.gmi 2024-05-01 'Slow Productivity' book notes +=> ./2023-11-11-mind-management-book-notes.gmi 2023-11-11 'Mind Management' book notes +=> ./2023-07-17-career-guide-and-soft-skills-book-notes.gmi 2023-07-17 'Software Developers Career Guide and Soft Skills' book notes +=> ./2023-05-06-the-obstacle-is-the-way-book-notes.gmi 2023-05-06 'The Obstacle is the Way' book notes +=> ./2023-04-01-never-split-the-difference-book-notes.gmi 2023-04-01 'Never split the difference' book notes +=> ./2023-03-16-the-pragmatic-programmer-book-notes.gmi 2023-03-16 'The Pragmatic Programmer' book notes (You are currently reading this) => ../ Back to the main site diff --git a/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.gmi b/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.gmi index d20afb13..2a15ba2d 100644 --- a/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.gmi +++ b/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.gmi @@ -127,7 +127,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-04-01-never-split-the-difference-book-notes.gmi b/gemfeed/2023-04-01-never-split-the-difference-book-notes.gmi index a98d1cfb..15a8bb65 100644 --- a/gemfeed/2023-04-01-never-split-the-difference-book-notes.gmi +++ b/gemfeed/2023-04-01-never-split-the-difference-book-notes.gmi @@ -139,16 +139,16 @@ E-Mail your comments to `paul@nospam.buetow.org` :-) Other book notes of mine are: -=> ./2025-11-02-the-courage-to-be-disliked-book-notes.gmi 2025-11-02 "The Courage To Be Disliked" book notes -=> ./2025-06-07-a-monks-guide-to-happiness-book-notes.gmi 2025-06-07 "A Monk's Guide to Happiness" book notes -=> ./2025-04-19-when-book-notes.gmi 2025-04-19 "When: The Scientific Secrets of Perfect Timing" book notes -=> ./2024-10-24-staff-engineer-book-notes.gmi 2024-10-24 "Staff Engineer" book notes -=> ./2024-07-07-the-stoic-challenge-book-notes.gmi 2024-07-07 "The Stoic Challenge" book notes -=> ./2024-05-01-slow-productivity-book-notes.gmi 2024-05-01 "Slow Productivity" book notes -=> ./2023-11-11-mind-management-book-notes.gmi 2023-11-11 "Mind Management" book notes -=> ./2023-07-17-career-guide-and-soft-skills-book-notes.gmi 2023-07-17 "Software Developers Career Guide and Soft Skills" book notes -=> ./2023-05-06-the-obstacle-is-the-way-book-notes.gmi 2023-05-06 "The Obstacle is the Way" book notes -=> ./2023-04-01-never-split-the-difference-book-notes.gmi 2023-04-01 "Never split the difference" book notes (You are currently reading this) -=> ./2023-03-16-the-pragmatic-programmer-book-notes.gmi 2023-03-16 "The Pragmatic Programmer" book notes +=> ./2025-11-02-the-courage-to-be-disliked-book-notes.gmi 2025-11-02 'The Courage To Be Disliked' book notes +=> ./2025-06-07-a-monks-guide-to-happiness-book-notes.gmi 2025-06-07 'A Monk's Guide to Happiness' book notes +=> ./2025-04-19-when-book-notes.gmi 2025-04-19 'When: The Scientific Secrets of Perfect Timing' book notes +=> ./2024-10-24-staff-engineer-book-notes.gmi 2024-10-24 'Staff Engineer' book notes +=> ./2024-07-07-the-stoic-challenge-book-notes.gmi 2024-07-07 'The Stoic Challenge' book notes +=> ./2024-05-01-slow-productivity-book-notes.gmi 2024-05-01 'Slow Productivity' book notes +=> ./2023-11-11-mind-management-book-notes.gmi 2023-11-11 'Mind Management' book notes +=> ./2023-07-17-career-guide-and-soft-skills-book-notes.gmi 2023-07-17 'Software Developers Career Guide and Soft Skills' book notes +=> ./2023-05-06-the-obstacle-is-the-way-book-notes.gmi 2023-05-06 'The Obstacle is the Way' book notes +=> ./2023-04-01-never-split-the-difference-book-notes.gmi 2023-04-01 'Never split the difference' book notes (You are currently reading this) +=> ./2023-03-16-the-pragmatic-programmer-book-notes.gmi 2023-03-16 'The Pragmatic Programmer' book notes => ../ Back to the main site diff --git a/gemfeed/2023-05-06-the-obstacle-is-the-way-book-notes.gmi b/gemfeed/2023-05-06-the-obstacle-is-the-way-book-notes.gmi index 397d5a0c..1a6ebedf 100644 --- a/gemfeed/2023-05-06-the-obstacle-is-the-way-book-notes.gmi +++ b/gemfeed/2023-05-06-the-obstacle-is-the-way-book-notes.gmi @@ -100,16 +100,16 @@ E-Mail your comments to `paul@nospam.buetow.org` :-) Other book notes of mine are: -=> ./2025-11-02-the-courage-to-be-disliked-book-notes.gmi 2025-11-02 "The Courage To Be Disliked" book notes -=> ./2025-06-07-a-monks-guide-to-happiness-book-notes.gmi 2025-06-07 "A Monk's Guide to Happiness" book notes -=> ./2025-04-19-when-book-notes.gmi 2025-04-19 "When: The Scientific Secrets of Perfect Timing" book notes -=> ./2024-10-24-staff-engineer-book-notes.gmi 2024-10-24 "Staff Engineer" book notes -=> ./2024-07-07-the-stoic-challenge-book-notes.gmi 2024-07-07 "The Stoic Challenge" book notes -=> ./2024-05-01-slow-productivity-book-notes.gmi 2024-05-01 "Slow Productivity" book notes -=> ./2023-11-11-mind-management-book-notes.gmi 2023-11-11 "Mind Management" book notes -=> ./2023-07-17-career-guide-and-soft-skills-book-notes.gmi 2023-07-17 "Software Developers Career Guide and Soft Skills" book notes -=> ./2023-05-06-the-obstacle-is-the-way-book-notes.gmi 2023-05-06 "The Obstacle is the Way" book notes (You are currently reading this) -=> ./2023-04-01-never-split-the-difference-book-notes.gmi 2023-04-01 "Never split the difference" book notes -=> ./2023-03-16-the-pragmatic-programmer-book-notes.gmi 2023-03-16 "The Pragmatic Programmer" book notes +=> ./2025-11-02-the-courage-to-be-disliked-book-notes.gmi 2025-11-02 'The Courage To Be Disliked' book notes +=> ./2025-06-07-a-monks-guide-to-happiness-book-notes.gmi 2025-06-07 'A Monk's Guide to Happiness' book notes +=> ./2025-04-19-when-book-notes.gmi 2025-04-19 'When: The Scientific Secrets of Perfect Timing' book notes +=> ./2024-10-24-staff-engineer-book-notes.gmi 2024-10-24 'Staff Engineer' book notes +=> ./2024-07-07-the-stoic-challenge-book-notes.gmi 2024-07-07 'The Stoic Challenge' book notes +=> ./2024-05-01-slow-productivity-book-notes.gmi 2024-05-01 'Slow Productivity' book notes +=> ./2023-11-11-mind-management-book-notes.gmi 2023-11-11 'Mind Management' book notes +=> ./2023-07-17-career-guide-and-soft-skills-book-notes.gmi 2023-07-17 'Software Developers Career Guide and Soft Skills' book notes +=> ./2023-05-06-the-obstacle-is-the-way-book-notes.gmi 2023-05-06 'The Obstacle is the Way' book notes (You are currently reading this) +=> ./2023-04-01-never-split-the-difference-book-notes.gmi 2023-04-01 'Never split the difference' book notes +=> ./2023-03-16-the-pragmatic-programmer-book-notes.gmi 2023-03-16 'The Pragmatic Programmer' book notes => ../ Back to the main site diff --git a/gemfeed/2023-07-17-career-guide-and-soft-skills-book-notes.gmi b/gemfeed/2023-07-17-career-guide-and-soft-skills-book-notes.gmi index 30246e89..bc53f3a5 100644 --- a/gemfeed/2023-07-17-career-guide-and-soft-skills-book-notes.gmi +++ b/gemfeed/2023-07-17-career-guide-and-soft-skills-book-notes.gmi @@ -163,7 +163,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. @@ -308,16 +308,16 @@ E-Mail your comments to `paul@nospam.buetow.org` :-) Other book notes of mine are: -=> ./2025-11-02-the-courage-to-be-disliked-book-notes.gmi 2025-11-02 "The Courage To Be Disliked" book notes -=> ./2025-06-07-a-monks-guide-to-happiness-book-notes.gmi 2025-06-07 "A Monk's Guide to Happiness" book notes -=> ./2025-04-19-when-book-notes.gmi 2025-04-19 "When: The Scientific Secrets of Perfect Timing" book notes -=> ./2024-10-24-staff-engineer-book-notes.gmi 2024-10-24 "Staff Engineer" book notes -=> ./2024-07-07-the-stoic-challenge-book-notes.gmi 2024-07-07 "The Stoic Challenge" book notes -=> ./2024-05-01-slow-productivity-book-notes.gmi 2024-05-01 "Slow Productivity" book notes -=> ./2023-11-11-mind-management-book-notes.gmi 2023-11-11 "Mind Management" book notes -=> ./2023-07-17-career-guide-and-soft-skills-book-notes.gmi 2023-07-17 "Software Developers Career Guide and Soft Skills" book notes (You are currently reading this) -=> ./2023-05-06-the-obstacle-is-the-way-book-notes.gmi 2023-05-06 "The Obstacle is the Way" book notes -=> ./2023-04-01-never-split-the-difference-book-notes.gmi 2023-04-01 "Never split the difference" book notes -=> ./2023-03-16-the-pragmatic-programmer-book-notes.gmi 2023-03-16 "The Pragmatic Programmer" book notes +=> ./2025-11-02-the-courage-to-be-disliked-book-notes.gmi 2025-11-02 'The Courage To Be Disliked' book notes +=> ./2025-06-07-a-monks-guide-to-happiness-book-notes.gmi 2025-06-07 'A Monk's Guide to Happiness' book notes +=> ./2025-04-19-when-book-notes.gmi 2025-04-19 'When: The Scientific Secrets of Perfect Timing' book notes +=> ./2024-10-24-staff-engineer-book-notes.gmi 2024-10-24 'Staff Engineer' book notes +=> ./2024-07-07-the-stoic-challenge-book-notes.gmi 2024-07-07 'The Stoic Challenge' book notes +=> ./2024-05-01-slow-productivity-book-notes.gmi 2024-05-01 'Slow Productivity' book notes +=> ./2023-11-11-mind-management-book-notes.gmi 2023-11-11 'Mind Management' book notes +=> ./2023-07-17-career-guide-and-soft-skills-book-notes.gmi 2023-07-17 'Software Developers Career Guide and Soft Skills' book notes (You are currently reading this) +=> ./2023-05-06-the-obstacle-is-the-way-book-notes.gmi 2023-05-06 'The Obstacle is the Way' book notes +=> ./2023-04-01-never-split-the-difference-book-notes.gmi 2023-04-01 'Never split the difference' book notes +=> ./2023-03-16-the-pragmatic-programmer-book-notes.gmi 2023-03-16 'The Pragmatic Programmer' book notes => ../ Back to the main site diff --git a/gemfeed/2023-11-11-mind-management-book-notes.gmi b/gemfeed/2023-11-11-mind-management-book-notes.gmi index e1cdc8c8..012501a2 100644 --- a/gemfeed/2023-11-11-mind-management-book-notes.gmi +++ b/gemfeed/2023-11-11-mind-management-book-notes.gmi @@ -110,16 +110,16 @@ E-Mail your comments to `paul@nospam.buetow.org` :-) Other book notes of mine are: -=> ./2025-11-02-the-courage-to-be-disliked-book-notes.gmi 2025-11-02 "The Courage To Be Disliked" book notes -=> ./2025-06-07-a-monks-guide-to-happiness-book-notes.gmi 2025-06-07 "A Monk's Guide to Happiness" book notes -=> ./2025-04-19-when-book-notes.gmi 2025-04-19 "When: The Scientific Secrets of Perfect Timing" book notes -=> ./2024-10-24-staff-engineer-book-notes.gmi 2024-10-24 "Staff Engineer" book notes -=> ./2024-07-07-the-stoic-challenge-book-notes.gmi 2024-07-07 "The Stoic Challenge" book notes -=> ./2024-05-01-slow-productivity-book-notes.gmi 2024-05-01 "Slow Productivity" book notes -=> ./2023-11-11-mind-management-book-notes.gmi 2023-11-11 "Mind Management" book notes (You are currently reading this) -=> ./2023-07-17-career-guide-and-soft-skills-book-notes.gmi 2023-07-17 "Software Developers Career Guide and Soft Skills" book notes -=> ./2023-05-06-the-obstacle-is-the-way-book-notes.gmi 2023-05-06 "The Obstacle is the Way" book notes -=> ./2023-04-01-never-split-the-difference-book-notes.gmi 2023-04-01 "Never split the difference" book notes -=> ./2023-03-16-the-pragmatic-programmer-book-notes.gmi 2023-03-16 "The Pragmatic Programmer" book notes +=> ./2025-11-02-the-courage-to-be-disliked-book-notes.gmi 2025-11-02 'The Courage To Be Disliked' book notes +=> ./2025-06-07-a-monks-guide-to-happiness-book-notes.gmi 2025-06-07 'A Monk's Guide to Happiness' book notes +=> ./2025-04-19-when-book-notes.gmi 2025-04-19 'When: The Scientific Secrets of Perfect Timing' book notes +=> ./2024-10-24-staff-engineer-book-notes.gmi 2024-10-24 'Staff Engineer' book notes +=> ./2024-07-07-the-stoic-challenge-book-notes.gmi 2024-07-07 'The Stoic Challenge' book notes +=> ./2024-05-01-slow-productivity-book-notes.gmi 2024-05-01 'Slow Productivity' book notes +=> ./2023-11-11-mind-management-book-notes.gmi 2023-11-11 'Mind Management' book notes (You are currently reading this) +=> ./2023-07-17-career-guide-and-soft-skills-book-notes.gmi 2023-07-17 'Software Developers Career Guide and Soft Skills' book notes +=> ./2023-05-06-the-obstacle-is-the-way-book-notes.gmi 2023-05-06 'The Obstacle is the Way' book notes +=> ./2023-04-01-never-split-the-difference-book-notes.gmi 2023-04-01 'Never split the difference' book notes +=> ./2023-03-16-the-pragmatic-programmer-book-notes.gmi 2023-03-16 'The Pragmatic Programmer' book notes => ../ Back to the main site diff --git a/gemfeed/2024-01-13-one-reason-why-i-love-openbsd.gmi b/gemfeed/2024-01-13-one-reason-why-i-love-openbsd.gmi index 889d1428..4dceb52c 100644 --- a/gemfeed/2024-01-13-one-reason-why-i-love-openbsd.gmi +++ b/gemfeed/2024-01-13-one-reason-why-i-love-openbsd.gmi @@ -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-05-01-slow-productivity-book-notes.gmi b/gemfeed/2024-05-01-slow-productivity-book-notes.gmi index f837786e..f1e2c61c 100644 --- a/gemfeed/2024-05-01-slow-productivity-book-notes.gmi +++ b/gemfeed/2024-05-01-slow-productivity-book-notes.gmi @@ -138,16 +138,16 @@ E-Mail your comments to `paul@nospam.buetow.org` :-) Other book notes of mine are: -=> ./2025-11-02-the-courage-to-be-disliked-book-notes.gmi 2025-11-02 "The Courage To Be Disliked" book notes -=> ./2025-06-07-a-monks-guide-to-happiness-book-notes.gmi 2025-06-07 "A Monk's Guide to Happiness" book notes -=> ./2025-04-19-when-book-notes.gmi 2025-04-19 "When: The Scientific Secrets of Perfect Timing" book notes -=> ./2024-10-24-staff-engineer-book-notes.gmi 2024-10-24 "Staff Engineer" book notes -=> ./2024-07-07-the-stoic-challenge-book-notes.gmi 2024-07-07 "The Stoic Challenge" book notes -=> ./2024-05-01-slow-productivity-book-notes.gmi 2024-05-01 "Slow Productivity" book notes (You are currently reading this) -=> ./2023-11-11-mind-management-book-notes.gmi 2023-11-11 "Mind Management" book notes -=> ./2023-07-17-career-guide-and-soft-skills-book-notes.gmi 2023-07-17 "Software Developers Career Guide and Soft Skills" book notes -=> ./2023-05-06-the-obstacle-is-the-way-book-notes.gmi 2023-05-06 "The Obstacle is the Way" book notes -=> ./2023-04-01-never-split-the-difference-book-notes.gmi 2023-04-01 "Never split the difference" book notes -=> ./2023-03-16-the-pragmatic-programmer-book-notes.gmi 2023-03-16 "The Pragmatic Programmer" book notes +=> ./2025-11-02-the-courage-to-be-disliked-book-notes.gmi 2025-11-02 'The Courage To Be Disliked' book notes +=> ./2025-06-07-a-monks-guide-to-happiness-book-notes.gmi 2025-06-07 'A Monk's Guide to Happiness' book notes +=> ./2025-04-19-when-book-notes.gmi 2025-04-19 'When: The Scientific Secrets of Perfect Timing' book notes +=> ./2024-10-24-staff-engineer-book-notes.gmi 2024-10-24 'Staff Engineer' book notes +=> ./2024-07-07-the-stoic-challenge-book-notes.gmi 2024-07-07 'The Stoic Challenge' book notes +=> ./2024-05-01-slow-productivity-book-notes.gmi 2024-05-01 'Slow Productivity' book notes (You are currently reading this) +=> ./2023-11-11-mind-management-book-notes.gmi 2023-11-11 'Mind Management' book notes +=> ./2023-07-17-career-guide-and-soft-skills-book-notes.gmi 2023-07-17 'Software Developers Career Guide and Soft Skills' book notes +=> ./2023-05-06-the-obstacle-is-the-way-book-notes.gmi 2023-05-06 'The Obstacle is the Way' book notes +=> ./2023-04-01-never-split-the-difference-book-notes.gmi 2023-04-01 'Never split the difference' book notes +=> ./2023-03-16-the-pragmatic-programmer-book-notes.gmi 2023-03-16 'The Pragmatic Programmer' book notes => ../ Back to the main site diff --git a/gemfeed/2024-06-23-terminal-multiplexing-with-tmux.gmi b/gemfeed/2024-06-23-terminal-multiplexing-with-tmux.gmi index 62391ab2..2683b212 100644 --- a/gemfeed/2024-06-23-terminal-multiplexing-with-tmux.gmi +++ b/gemfeed/2024-06-23-terminal-multiplexing-with-tmux.gmi @@ -57,7 +57,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 built a couple of shell helper functions to optimize my workflows. Tmux is extensively integrated into my daily workflows (personal and work). I had colleagues asking me about my Tmux config and helper scripts for Tmux several times. It would be neat to blog about it so that everyone interested in it can make a copy of my configuration and scripts. +Over the years, I have built a couple of shell helper functions to optimize my workflows. Tmux is extensively integrated into my daily workflows (personal and work). I had colleagues asking me about my Tmux config and helper scripts for Tmux several times. It would be neat to blog about it so that everyone interested in it can make a copy of my configuration and scripts. The configuration and scripts in this blog post are only the non-work-specific parts. There are more helper scripts, which I only use for work (and aren't really useful outside of work due to the way servers and clusters are structured there). @@ -209,7 +209,7 @@ Before I used Tmux, I was a heavy user of ClusterSSH, which allowed me to log in However, since I started using Tmux, I retired ClusterSSH, as it came with the benefit that Tmux only needs to be run in the terminal, whereas ClusterSSH spawned terminal windows, which aren't easily portable (e.g., from a Linux desktop to macOS). The `tmux::cluster_ssh` function can have N arguments, where: * ...the first argument will be the session name (see `tmux::tssh_from_argument` helper function), and all remaining arguments will be server hostnames/FQDNs to connect to simultaneously. -* ...or, the first argument is a file name, and the file contains a list of hostnames/FQDNs (see `tmux::ssh_from_file` helper function) +* ...or, the first argument is a file name, and the file contains a list of hostnames/FQDNs (see `tmux::ssh_from_file` helper function) This is the function definition behind the `tssh` alias: @@ -306,7 +306,7 @@ I often search the history backwards with `prefix-key [` followed by a `?`, whic Once I have identified the terminal text to be copied, I enter visual select mode with `v`, highlight all the text to be copied (using arrow keys or Vi motions), and press `y` to yank it (sorry if this all sounds a bit complicated, but Vim/NeoVim users will know this, as it is pretty much how you do it there as well). -For `v` and `y` to work, the following has to be added to the Tmux configuration file: +For `v` and `y` to work, the following has to be added to the Tmux configuration file: ``` bind-key -T copy-mode-vi 'v' send -X begin-selection diff --git a/gemfeed/2024-07-05-random-weird-things.gmi b/gemfeed/2024-07-05-random-weird-things.gmi index 29f03ed2..c0a4d4a5 100644 --- a/gemfeed/2024-07-05-random-weird-things.gmi +++ b/gemfeed/2024-07-05-random-weird-things.gmi @@ -97,7 +97,7 @@ Fancy watching Star Wars Episode IV in ASCII? Head to the ASCII cinema: Netflix has got the Hello World application run in production 😱 -* https://www.Netflix.com/helloworld +* https://www.Netflix.com/helloworld > By the time this is posted, it seems that Netflix has taken it offline... I should have created a screenshot! diff --git a/gemfeed/2024-07-07-the-stoic-challenge-book-notes.gmi b/gemfeed/2024-07-07-the-stoic-challenge-book-notes.gmi index 5aa85b01..98a9796f 100644 --- a/gemfeed/2024-07-07-the-stoic-challenge-book-notes.gmi +++ b/gemfeed/2024-07-07-the-stoic-challenge-book-notes.gmi @@ -2,7 +2,7 @@ > Published at 2024-07-07T12:46:55+03:00 -These are my personal takeaways after reading "The Stoic Challenge: A Philosopher's Guide to Becoming Tougher, Calmer, and More Resilient" by William B. Irvine. +These are my personal takeaways after reading "The Stoic Challenge: A Philosopher's Guide to Becoming Tougher, Calmer, and More Resilient" by William B. Irvine. ``` ,.......... .........., @@ -57,16 +57,16 @@ E-Mail your comments to `paul@nospam.buetow.org` :-) Other book notes of mine are: -=> ./2025-11-02-the-courage-to-be-disliked-book-notes.gmi 2025-11-02 "The Courage To Be Disliked" book notes -=> ./2025-06-07-a-monks-guide-to-happiness-book-notes.gmi 2025-06-07 "A Monk's Guide to Happiness" book notes -=> ./2025-04-19-when-book-notes.gmi 2025-04-19 "When: The Scientific Secrets of Perfect Timing" book notes -=> ./2024-10-24-staff-engineer-book-notes.gmi 2024-10-24 "Staff Engineer" book notes -=> ./2024-07-07-the-stoic-challenge-book-notes.gmi 2024-07-07 "The Stoic Challenge" book notes (You are currently reading this) -=> ./2024-05-01-slow-productivity-book-notes.gmi 2024-05-01 "Slow Productivity" book notes -=> ./2023-11-11-mind-management-book-notes.gmi 2023-11-11 "Mind Management" book notes -=> ./2023-07-17-career-guide-and-soft-skills-book-notes.gmi 2023-07-17 "Software Developers Career Guide and Soft Skills" book notes -=> ./2023-05-06-the-obstacle-is-the-way-book-notes.gmi 2023-05-06 "The Obstacle is the Way" book notes -=> ./2023-04-01-never-split-the-difference-book-notes.gmi 2023-04-01 "Never split the difference" book notes -=> ./2023-03-16-the-pragmatic-programmer-book-notes.gmi 2023-03-16 "The Pragmatic Programmer" book notes +=> ./2025-11-02-the-courage-to-be-disliked-book-notes.gmi 2025-11-02 'The Courage To Be Disliked' book notes +=> ./2025-06-07-a-monks-guide-to-happiness-book-notes.gmi 2025-06-07 'A Monk's Guide to Happiness' book notes +=> ./2025-04-19-when-book-notes.gmi 2025-04-19 'When: The Scientific Secrets of Perfect Timing' book notes +=> ./2024-10-24-staff-engineer-book-notes.gmi 2024-10-24 'Staff Engineer' book notes +=> ./2024-07-07-the-stoic-challenge-book-notes.gmi 2024-07-07 'The Stoic Challenge' book notes (You are currently reading this) +=> ./2024-05-01-slow-productivity-book-notes.gmi 2024-05-01 'Slow Productivity' book notes +=> ./2023-11-11-mind-management-book-notes.gmi 2023-11-11 'Mind Management' book notes +=> ./2023-07-17-career-guide-and-soft-skills-book-notes.gmi 2023-07-17 'Software Developers Career Guide and Soft Skills' book notes +=> ./2023-05-06-the-obstacle-is-the-way-book-notes.gmi 2023-05-06 'The Obstacle is the Way' book notes +=> ./2023-04-01-never-split-the-difference-book-notes.gmi 2023-04-01 'Never split the difference' book notes +=> ./2023-03-16-the-pragmatic-programmer-book-notes.gmi 2023-03-16 'The Pragmatic Programmer' book notes => ../ Back to the main site diff --git a/gemfeed/2024-08-05-typing-127.1-words-per-minute.gmi b/gemfeed/2024-08-05-typing-127.1-words-per-minute.gmi index bb860da1..306394ae 100644 --- a/gemfeed/2024-08-05-typing-127.1-words-per-minute.gmi +++ b/gemfeed/2024-08-05-typing-127.1-words-per-minute.gmi @@ -193,7 +193,7 @@ You can't reach your average typing speed first ting the morning. It would help As mentioned, the Kinesis is a great keyboard, but it is not meant for travel. -I guess keyboards will always be my expensive hobby, so I also purchased another ergonomic, ortho-linear, concave split keyboard, the Glove80 (with the Red Pro low-profile switches). This keyboard is much lighter and, in my opinion, much better suited for travel than the Kinesis. It also comes with a great travel case. +I guess keyboards will always be my expensive hobby, so I also purchased another ergonomic, ortho-linear, concave split keyboard, the Glove80 (with the Red Pro low-profile switches). This keyboard is much lighter and, in my opinion, much better suited for travel than the Kinesis. It also comes with a great travel case. Here is a photo of me using it with my Surface Go 2 (it runs Linux, by the way) while waiting for the baggage drop at the airport: diff --git a/gemfeed/2024-09-07-site-reliability-engineering-part-4.gmi b/gemfeed/2024-09-07-site-reliability-engineering-part-4.gmi index 71b22cd5..e37709ce 100644 --- a/gemfeed/2024-09-07-site-reliability-engineering-part-4.gmi +++ b/gemfeed/2024-09-07-site-reliability-engineering-part-4.gmi @@ -42,7 +42,7 @@ Shadowing Sessions: Each new engineer undergoes two on-call week shadowing sessi Comprehensive Runbooks: We created 64 runbooks (by the time writing this probably more than 100) that are composable like Lego bricks. Each runbook covers a specific scenario and guides the engineer step-by-step to resolution. Pairing these with monitoring alerts linked directly to Confluence docs, and from there to the respective runbooks, ensures every alert can be navigated with ease (well, there are always exceptions to the rule...). -Self-Sufficiency & Confidence Building: With all these resources at their fingertips, our on-call engineers become self-sufficient for most of the common issues they'll face (new starters can now handle around 80% of the most common issue after 6 weeks they had joined the company). This boosts their confidence and ensures they can handle Tier-1 incidents independently. +Self-Sufficiency & Confidence Building: With all these resources at their fingertips, our on-call engineers become self-sufficient for most of the common issues they'll face (new starters can now handle around 80% of the most common issue after 6 weeks they had joined the company). This boosts their confidence and ensures they can handle Tier-1 incidents independently. Documentation and Feedback Loop: Continuous improvement is key. We regularly update our documentation based on feedback from the engineers. This makes our process even more robust and user-friendly. diff --git a/gemfeed/2024-10-24-staff-engineer-book-notes.gmi b/gemfeed/2024-10-24-staff-engineer-book-notes.gmi index f90526a9..22f1c443 100644 --- a/gemfeed/2024-10-24-staff-engineer-book-notes.gmi +++ b/gemfeed/2024-10-24-staff-engineer-book-notes.gmi @@ -121,16 +121,16 @@ E-Mail your comments to `paul@nospam.buetow.org` :-) Other book notes of mine are: -=> ./2025-11-02-the-courage-to-be-disliked-book-notes.gmi 2025-11-02 "The Courage To Be Disliked" book notes -=> ./2025-06-07-a-monks-guide-to-happiness-book-notes.gmi 2025-06-07 "A Monk's Guide to Happiness" book notes -=> ./2025-04-19-when-book-notes.gmi 2025-04-19 "When: The Scientific Secrets of Perfect Timing" book notes -=> ./2024-10-24-staff-engineer-book-notes.gmi 2024-10-24 "Staff Engineer" book notes (You are currently reading this) -=> ./2024-07-07-the-stoic-challenge-book-notes.gmi 2024-07-07 "The Stoic Challenge" book notes -=> ./2024-05-01-slow-productivity-book-notes.gmi 2024-05-01 "Slow Productivity" book notes -=> ./2023-11-11-mind-management-book-notes.gmi 2023-11-11 "Mind Management" book notes -=> ./2023-07-17-career-guide-and-soft-skills-book-notes.gmi 2023-07-17 "Software Developers Career Guide and Soft Skills" book notes -=> ./2023-05-06-the-obstacle-is-the-way-book-notes.gmi 2023-05-06 "The Obstacle is the Way" book notes -=> ./2023-04-01-never-split-the-difference-book-notes.gmi 2023-04-01 "Never split the difference" book notes -=> ./2023-03-16-the-pragmatic-programmer-book-notes.gmi 2023-03-16 "The Pragmatic Programmer" book notes +=> ./2025-11-02-the-courage-to-be-disliked-book-notes.gmi 2025-11-02 'The Courage To Be Disliked' book notes +=> ./2025-06-07-a-monks-guide-to-happiness-book-notes.gmi 2025-06-07 'A Monk's Guide to Happiness' book notes +=> ./2025-04-19-when-book-notes.gmi 2025-04-19 'When: The Scientific Secrets of Perfect Timing' book notes +=> ./2024-10-24-staff-engineer-book-notes.gmi 2024-10-24 'Staff Engineer' book notes (You are currently reading this) +=> ./2024-07-07-the-stoic-challenge-book-notes.gmi 2024-07-07 'The Stoic Challenge' book notes +=> ./2024-05-01-slow-productivity-book-notes.gmi 2024-05-01 'Slow Productivity' book notes +=> ./2023-11-11-mind-management-book-notes.gmi 2023-11-11 'Mind Management' book notes +=> ./2023-07-17-career-guide-and-soft-skills-book-notes.gmi 2023-07-17 'Software Developers Career Guide and Soft Skills' book notes +=> ./2023-05-06-the-obstacle-is-the-way-book-notes.gmi 2023-05-06 'The Obstacle is the Way' book notes +=> ./2023-04-01-never-split-the-difference-book-notes.gmi 2023-04-01 'Never split the difference' book notes +=> ./2023-03-16-the-pragmatic-programmer-book-notes.gmi 2023-03-16 'The Pragmatic Programmer' book notes => ../ Back to the main site diff --git a/gemfeed/2024-12-03-f3s-kubernetes-with-freebsd-part-2.gmi b/gemfeed/2024-12-03-f3s-kubernetes-with-freebsd-part-2.gmi index 3e27bc1e..3213aca6 100644 --- a/gemfeed/2024-12-03-f3s-kubernetes-with-freebsd-part-2.gmi +++ b/gemfeed/2024-12-03-f3s-kubernetes-with-freebsd-part-2.gmi @@ -79,7 +79,7 @@ The Beelink comes with the following specs: * 500 GB M.2 SSD, with the option to install a 2nd 2.5 SSD drive (which I want to make use of later in this blog series). * GBit ethernet * Four USB 3.2 Gen2 ports (maybe I want to mount something externally at some point) -* Dimensions and weight: 115*102*39mm, 280g +* Dimensions and weight: 115*102*39mm, 280g * Silent cooling system. * HDMI output (needed only for the initial installation and maybe for troubleshooting later) * Auto power on via WoL (may make use of it) diff --git a/gemfeed/2025-01-15-working-with-an-sre-interview.gmi b/gemfeed/2025-01-15-working-with-an-sre-interview.gmi index fd95f583..f5fbc264 100644 --- a/gemfeed/2025-01-15-working-with-an-sre-interview.gmi +++ b/gemfeed/2025-01-15-working-with-an-sre-interview.gmi @@ -2,7 +2,7 @@ > Published at 2025-01-15T00:16:04+02:00 -I have been interviewed by Florian Buetow on `cracking-ai-engineering.com` about what it's like working with a Site Reliability Engineer from the point of view of a Software Engineer, Data Scientist, and AI Engineer. +I have been interviewed by Florian Buetow on `cracking-ai-engineering.com` about what it's like working with a Site Reliability Engineer from the point of view of a Software Engineer, Data Scientist, and AI Engineer. => https://www.cracking-ai-engineering.com/writing/2025/01/12/working-with-an-sre-interview/ See original interview here => https://www.cracking-ai-engineering.com Cracking AI Engineering @@ -63,7 +63,7 @@ Tell us about how you joined Mimecast. When did you fully embrace the SRE role? What are the differences between SRE, DevOps, SysAdmin, and Architects? -> SREs are like the next step after SysAdmins. A SysAdmin might manually install servers, replace disks, or use simple scripts for automation, while SREs use infrastructure as code and focus on reliability through SLIs, SLOs, and automation. DevOps isn’t really a job-it’s more of a way of working, where developers are involved in operations tasks like setting up CI/CD pipelines or on-call shifts. Architects focus on designing systems and infrastructures, such as load balancers or distributed systems, working alongside SREs to ensure the systems meet the reliability and scalability requirements. The specific responsibilities of each role depend on the company, and there is often overlap. +> SREs are like the next step after SysAdmins. A SysAdmin might manually install servers, replace disks, or use simple scripts for automation, while SREs use infrastructure as code and focus on reliability through SLIs, SLOs, and automation. DevOps isn’t really a job-it’s more of a way of working, where developers are involved in operations tasks like setting up CI/CD pipelines or on-call shifts. Architects focus on designing systems and infrastructures, such as load balancers or distributed systems, working alongside SREs to ensure the systems meet the reliability and scalability requirements. The specific responsibilities of each role depend on the company, and there is often overlap. What are the most important reliability lessons you’ve learned so far? @@ -80,11 +80,11 @@ Runbooks sound very practical. Can you explain how they’re used day-to-day? When should you decide to put something into a runbook, and when is it unnecessary? -> If an issue happens frequently, it should be documented in a runbook so that anyone, even someone new, can follow the steps to fix it. The idea is that 90% of the common incidents should be covered. For example, if a service is down, the runbook would specify where to find logs, which commands to check, and what actions to take. On the other hand, rare or complex issues, where the resolution depends heavily on context or varies each time, don’t make sense to include in detail. For those, it’s better to focus on general troubleshooting steps. +> If an issue happens frequently, it should be documented in a runbook so that anyone, even someone new, can follow the steps to fix it. The idea is that 90% of the common incidents should be covered. For example, if a service is down, the runbook would specify where to find logs, which commands to check, and what actions to take. On the other hand, rare or complex issues, where the resolution depends heavily on context or varies each time, don’t make sense to include in detail. For those, it’s better to focus on general troubleshooting steps. How do you search for and find the correct runbooks? -> Runbooks should be linked directly in the alert you receive. For example, if you get an alert about a service not running, the alert will have a link to the runbook that tells you what to check, like logs or commands to run. Runbooks are best stored in an internal wiki, so if you don’t find the link in the alert, you know where to search. The important thing is that runbooks are easy to find and up to date because that’s what makes them useful during incidents. +> Runbooks should be linked directly in the alert you receive. For example, if you get an alert about a service not running, the alert will have a link to the runbook that tells you what to check, like logs or commands to run. Runbooks are best stored in an internal wiki, so if you don’t find the link in the alert, you know where to search. The important thing is that runbooks are easy to find and up to date because that’s what makes them useful during incidents. Do you have an interesting war story you can share with us? diff --git a/gemfeed/2025-04-05-f3s-kubernetes-with-freebsd-part-4.gmi b/gemfeed/2025-04-05-f3s-kubernetes-with-freebsd-part-4.gmi index 1a1d4fb4..dbef3644 100644 --- a/gemfeed/2025-04-05-f3s-kubernetes-with-freebsd-part-4.gmi +++ b/gemfeed/2025-04-05-f3s-kubernetes-with-freebsd-part-4.gmi @@ -284,7 +284,7 @@ Whereas: ### Permitting root login -As these VMs aren't directly reachable via SSH from the internet, we enable `root` login by adding a line with `PermitRootLogin yes` to `/etc/sshd/sshd_config`. +As these VMs aren't directly reachable via SSH from the internet, we enable `root` login by adding a line with `PermitRootLogin yes` to `/etc/sshd/sshd_config`. Once done, we reboot the VM by running `reboot` inside the VM to test whether everything was configured and persisted correctly. diff --git a/gemfeed/2025-04-19-when-book-notes.gmi b/gemfeed/2025-04-19-when-book-notes.gmi index 873b02b2..a2d61a7f 100644 --- a/gemfeed/2025-04-19-when-book-notes.gmi +++ b/gemfeed/2025-04-19-when-book-notes.gmi @@ -80,9 +80,9 @@ Short naps (10-20 minutes) significantly enhance mood, alertness, and cognitive ## Final Impressions -- The concluding experience of a vacation significantly influences overall memories. -- Restaurant reviews often hinge on the end of the visit, highlighting extras like wrong bills or additional desserts. -- Considering one's older future self can motivate improvements in the present. +* The concluding experience of a vacation significantly influences overall memories. +* Restaurant reviews often hinge on the end of the visit, highlighting extras like wrong bills or additional desserts. +* Considering one's older future self can motivate improvements in the present. ## The Midlife U Curve @@ -99,16 +99,16 @@ E-Mail your comments to `paul@nospam.buetow.org` :-) Other book notes of mine are: -=> ./2025-11-02-the-courage-to-be-disliked-book-notes.gmi 2025-11-02 "The Courage To Be Disliked" book notes -=> ./2025-06-07-a-monks-guide-to-happiness-book-notes.gmi 2025-06-07 "A Monk's Guide to Happiness" book notes -=> ./2025-04-19-when-book-notes.gmi 2025-04-19 "When: The Scientific Secrets of Perfect Timing" book notes (You are currently reading this) -=> ./2024-10-24-staff-engineer-book-notes.gmi 2024-10-24 "Staff Engineer" book notes -=> ./2024-07-07-the-stoic-challenge-book-notes.gmi 2024-07-07 "The Stoic Challenge" book notes -=> ./2024-05-01-slow-productivity-book-notes.gmi 2024-05-01 "Slow Productivity" book notes -=> ./2023-11-11-mind-management-book-notes.gmi 2023-11-11 "Mind Management" book notes -=> ./2023-07-17-career-guide-and-soft-skills-book-notes.gmi 2023-07-17 "Software Developers Career Guide and Soft Skills" book notes -=> ./2023-05-06-the-obstacle-is-the-way-book-notes.gmi 2023-05-06 "The Obstacle is the Way" book notes -=> ./2023-04-01-never-split-the-difference-book-notes.gmi 2023-04-01 "Never split the difference" book notes -=> ./2023-03-16-the-pragmatic-programmer-book-notes.gmi 2023-03-16 "The Pragmatic Programmer" book notes +=> ./2025-11-02-the-courage-to-be-disliked-book-notes.gmi 2025-11-02 'The Courage To Be Disliked' book notes +=> ./2025-06-07-a-monks-guide-to-happiness-book-notes.gmi 2025-06-07 'A Monk's Guide to Happiness' book notes +=> ./2025-04-19-when-book-notes.gmi 2025-04-19 'When: The Scientific Secrets of Perfect Timing' book notes (You are currently reading this) +=> ./2024-10-24-staff-engineer-book-notes.gmi 2024-10-24 'Staff Engineer' book notes +=> ./2024-07-07-the-stoic-challenge-book-notes.gmi 2024-07-07 'The Stoic Challenge' book notes +=> ./2024-05-01-slow-productivity-book-notes.gmi 2024-05-01 'Slow Productivity' book notes +=> ./2023-11-11-mind-management-book-notes.gmi 2023-11-11 'Mind Management' book notes +=> ./2023-07-17-career-guide-and-soft-skills-book-notes.gmi 2023-07-17 'Software Developers Career Guide and Soft Skills' book notes +=> ./2023-05-06-the-obstacle-is-the-way-book-notes.gmi 2023-05-06 'The Obstacle is the Way' book notes +=> ./2023-04-01-never-split-the-difference-book-notes.gmi 2023-04-01 'Never split the difference' book notes +=> ./2023-03-16-the-pragmatic-programmer-book-notes.gmi 2023-03-16 'The Pragmatic Programmer' book notes => ../ Back to the main site diff --git a/gemfeed/2025-05-02-terminal-multiplexing-with-tmux-fish-edition.gmi b/gemfeed/2025-05-02-terminal-multiplexing-with-tmux-fish-edition.gmi index 9e79ba4a..24400bf7 100644 --- a/gemfeed/2025-05-02-terminal-multiplexing-with-tmux-fish-edition.gmi +++ b/gemfeed/2025-05-02-terminal-multiplexing-with-tmux-fish-edition.gmi @@ -57,7 +57,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 built a couple of shell helper functions to optimize my workflows. Tmux is extensively integrated into my daily workflows (personal and work). I had colleagues asking me about my Tmux config and helper scripts for Tmux several times. It would be neat to blog about it so that everyone interested in it can make a copy of my configuration and scripts. +Over the years, I have built a couple of shell helper functions to optimize my workflows. Tmux is extensively integrated into my daily workflows (personal and work). I had colleagues asking me about my Tmux config and helper scripts for Tmux several times. It would be neat to blog about it so that everyone interested in it can make a copy of my configuration and scripts. The configuration and scripts in this blog post are only the non-work-specific parts. There are more helper scripts, which I only use for work (and aren't really useful outside of work due to the way servers and clusters are structured there). @@ -199,7 +199,7 @@ Before I used Tmux, I was a heavy user of ClusterSSH, which allowed me to log in However, since I started using Tmux, I retired ClusterSSH, as it came with the benefit that Tmux only needs to be run in the terminal, whereas ClusterSSH spawned terminal windows, which aren't easily portable (e.g., from a Linux desktop to macOS). The `tmux::cluster_ssh` function can have N arguments, where: * ...the first argument will be the session name (see `tmux::tssh_from_argument` helper function), and all remaining arguments will be server hostnames/FQDNs to connect to simultaneously. -* ...or, the first argument is a file name, and the file contains a list of hostnames/FQDNs (see `tmux::ssh_from_file` helper function) +* ...or, the first argument is a file name, and the file contains a list of hostnames/FQDNs (see `tmux::ssh_from_file` helper function) This is the function definition behind the `tssh` alias: @@ -295,7 +295,7 @@ I often search the history backwards with `prefix-key [` followed by a `?`, whic Once I have identified the terminal text to be copied, I enter visual select mode with `v`, highlight all the text to be copied (using arrow keys or Vi motions), and press `y` to yank it (sorry if this all sounds a bit complicated, but Vim/NeoVim users will know this, as it is pretty much how you do it there as well). -For `v` and `y` to work, the following has to be added to the Tmux configuration file: +For `v` and `y` to work, the following has to be added to the Tmux configuration file: ``` bind-key -T copy-mode-vi 'v' send -X begin-selection diff --git a/gemfeed/2025-06-07-a-monks-guide-to-happiness-book-notes.gmi b/gemfeed/2025-06-07-a-monks-guide-to-happiness-book-notes.gmi index 4653ab7a..08bbb6af 100644 --- a/gemfeed/2025-06-07-a-monks-guide-to-happiness-book-notes.gmi +++ b/gemfeed/2025-06-07-a-monks-guide-to-happiness-book-notes.gmi @@ -58,20 +58,20 @@ These are my personal book notes from Gelong Thubten's "A Monk's Guide to Happin ## Reflective Questions -* Why do I do all the things I do? What do I try to achieve? -* What am I doing about that? -* Is it working? -* What are the real causes of happiness and suffering? -* What about meditation? How does that address the situation? +* Why do I do all the things I do? What do I try to achieve? +* What am I doing about that? +* Is it working? +* What are the real causes of happiness and suffering? +* What about meditation? How does that address the situation? ## Miscellaneous Guidelines -* Posture is important as the mind and body are connected. -* Don't use music, so you don't rely on music to change your state of mind. Similar regular guided meditation. Guided meditation is good for learning a technique, but you should not rely on another voice. -* You are not trying to relax. Relaxing and trying are two different things. -* When you love everything, even the bad things happening to you, then you are invincible. -* Happiness is all in your mind. As if you flip a switch there. -* Digging for answers will never end. It will always cause more material to dig. +* Posture is important as the mind and body are connected. +* Don't use music, so you don't rely on music to change your state of mind. Similar regular guided meditation. Guided meditation is good for learning a technique, but you should not rely on another voice. +* You are not trying to relax. Relaxing and trying are two different things. +* When you love everything, even the bad things happening to you, then you are invincible. +* Happiness is all in your mind. As if you flip a switch there. +* Digging for answers will never end. It will always cause more material to dig. If happiness is a mental issue. Clearly, the best time is spent training your mind in your free time and don't always be busy with other things. E.g. meditation, or think about the benefits of meditation. All that we do in our free time is search for happiness. Are the things we do actually working? There is always something around the corner... @@ -79,16 +79,16 @@ E-Mail your comments to `paul@nospam.buetow.org` :-) Other book notes of mine are: -=> ./2025-11-02-the-courage-to-be-disliked-book-notes.gmi 2025-11-02 "The Courage To Be Disliked" book notes -=> ./2025-06-07-a-monks-guide-to-happiness-book-notes.gmi 2025-06-07 "A Monk's Guide to Happiness" book notes (You are currently reading this) -=> ./2025-04-19-when-book-notes.gmi 2025-04-19 "When: The Scientific Secrets of Perfect Timing" book notes -=> ./2024-10-24-staff-engineer-book-notes.gmi 2024-10-24 "Staff Engineer" book notes -=> ./2024-07-07-the-stoic-challenge-book-notes.gmi 2024-07-07 "The Stoic Challenge" book notes -=> ./2024-05-01-slow-productivity-book-notes.gmi 2024-05-01 "Slow Productivity" book notes -=> ./2023-11-11-mind-management-book-notes.gmi 2023-11-11 "Mind Management" book notes -=> ./2023-07-17-career-guide-and-soft-skills-book-notes.gmi 2023-07-17 "Software Developers Career Guide and Soft Skills" book notes -=> ./2023-05-06-the-obstacle-is-the-way-book-notes.gmi 2023-05-06 "The Obstacle is the Way" book notes -=> ./2023-04-01-never-split-the-difference-book-notes.gmi 2023-04-01 "Never split the difference" book notes -=> ./2023-03-16-the-pragmatic-programmer-book-notes.gmi 2023-03-16 "The Pragmatic Programmer" book notes +=> ./2025-11-02-the-courage-to-be-disliked-book-notes.gmi 2025-11-02 'The Courage To Be Disliked' book notes +=> ./2025-06-07-a-monks-guide-to-happiness-book-notes.gmi 2025-06-07 'A Monk's Guide to Happiness' book notes (You are currently reading this) +=> ./2025-04-19-when-book-notes.gmi 2025-04-19 'When: The Scientific Secrets of Perfect Timing' book notes +=> ./2024-10-24-staff-engineer-book-notes.gmi 2024-10-24 'Staff Engineer' book notes +=> ./2024-07-07-the-stoic-challenge-book-notes.gmi 2024-07-07 'The Stoic Challenge' book notes +=> ./2024-05-01-slow-productivity-book-notes.gmi 2024-05-01 'Slow Productivity' book notes +=> ./2023-11-11-mind-management-book-notes.gmi 2023-11-11 'Mind Management' book notes +=> ./2023-07-17-career-guide-and-soft-skills-book-notes.gmi 2023-07-17 'Software Developers Career Guide and Soft Skills' book notes +=> ./2023-05-06-the-obstacle-is-the-way-book-notes.gmi 2023-05-06 'The Obstacle is the Way' book notes +=> ./2023-04-01-never-split-the-difference-book-notes.gmi 2023-04-01 'Never split the difference' book notes +=> ./2023-03-16-the-pragmatic-programmer-book-notes.gmi 2023-03-16 'The Pragmatic Programmer' book notes => ../ Back to the main site diff --git a/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.gmi b/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.gmi index 803482e8..2daee8c3 100644 --- a/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.gmi +++ b/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.gmi @@ -861,7 +861,7 @@ Key benefits for our storage system: First, we add the CARP configuration to `/etc/rc.conf` on both `f0` and `f1`: -> Update: Sun 4 Jan 00:17:00 EET 2026 - Added `advskew 100` to f1 so f0 always wins CARP elections when it comes back online after a reboot. +> Update: Sun 4 Jan 00:17:00 EET 2026 - Added `advskew 100` to f1 so f0 always wins CARP elections when it comes back online after a reboot. ```sh # On f0 - The virtual IP 192.168.1.138 will float between f0 and f1 @@ -908,7 +908,7 @@ paul@f0:~ % doas service devd restart Next, we create the CARP control script that will restart stunnel when the CARP state changes: -> Update: Fixed the script at Sat 3 Jan 23:55:11 EET 2026 - changed `$1` to `$2` because devd passes `$subsystem $type`, so the state is in the second argument. +> Update: Fixed the script at Sat 3 Jan 23:55:11 EET 2026 - changed `$1` to `$2` because devd passes `$subsystem $type`, so the state is in the second argument. ```sh paul@f0:~ % doas tee /usr/local/bin/carpcontrol.sh <<'EOF' @@ -1203,7 +1203,7 @@ This ensures that clients always connect to the active NFS server through the CA This approach ensures clients can only connect to the active server, eliminating stale handles from the inactive server: -> Update: Fixed the script at Sat 3 Jan 23:55:11 EET 2026 - changed `$1` to `$2` because devd passes `$subsystem $type`, so the state is in the second argument. +> Update: Fixed the script at Sat 3 Jan 23:55:11 EET 2026 - changed `$1` to `$2` because devd passes `$subsystem $type`, so the state is in the second argument. ```sh # Create CARP control script on both f0 and f1 @@ -1400,7 +1400,7 @@ Auto-failback ENABLED (removed /data/nfs/nfs.NO_AUTO_FAILBACK) When `f0` reboots (planned or unplanned), `f1` takes over as CARP MASTER. To ensure `f0` automatically reclaims its primary role once it's fully operational, we'll implement an automatic failback mechanism. With: -> Update: Fixed the script at Sun 4 Jan 00:04:28 EET 2026 - removed the NFS service check because when f0 is BACKUP, NFS services are intentionally stopped by carpcontrol.sh, which would prevent auto-failback from ever triggering. +> Update: Fixed the script at Sun 4 Jan 00:04:28 EET 2026 - removed the NFS service check because when f0 is BACKUP, NFS services are intentionally stopped by carpcontrol.sh, which would prevent auto-failback from ever triggering. ```sh paul@f0:~ % doas tee /usr/local/bin/carp-auto-failback.sh <<'EOF' diff --git a/gemfeed/2025-10-02-f3s-kubernetes-with-freebsd-part-7.gmi b/gemfeed/2025-10-02-f3s-kubernetes-with-freebsd-part-7.gmi index 414e6a15..b89f1922 100644 --- a/gemfeed/2025-10-02-f3s-kubernetes-with-freebsd-part-7.gmi +++ b/gemfeed/2025-10-02-f3s-kubernetes-with-freebsd-part-7.gmi @@ -72,9 +72,9 @@ $ cd f3s/ ``` **Current master branch** contains the ArgoCD-managed versions with: -- Application manifests organized under `argocd-apps/{monitoring,services,infra,test}/` -- Additional resources under `*/manifests/` directories (e.g., `prometheus/manifests/`) -- Justfiles updated to trigger ArgoCD syncs instead of direct Helm commands +* Application manifests organized under `argocd-apps/{monitoring,services,infra,test}/` +* Additional resources under `*/manifests/` directories (e.g., `prometheus/manifests/`) +* Justfiles updated to trigger ArgoCD syncs instead of direct Helm commands The deployment concepts and architecture remain the same—only the deployment method changed from imperative (`helm install/upgrade`) to declarative (GitOps with ArgoCD). @@ -1041,7 +1041,7 @@ The same pattern can be applied to any service. To add LAN access: 1. Copy the `f3s-lan-tls` secret to the service's namespace (if not already there) 2. Add a LAN Ingress resource using the pattern above -3. Configure DNS: `192.168.1.138 service.f3s.lan.foo.zone` +3. Configure DNS: `192.168.1.138 service.f3s.lan.foo.zone` No changes needed to: diff --git a/gemfeed/2025-11-02-the-courage-to-be-disliked-book-notes.gmi b/gemfeed/2025-11-02-the-courage-to-be-disliked-book-notes.gmi index 53be7f59..9476c84c 100644 --- a/gemfeed/2025-11-02-the-courage-to-be-disliked-book-notes.gmi +++ b/gemfeed/2025-11-02-the-courage-to-be-disliked-book-notes.gmi @@ -109,16 +109,16 @@ E-Mail your comments to `paul@nospam.buetow.org` :-) Other book notes of mine are: -=> ./2025-11-02-the-courage-to-be-disliked-book-notes.gmi 2025-11-02 "The Courage To Be Disliked" book notes (You are currently reading this) -=> ./2025-06-07-a-monks-guide-to-happiness-book-notes.gmi 2025-06-07 "A Monk's Guide to Happiness" book notes -=> ./2025-04-19-when-book-notes.gmi 2025-04-19 "When: The Scientific Secrets of Perfect Timing" book notes -=> ./2024-10-24-staff-engineer-book-notes.gmi 2024-10-24 "Staff Engineer" book notes -=> ./2024-07-07-the-stoic-challenge-book-notes.gmi 2024-07-07 "The Stoic Challenge" book notes -=> ./2024-05-01-slow-productivity-book-notes.gmi 2024-05-01 "Slow Productivity" book notes -=> ./2023-11-11-mind-management-book-notes.gmi 2023-11-11 "Mind Management" book notes -=> ./2023-07-17-career-guide-and-soft-skills-book-notes.gmi 2023-07-17 "Software Developers Career Guide and Soft Skills" book notes -=> ./2023-05-06-the-obstacle-is-the-way-book-notes.gmi 2023-05-06 "The Obstacle is the Way" book notes -=> ./2023-04-01-never-split-the-difference-book-notes.gmi 2023-04-01 "Never split the difference" book notes -=> ./2023-03-16-the-pragmatic-programmer-book-notes.gmi 2023-03-16 "The Pragmatic Programmer" book notes +=> ./2025-11-02-the-courage-to-be-disliked-book-notes.gmi 2025-11-02 'The Courage To Be Disliked' book notes (You are currently reading this) +=> ./2025-06-07-a-monks-guide-to-happiness-book-notes.gmi 2025-06-07 'A Monk's Guide to Happiness' book notes +=> ./2025-04-19-when-book-notes.gmi 2025-04-19 'When: The Scientific Secrets of Perfect Timing' book notes +=> ./2024-10-24-staff-engineer-book-notes.gmi 2024-10-24 'Staff Engineer' book notes +=> ./2024-07-07-the-stoic-challenge-book-notes.gmi 2024-07-07 'The Stoic Challenge' book notes +=> ./2024-05-01-slow-productivity-book-notes.gmi 2024-05-01 'Slow Productivity' book notes +=> ./2023-11-11-mind-management-book-notes.gmi 2023-11-11 'Mind Management' book notes +=> ./2023-07-17-career-guide-and-soft-skills-book-notes.gmi 2023-07-17 'Software Developers Career Guide and Soft Skills' book notes +=> ./2023-05-06-the-obstacle-is-the-way-book-notes.gmi 2023-05-06 'The Obstacle is the Way' book notes +=> ./2023-04-01-never-split-the-difference-book-notes.gmi 2023-04-01 'Never split the difference' book notes +=> ./2023-03-16-the-pragmatic-programmer-book-notes.gmi 2023-03-16 'The Pragmatic Programmer' book notes => ../ Back to the main site diff --git a/gemfeed/2025-12-07-f3s-kubernetes-with-freebsd-part-8.gmi b/gemfeed/2025-12-07-f3s-kubernetes-with-freebsd-part-8.gmi index 26f7dbd8..44e6c79a 100644 --- a/gemfeed/2025-12-07-f3s-kubernetes-with-freebsd-part-8.gmi +++ b/gemfeed/2025-12-07-f3s-kubernetes-with-freebsd-part-8.gmi @@ -76,9 +76,9 @@ $ cd f3s/prometheus/ ``` **Current master branch** contains the ArgoCD-managed versions with: -- Application manifests organized under `argocd-apps/{monitoring,services,infra,test}/` -- Resources organized under `prometheus/manifests/`, `loki/`, etc. -- Justfiles updated to trigger ArgoCD syncs instead of direct Helm commands +* Application manifests organized under `argocd-apps/{monitoring,services,infra,test}/` +* Resources organized under `prometheus/manifests/`, `loki/`, etc. +* Justfiles updated to trigger ArgoCD syncs instead of direct Helm commands The deployment concepts and architecture remain the same—only the deployment method changed from imperative (`helm install/upgrade`) to declarative (GitOps with ArgoCD). diff --git a/gemfeed/2026-01-01-posts-from-july-to-december-2025.gmi b/gemfeed/2026-01-01-posts-from-july-to-december-2025.gmi index 17542ccd..20dd62d4 100644 --- a/gemfeed/2026-01-01-posts-from-july-to-december-2025.gmi +++ b/gemfeed/2026-01-01-posts-from-july-to-december-2025.gmi @@ -49,7 +49,7 @@ These are from Mastodon and LinkedIn. Have a look at my about page for my social * ⇢ ⇢ ⇢ Some `#fun`: Random Weird Things Part III blog ... * ⇢ ⇢ ⇢ Yes, write more useless software. I agree that ... * ⇢ ⇢ ⇢ I learned a lot from this `#OpenBSD` `#relayd` ... -* ⇢ ⇢ ⇢ Six weeks of claude code +* ⇢ ⇢ ⇢ Six weeks of claude code * ⇢ ⇢ ⇢ It's good that there is now a truly open-source ... * ⇢ ⇢ ⇢ Have to try this at some point ... * ⇢ ⇢ ⇢ I could not agree more. For me, a personal ... @@ -376,7 +376,7 @@ I learned a lot from this `#OpenBSD` `#relayd` talk, and I already put the infor => https://www.youtube.com/watch?v=yW8QSZyEs6E www.youtube.com/watch?v=yW8QSZyEs6E -### Six weeks of claude code +### Six weeks of claude code => https://blog.puzzmo.com/posts/2025/07/30/six-weeks-of-claude-code/ blog.puzzmo.com/posts/2025/07/30/six-weeks-of-claude-code/ diff --git a/gemfeed/2026-01-01-using-supernote-nomad-offline.gmi b/gemfeed/2026-01-01-using-supernote-nomad-offline.gmi index 7512672a..2683bc60 100644 --- a/gemfeed/2026-01-01-using-supernote-nomad-offline.gmi +++ b/gemfeed/2026-01-01-using-supernote-nomad-offline.gmi @@ -41,7 +41,7 @@ I initially bought it because Retta (the manufacturer of the Supernote) stated o In a world of constant connectivity, the Supernote Nomad offers a sanctuary. By keeping it offline, I can focus on my thoughts and notes without compromise of my privacy. -One of the most significant advantages of keeping Wi-Fi off is the battery life. The Supernote Nomad can last a week, on a single charge when it's not constantly searching for a network. This makes it a good companion for long trips or intense note-taking sessions. +One of the most significant advantages of keeping Wi-Fi off is the battery life. The Supernote Nomad can last a week, on a single charge when it's not constantly searching for a network. This makes it a good companion for long trips or intense note-taking sessions. Privacy was my main concern. By not syncing my notes to Retta's cloud service, I retain full ownership and control over my data. There's no risk of my personal thoughts and ideas being accessed or mined by third parties. It's a simple and effective way to ensure my privacy. diff --git a/gemfeed/DRAFT-distributed-systems-simulator.gmi b/gemfeed/DRAFT-distributed-systems-simulator.gmi index d43834d9..1792fc1d 100644 --- a/gemfeed/DRAFT-distributed-systems-simulator.gmi +++ b/gemfeed/DRAFT-distributed-systems-simulator.gmi @@ -149,7 +149,7 @@ The toolbar offers four different functions: ![Figure 2.4: The menu line including toolbar] * Reset simulation: can only be activated when the simulation has been paused or has finished -* Repeat simulation: cannot be activated if the simulation has not yet been started +* Repeat simulation: cannot be activated if the simulation has not yet been started * Pause simulation: can only be activated when the simulation is currently running * Start simulation: can only be activated when the simulation is not currently running and has not yet finished @@ -258,7 +258,7 @@ Two main types of events are distinguished: programmable events and non-programm * Local Eventsi: Triggered when a specific local time of the associated process is reached * Global Eventsi: (Expert Mode only): Triggered when a specific global simulation time is reached -* Event Programmingi: Users can add events by: Right-clicking on a process bar and selecting "Insert local event", using the event editor in the sidebar or by sssssssssssthe event time and type +* Event Programmingi: Users can add events by: Right-clicking on a process bar and selecting "Insert local event", using the event editor in the sidebar or by sssssssssssthe event time and type ### Event Types Available: diff --git a/gemfeed/DRAFT-f3s-kubernetes-with-freebsd-part-8b.gmi b/gemfeed/DRAFT-f3s-kubernetes-with-freebsd-part-8b.gmi index 51de7d0c..01d851e5 100644 --- a/gemfeed/DRAFT-f3s-kubernetes-with-freebsd-part-8b.gmi +++ b/gemfeed/DRAFT-f3s-kubernetes-with-freebsd-part-8b.gmi @@ -20,9 +20,9 @@ $ cd f3s/prometheus/ ``` **Current master branch** uses ArgoCD with: -- Application manifest: `argocd-apps/monitoring/prometheus.yaml` -- Multi-source Application combining upstream chart + custom manifests -- Justfile commands updated to trigger ArgoCD syncs instead of direct Helm commands +* Application manifest: `argocd-apps/monitoring/prometheus.yaml` +* Multi-source Application combining upstream chart + custom manifests +* Justfile commands updated to trigger ArgoCD syncs instead of direct Helm commands The etcd configuration concepts remain the same—only the deployment method changed. Instead of running `just upgrade`, you would: 1. Update the configuration in Git diff --git a/gemfeed/atom.xml b/gemfeed/atom.xml index c0000cb8..a4bf9cb4 100644 --- a/gemfeed/atom.xml +++ b/gemfeed/atom.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> - <updated>2026-02-28T18:25:30+02:00</updated> + <updated>2026-03-01T17:43:02+02:00</updated> <title>foo.zone feed</title> <subtitle>To be in the .zone!</subtitle> <link href="gemini://foo.zone/gemfeed/atom.xml" rel="self" /> @@ -884,7 +884,7 @@ main <font color="#808080">"$@"</font> <br /> <span>In a world of constant connectivity, the Supernote Nomad offers a sanctuary. By keeping it offline, I can focus on my thoughts and notes without compromise of my privacy.</span><br /> <br /> -<span>One of the most significant advantages of keeping Wi-Fi off is the battery life. The Supernote Nomad can last a week, on a single charge when it's not constantly searching for a network. This makes it a good companion for long trips or intense note-taking sessions.</span><br /> +<span>One of the most significant advantages of keeping Wi-Fi off is the battery life. The Supernote Nomad can last a week, on a single charge when it's not constantly searching for a network. This makes it a good companion for long trips or intense note-taking sessions.</span><br /> <br /> <span>Privacy was my main concern. By not syncing my notes to Retta's cloud service, I retain full ownership and control over my data. There's no risk of my personal thoughts and ideas being accessed or mined by third parties. It's a simple and effective way to ensure my privacy.</span><br /> <br /> @@ -1044,7 +1044,7 @@ copy <li>⇢ ⇢ <a href='#some-fun-random-weird-things-part-iii-blog-'>Some <span class='inlinecode'>#fun</span>: Random Weird Things Part III blog ...</a></li> <li>⇢ ⇢ <a href='#yes-write-more-useless-software-i-agree-that-'>Yes, write more useless software. I agree that ...</a></li> <li>⇢ ⇢ <a href='#i-learned-a-lot-from-this-openbsd-relayd-'>I learned a lot from this <span class='inlinecode'>#OpenBSD</span> <span class='inlinecode'>#relayd</span> ...</a></li> -<li>⇢ ⇢ <a href='#-six-weeks-of-claude-code'> Six weeks of claude code</a></li> +<li>⇢ ⇢ <a href='#six-weeks-of-claude-code'>Six weeks of claude code</a></li> <li>⇢ ⇢ <a href='#it-s-good-that-there-is-now-a-truly-open-source-'>It's good that there is now a truly open-source ...</a></li> <li>⇢ ⇢ <a href='#have-to-try-this-at-some-point-'>Have to try this at some point ...</a></li> <li>⇢ ⇢ <a href='#i-could-not-agree-more-for-me-a-personal-'>I could not agree more. For me, a personal ...</a></li> @@ -1371,7 +1371,7 @@ copy <br /> <a class='textlink' href='https://www.youtube.com/watch?v=yW8QSZyEs6E'>www.youtube.com/watch?v=yW8QSZyEs6E</a><br /> <br /> -<h3 style='display: inline' id='-six-weeks-of-claude-code'> Six weeks of claude code</h3><br /> +<h3 style='display: inline' id='six-weeks-of-claude-code'>Six weeks of claude code</h3><br /> <br /> <a class='textlink' href='https://blog.puzzmo.com/posts/2025/07/30/six-weeks-of-claude-code/'>blog.puzzmo.com/posts/2025/07/30/six-weeks-of-claude-code/</a><br /> <br /> @@ -3195,10 +3195,11 @@ $ cd f3s/prometheus/ </pre> <br /> <span>**Current master branch** contains the ArgoCD-managed versions with:</span><br /> -<span>- Application manifests organized under <span class='inlinecode'>argocd-apps/{monitoring,services,infra,test}/</span></span><br /> -<span>- Resources organized under <span class='inlinecode'>prometheus/manifests/</span>, <span class='inlinecode'>loki/</span>, etc.</span><br /> -<span>- Justfiles updated to trigger ArgoCD syncs instead of direct Helm commands</span><br /> -<br /> +<ul> +<li>Application manifests organized under <span class='inlinecode'>argocd-apps/{monitoring,services,infra,test}/</span></li> +<li>Resources organized under <span class='inlinecode'>prometheus/manifests/</span>, <span class='inlinecode'>loki/</span>, etc.</li> +<li>Justfiles updated to trigger ArgoCD syncs instead of direct Helm commands</li> +</ul><br /> <span>The deployment concepts and architecture remain the same—only the deployment method changed from imperative (<span class='inlinecode'>helm install/upgrade</span>) to declarative (GitOps with ArgoCD). </span><br /> <br /> <h2 style='display: inline' id='persistent-storage-recap'>Persistent storage recap</h2><br /> @@ -4033,17 +4034,17 @@ spec: <br /> <span>Other book notes of mine are:</span><br /> <br /> -<a class='textlink' href='./2025-11-02-the-courage-to-be-disliked-book-notes.html'>2025-11-02 "The Courage To Be Disliked" book notes (You are currently reading this)</a><br /> -<a class='textlink' href='./2025-06-07-a-monks-guide-to-happiness-book-notes.html'>2025-06-07 "A Monk's Guide to Happiness" book notes</a><br /> -<a class='textlink' href='./2025-04-19-when-book-notes.html'>2025-04-19 "When: The Scientific Secrets of Perfect Timing" book notes</a><br /> -<a class='textlink' href='./2024-10-24-staff-engineer-book-notes.html'>2024-10-24 "Staff Engineer" book notes</a><br /> -<a class='textlink' href='./2024-07-07-the-stoic-challenge-book-notes.html'>2024-07-07 "The Stoic Challenge" book notes</a><br /> -<a class='textlink' href='./2024-05-01-slow-productivity-book-notes.html'>2024-05-01 "Slow Productivity" book notes</a><br /> -<a class='textlink' href='./2023-11-11-mind-management-book-notes.html'>2023-11-11 "Mind Management" book notes</a><br /> -<a class='textlink' href='./2023-07-17-career-guide-and-soft-skills-book-notes.html'>2023-07-17 "Software Developers Career Guide and Soft Skills" book notes</a><br /> -<a class='textlink' href='./2023-05-06-the-obstacle-is-the-way-book-notes.html'>2023-05-06 "The Obstacle is the Way" book notes</a><br /> -<a class='textlink' href='./2023-04-01-never-split-the-difference-book-notes.html'>2023-04-01 "Never split the difference" book notes</a><br /> -<a class='textlink' href='./2023-03-16-the-pragmatic-programmer-book-notes.html'>2023-03-16 "The Pragmatic Programmer" book notes</a><br /> +<a class='textlink' href='./2025-11-02-the-courage-to-be-disliked-book-notes.html'>2025-11-02 'The Courage To Be Disliked' book notes (You are currently reading this)</a><br /> +<a class='textlink' href='./2025-06-07-a-monks-guide-to-happiness-book-notes.html'>2025-06-07 'A Monk's Guide to Happiness' book notes</a><br /> +<a class='textlink' href='./2025-04-19-when-book-notes.html'>2025-04-19 'When: The Scientific Secrets of Perfect Timing' book notes</a><br /> +<a class='textlink' href='./2024-10-24-staff-engineer-book-notes.html'>2024-10-24 'Staff Engineer' book notes</a><br /> +<a class='textlink' href='./2024-07-07-the-stoic-challenge-book-notes.html'>2024-07-07 'The Stoic Challenge' book notes</a><br /> +<a class='textlink' href='./2024-05-01-slow-productivity-book-notes.html'>2024-05-01 'Slow Productivity' book notes</a><br /> +<a class='textlink' href='./2023-11-11-mind-management-book-notes.html'>2023-11-11 'Mind Management' book notes</a><br /> +<a class='textlink' href='./2023-07-17-career-guide-and-soft-skills-book-notes.html'>2023-07-17 'Software Developers Career Guide and Soft Skills' book notes</a><br /> +<a class='textlink' href='./2023-05-06-the-obstacle-is-the-way-book-notes.html'>2023-05-06 'The Obstacle is the Way' book notes</a><br /> +<a class='textlink' href='./2023-04-01-never-split-the-difference-book-notes.html'>2023-04-01 'Never split the difference' book notes</a><br /> +<a class='textlink' href='./2023-03-16-the-pragmatic-programmer-book-notes.html'>2023-03-16 'The Pragmatic Programmer' book notes</a><br /> <br /> <a class='textlink' href='../'>Back to the main site</a><br /> </div> @@ -4865,10 +4866,11 @@ $ cd f3s/ </pre> <br /> <span>**Current master branch** contains the ArgoCD-managed versions with:</span><br /> -<span>- Application manifests organized under <span class='inlinecode'>argocd-apps/{monitoring,services,infra,test}/</span></span><br /> -<span>- Additional resources under <span class='inlinecode'>*/manifests/</span> directories (e.g., <span class='inlinecode'>prometheus/manifests/</span>)</span><br /> -<span>- Justfiles updated to trigger ArgoCD syncs instead of direct Helm commands</span><br /> -<br /> +<ul> +<li>Application manifests organized under <span class='inlinecode'>argocd-apps/{monitoring,services,infra,test}/</span></li> +<li>Additional resources under <span class='inlinecode'>*/manifests/</span> directories (e.g., <span class='inlinecode'>prometheus/manifests/</span>)</li> +<li>Justfiles updated to trigger ArgoCD syncs instead of direct Helm commands</li> +</ul><br /> <span>The deployment concepts and architecture remain the same—only the deployment method changed from imperative (<span class='inlinecode'>helm install/upgrade</span>) to declarative (GitOps with ArgoCD).</span><br /> <br /> <h2 style='display: inline' id='updating'>Updating</h2><br /> @@ -5931,7 +5933,7 @@ $ sudo update-ca-trust <br /> <span>1. Copy the <span class='inlinecode'>f3s-lan-tls</span> secret to the service's namespace (if not already there)</span><br /> <span>2. Add a LAN Ingress resource using the pattern above</span><br /> -<span>3. Configure DNS: <span class='inlinecode'>192.168.1.138 service.f3s.lan.foo.zone</span></span><br /> +<span>3. Configure DNS: <span class='inlinecode'>192.168.1.138 service.f3s.lan.foo.zone</span></span><br /> <br /> <span>No changes needed to:</span><br /> <br /> @@ -8535,7 +8537,7 @@ paul@f1:~ % doas zfs list -t snapshot -r zdata/sink | grep zrepl | tail -<font c <br /> <span>First, we add the CARP configuration to <span class='inlinecode'>/etc/rc.conf</span> on both <span class='inlinecode'>f0</span> and <span class='inlinecode'>f1</span>:</span><br /> <br /> -<span class='quote'>Update: Sun 4 Jan 00:17:00 EET 2026 - Added <span class='inlinecode'>advskew 100</span> to f1 so f0 always wins CARP elections when it comes back online after a reboot.</span><br /> +<span class='quote'>Update: Sun 4 Jan 00:17:00 EET 2026 - Added <span class='inlinecode'>advskew 100</span> to f1 so f0 always wins CARP elections when it comes back online after a reboot.</span><br /> <br /> <!-- Generator: GNU source-highlight 3.1.9 by Lorenzo Bettini @@ -8589,7 +8591,7 @@ paul@f0:~ % doas service devd restart <br /> <span>Next, we create the CARP control script that will restart stunnel when the CARP state changes:</span><br /> <br /> -<span class='quote'>Update: Fixed the script at Sat 3 Jan 23:55:11 EET 2026 - changed <span class='inlinecode'>$1</span> to <span class='inlinecode'>$2</span> because devd passes <span class='inlinecode'>$subsystem $type</span>, so the state is in the second argument.</span><br /> +<span class='quote'>Update: Fixed the script at Sat 3 Jan 23:55:11 EET 2026 - changed <span class='inlinecode'>$1</span> to <span class='inlinecode'>$2</span> because devd passes <span class='inlinecode'>$subsystem $type</span>, so the state is in the second argument.</span><br /> <br /> <!-- Generator: GNU source-highlight 3.1.9 by Lorenzo Bettini @@ -8919,7 +8921,7 @@ Starting stunnel. </ul><br /> <span>This approach ensures clients can only connect to the active server, eliminating stale handles from the inactive server:</span><br /> <br /> -<span class='quote'>Update: Fixed the script at Sat 3 Jan 23:55:11 EET 2026 - changed <span class='inlinecode'>$1</span> to <span class='inlinecode'>$2</span> because devd passes <span class='inlinecode'>$subsystem $type</span>, so the state is in the second argument.</span><br /> +<span class='quote'>Update: Fixed the script at Sat 3 Jan 23:55:11 EET 2026 - changed <span class='inlinecode'>$1</span> to <span class='inlinecode'>$2</span> because devd passes <span class='inlinecode'>$subsystem $type</span>, so the state is in the second argument.</span><br /> <br /> <!-- Generator: GNU source-highlight 3.1.9 by Lorenzo Bettini @@ -9125,7 +9127,7 @@ Auto-failback ENABLED (removed /data/nfs/nfs.NO_AUTO_FAILBACK) <br /> <span>When <span class='inlinecode'>f0</span> reboots (planned or unplanned), <span class='inlinecode'>f1</span> takes over as CARP MASTER. To ensure <span class='inlinecode'>f0</span> automatically reclaims its primary role once it's fully operational, we'll implement an automatic failback mechanism. With:</span><br /> <br /> -<span class='quote'>Update: Fixed the script at Sun 4 Jan 00:04:28 EET 2026 - removed the NFS service check because when f0 is BACKUP, NFS services are intentionally stopped by carpcontrol.sh, which would prevent auto-failback from ever triggering.</span><br /> +<span class='quote'>Update: Fixed the script at Sun 4 Jan 00:04:28 EET 2026 - removed the NFS service check because when f0 is BACKUP, NFS services are intentionally stopped by carpcontrol.sh, which would prevent auto-failback from ever triggering.</span><br /> <br /> <!-- Generator: GNU source-highlight 3.1.9 by Lorenzo Bettini @@ -10700,21 +10702,21 @@ http://www.gnu.org/software/src-highlite --> <h2 style='display: inline' id='reflective-questions'>Reflective Questions</h2><br /> <br /> <ul> -<li> Why do I do all the things I do? What do I try to achieve?</li> -<li> What am I doing about that? </li> -<li> Is it working?</li> -<li> What are the real causes of happiness and suffering?</li> -<li> What about meditation? How does that address the situation?</li> +<li>Why do I do all the things I do? What do I try to achieve?</li> +<li>What am I doing about that? </li> +<li>Is it working?</li> +<li>What are the real causes of happiness and suffering?</li> +<li>What about meditation? How does that address the situation?</li> </ul><br /> <h2 style='display: inline' id='miscellaneous-guidelines'>Miscellaneous Guidelines</h2><br /> <br /> <ul> -<li> Posture is important as the mind and body are connected.</li> -<li> Don't use music, so you don't rely on music to change your state of mind. Similar regular guided meditation. Guided meditation is good for learning a technique, but you should not rely on another voice.</li> -<li> You are not trying to relax. Relaxing and trying are two different things.</li> -<li> When you love everything, even the bad things happening to you, then you are invincible.</li> -<li> Happiness is all in your mind. As if you flip a switch there.</li> -<li> Digging for answers will never end. It will always cause more material to dig.</li> +<li>Posture is important as the mind and body are connected.</li> +<li>Don't use music, so you don't rely on music to change your state of mind. Similar regular guided meditation. Guided meditation is good for learning a technique, but you should not rely on another voice.</li> +<li>You are not trying to relax. Relaxing and trying are two different things.</li> +<li>When you love everything, even the bad things happening to you, then you are invincible.</li> +<li>Happiness is all in your mind. As if you flip a switch there.</li> +<li>Digging for answers will never end. It will always cause more material to dig.</li> </ul><br /> <span>If happiness is a mental issue. Clearly, the best time is spent training your mind in your free time and don't always be busy with other things. E.g. meditation, or think about the benefits of meditation. All that we do in our free time is search for happiness. Are the things we do actually working? There is always something around the corner...</span><br /> <br /> @@ -10722,17 +10724,17 @@ http://www.gnu.org/software/src-highlite --> <br /> <span>Other book notes of mine are:</span><br /> <br /> -<a class='textlink' href='./2025-11-02-the-courage-to-be-disliked-book-notes.html'>2025-11-02 "The Courage To Be Disliked" book notes</a><br /> -<a class='textlink' href='./2025-06-07-a-monks-guide-to-happiness-book-notes.html'>2025-06-07 "A Monk's Guide to Happiness" book notes (You are currently reading this)</a><br /> -<a class='textlink' href='./2025-04-19-when-book-notes.html'>2025-04-19 "When: The Scientific Secrets of Perfect Timing" book notes</a><br /> -<a class='textlink' href='./2024-10-24-staff-engineer-book-notes.html'>2024-10-24 "Staff Engineer" book notes</a><br /> -<a class='textlink' href='./2024-07-07-the-stoic-challenge-book-notes.html'>2024-07-07 "The Stoic Challenge" book notes</a><br /> -<a class='textlink' href='./2024-05-01-slow-productivity-book-notes.html'>2024-05-01 "Slow Productivity" book notes</a><br /> -<a class='textlink' href='./2023-11-11-mind-management-book-notes.html'>2023-11-11 "Mind Management" book notes</a><br /> -<a class='textlink' href='./2023-07-17-career-guide-and-soft-skills-book-notes.html'>2023-07-17 "Software Developers Career Guide and Soft Skills" book notes</a><br /> -<a class='textlink' href='./2023-05-06-the-obstacle-is-the-way-book-notes.html'>2023-05-06 "The Obstacle is the Way" book notes</a><br /> -<a class='textlink' href='./2023-04-01-never-split-the-difference-book-notes.html'>2023-04-01 "Never split the difference" book notes</a><br /> -<a class='textlink' href='./2023-03-16-the-pragmatic-programmer-book-notes.html'>2023-03-16 "The Pragmatic Programmer" book notes</a><br /> +<a class='textlink' href='./2025-11-02-the-courage-to-be-disliked-book-notes.html'>2025-11-02 'The Courage To Be Disliked' book notes</a><br /> +<a class='textlink' href='./2025-06-07-a-monks-guide-to-happiness-book-notes.html'>2025-06-07 'A Monk's Guide to Happiness' book notes (You are currently reading this)</a><br /> +<a class='textlink' href='./2025-04-19-when-book-notes.html'>2025-04-19 'When: The Scientific Secrets of Perfect Timing' book notes</a><br /> +<a class='textlink' href='./2024-10-24-staff-engineer-book-notes.html'>2024-10-24 'Staff Engineer' book notes</a><br /> +<a class='textlink' href='./2024-07-07-the-stoic-challenge-book-notes.html'>2024-07-07 'The Stoic Challenge' book notes</a><br /> +<a class='textlink' href='./2024-05-01-slow-productivity-book-notes.html'>2024-05-01 'Slow Productivity' book notes</a><br /> +<a class='textlink' href='./2023-11-11-mind-management-book-notes.html'>2023-11-11 'Mind Management' book notes</a><br /> +<a class='textlink' href='./2023-07-17-career-guide-and-soft-skills-book-notes.html'>2023-07-17 'Software Developers Career Guide and Soft Skills' book notes</a><br /> +<a class='textlink' href='./2023-05-06-the-obstacle-is-the-way-book-notes.html'>2023-05-06 'The Obstacle is the Way' book notes</a><br /> +<a class='textlink' href='./2023-04-01-never-split-the-difference-book-notes.html'>2023-04-01 'Never split the difference' book notes</a><br /> +<a class='textlink' href='./2023-03-16-the-pragmatic-programmer-book-notes.html'>2023-03-16 'The Pragmatic Programmer' book notes</a><br /> <br /> <a class='textlink' href='../'>Back to the main site</a><br /> </div> @@ -12408,7 +12410,7 @@ earth$ curl https://ifconfig.me <i><font color="silver"># Should show gateway's <br /> <a class='textlink' href='https://pragprog.com/titles/bhtmux2/tmux-2/'>https://pragprog.com/titles/bhtmux2/tmux-2/</a><br /> <br /> -<span>Over the years, I have built a couple of shell helper functions to optimize my workflows. Tmux is extensively integrated into my daily workflows (personal and work). I had colleagues asking me about my Tmux config and helper scripts for Tmux several times. It would be neat to blog about it so that everyone interested in it can make a copy of my configuration and scripts.</span><br /> +<span>Over the years, I have built a couple of shell helper functions to optimize my workflows. Tmux is extensively integrated into my daily workflows (personal and work). I had colleagues asking me about my Tmux config and helper scripts for Tmux several times. It would be neat to blog about it so that everyone interested in it can make a copy of my configuration and scripts.</span><br /> <br /> <span>The configuration and scripts in this blog post are only the non-work-specific parts. There are more helper scripts, which I only use for work (and aren't really useful outside of work due to the way servers and clusters are structured there).</span><br /> <br /> @@ -12554,7 +12556,7 @@ end <br /> <ul> <li>...the first argument will be the session name (see <span class='inlinecode'>tmux::tssh_from_argument</span> helper function), and all remaining arguments will be server hostnames/FQDNs to connect to simultaneously.</li> -<li>...or, the first argument is a file name, and the file contains a list of hostnames/FQDNs (see <span class='inlinecode'>tmux::ssh_from_file</span> helper function)</li> +<li>...or, the first argument is a file name, and the file contains a list of hostnames/FQDNs (see <span class='inlinecode'>tmux::ssh_from_file</span> helper function)</li> </ul><br /> <span>This is the function definition behind the <span class='inlinecode'>tssh</span> alias:</span><br /> <span> </span><br /> @@ -12651,7 +12653,7 @@ $ tssh manyservers.txt <br /> <span>Once I have identified the terminal text to be copied, I enter visual select mode with <span class='inlinecode'>v</span>, highlight all the text to be copied (using arrow keys or Vi motions), and press <span class='inlinecode'>y</span> to yank it (sorry if this all sounds a bit complicated, but Vim/NeoVim users will know this, as it is pretty much how you do it there as well).</span><br /> <br /> -<span>For <span class='inlinecode'>v</span> and <span class='inlinecode'>y</span> to work, the following has to be added to the Tmux configuration file: </span><br /> +<span>For <span class='inlinecode'>v</span> and <span class='inlinecode'>y</span> to work, the following has to be added to the Tmux configuration file: </span><br /> <br /> <pre> bind-key -T copy-mode-vi 'v' send -X begin-selection @@ -12845,10 +12847,11 @@ __ejm\___/________dwb`---`______________________ </ul><br /> <h2 style='display: inline' id='final-impressions'>Final Impressions</h2><br /> <br /> -<span>- The concluding experience of a vacation significantly influences overall memories.</span><br /> -<span>- Restaurant reviews often hinge on the end of the visit, highlighting extras like wrong bills or additional desserts.</span><br /> -<span>- Considering one's older future self can motivate improvements in the present.</span><br /> -<br /> +<ul> +<li>The concluding experience of a vacation significantly influences overall memories.</li> +<li>Restaurant reviews often hinge on the end of the visit, highlighting extras like wrong bills or additional desserts.</li> +<li>Considering one's older future self can motivate improvements in the present.</li> +</ul><br /> <h2 style='display: inline' id='the-midlife-u-curve'>The Midlife U Curve</h2><br /> <br /> <span>Life satisfaction tends to dip in midlife, around the forties, but increases around age 54.</span><br /> @@ -12865,17 +12868,17 @@ __ejm\___/________dwb`---`______________________ <br /> <span>Other book notes of mine are:</span><br /> <br /> -<a class='textlink' href='./2025-11-02-the-courage-to-be-disliked-book-notes.html'>2025-11-02 "The Courage To Be Disliked" book notes</a><br /> -<a class='textlink' href='./2025-06-07-a-monks-guide-to-happiness-book-notes.html'>2025-06-07 "A Monk's Guide to Happiness" book notes</a><br /> -<a class='textlink' href='./2025-04-19-when-book-notes.html'>2025-04-19 "When: The Scientific Secrets of Perfect Timing" book notes (You are currently reading this)</a><br /> -<a class='textlink' href='./2024-10-24-staff-engineer-book-notes.html'>2024-10-24 "Staff Engineer" book notes</a><br /> -<a class='textlink' href='./2024-07-07-the-stoic-challenge-book-notes.html'>2024-07-07 "The Stoic Challenge" book notes</a><br /> -<a class='textlink' href='./2024-05-01-slow-productivity-book-notes.html'>2024-05-01 "Slow Productivity" book notes</a><br /> -<a class='textlink' href='./2023-11-11-mind-management-book-notes.html'>2023-11-11 "Mind Management" book notes</a><br /> -<a class='textlink' href='./2023-07-17-career-guide-and-soft-skills-book-notes.html'>2023-07-17 "Software Developers Career Guide and Soft Skills" book notes</a><br /> -<a class='textlink' href='./2023-05-06-the-obstacle-is-the-way-book-notes.html'>2023-05-06 "The Obstacle is the Way" book notes</a><br /> -<a class='textlink' href='./2023-04-01-never-split-the-difference-book-notes.html'>2023-04-01 "Never split the difference" book notes</a><br /> -<a class='textlink' href='./2023-03-16-the-pragmatic-programmer-book-notes.html'>2023-03-16 "The Pragmatic Programmer" book notes</a><br /> +<a class='textlink' href='./2025-11-02-the-courage-to-be-disliked-book-notes.html'>2025-11-02 'The Courage To Be Disliked' book notes</a><br /> +<a class='textlink' href='./2025-06-07-a-monks-guide-to-happiness-book-notes.html'>2025-06-07 'A Monk's Guide to Happiness' book notes</a><br /> +<a class='textlink' href='./2025-04-19-when-book-notes.html'>2025-04-19 'When: The Scientific Secrets of Perfect Timing' book notes (You are currently reading this)</a><br /> +<a class='textlink' href='./2024-10-24-staff-engineer-book-notes.html'>2024-10-24 'Staff Engineer' book notes</a><br /> +<a class='textlink' href='./2024-07-07-the-stoic-challenge-book-notes.html'>2024-07-07 'The Stoic Challenge' book notes</a><br /> +<a class='textlink' href='./2024-05-01-slow-productivity-book-notes.html'>2024-05-01 'Slow Productivity' book notes</a><br /> +<a class='textlink' href='./2023-11-11-mind-management-book-notes.html'>2023-11-11 'Mind Management' book notes</a><br /> +<a class='textlink' href='./2023-07-17-career-guide-and-soft-skills-book-notes.html'>2023-07-17 'Software Developers Career Guide and Soft Skills' book notes</a><br /> +<a class='textlink' href='./2023-05-06-the-obstacle-is-the-way-book-notes.html'>2023-05-06 'The Obstacle is the Way' book notes</a><br /> +<a class='textlink' href='./2023-04-01-never-split-the-difference-book-notes.html'>2023-04-01 'Never split the difference' book notes</a><br /> +<a class='textlink' href='./2023-03-16-the-pragmatic-programmer-book-notes.html'>2023-03-16 'The Pragmatic Programmer' book notes</a><br /> <br /> <a class='textlink' href='../'>Back to the main site</a><br /> </div> @@ -13219,7 +13222,7 @@ END </ul><br /> <h3 style='display: inline' id='permitting-root-login'>Permitting root login</h3><br /> <br /> -<span>As these VMs aren't directly reachable via SSH from the internet, we enable <span class='inlinecode'>root</span> login by adding a line with <span class='inlinecode'>PermitRootLogin yes</span> to <span class='inlinecode'>/etc/sshd/sshd_config</span>.</span><br /> +<span>As these VMs aren't directly reachable via SSH from the internet, we enable <span class='inlinecode'>root</span> login by adding a line with <span class='inlinecode'>PermitRootLogin yes</span> to <span class='inlinecode'>/etc/sshd/sshd_config</span>.</span><br /> <br /> <span>Once done, we reboot the VM by running <span class='inlinecode'>reboot</span> inside the VM to test whether everything was configured and persisted correctly.</span><br /> <br /> @@ -14750,14 +14753,14 @@ Jan 26 17:36:32 f2 apcupsd[2159]: apcupsd shutdown succeeded <name>Paul Buetow aka snonux</name> <email>paul@dev.buetow.org</email> </author> - <summary>I have been interviewed by Florian Buetow on `cracking-ai-engineering.com` about what it's like working with a Site Reliability Engineer from the point of view of a Software Engineer, Data Scientist, and AI Engineer.</summary> + <summary>I have been interviewed by Florian Buetow on `cracking-ai-engineering.com` about what it's like working with a Site Reliability Engineer from the point of view of a Software Engineer, Data Scientist, and AI Engineer.</summary> <content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml"> <h1 style='display: inline' id='working-with-an-sre-interview'>Working with an SRE Interview</h1><br /> <br /> <span class='quote'>Published at 2025-01-15T00:16:04+02:00</span><br /> <br /> -<span>I have been interviewed by Florian Buetow on <span class='inlinecode'>cracking-ai-engineering.com</span> about what it's like working with a Site Reliability Engineer from the point of view of a Software Engineer, Data Scientist, and AI Engineer.</span><br /> +<span>I have been interviewed by Florian Buetow on <span class='inlinecode'>cracking-ai-engineering.com</span> about what it's like working with a Site Reliability Engineer from the point of view of a Software Engineer, Data Scientist, and AI Engineer.</span><br /> <br /> <a class='textlink' href='https://www.cracking-ai-engineering.com/writing/2025/01/12/working-with-an-sre-interview/'>See original interview here</a><br /> <a class='textlink' href='https://www.cracking-ai-engineering.com'>Cracking AI Engineering</a><br /> @@ -14819,7 +14822,7 @@ Jan 26 17:36:32 f2 apcupsd[2159]: apcupsd shutdown succeeded <br /> <span>What are the differences between SRE, DevOps, SysAdmin, and Architects?</span><br /> <br /> -<span class='quote'>SREs are like the next step after SysAdmins. A SysAdmin might manually install servers, replace disks, or use simple scripts for automation, while SREs use infrastructure as code and focus on reliability through SLIs, SLOs, and automation. DevOps isn’t really a job-it’s more of a way of working, where developers are involved in operations tasks like setting up CI/CD pipelines or on-call shifts. Architects focus on designing systems and infrastructures, such as load balancers or distributed systems, working alongside SREs to ensure the systems meet the reliability and scalability requirements. The specific responsibilities of each role depend on the company, and there is often overlap. </span><br /> +<span class='quote'>SREs are like the next step after SysAdmins. A SysAdmin might manually install servers, replace disks, or use simple scripts for automation, while SREs use infrastructure as code and focus on reliability through SLIs, SLOs, and automation. DevOps isn’t really a job-it’s more of a way of working, where developers are involved in operations tasks like setting up CI/CD pipelines or on-call shifts. Architects focus on designing systems and infrastructures, such as load balancers or distributed systems, working alongside SREs to ensure the systems meet the reliability and scalability requirements. The specific responsibilities of each role depend on the company, and there is often overlap. </span><br /> <br /> <span>What are the most important reliability lessons you’ve learned so far?</span><br /> <br /> @@ -14837,11 +14840,11 @@ Jan 26 17:36:32 f2 apcupsd[2159]: apcupsd shutdown succeeded <br /> <span>When should you decide to put something into a runbook, and when is it unnecessary?</span><br /> <br /> -<span class='quote'>If an issue happens frequently, it should be documented in a runbook so that anyone, even someone new, can follow the steps to fix it. The idea is that 90% of the common incidents should be covered. For example, if a service is down, the runbook would specify where to find logs, which commands to check, and what actions to take. On the other hand, rare or complex issues, where the resolution depends heavily on context or varies each time, don’t make sense to include in detail. For those, it’s better to focus on general troubleshooting steps. </span><br /> +<span class='quote'>If an issue happens frequently, it should be documented in a runbook so that anyone, even someone new, can follow the steps to fix it. The idea is that 90% of the common incidents should be covered. For example, if a service is down, the runbook would specify where to find logs, which commands to check, and what actions to take. On the other hand, rare or complex issues, where the resolution depends heavily on context or varies each time, don’t make sense to include in detail. For those, it’s better to focus on general troubleshooting steps. </span><br /> <br /> <span>How do you search for and find the correct runbooks?</span><br /> <br /> -<span class='quote'>Runbooks should be linked directly in the alert you receive. For example, if you get an alert about a service not running, the alert will have a link to the runbook that tells you what to check, like logs or commands to run. Runbooks are best stored in an internal wiki, so if you don’t find the link in the alert, you know where to search. The important thing is that runbooks are easy to find and up to date because that’s what makes them useful during incidents. </span><br /> +<span class='quote'>Runbooks should be linked directly in the alert you receive. For example, if you get an alert about a service not running, the alert will have a link to the runbook that tells you what to check, like logs or commands to run. Runbooks are best stored in an internal wiki, so if you don’t find the link in the alert, you know where to search. The important thing is that runbooks are easy to find and up to date because that’s what makes them useful during incidents. </span><br /> <br /> <span>Do you have an interesting war story you can share with us?</span><br /> <br /> @@ -15421,7 +15424,7 @@ Jan 26 17:36:32 f2 apcupsd[2159]: apcupsd shutdown succeeded <li>500 GB M.2 SSD, with the option to install a 2nd 2.5 SSD drive (which I want to make use of later in this blog series).</li> <li>GBit ethernet</li> <li>Four USB 3.2 Gen2 ports (maybe I want to mount something externally at some point)</li> -<li>Dimensions and weight: 115*102*39mm, 280g</li> +<li>Dimensions and weight: 115*102*39mm, 280g</li> <li>Silent cooling system.</li> <li>HDMI output (needed only for the initial installation and maybe for troubleshooting later)</li> <li>Auto power on via WoL (may make use of it)</li> @@ -16224,17 +16227,17 @@ http://www.gnu.org/software/src-highlite --> <br /> <span>Other book notes of mine are:</span><br /> <br /> -<a class='textlink' href='./2025-11-02-the-courage-to-be-disliked-book-notes.html'>2025-11-02 "The Courage To Be Disliked" book notes</a><br /> -<a class='textlink' href='./2025-06-07-a-monks-guide-to-happiness-book-notes.html'>2025-06-07 "A Monk's Guide to Happiness" book notes</a><br /> -<a class='textlink' href='./2025-04-19-when-book-notes.html'>2025-04-19 "When: The Scientific Secrets of Perfect Timing" book notes</a><br /> -<a class='textlink' href='./2024-10-24-staff-engineer-book-notes.html'>2024-10-24 "Staff Engineer" book notes (You are currently reading this)</a><br /> -<a class='textlink' href='./2024-07-07-the-stoic-challenge-book-notes.html'>2024-07-07 "The Stoic Challenge" book notes</a><br /> -<a class='textlink' href='./2024-05-01-slow-productivity-book-notes.html'>2024-05-01 "Slow Productivity" book notes</a><br /> -<a class='textlink' href='./2023-11-11-mind-management-book-notes.html'>2023-11-11 "Mind Management" book notes</a><br /> -<a class='textlink' href='./2023-07-17-career-guide-and-soft-skills-book-notes.html'>2023-07-17 "Software Developers Career Guide and Soft Skills" book notes</a><br /> -<a class='textlink' href='./2023-05-06-the-obstacle-is-the-way-book-notes.html'>2023-05-06 "The Obstacle is the Way" book notes</a><br /> -<a class='textlink' href='./2023-04-01-never-split-the-difference-book-notes.html'>2023-04-01 "Never split the difference" book notes</a><br /> -<a class='textlink' href='./2023-03-16-the-pragmatic-programmer-book-notes.html'>2023-03-16 "The Pragmatic Programmer" book notes</a><br /> +<a class='textlink' href='./2025-11-02-the-courage-to-be-disliked-book-notes.html'>2025-11-02 'The Courage To Be Disliked' book notes</a><br /> +<a class='textlink' href='./2025-06-07-a-monks-guide-to-happiness-book-notes.html'>2025-06-07 'A Monk's Guide to Happiness' book notes</a><br /> +<a class='textlink' href='./2025-04-19-when-book-notes.html'>2025-04-19 'When: The Scientific Secrets of Perfect Timing' book notes</a><br /> +<a class='textlink' href='./2024-10-24-staff-engineer-book-notes.html'>2024-10-24 'Staff Engineer' book notes (You are currently reading this)</a><br /> +<a class='textlink' href='./2024-07-07-the-stoic-challenge-book-notes.html'>2024-07-07 'The Stoic Challenge' book notes</a><br /> +<a class='textlink' href='./2024-05-01-slow-productivity-book-notes.html'>2024-05-01 'Slow Productivity' book notes</a><br /> +<a class='textlink' href='./2023-11-11-mind-management-book-notes.html'>2023-11-11 'Mind Management' book notes</a><br /> +<a class='textlink' href='./2023-07-17-career-guide-and-soft-skills-book-notes.html'>2023-07-17 'Software Developers Career Guide and Soft Skills' book notes</a><br /> +<a class='textlink' href='./2023-05-06-the-obstacle-is-the-way-book-notes.html'>2023-05-06 'The Obstacle is the Way' book notes</a><br /> +<a class='textlink' href='./2023-04-01-never-split-the-difference-book-notes.html'>2023-04-01 'Never split the difference' book notes</a><br /> +<a class='textlink' href='./2023-03-16-the-pragmatic-programmer-book-notes.html'>2023-03-16 'The Pragmatic Programmer' book notes</a><br /> <br /> <a class='textlink' href='../'>Back to the main site</a><br /> </div> @@ -16402,7 +16405,7 @@ jgs \\`_..---.Y.---.._`// <br /> <span>Comprehensive Runbooks: We created 64 runbooks (by the time writing this probably more than 100) that are composable like Lego bricks. Each runbook covers a specific scenario and guides the engineer step-by-step to resolution. Pairing these with monitoring alerts linked directly to Confluence docs, and from there to the respective runbooks, ensures every alert can be navigated with ease (well, there are always exceptions to the rule...).</span><br /> <br /> -<span>Self-Sufficiency & Confidence Building: With all these resources at their fingertips, our on-call engineers become self-sufficient for most of the common issues they'll face (new starters can now handle around 80% of the most common issue after 6 weeks they had joined the company). This boosts their confidence and ensures they can handle Tier-1 incidents independently.</span><br /> +<span>Self-Sufficiency & Confidence Building: With all these resources at their fingertips, our on-call engineers become self-sufficient for most of the common issues they'll face (new starters can now handle around 80% of the most common issue after 6 weeks they had joined the company). This boosts their confidence and ensures they can handle Tier-1 incidents independently.</span><br /> <br /> <span>Documentation and Feedback Loop: Continuous improvement is key. We regularly update our documentation based on feedback from the engineers. This makes our process even more robust and user-friendly.</span><br /> <br /> @@ -16773,7 +16776,7 @@ jgs \\`_..---.Y.---.._`// <br /> <span>As mentioned, the Kinesis is a great keyboard, but it is not meant for travel.</span><br /> <br /> -<span>I guess keyboards will always be my expensive hobby, so I also purchased another ergonomic, ortho-linear, concave split keyboard, the Glove80 (with the Red Pro low-profile switches). This keyboard is much lighter and, in my opinion, much better suited for travel than the Kinesis. It also comes with a great travel case. </span><br /> +<span>I guess keyboards will always be my expensive hobby, so I also purchased another ergonomic, ortho-linear, concave split keyboard, the Glove80 (with the Red Pro low-profile switches). This keyboard is much lighter and, in my opinion, much better suited for travel than the Kinesis. It also comes with a great travel case. </span><br /> <br /> <span>Here is a photo of me using it with my Surface Go 2 (it runs Linux, by the way) while waiting for the baggage drop at the airport:</span><br /> <br /> @@ -16822,14 +16825,14 @@ jgs \\`_..---.Y.---.._`// <name>Paul Buetow aka snonux</name> <email>paul@dev.buetow.org</email> </author> - <summary>These are my personal takeaways after reading 'The Stoic Challenge: A Philosopher's Guide to Becoming Tougher, Calmer, and More Resilient' by William B. Irvine. </summary> + <summary>These are my personal takeaways after reading 'The Stoic Challenge: A Philosopher's Guide to Becoming Tougher, Calmer, and More Resilient' by William B. Irvine. </summary> <content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml"> <h1 style='display: inline' id='the-stoic-challenge-book-notes'>"The Stoic Challenge" book notes</h1><br /> <br /> <span class='quote'>Published at 2024-07-07T12:46:55+03:00</span><br /> <br /> -<span>These are my personal takeaways after reading "The Stoic Challenge: A Philosopher's Guide to Becoming Tougher, Calmer, and More Resilient" by William B. Irvine. </span><br /> +<span>These are my personal takeaways after reading "The Stoic Challenge: A Philosopher's Guide to Becoming Tougher, Calmer, and More Resilient" by William B. Irvine. </span><br /> <br /> <pre> ,.......... .........., @@ -16887,17 +16890,17 @@ jgs \\`_..---.Y.---.._`// <br /> <span>Other book notes of mine are:</span><br /> <br /> -<a class='textlink' href='./2025-11-02-the-courage-to-be-disliked-book-notes.html'>2025-11-02 "The Courage To Be Disliked" book notes</a><br /> -<a class='textlink' href='./2025-06-07-a-monks-guide-to-happiness-book-notes.html'>2025-06-07 "A Monk's Guide to Happiness" book notes</a><br /> -<a class='textlink' href='./2025-04-19-when-book-notes.html'>2025-04-19 "When: The Scientific Secrets of Perfect Timing" book notes</a><br /> -<a class='textlink' href='./2024-10-24-staff-engineer-book-notes.html'>2024-10-24 "Staff Engineer" book notes</a><br /> -<a class='textlink' href='./2024-07-07-the-stoic-challenge-book-notes.html'>2024-07-07 "The Stoic Challenge" book notes (You are currently reading this)</a><br /> -<a class='textlink' href='./2024-05-01-slow-productivity-book-notes.html'>2024-05-01 "Slow Productivity" book notes</a><br /> -<a class='textlink' href='./2023-11-11-mind-management-book-notes.html'>2023-11-11 "Mind Management" book notes</a><br /> -<a class='textlink' href='./2023-07-17-career-guide-and-soft-skills-book-notes.html'>2023-07-17 "Software Developers Career Guide and Soft Skills" book notes</a><br /> -<a class='textlink' href='./2023-05-06-the-obstacle-is-the-way-book-notes.html'>2023-05-06 "The Obstacle is the Way" book notes</a><br /> -<a class='textlink' href='./2023-04-01-never-split-the-difference-book-notes.html'>2023-04-01 "Never split the difference" book notes</a><br /> -<a class='textlink' href='./2023-03-16-the-pragmatic-programmer-book-notes.html'>2023-03-16 "The Pragmatic Programmer" book notes</a><br /> +<a class='textlink' href='./2025-11-02-the-courage-to-be-disliked-book-notes.html'>2025-11-02 'The Courage To Be Disliked' book notes</a><br /> +<a class='textlink' href='./2025-06-07-a-monks-guide-to-happiness-book-notes.html'>2025-06-07 'A Monk's Guide to Happiness' book notes</a><br /> +<a class='textlink' href='./2025-04-19-when-book-notes.html'>2025-04-19 'When: The Scientific Secrets of Perfect Timing' book notes</a><br /> +<a class='textlink' href='./2024-10-24-staff-engineer-book-notes.html'>2024-10-24 'Staff Engineer' book notes</a><br /> +<a class='textlink' href='./2024-07-07-the-stoic-challenge-book-notes.html'>2024-07-07 'The Stoic Challenge' book notes (You are currently reading this)</a><br /> +<a class='textlink' href='./2024-05-01-slow-productivity-book-notes.html'>2024-05-01 'Slow Productivity' book notes</a><br /> +<a class='textlink' href='./2023-11-11-mind-management-book-notes.html'>2023-11-11 'Mind Management' book notes</a><br /> +<a class='textlink' href='./2023-07-17-career-guide-and-soft-skills-book-notes.html'>2023-07-17 'Software Developers Career Guide and Soft Skills' book notes</a><br /> +<a class='textlink' href='./2023-05-06-the-obstacle-is-the-way-book-notes.html'>2023-05-06 'The Obstacle is the Way' book notes</a><br /> +<a class='textlink' href='./2023-04-01-never-split-the-difference-book-notes.html'>2023-04-01 'Never split the difference' book notes</a><br /> +<a class='textlink' href='./2023-03-16-the-pragmatic-programmer-book-notes.html'>2023-03-16 'The Pragmatic Programmer' book notes</a><br /> <br /> <a class='textlink' href='../'>Back to the main site</a><br /> </div> @@ -17019,7 +17022,7 @@ traceroute to bad.horse (<font color="#000000">162.252</font>.<font color="#0000 <span>Netflix has got the Hello World application run in production 😱</span><br /> <br /> <ul> -<li> https://www.Netflix.com/helloworld</li> +<li>https://www.Netflix.com/helloworld</li> </ul><br /> <span class='quote'>By the time this is posted, it seems that Netflix has taken it offline... I should have created a screenshot!</span><br /> <br /> @@ -17375,7 +17378,7 @@ jgs `-=========-`() <br /> <a class='textlink' href='https://pragprog.com/titles/bhtmux2/tmux-2/'>https://pragprog.com/titles/bhtmux2/tmux-2/</a><br /> <br /> -<span>Over the years, I have built a couple of shell helper functions to optimize my workflows. Tmux is extensively integrated into my daily workflows (personal and work). I had colleagues asking me about my Tmux config and helper scripts for Tmux several times. It would be neat to blog about it so that everyone interested in it can make a copy of my configuration and scripts.</span><br /> +<span>Over the years, I have built a couple of shell helper functions to optimize my workflows. Tmux is extensively integrated into my daily workflows (personal and work). I had colleagues asking me about my Tmux config and helper scripts for Tmux several times. It would be neat to blog about it so that everyone interested in it can make a copy of my configuration and scripts.</span><br /> <br /> <span>The configuration and scripts in this blog post are only the non-work-specific parts. There are more helper scripts, which I only use for work (and aren't really useful outside of work due to the way servers and clusters are structured there).</span><br /> <br /> @@ -17546,7 +17549,7 @@ http://www.gnu.org/software/src-highlite --> <br /> <ul> <li>...the first argument will be the session name (see <span class='inlinecode'>tmux::tssh_from_argument</span> helper function), and all remaining arguments will be server hostnames/FQDNs to connect to simultaneously.</li> -<li>...or, the first argument is a file name, and the file contains a list of hostnames/FQDNs (see <span class='inlinecode'>tmux::ssh_from_file</span> helper function)</li> +<li>...or, the first argument is a file name, and the file contains a list of hostnames/FQDNs (see <span class='inlinecode'>tmux::ssh_from_file</span> helper function)</li> </ul><br /> <span>This is the function definition behind the <span class='inlinecode'>tssh</span> alias:</span><br /> <span> </span><br /> @@ -17653,7 +17656,7 @@ $ tssh manyservers.txt <br /> <span>Once I have identified the terminal text to be copied, I enter visual select mode with <span class='inlinecode'>v</span>, highlight all the text to be copied (using arrow keys or Vi motions), and press <span class='inlinecode'>y</span> to yank it (sorry if this all sounds a bit complicated, but Vim/NeoVim users will know this, as it is pretty much how you do it there as well).</span><br /> <br /> -<span>For <span class='inlinecode'>v</span> and <span class='inlinecode'>y</span> to work, the following has to be added to the Tmux configuration file: </span><br /> +<span>For <span class='inlinecode'>v</span> and <span class='inlinecode'>y</span> to work, the following has to be added to the Tmux configuration file: </span><br /> <br /> <pre> bind-key -T copy-mode-vi 'v' send -X begin-selection @@ -18237,17 +18240,17 @@ http://www.gnu.org/software/src-highlite --> <br /> <span>Other book notes of mine are:</span><br /> <br /> -<a class='textlink' href='./2025-11-02-the-courage-to-be-disliked-book-notes.html'>2025-11-02 "The Courage To Be Disliked" book notes</a><br /> -<a class='textlink' href='./2025-06-07-a-monks-guide-to-happiness-book-notes.html'>2025-06-07 "A Monk's Guide to Happiness" book notes</a><br /> -<a class='textlink' href='./2025-04-19-when-book-notes.html'>2025-04-19 "When: The Scientific Secrets of Perfect Timing" book notes</a><br /> -<a class='textlink' href='./2024-10-24-staff-engineer-book-notes.html'>2024-10-24 "Staff Engineer" book notes</a><br /> -<a class='textlink' href='./2024-07-07-the-stoic-challenge-book-notes.html'>2024-07-07 "The Stoic Challenge" book notes</a><br /> -<a class='textlink' href='./2024-05-01-slow-productivity-book-notes.html'>2024-05-01 "Slow Productivity" book notes (You are currently reading this)</a><br /> -<a class='textlink' href='./2023-11-11-mind-management-book-notes.html'>2023-11-11 "Mind Management" book notes</a><br /> -<a class='textlink' href='./2023-07-17-career-guide-and-soft-skills-book-notes.html'>2023-07-17 "Software Developers Career Guide and Soft Skills" book notes</a><br /> -<a class='textlink' href='./2023-05-06-the-obstacle-is-the-way-book-notes.html'>2023-05-06 "The Obstacle is the Way" book notes</a><br /> -<a class='textlink' href='./2023-04-01-never-split-the-difference-book-notes.html'>2023-04-01 "Never split the difference" book notes</a><br /> -<a class='textlink' href='./2023-03-16-the-pragmatic-programmer-book-notes.html'>2023-03-16 "The Pragmatic Programmer" book notes</a><br /> +<a class='textlink' href='./2025-11-02-the-courage-to-be-disliked-book-notes.html'>2025-11-02 'The Courage To Be Disliked' book notes</a><br /> +<a class='textlink' href='./2025-06-07-a-monks-guide-to-happiness-book-notes.html'>2025-06-07 'A Monk's Guide to Happiness' book notes</a><br /> +<a class='textlink' href='./2025-04-19-when-book-notes.html'>2025-04-19 'When: The Scientific Secrets of Perfect Timing' book notes</a><br /> +<a class='textlink' href='./2024-10-24-staff-engineer-book-notes.html'>2024-10-24 'Staff Engineer' book notes</a><br /> +<a class='textlink' href='./2024-07-07-the-stoic-challenge-book-notes.html'>2024-07-07 'The Stoic Challenge' book notes</a><br /> +<a class='textlink' href='./2024-05-01-slow-productivity-book-notes.html'>2024-05-01 'Slow Productivity' book notes (You are currently reading this)</a><br /> +<a class='textlink' href='./2023-11-11-mind-management-book-notes.html'>2023-11-11 'Mind Management' book notes</a><br /> +<a class='textlink' href='./2023-07-17-career-guide-and-soft-skills-book-notes.html'>2023-07-17 'Software Developers Career Guide and Soft Skills' book notes</a><br /> +<a class='textlink' href='./2023-05-06-the-obstacle-is-the-way-book-notes.html'>2023-05-06 'The Obstacle is the Way' book notes</a><br /> +<a class='textlink' href='./2023-04-01-never-split-the-difference-book-notes.html'>2023-04-01 'Never split the difference' book notes</a><br /> +<a class='textlink' href='./2023-03-16-the-pragmatic-programmer-book-notes.html'>2023-03-16 'The Pragmatic Programmer' book notes</a><br /> <br /> <a class='textlink' href='../'>Back to the main site</a><br /> </div> |
