summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gemfeed/2024-04-01-KISS-high-availability-with-OpenBSD.gmi14
-rw-r--r--gemfeed/2024-05-03-projects-i-currently-dont-have-time-for.gmi38
-rw-r--r--gemfeed/2024-06-23-terminal-multiplexing-with-tmux.gmi20
-rw-r--r--gemfeed/atom.xml.tmp9144
-rw-r--r--index.gmi4
-rw-r--r--uptime-stats.gmi4
6 files changed, 9224 insertions, 0 deletions
diff --git a/gemfeed/2024-04-01-KISS-high-availability-with-OpenBSD.gmi b/gemfeed/2024-04-01-KISS-high-availability-with-OpenBSD.gmi
index ccfbd796..2937f154 100644
--- a/gemfeed/2024-04-01-KISS-high-availability-with-OpenBSD.gmi
+++ b/gemfeed/2024-04-01-KISS-high-availability-with-OpenBSD.gmi
@@ -29,6 +29,7 @@ _____|_:_:_| (o)-(o) |_:_:_|--'`-. ,--. ksh under-water (((\'/
## Table of Contents
+<<<<<<< HEAD
* ⇢ KISS high-availability with OpenBSD
* ⇢ ⇢ My auto-failover requirements
* ⇢ ⇢ My HA solution
@@ -40,6 +41,19 @@ _____|_:_:_| (o)-(o) |_:_:_|--'`-. ,--. ksh under-water (((\'/
* ⇢ ⇢ ⇢ Monitoring
* ⇢ ⇢ ⇢ Rex automation
* ⇢ ⇢ More HA
+=======
+* . KISS high-availability with OpenBSD
+* .. My auto-failover requirements
+* .. My HA solution
+* ... Only OpenBSD base installation required
+* ... Fairly cheap and geo-redundant
+* ... Failover time and split-brain
+* ... Failover support for multiple protocols
+* ... Let's encrypt TLS certificates
+* ... Monitoring
+* ... Rex automation
+* .. More HA
+>>>>>>> 5cb2199b2dfe5ac5d7a677a86e2ceddc125044d8
I have always wanted a highly available setup for my personal websites. I could have used off-the-shelf hosting solutions or hosted my sites in an AWS S3 bucket. I have used technologies like (in unsorted and slightly unrelated order) BGP, LVS/IPVS, ldirectord, Pacemaker, STONITH, scripted VIP failover via ARP, heartbeat, heartbeat2, Corosync, keepalived, DRBD, and commercial F5 Load Balancers for high availability at work.
diff --git a/gemfeed/2024-05-03-projects-i-currently-dont-have-time-for.gmi b/gemfeed/2024-05-03-projects-i-currently-dont-have-time-for.gmi
index 480dd889..fa69ee55 100644
--- a/gemfeed/2024-05-03-projects-i-currently-dont-have-time-for.gmi
+++ b/gemfeed/2024-05-03-projects-i-currently-dont-have-time-for.gmi
@@ -21,6 +21,7 @@ Over the years, I have collected many ideas for my personal projects and noted t
## Table of Contents
+<<<<<<< HEAD
* ⇢ Projects I currently don't have time for
* ⇢ ⇢ Introduction
* ⇢ ⇢ Hardware projects I don't have time for
@@ -56,6 +57,43 @@ Over the years, I have collected many ideas for my personal projects and noted t
* ⇢ ⇢ Research projects I don't have time for
* ⇢ ⇢ ⇢ Project secure
* ⇢ ⇢ ⇢ CPU utilisation is all wrong
+=======
+* . Projects I currently don't have time for
+* .. Introduction
+* .. Hardware projects I don't have time for
+* ... I use Arch, btw!
+* ... OpenBSD home router
+* ... Pi-Hole server
+* ... Infodash
+* ... Reading station
+* ... Retro station
+* ... Sound server
+* ... Project Freekat
+* .. Programming projects I don't have time for
+* ... CLI-HIVE
+* ... Enhanced KISS home photo albums
+* ... KISS file sync server with end-to-end encryption
+* ... A language that compiles to `bash`
+* ... A language that compiles to `sed`
+* ... Renovate VS-Sim
+* ... KISS ticketing system
+* ... A domain-specific language (DSL) for work
+* .. Self-hosting projects I don't have time for
+* ... My own Matrix server
+* ... Ampache music server
+* ... Librum eBook reader
+* ... Memos - Note-taking service
+* ... Bepasty server
+* .. Books I don't have time to read
+* ... Fluent Python
+* ... Programming Ruby
+* ... Peter F. Hamilton science fiction books
+* .. New websites I don't have time for
+* ... Create a "Why Raku Rox" site
+* .. Research projects I don't have time for
+* ... Project secure
+* ... CPU utilisation is all wrong
+>>>>>>> 5cb2199b2dfe5ac5d7a677a86e2ceddc125044d8
## Hardware projects I don't have time for
diff --git a/gemfeed/2024-06-23-terminal-multiplexing-with-tmux.gmi b/gemfeed/2024-06-23-terminal-multiplexing-with-tmux.gmi
index ff6b266d..75646923 100644
--- a/gemfeed/2024-06-23-terminal-multiplexing-with-tmux.gmi
+++ b/gemfeed/2024-06-23-terminal-multiplexing-with-tmux.gmi
@@ -16,6 +16,7 @@ jgs `-=========-`()
## Table of Contents
+<<<<<<< HEAD
* ⇢ Terminal multiplexing with `tmux`
* ⇢ ⇢ Introduction
* ⇢ ⇢ Shell aliases
@@ -33,6 +34,25 @@ jgs `-=========-`()
* ⇢ ⇢ ⇢ Common Tmux commands I use in `tssh`
* ⇢ ⇢ Copy and paste workflow
* ⇢ ⇢ Tmux configurations
+=======
+* . Terminal multiplexing with `tmux`
+* .. Introduction
+* .. Shell aliases
+* .. The `tn` alias - Creating a new session
+* ... Cleaning up default sessions automatically
+* ... Renaming sessions
+* .. The `ta` alias - Attaching to a session
+* .. The `tr` alias - For a nested remote session
+* ... Change of the Tmux prefix for better nesting
+* .. The `ts` alias - Searching sessions with fuzzy finder
+* .. The `tssh` alias - Cluster SSH replacement
+* ... The `tmux::tssh_from_argument` helper
+* ... The `tmux::tssh_from_file` helper
+* ... `tssh` examples
+* ... Common Tmux commands I use in `tssh`
+* .. Copy and paste workflow
+* .. Tmux configurations
+>>>>>>> 5cb2199b2dfe5ac5d7a677a86e2ceddc125044d8
## Introduction
diff --git a/gemfeed/atom.xml.tmp b/gemfeed/atom.xml.tmp
new file mode 100644
index 00000000..913da2b7
--- /dev/null
+++ b/gemfeed/atom.xml.tmp
@@ -0,0 +1,9144 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom">
+ <updated>2024-08-24T14:20:28+01:00</updated>
+ <title>foo.zone feed</title>
+ <subtitle>To be in the .zone!</subtitle>
+ <link href="gemini://foo.zone/gemfeed/atom.xml" rel="self" />
+ <link href="gemini://foo.zone/" />
+ <id>gemini://foo.zone/</id>
+ <entry>
+ <title>Typing `127.1` words per minute (`>100wpm average`)</title>
+ <link href="gemini://foo.zone/gemfeed/2024-08-05-typing-127.1-words-per-minute.gmi" />
+ <id>gemini://foo.zone/gemfeed/2024-08-05-typing-127.1-words-per-minute.gmi</id>
+ <updated>2024-08-05T17:39:30+03:00</updated>
+ <author>
+ <name>Paul Buetow aka snonux</name>
+ <email>paul@dev.buetow.org</email>
+ </author>
+ <summary>After work one day, I noticed some discomfort in my right wrist. Upon research, it appeared to be a mild case of Repetitive Strain Injury (RSI). Initially, I thought that this would go away after a while, but after a week it became even worse. This led me to consider potential causes such as poor posture or keyboard use habits. As an enthusiast of keyboards, I experimented with ergonomic concave ortholinear split keyboards. Wait, what?...</summary>
+ <content type="xhtml">
+ <div xmlns="http://www.w3.org/1999/xhtml">
+ <h1 style='display: inline' id='Typing1271wordsperminute100wpmaverage'>Typing <span class='inlinecode'>127.1</span> words per minute (<span class='inlinecode'>&gt;100wpm average</span>)</h1><br />
+<br />
+<span class='quote'>Published at 2024-08-05T17:39:30+03:00</span><br />
+<br />
+<pre>
+,---,---,---,---,---,---,---,---,---,---,---,---,---,-------,
+|1/2| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | + | &#39; | &lt;- |
+|---&#39;-,-&#39;-,-&#39;-,-&#39;-,-&#39;-,-&#39;-,-&#39;-,-&#39;-,-&#39;-,-&#39;-,-&#39;-,-&#39;-,-&#39;-,-----|
+| -&gt;| | Q | W | E | R | T | Y | U | I | O | P | ] | ^ | |
+|-----&#39;,--&#39;,--&#39;,--&#39;,--&#39;,--&#39;,--&#39;,--&#39;,--&#39;,--&#39;,--&#39;,--&#39;,--&#39;| |
+| Caps | A | S | D | F | G | H | J | K | L | \ | [ | * | |
+|----,-&#39;-,-&#39;-,-&#39;-,-&#39;-,-&#39;-,-&#39;-,-&#39;-,-&#39;-,-&#39;-,-&#39;-,-&#39;-,-&#39;---&#39;----|
+| | &lt; | Z | X | C | V | B | N | M | , | . | - | |
+|----&#39;-,-&#39;,--&#39;--,&#39;---&#39;---&#39;---&#39;---&#39;---&#39;---&#39;-,-&#39;---&#39;,--,------|
+| ctrl | | alt | |altgr | | ctrl |
+&#39;------&#39; &#39;-----&#39;--------------------------&#39;------&#39; &#39;------&#39;
+ Nieminen Mika
+</pre>
+<br />
+<span>After work one day, I noticed some discomfort in my right wrist. Upon research, it appeared to be a mild case of Repetitive Strain Injury (RSI). Initially, I thought that this would go away after a while, but after a week it became even worse. This led me to consider potential causes such as poor posture or keyboard use habits. As an enthusiast of keyboards, I experimented with ergonomic concave ortholinear split keyboards. Wait, what?...</span><br />
+<br />
+<ul>
+<li>Concave: Some fingers are longer than others. A concave keyboard makes it so that the keycaps meant to be pressed by the longer fingers are further down (e.g., left middle finger for <span class='inlinecode'>e</span> on a Qwerty layout), and keycaps meant to be pressed by shorter fingers are further up (e.g., right pinky finger for the letter <span class='inlinecode'>p</span>).</li>
+<li>Ortholinear: The keys are arranged in a straight vertical line, unlike most conventional keyboards. The conventional keyboards still resemble the old typewriters, where the placement of the keys was optimized so that the typewriter would not jam. There is no such requirement anymore.</li>
+<li>Split: The keyboard is split into two halves (left and right), allowing one to place either hand where it is most ergonomic.</li>
+</ul><br />
+<span>After discovering ThePrimagen (I found him long ago, but I never bothered buying the same keyboard he is on) on YouTube and reading/watching a couple of reviews, I thought that as a computer professional, the equipment could be expensive anyway (laptop, adjustable desk, comfortable chair), so why not invest a bit more into the keyboard? I purchased myself the Kinesis Advantage360 Professional keyboard. </span><br />
+<br />
+<h2 style='display: inline' id='Kinesisreview'>Kinesis review</h2><br />
+<br />
+<span>For an in-depth review, have a look at this great article:</span><br />
+<br />
+<a class='textlink' href='https://arslan.io/2022/10/22/review-of-the-kinesis-advantage360-professional'>Review of the Kinesis Advantage360 Professional keyboard</a><br />
+<br />
+<h3 style='display: inline' id='Topbuildquality'>Top build quality</h3><br />
+<br />
+<span>Overall, the keyboard feels excellent quality and robust. It has got some weight to it. Because of that, it is not ideally suited for travel, though. But I have a different keyboard to solve this (see later in this post). Overall, I love how it is built and how it feels.</span><br />
+<br />
+<a href='./typing-127.1-words-per-minute/kinesis2.jpg'><img alt='Kinesis Adv.360 Pro at home' title='Kinesis Adv.360 Pro at home' src='./typing-127.1-words-per-minute/kinesis2.jpg' /></a><br />
+<br />
+<h3 style='display: inline' id='Bluetoothconnectivity'>Bluetooth connectivity</h3><br />
+<br />
+<span>Despite encountering concerns about Bluetooth connectivity issues with the Kinesis keyboard during my research, I purchased one anyway as I intended to use it only via USB. However, I discovered that the firmware updates available afterwards had addressed these reported Bluetooth issues, and as a result, I did not experience any difficulties with the Bluetooth functionality. This positive outcome allowed me to enjoy using the keyboard also wirelessly.</span><br />
+<br />
+<h3 style='display: inline' id='GateronBrownkeyswitches'>Gateron Brown key switches</h3><br />
+<br />
+<span>Many voices on the internet seem to dislike the Gateron Brown switches, the only official choice for non-clicky tactile switches in the Kinesis, so I was also a bit concerned. I almost went with Cherry MX Browns for my Kinesis (a custom build from a 3rd party provider that is partnershipping with Kinesis). Still, I decided on Gateron Browns to try different switches than the Cherry MX Browns I already have on my ZSA Moonlander keyboard (another ortho-linear split keyboard, but without a concave keycap layout). </span><br />
+<br />
+<span>At first, I was disappointed by the Gaterons, as they initially felt a bit meshy compared to the Cherries. Still, over the weeks I grew to prefer them because of their smoothness. Over time, the tactile bumps also became more noticeable (as my perception of them improved). Because of their less pronounced tactile feedback, the Gaterons are less tiring for long typing sessions and better suited for a relaxed typing experience.</span><br />
+<br />
+<span>So, the Cherry MX feel sharper but are more tiring in the long run, and the Gaterons are easier to write on and the tactile Feedback is slightly less pronounced. </span><br />
+<br />
+<h3 style='display: inline' id='Keycaps'>Keycaps</h3><br />
+<br />
+<span>If you ever purchase a Kinesis keyboard, go with the PCB keycaps. They upgrade the typing experience a lot. The only thing you will lose is that the backlighting won&#39;t shine through them. But that is a reasonable tradeoff. When do I need backlighting? I am supposed to look at the screen and not the keyboard while typing. </span><br />
+<br />
+<span>I went with the blank keycaps, by the way.</span><br />
+<br />
+<a href='./typing-127.1-words-per-minute/kinesis1.jpg'><img alt='Kinesis Adv.360 Pro at home' title='Kinesis Adv.360 Pro at home' src='./typing-127.1-words-per-minute/kinesis1.jpg' /></a><br />
+<br />
+<h3 style='display: inline' id='Keymapeditor'>Keymap editor</h3><br />
+<br />
+<span>There is no official keymap editor. You have to edit a configuration file manually, build the firmware from scratch, and upload the firmware with the new keymap to both keyboard halves. The Professional version of his keyboard, by the way, runs on the ZMK open-source firmware.</span><br />
+<br />
+<span>Many users find the need for an easy-to-use keymap editor an issue. But this is the Pro model. You can also go with the non-Pro, which runs on non-open-source firmware and has no Bluetooth (it must be operated entirely on USB).</span><br />
+<br />
+<span>There is a 3rd party solution which is supposed to configure the keymap for the Professional model as bliss, but I have never used it. As a part-time programmer and full-time Site Reliability Engineer, I am okay configuring the keymap in my text editor and building it in a local docker container. This is one of the standard ways of doing it here. You could also use a GitHub pipeline for the firmware build, but I prefer building it locally on my machine. This all seems natural to me, but this may be an issue for "the average Joe" user.</span><br />
+<br />
+<h2 style='display: inline' id='Firststeps'>First steps</h2><br />
+<br />
+<span>I didn&#39;t measure the usual words per minute (wpm) on my previous keyboard, the ZSA Moonlander, but I guess that it was around 40-50wpm. Once the Kinesis arrived, I started practising. The experience was quite different due to the concave keycaps, so I barely managed 10wpm on the first day.</span><br />
+<br />
+<span>I quickly noticed that I could not continue using the freestyle 6-finger typing system I was used to on my Moonlander or any previous keyboards I worked with. I learned ten-finger touch typing from scratch to be more efficient with the Kinesis keyboard. The keyboard forces you to embrace touch typing.</span><br />
+<br />
+<span>Sometimes, there were brain farts, and I couldn&#39;t type at all. The trick was not to freak out about it, but to move on. If your average goes down a bit for a day, it doesn&#39;t matter; the long-term trend over several days and weeks matters, not the one-off wpm high score.</span><br />
+<br />
+<span>Although my wrist pain seemed to go away aftre the first week of using the Kinesis, my fingers became tired of adjusting to the new way of typing. My hands were stiff, as if I had been training for the Olympics. Only after three weeks did I start to feel comfortable with it. If it weren&#39;t for the comments I read online, I would have sent it back after week 2.</span><br />
+<br />
+<span>I also had a problem with the left pinky finger, where I could not comfortably reach the <span class='inlinecode'>p</span> key. This involved moving the whole hand. An easy fix was to swap <span class='inlinecode'>p</span> with <span class='inlinecode'>;</span> on the keyboard layout.</span><br />
+<br />
+<h2 style='display: inline' id='Consideringalternatelayouts'>Considering alternate layouts</h2><br />
+<br />
+<span>As I was going to learn 10-finger touch typing from scratch, I also played with the thought of switching from the Qwerty to the Dvorak or Colemak keymap, but after reading some comments on the internet, I decided against it: </span><br />
+<br />
+<ul>
+<li>These layouts (Dvorak and Colemak) will minimize the finger travel for the most commonly used English words, but they necessarily don&#39;t give you a better wpm score. </li>
+<li>One comment on Redit also mentioned that getting stiffer fingers with these layouts is more likely than with Qwerty, as in Qwerty, he had to stretch out his fingers more often, which helps here.</li>
+<li>There are also many applications and websites with keyboard shortcuts and are Qwerty-optimized.</li>
+<li>You won&#39;t be able to use someone else&#39;s computer as there will be likely Qwerty. Some report that after using an alternative layout for a while, they forget how to use Qwerty.</li>
+</ul><br />
+<h2 style='display: inline' id='Traininghowtotype'>Training how to type</h2><br />
+<br />
+<h3 style='display: inline' id='Tools'>Tools</h3><br />
+<br />
+<span>One of the most influential tools in my touch typing journey has been <span class='inlinecode'>keybr.com</span>. This site/app helped me learn 10-finger touch typing, and I practice daily for 30 minutes (in the first two weeks, up to an hour every day). The key is persistence and focus on technique rather than speed; the latter naturally improves with regular practice. Precision matters, too, so I always correct my errors using the backspace key.</span><br />
+<br />
+<a class='textlink' href='https://keybr.com'>https://keybr.com</a><br />
+<br />
+<span>I also used a command-line tool called <span class='inlinecode'>tt</span>, which is written in Go. It has a feature that I found very helpful: the ability to practice typing by piping custom text into it. Additionally, I appreciated its customization options, such as choosing a colour theme and specifying how statistics are displayed.</span><br />
+<br />
+<a class='textlink' href='https://github.com/lemnos/tt'>https://github.com/lemnos/tt</a><br />
+<br />
+<span>I wrote myself a small Ruby script that would randomly select a paragraph from one of my eBooks or book notes and pipe it to <span class='inlinecode'>tt</span>. This helped me remember some of the books I read and also practice touch typing.</span><br />
+<br />
+<h2 style='display: inline' id='Mykeybrcomstatistics'>My <span class='inlinecode'>keybr.com</span> statistics</h2><br />
+<br />
+<span>Overall, I trained for around 4 months in more than 5,000 sessions. My top speed in a session was 127.1wpm (up from barely 10wpm at the beginning).</span><br />
+<br />
+<a href='./typing-127.1-words-per-minute/all-time-stats.png'><img src='./typing-127.1-words-per-minute/all-time-stats.png' /></a><br />
+<br />
+<span>My overall average speed over those 5,000 sessions was 80wpm. The average speed over the last week was over 100wpm. The green line represents the wpm average (increasing trend), the purple line represents the number of keys in the practices (not much movement there, as all keys are unlocked), and the red line represents the average typing accuracy.</span><br />
+<br />
+<a href='./typing-127.1-words-per-minute/typing-speed-over-lessons.png'><img src='./typing-127.1-words-per-minute/typing-speed-over-lessons.png' /></a><br />
+<br />
+<span>Around the middle, you see a break-in of the wpm average value. This was where I swapped the <span class='inlinecode'>p</span> and <span class='inlinecode'>;</span> keys, but after some retraining, I came back to the previous level and beyond.</span><br />
+<br />
+<h2 style='display: inline' id='Tipsandtricks'>Tips and tricks</h2><br />
+<br />
+<span>These are some tips and tricks I learned along the way to improve my typing speed:</span><br />
+<br />
+<h3 style='display: inline' id='Relax'>Relax</h3><br />
+<br />
+<span>It&#39;s easy to get cramped when trying to hit this new wpm mark, but this is just holding you back. Relax and type at a natural pace. Now I also understand why my Katate Sensei back in London kept screaming "RELAAAX" at me during practice.... It didn&#39;t help much back then, though, as it is difficult to relax while someone screams at you! </span><br />
+<h3 style='display: inline' id='Focusonaccuracyfirst'>Focus on accuracy first</h3><br />
+<br />
+<span>This goes with the previous point. Instead of trying to speed through sessions as quickly as possible, slow down and try to type the words correctly—so don&#39;t rush it. If you aren&#39;t fast yet, the reason is that your brain hasn&#39;t trained enough. It will come over time, and you will be faster.</span><br />
+<br />
+<h3 style='display: inline' id='Chording'>Chording</h3><br />
+<br />
+<span>A trick to getting faster is to type by word and pause between each word so you learn the words by chords. From 80wpm and beyond, this makes a real difference. </span><br />
+<br />
+<h3 style='display: inline' id='PunctuationandCapitalization'>Punctuation and Capitalization</h3><br />
+<br />
+<span>I included 10% punctuation and 20% capital letters in my <span class='inlinecode'>keybr.com</span> practice sessions to simulate real typing conditions, which improved my overall working efficiency. I guess I would have gone to 120wpm in average if I didn&#39;t include this options...</span><br />
+<br />
+<h3 style='display: inline' id='Reverseshifting'>Reverse shifting</h3><br />
+<br />
+<span>Reverse shifting aka left-right shifting is to... </span><br />
+<br />
+<ul>
+<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href='#usetheleftshiftkeyforlettersontherightkeyboardside')'>usethe left shift key for letters on the right keyboard side.</a></li>
+<li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href='#usetherightshiftkeyforlettersontheleftkeyboardside')'>usethe right shift key for letters on the left keyboard side.</a></li>
+</ul><br />
+<span>This makes using the shift key a blaze.</span><br />
+<br />
+<h3 style='display: inline' id='Entertheflowstate'>Enter the flow state</h3><br />
+<br />
+<span>Listening to music helps me enter a flow state during practice sessions, which makes typing training a bit addictive (which is good, or isn&#39;t it?).</span><br />
+<br />
+<h3 style='display: inline' id='Repeateveryword'>Repeat every word</h3><br />
+<br />
+<span>There&#39;s a setting on <span class='inlinecode'>keybr.com</span> that makes it so that every word is always repeated, having you type every word twice in a row. I liked this feature very much, and I think it also helped to improve my practice.</span><br />
+<br />
+<h3 style='display: inline' id='Dontusethesamefingerfortwoconsecutivekeystrokes'>Don&#39;t use the same finger for two consecutive keystrokes</h3><br />
+<br />
+<span>Apparently, if you want to type fast, avoid using the same finger for two consecutive keystrokes. This means you don&#39;t always need to use the same finger for the same keys. </span><br />
+<span>However, there are no hard and fast rules. Thus, everyone develops their system for typing word combinations. An exception would be if you are typing the very same letter in a row (e.g., t in letter)—here, you are using the same finger for both ts.</span><br />
+<br />
+<h3 style='display: inline' id='Warmup'>Warm-up</h3><br />
+<br />
+<span>You can&#39;t reach your average typing speed first ting the morning. It would help if you warmed up before the exercise or practice later during the day. Also, some days are good, others not so, e.g., after a bad night&#39;s sleep. What matters is the mid- and long-term trend, not the fluctuations here, though.</span><br />
+<br />
+<h2 style='display: inline' id='Travelkeyboard'>Travel keyboard</h2><br />
+<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 />
+<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 />
+<a href='./typing-127.1-words-per-minute/glove80.jpg'><img alt='Traveling with the Glove80 using my Surface Go 2' title='Traveling with the Glove80 using my Surface Go 2' src='./typing-127.1-words-per-minute/glove80.jpg' /></a><br />
+<br />
+<span>For everyday work, I prefer the tactile Browns on the Kinesis over the Red Pro I have on the Glove80 (normal profile vs. low profile). The Kinesis feels much more premium, whereas the Glove80 is much lighter and easier to store away in a rucksack (the official travel case is a bit bulky, so I wrapped it simply in bubble plastic).</span><br />
+<br />
+<span>The F-key row is odd at the Glove80. I would have preferred more keys on the sides like the Kinesis, and I use them for <span class='inlinecode'>[]</span> <span class='inlinecode'>{}</span> <span class='inlinecode'>()</span>, which is pretty handy there. However, I like the thumb cluster of the Glove80 more than the one on the Kinesis.</span><br />
+<br />
+<span>The good thing is that I can switch between both keyboards instantly without retraining my typing memories. I&#39;ve configured (as much as possible) the same keymaps on both my Kinesis and Glove80, making it easy to switch between them at any occasion. </span><br />
+<br />
+<span>Interested in the Glove80? I suggest also reading this review:</span><br />
+<br />
+<a class='textlink' href='https://arslan.io/2024/04/22/review-of-the-moergo-glove80-keyboard/'>Review of the Glove80 keyboard</a><br />
+<br />
+<h2 style='display: inline' id='UpcomingcustomKinesisbuild'>Upcoming custom Kinesis build</h2><br />
+<br />
+<span>As I mentioned, keyboards will remain an expensive hobby of mine. I don&#39;t regret anything here, though. After all, I use keyboards at my day job. I&#39;ve ordered a Kinesis custom build with the Gateron Kangaroo switches, and I&#39;m excited to see how that compares to my current setup. I&#39;m still deciding whether to keep my Gateron Brown-equipped Kinesis as a secondary keyboard or possibly leave it at my in-laws for use when visiting or to sell it.</span><br />
+<br />
+<h2 style='display: inline' id='Conclusion'>Conclusion</h2><br />
+<br />
+<span>When I traveled with the Glove80 for work to the London office, a colleague stared at my keyboard and made jokes that it might be broken (split into two halves). But other than that... </span><br />
+<br />
+<span>Ten-finger touch typing has improved my efficiency and has become a rewarding discipline. Whether it&#39;s the keyboards I use, the tools I practice with, or the techniques I&#39;ve adopted, each step has been a learning experience. I hope sharing my journey provides valuable insights and inspiration for anyone looking to improve their touch typing skills.</span><br />
+<br />
+<span>I also accidentally started using a 10-finger-like system (maybe still 6 fingers, but better than before) on my regular laptop keyboard. I could be more efficient on the laptop keyboard. The form is different there (not ortholinear, not concave keycaps, etc.), but my typing has improved there too (even if it is only by a little bit).</span><br />
+<br />
+<span>I don&#39;t want to return to a non-concave keyboard as my default. I will use other keyboards still once in a while but only for short periods or when I have to (e.g. travelling with my Laptop and when there is no space to put an external keyboard)</span><br />
+<br />
+<span>Learning to touch type has been an eye-opening experience for me, not just for work but also for personal projects. Now, writing documentation is so much fun; who could believe that? Furthermore, working with Slack (communicating with colleagues) is more fun now as well.</span><br />
+<br />
+<span>E-Mail your comments to <span class='inlinecode'>paul@nospam.buetow.org</span> :-)</span><br />
+<br />
+<a class='textlink' href='../'>Back to the main site</a><br />
+ </div>
+ </content>
+ </entry>
+ <entry>
+ <title>'The Stoic Challenge' book notes</title>
+ <link href="gemini://foo.zone/gemfeed/2024-07-07-the-stoic-challenge-book-notes.gmi" />
+ <id>gemini://foo.zone/gemfeed/2024-07-07-the-stoic-challenge-book-notes.gmi</id>
+ <updated>2024-07-07T12:46:55+03:00</updated>
+ <author>
+ <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>
+ <content type="xhtml">
+ <div xmlns="http://www.w3.org/1999/xhtml">
+ <h1 style='display: inline' id='TheStoicChallengebooknotes'>"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&#39;s Guide to Becoming Tougher, Calmer, and More Resilient" by William B. Irvine. </span><br />
+<br />
+<pre>
+ ,.......... ..........,
+ ,..,&#39; &#39;.&#39; &#39;,..,
+ ,&#39; ,&#39; : &#39;, &#39;,
+ ,&#39; ,&#39; : &#39;, &#39;,
+ ,&#39; ,&#39; : &#39;, &#39;,
+ ,&#39; ,&#39;............., : ,.............&#39;, &#39;,
+,&#39; &#39;............ &#39;.&#39; ............&#39; &#39;,
+ &#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;;&#39;&#39;&#39;;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;&#39;
+ &#39;&#39;&#39;
+</pre>
+<br />
+<span>Gods set you up for a challenge to see how resilient you are. Is getting angry worth the price? If you stay calm then you can find the optimal workaround for the obstacle. Stay calm even with big setbacks. Practice minimalism of negative emotions.</span><br />
+<br />
+<span>Put a positive spin on everything. What should you do if someone wrong you? Don&#39;t get angry, there is no point in that, it just makes you suffer. Do the best what you got now and keep calm and carry on. A resilient person will refuse to play the role of a victim. You can develop the setback response skills. Turn a setback. e.g. a handycap, into a personal triumph.</span><br />
+<br />
+<span>It is not the things done to you or happen to you what matters but how you take the things and react to these things.</span><br />
+<br />
+<span>Don&#39;t row against the other boats but against your own lazy bill. It doesn&#39;t matter if you are first or last, as long as you defeat your lazy self.</span><br />
+<br />
+<span>Stoics are thankful that they are mortal. As then you can get reminded of how great it is to be alive at all. In dying we are more alive we have ever been as every thing you do could be the last time you do it. Rather than fighting your death you should embrace it if there are no workarounds. Embrace a good death.</span><br />
+<br />
+<h2 style='display: inline' id='Negativevisualization'>Negative visualization</h2><br />
+<br />
+<span>It is easy what we have to take for granted.</span><br />
+<br />
+<ul>
+<li>Imagine the negative and then think that things are actually much better than they seem to be.</li>
+<li>Close your eyes and imagine you are color blind for a minute, then open the eyes again and see all the colours. You will be grateful for being able to see the colours. </li>
+<li>Now close your eyes for a minute and imagine you would be blind, so that you will never be able to experience the world again and let it sink in. When you open your eyes again you will feel a lot of gratefulness.</li>
+<li>Last time meditation. Lets you appreciate the life as it is now. Life gets vitalised again.</li>
+</ul><br />
+<h2 style='display: inline' id='Ohnicetrickyoustoicgod'>Oh, nice trick, you stoic "god"! ;-)</h2><br />
+<br />
+<span>Take setbacks as a challenge. Also take it with some humor.</span><br />
+<br />
+<ul>
+<li>A setback in a setback, how Genius :-)</li>
+<li>A setback in a setback in a setback: the stoic god&#39;s work overtime, eh? :-)</li>
+</ul><br />
+<span>What would the stoic god&#39;s do next? This is just a test strategy by them. Don&#39;t be frustrated at all but be astonished of what comes next. Thank the stoic gods of testing you. This is comfort zone extension of the stoics aka toughness Training.</span><br />
+<br />
+<span>E-Mail your comments to <span class='inlinecode'>paul@nospam.buetow.org</span> :-)</span><br />
+<br />
+<span>Other book notes of mine are:</span><br />
+<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='./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-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-07-17-career-guide-and-soft-skills-book-notes.html'>2023-07-17 "Software Developmers Career Guide and Soft Skills" 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='./2024-05-01-slow-productivity-book-notes.html'>2024-05-01 "Slow Productivity" 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 />
+<br />
+<a class='textlink' href='../resources.html'>More books and other resources I found useful.</a><br />
+<a class='textlink' href='../'>Back to the main site</a><br />
+ </div>
+ </content>
+ </entry>
+ <entry>
+ <title>Random Weird Things</title>
+ <link href="gemini://foo.zone/gemfeed/2024-07-05-random-weird-things.gmi" />
+ <id>gemini://foo.zone/gemfeed/2024-07-05-random-weird-things.gmi</id>
+ <updated>2024-07-05T10:59:59+03:00</updated>
+ <author>
+ <name>Paul Buetow aka snonux</name>
+ <email>paul@dev.buetow.org</email>
+ </author>
+ <summary>Every so often, I come across random, weird, and unexpected things on the internet. I thought it would be neat to share them here from time to time. As a start, here are ten of them.</summary>
+ <content type="xhtml">
+ <div xmlns="http://www.w3.org/1999/xhtml">
+ <h1 style='display: inline' id='RandomWeirdThings'>Random Weird Things</h1><br />
+<br />
+<span class='quote'>Published at 2024-07-05T10:59:59+03:00</span><br />
+<br />
+<span>Every so often, I come across random, weird, and unexpected things on the internet. I thought it would be neat to share them here from time to time. As a start, here are ten of them.</span><br />
+<br />
+<pre>
+ /\_/\
+WHOA!! ( o.o )
+ &gt; ^ &lt;
+ / - \
+ / \
+ /______\ \
+</pre>
+<br />
+<h2 style='display: inline' id='1badhorsetraceroute'>1. <span class='inlinecode'>bad.horse</span> traceroute</h2><br />
+<br />
+<span>Run traceroute to get the poem (or song).</span><br />
+<br />
+<!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><font color="#F3E651">%</font><font color="#ff0000"> traceroute bad</font><font color="#F3E651">.</font><font color="#ff0000">horse</font>
+<font color="#ff0000">traceroute to bad</font><font color="#F3E651">.</font><font color="#ff0000">horse </font><font color="#F3E651">(</font><font color="#bb00ff">162.252</font><font color="#F3E651">.</font><font color="#bb00ff">205.157</font><font color="#F3E651">),</font><font color="#ff0000"> </font><font color="#bb00ff">30</font><font color="#ff0000"> hops max</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">60</font><font color="#ff0000"> byte packets</font>
+<font color="#ff0000"> </font><font color="#bb00ff">1</font><font color="#ff0000"> dsldevice</font><font color="#F3E651">.</font><font color="#ff0000">lan </font><font color="#F3E651">(</font><font color="#bb00ff">192.168</font><font color="#F3E651">.</font><font color="#bb00ff">1.1</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">5.712</font><font color="#ff0000"> ms </font><font color="#bb00ff">5.800</font><font color="#ff0000"> ms </font><font color="#bb00ff">6.466</font><font color="#ff0000"> ms</font>
+<font color="#ff0000"> </font><font color="#bb00ff">2</font><font color="#ff0000"> </font><font color="#bb00ff">87</font><font color="#ff0000">-</font><font color="#bb00ff">243</font><font color="#ff0000">-</font><font color="#bb00ff">116</font><font color="#ff0000">-</font><font color="#bb00ff">2</font><font color="#F3E651">.</font><font color="#ff0000">ip</font><font color="#F3E651">.</font><font color="#ff0000">btc-net</font><font color="#F3E651">.</font><b><font color="#ffffff">bg</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#bb00ff">87.243</font><font color="#F3E651">.</font><font color="#bb00ff">116.2</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">8.017</font><font color="#ff0000"> ms </font><font color="#bb00ff">7.506</font><font color="#ff0000"> ms </font><font color="#bb00ff">8.432</font><font color="#ff0000"> ms</font>
+<font color="#ff0000"> </font><font color="#bb00ff">3</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font>
+<font color="#ff0000"> </font><font color="#bb00ff">4</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font>
+<font color="#ff0000"> </font><font color="#bb00ff">5</font><font color="#ff0000"> xe-</font><font color="#bb00ff">1</font><font color="#ff0000">-</font><font color="#bb00ff">2</font><font color="#ff0000">-</font><font color="#bb00ff">0</font><font color="#F3E651">.</font><font color="#ff0000">mpr1</font><font color="#F3E651">.</font><font color="#ff0000">fra4</font><font color="#F3E651">.</font><font color="#ff0000">de</font><font color="#F3E651">.</font><font color="#ff0000">above</font><font color="#F3E651">.</font><font color="#ff0000">net </font><font color="#F3E651">(</font><font color="#bb00ff">80.81</font><font color="#F3E651">.</font><font color="#bb00ff">194.26</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">39.952</font><font color="#ff0000"> ms </font><font color="#bb00ff">40.155</font><font color="#ff0000"> ms </font><font color="#bb00ff">40.139</font><font color="#ff0000"> ms</font>
+<font color="#ff0000"> </font><font color="#bb00ff">6</font><font color="#ff0000"> ae12</font><font color="#F3E651">.</font><font color="#ff0000">cs1</font><font color="#F3E651">.</font><font color="#ff0000">fra6</font><font color="#F3E651">.</font><font color="#ff0000">de</font><font color="#F3E651">.</font><font color="#ff0000">eth</font><font color="#F3E651">.</font><font color="#ff0000">zayo</font><font color="#F3E651">.</font><font color="#ff0000">com </font><font color="#F3E651">(</font><font color="#bb00ff">64.125</font><font color="#F3E651">.</font><font color="#bb00ff">26.172</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#bb00ff">128.014</font><font color="#ff0000"> ms </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font>
+<font color="#ff0000"> </font><font color="#bb00ff">7</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000"> </font><font color="#F3E651">*</font>
+<font color="#ff0000"> </font><font color="#bb00ff">8</fon